mirror of
https://github.com/nickyeoman/docker-compose-cookbooks.git
synced 2026-09-03 18:36:22 +00:00
add 23 requested stacks from container-requests list
Tdarr, Grocy, Dashy, Traefik, Fider, Twenty CRM, Outline, Chatwoot, ComfyUI, Picard, VoidAuth, Tinyauth, Tugtainer, Sencho, Authelia, Mail Archiver, ITFlow, Notifuse, Maybe Finance, DumbBudget, Silverpeas, Portus, Obsidian — all as _dev stacks following repo conventions. Harbor and Exportify moved to 'Apps That Will Not be in the Repo' (installer-generated compose / no published image). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,62 +4,10 @@ These are containers that have been requested to add to the repo. This used to
|
|||||||
|
|
||||||
## The List
|
## The List
|
||||||
|
|
||||||
1. [Tdarr](https://home.tdarr.io/) — Media transcoding and automation tool (part of the rr stack for managing media libraries and torrent workflows).
|
(empty — all previous requests have been added as stacks or moved to the section below)
|
||||||
|
|
||||||
2. [Invoice Ninja](https://invoiceninja.com/) — Invoicing, payments, and client management for freelancers and small businesses.
|
|
||||||
|
|
||||||
3. [Duplicati](https://www.duplicati.com/) — Encrypted backup software for securely storing backups to cloud or local destinations.
|
|
||||||
|
|
||||||
5. [Portus (openSUSE)](https://hub.docker.com/r/opensuse/portus/) — Web UI and authorization service for Docker registries.
|
|
||||||
|
|
||||||
6. [Silverpeas](https://hub.docker.com/_/silverpeas) — Enterprise collaboration platform (intranet, document sharing, communication tools).
|
|
||||||
|
|
||||||
7. [Grocy](https://github.com/grocy/grocy-docker/blob/main/docker-compose.yml) — Self-hosted grocery, household inventory, and meal planning system.
|
|
||||||
|
|
||||||
8. [Dashy](https://dashy.to/) — Customizable self-hosted dashboard for organizing apps, services, and links.
|
|
||||||
|
|
||||||
9. [Traefik](https://traefik.io/) — Modern reverse proxy and load balancer designed for microservices and Docker environments.
|
|
||||||
|
|
||||||
10. [Etherpad](https://hub.docker.com/r/etherpad/etherpad) — Real-time collaborative text editor (like a shared notepad).
|
|
||||||
|
|
||||||
11. [Maybe Finance](https://maybefinance.com/) — Personal finance and budgeting tool with a focus on privacy and simplicity.
|
|
||||||
|
|
||||||
12. [DumbBudget](https://github.com/DumbWareio/DumbBudget) — Simple self-hosted budgeting tool for tracking expenses and income.
|
|
||||||
|
|
||||||
13. [Fider](https://fider.io/) — Feedback collection platform for product ideas, suggestions, and user voting.
|
|
||||||
|
|
||||||
14. [Exportify](https://github.com/watsonbox/exportify) — Tool to export Spotify playlists to CSV format.
|
|
||||||
|
|
||||||
15. [Obsidian](https://obsidian.md/) — Powerful local-first note-taking and knowledge management app.
|
|
||||||
|
|
||||||
16. [Twenty CRM](https://twenty.com/) — Modern open-source CRM system for managing customers and pipelines.
|
|
||||||
|
|
||||||
17. [Outline](https://www.getoutline.com/) — Team knowledge base and documentation wiki.
|
|
||||||
|
|
||||||
18. [Mail Archiver](https://github.com/s1t5/mail-archiver) — Self-hosted email archiving and storage tool.
|
|
||||||
|
|
||||||
19. [ITFlow](https://itflow.org/) — IT documentation and asset management platform.
|
|
||||||
|
|
||||||
20. [Chatwoot](https://www.chatwoot.com/) — Open-source customer support and live chat platform.
|
|
||||||
|
|
||||||
21. [Notifuse](https://www.notifuse.com/) — Newsletter and email campaign management tool.
|
|
||||||
|
|
||||||
22. [ComfyUI](https://www.comfy.org/) — Node-based interface for AI image generation workflows.
|
|
||||||
|
|
||||||
23. [Picard (Docker)](https://hub.docker.com/r/mikenye/picard) — MusicBrainz-powered music file tagging and organization tool.
|
|
||||||
|
|
||||||
24. [VoidAuth](https://voidauth.app/) — Lightweight authentication system (Auth0-style alternative).
|
|
||||||
|
|
||||||
25. [Tinyauth](https://tinyauth.app/) — Minimal authentication proxy for securing apps behind login.
|
|
||||||
|
|
||||||
26. [Tugtainer](https://github.com/Quenary/tugtainer) — GUI alternative to Watchtower for managing Docker container updates.
|
|
||||||
|
|
||||||
27. [Sencho](https://sencho.io/) — Lightweight self-hosted service platform.
|
|
||||||
|
|
||||||
28. https://www.authelia.com/ - replacement for authentik
|
|
||||||
|
|
||||||
29. Harbor - self hosted images
|
|
||||||
|
|
||||||
|
|
||||||
## Apps That Will Not be in the Repo
|
## Apps That Will Not be in the Repo
|
||||||
|
|
||||||
|
1. [Harbor](https://goharbor.io/) — Self-hosted container image registry. Harbor's compose file is generated by its own installer from harbor.yml (~10 tightly coupled services); a static compose file in this repo would drift immediately. Use the official installer.
|
||||||
|
|
||||||
|
2. [Exportify](https://github.com/watsonbox/exportify) — Spotify playlist CSV exporter. No published container image (Dockerfile only), and the hosted version at https://exportify.app/ runs entirely in the browser with no server-side data storage.
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
# Authelia
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Single sign-on and 2FA portal for protecting apps behind a reverse proxy (lighter replacement for Authentik).
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/authelia/authelia)
|
||||||
|
- **Container Image:** [authelia/authelia](https://hub.docker.com/r/authelia/authelia)
|
||||||
|
- **Documentation:** [authelia.com](https://www.authelia.com/)
|
||||||
|
- **Reverse Proxy Port:** `9091`
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
1. Start the container: `docker compose up -d`
|
||||||
|
2. Open http://localhost:9091 in your browser
|
||||||
|
3. Follow the initial setup wizard to configure the application
|
||||||
|
|
||||||
|
## Environment Variable Notes
|
||||||
|
|
||||||
|
Configuration is file-based; env vars can override any setting using the AUTHELIA_ prefix
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/config – configuration.yml, users_database.yml, and the local SQLite storage
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name authelia \
|
||||||
|
-p 9091:9091 \
|
||||||
|
-e TZ=America/Vancouver \
|
||||||
|
-v /data/authelia/config:/config \
|
||||||
|
authelia/authelia:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
Authelia will not start without a valid `configuration.yml` in the config volume — generate one from the docs first (session secret, storage encryption key, and a users_database.yml are the minimum).
|
||||||
|
Works as forward-auth with Nginx Proxy Manager.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: authelia_dev
|
||||||
|
Compose file path: authelia_dev/compose.yaml
|
||||||
|
Additional env file (optional): authelia_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" authelia_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
services:
|
||||||
|
authelia:
|
||||||
|
image: ${AUTHELIA_IMAGE:-authelia/authelia:latest}
|
||||||
|
restart: ${AUTHELIA_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/authelia/config:/config
|
||||||
|
environment:
|
||||||
|
- TZ=${TZ:-America/Vancouver}
|
||||||
|
ports:
|
||||||
|
- ${AUTHELIA_PORT:-9091}:9091
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# Authelia
|
||||||
|
VOL_PATH=/data
|
||||||
|
TZ=America/Vancouver
|
||||||
|
AUTHELIA_IMAGE=authelia/authelia:latest
|
||||||
|
AUTHELIA_RESTART=unless-stopped
|
||||||
|
AUTHELIA_PORT=9091
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
# Chatwoot
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Open-source customer support and live chat platform.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/chatwoot/chatwoot)
|
||||||
|
- **Container Image:** [chatwoot/chatwoot](https://hub.docker.com/r/chatwoot/chatwoot)
|
||||||
|
- **Documentation:** [chatwoot.com](https://www.chatwoot.com/docs/self-hosted)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
CHATWOOT_SECRET_KEY_BASE – generate with `openssl rand -hex 64`
|
||||||
|
CHATWOOT_FRONTEND_URL – public URL of the instance
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/app/storage – uploaded attachments (shared by rails and sidekiq)
|
||||||
|
/var/lib/postgresql/data – PostgreSQL data (pgvector image required)
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name chatwoot \
|
||||||
|
-p 3000:3000 \
|
||||||
|
-e SECRET_KEY_BASE=changeme \
|
||||||
|
-e FRONTEND_URL=http://localhost:3000 \
|
||||||
|
-e POSTGRES_HOST=dbhost -e POSTGRES_USERNAME=chatwoot \
|
||||||
|
-e POSTGRES_PASSWORD=pass -e REDIS_URL=redis://redishost:6379 \
|
||||||
|
chatwoot/chatwoot:latest bundle exec rails s -p 3000 -b 0.0.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
Before first run, prepare the database once:
|
||||||
|
`docker compose run --rm chatwoot bundle exec rails db:chatwoot_prepare`
|
||||||
|
Chatwoot requires the pgvector Postgres extension, hence the pgvector image.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: chatwoot_dev
|
||||||
|
Compose file path: chatwoot_dev/compose.yaml
|
||||||
|
Additional env file (optional): chatwoot_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" chatwoot_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
services:
|
||||||
|
chatwoot:
|
||||||
|
image: ${CHATWOOT_IMAGE:-chatwoot/chatwoot:latest}
|
||||||
|
restart: ${CHATWOOT_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/chatwoot/storage:/app/storage
|
||||||
|
environment:
|
||||||
|
- SECRET_KEY_BASE=${CHATWOOT_SECRET_KEY_BASE:-ChangeThisPassword}
|
||||||
|
- FRONTEND_URL=${CHATWOOT_FRONTEND_URL:-http://localhost:3000}
|
||||||
|
- RAILS_ENV=production
|
||||||
|
- POSTGRES_HOST=chatwoot-db
|
||||||
|
- POSTGRES_USERNAME=chatwoot
|
||||||
|
- POSTGRES_PASSWORD=${CHATWOOT_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
- POSTGRES_DATABASE=chatwoot
|
||||||
|
- REDIS_URL=redis://chatwoot-redis:6379
|
||||||
|
ports:
|
||||||
|
- ${CHATWOOT_PORT:-3000}:3000
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- chatwoot-db
|
||||||
|
- chatwoot-redis
|
||||||
|
command:
|
||||||
|
- bundle
|
||||||
|
- exec
|
||||||
|
- rails
|
||||||
|
- s
|
||||||
|
- -p
|
||||||
|
- "3000"
|
||||||
|
- -b
|
||||||
|
- 0.0.0.0
|
||||||
|
|
||||||
|
chatwoot-sidekiq:
|
||||||
|
image: ${CHATWOOT_IMAGE:-chatwoot/chatwoot:latest}
|
||||||
|
restart: ${CHATWOOT_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/chatwoot/storage:/app/storage
|
||||||
|
environment:
|
||||||
|
- SECRET_KEY_BASE=${CHATWOOT_SECRET_KEY_BASE:-ChangeThisPassword}
|
||||||
|
- FRONTEND_URL=${CHATWOOT_FRONTEND_URL:-http://localhost:3000}
|
||||||
|
- RAILS_ENV=production
|
||||||
|
- POSTGRES_HOST=chatwoot-db
|
||||||
|
- POSTGRES_USERNAME=chatwoot
|
||||||
|
- POSTGRES_PASSWORD=${CHATWOOT_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
- POSTGRES_DATABASE=chatwoot
|
||||||
|
- REDIS_URL=redis://chatwoot-redis:6379
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- chatwoot-db
|
||||||
|
- chatwoot-redis
|
||||||
|
command:
|
||||||
|
- bundle
|
||||||
|
- exec
|
||||||
|
- sidekiq
|
||||||
|
- -C
|
||||||
|
- config/sidekiq.yml
|
||||||
|
|
||||||
|
chatwoot-db:
|
||||||
|
image: ${PGVECTOR_IMAGE:-pgvector/pgvector:pg16}
|
||||||
|
restart: ${CHATWOOT_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/chatwoot/db:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=chatwoot
|
||||||
|
- POSTGRES_USER=chatwoot
|
||||||
|
- POSTGRES_PASSWORD=${CHATWOOT_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
chatwoot-redis:
|
||||||
|
image: ${REDIS_IMAGE:-redis:7-alpine}
|
||||||
|
restart: ${CHATWOOT_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/chatwoot/redis:/data
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Chatwoot
|
||||||
|
VOL_PATH=/data
|
||||||
|
CHATWOOT_IMAGE=chatwoot/chatwoot:latest
|
||||||
|
PGVECTOR_IMAGE=pgvector/pgvector:pg16
|
||||||
|
REDIS_IMAGE=redis:7-alpine
|
||||||
|
CHATWOOT_RESTART=unless-stopped
|
||||||
|
CHATWOOT_PORT=3000
|
||||||
|
CHATWOOT_FRONTEND_URL=http://localhost:3000
|
||||||
|
CHATWOOT_SECRET_KEY_BASE=ChangeThisPassword
|
||||||
|
CHATWOOT_DB_PASSWORD=ChangeThisPassword
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# ComfyUI
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Node-based interface for AI image generation workflows.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/comfyanonymous/ComfyUI)
|
||||||
|
- **Container Image:** [yanwk/comfyui-boot](https://hub.docker.com/r/yanwk/comfyui-boot)
|
||||||
|
- **Documentation:** [comfy.org](https://docs.comfy.org/)
|
||||||
|
- **Reverse Proxy Port:** `8188`
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
1. Start the container: `docker compose up -d`
|
||||||
|
2. Open http://localhost:8188 in your browser
|
||||||
|
3. Follow the initial setup wizard to configure the application
|
||||||
|
|
||||||
|
## Environment Variable Notes
|
||||||
|
|
||||||
|
COMFYUI_IMAGE – pick the tag matching your CUDA version (cu124-slim, cu121, etc.)
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/root – models, custom nodes, outputs, and settings
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name comfyui \
|
||||||
|
--gpus all \
|
||||||
|
-p 8188:8188 \
|
||||||
|
-v /data/comfyui:/root \
|
||||||
|
yanwk/comfyui-boot:cu124-slim
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
ComfyUI has no official image; yanwk/comfyui-boot is the most maintained community image.
|
||||||
|
GPU access is required for practical use — install the NVIDIA Container Toolkit and add a `gpus` / deploy reservation to the compose file (not included here since it depends on host setup).
|
||||||
|
Models are large; expect 20+ GB in the /root volume.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: comfyui_dev
|
||||||
|
Compose file path: comfyui_dev/compose.yaml
|
||||||
|
Additional env file (optional): comfyui_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" comfyui_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
services:
|
||||||
|
comfyui:
|
||||||
|
image: ${COMFYUI_IMAGE:-yanwk/comfyui-boot:cu124-slim}
|
||||||
|
restart: ${COMFYUI_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/comfyui:/root
|
||||||
|
ports:
|
||||||
|
- ${COMFYUI_PORT:-8188}:8188
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# ComfyUI
|
||||||
|
VOL_PATH=/data
|
||||||
|
COMFYUI_IMAGE=yanwk/comfyui-boot:cu124-slim
|
||||||
|
COMFYUI_RESTART=unless-stopped
|
||||||
|
COMFYUI_PORT=8188
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# Dashy
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Customizable self-hosted dashboard for organizing apps, services, and links.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/Lissy93/dashy)
|
||||||
|
- **Container Image:** [lissy93/dashy](https://hub.docker.com/r/lissy93/dashy)
|
||||||
|
- **Documentation:** [dashy.to](https://dashy.to/docs/)
|
||||||
|
- **Reverse Proxy Port:** `8080`
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
1. Start the container: `docker compose up -d`
|
||||||
|
2. Open http://localhost:4000 in your browser
|
||||||
|
3. Follow the initial setup wizard to configure the application
|
||||||
|
|
||||||
|
## Environment Variable Notes
|
||||||
|
|
||||||
|
DASHY_PORT – host port for the web UI
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/app/user-data – conf.yml and all dashboard configuration
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name dashy \
|
||||||
|
-p 4000:8080 \
|
||||||
|
-v /data/dashy/user-data:/app/user-data \
|
||||||
|
lissy93/dashy:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
Configuration lives in `user-data/conf.yml` and can also be edited from the UI.
|
||||||
|
The repo already contains heimdall and homepage_dev as alternative dashboards.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: dashy_dev
|
||||||
|
Compose file path: dashy_dev/compose.yaml
|
||||||
|
Additional env file (optional): dashy_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" dashy_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
services:
|
||||||
|
dashy:
|
||||||
|
image: ${DASHY_IMAGE:-lissy93/dashy:latest}
|
||||||
|
restart: ${DASHY_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/dashy/user-data:/app/user-data
|
||||||
|
ports:
|
||||||
|
- ${DASHY_PORT:-4000}:8080
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Dashy
|
||||||
|
VOL_PATH=/data
|
||||||
|
DASHY_IMAGE=lissy93/dashy:latest
|
||||||
|
DASHY_RESTART=unless-stopped
|
||||||
|
DASHY_PORT=4000
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
# DumbBudget
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Stupid-simple self-hosted budgeting app for tracking expenses and income, protected by a PIN.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/DumbWareio/DumbBudget)
|
||||||
|
- **Container Image:** [dumbwareio/dumbbudget](https://hub.docker.com/r/dumbwareio/dumbbudget)
|
||||||
|
- **Documentation:** [GitHub README](https://github.com/DumbWareio/DumbBudget/blob/main/README.md)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
DUMBBUDGET_PIN – access PIN (change it!)
|
||||||
|
DUMBBUDGET_CURRENCY – ISO currency code
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/app/data – transactions and settings
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name dumbbudget \
|
||||||
|
-p 3000:3000 \
|
||||||
|
-e DUMBBUDGET_PIN=1234 -e BASE_URL=http://localhost:3000 -e CURRENCY=CAD \
|
||||||
|
-v /data/dumbbudget/data:/app/data \
|
||||||
|
dumbwareio/dumbbudget:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
PIN auth only — keep behind the proxy and don't expose publicly.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: dumbbudget_dev
|
||||||
|
Compose file path: dumbbudget_dev/compose.yaml
|
||||||
|
Additional env file (optional): dumbbudget_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" dumbbudget_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
dumbbudget:
|
||||||
|
image: ${DUMBBUDGET_IMAGE:-dumbwareio/dumbbudget:latest}
|
||||||
|
restart: ${DUMBBUDGET_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/dumbbudget/data:/app/data
|
||||||
|
environment:
|
||||||
|
- DUMBBUDGET_PIN=${DUMBBUDGET_PIN:-ChangeThisPassword}
|
||||||
|
- BASE_URL=${DUMBBUDGET_BASE_URL:-http://localhost:3000}
|
||||||
|
- CURRENCY=${DUMBBUDGET_CURRENCY:-CAD}
|
||||||
|
ports:
|
||||||
|
- ${DUMBBUDGET_PORT:-3000}:3000
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# DumbBudget
|
||||||
|
VOL_PATH=/data
|
||||||
|
DUMBBUDGET_IMAGE=dumbwareio/dumbbudget:latest
|
||||||
|
DUMBBUDGET_RESTART=unless-stopped
|
||||||
|
DUMBBUDGET_PORT=3000
|
||||||
|
DUMBBUDGET_PIN=ChangeThisPassword
|
||||||
|
DUMBBUDGET_BASE_URL=http://localhost:3000
|
||||||
|
DUMBBUDGET_CURRENCY=CAD
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
# Fider
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Feedback collection platform for product ideas, suggestions, and user voting.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/getfider/fider)
|
||||||
|
- **Container Image:** [getfider/fider](https://hub.docker.com/r/getfider/fider)
|
||||||
|
- **Documentation:** [fider.io](https://fider.io/docs)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
FIDER_JWT_SECRET – long random string, generate with `openssl rand -hex 32`
|
||||||
|
FIDER_BASE_URL – public URL of the instance
|
||||||
|
FIDER_SMTP_* – Fider requires working email to sign in (magic links)
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/var/lib/postgresql/data – PostgreSQL data
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name fider \
|
||||||
|
-p 3000:3000 \
|
||||||
|
-e BASE_URL=http://localhost:3000 \
|
||||||
|
-e DATABASE_URL=postgres://fider:pass@dbhost:5432/fider?sslmode=disable \
|
||||||
|
-e JWT_SECRET=changeme \
|
||||||
|
-e EMAIL_NOREPLY=noreply@example.com \
|
||||||
|
getfider/fider:stable
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
Email is not optional — sign-in uses magic links, so SMTP (or Mailgun env vars) must be configured before first use.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: fider_dev
|
||||||
|
Compose file path: fider_dev/compose.yaml
|
||||||
|
Additional env file (optional): fider_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" fider_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
services:
|
||||||
|
fider:
|
||||||
|
image: ${FIDER_IMAGE:-getfider/fider:stable}
|
||||||
|
restart: ${FIDER_RESTART:-unless-stopped}
|
||||||
|
environment:
|
||||||
|
- BASE_URL=${FIDER_BASE_URL:-http://localhost:3000}
|
||||||
|
- DATABASE_URL=postgres://fider:${FIDER_DB_PASSWORD:-ChangeThisPassword}@fider-db:5432/fider?sslmode=disable
|
||||||
|
- JWT_SECRET=${FIDER_JWT_SECRET:-ChangeThisPassword}
|
||||||
|
- EMAIL_NOREPLY=${FIDER_EMAIL_NOREPLY:-noreply@example.com}
|
||||||
|
- EMAIL_SMTP_HOST=${FIDER_SMTP_HOST:-smtp.example.com}
|
||||||
|
- EMAIL_SMTP_PORT=${FIDER_SMTP_PORT:-587}
|
||||||
|
- EMAIL_SMTP_USERNAME=${FIDER_SMTP_USERNAME:-user}
|
||||||
|
- EMAIL_SMTP_PASSWORD=${FIDER_SMTP_PASSWORD:-ChangeThisPassword}
|
||||||
|
ports:
|
||||||
|
- ${FIDER_PORT:-3000}:3000
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- fider-db
|
||||||
|
|
||||||
|
fider-db:
|
||||||
|
image: ${POSTGRES_IMAGE:-postgres:17-alpine}
|
||||||
|
restart: ${FIDER_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/fider/db:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=fider
|
||||||
|
- POSTGRES_USER=fider
|
||||||
|
- POSTGRES_PASSWORD=${FIDER_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Fider
|
||||||
|
VOL_PATH=/data
|
||||||
|
FIDER_IMAGE=getfider/fider:stable
|
||||||
|
POSTGRES_IMAGE=postgres:17-alpine
|
||||||
|
FIDER_RESTART=unless-stopped
|
||||||
|
FIDER_PORT=3000
|
||||||
|
FIDER_BASE_URL=http://localhost:3000
|
||||||
|
FIDER_DB_PASSWORD=ChangeThisPassword
|
||||||
|
FIDER_JWT_SECRET=ChangeThisPassword
|
||||||
|
FIDER_EMAIL_NOREPLY=noreply@example.com
|
||||||
|
FIDER_SMTP_HOST=smtp.example.com
|
||||||
|
FIDER_SMTP_PORT=587
|
||||||
|
FIDER_SMTP_USERNAME=user
|
||||||
|
FIDER_SMTP_PASSWORD=ChangeThisPassword
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# Grocy
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Self-hosted grocery, household inventory, chores, and meal planning system.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/grocy/grocy)
|
||||||
|
- **Container Image:** [linuxserver/grocy](https://docs.linuxserver.io/images/docker-grocy/)
|
||||||
|
- **Documentation:** [grocy.info](https://grocy.info/)
|
||||||
|
- **Reverse Proxy Port:** `80`
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
1. Start the container: `docker compose up -d`
|
||||||
|
2. Open http://localhost:9283 in your browser
|
||||||
|
3. Follow the initial setup wizard to configure the application
|
||||||
|
|
||||||
|
## Environment Variable Notes
|
||||||
|
|
||||||
|
GROCY_PUID / GROCY_PGID – file ownership for the config volume
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/config – application data and SQLite database
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name grocy \
|
||||||
|
-p 9283:80 \
|
||||||
|
-e TZ=America/Vancouver -e PUID=1000 -e PGID=1000 \
|
||||||
|
-v /data/grocy/config:/config \
|
||||||
|
lscr.io/linuxserver/grocy:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
Default login is admin/admin — change it after first login.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: grocy_dev
|
||||||
|
Compose file path: grocy_dev/compose.yaml
|
||||||
|
Additional env file (optional): grocy_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" grocy_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
grocy:
|
||||||
|
image: ${GROCY_IMAGE:-lscr.io/linuxserver/grocy:latest}
|
||||||
|
restart: ${GROCY_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/grocy/config:/config
|
||||||
|
environment:
|
||||||
|
- TZ=${TZ:-America/Vancouver}
|
||||||
|
- PUID=${GROCY_PUID:-1000}
|
||||||
|
- PGID=${GROCY_PGID:-1000}
|
||||||
|
ports:
|
||||||
|
- ${GROCY_PORT:-9283}:80
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Grocy
|
||||||
|
VOL_PATH=/data
|
||||||
|
TZ=America/Vancouver
|
||||||
|
GROCY_IMAGE=lscr.io/linuxserver/grocy:latest
|
||||||
|
GROCY_RESTART=unless-stopped
|
||||||
|
GROCY_PORT=9283
|
||||||
|
GROCY_PUID=1000
|
||||||
|
GROCY_PGID=1000
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# ITFlow
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
IT documentation, ticketing, and asset management platform for MSPs.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/itflow-org/itflow)
|
||||||
|
- **Container Image:** [itfloworg/itflow](https://hub.docker.com/r/itfloworg/itflow)
|
||||||
|
- **Documentation:** [docs.itflow.org](https://docs.itflow.org/installation_docker)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
ITFLOW_DB_PASSWORD – database password used by the setup wizard
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/var/www/itflow/uploads – uploaded files
|
||||||
|
/var/lib/mysql – MariaDB data
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name itflow \
|
||||||
|
-p 8080:80 \
|
||||||
|
itfloworg/itflow:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
The Docker image is community-maintained and explicitly not production-ready.
|
||||||
|
On first visit the setup wizard asks for the database host (`itflow-db`), user, and password.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: itflow_dev
|
||||||
|
Compose file path: itflow_dev/compose.yaml
|
||||||
|
Additional env file (optional): itflow_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" itflow_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
services:
|
||||||
|
itflow:
|
||||||
|
image: ${ITFLOW_IMAGE:-itfloworg/itflow:latest}
|
||||||
|
restart: ${ITFLOW_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/itflow/uploads:/var/www/itflow/uploads
|
||||||
|
ports:
|
||||||
|
- ${ITFLOW_PORT:-8080}:80
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- itflow-db
|
||||||
|
|
||||||
|
itflow-db:
|
||||||
|
image: ${MARIADB_IMAGE:-mariadb:latest}
|
||||||
|
restart: ${ITFLOW_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/itflow/db:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
- MARIADB_DATABASE=itflow
|
||||||
|
- MARIADB_USER=itflow
|
||||||
|
- MARIADB_PASSWORD=${ITFLOW_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-ChangeThisPassword}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# ITFlow
|
||||||
|
VOL_PATH=/data
|
||||||
|
ITFLOW_IMAGE=itfloworg/itflow:latest
|
||||||
|
MARIADB_IMAGE=mariadb:latest
|
||||||
|
ITFLOW_RESTART=unless-stopped
|
||||||
|
ITFLOW_PORT=8080
|
||||||
|
ITFLOW_DB_PASSWORD=ChangeThisPassword
|
||||||
|
MARIADB_ROOT_PASSWORD=ChangeThisPassword
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
# Mail Archiver
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Self-hosted email archiving, search, and export tool with multi-account folder sync.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/s1t5/mail-archiver)
|
||||||
|
- **Container Image:** [s1t5/mailarchiver](https://hub.docker.com/r/s1t5/mailarchiver)
|
||||||
|
- **Documentation:** [Setup docs](https://github.com/s1t5/mail-archiver/blob/main/doc/Setup.md)
|
||||||
|
- **Reverse Proxy Port:** `5000`
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
1. Start the container: `docker compose up -d`
|
||||||
|
2. Open http://localhost:5000 in your browser
|
||||||
|
3. Follow the initial setup wizard to configure the application
|
||||||
|
|
||||||
|
## Environment Variable Notes
|
||||||
|
|
||||||
|
MAILARCHIVER_USERNAME / MAILARCHIVER_PASSWORD – web UI admin login
|
||||||
|
MAILARCHIVER_DB_PASSWORD – must match in both the app connection string and postgres
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/var/lib/postgresql/data – PostgreSQL data (the archive itself)
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name mailarchiver \
|
||||||
|
-p 5000:5000 \
|
||||||
|
-e 'ConnectionStrings__DefaultConnection=Host=dbhost;Database=MailArchiver;Username=mailuser;Password=pass' \
|
||||||
|
-e Authentication__Username=admin -e Authentication__Password=pass \
|
||||||
|
s1t5/mailarchiver:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
No built-in HTTPS — keep behind the reverse proxy. Add mail accounts through the web UI after first login.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: mailarchiver_dev
|
||||||
|
Compose file path: mailarchiver_dev/compose.yaml
|
||||||
|
Additional env file (optional): mailarchiver_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" mailarchiver_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
services:
|
||||||
|
mailarchiver:
|
||||||
|
image: ${MAILARCHIVER_IMAGE:-s1t5/mailarchiver:latest}
|
||||||
|
restart: ${MAILARCHIVER_RESTART:-unless-stopped}
|
||||||
|
environment:
|
||||||
|
- ConnectionStrings__DefaultConnection=Host=mailarchiver-db;Database=MailArchiver;Username=mailuser;Password=${MAILARCHIVER_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
- Authentication__Username=${MAILARCHIVER_USERNAME:-admin}
|
||||||
|
- Authentication__Password=${MAILARCHIVER_PASSWORD:-ChangeThisPassword}
|
||||||
|
- TimeZone__DisplayTimeZoneId=${MAILARCHIVER_TIMEZONE:-America/Vancouver}
|
||||||
|
ports:
|
||||||
|
- ${MAILARCHIVER_PORT:-5000}:5000
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- mailarchiver-db
|
||||||
|
|
||||||
|
mailarchiver-db:
|
||||||
|
image: ${POSTGRES_IMAGE:-postgres:17-alpine}
|
||||||
|
restart: ${MAILARCHIVER_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/mailarchiver/db:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=MailArchiver
|
||||||
|
- POSTGRES_USER=mailuser
|
||||||
|
- POSTGRES_PASSWORD=${MAILARCHIVER_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Mail Archiver
|
||||||
|
VOL_PATH=/data
|
||||||
|
MAILARCHIVER_IMAGE=s1t5/mailarchiver:latest
|
||||||
|
POSTGRES_IMAGE=postgres:17-alpine
|
||||||
|
MAILARCHIVER_RESTART=unless-stopped
|
||||||
|
MAILARCHIVER_PORT=5000
|
||||||
|
MAILARCHIVER_USERNAME=admin
|
||||||
|
MAILARCHIVER_PASSWORD=ChangeThisPassword
|
||||||
|
MAILARCHIVER_DB_PASSWORD=ChangeThisPassword
|
||||||
|
MAILARCHIVER_TIMEZONE=America/Vancouver
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# Maybe Finance
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Personal finance and budgeting tool with a focus on privacy.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/maybe-finance/maybe)
|
||||||
|
- **Container Image:** [ghcr.io/maybe-finance/maybe](https://github.com/maybe-finance/maybe/pkgs/container/maybe)
|
||||||
|
- **Documentation:** [GitHub docs](https://github.com/maybe-finance/maybe/tree/main/docs)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
MAYBE_SECRET_KEY_BASE – generate with `openssl rand -hex 64`
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/rails/storage – uploaded files
|
||||||
|
/var/lib/postgresql/data – PostgreSQL data
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name maybe \
|
||||||
|
-p 3000:3000 \
|
||||||
|
-e SELF_HOSTED=true -e RAILS_FORCE_SSL=false -e RAILS_ASSUME_SSL=false \
|
||||||
|
-e SECRET_KEY_BASE=changeme \
|
||||||
|
-e DB_HOST=dbhost -e POSTGRES_USER=maybe -e POSTGRES_PASSWORD=pass -e POSTGRES_DB=maybe \
|
||||||
|
ghcr.io/maybe-finance/maybe:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
The Maybe company shut down and archived the repo — the image is frozen and receives no updates. Consider firefly_dev or paisa_dev in this repo as maintained alternatives.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: maybe_dev
|
||||||
|
Compose file path: maybe_dev/compose.yaml
|
||||||
|
Additional env file (optional): maybe_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" maybe_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
services:
|
||||||
|
maybe:
|
||||||
|
image: ${MAYBE_IMAGE:-ghcr.io/maybe-finance/maybe:latest}
|
||||||
|
restart: ${MAYBE_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/maybe/storage:/rails/storage
|
||||||
|
environment:
|
||||||
|
- SELF_HOSTED=true
|
||||||
|
- RAILS_FORCE_SSL=false
|
||||||
|
- RAILS_ASSUME_SSL=false
|
||||||
|
- SECRET_KEY_BASE=${MAYBE_SECRET_KEY_BASE:-ChangeThisPassword}
|
||||||
|
- DB_HOST=maybe-db
|
||||||
|
- POSTGRES_DB=maybe
|
||||||
|
- POSTGRES_USER=maybe
|
||||||
|
- POSTGRES_PASSWORD=${MAYBE_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
- REDIS_URL=redis://maybe-redis:6379/1
|
||||||
|
ports:
|
||||||
|
- ${MAYBE_PORT:-3000}:3000
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- maybe-db
|
||||||
|
- maybe-redis
|
||||||
|
|
||||||
|
maybe-worker:
|
||||||
|
image: ${MAYBE_IMAGE:-ghcr.io/maybe-finance/maybe:latest}
|
||||||
|
restart: ${MAYBE_RESTART:-unless-stopped}
|
||||||
|
environment:
|
||||||
|
- SELF_HOSTED=true
|
||||||
|
- SECRET_KEY_BASE=${MAYBE_SECRET_KEY_BASE:-ChangeThisPassword}
|
||||||
|
- DB_HOST=maybe-db
|
||||||
|
- POSTGRES_DB=maybe
|
||||||
|
- POSTGRES_USER=maybe
|
||||||
|
- POSTGRES_PASSWORD=${MAYBE_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
- REDIS_URL=redis://maybe-redis:6379/1
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- maybe-db
|
||||||
|
- maybe-redis
|
||||||
|
command:
|
||||||
|
- bundle
|
||||||
|
- exec
|
||||||
|
- sidekiq
|
||||||
|
|
||||||
|
maybe-db:
|
||||||
|
image: ${POSTGRES_IMAGE:-postgres:16-alpine}
|
||||||
|
restart: ${MAYBE_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/maybe/db:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=maybe
|
||||||
|
- POSTGRES_USER=maybe
|
||||||
|
- POSTGRES_PASSWORD=${MAYBE_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
maybe-redis:
|
||||||
|
image: ${REDIS_IMAGE:-redis:7-alpine}
|
||||||
|
restart: ${MAYBE_RESTART:-unless-stopped}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Maybe Finance
|
||||||
|
VOL_PATH=/data
|
||||||
|
MAYBE_IMAGE=ghcr.io/maybe-finance/maybe:latest
|
||||||
|
POSTGRES_IMAGE=postgres:16-alpine
|
||||||
|
REDIS_IMAGE=redis:7-alpine
|
||||||
|
MAYBE_RESTART=unless-stopped
|
||||||
|
MAYBE_PORT=3000
|
||||||
|
MAYBE_SECRET_KEY_BASE=ChangeThisPassword
|
||||||
|
MAYBE_DB_PASSWORD=ChangeThisPassword
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
# Notifuse
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Newsletter, marketing campaign, and transactional email platform (open-source Mailchimp/Resend alternative).
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/Notifuse/notifuse)
|
||||||
|
- **Container Image:** [notifuse/notifuse](https://hub.docker.com/r/notifuse/notifuse)
|
||||||
|
- **Documentation:** [docs.notifuse.com](https://docs.notifuse.com/self-hosting/installation)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
NOTIFUSE_SECRET_KEY – encrypts all workspace secrets; NEVER change after setup or all stored credentials are lost
|
||||||
|
NOTIFUSE_ROOT_EMAIL – initial admin account
|
||||||
|
NOTIFUSE_API_ENDPOINT – public URL of the instance
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/var/lib/postgresql/data – PostgreSQL data
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name notifuse \
|
||||||
|
-p 8080:8080 \
|
||||||
|
-e API_ENDPOINT=http://localhost:8080 \
|
||||||
|
-e ROOT_EMAIL=admin@example.com \
|
||||||
|
-e SECRET_KEY=changeme \
|
||||||
|
-e DB_HOST=dbhost -e DB_USER=notifuse -e DB_PASSWORD=pass -e DB_NAME=notifuse \
|
||||||
|
notifuse/notifuse:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
Notifuse creates a separate Postgres database per workspace, so the DB user needs CREATEDB privileges (the postgres superuser in this stack has it).
|
||||||
|
Sending requires an email provider (SES, Mailgun, SendGrid, Postmark, or SMTP) configured in the setup wizard.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: notifuse_dev
|
||||||
|
Compose file path: notifuse_dev/compose.yaml
|
||||||
|
Additional env file (optional): notifuse_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" notifuse_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
services:
|
||||||
|
notifuse:
|
||||||
|
image: ${NOTIFUSE_IMAGE:-notifuse/notifuse:latest}
|
||||||
|
restart: ${NOTIFUSE_RESTART:-unless-stopped}
|
||||||
|
environment:
|
||||||
|
- API_ENDPOINT=${NOTIFUSE_API_ENDPOINT:-http://localhost:8080}
|
||||||
|
- ROOT_EMAIL=${NOTIFUSE_ROOT_EMAIL:-admin@example.com}
|
||||||
|
- SECRET_KEY=${NOTIFUSE_SECRET_KEY:-ChangeThisPassword}
|
||||||
|
- DB_HOST=notifuse-db
|
||||||
|
- DB_PORT=5432
|
||||||
|
- DB_USER=notifuse
|
||||||
|
- DB_PASSWORD=${NOTIFUSE_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
- DB_NAME=notifuse
|
||||||
|
ports:
|
||||||
|
- ${NOTIFUSE_PORT:-8080}:8080
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- notifuse-db
|
||||||
|
|
||||||
|
notifuse-db:
|
||||||
|
image: ${POSTGRES_IMAGE:-postgres:17-alpine}
|
||||||
|
restart: ${NOTIFUSE_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/notifuse/db:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=notifuse
|
||||||
|
- POSTGRES_USER=notifuse
|
||||||
|
- POSTGRES_PASSWORD=${NOTIFUSE_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Notifuse
|
||||||
|
VOL_PATH=/data
|
||||||
|
NOTIFUSE_IMAGE=notifuse/notifuse:latest
|
||||||
|
POSTGRES_IMAGE=postgres:17-alpine
|
||||||
|
NOTIFUSE_RESTART=unless-stopped
|
||||||
|
NOTIFUSE_PORT=8080
|
||||||
|
NOTIFUSE_API_ENDPOINT=http://localhost:8080
|
||||||
|
NOTIFUSE_ROOT_EMAIL=admin@example.com
|
||||||
|
NOTIFUSE_SECRET_KEY=ChangeThisPassword
|
||||||
|
NOTIFUSE_DB_PASSWORD=ChangeThisPassword
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# Obsidian
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Local-first note-taking and knowledge management app, run as a web-accessible desktop via KasmVNC.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [obsidian.md](https://obsidian.md/)
|
||||||
|
- **Container Image:** [linuxserver/obsidian](https://docs.linuxserver.io/images/docker-obsidian/)
|
||||||
|
- **Documentation:** [help.obsidian.md](https://help.obsidian.md/)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
OBSIDIAN_PUID / OBSIDIAN_PGID – ownership of the vault files
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/config – Obsidian settings and your vaults
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name obsidian \
|
||||||
|
-p 3000:3000 \
|
||||||
|
-e TZ=America/Vancouver -e PUID=1000 -e PGID=1000 \
|
||||||
|
-v /data/obsidian/config:/config \
|
||||||
|
lscr.io/linuxserver/obsidian:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
This streams the Obsidian desktop app to your browser (KasmVNC) — it is unauthenticated by default, so keep it behind the proxy with auth. Obsidian itself is proprietary (free for personal use).
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: obsidian_dev
|
||||||
|
Compose file path: obsidian_dev/compose.yaml
|
||||||
|
Additional env file (optional): obsidian_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" obsidian_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
obsidian:
|
||||||
|
image: ${OBSIDIAN_IMAGE:-lscr.io/linuxserver/obsidian:latest}
|
||||||
|
restart: ${OBSIDIAN_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/obsidian/config:/config
|
||||||
|
environment:
|
||||||
|
- TZ=${TZ:-America/Vancouver}
|
||||||
|
- PUID=${OBSIDIAN_PUID:-1000}
|
||||||
|
- PGID=${OBSIDIAN_PGID:-1000}
|
||||||
|
ports:
|
||||||
|
- ${OBSIDIAN_PORT:-3000}:3000
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Obsidian
|
||||||
|
VOL_PATH=/data
|
||||||
|
TZ=America/Vancouver
|
||||||
|
OBSIDIAN_IMAGE=lscr.io/linuxserver/obsidian:latest
|
||||||
|
OBSIDIAN_RESTART=unless-stopped
|
||||||
|
OBSIDIAN_PORT=3000
|
||||||
|
OBSIDIAN_PUID=1000
|
||||||
|
OBSIDIAN_PGID=1000
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
# Outline
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Team knowledge base and documentation wiki.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/outline/outline)
|
||||||
|
- **Container Image:** [outlinewiki/outline](https://hub.docker.com/r/outlinewiki/outline)
|
||||||
|
- **Documentation:** [docs.getoutline.com](https://docs.getoutline.com/s/hosting)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
OUTLINE_SECRET_KEY / OUTLINE_UTILS_SECRET – generate each with `openssl rand -hex 32`
|
||||||
|
OUTLINE_URL – public URL, must match how you access it
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/var/lib/outline/data – local file/attachment storage
|
||||||
|
/var/lib/postgresql/data – PostgreSQL data
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name outline \
|
||||||
|
-p 3000:3000 \
|
||||||
|
-e URL=http://localhost:3000 \
|
||||||
|
-e SECRET_KEY=$(openssl rand -hex 32) \
|
||||||
|
-e UTILS_SECRET=$(openssl rand -hex 32) \
|
||||||
|
-e DATABASE_URL=postgres://outline:pass@dbhost:5432/outline \
|
||||||
|
-e PGSSLMODE=disable \
|
||||||
|
-e REDIS_URL=redis://redishost:6379 \
|
||||||
|
outlinewiki/outline:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
Outline has no built-in username/password login — you must configure an auth provider (OIDC, Google, Slack, etc.) via additional env vars before anyone can sign in. Authentik or Authelia from this repo work as OIDC providers.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: outline_dev
|
||||||
|
Compose file path: outline_dev/compose.yaml
|
||||||
|
Additional env file (optional): outline_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" outline_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
services:
|
||||||
|
outline:
|
||||||
|
image: ${OUTLINE_IMAGE:-outlinewiki/outline:latest}
|
||||||
|
restart: ${OUTLINE_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/outline/data:/var/lib/outline/data
|
||||||
|
environment:
|
||||||
|
- URL=${OUTLINE_URL:-http://localhost:3000}
|
||||||
|
- SECRET_KEY=${OUTLINE_SECRET_KEY:-ChangeThisPassword}
|
||||||
|
- UTILS_SECRET=${OUTLINE_UTILS_SECRET:-ChangeThisPassword}
|
||||||
|
- DATABASE_URL=postgres://outline:${OUTLINE_DB_PASSWORD:-ChangeThisPassword}@outline-db:5432/outline
|
||||||
|
- PGSSLMODE=disable
|
||||||
|
- REDIS_URL=redis://outline-redis:6379
|
||||||
|
- FILE_STORAGE=local
|
||||||
|
- FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data
|
||||||
|
ports:
|
||||||
|
- ${OUTLINE_PORT:-3000}:3000
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- outline-db
|
||||||
|
- outline-redis
|
||||||
|
|
||||||
|
outline-db:
|
||||||
|
image: ${POSTGRES_IMAGE:-postgres:16-alpine}
|
||||||
|
restart: ${OUTLINE_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/outline/db:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=outline
|
||||||
|
- POSTGRES_USER=outline
|
||||||
|
- POSTGRES_PASSWORD=${OUTLINE_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
outline-redis:
|
||||||
|
image: ${REDIS_IMAGE:-redis:7-alpine}
|
||||||
|
restart: ${OUTLINE_RESTART:-unless-stopped}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Outline
|
||||||
|
VOL_PATH=/data
|
||||||
|
OUTLINE_IMAGE=outlinewiki/outline:latest
|
||||||
|
POSTGRES_IMAGE=postgres:16-alpine
|
||||||
|
REDIS_IMAGE=redis:7-alpine
|
||||||
|
OUTLINE_RESTART=unless-stopped
|
||||||
|
OUTLINE_PORT=3000
|
||||||
|
OUTLINE_URL=http://localhost:3000
|
||||||
|
OUTLINE_SECRET_KEY=ChangeThisPassword
|
||||||
|
OUTLINE_UTILS_SECRET=ChangeThisPassword
|
||||||
|
OUTLINE_DB_PASSWORD=ChangeThisPassword
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
# Picard
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
MusicBrainz-powered music file tagging and organization tool, accessed through a web-based desktop.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/mikenye/docker-picard)
|
||||||
|
- **Container Image:** [mikenye/picard](https://hub.docker.com/r/mikenye/picard)
|
||||||
|
- **Documentation:** [picard.musicbrainz.org](https://picard.musicbrainz.org/)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
PICARD_MUSIC – host path to your music library
|
||||||
|
PICARD_PUID / PICARD_PGID – ownership for written tags/files
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/config – Picard settings
|
||||||
|
/storage – your music library
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name picard \
|
||||||
|
-p 5800:5800 \
|
||||||
|
-e TZ=America/Vancouver \
|
||||||
|
-v /data/picard/config:/config:rw \
|
||||||
|
-v /data/media/music:/storage:rw \
|
||||||
|
mikenye/picard:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
This is a GUI app streamed to the browser via VNC — it is single-user and unauthenticated by default; keep it behind the proxy.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: picard_dev
|
||||||
|
Compose file path: picard_dev/compose.yaml
|
||||||
|
Additional env file (optional): picard_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" picard_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
services:
|
||||||
|
picard:
|
||||||
|
image: ${PICARD_IMAGE:-mikenye/picard:latest}
|
||||||
|
restart: ${PICARD_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/picard/config:/config:rw
|
||||||
|
- ${PICARD_MUSIC:-/data/media/music}:/storage:rw
|
||||||
|
environment:
|
||||||
|
- TZ=${TZ:-America/Vancouver}
|
||||||
|
- USER_ID=${PICARD_PUID:-1000}
|
||||||
|
- GROUP_ID=${PICARD_PGID:-1000}
|
||||||
|
ports:
|
||||||
|
- ${PICARD_PORT:-5800}:5800
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Picard
|
||||||
|
VOL_PATH=/data
|
||||||
|
TZ=America/Vancouver
|
||||||
|
PICARD_IMAGE=mikenye/picard:latest
|
||||||
|
PICARD_RESTART=unless-stopped
|
||||||
|
PICARD_PORT=5800
|
||||||
|
PICARD_PUID=1000
|
||||||
|
PICARD_PGID=1000
|
||||||
|
PICARD_MUSIC=/data/media/music
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
# Portus
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Web UI and authorization service for on-premise Docker registries.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/SUSE/Portus)
|
||||||
|
- **Container Image:** [opensuse/portus](https://hub.docker.com/r/opensuse/portus/)
|
||||||
|
- **Documentation:** [port.us.org](http://port.us.org/)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
PORTUS_FQDN – hostname Portus is reached at (must match registry config)
|
||||||
|
PORTUS_SECRET_KEY_BASE – generate with `openssl rand -hex 64`
|
||||||
|
PORTUS_PASSWORD – internal password Portus uses to talk to the registry
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/var/lib/mysql – MariaDB data
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name portus \
|
||||||
|
-p 3000:3000 \
|
||||||
|
-e PORTUS_MACHINE_FQDN_VALUE=portus.localhost \
|
||||||
|
-e PORTUS_SECRET_KEY_BASE=changeme \
|
||||||
|
-e PORTUS_PASSWORD=changeme \
|
||||||
|
-e PORTUS_DB_HOST=dbhost \
|
||||||
|
opensuse/portus:2.5
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
Portus was abandoned by openSUSE/SUSE years ago — kept here for reference only. It also needs a Docker registry container configured with Portus as its token auth endpoint (not included). For a maintained registry UI consider Harbor or the built-in gitea registry.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: portus_dev
|
||||||
|
Compose file path: portus_dev/compose.yaml
|
||||||
|
Additional env file (optional): portus_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" portus_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
services:
|
||||||
|
portus:
|
||||||
|
image: ${PORTUS_IMAGE:-opensuse/portus:2.5}
|
||||||
|
restart: ${PORTUS_RESTART:-unless-stopped}
|
||||||
|
environment:
|
||||||
|
- PORTUS_MACHINE_FQDN_VALUE=${PORTUS_FQDN:-portus.localhost}
|
||||||
|
- PORTUS_SECRET_KEY_BASE=${PORTUS_SECRET_KEY_BASE:-ChangeThisPassword}
|
||||||
|
- PORTUS_KEY_PATH=/certificates/portus.key
|
||||||
|
- PORTUS_PASSWORD=${PORTUS_PASSWORD:-ChangeThisPassword}
|
||||||
|
- PORTUS_DB_HOST=portus-db
|
||||||
|
- PORTUS_DB_DATABASE=portus
|
||||||
|
- PORTUS_DB_USERNAME=portus
|
||||||
|
- PORTUS_DB_PASSWORD=${PORTUS_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
- PORTUS_CHECK_SSL_USAGE_ENABLED=false
|
||||||
|
ports:
|
||||||
|
- ${PORTUS_PORT:-3000}:3000
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- portus-db
|
||||||
|
|
||||||
|
portus-db:
|
||||||
|
image: ${MARIADB_IMAGE:-mariadb:10.11}
|
||||||
|
restart: ${PORTUS_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/portus/db:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
- MARIADB_DATABASE=portus
|
||||||
|
- MARIADB_USER=portus
|
||||||
|
- MARIADB_PASSWORD=${PORTUS_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-ChangeThisPassword}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Portus
|
||||||
|
VOL_PATH=/data
|
||||||
|
PORTUS_IMAGE=opensuse/portus:2.5
|
||||||
|
MARIADB_IMAGE=mariadb:10.11
|
||||||
|
PORTUS_RESTART=unless-stopped
|
||||||
|
PORTUS_PORT=3000
|
||||||
|
PORTUS_FQDN=portus.localhost
|
||||||
|
PORTUS_SECRET_KEY_BASE=ChangeThisPassword
|
||||||
|
PORTUS_PASSWORD=ChangeThisPassword
|
||||||
|
PORTUS_DB_PASSWORD=ChangeThisPassword
|
||||||
|
MARIADB_ROOT_PASSWORD=ChangeThisPassword
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
# Sencho
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Self-hosted, multi-node Docker Compose management dashboard.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/Studio-Saelix/sencho)
|
||||||
|
- **Container Image:** [saelix/sencho](https://hub.docker.com/r/saelix/sencho)
|
||||||
|
- **Documentation:** [docs.sencho.io](https://docs.sencho.io/)
|
||||||
|
- **Reverse Proxy Port:** `1852`
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
1. Start the container: `docker compose up -d`
|
||||||
|
2. Open http://localhost:1852 in your browser
|
||||||
|
3. Follow the initial setup wizard to configure the application
|
||||||
|
|
||||||
|
## Environment Variable Notes
|
||||||
|
|
||||||
|
SENCHO_COMPOSE_DIR – host directory where compose stacks live (source of truth)
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/data – Sencho application data
|
||||||
|
/compose – your compose stacks on the host filesystem
|
||||||
|
/var/run/docker.sock – Docker socket (required)
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name sencho \
|
||||||
|
-p 1852:1852 \
|
||||||
|
-e COMPOSE_DIR=/compose -e DATA_DIR=/data \
|
||||||
|
-v /data/sencho/data:/data \
|
||||||
|
-v /data/compose:/compose \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
saelix/sencho:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
Sencho overlaps heavily with Dockhand (the manager this repo is built around) — treat this stack as an evaluation/experiment, not a replacement.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: sencho_dev
|
||||||
|
Compose file path: sencho_dev/compose.yaml
|
||||||
|
Additional env file (optional): sencho_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" sencho_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
services:
|
||||||
|
sencho:
|
||||||
|
image: ${SENCHO_IMAGE:-saelix/sencho:latest}
|
||||||
|
restart: ${SENCHO_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/sencho/data:/data
|
||||||
|
- ${SENCHO_COMPOSE_DIR:-/data/compose}:/compose
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
environment:
|
||||||
|
- COMPOSE_DIR=/compose
|
||||||
|
- DATA_DIR=/data
|
||||||
|
ports:
|
||||||
|
- ${SENCHO_PORT:-1852}:1852
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# Sencho
|
||||||
|
VOL_PATH=/data
|
||||||
|
SENCHO_IMAGE=saelix/sencho:latest
|
||||||
|
SENCHO_RESTART=unless-stopped
|
||||||
|
SENCHO_PORT=1852
|
||||||
|
SENCHO_COMPOSE_DIR=/data/compose
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
# Silverpeas
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Enterprise collaboration platform: intranet, document sharing, and communication tools.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [silverpeas.org](https://www.silverpeas.org/)
|
||||||
|
- **Container Image:** [silverpeas](https://hub.docker.com/_/silverpeas)
|
||||||
|
- **Documentation:** [Docker Hub](https://hub.docker.com/_/silverpeas)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
SILVERPEAS_DB_PASSWORD – shared between the app and postgres
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/opt/silverpeas/data – documents and application data
|
||||||
|
/opt/silverpeas/log – logs
|
||||||
|
/var/lib/postgresql/data – PostgreSQL data
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name silverpeas \
|
||||||
|
-p 8000:8000 \
|
||||||
|
-e DB_SERVERTYPE=POSTGRESQL -e DB_SERVER=dbhost \
|
||||||
|
-e DB_NAME=silverpeas -e DB_USER=silverpeas -e DB_PASSWORD=pass \
|
||||||
|
silverpeas:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
The app is served under the `/silverpeas` path (http://localhost:8000/silverpeas). Default admin is SilverAdmin/SilverAdmin — change it.
|
||||||
|
First startup is slow (Wildfly + DB migration).
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: silverpeas_dev
|
||||||
|
Compose file path: silverpeas_dev/compose.yaml
|
||||||
|
Additional env file (optional): silverpeas_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" silverpeas_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
services:
|
||||||
|
silverpeas:
|
||||||
|
image: ${SILVERPEAS_IMAGE:-silverpeas:latest}
|
||||||
|
restart: ${SILVERPEAS_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/silverpeas/data:/opt/silverpeas/data
|
||||||
|
- ${VOL_PATH:-/data}/silverpeas/log:/opt/silverpeas/log
|
||||||
|
environment:
|
||||||
|
- DB_SERVERTYPE=POSTGRESQL
|
||||||
|
- DB_SERVER=silverpeas-db
|
||||||
|
- DB_NAME=silverpeas
|
||||||
|
- DB_USER=silverpeas
|
||||||
|
- DB_PASSWORD=${SILVERPEAS_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
ports:
|
||||||
|
- ${SILVERPEAS_PORT:-8000}:8000
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- silverpeas-db
|
||||||
|
|
||||||
|
silverpeas-db:
|
||||||
|
image: ${POSTGRES_IMAGE:-postgres:16-alpine}
|
||||||
|
restart: ${SILVERPEAS_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/silverpeas/db:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=silverpeas
|
||||||
|
- POSTGRES_USER=silverpeas
|
||||||
|
- POSTGRES_PASSWORD=${SILVERPEAS_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Silverpeas
|
||||||
|
VOL_PATH=/data
|
||||||
|
SILVERPEAS_IMAGE=silverpeas:latest
|
||||||
|
POSTGRES_IMAGE=postgres:16-alpine
|
||||||
|
SILVERPEAS_RESTART=unless-stopped
|
||||||
|
SILVERPEAS_PORT=8000
|
||||||
|
SILVERPEAS_DB_PASSWORD=ChangeThisPassword
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
# Tdarr
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Distributed media transcoding and library automation (part of the *rr media stack).
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/HaveAGitGat/Tdarr)
|
||||||
|
- **Container Image:** [ghcr.io/haveagitgat/tdarr](https://github.com/HaveAGitGat/Tdarr/pkgs/container/tdarr)
|
||||||
|
- **Documentation:** [Docs](https://docs.tdarr.io/)
|
||||||
|
- **Reverse Proxy Port:** `8265`
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
1. Start the container: `docker compose up -d`
|
||||||
|
2. Open http://localhost:8265 in your browser
|
||||||
|
3. Follow the initial setup wizard to configure the application
|
||||||
|
|
||||||
|
## Environment Variable Notes
|
||||||
|
|
||||||
|
TDARR_MEDIA – host path to your media library
|
||||||
|
TDARR_SERVER_PORT – internal server port used by nodes (8266)
|
||||||
|
TDARR_NODE_NAME – name of the built-in internal node
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/app/server – Tdarr server data
|
||||||
|
/app/configs – configuration
|
||||||
|
/app/logs – logs
|
||||||
|
/temp – transcode cache (use fast storage)
|
||||||
|
/media – your media library
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name tdarr \
|
||||||
|
-p 8265:8265 -p 8266:8266 \
|
||||||
|
-e TZ=America/Vancouver \
|
||||||
|
-e serverIP=0.0.0.0 -e serverPort=8266 -e webUIPort=8265 \
|
||||||
|
-e internalNode=true -e inContainer=true \
|
||||||
|
-v /data/tdarr/server:/app/server \
|
||||||
|
-v /data/tdarr/configs:/app/configs \
|
||||||
|
-v /data/media:/media \
|
||||||
|
ghcr.io/haveagitgat/tdarr:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
For hardware transcoding pass through your GPU (e.g. `--gpus all` or `/dev/dri`); not included in this compose file.
|
||||||
|
Extra transcode nodes can join by pointing at port 8266.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: tdarr_dev
|
||||||
|
Compose file path: tdarr_dev/compose.yaml
|
||||||
|
Additional env file (optional): tdarr_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" tdarr_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
services:
|
||||||
|
tdarr:
|
||||||
|
image: ${TDARR_IMAGE:-ghcr.io/haveagitgat/tdarr:latest}
|
||||||
|
restart: ${TDARR_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/tdarr/server:/app/server
|
||||||
|
- ${VOL_PATH:-/data}/tdarr/configs:/app/configs
|
||||||
|
- ${VOL_PATH:-/data}/tdarr/logs:/app/logs
|
||||||
|
- ${VOL_PATH:-/data}/tdarr/cache:/temp
|
||||||
|
- ${TDARR_MEDIA:-/data/media}:/media
|
||||||
|
environment:
|
||||||
|
- TZ=${TZ:-America/Vancouver}
|
||||||
|
- serverIP=0.0.0.0
|
||||||
|
- serverPort=${TDARR_SERVER_PORT:-8266}
|
||||||
|
- webUIPort=${TDARR_PORT:-8265}
|
||||||
|
- internalNode=true
|
||||||
|
- inContainer=true
|
||||||
|
- nodeName=${TDARR_NODE_NAME:-InternalNode}
|
||||||
|
ports:
|
||||||
|
- ${TDARR_PORT:-8265}:8265
|
||||||
|
- ${TDARR_SERVER_PORT:-8266}:8266
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Tdarr
|
||||||
|
VOL_PATH=/data
|
||||||
|
TZ=America/Vancouver
|
||||||
|
TDARR_IMAGE=ghcr.io/haveagitgat/tdarr:latest
|
||||||
|
TDARR_RESTART=unless-stopped
|
||||||
|
TDARR_PORT=8265
|
||||||
|
TDARR_SERVER_PORT=8266
|
||||||
|
TDARR_NODE_NAME=InternalNode
|
||||||
|
TDARR_MEDIA=/data/media
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# Tinyauth
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Minimal authentication proxy middleware for securing apps behind a login screen.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/steveiliop56/tinyauth)
|
||||||
|
- **Container Image:** [ghcr.io/steveiliop56/tinyauth](https://github.com/steveiliop56/tinyauth/pkgs/container/tinyauth)
|
||||||
|
- **Documentation:** [tinyauth.app](https://tinyauth.app/docs/getting-started/)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
TINYAUTH_APPURL – public URL of the tinyauth instance
|
||||||
|
TINYAUTH_AUTH_USERS – user:bcrypt-hash pairs; generate with `docker run -i -t --rm ghcr.io/steveiliop56/tinyauth:v5 user create --interactive`
|
||||||
|
Note: `$` in bcrypt hashes must be escaped as `$$` inside compose files
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
None — tinyauth is stateless
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name tinyauth \
|
||||||
|
-p 3000:3000 \
|
||||||
|
-e TINYAUTH_APPURL=http://localhost:3000 \
|
||||||
|
-e 'TINYAUTH_AUTH_USERS=user:$2a$10$hash' \
|
||||||
|
ghcr.io/steveiliop56/tinyauth:v5
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
Tinyauth is forward-auth middleware — it protects apps via your reverse proxy (Traefik/NPM/Caddy) rather than being visited directly. Nginx Proxy Manager guide: https://tinyauth.app/docs/guides/nginx-proxy-manager/
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: tinyauth_dev
|
||||||
|
Compose file path: tinyauth_dev/compose.yaml
|
||||||
|
Additional env file (optional): tinyauth_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" tinyauth_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
services:
|
||||||
|
tinyauth:
|
||||||
|
image: ${TINYAUTH_IMAGE:-ghcr.io/steveiliop56/tinyauth:v5}
|
||||||
|
restart: ${TINYAUTH_RESTART:-unless-stopped}
|
||||||
|
environment:
|
||||||
|
- TINYAUTH_APPURL=${TINYAUTH_APPURL:-http://localhost:3000}
|
||||||
|
- TINYAUTH_AUTH_USERS=${TINYAUTH_AUTH_USERS:-user:$$2a$$10$$ReplaceWithBcryptHash}
|
||||||
|
ports:
|
||||||
|
- ${TINYAUTH_PORT:-3000}:3000
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Tinyauth
|
||||||
|
VOL_PATH=/data
|
||||||
|
TINYAUTH_IMAGE=ghcr.io/steveiliop56/tinyauth:v5
|
||||||
|
TINYAUTH_RESTART=unless-stopped
|
||||||
|
TINYAUTH_PORT=3000
|
||||||
|
TINYAUTH_APPURL=http://localhost:3000
|
||||||
|
TINYAUTH_AUTH_USERS=user:$2a$10$ReplaceWithBcryptHash
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
# Traefik
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Modern reverse proxy and load balancer designed for microservices and Docker environments.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/traefik/traefik)
|
||||||
|
- **Container Image:** [traefik](https://hub.docker.com/_/traefik)
|
||||||
|
- **Documentation:** [doc.traefik.io](https://doc.traefik.io/traefik/)
|
||||||
|
- **Reverse Proxy Port:** `8080` (dashboard)
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
TRAEFIK_HTTP_PORT / TRAEFIK_HTTPS_PORT – entrypoint ports
|
||||||
|
TRAEFIK_DASHBOARD_PORT – dashboard/API port
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/var/run/docker.sock – read-only Docker socket for service discovery
|
||||||
|
/letsencrypt – ACME certificate storage
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name traefik \
|
||||||
|
-p 80:80 -p 443:443 -p 8080:8080 \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock:ro \
|
||||||
|
traefik:v3 \
|
||||||
|
--api.insecure=true --providers.docker=true \
|
||||||
|
--providers.docker.exposedbydefault=false \
|
||||||
|
--entrypoints.web.address=:80 --entrypoints.websecure.address=:443
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
This repo assumes Nginx Proxy Manager as the main reverse proxy — running Traefik alongside it will conflict on ports 80/443 unless you change them.
|
||||||
|
`--api.insecure=true` exposes the dashboard without auth; do not expose port 8080 publicly.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: traefik_dev
|
||||||
|
Compose file path: traefik_dev/compose.yaml
|
||||||
|
Additional env file (optional): traefik_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" traefik_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
image: ${TRAEFIK_IMAGE:-traefik:v3}
|
||||||
|
restart: ${TRAEFIK_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
- ${VOL_PATH:-/data}/traefik/letsencrypt:/letsencrypt
|
||||||
|
ports:
|
||||||
|
- ${TRAEFIK_HTTP_PORT:-80}:80
|
||||||
|
- ${TRAEFIK_HTTPS_PORT:-443}:443
|
||||||
|
- ${TRAEFIK_DASHBOARD_PORT:-8080}:8080
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
command:
|
||||||
|
- --api.insecure=true
|
||||||
|
- --providers.docker=true
|
||||||
|
- --providers.docker.exposedbydefault=false
|
||||||
|
- --entrypoints.web.address=:80
|
||||||
|
- --entrypoints.websecure.address=:443
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Traefik
|
||||||
|
VOL_PATH=/data
|
||||||
|
TRAEFIK_IMAGE=traefik:v3
|
||||||
|
TRAEFIK_RESTART=unless-stopped
|
||||||
|
TRAEFIK_HTTP_PORT=80
|
||||||
|
TRAEFIK_HTTPS_PORT=443
|
||||||
|
TRAEFIK_DASHBOARD_PORT=8080
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# Tugtainer
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Web UI alternative to Watchtower for checking and automating Docker container image updates.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/Quenary/tugtainer)
|
||||||
|
- **Container Image:** [ghcr.io/quenary/tugtainer](https://github.com/Quenary/tugtainer/pkgs/container/tugtainer)
|
||||||
|
- **Documentation:** [GitHub README](https://github.com/Quenary/tugtainer)
|
||||||
|
- **Reverse Proxy Port:** `80`
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
1. Start the container: `docker compose up -d`
|
||||||
|
2. Open http://localhost:9412 in your browser
|
||||||
|
3. Follow the initial setup wizard to configure the application
|
||||||
|
|
||||||
|
## Environment Variable Notes
|
||||||
|
|
||||||
|
TUGTAINER_PORT – host port for the web UI
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/tugtainer – application data
|
||||||
|
/var/run/docker.sock – read-only Docker socket (required)
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name tugtainer \
|
||||||
|
-p 9412:80 \
|
||||||
|
-v /data/tugtainer:/tugtainer \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock:ro \
|
||||||
|
ghcr.io/quenary/tugtainer:1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
Upstream states the project is not production-ready — home lab use only.
|
||||||
|
It is dependency-aware and can update compose stacks in the right order.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: tugtainer_dev
|
||||||
|
Compose file path: tugtainer_dev/compose.yaml
|
||||||
|
Additional env file (optional): tugtainer_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" tugtainer_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
services:
|
||||||
|
tugtainer:
|
||||||
|
image: ${TUGTAINER_IMAGE:-ghcr.io/quenary/tugtainer:1}
|
||||||
|
restart: ${TUGTAINER_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/tugtainer:/tugtainer
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
ports:
|
||||||
|
- ${TUGTAINER_PORT:-9412}:80
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Tugtainer
|
||||||
|
VOL_PATH=/data
|
||||||
|
TUGTAINER_IMAGE=ghcr.io/quenary/tugtainer:1
|
||||||
|
TUGTAINER_RESTART=unless-stopped
|
||||||
|
TUGTAINER_PORT=9412
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
# Twenty CRM
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Modern open-source CRM system for managing customers and pipelines.
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/twentyhq/twenty)
|
||||||
|
- **Container Image:** [twentycrm/twenty](https://hub.docker.com/r/twentycrm/twenty)
|
||||||
|
- **Documentation:** [twenty.com](https://twenty.com/developers/section/self-hosting)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
TWENTY_APP_SECRET – generate with `openssl rand -base64 32`
|
||||||
|
TWENTY_SERVER_URL – public URL of the instance
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/app/packages/twenty-server/.local-storage – uploaded files (shared by server and worker)
|
||||||
|
/var/lib/postgresql/data – PostgreSQL data
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name twenty \
|
||||||
|
-p 3000:3000 \
|
||||||
|
-e SERVER_URL=http://localhost:3000 \
|
||||||
|
-e APP_SECRET=changeme \
|
||||||
|
-e PG_DATABASE_URL=postgres://twenty:pass@dbhost:5432/default \
|
||||||
|
-e REDIS_URL=redis://redishost:6379 \
|
||||||
|
twentycrm/twenty:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
The worker container is required for background jobs (sync, imports). Both containers must share the same APP_SECRET and storage volume.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: twenty_dev
|
||||||
|
Compose file path: twenty_dev/compose.yaml
|
||||||
|
Additional env file (optional): twenty_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" twenty_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
services:
|
||||||
|
twenty:
|
||||||
|
image: ${TWENTY_IMAGE:-twentycrm/twenty:latest}
|
||||||
|
restart: ${TWENTY_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/twenty/data:/app/packages/twenty-server/.local-storage
|
||||||
|
environment:
|
||||||
|
- SERVER_URL=${TWENTY_SERVER_URL:-http://localhost:3000}
|
||||||
|
- APP_SECRET=${TWENTY_APP_SECRET:-ChangeThisPassword}
|
||||||
|
- PG_DATABASE_URL=postgres://twenty:${TWENTY_DB_PASSWORD:-ChangeThisPassword}@twenty-db:5432/default
|
||||||
|
- REDIS_URL=redis://twenty-redis:6379
|
||||||
|
ports:
|
||||||
|
- ${TWENTY_PORT:-3000}:3000
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- twenty-db
|
||||||
|
- twenty-redis
|
||||||
|
|
||||||
|
twenty-worker:
|
||||||
|
image: ${TWENTY_IMAGE:-twentycrm/twenty:latest}
|
||||||
|
restart: ${TWENTY_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/twenty/data:/app/packages/twenty-server/.local-storage
|
||||||
|
environment:
|
||||||
|
- SERVER_URL=${TWENTY_SERVER_URL:-http://localhost:3000}
|
||||||
|
- APP_SECRET=${TWENTY_APP_SECRET:-ChangeThisPassword}
|
||||||
|
- PG_DATABASE_URL=postgres://twenty:${TWENTY_DB_PASSWORD:-ChangeThisPassword}@twenty-db:5432/default
|
||||||
|
- REDIS_URL=redis://twenty-redis:6379
|
||||||
|
- DISABLE_DB_MIGRATIONS=true
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- twenty-db
|
||||||
|
- twenty-redis
|
||||||
|
command:
|
||||||
|
- yarn
|
||||||
|
- worker:prod
|
||||||
|
|
||||||
|
twenty-db:
|
||||||
|
image: ${POSTGRES_IMAGE:-postgres:16-alpine}
|
||||||
|
restart: ${TWENTY_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/twenty/db:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=default
|
||||||
|
- POSTGRES_USER=twenty
|
||||||
|
- POSTGRES_PASSWORD=${TWENTY_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
twenty-redis:
|
||||||
|
image: ${REDIS_IMAGE:-redis:7-alpine}
|
||||||
|
restart: ${TWENTY_RESTART:-unless-stopped}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Twenty CRM
|
||||||
|
VOL_PATH=/data
|
||||||
|
TWENTY_IMAGE=twentycrm/twenty:latest
|
||||||
|
POSTGRES_IMAGE=postgres:16-alpine
|
||||||
|
REDIS_IMAGE=redis:7-alpine
|
||||||
|
TWENTY_RESTART=unless-stopped
|
||||||
|
TWENTY_PORT=3000
|
||||||
|
TWENTY_SERVER_URL=http://localhost:3000
|
||||||
|
TWENTY_APP_SECRET=ChangeThisPassword
|
||||||
|
TWENTY_DB_PASSWORD=ChangeThisPassword
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# VoidAuth
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Lightweight self-hosted authentication system (SSO / identity provider).
|
||||||
|
|
||||||
|
## Project Details
|
||||||
|
|
||||||
|
- **Project Repository:** [GitHub](https://github.com/voidauth/voidauth)
|
||||||
|
- **Container Image:** [voidauth/voidauth](https://hub.docker.com/r/voidauth/voidauth)
|
||||||
|
- **Documentation:** [voidauth.app](https://voidauth.app/)
|
||||||
|
- **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
|
||||||
|
|
||||||
|
VOIDAUTH_STORAGE_KEY – encryption key, generate with `openssl rand -hex 32`; do not change after setup
|
||||||
|
VOIDAUTH_APP_URL – public URL of the instance
|
||||||
|
|
||||||
|
## Volume Notes
|
||||||
|
|
||||||
|
/var/lib/postgresql/data – PostgreSQL data
|
||||||
|
|
||||||
|
## Network Notes
|
||||||
|
|
||||||
|
Requires proxy network
|
||||||
|
|
||||||
|
## Docker Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name voidauth \
|
||||||
|
-p 3000:3000 \
|
||||||
|
-e APP_URL=http://localhost:3000 \
|
||||||
|
-e STORAGE_KEY=changeme \
|
||||||
|
-e DB_HOST=dbhost -e DB_PASSWORD=pass \
|
||||||
|
voidauth/voidauth:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Notes / Gotchas
|
||||||
|
|
||||||
|
See also authentik_dev, authelia_dev, and tinyauth_dev in this repo for alternative auth stacks.
|
||||||
|
|
||||||
|
## Dockhand Stack, Deploy from Git
|
||||||
|
|
||||||
|
Cookbooks Repository
|
||||||
|
stackname: voidauth_dev
|
||||||
|
Compose file path: voidauth_dev/compose.yaml
|
||||||
|
Additional env file (optional): voidauth_dev/sample.env
|
||||||
|
|
||||||
|
Then "Load" voidauth_dev/sample.env into the Environmental variables in dockhand
|
||||||
|
|
||||||
|
Create the Stack
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
services:
|
||||||
|
voidauth:
|
||||||
|
image: ${VOIDAUTH_IMAGE:-voidauth/voidauth:latest}
|
||||||
|
restart: ${VOIDAUTH_RESTART:-unless-stopped}
|
||||||
|
environment:
|
||||||
|
- APP_URL=${VOIDAUTH_APP_URL:-http://localhost:3000}
|
||||||
|
- STORAGE_KEY=${VOIDAUTH_STORAGE_KEY:-ChangeThisPassword}
|
||||||
|
- DB_HOST=voidauth-db
|
||||||
|
- DB_PASSWORD=${VOIDAUTH_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
ports:
|
||||||
|
- ${VOIDAUTH_PORT:-3000}:3000
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- internal
|
||||||
|
depends_on:
|
||||||
|
- voidauth-db
|
||||||
|
|
||||||
|
voidauth-db:
|
||||||
|
image: ${POSTGRES_IMAGE:-postgres:17-alpine}
|
||||||
|
restart: ${VOIDAUTH_RESTART:-unless-stopped}
|
||||||
|
volumes:
|
||||||
|
- ${VOL_PATH:-/data}/voidauth/db:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=voidauth
|
||||||
|
- POSTGRES_USER=postgres
|
||||||
|
- POSTGRES_PASSWORD=${VOIDAUTH_DB_PASSWORD:-ChangeThisPassword}
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
internal:
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# VoidAuth
|
||||||
|
VOL_PATH=/data
|
||||||
|
VOIDAUTH_IMAGE=voidauth/voidauth:latest
|
||||||
|
POSTGRES_IMAGE=postgres:17-alpine
|
||||||
|
VOIDAUTH_RESTART=unless-stopped
|
||||||
|
VOIDAUTH_PORT=3000
|
||||||
|
VOIDAUTH_APP_URL=http://localhost:3000
|
||||||
|
VOIDAUTH_STORAGE_KEY=ChangeThisPassword
|
||||||
|
VOIDAUTH_DB_PASSWORD=ChangeThisPassword
|
||||||
Reference in New Issue
Block a user