complete all stack READMEs to the 9-section template

Existing content preserved and reordered to the canonical section order;
missing sections generated from each stack's compose data (ports, volumes,
env vars, image links). Fixes copy-paste errors in Dockhand sections
(qbittorrent pointed at archivebox; invokeai/thunderbird said SERVICENAME)
and persistant->persistent typos in gatus.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
code
2026-07-16 06:25:05 +00:00
co-authored by Claude Fable 5
parent 8ab413804a
commit 340866f9f4
48 changed files with 2024 additions and 140 deletions
+24 -2
View File
@@ -12,21 +12,43 @@ ArchiveBox is a self-hosted app that lets you preserve content from websites in
- **Documentation:** [Docs](https://github.com/ArchiveBox/ArchiveBox/wiki)
- **Reverse Proxy Port:** `8000`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8000 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
ARCHIVEBOX_IMAGE - you can lock the version like so: ```archivebox/archivebox:sha-1d49bee```
ARCHIVEBOX_IMAGE - you can lock the version like so: ```archivebox/archivebox:sha-1d49bee```
ARCHIVEBOX_UID - User 1000
ARCHIVEBOX_GID - Group 1000
PYTHONUNBUFFERED - Ensures logs are output in real-time
## Volume Notes
/data just one volume
/data just one volume
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name archivebox \
-p 8000:8000 \
-v /data/archivebox:/data \
archivebox/archivebox:stable
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
+69
View File
@@ -3,3 +3,72 @@
Here is the official doc: https://docs.goauthentik.io/install-config/install/docker-compose/
Authentik is on a 2 month release cycle and should be updated in order of release.
## Overview
Identity provider and SSO platform supporting OIDC, SAML, LDAP, and proxy authentication.
## Project Details
- **Container Image:** [ghcr.io/goauthentik/server:2025.10.1](https://github.com/goauthentik/server)
- **Reverse Proxy Port:** `9000`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:9000 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
PG_DB default: authentik
PG_USER default: authentik
AUTHENTIK_TAG default: 2025.10.1
PG_PASS default: (none, must be set)
AUTHENTIK_PORT_HTTP default: 9000
AUTHENTIK_PORT_HTTPS default: 9443
## Volume Notes
/var/lib/postgresql/data host path /data/authentik/db
/media host path /data/authentik/media
/templates host path /data/authentik/custom-templates
/media host path /data/authentik/media
/certs host path /data/authentik/certs
/templates host path /data/authentik/custom-templates
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name authentik \
-p 9000:9000 \
-p 9443:9443 \
-v /data/authentik/db:/var/lib/postgresql/data \
-v /data/authentik/media:/media \
-v /data/authentik/custom-templates:/templates \
-v /data/authentik/media:/media \
-v /data/authentik/certs:/certs \
ghcr.io/goauthentik/server:2025.10.1
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: authentik_dev
Compose file path: authentik_dev/compose.yaml
Additional env file (optional): authentik_dev/sample.env
Then "Load" authentik_dev/sample.env into the Environmental variables in dockhand
Create the Stack
+4
View File
@@ -65,6 +65,10 @@ docker run -d \
ghcr.io/hotio/bazarr:release
```
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
- **Cookbooks Repository**
+57
View File
@@ -12,6 +12,63 @@ BookStack is a self-hosted wiki platform for organizing and storing documentatio
- **Documentation:** [Docs](https://www.bookstackapp.com/docs/)
- **Reverse Proxy Port:** `8080`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8080 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
BOOKSTACK_APP_KEY default: ChangeThisPassword
BOOKSTACK_APP_TIMEZONE default: America/Vancouver
BOOKSTACK_APP_URL default: http://localhost:8080
BOOKSTACK_DB_DATABASE default: bookstack
BOOKSTACK_DB_PASSWORD default: ChangeThisPassword
BOOKSTACK_DB_USERNAME default: dbuser
BOOKSTACK_REVISION_LIMIT default: false
BOOKSTACK_PORT default: 8080
MARIADB_ROOT_PASSWORD default: ChangeThisPassword
## Volume Notes
/var/www/bookstack/storage/uploads host path /data/bookstack/uploads
/var/www/bookstack/public/uploads host path /data/bookstack/public
/var/lib/mysql host path /data/bookstack/db
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name bookstack \
-p 8080:8080 \
-v /data/bookstack/uploads:/var/www/bookstack/storage/uploads \
-v /data/bookstack/public:/var/www/bookstack/public/uploads \
-v /data/bookstack/db:/var/lib/mysql \
solidnerd/bookstack:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: bookstack
Compose file path: bookstack/compose.yaml
Additional env file (optional): bookstack/sample.env
Then "Load" bookstack/sample.env into the Environmental variables in dockhand
Create the Stack
## Notes
### APP_KEY
+69
View File
@@ -6,7 +6,76 @@
Proxy port: 8055
## Overview
Instant headless CMS and admin app layered on top of a SQL database.
## Project Details
- **Container Image:** [directus/directus:latest](https://hub.docker.com/r/directus/directus)
- **Reverse Proxy Port:** `8055`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8000 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
MARIADB_DATABASE default: directus
MARIADB_USER default: directus
MARIADB_PASSWORD default: ChangeThisPassword
MARIADB_ROOT_PASSWORD default: ChangeThisPassword
DIRECTUS_SECRET default: ChangeThisPassword
DIRECTUS_ADMIN_EMAIL default: noreply@example.com
DIRECTUS_ADMIN_PASSWORD default: ChangeThisPassword
DIRECTUS_PUBLIC_URL default: http://localhost:8055
DIRECTUS_PORT default: 8000
## Volume Notes
/var/lib/mysql host path /data/directus/db
/directus/uploads host path /data/directus/uploads
/directus/extensions host path /data/directus/extensions
/directus/templates host path /data/directus/templates
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name directus \
-p 8000:8055 \
-v /data/directus/db:/var/lib/mysql \
-v /data/directus/uploads:/directus/uploads \
-v /data/directus/extensions:/directus/extensions \
-v /data/directus/templates:/directus/templates \
directus/directus:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: directus_dev
Compose file path: directus_dev/compose.yaml
Additional env file (optional): directus_dev/sample.env
Then "Load" directus_dev/sample.env into the Environmental variables in dockhand
Create the Stack
## Other Containers
You will also need mariadb and redis, something like:
```
+4
View File
@@ -55,6 +55,10 @@ docker network create proxy
This is a multi-service stack — use `docker compose` instead of individual `docker run` commands.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
- **Cookbooks Repository**
+63 -1
View File
@@ -1,3 +1,65 @@
# Duplicati
Proxy port: 8200
Proxy port: 8200
## Overview
Encrypted backup software for securely storing backups to cloud or local destinations.
## Project Details
- **Container Image:** [duplicati/duplicati:latest](https://hub.docker.com/r/duplicati/duplicati)
- **Reverse Proxy Port:** `8200`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8200 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
DUPLICATI_KEY default: ChangeThisPassword
DUPLICATI_PASS default: ChangeThisPassword
DUPLICATI_PORT default: 8200
## Volume Notes
/data host path /data/duplicati/config
/backups host path /data/duplicati/backups
/source host path /data/duplicati/source
/restore host path /data/duplicati/restore
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name duplicati \
-p 8200:8200 \
-v /data/duplicati/config:/data \
-v /data/duplicati/backups:/backups \
-v /data/duplicati/source:/source:ro \
-v /data/duplicati/restore:/restore \
duplicati/duplicati:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: duplicati_dev
Compose file path: duplicati_dev/compose.yaml
Additional env file (optional): duplicati_dev/sample.env
Then "Load" duplicati_dev/sample.env into the Environmental variables in dockhand
Create the Stack
+63 -6
View File
@@ -3,6 +3,69 @@
A lightweight Docker Compose setup for running the **Filebrowser Quantum** container.
The future of Filebrowser was in question so switched to Quantum.
## Overview
* [Filebrowser Quantum on GitHub](https://github.com/gtsteffaniak/filebrowser/tree/main)
* [Getting Started Wiki](https://github.com/gtsteffaniak/filebrowser/wiki/Getting-Started)
* [Configuration Docs](https://github.com/gtsteffaniak/filebrowser/wiki/Configuration-And-Examples)
## Project Details
- **Container Image:** [gtstef/filebrowser:latest](https://hub.docker.com/r/gtstef/filebrowser)
- **Reverse Proxy Port:** `80`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8080 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
FILEBROWSER_CONFIG_PATH default: /data/filebrowser
FILEBROWSER_CONFIG default: /home/filebrowser/config.yaml
FILEBROWSER_ADMIN_PASSWORD default: ChangeThisPassword
FILEBROWSER_PORT default: 8080
## Volume Notes
/srv host path /data/storage
/home/filebrowser/data host path /data/filebrowser/root
/home/filebrowser/config.yaml host path /data/filebrowser/config.yaml
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name filebrowser \
-p 8080:80 \
-v /data/storage:/srv \
-v /data/filebrowser/root:/home/filebrowser/data \
-v /data/filebrowser/config.yaml:/home/filebrowser/config.yaml \
gtstef/filebrowser:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: filebrowser_dev
Compose file path: filebrowser_dev/compose.yaml
Additional env file (optional): filebrowser_dev/sample.env
Then "Load" filebrowser_dev/sample.env into the Environmental variables in dockhand
Create the Stack
## Quick Notes
Proxy Port: 80
@@ -10,9 +73,3 @@ Proxy Port: 80
Default user account:
* Username: admin
* Password: admin
## Overview
* [Filebrowser Quantum on GitHub](https://github.com/gtsteffaniak/filebrowser/tree/main)
* [Getting Started Wiki](https://github.com/gtsteffaniak/filebrowser/wiki/Getting-Started)
* [Configuration Docs](https://github.com/gtsteffaniak/filebrowser/wiki/Configuration-And-Examples)
+53
View File
@@ -1,12 +1,65 @@
# Firefly iii
## Overview
Docker Hub: https://hub.docker.com/r/fireflyiii/core/tags
Documentation: https://docs.firefly-iii.org/how-to/firefly-iii/installation/docker/
Project: https://firefly-iii.org/
Proxy Port: 8080
Proxy Port Importer: 8080
## Project Details
- **Container Image:** [fireflyiii/core:latest](https://hub.docker.com/r/fireflyiii/core)
- **Reverse Proxy Port:** `8080`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8080 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
FIREFLY_PORT default: 8080
## Volume Notes
/var/www/html/storage/upload host path /data/firefly
/var/www/html/storage/upload host path /data/firefly
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name firefly \
-p 8080:8080 \
-v /data/firefly:/var/www/html/storage/upload \
-v /data/firefly:/var/www/html/storage/upload \
fireflyiii/core:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: firefly_dev
Compose file path: firefly_dev/compose.yaml
Additional env file (optional): firefly_dev/sample.env
Then "Load" firefly_dev/sample.env into the Environmental variables in dockhand
Create the Stack
## Notes
The Firefly III Data Importer will ask you for the Firefly III URL and a "Client ID".
+30 -12
View File
@@ -11,26 +11,29 @@ Track uptime.
- **Documentation:** [Docs](https://gatus.io/)
- **Reverse Proxy Port:** `8080`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8080 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
GATUS_PORT default: 8080
## Volume Notes
There are two mounts
CONFIG_FILE - Where the yaml config file lives. Likely stored to a repo somewhere.
VOL_DATA - Which is the persistant data.
VOL_DATA - Which is the persistent data.
Note the db must be set in the config file for persistant to happen.
Note the db must be set in the config file for persistent to happen.
There is an example config.yaml file in this repo.
## Dockhand Stack, Deploy from Git
## Network Notes
Cookbooks Repository
stackname: Gatus
Compose file path: gatus/compose.yaml
Additional env file (optional): gatus/sample.env
Then "Load" gatus/sample.env into the Environmental variables in dockhand, then modify.
Create the Stack
Requires proxy network
## Docker Run
@@ -43,4 +46,19 @@ docker run -d \
-v /data/config.yml:/config/config.yaml \
-v /data/gatus:/config/data \
twinproduction/gatus:latest
```
```
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: Gatus
Compose file path: gatus/compose.yaml
Additional env file (optional): gatus/sample.env
Then "Load" gatus/sample.env into the Environmental variables in dockhand, then modify.
Create the Stack
+21 -2
View File
@@ -11,9 +11,15 @@ Self Hosted Git repository.
- **Compose Example:** [Compose](https://docs.gitea.com/installation/install-with-docker)
- **Reverse Proxy Port:** `3000`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:22 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
ENABLE_SWAGGER="true" Lets you: Test API calls in browser, See endpoints, Debug integrations
ENABLE_SWAGGER="true" Lets you: Test API calls in browser, See endpoints, Debug integrations
MAX_RESPONSE_ITEMS="15" controls pagination limits for API responses
ROOT_URL - This is what Gitea uses for: Clone URLs, Redirects, Webhooks, OAuth callbacks
LOCAL_ROOT_URL - You can't change the port from 3000, so you don't need this with this configuration.
@@ -26,8 +32,21 @@ volumes are easy, one for gitea and one for mariadb.
We connect to the proxy network and have an internal network for db.
## Additional Notes / Gotchas
## Docker Run
```bash
docker run -d \
--name gitea \
-p 22:22 \
-p 3000:3000 \
-v /data/gitea/data:/data \
-v /data/gitea/db:/var/lib/mysql \
gitea/gitea:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
### 1000 User
+1 -1
View File
@@ -159,6 +159,6 @@ stackname: handbrake
Compose file path: handbrake/compose-cpu.yaml
Additional env file (optional): handbrake/sample.env
Then "Load" handbrake/sample.env into the Environmental variables in dockhand
Then "Load" handbrake_notes/sample.env into the Environmental variables in dockhand
Create the Stack
+60 -22
View File
@@ -18,31 +18,15 @@ Requires a valid config.yaml before first startup.
* Internal Service Port: 8080 (not exposed publicly)
* Environment Variable Notes
## Core Settings
## Getting Started
These variables are used in the Docker Compose file (.env):
1. Start the container: `docker compose up -d`
2. Open http://localhost:PORT in your browser
3. Follow the initial setup wizard to configure the application
```
HEADSCALE_IMAGE Docker image for Headscale server (default: headscale/headscale:latest)
HEADSCALE_UI_IMAGE Docker image for admin UI
HEADSCALE_RESTART Restart policy (default: unless-stopped)
HEADSCALE_UI_RESTART Restart policy for UI container
## Environment Variable Notes
# Paths
CONFIG_PATH Location of configuration files (config.yaml)
DATA_PATH Persistent database storage (SQLite)
LOG_PATH Application logs
# System
TZ Timezone (e.g. America/Vancouver)
HEADSCALE_LOG_LEVEL Logging verbosity (info, debug, etc.)
Domain Configuration
HEADSCALE_DOMAIN Public-facing domain used via reverse proxy
Example: headscale.4lt.ca
HEADSCALE_URL Full URL used by Headscale clients
Must match your reverse proxy domain:
```
HEADSCALE_LOG_LEVEL default: info
## Volume Notes
@@ -103,3 +87,57 @@ Ensure config.yaml exists in:
./config/headscale/config/config.yaml
Deploy stack
Configure reverse proxy in Nginx Proxy Manager
## Docker Run
```bash
docker run -d \
--name headscale \
-v /data/headscale/config:/etc/headscale \
-v /data/headscale/data:/var/lib/headscale \
-v /data/headscale/logs:/var/log/headscale \
headscale/headscale:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: headscale_dev
Compose file path: headscale_dev/compose.yaml
Additional env file (optional): headscale_dev/sample.env
Then "Load" headscale_dev/sample.env into the Environmental variables in dockhand
Create the Stack
## Core Settings
These variables are used in the Docker Compose file (.env):
```
HEADSCALE_IMAGE Docker image for Headscale server (default: headscale/headscale:latest)
HEADSCALE_UI_IMAGE Docker image for admin UI
HEADSCALE_RESTART Restart policy (default: unless-stopped)
HEADSCALE_UI_RESTART Restart policy for UI container
# Paths
CONFIG_PATH Location of configuration files (config.yaml)
DATA_PATH Persistent database storage (SQLite)
LOG_PATH Application logs
# System
TZ Timezone (e.g. America/Vancouver)
HEADSCALE_LOG_LEVEL Logging verbosity (info, debug, etc.)
Domain Configuration
HEADSCALE_DOMAIN Public-facing domain used via reverse proxy
Example: headscale.4lt.ca
HEADSCALE_URL Full URL used by Headscale clients
Must match your reverse proxy domain:
```
+39 -2
View File
@@ -10,10 +10,47 @@ Heimdall is a lightweight web-based dashboard for organizing and launching your
- **Container Image:** [Docker Hub](https://hub.docker.com/r/linuxserver/heimdall)
- **Reverse Proxy Port:** `80`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8000 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
FORCE_HTTPS=true - For https
FORCE_HTTPS=true - For https
## Volume Notes
/config host path /data/heimdall
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name heimdall \
-p 8000:80 \
-v /data/heimdall:/config \
linuxserver/heimdall:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Still working on the staging config, TODO: where is domain base path set?
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: heimdall
Compose file path: heimdall/compose.yaml
Additional env file (optional): heimdall/sample.env
Then "Load" heimdall/sample.env into the Environmental variables in dockhand
Create the Stack
+50
View File
@@ -10,3 +10,53 @@ Proxy Port: 3000
If you want to use the optional docker socket, you must run as root.
## Project Details
- **Container Image:** [ghcr.io/gethomepage/homepage:latest](https://github.com/gethomepage/homepage)
- **Reverse Proxy Port:** `3000`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:3000 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
HOMEPAGE_PORT default: 3000
## Volume Notes
/app/config host path /data/homepage/config
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name homepage \
-p 3000:3000 \
-v /data/homepage/config:/app/config \
ghcr.io/gethomepage/homepage:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: homepage_dev
Compose file path: homepage_dev/compose.yaml
Additional env file (optional): homepage_dev/sample.env
Then "Load" homepage_dev/sample.env into the Environmental variables in dockhand
Create the Stack
+77
View File
@@ -11,3 +11,80 @@ This repo is just a slight modification of [the source](https://github.com/invoi
I'm not a big fan of all the licensing and paywall features.
## Overview
Invoicing, payments, and client management for freelancers and small businesses.
## Project Details
- **Container Image:** [nginx:alpine](https://hub.docker.com/_/nginx)
- **Reverse Proxy Port:** `80`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8000 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
DB_DATABASE default: ninja
DB_USERNAME default: ninja
DB_PASSWORD default: ChangeThisPassword
DB_ROOT_PASSWORD default: ChangeThisPassword
APP_URL default: http://localhost:8000
APP_KEY default: ChangeThisPassword
APP_ENV default: production
APP_DEBUG default: false
REQUIRE_HTTPS default: false
PHANTOMJS_PDF_GENERATION default: false
PDF_GENERATOR default: snappdf
TRUSTED_PROXIES default: *
CACHE_DRIVER default: redis
QUEUE_CONNECTION default: redis
(see sample.env for the full list)
## Volume Notes
/var/lib/mysql host path /data/invoiceninja/mysql
/var/www/html/public host path /data/invoiceninja/public
/var/www/html/storage host path /data/invoiceninja/storage
/etc/nginx/conf.d host path /data/invoiceninja/nginx
/var/www/html/public host path /data/invoiceninja/public
/var/www/html/storage host path /data/invoiceninja/storage
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name invoiceninja \
-p 8000:80 \
-v /data/invoiceninja/mysql:/var/lib/mysql \
-v /data/invoiceninja/public:/var/www/html/public \
-v /data/invoiceninja/storage:/var/www/html/storage \
-v /data/invoiceninja/nginx:/etc/nginx/conf.d:ro \
-v /data/invoiceninja/public:/var/www/html/public:ro \
nginx:alpine
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: invoiceninja_dev
Compose file path: invoiceninja_dev/compose.yaml
Additional env file (optional): invoiceninja_dev/sample.env
Then "Load" invoiceninja_dev/sample.env into the Environmental variables in dockhand
Create the Stack
+30 -12
View File
@@ -11,22 +11,23 @@ Makes images, needs gpu.
- **Documentation:** [Docs](https://invoke-ai.github.io/InvokeAI/)
- **Reverse Proxy Port:** You Can set this in env, I have it set to 9090
## Additional Notes / Gotchas
## Getting Started
To get started, go to the models tab and install: RealVisXL V3 or Juggernaut XL
Also in the model manager, for upscale install: RealESRGAN_x4plus
And last install Tile SDXL version
1. Start the container: `docker compose up -d`
2. Open http://localhost:9090 in your browser
3. Follow the initial setup wizard to configure the application
## Dockhand Stack, Deploy from Git
## Environment Variable Notes
Cookbooks Repository
stackname: invokeai
Compose file path: invokeai/compose.yaml
Additional env file (optional): invokeai/sample.env
INVOKEAI_PORT default: 9090
Then "Load" SERVICENAME/sample.env into the Environmental variables in dockhand
## Volume Notes
Create the Stack
/invokeai host path /data/invokeai
## Network Notes
Requires proxy network
## Docker Run
@@ -40,4 +41,21 @@ docker run -d \
-p 9090:9090 \
--gpus all \
ghcr.io/invoke-ai/invokeai:latest
```
```
## Additional Notes / Gotchas
To get started, go to the models tab and install: RealVisXL V3 or Juggernaut XL
Also in the model manager, for upscale install: RealESRGAN_x4plus
And last install Tile SDXL version
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: invokeai
Compose file path: invokeai/compose.yaml
Additional env file (optional): invokeai/sample.env
Then "Load" invokeai/sample.env into the Environmental variables in dockhand
Create the Stack
+61
View File
@@ -11,3 +11,64 @@
* 8920/tcp is used by default for HTTPS traffic. You can change this in the dashboard.
* 1900/udp is used for service auto-discovery. This is not configurable.
* 7359/udp is also used for auto-discovery. This is not configurable.
## Project Details
- **Container Image:** [jellyfin/jellyfin:latest](https://hub.docker.com/r/jellyfin/jellyfin)
- **Reverse Proxy Port:** `8096`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8096 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
JELLYFIN_URL default: http://localhost:8096
JELLYFIN_PORT default: 8096
## Volume Notes
/cache host path /data/jellyfin/cache
/config host path /data/jellyfin/config
/books host path /data/jellyfin/media/books
/movies host path /data/jellyfin/media/movies
/music host path /data/jellyfin/media/music
/photos host path /data/jellyfin/media/photos
/shows host path /data/jellyfin/media/shows
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name jellyfin \
-p 8096:8096 \
-v /data/jellyfin/cache:/cache \
-v /data/jellyfin/config:/config \
-v /data/jellyfin/media/books:/books \
-v /data/jellyfin/media/movies:/movies \
-v /data/jellyfin/media/music:/music \
jellyfin/jellyfin:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: jellyfin_dev
Compose file path: jellyfin_dev/compose.yaml
Additional env file (optional): jellyfin_dev/sample.env
Then "Load" jellyfin_dev/sample.env into the Environmental variables in dockhand
Create the Stack
+4
View File
@@ -61,6 +61,10 @@ docker run -d \
ghcr.io/hotio/jellyseerr:release
```
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
- **Cookbooks Repository**
+4
View File
@@ -74,6 +74,10 @@ docker run -d \
ghcr.io/hotio/lidarr:release
```
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
- **Cookbooks Repository**
+21 -2
View File
@@ -14,6 +14,12 @@ initialization/upgrades, and support for reverse proxy integration.
- **Documentation:** https://listmonk.app/docs/
- **Reverse Proxy Port:** `9000` (configurable with `LISTMONK_PORT`)
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:9000 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
Most variables are optional because sane defaults are already included
@@ -52,7 +58,7 @@ These are only used during first startup.
## Volume Notes
/data/listmonk/db
/data/listmonk/db
PostgreSQL database storage
/data/listmonk/uploads
@@ -78,6 +84,19 @@ Internal application traffic uses the private:
bridge network.
## Docker Run
```bash
docker run -d \
--name listmonk \
-p 9000:9000 \
-v /data/listmonk/db:/var/lib/postgresql \
-v /data/listmonk/uploads:/listmonk/uploads:rw \
listmonk/listmonk:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
- The stack automatically runs:
@@ -109,4 +128,4 @@ Then load:
into the Environmental Variables section in Dockhand.
Create the Stack.
Create the Stack.
+56
View File
@@ -6,3 +6,59 @@ You could put it behind a reverse proxy.
Uses sqlite by default but postgres is an option too.
[Getting Started Wiki](https://docs.lubelogger.com/Installation/Getting%20Started)
## Overview
Vehicle maintenance records and fuel mileage tracker.
## Project Details
- **Container Image:** [ghcr.io/hargata/lubelogger:latest](https://github.com/hargata/lubelogger)
- **Reverse Proxy Port:** `8080`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8080 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
LUBELOGGER_PORT default: 8080
## Volume Notes
/App/data host path /data/lubelogger/data
/root/.aspnet/DataProtection-Keys host path /data/lubelogger/keys
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name lubelogger \
-p 8080:8080 \
-v /data/lubelogger/data:/App/data \
-v /data/lubelogger/keys:/root/.aspnet/DataProtection-Keys \
ghcr.io/hargata/lubelogger:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: lubelogger_dev
Compose file path: lubelogger_dev/compose.yaml
Additional env file (optional): lubelogger_dev/sample.env
Then "Load" lubelogger_dev/sample.env into the Environmental variables in dockhand
Create the Stack
+56 -1
View File
@@ -11,4 +11,59 @@ TODO:
volumes:
- "/etc/timezone:/etc/timezone:ro"
- "/etc/localtime:/etc/localtime:ro"
```
```
## Overview
Email testing tool: fake SMTP server with a web UI to inspect captured mail.
## Project Details
- **Container Image:** [mailhog/mailhog:latest](https://hub.docker.com/r/mailhog/mailhog)
- **Reverse Proxy Port:** `1025`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:1025 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
MAILHOG_SMTP_PORT default: 1025
MAILHOG_UI_PORT default: 8025
## Volume Notes
No persistent volumes.
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name mailhog \
-p 1025:1025 \
-p 8025:8025 \
mailhog/mailhog:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: mailhog_dev
Compose file path: mailhog_dev/compose.yaml
Additional env file (optional): mailhog_dev/sample.env
Then "Load" mailhog_dev/sample.env into the Environmental variables in dockhand
Create the Stack
+60 -2
View File
@@ -7,7 +7,65 @@ Proxy Port: 3306
It will be quite uncommon to just use this compose file, it's likely you are extending this from another project.
That's the main context of this container.
## Sample
## Overview
Standalone MariaDB database server for stacks that need shared SQL.
## Project Details
- **Container Image:** [mariadb:latest](https://hub.docker.com/_/mariadb)
- **Reverse Proxy Port:** `3306`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:3306 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
MARIADB_DATABASE default: mydb
MARIADB_ROOT_PASSWORD default: ChangeThisPassword
MARIADB_USER default: dbuser
MARIADB_PASSWORD default: ChangeThisPassword
MARIADB_PORT default: 3306
## Volume Notes
/var/lib/mysql host path /data/mariadb
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name mariadb \
-p 3306:3306 \
-v /data/mariadb:/var/lib/mysql \
mariadb:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Other stacks include their own database; this stack is for a shared or standalone instance.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: mariadb_dev
Compose file path: mariadb_dev/compose.yaml
Additional env file (optional): mariadb_dev/sample.env
Then "Load" mariadb_dev/sample.env into the Environmental variables in dockhand
Create the Stack
## Sample
### Run multiple databases
@@ -37,4 +95,4 @@ command: --max_allowed_packet=32505856
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed
# nextcloud
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
```
```
+61
View File
@@ -3,6 +3,67 @@
Last Updated: Thu August 08, 2024 15:15:31 PDT
## Overview
Docker Hub: https://hub.docker.com/r/hkotel/mealie
Project: https://mealie.io/
Proxy Port: 9000
## Project Details
- **Container Image:** [hkotel/mealie:latest](https://hub.docker.com/r/hkotel/mealie)
- **Reverse Proxy Port:** `80`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:9000 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
MEALIE_BASE_URL default: https://mealie.domain.com
MEALIE_DEFAULT_EMAIL default: email@domain.com
MEALIE_PGID default: 1000
MEALIE_PUID default: 1000
MEALIE_RECIPE_DISABLE_AMOUNT default: false
MEALIE_RECIPE_DISABLE_COMMENTS default: false
MEALIE_RECIPE_LANDSCAPE_VIEW default: true
MEALIE_RECIPE_PUBLIC default: true
MEALIE_RECIPE_SHOW_ASSETS default: true
MEALIE_RECIPE_SHOW_NUTRITION default: true
MEALIE_PORT default: 9000
## Volume Notes
/app/data host path /data/mealie
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name mealie \
-p 9000:80 \
-v /data/mealie:/app/data \
hkotel/mealie:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: mealie_dev
Compose file path: mealie_dev/compose.yaml
Additional env file (optional): mealie_dev/sample.env
Then "Load" mealie_dev/sample.env into the Environmental variables in dockhand
Create the Stack
+40 -21
View File
@@ -16,9 +16,15 @@ Docker Compose setup for [n8n](https://n8n.io/), a workflow automation tool.
- **Docker Hub Tags:** [Tags](https://hub.docker.com/r/n8nio/n8n/tags)
- **Reverse Proxy Port:** `5678`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:5678 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
N8N_IMAGE Docker image tag (default: n8nio/n8n:latest)
N8N_IMAGE Docker image tag (default: n8nio/n8n:latest)
N8N_PORT Container port (default: 5678)
N8N_HOST Hostname for the n8n instance (default: localhost)
N8N_PROTOCOL Protocol (default: http; set to https behind NPM)
@@ -26,34 +32,28 @@ Docker Compose setup for [n8n](https://n8n.io/), a workflow automation tool.
N8N_SECURE_COOKIE Set true when using HTTPS (default: true)
WEBHOOK_URL Public-facing webhook URL (default: http://localhost:5678)
## Reverse Proxy Setup (Nginx Proxy Manager)
1. In NPM, create a **Proxy Host**:
- **Domain Names:** `n8n.yourdomain.com`
- **Forward Hostname:** `n8n`
- **Forward Port:** `5678`
- **Scheme:** `http`
- **Websockets Support:** ✔ Enabled
- **Block Common Exploits:** ✔ Enabled
- **SSL:** ✔ Enable SSL (Let's Encrypt)
2. Override these env vars:
N8N_HOST=n8n.yourdomain.com
N8N_PROTOCOL=https
N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com
WEBHOOK_URL=https://n8n.yourdomain.com
N8N_SECURE_COOKIE=true
## Volume Notes
${VOL_PATH}/n8n/data n8n database and config (chown 1000:1000)
${VOL_PATH}/n8n/data n8n database and config (chown 1000:1000)
${VOL_PATH}/n8n/files shared file storage for workflows
## Network Notes
Requires the external `proxy` network.
## Docker Run
```bash
docker run -d \
--name n8n \
-p 5678:5678 \
-v /data/n8n/data:/home/node/.n8n \
-v /data/n8n/files:/files \
n8nio/n8n:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
- A license key is required (free at the time of writing).
@@ -74,3 +74,22 @@ Cookbooks Repository
Then "Load" n8n/sample.env into the Environmental variables in dockhand
Create the Stack
## Reverse Proxy Setup (Nginx Proxy Manager)
1. In NPM, create a **Proxy Host**:
- **Domain Names:** `n8n.yourdomain.com`
- **Forward Hostname:** `n8n`
- **Forward Port:** `5678`
- **Scheme:** `http`
- **Websockets Support:** ✔ Enabled
- **Block Common Exploits:** ✔ Enabled
- **SSL:** ✔ Enable SSL (Let's Encrypt)
2. Override these env vars:
N8N_HOST=n8n.yourdomain.com
N8N_PROTOCOL=https
N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com
WEBHOOK_URL=https://n8n.yourdomain.com
N8N_SECURE_COOKIE=true
+60 -1
View File
@@ -3,6 +3,65 @@
Docker Hub: https://hub.docker.com/_/nextcloud
Proxy Port: 80
## Overview
Self-hosted file sync, sharing, and collaboration platform.
## Project Details
- **Container Image:** [mariadb:latest](https://hub.docker.com/_/mariadb)
- **Reverse Proxy Port:** `n/a`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:PORT in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
NEXTCLOUD_DB default: nextcloud
MARIADB_ROOT_PASSWORD default: ChangeThisPassword
NEXTCLOUD_DB_USER default: nextcloud
NEXTCLOUD_DB_PASSWORD default: ChangeThisPassword
NEXTCLOUD_DB_HOST default: nextcloud-db
## Volume Notes
/var/lib/mysql host path /data/nextcloud/db
/var/www/html host path /data/nextcloud/data
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name nextcloud \
-v /data/nextcloud/db:/var/lib/mysql \
-v /data/nextcloud/data:/var/www/html \
mariadb:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
See `compose-aio.yaml` in this directory for the Nextcloud All-in-One variant.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: nextcloud
Compose file path: nextcloud/compose.yaml
Additional env file (optional): nextcloud/sample.env
Then "Load" nextcloud/sample.env into the Environmental variables in dockhand
Create the Stack
## Useful commands
```bash
@@ -12,4 +71,4 @@ sudo -u www-data php occ maintenance:mode --on
php occ trashbin:cleanup --all-users
docker-compose exec --user www-data nextcloud php occ
```
```
+52 -1
View File
@@ -3,11 +3,62 @@
Last Updated: Thu August 01, 2024 18:40:57 PDT
## Overview
Docker Hub: https://hub.docker.com/r/nocodb/nocodb
Project: https://nocodb.com/
Docker Compose Example: https://github.com/nocodb/nocodb/blob/master/docker-compose/mysql/docker-compose.yml
Proxy Port: 8080
## Project Details
- **Container Image:** [nocodb/nocodb:latest](https://hub.docker.com/r/nocodb/nocodb)
- **Reverse Proxy Port:** `8080`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8080 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
NOCODB_PORT default: 8080
## Volume Notes
/usr/app/data host path /data/nocodb
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name nocodb \
-p 8080:8080 \
-v /data/nocodb:/usr/app/data \
nocodb/nocodb:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: nocodb_dev
Compose file path: nocodb_dev/compose.yaml
Additional env file (optional): nocodb_dev/sample.env
Then "Load" nocodb_dev/sample.env into the Environmental variables in dockhand
Create the Stack
## Description
This project is setup to use sql lite. Although it can use mysql with some env vars.
@@ -15,4 +66,4 @@ This project is setup to use sql lite. Although it can use mysql with some env
## Notes
# environment:
# - NC_DB=${NCDB_NC_DB:-mysql2://root_db:3306?u=noco&p=password&d=root_db}
# - NC_DB=${NCDB_NC_DB:-mysql2://root_db:3306?u=noco&p=password&d=root_db}
+65 -2
View File
@@ -11,6 +11,67 @@ Github (instructions): https://github.com/open-webui/open-webui
Reverse Proxy Port webui: 8080 (The docker-compose sets the port to 3000)
Ollama Models: https://ollama.com/search
## Overview
Local large language model runner with the Open WebUI front end.
## Project Details
- **Container Image:** [ollama/ollama:latest](https://hub.docker.com/r/ollama/ollama)
- **Reverse Proxy Port:** `11434`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:11434 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
OLLAMA_KEEP_ALIVE default: 5m
OLLAMA_PORT default: 11434
WEBUI_URL default: http://localhost:8080
WEBUI_PORT default: 8080
## Volume Notes
/root/.ollama host path /data/ollama
/root/.cache host path /data/webui/cache
/app/backend/data host path /data/webui/data
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name ollama \
-p 11434:11434 \
-v /data/ollama:/root/.ollama \
-v /data/webui/cache:/root/.cache \
-v /data/webui/data:/app/backend/data \
ollama/ollama:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: ollama
Compose file path: ollama/compose.yaml
Additional env file (optional): ollama/sample.env
Then "Load" ollama/sample.env into the Environmental variables in dockhand
Create the Stack
## Preperation
You need to have nvidia-drivers, cuda and nvidia-container-toolkit installed before proceeding.
@@ -22,6 +83,7 @@ docker run -d --runtime=nvidia --gpus=all -v ollama:/root/.ollama -p 11434:11434
docker exec -it ollama ollama pull llama3
docker exec -it ollama ollama run llama3
```
## Environment
WEBUI_SECRET_KEY is just a random secret string used to secure sessions, cookies, and auth in your WebUI. ```openssl rand -hex 32```
@@ -29,7 +91,7 @@ WEBUI_SECRET_KEY is just a random secret string used to secure sessions, cookies
You could also set OLLAMA_KEEP_ALIVE=5m if you are running multiple models. 5m is default, 0 removes as soon as done (then would have to reload model, so not quick), more than 5m is longer (minutes).
See "Docker Container Cheatsheet" below for how to remove models from memory.
## Use
## Use
- [Ollama Models](https://ollama.com/search)
@@ -83,6 +145,7 @@ Straight docker run:
```bash
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda
```
## Recommended Pulls
For a NVIDIA GeForce RTX 5060 Ti, your GPU may vary.
@@ -117,4 +180,4 @@ Summarizing documents
ollama pull granite3.2:8b-instruct
ollama pull cognitivetech/obook_summary:7b
ollama pull bge-m3:8b
```
```
+74 -1
View File
@@ -1,8 +1,81 @@
# Open Archiver
## Overview
Self-hosted email archiving platform with full-text search.
## Project Details
- **Container Image:** [logiclabshq/open-archiver:latest](https://hub.docker.com/r/logiclabshq/open-archiver)
- **Reverse Proxy Port:** `3000`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:3000 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
POSTGRES_DB default: open_archive
POSTGRES_USER default: admin
POSTGRES_PASSWORD default: ChangeThisPassword
REDIS_PASSWORD default: ChangeThisPassword
MEILI_MASTER_KEY default: ChangeThisPassword
NODE_ENV default: production
PORT_BACKEND default: 4000
PORT_FRONTEND default: 3000
SYNC_FREQUENCY default: * * * * *
MEILI_HOST default: http://meilisearch:7700
MEILI_INDEXING_BATCH default: 500
REDIS_HOST default: valkey
REDIS_PORT default: 6379
REDIS_TLS_ENABLED default: false
(see sample.env for the full list)
## Volume Notes
/var/lib/postgresql/data host path /data/openarchiver/pgdata
/data host path /data/openarchiver/valkeydata
/meili_data host path /data/openarchiver/meilidata
/var/data/open-archiver host path /data/openarchiver/archiver-data
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name openarchiver \
-p 3000:3000 \
-v /data/openarchiver/pgdata:/var/lib/postgresql/data \
-v /data/openarchiver/valkeydata:/data \
-v /data/openarchiver/meilidata:/meili_data \
-v /data/openarchiver/archiver-data:/var/data/open-archiver \
logiclabshq/open-archiver:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: openarchiver_dev
Compose file path: openarchiver_dev/compose.yaml
Additional env file (optional): openarchiver_dev/sample.env
Then "Load" openarchiver_dev/sample.env into the Environmental variables in dockhand
Create the Stack
## First Run
Will give you a chance to setup a new user.
You can add an ingestion source and it just starts importing.
+54 -25
View File
@@ -11,6 +11,60 @@ OpenCode is an open source AI coding agent.
- **Documentation:** [Docs](https://opencode.ai/docs)
- **Reverse Proxy Port:** `4096`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:4096 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
OPENCODE_PORT default: 4096
OPENCODE_HOSTNAME default: 0.0.0.0
OLLAMA_HOST_URL default: http://localhost:11434
## Volume Notes
With `VOL_PATH=/data`:
| Container path | Host path | Purpose |
|---|---|---|
| `/config` | `/data/opencode/config` | Config files (config.json) |
| `/data` | `/data/opencode/data` | OpenCode state |
| `/projects` | `/data/opencode/projects` | Workspace/project files |
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name opencode \
-p 4096:4096 \
-v /data/opencode/config:/config \
-v /data/projects:/projects \
ghcr.io/anomalyco/opencode:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: opencode
Compose file path: opencode/compose.yaml
Additional env file (optional): opencode/sample.env
Then "Load" opencode/sample.env into the Environmental variables in dockhand.
Create the Stack
## Config file
The `config.json` at `opencode/config/config.json` is pre-configured for
@@ -89,28 +143,3 @@ To use a host-side ollama instead, set `OLLAMA_HOST=http://host.docker.internal:
- `OLLAMA_HOST` — Ollama API endpoint (default `http://localhost:11434`)
- `OPENCODE_PORT` — Web UI port (default `4096`)
- `VOL_PATH` — Base path for persistent data (default `/data`)
## Volume Notes
With `VOL_PATH=/data`:
| Container path | Host path | Purpose |
|---|---|---|
| `/config` | `/data/opencode/config` | Config files (config.json) |
| `/data` | `/data/opencode/data` | OpenCode state |
| `/projects` | `/data/opencode/projects` | Workspace/project files |
## Network Notes
Requires proxy network
## dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: opencode
Compose file path: opencode/compose.yaml
Additional env file (optional): opencode/sample.env
Then "Load" opencode/sample.env into the Environmental variables in dockhand.
Create the Stack
+66
View File
@@ -1,5 +1,9 @@
# Paperless
## Overview
Document management system that indexes your scanned paperwork.
## Project Details
- **Project Repository:** [Link](https://github.com/paperless-ngx/paperless-ngx)
@@ -8,6 +12,68 @@
- **Documentation:** [Docs](https://docs.paperless-ngx.com/)
- **Reverse Proxy Port:** `8000`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8000 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
PAPERLESS_MARIADB_DATABASE default: paperless
PAPERLESS_MARIADB_USER default: paperless
PAPERLESS_MARIADB_PASSWORD default: ChangeThisPassword
PAPERLESS_MARIADB_ROOT_PASSWORD default: ChangeThisPassword
PAPERLESS_SECRET_KEY default: ChangeThisPassword
PAPERLESS_OCR_LANGUAGE default: eng
PAPERLESS_URL default: http://localhost
PAPERLESS_CONSUMER_DELETE_DUPLICATES default: 0
PAPERLESS_PORT default: 8000
## Volume Notes
/data host path /data/paperless/redis
/var/lib/mysql host path /data/paperless/db
/usr/src/paperless/data host path /data/paperless/data
/usr/src/paperless/media host path /data/paperless/media
/usr/src/paperless/export host path /data/paperless/export
/usr/src/paperless/consume host path /data/paperless/consume
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name paperless \
-p 8000:8000 \
-v /data/paperless/redis:/data \
-v /data/paperless/db:/var/lib/mysql \
-v /data/paperless/data:/usr/src/paperless/data \
-v /data/paperless/media:/usr/src/paperless/media \
-v /data/paperless/export:/usr/src/paperless/export \
ghcr.io/paperless-ngx/paperless-ngx:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: paperless
Compose file path: paperless/compose.yaml
Additional env file (optional): paperless/sample.env
Then "Load" paperless/sample.env into the Environmental variables in dockhand
Create the Stack
## First Run
It takes a very long time for the first run to initilaze, v
+63
View File
@@ -11,3 +11,66 @@ docker compose exec peertube npm run reset-password -- -u root
```
NOTICE: I've added this one for testing, it didn't fit what I was wanting, but I'll levae it here as it did boot.
## Overview
Federated, peer-to-peer video hosting platform.
## Project Details
- **Container Image:** [chocobozzz/peertube:production-bookworm](https://hub.docker.com/r/chocobozzz/peertube)
- **Reverse Proxy Port:** `9000`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:9000 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
PEERTUBE_HOSTNAME default: localhost
PEERTUBE_ADMIN_EMAIL default: admin@example.com
PEERTUBE_ADMIN_PASSWORD default: ChangeThisPassword
PEERTUBE_PORT default: 9000
## Volume Notes
/var/lib/postgresql/data host path /data/peertube/postgres
/data host path /data/peertube/redis
/data host path /data/peertube/data
/config host path /data/peertube/config
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name peertube \
-p 9000:9000 \
-v /data/peertube/postgres:/var/lib/postgresql/data \
-v /data/peertube/redis:/data \
-v /data/peertube/data:/data \
-v /data/peertube/config:/config \
chocobozzz/peertube:production-bookworm
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: peertube_dev
Compose file path: peertube_dev/compose.yaml
Additional env file (optional): peertube_dev/sample.env
Then "Load" peertube_dev/sample.env into the Environmental variables in dockhand
Create the Stack
+64
View File
@@ -1 +1,65 @@
# https://penpot.app/
## Overview
Open-source design and prototyping tool (Figma alternative).
## Project Details
- **Container Image:** [penpotapp/frontend:latest](https://hub.docker.com/r/penpotapp/frontend)
- **Reverse Proxy Port:** `8080`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:9001 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
PENPOT_FLAGS default: disable-email-verification enable-smtp enable-prepl-server disable-secure-session-cookies
PENPOT_PUBLIC_URI default: http://localhost:9001
PENPOT_BODY_SIZE default: 31457280
PENPOT_MULTIPART_SIZE default: 367001600
PENPOT_SMTP_FROM default: no-reply@example.com
PENPOT_TELEMETRY default: true
PENPOT_PORT default: 9001
## Volume Notes
/var/lib/postgresql/data host path /data/penpot/postgres
/opt/data/assets host path /data/penpot/assets
/opt/data/assets host path /data/penpot/assets
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name penpot \
-p 9001:8080 \
-v /data/penpot/postgres:/var/lib/postgresql/data \
-v /data/penpot/assets:/opt/data/assets \
-v /data/penpot/assets:/opt/data/assets \
penpotapp/frontend:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: penpot_dev
Compose file path: penpot_dev/compose.yaml
Additional env file (optional): penpot_dev/sample.env
Then "Load" penpot_dev/sample.env into the Environmental variables in dockhand
Create the Stack
+33
View File
@@ -12,6 +12,12 @@ This Docker Compose project deploys a Pi-hole DNS sinkhole and network-wide ad b
- **Documentation:** [Docs](https://docs.docker.com/compose/install/)
- **Reverse Proxy Port:** `53 (tcp & udp), 80, 443, 67, 123`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:PORT in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
Below are the key environment variables commonly used with the Pi-hole container.
@@ -36,6 +42,22 @@ Pi-hole uses volumes to persist configuration and query data:
/etc/dnsmasq.d Stores dnsmasq configuration files used by Pi-holes DNS service.
```
## Network Notes
Uses `network_mode: host` (DNS server) — no proxy network.
## Docker Run
```bash
docker run -d \
--name pihole \
-v /data/pihole/etc:/etc/pihole \
-v /data/pihole/dnsmasq:/etc/dnsmasq.d \
pihole/pihole:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
DHCP Server: If running Pi-hole as your network DHCP server, the container must run in host networking mode to broadcast DHCP packets correctly.
@@ -47,3 +69,14 @@ Port Conflicts: Nothing else on the host may use port 53. Disable systemd-resolv
Docker + Reverse Proxy: Pi-hole doesnt always play nicely behind reverse proxies. If using one, forward only the admin interface (port 80) and keep DNS ports (53) exposed directly.
Gravity Updates: Pi-hole updates blocklists daily. If using custom lists, verify they can be fetched without authentication or special headers.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: pihole
Compose file path: pihole/compose.yaml
Additional env file (optional): pihole/sample.env
Then "Load" pihole/sample.env into the Environmental variables in dockhand
Create the Stack
+62
View File
@@ -2,3 +2,65 @@
[Documentation](https://poste.io/doc/)
## Overview
All-in-one mail server: SMTP, IMAP, webmail, antispam, and admin UI.
## Project Details
- **Container Image:** [analogic/poste.io:latest](https://hub.docker.com/r/analogic/poste.io)
- **Reverse Proxy Port:** `25`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:25 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
POSTE_HOSTNAME default: mail.yourdomain.com
POSTE_SMTP_PORT default: 25
POSTE_POP3_PORT default: 110
POSTE_IMAP_PORT default: 143
POSTE_SUBMISSION_PORT default: 587
POSTE_IMAPS_PORT default: 993
POSTE_POP3S_PORT default: 995
POSTE_SIEVE_PORT default: 4190
## Volume Notes
/data host path /data/poste
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name poste \
-p 25:25 \
-p 110:110 \
-p 143:143 \
-v /data/poste:/data \
analogic/poste.io:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: poste_dev
Compose file path: poste_dev/compose.yaml
Additional env file (optional): poste_dev/sample.env
Then "Load" poste_dev/sample.env into the Environmental variables in dockhand
Create the Stack
+4
View File
@@ -61,6 +61,10 @@ docker run -d \
ghcr.io/hotio/prowlarr:release
```
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
- **Cookbooks Repository**
+62 -13
View File
@@ -6,6 +6,67 @@ https://github.com/Trigus42/alpine-qbittorrentvpn
port: 8080
## Overview
BitTorrent client with a full-featured web UI.
## Project Details
- **Container Image:** [trigus42/qbittorrentvpn:latest](https://hub.docker.com/r/trigus42/qbittorrentvpn)
- **Reverse Proxy Port:** `8080`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8080 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
QBT_PASS default: ChangeThisPassword
QBT_PORT default: 8080
## Volume Notes
/config host path /data/qbit/config
/downloads host path /data/qbit/downloads
/incomplete host path /data/qbit/incomplete
/dev/net/tun host path /dev/net/tun
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name qbittorrent \
-p 8080:8080 \
-v /data/qbit/config:/config \
-v /data/qbit/downloads:/downloads \
-v /data/qbit/incomplete:/incomplete \
-v /dev/net/tun:/dev/net/tun \
trigus42/qbittorrentvpn:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Check the container logs on first start for the temporary web UI password.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: qbittorrent
Compose file path: qbittorrent/compose.yaml
Additional env file (optional): qbittorrent/sample.env
Then "Load" qbittorrent/sample.env into the Environmental variables in dockhand
Create the Stack
## Default username
Admin
@@ -20,18 +81,6 @@ The container will fail to boot if VPN_ENABLED is set and there is no valid INTE
chmod 600 /path/to/wg0.conf
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: qbittorrent
Compose file path: qbittorrent/compose.yaml
Additional env file (optional): qbittorrent/sample.env
Then "Load" archivebox/sample.env into the Environmental variables in dockhand
Create the Stack
## Gotchas
For the trigus42/qbittorrentvpn image the env Username doesn't work, it's just admin.
For the trigus42/qbittorrentvpn image the env Username doesn't work, it's just admin.
+4
View File
@@ -70,6 +70,10 @@ docker run -d \
ghcr.io/hotio/radarr:release
```
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
- **Cookbooks Repository**
+4
View File
@@ -70,6 +70,10 @@ docker run -d \
ghcr.io/hotio/readarr:release
```
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
- **Cookbooks Repository**
+4
View File
@@ -70,6 +70,10 @@ docker run -d \
ghcr.io/hotio/sonarr:release
```
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
- **Cookbooks Repository**
+4
View File
@@ -56,6 +56,10 @@ docker run -d \
web
```
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
- **Cookbooks Repository**
+60
View File
@@ -1,6 +1,7 @@
# Stash App Docker Compose Configuration
## Overview
This Docker Compose configuration sets up the Stash application using Docker containers.
- Stash App: [Stash on Docker Hub](https://hub.docker.com/r/stashapp/stash)
@@ -8,6 +9,65 @@ This Docker Compose configuration sets up the Stash application using Docker con
- Documentation: https://docs.stashapp.cc/
- ProxyPort: 9999
## Project Details
- **Container Image:** [stashapp/stash:latest](https://hub.docker.com/r/stashapp/stash)
- **Reverse Proxy Port:** `9999`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:9999 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
STASH_CONTENT_PATH default: /data/stash
STASHAPP_CACHE default: /cache/
STASHAPP_DOMAIN default: stash.yourdomain.ca
STASHAPP_PORT default: 9999
## Volume Notes
/generated host path /data/stash/generated
/metadata host path /data/stash/metadata
/root/.stash host path /data/stash/root
/data host path /data/stash
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name stash \
-p 9999:9999 \
-v /data/stash/generated:/generated \
-v /data/stash/metadata:/metadata \
-v /data/stash/root:/root/.stash \
-v /data/stash:/data \
stashapp/stash:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Point STASH_CONTENT_PATH at your library; first-run wizard configures the library paths.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: stash
Compose file path: stash/compose.yaml
Additional env file (optional): stash/sample.env
Then "Load" stash/sample.env into the Environmental variables in dockhand
Create the Stack
## Setup
### Data directories
+61 -1
View File
@@ -5,6 +5,66 @@ proxyport 8080
See documentation: https://hub.docker.com/r/bitnami/suitecrm
## Overview
Open-source customer relationship management platform (SugarCRM fork).
## Project Details
- **Container Image:** [bitnami/suitecrm:latest](https://hub.docker.com/r/bitnami/suitecrm)
- **Reverse Proxy Port:** `8080`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8080 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
SUITECRM_DB_PASSWORD default: ChangeThisPassword
MARIADB_ROOT_PASSWORD default: ChangeThisPassword
SUITECRM_USER default: admin
SUITECRM_PASS default: ChangeThisPassword
SUITECRM_PORT default: 8080
## Volume Notes
/var/lib/mysql host path /data/suitecrm/db
/bitnami/suitecrm host path /data/suitecrm/data
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name suitecrm \
-p 8080:8080 \
-v /data/suitecrm/db:/var/lib/mysql \
-v /data/suitecrm/data:/bitnami/suitecrm \
bitnami/suitecrm:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: suitecrm_dev
Compose file path: suitecrm_dev/compose.yaml
Additional env file (optional): suitecrm_dev/sample.env
Then "Load" suitecrm_dev/sample.env into the Environmental variables in dockhand
Create the Stack
## Gotchas
1. they sometimes change variable names.
@@ -13,4 +73,4 @@ See documentation: https://hub.docker.com/r/bitnami/suitecrm
imap is not enabled by default as it's last update was 2011.
I don't yet have a process of updating this container for imap. Looking for alternative container providers.
I don't yet have a process of updating this container for imap. Looking for alternative container providers.
+31 -4
View File
@@ -12,6 +12,12 @@ The web interface also offers audio playback, seamless clipboard sharing, an int
- **Container Image:** [Docker Hub](https://hub.docker.com/r/jlesage/thunderbird)
- **Reverse Proxy Port:** `5800`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:5800 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
THUNDERBIRD_IMAGE=jlesage/thunderbird:latest
@@ -29,13 +35,34 @@ THUNDERBIRD_SECURE_CONNECTION=1
I use the import/export plugin for thunderbird so I've added an optional volume:
```thunderbird-export:/export```
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name thunderbird \
-p 5800:5800 \
-v /data/thunderbird/config:/config \
-v /data/thunderbird/export:/export \
jlesage/thunderbird
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
GUI app streamed to the browser — unauthenticated by default aside from the web password, keep it behind the proxy.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: NAME_HERE
Compose file path: SERVICENAME/compose.yaml
Additional env file (optional): SERVICENAME/sample.env
Compose file path: thunderbird/compose.yaml
Additional env file (optional): thunderbird/sample.env
Then "Load" SERVICENAME/sample.env into the Environmental variables in dockhand
Then "Load" thunderbird/sample.env into the Environmental variables in dockhand
Create the Stack
Create the Stack
+34 -6
View File
@@ -10,6 +10,12 @@ VS Code
- **Container Image:** [Docker Hub](https://hub.docker.com/r/linuxserver/code-server)
- **Reverse Proxy Port:** `8443`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8443 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
Data directory:
@@ -19,7 +25,29 @@ Data directory:
This is where all your code is stored, it should be set to your 1000 user. Then you can move your code here as that user.
Config Directory:
This is your home directory, your ssh keys are stored here.
This is your home directory, your ssh keys are stored here.
## Volume Notes
/data host path /data/projects
/config host path /data/vscode/config
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name vscode \
-p 8443:8443 \
-v /data/projects:/data \
-v /data/vscode/config:/config \
lscr.io/linuxserver/code-server:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
@@ -41,10 +69,6 @@ ssh-keygen -t ed25519 -C "c@nickyeoman.com"
cat ~/.ssh/id_ed25519.pub
```
## Nginx Proxy manager
If you are placing this behind NPM then you need to enable web sockets.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
@@ -54,4 +78,8 @@ Additional env file (optional): vscode/sample.env
Then "Load" vscode/sample.env into the Environmental variables in dockhand
Create the Stack
Create the Stack
## Nginx Proxy manager
If you are placing this behind NPM then you need to enable web sockets.
+4
View File
@@ -70,6 +70,10 @@ docker run -d \
ghcr.io/hotio/whisparr:release
```
## Additional Notes / Gotchas
Nothing specific to this stack so far.
## Dockhand Stack, Deploy from Git
- **Cookbooks Repository**
+82
View File
@@ -14,3 +14,85 @@ mkdir -p data/elasticsearch
chown -R 1000:1000 data/
chmod -R 755 data/elasticsearch/
```
## Overview
Helpdesk and ticketing system with web, email, and chat channels.
## Project Details
- **Container Image:** [ghcr.io/zammad/zammad:latest](https://github.com/zammad/zammad)
- **Reverse Proxy Port:** `8080`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:8080 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
POSTGRES_VERSION default: 17.5-alpine
POSTGRES_DB default: zammad_production
POSTGRES_USER default: zammad
POSTGRES_PASS default: ChangeThisPassword
REDIS_VERSION default: 7.4.5-alpine
MEMCACHE_VERSION default: 1.6.39-alpine
ELASTICSEARCH_VERSION default: 8.19.2
ELASTICSEARCH_JAVA_OPTS default: -Xms1g -Xmx1g
MEMCACHE_SERVERS default: zammad-memcached:11211
POSTGRES_HOST default: zammad-postgresql
POSTGRES_PORT default: 5432
POSTGRESQL_OPTIONS default: ?pool=50
POSTGRESQL_DB_CREATE default: true
REDIS_URL default: redis://zammad-redis:6379
(see sample.env for the full list)
## Volume Notes
/var/lib/postgresql/data host path /data/zammad/postgresql
/data host path /data/zammad/redis
/data host path /data/zammad/memcached
/usr/share/elasticsearch/data host path /data/zammad/elasticsearch
/opt/zammad/storage host path /data/zammad/storage
/opt/zammad/storage host path /data/zammad/storage
/opt/zammad/storage host path /data/zammad/storage
/opt/zammad/storage host path /data/zammad/storage
/var/tmp/zammad host path /data/zammad/backup
/opt/zammad/storage host path /data/zammad/storage
/opt/zammad/storage host path /data/zammad/storage
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name zammad \
-p 8080:8080 \
-v /data/zammad/postgresql:/var/lib/postgresql/data \
-v /data/zammad/redis:/data \
-v /data/zammad/memcached:/data \
-v /data/zammad/elasticsearch:/usr/share/elasticsearch/data \
-v /data/zammad/storage:/opt/zammad/storage \
ghcr.io/zammad/zammad:latest
```
See compose.yaml for the full set of environment variables.
## Additional Notes / Gotchas
The zammad-init service intentionally uses `restart: on-failure` (one-shot init container).
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: zammad_dev
Compose file path: zammad_dev/compose.yaml
Additional env file (optional): zammad_dev/sample.env
Then "Load" zammad_dev/sample.env into the Environmental variables in dockhand
Create the Stack