1
0
Fork 0
mirror of https://codeberg.org/icewind/haze.git synced 2026-06-03 09:04:12 +02:00
haze/README.md

174 lines
No EOL
3.9 KiB
Markdown

# Haze
Hazy with a chance of clouds.
Easy setup and management of Nextcloud test instances using docker
## What
`haze` provides an easy way to setup Nextcloud test instances with a choice of php version, database server, optional s3 or ldap setup and more.
## Setup
### Requirements
- Docker
### Installation
- Grab a binary from the [github releases](https://github.com/icewind1991/haze/releases) and place it in your `$PATH`
### Config
Create a file `~/.config/haze/haze.toml` with the following options:
```toml
sources_root = "/path/to/nextcloud/sources"
```
See the [configuration section](#configuration) for more options.
## Managing instances
#### Start an instance
```bash
haze start [database] [php-version]
```
Where `database` is one of `sqlite`, `mysql`, `mariadb` or `pgsql` with an optional version (e.g. `pgsql:12`), defaults to `sqlite`.
And `php-version` is one of `7.3`, `7.4`, `8.0`, `7` or `8`, defaults to `8.0`
Additionally, you can use the following options when starting an instance:
- `s3`: setup an S3 server and configure to Nextcloud to use it as primary storage
- `<path to app.tar.gz>`: by specifying the path to an app package this package will be extracted into the apps directory of the new instance (overwriting any existing app code). This can be used to quickly test a packaged app.
- `ldap`: setup an LDAP server
- `onlyoffice` setup an onlyoffice document server
- `push` setup [client push](https://github.com/nextcloud/notify_push)
- `smb`: setup a samba server for external storage use
- `kaspersky`: setup a kaspersky scan engine server in http mode. (Requires [manually setting up the image](https://github.com/icewind1991/kaspersky-docker))
- `kaspersky-icap`: setup a kaspersky scan engine server in ICAP mode.
- `clamav-icap`: setup a clam av scanner in ICAP mode.
#### Run tests in a new instance
```bash
haze test [database] [php-version] [path]
```
Where `path` is a file or folder to run phpunit in, relative to the sources root.
### List running instances
```bash
haze
```
or
```bash
haze list
```
#### Remove all running instances
```bash
haze clean
```
## Controlling running instances
The following commands run against the most recently started instance and allow optionally providing a `match` to select a specific instance by it's name.
#### Open an instance
```bash
haze [match] open
```
#### Open the database of an instance
```bash
haze [match] db
```
#### Execute a command on an instance
```bash
haze [match] exec [cmd]
```
If no `cmd` is specified it will launch `bash`
#### Create a new instance and run a command
```bash
haze [match] shell [cmd]
```
If no `cmd` is specified it will launch `bash`
#### Execute an occ command on an instance
```bash
haze [match] occ [cmd]
```
#### Connect to the database on an instance
```bash
haze [match] db
```
#### Show the logs of an instance
```bash
haze [match] logs
```
#### Stop an instance
```bash
haze [match] stop
```
#### Pin an instance
```bash
haze [match] pin
```
Pinned instances will not be removed by `haze clean`.
#### Unpin an instance
```bash
haze [match] unpin
```
## Configuration
Configuration is loaded from `~/.config/haze/haze.toml` and has the following options
```toml
sources_root = "/path/to/sources" # path of the nextcloud sources. required
work_dir = "/path/to/temp/dir" # path to temporary directory. optional, defaults to "/tmp/haze"
[auto_setup] # optional
enabled = false # whether or not to automatically install nextcloud on `haze start`. optional, defaults to false
username = "foo" # username for admin user during auto setup. optional, defaults to "admin"
password = "bar" # password for admin user during auto setup. optional, defaults to "admin"
post_setup = [ # commands to execute after setup, defaults to []
"occ app:enable deck",
]
[[volume]]
source = "/tmp/haze-shared"
target = "/shared"
create = true
[[volume]]
source = "/home/me/Downloads"
target = "/Downloads"
read_only = true
```