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**
+62
View File
@@ -1,3 +1,65 @@
# Duplicati
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".
+29 -11
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
@@ -44,3 +47,18 @@ docker run -d \
-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:
```
+38 -1
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
+29 -11
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
@@ -41,3 +42,20 @@ docker run -d \
--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**
+20 -1
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:
+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
+55
View File
@@ -12,3 +12,58 @@ TODO:
- "/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
+58
View File
@@ -7,6 +7,64 @@ 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.
## 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
+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
+59
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
+51
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.
+63
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```
@@ -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.
+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-hole’s 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 doesn’t 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**
+61 -12
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.
+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
+60
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.
+30 -3
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
+32 -4
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:
@@ -21,6 +27,28 @@ This is where all your code is stored, it should be set to your 1000 user. Then
Config Directory:
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
For setup you need to set the user and group ID
@@ -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
@@ -55,3 +79,7 @@ Additional env file (optional): vscode/sample.env
Then "Load" vscode/sample.env into the Environmental variables in dockhand
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