1
0
Fork 0
mirror of https://codeberg.org/icewind/haze.git synced 2026-10-01 08:44:09 +02:00

spelling fixes in changelog and book

This commit is contained in:
Robin Appelman 2026-09-23 15:10:49 +02:00
commit e52f978bea
14 changed files with 110 additions and 102 deletions

View file

@ -1,13 +1,13 @@
## Unreleased ## Unreleased
- Support having a `#!` inside a haze script to specify the interperter to use - Support having a `#!` inside a haze script to specify the interpreter to use
## 2.4.1 ## 2.4.1
- Show database location on start - Show database location on start
- Direct TLS listening support for the proxy - Direct TLS listening support for the proxy
- Set `SERVER_NAME` for frankenphp - Set `SERVER_NAME` for FrankenPHP
- Expose Caddy admin endpoints when using frankenphp - Expose Caddy admin endpoints when using FrankenPHP
- Use cron for background jobs - Use cron for background jobs
## 2.4.0 ## 2.4.0
@ -16,34 +16,34 @@
- Add option to start an instance with a detached worktree - Add option to start an instance with a detached worktree
- Add "haze scripts" that bundle a setup configuration and script to run in the - Add "haze scripts" that bundle a setup configuration and script to run in the
instance instance
- Allow specifying phpunit version when running tests - Add option to specify PHPUnit version when running tests
- Add SAML service using authentik - Add SAML service using Authentik
- Add OIDC service using authentik - Add OIDC service using Authentik
- Add SCIM service using authentik - Add SCIM service using Authentik
- Fix using a single word as instance name - Fix using a single word as instance name
- Fixed cleanup not removing some cache files - Fixed cleanup not removing some cache files
- Remove memory and cpu limits from containers - Remove memory and CPU limits from containers
- Fix max upload size not being set correctly - Fix max upload size not being set correctly
## 2.3.0 ## 2.3.0
- Allow execing into service containers - Add option to `exec` in service containers
- Add sftp with key authentication service - Add SFTP with key authentication service
- Fix mysql 8 support - Fix MySQL 8 support
## 2.2.2 ## 2.2.2
- parallelize `git pull` - parallelize `git pull`
- add webhook tester - add webhook tester
- automatically configure ldap when enabled - automatically configure LDAP when enabled
- improve compatibility with intergration tests - improve compatibility with integration tests
- add `php-imagick` module - add `php-imagick` module
## 2.1.1 ## 2.1.1
- Add basic [frankenphp](https://github.com/php/frankenphp) support - Add basic [FrankenPHP](https://github.com/php/frankenphp) support
- Allow running integration tests from (some) apps - Allow running integration tests from (some) apps
- Support federation with proxy and using 127.0.0.1 as proxy ip - Support federation with proxy and using 127.0.0.1 as proxy IP
- Fix office not working - Fix office not working
- Warn when using out-of-date images. - Warn when using out-of-date images.
@ -53,8 +53,8 @@
- Faster stopping of instances, by @provokateurin - Faster stopping of instances, by @provokateurin
- Support extra app directories - Support extra app directories
- Enable appstore - Enable appstore
- Allow setting config options pre-setup - Allow setting configuration options pre-setup
- Improved access to service containers - Improved access to service containers
- Add S3 with TLS options - Add S3 with TLS options
- Updated php 8.0 and 8.1 images - Updated PHP 8.0 and 8.1 images
- Add php 8.5 support - Add PHP 8.5 support

View file

@ -7,7 +7,7 @@ Easy setup and management of Nextcloud test instances using docker
## What ## What
`haze` provides an easy way to set up Nextcloud test instances with a choice of `haze` provides an easy way to set up Nextcloud test instances with a choice of
php version, database server, optional s3 or ldap setup and more. PHP version, database server, optional s3 or LDAP setup and more.
## Documentation ## Documentation

9
book/README.md Normal file
View file

@ -0,0 +1,9 @@
## Build requirements
- [mdBook](https://github.com/rust-lang/mdBook)
## Development
```
mdbook serve
```

View file

@ -2,9 +2,9 @@
Hazy with a chance of clouds. Hazy with a chance of clouds.
`haze` is a tool that provides provides an easy way to set up Nextcloud test `haze` is a tool that provides an easy way to set up Nextcloud test instances
instances with a choice of php version, database server, optional s3 or ldap with a choice of PHP version, database server, optional s3 or LDAP setup and
setup and much more. much more.
## Quickstart ## Quickstart

View file

@ -7,13 +7,13 @@ The minimum required configuration needed to get started is just the
The full list of supported options is: The full list of supported options is:
### sources_root ### `sources_root`
The local path of the nextcloud sources. This options is **required**. The local path of the Nextcloud sources. This options is **required**.
Type: string Type: string
### app_directories ### `app_directories`
A list of additional app directory paths to look for apps into A list of additional app directory paths to look for apps into
@ -21,7 +21,7 @@ Default `[]`
Type: list of strings Type: list of strings
### work_dir ### `work_dir`
The location where haze keeps it's temporary files and caches The location where haze keeps it's temporary files and caches
@ -29,16 +29,15 @@ Default: `/tmp/haze`
Type: string Type: string
### worktree_dir ### `worktree_dir`
The location to to store git worktrees when using instances with detached The location to store git worktrees when using instances with detached sources.
sources.
Default: `<work_dir>/worktrees` Default: `<work_dir>/worktrees`
Type: string Type: string
## auto_setup ## `auto_setup`
Options for automatically setting up the newly created Nextcloud instance. Options for automatically setting up the newly created Nextcloud instance.
@ -61,7 +60,7 @@ config = { "enforce_theme" = "dark" }
enabled = false enabled = false
``` ```
### auto_setup.enabled ### `auto_setup.enabled`
Whether to automatically setup Nextcloud inside a created instance. Whether to automatically setup Nextcloud inside a created instance.
@ -69,7 +68,7 @@ Default: `true`
Type: boolean Type: boolean
### auto_setup.username ### `auto_setup.username`
The username to use for the admin account during auto setup. The username to use for the admin account during auto setup.
@ -77,7 +76,7 @@ Default: `admin`
Type: string Type: string
### auto_setup.password ### `auto_setup.password`
The password to use for the admin account during auto setup. The password to use for the admin account during auto setup.
@ -85,7 +84,7 @@ Default: `admin`
Type: string Type: string
### auto_setup.enabled_apps ### `auto_setup.enabled_apps`
Extra apps to enable after auto setup Extra apps to enable after auto setup
@ -93,7 +92,7 @@ Default: `[]`
Type: list of strings Type: list of strings
### auto_setup.disabled_apps ### `auto_setup.disabled_apps`
Apps to disabled after auto setup Apps to disabled after auto setup
@ -101,7 +100,7 @@ Default: `[]`
Type: list of strings Type: list of strings
### auto_setup.post_setup ### `auto_setup.post_setup`
Commands to execute after auto setup Commands to execute after auto setup
@ -109,7 +108,7 @@ Default: `[]`
Type: list of strings Type: list of strings
### auto_setup.config ### `auto_setup.config`
System configuration options to set before auto setup System configuration options to set before auto setup
@ -117,7 +116,7 @@ Default: `{}`
Type: Object Type: Object
## volume ## `volume`
Additional files or directories to bind-mount into instances. Additional files or directories to bind-mount into instances.
@ -139,19 +138,19 @@ target = "/Downloads"
read_only = true read_only = true
``` ```
### volume.source ### `volume.source`
The source path on the host The source path on the host
Type: string Type: string
### volume.target ### `volume.target`
The target path inside the container The target path inside the container
Type: string Type: string
### volume.create ### `volume.create`
Create the source directory on the host if it doesn't exist already. Create the source directory on the host if it doesn't exist already.
@ -159,13 +158,13 @@ Default: `false`
Type: boolean Type: boolean
### volume.read_only ### `volume.read_only`
Whether to mount the file or directory as read read_only Whether to mount the file or directory as read only
Default: `false` Default: `false`
Type: boolean Type: `boolean`
### preset ### preset
@ -185,14 +184,14 @@ commands = [
] ]
``` ```
### preset.name ### `preset.name`
The name of the preset, this is used when creating instances to select the The name of the preset, this is used when creating instances to select the
preset. preset.
Type: string without whitespace Type: string without whitespace
### preset.apps ### `preset.apps`
A list of apps to enable when the preset is used. A list of apps to enable when the preset is used.
@ -200,7 +199,7 @@ Default: `[]`
Type: list of strings Type: list of strings
### preset.commands ### `preset.commands`
A list of commands to run post-setup when the preset is used. A list of commands to run post-setup when the preset is used.
@ -208,7 +207,7 @@ Default: `[]`
Type: list of strings Type: list of strings
## proxy ## `proxy`
Configuration for the haze proxy. Only required when using the proxy. Configuration for the haze proxy. Only required when using the proxy.
@ -221,9 +220,9 @@ cert = "/path/to/haze.test.crt"
key = "/path/to/haze.test.key" key = "/path/to/haze.test.key"
``` ```
### proxy.listen ### `proxy.listen`
The ip and port or unix socket for the proxy to listen on. The IP and port or Unix socket for the proxy to listen on.
**Required** when the proxy is enabled. **Required** when the proxy is enabled.
@ -239,7 +238,7 @@ listen = "/run/haze/haze.sock"
listen = "127.0.0.1:8080" listen = "127.0.0.1:8080"
``` ```
### proxy.address ### `proxy.address`
The base domain the proxy is accessible on. The base domain the proxy is accessible on.
@ -247,26 +246,26 @@ The base domain the proxy is accessible on.
Type: string Type: string
### proxy.https ### `proxy.https`
Whether to enable built-in https support for the proxy. Whether to enable built-in HTTPS support for the proxy.
Default: `false` Default: `false`
Type: boolean Type: boolean
### proxy.cert ### `proxy.cert`
The path of the PEM encoded certificate chain to use for https. The path of the PEM encoded certificate chain to use for HTTPS.
**Required** if https is enabled for the proxy. **Required** if HTTPS is enabled for the proxy.
Type: string. Type: string.
### proxy.cert ### `proxy.cert`
The path of the PEM encoded private key to use for https. The path of the PEM encoded private key to use for HTTPS.
**Required** if https is enabled for the proxy. **Required** if HTTPS is enabled for the proxy.
Type: string. Type: string.

View file

@ -7,7 +7,7 @@ For example, if you have a `rover-beavers` and `splendid-couch` instance, you
can create a federated share from the `rover-beavers` instance to can create a federated share from the `rover-beavers` instance to
`http://admin@splendid-couch`. `http://admin@splendid-couch`.
If the proxy is setup with https, you can use https between the instances by If the proxy is setup with HTTP, you can use HTTP between the instances by using
using the full proxy urls. the full proxy URLs.
For example sharing to `admin@splendid-couch.haze.example.com`. For example sharing to `admin@splendid-couch.haze.example.com`.

View file

@ -1,7 +1,7 @@
# Proxy # Proxy
By default, instances can be accessed by their IP. In order to get more By default, instances can be accessed by their IP. In order to get more
memorable URLs and allow supporting https. haze comes with a builtin reverse memorable URLs and allow supporting HTTPS. haze comes with a builtin reverse
proxy to allow using a wildcard domain. proxy to allow using a wildcard domain.
## Setup ## Setup
@ -10,17 +10,17 @@ proxy to allow using a wildcard domain.
`haze.example.com` pointing to your development machine. `haze.example.com` pointing to your development machine.
- Set the `proxy` configuration with your domain and desired listen endpoint. - Set the `proxy` configuration with your domain and desired listen endpoint.
- Set up a service to run `haze proxy` in the background as your own user. A - Set up a service to run `haze proxy` in the background as your own user. A
systemd user service is recommended (see SystemD user service is recommended (see
[haze.service](<[./haze.service](https://codeberg.org/icewind/haze/src/branch/main/haze.service)>) [haze.service](<[./haze.service](https://codeberg.org/icewind/haze/src/branch/main/haze.service)>)
for an example). for an example).
- If you're already running a reverse proxy, configure your reverse proxy of - If you're already running a reverse proxy, configure your reverse proxy of
choice to proxy `*.haze.example.com` and `haze.example.com` to the proxy's choice to proxy `*.haze.example.com` and `haze.example.com` to the proxy's
listen endpoint. listen endpoint.
- (Optionally) [setup https](./https.html) for the proxy. - (Optionally) [setup HTTPS](./https.html) for the proxy.
### Configuration ### Configuration
Add the following configuration to the `haze.toml` config file: Add the following configuration to the `haze.toml` configuration file:
```toml ```toml
[proxy] [proxy]
@ -34,13 +34,13 @@ listen = "127.0.0.1:8080" # the port+ip to listen on
If you have no other http(s) servers on your development machine, you can setup If you have no other http(s) servers on your development machine, you can setup
things without a reverse proxy. things without a reverse proxy.
Simply configure the proxy to listen on port `80` (or `443` when using http). Simply configure the proxy to listen on port `80` (or `443` when using HTTPS).
Binding to port 80 or443 as a regular user requires either giving the haze Binding to port 80 or443 as a regular user requires either giving the haze
binary the `net_bind_service` capability with binary the `net_bind_service` capability with
`sudo setcap cap_net_bind_service=+ep $(which haze)` (this will have to be done `sudo setcap cap_net_bind_service=+ep $(which haze)` (this will have to be done
every time your upgrade haze) or configure your system to allow unpriviled users every time your upgrade haze) or configure your system to allow unprivileged
to bind on the low port numbers. Using users to bind on the low port numbers. Using
`sysctl net.ipv4.ip_unprivileged_port_start=80` and writing `sysctl net.ipv4.ip_unprivileged_port_start=80` and writing
``` ```
@ -56,7 +56,7 @@ probably want to setup a reverse proxy to allow them to all be served on your
machine. machine.
The setup for this will depend on your reverse proxy of the choice, the The setup for this will depend on your reverse proxy of the choice, the
following example config is for `nginx`. following example configuration is for `nginx`.
```nginx ```nginx
upstream haze-handler { upstream haze-handler {

View file

@ -1,12 +1,12 @@
# DNS # DNS
Since the domain name used for the instance is dynamic, a wildcard dns record is Since the domain name used for the instance is dynamic, a wildcard DNS record is
required. required.
## With your domain's DNS provider ## With your domain's DNS provider
If you own a domain you would like to use, you can create a wildcard domain If you own a domain you would like to use, you can create a wildcard domain
withing the DNS settings of your DNS provider. For example creating a record an within the DNS settings of your DNS provider. For example creating a record an
`A` record for `*.haze.example.com` with a value of `127.0.0.1` and a similar `A` record for `*.haze.example.com` with a value of `127.0.0.1` and a similar
one for `haze.example.com`. one for `haze.example.com`.
@ -15,8 +15,8 @@ one for `haze.example.com`.
If you do not own a "real" domain for using with haze, you can setup `dnsmasq` If you do not own a "real" domain for using with haze, you can setup `dnsmasq`
locally to achieve the same goal instead. locally to achieve the same goal instead.
How to install and enable `dnsmasq` will depend on your distro of choice and How to install and enable `dnsmasq` will depend on your Linux distribution of
should be documented by it's documentation. choice and should be documented by it's documentation.
Once setup, a configuration line like Once setup, a configuration line like

View file

@ -1,10 +1,10 @@
# HTTPS # HTTPS
The proxy can be setup to enable using https to access the running instances. The proxy can be setup to enable using HTTPS to access the running instances.
Besides the warm and fuzy feeling of knowing that nobody can snoop on the trafic Besides the warm and fuzzy feeling of knowing that nobody can snoop on the
that is happening completely local inside your machine. Accessing the page over traffic that is happening completely local inside your machine. Accessing the
https is required for some javascript features (such as service workers), as page over HTTPS is required for some JavaScript features (such as service
they are only available in "secure contexts". workers), as they are only available in "secure contexts".
## Getting a wildcard certificate ## Getting a wildcard certificate
@ -26,18 +26,18 @@ lists some DNS providers and supported ACME clients.
You can also create a self-signed wildcard certificate using a tool like You can also create a self-signed wildcard certificate using a tool like
`mkcert`. This certificate will not be trusted by your browser and tools like `mkcert`. This certificate will not be trusted by your browser and tools like
curl, but you can add manually add it to the trusted certificates on your curl, but you can add manually add it to the trusted certificates on your
system, or bypass the certficate warning in the browser/curl every time. system, or bypass the certificates warning in the browser/curl every time.
```bash ```bash
# Generate local wildcard certificate # Generate local wildcard certificate
mkcert -cert-file <path-to-your-certificats>haze.example.com.crt -key-file <path-to-your-certificats>haze.example.com.key '*.haze.example.com' mkcert -cert-file <path-to-your-certificates>haze.example.com.crt -key-file <path-to-your-certificates>haze.example.com.key '*.haze.example.com'
``` ```
## Using the certificate ## Using the certificate
### Without reverse proxy ### Without reverse proxy
The haze proxy can serve over https directly, to enable that add the following The haze proxy can serve over HTTPS directly, to enable that add the following
to the `[proxy]` section of your `haze.toml`. to the `[proxy]` section of your `haze.toml`.
```toml ```toml
@ -64,8 +64,8 @@ server {
http2 on; http2 on;
server_name *.haze.example.com; server_name *.haze.example.com;
ssl_certificate <path-to-your-certificats>/haze.example.com.crt; ssl_certificate <path-to-your-certificates>/haze.example.com.crt;
ssl_certificate_key <path-to-your-certificats>/haze.example.com.key; ssl_certificate_key <path-to-your-certificates>/haze.example.com.key;
location / { location / {
proxy_pass http://haze-handler; proxy_pass http://haze-handler;

View file

@ -14,7 +14,7 @@ A script contains of 3 paths
interpreter, e.g. `#! haze shell pgsql s3` interpreter, e.g. `#! haze shell pgsql s3`
3. The rest that is ran as a script inside the created instance. 3. The rest that is ran as a script inside the created instance.
The first sheband is set, the script can be ran directly. Else it needs to be The first shebang is set, the script can be ran directly. Else it needs to be
run with `haze script [path-to-script]`. run with `haze script [path-to-script]`.
For example, the following script will create an instance with `postgresql` and For example, the following script will create an instance with `postgresql` and
@ -49,7 +49,7 @@ will. The intended use case for this is creating more complex instances without
having to configure a dedicated preset. having to configure a dedicated preset.
The script mode is determined based on the shebang line. The mode set in a The script mode is determined based on the shebang line. The mode set in a
script can be overriden by running the script with script can be overridden by running the script with
`haze script [shell|start] path-to-script.sh`. `haze script [shell|start] path-to-script.sh`.
## Using different interpreters ## Using different interpreters

View file

@ -8,20 +8,20 @@ The following service options are available:
- `s3mb`: enable multi-bucket S3 setup. - `s3mb`: enable multi-bucket S3 setup.
- `s3m`: enable multi-instance S3 setup. - `s3m`: enable multi-instance S3 setup.
- `ldap`: set up an LDAP server. - `ldap`: set up an LDAP server.
- `saml`: set up authentik as a SAML IDP. - `saml`: set up Authentik as a SAML IDP.
- `oidc`: set up authentik as an OIDC IDP. - `oidc`: set up Authentik as an OIDC IDP.
- `scim`: set up authentik as a SCIM server. - `scim`: set up Authentik as a SCIM server.
- `office`: set up a Nextcloud Office server. - `office`: set up a Nextcloud Office server.
- `onlyoffice` setup an onlyoffice document server. - `onlyoffice` setup an OnlyOffice document server.
- `push` set up [client push](https://github.com/nextcloud/notify_push). - `push` set up [client push](https://github.com/nextcloud/notify_push).
- `smb`: set up a samba server for external storage use. - `smb`: set up a samba server for external storage use.
- `dav`: set up a WebDAV server for external storage use. - `dav`: set up a WebDAV server for external storage use.
- `sftp`: set up a SFTP server for external storage use. - `sftp`: set up a SFTP server for external storage use.
- `sftp-key`: set up a SFTP server for external storage use with public key - `sftp-key`: set up a SFTP server for external storage use with public key
authentication. authentication.
- `kaspersky`: set up a kaspersky scan engine server in http mode. ( Requires - `kaspersky`: set up a Kaspersky scan engine server in HTTP mode. ( Requires
[manually setting up the image](https://github.com/icewind1991/kaspersky-docker)) [manually setting up the image](https://github.com/icewind1991/kaspersky-docker))
- `kaspersky-icap`: setup a kaspersky scan engine server in ICAP mode. - `kaspersky-icap`: setup a Kaspersky scan engine server in ICAP mode.
- `clamav`: set up a local clam av scanner in executable mode. - `clamav`: set up a local clam av scanner in executable mode.
- `clamav-socket`: set up a clam av scanner in socket mode. - `clamav-socket`: set up a clam av scanner in socket mode.
- `clamav-icap`: set up a clam av scanner in ICAP mode. - `clamav-icap`: set up a clam av scanner in ICAP mode.
@ -33,8 +33,8 @@ The following service options are available:
configure it the mail server. configure it the mail server.
- `webhook` start a - `webhook` start a
[webhook tester](https://github.com/tarampampam/webhook-tester) [webhook tester](https://github.com/tarampampam/webhook-tester)
- `redis`: start a separate container for redis. - `redis`: start a separate container for Redis.
- `redis-tls`: connect to redis over TLS. - `redis-tls`: connect to Redis over TLS.
- `<path to app.tar.gz>`: by specifying the path to an app package this package - `<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 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. any existing app code). This can be used to quickly test a packaged app.

View file

@ -5,7 +5,7 @@
- Docker - Docker
haze is built around docker containers and manages containers using the docker haze is built around docker containers and manages containers using the docker
socket. Using podman with docker compatibility might also work, but is untested. socket. Using Podman with docker compatibility might also work, but is untested.
## Installation ## Installation
@ -13,7 +13,7 @@ socket. Using podman with docker compatibility might also work, but is untested.
[Codeberg releases](https://codeberg.org/icewind/haze/releases) and place it [Codeberg releases](https://codeberg.org/icewind/haze/releases) and place it
in your `$PATH` in your `$PATH`
## Config ## Configuration
Create a file `~/.config/haze/haze.toml` with the following options: Create a file `~/.config/haze/haze.toml` with the following options:

View file

@ -159,13 +159,13 @@ haze [match] edit <path>
Where `<path>` is the path of a file inside the container, for example Where `<path>` is the path of a file inside the container, for example
`config/config.php`. `config/config.php`.
### Reload the php config of an instance ### Reload the PHP configuration of an instance
```bash ```bash
haze [match] reload haze [match] reload
``` ```
The php configuration can edit changed with `haze edit /config/php.ini` The PHP configuration can edit changed with `haze edit /config/php.ini`
### Run a command with instance environment variables set ### Run a command with instance environment variables set

View file

@ -2,7 +2,7 @@
To use Xdebug running in a haze instance with your IDE for debugging, you need To use Xdebug running in a haze instance with your IDE for debugging, you need
to tell you IDE how to properly map the path from the container to the host. The to tell you IDE how to properly map the path from the container to the host. The
IDE debugger config usually looks like: IDE debugger configuration usually looks like:
```json ```json
{ {
@ -21,11 +21,11 @@ This would have to be adapted for detached instances.
### Debugging all requests ### Debugging all requests
By default, xdebug is configured to only run for requests that containing the By default, Xdebug is configured to only run for requests that containing the
trigger (e.g. from using the xdebug browser extension, or adding trigger (e.g. from using the Xdebug browser extension, or adding
`?XDEBUG_SESSION_START=1` to the url). `?XDEBUG_SESSION_START=1` to the URL).
To enable Xdebug for all requests: To enable Xdebug for all requests:
- Uncomment the lines in `haze [cloud-id] edit /config/php.ini` - Un-comment the lines in `haze [cloud-id] edit /config/php.ini`
- Then run `haze reload [cloud-id]` - Then run `haze reload [cloud-id]`