fix remaining non-_dev stacks: bookstack, gitea, heimdall, invokeai, n8n, nextcloud, opencode, paperless, pihole, qbittorrent, stash

This commit is contained in:
openhands
2026-07-16 05:08:05 +00:00
parent 366709ddd8
commit 90544d19de
22 changed files with 211 additions and 221 deletions
+14 -20
View File
@@ -1,12 +1,10 @@
services:
bookstack:
image: ${BOOKSTACK_IMAGE:-solidnerd/bookstack:latest}
restart: unless-stopped
depends_on:
- mariadb
restart: ${BOOKSTACK_RESTART:-unless-stopped}
volumes:
- bookstack-storage:/var/www/bookstack/storage/uploads
- bookstack-uploads:/var/www/bookstack/public/uploads
- ${VOL_PATH}/bookstack/uploads:/var/www/bookstack/storage/uploads
- ${VOL_PATH}/bookstack/public:/var/www/bookstack/public/uploads
environment:
- APP_KEY=${BOOKSTACK_APP_KEY:-APP_KEY}
- APP_TIMEZONE=${BOOKSTACK_APP_TIMEZONE:-America/Vancouver}
@@ -17,32 +15,28 @@ services:
- DB_USERNAME=${BOOKSTACK_DB_USERNAME:-dbuser}
- REVISION_LIMIT=${BOOKSTACK_REVISION_LIMIT:-false}
ports:
- "8080:8080"
- ${BOOKSTACK_PORT:-8080}:8080
networks:
- proxy
- internal
depends_on:
- mariadb
mariadb:
image: ${MARIADB_IMAGE:-mariadb:latest}
restart: unless-stopped
restart: ${MARIADB_RESTART:-unless-stopped}
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed
environment:
- MARIADB_DATABASE=${MARIADB_MARIADB_DATABASE:-bookstack}
- MARIADB_ROOT_PASSWORD=${MARIADB_MARIADB_ROOT_PASSWORD:-ChangeThisPassword}
- MARIADB_USER=${MARIADB_MARIADB_USER:-dbuser}
- MARIADB_PASSWORD=${MARIADB_MARIADB_PASSWORD:-AlsoChangeThisPassword}
volumes:
- mariadb-data:/var/lib/mysql
- ${VOL_PATH}/bookstack/db:/var/lib/mysql
environment:
- MARIADB_DATABASE=${BOOKSTACK_DB_DATABASE:-bookstack}
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-ChangeThisPassword}
- MARIADB_USER=${BOOKSTACK_DB_USERNAME:-dbuser}
- MARIADB_PASSWORD=${BOOKSTACK_DB_PASSWORD:-AlsoChangeThisPassword}
networks:
- internal
volumes:
bookstack-php-config:
bookstack-storage:
bookstack-uploads:
mariadb-data:
networks:
proxy:
external: true
internal:
internal:
+9 -10
View File
@@ -1,18 +1,17 @@
# Compose
VOL_PATH=/data
BOOKSTACK_IMAGE=solidnerd/bookstack:latest
BOOKSTACK_RESTART=unless-stopped
BOOKSTACK_PORT=8080
MARIADB_IMAGE=mariadb:latest
MARIADB_RESTART=unless-stopped
MARIADB_ROOT_PASSWORD=ChangeThisPassword
# Bookstack
BOOKSTACK_APP_KEY=APP_KEY
BOOKSTACK_APP_TIMEZONE=America/Vancouver
BOOKSTACK_APP_URL=http://localhost:8080
BOOKSTACK_DB_DATABASE=bookstack
BOOKSTACK_DB_HOST=mariadb:3306
BOOKSTACK_DB_PASSWORD=dbpass
BOOKSTACK_DB_USERNAME=dbuser
BOOKSTACK_IMAGE=solidnerd/bookstack:latest
BOOKSTACK_REVISION_LIMIT=false
# MariaDB
MARIADB_IMAGE=mariadb:latest
MARIADB_MARIADB_DATABASE=bookstack
MARIADB_MARIADB_ROOT_PASSWORD=ChangeThisPassword
MARIADB_MARIADB_USER=dbuser
MARIADB_MARIADB_PASSWORD=AlsoChangeThisPassword
+14 -20
View File
@@ -1,12 +1,9 @@
# Gitea
services:
gitea:
image: ${GITEA_IMAGE}
image: ${GITEA_IMAGE:-gitea/gitea:latest}
restart: ${GITEA_RESTART:-always}
volumes:
- ${VOL_PATH}/gitea/gitea:/data
- ${VOL_PATH}/gitea/data:/data
environment:
- USER_UID=1000
- USER_GID=1000
@@ -22,32 +19,29 @@ services:
- GITEA__server__SSH_PORT=${GITEA_SSH_PORT:-22}
- ENABLE_SWAGGER=true
- MAX_RESPONSE_ITEMS=15
ports:
- ${GITEA_HOST_SSH_PORT:-22}:${GITEA_SSH_PORT:-22}
- ${GITEA_WEB_PORT:-3000}:3000
- ${GITEA_SSH_PORT:-22}:22
- ${GITEA_PORT:-3000}:3000
networks:
- proxy
- db
- internal
depends_on:
- gitea-db
gitea-db:
image: ${MARIA_IMAGE:-mariadb:latest}
restart: ${GITEA_RESTART:-always}
image: ${MARIADB_IMAGE:-mariadb:latest}
restart: ${MARIADB_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH}/gitea/gitea-db:/var/lib/mysql
- ${VOL_PATH}/gitea/db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MARIA_ROOT:-changeMe}
MYSQL_USER: ${GITEA_DB_USER:-gitea}
MYSQL_PASSWORD: ${GITEA_DB_PASS:-changeMe}
MYSQL_DATABASE: ${GITEA_DB_NAME:-gitea}
TZ: ${TZ:-America/Vancouver}
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-changeMe}
- MARIADB_USER=${GITEA_DB_USER:-gitea}
- MARIADB_PASSWORD=${GITEA_DB_PASS:-changeMe}
- MARIADB_DATABASE=${GITEA_DB_NAME:-gitea}
networks:
- db
- internal
networks:
proxy:
external: true
db:
driver: bridge
internal:
+8 -9
View File
@@ -1,20 +1,19 @@
# Compose
VOL_PATH=/data
GITEA_IMAGE=gitea/gitea:latest
GITEA_RESTART=always
GITEA_PORT=3000
GITEA_SSH_PORT=22
MARIADB_IMAGE=mariadb:latest
MARIADB_RESTART=unless-stopped
MARIADB_ROOT_PASSWORD=changeMe
# Gitea
GITEA_IMAGE=gitea/gitea:latest
GITEA_DB_HOST=gitea-db:3306
GITEA_DB_PASS=changeMe
GITEA_DB_NAME=gitea
GITEA_DB_USER=gitea
GITEA_SSH_DOMAIN=git.example.com
GITEA_SSH_PORT=22
GITEA_HOST_SSH_PORT=22
GITEA_WEB_PORT=3000
GITEA_RESTART=always
GITEA_ROOT_URL=https://git.example.com/
GITEA_DOMAIN=git.example.com
# MariaDB
TZ=America/Vancouver
MARIA_IMAGE=mariadb:latest
MARIA_ROOT=changeMe
+2 -3
View File
@@ -1,10 +1,9 @@
# Heimdall
services:
heimdall:
image: ${HEIMDALL_IMAGE}
image: ${HEIMDALL_IMAGE:-linuxserver/heimdall:latest}
restart: ${HEIMDALL_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-./data}/heimdall:/config
- ${VOL_PATH}/heimdall:/config
environment:
- PGID=${HEIMDALL_PGID:-1000}
- PUID=${HEIMDALL_PUID:-1000}
+4 -3
View File
@@ -1,7 +1,8 @@
# Compose
VOL_PATH=/data
HEIMDALL_IMAGE=linuxserver/heimdall:latest
HEIMDALL_RESTART=unless-stopped
VOL_PATH=/data
HEIMDALL_PORT=8000
HEIMDALL_PGID=1000
HEIMDALL_PUID=1000
HEIMDALL_PORT=8000
TZ=America/Vancouver
TZ=America/Vancouver
+8 -4
View File
@@ -1,13 +1,17 @@
# InvokeAI Docker Compose
services:
invokeai:
image: ${INVOKEAI_IMAGE:-ghcr.io/invoke-ai/invokeai:latest}
restart: ${INVOKEAI_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-/data}/invokeai:/invokeai
- ${VOL_PATH}/invokeai:/invokeai
environment:
- INVOKEAI_ROOT=/invokeai
- INVOKEAI_PORT=${INVOKEAI_PORT:-9090}
ports:
- "${INVOKEAI_PORT:-9090}:9090"
gpus: all
- ${INVOKEAI_PORT:-9090}:9090
networks:
- proxy
networks:
proxy:
external: true
+2 -1
View File
@@ -1,4 +1,5 @@
# Compose
VOL_PATH=/data
INVOKEAI_IMAGE=ghcr.io/invoke-ai/invokeai:latest
INVOKEAI_RESTART=unless-stopped
INVOKEAI_PORT=9090
VOL_PATH=/data
+4 -5
View File
@@ -1,12 +1,10 @@
services:
n8n:
image: ${N8N_IMAGE:-n8nio/n8n:latest}
restart: unless-stopped
restart: ${N8N_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH}/n8n/data:/home/node/.n8n
- ${VOL_PATH}/n8n/files:/files
ports:
- "${N8N_PORT:-5678}:${N8N_PORT:-5678}"
environment:
- GENERIC_TIMEZONE=${TZ:-America/Vancouver}
- TZ=${TZ:-America/Vancouver}
@@ -17,10 +15,11 @@ services:
- N8N_PORT=${N8N_PORT:-5678}
- N8N_HOST=${N8N_HOST:-localhost}
- N8N_EDITOR_BASE_URL=${N8N_EDITOR_BASE_URL:-http://localhost:5678}
- WEBHOOK_URL=${N8N_HOST:-http://localhost:5678}
- WEBHOOK_URL=${N8N_HOST:-http://localhost:5678}
- N8N_SECURE_COOKIE=${N8N_SECURE_COOKIE:-true}
- HOME=/home/node
user: "1000:1000"
ports:
- ${N8N_PORT:-5678}:5678
networks:
- proxy
+4 -11
View File
@@ -1,17 +1,10 @@
# Compose
VOL_PATH=/data
TZ="America/Vancouver"
# n8n
N8N_IMAGE=n8nio/n8n:latest # or 2.16.1
N8N_IMAGE=n8nio/n8n:latest
N8N_RESTART=unless-stopped
N8N_PORT=5678
N8N_HOST=localhost
N8N_PROTOCOL=http
N8N_EDITOR_BASE_URL=http://localhost:5678
N8N_SECURE_COOKIE=true
# NPM Reverse Proxy (override these):
# 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
TZ=America/Vancouver
+16 -18
View File
@@ -1,39 +1,37 @@
services:
nextcloud-db:
image: ${MARIADB_IMAGE:-mariadb:latest}
restart: unless-stopped
restart: ${MARIADB_RESTART:-unless-stopped}
command: >
--transaction-isolation=READ-COMMITTED
--binlog-format=ROW
--innodb-file-per-table=1
--skip-innodb-read-only-compressed
environment:
- MARIADB_DATABASE=${NEXTCLOUD_DB:-mydb}
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-ChangeThisPassword}
- MARIADB_USER=${NEXTCLOUD_DB_USER:-dbuser}
- MARIADB_PASSWORD=${NEXTCLOUD_DB_PASSWORD:-AlsoChangeThisPassword}
volumes:
- ${VOL_PATH:-./data}/nextcloud/db:/var/lib/mysql
- ${VOL_PATH}/nextcloud/db:/var/lib/mysql
environment:
- MARIADB_DATABASE=${NEXTCLOUD_DB:-nextcloud}
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-ChangeThisPassword}
- MARIADB_USER=${NEXTCLOUD_DB_USER:-nextcloud}
- MARIADB_PASSWORD=${NEXTCLOUD_DB_PASSWORD:-ChangeThisPassword}
networks:
- nextcloud
- internal
nextcloud:
image: ${NEXTCLOUD_IMAGE:-nextcloud:latest}
restart: unless-stopped
restart: ${NEXTCLOUD_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH}/nextcloud/data:/var/www/html
environment:
- MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD:-password}
- MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD:-ChangeThisPassword}
- MYSQL_DATABASE=${NEXTCLOUD_DB:-nextcloud}
- MYSQL_USER=${NEXTCLOUD_DB_USER:-nextcloud}
- MYSQL_HOST=${NEXTCLOUD_DB_HOST:-nextcloud-db}
volumes:
- ${VOL_PATH:-./data}/nextcloud/nextcloud:/var/www/html
networks:
- nextcloud
- proxy
networks:
nextcloud:
driver: bridge
- internal
networks:
proxy:
external: true
external: true
internal:
+9 -7
View File
@@ -1,11 +1,13 @@
# Compose
VOL_PATH=/data
#DB
MARIADB_IMAGE=mariadb:12.3.2
MARIADB_ROOT_PASSWORD=ChangeThisPassword
# nextcloud
NEXTCLOUD_IMAGE=nextcloud:latest
NEXTCLOUD_DB_PASSWORD=password
NEXTCLOUD_RESTART=unless-stopped
MARIADB_IMAGE=mariadb:latest
MARIADB_RESTART=unless-stopped
MARIADB_ROOT_PASSWORD=ChangeThisPassword
# Nextcloud
NEXTCLOUD_DB=nextcloud
NEXTCLOUD_DB_USER=nextcloud
NEXTCLOUD_DB_HOST=nextcloud-db
NEXTCLOUD_DB_PASSWORD=ChangeThisPassword
NEXTCLOUD_DB_HOST=nextcloud-db
+15 -10
View File
@@ -1,22 +1,27 @@
# OpenCode Docker Compose
services:
opencode:
image: ${OPENCODE_IMAGE_NAME:-ghcr.io/anomalyco/opencode:latest}
image: ${OPENCODE_IMAGE:-ghcr.io/anomalyco/opencode:latest}
restart: ${OPENCODE_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-/data}/opencode/config:/config
- ${VOL_PROJECTS:-/data/projects}:/projects
- ${VOL_PATH}/opencode/config:/config
- ${VOL_PROJECTS:-${VOL_PATH}/projects}:/projects
environment:
- OPENCODE_PORT=${OPENCODE_PORT:-4096}
- OPENCODE_HOSTNAME=${OPENCODE_HOSTNAME:-0.0.0.0}
- OPENCODE_CONFIG=/config/config.json
- OPENCODE_MODEL=qwen3:8b-16k
- OLLAMA_HOST=${OLLAMA_HOST_URL:-http://localhost:11434}
ports:
- "${OPENCODE_PORT:-4096}:4096"
- ${OPENCODE_PORT:-4096}:4096
command:
- serve
- --port
- ${OPENCODE_PORT:-4096}
- --hostname
- 0.0.0.0
networks:
- proxy
command: ["serve", "--port", "${OPENCODE_PORT:-4096}", "--hostname", "0.0.0.0"]
networks:
proxy:
external: true
+5 -4
View File
@@ -1,7 +1,8 @@
OPENCODE_IMAGE_NAME=ghcr.io/anomalyco/opencode:latest
# Compose
VOL_PATH=/data
VOL_PROJECTS=/data/projects
OPENCODE_IMAGE=ghcr.io/anomalyco/opencode:latest
OPENCODE_RESTART=unless-stopped
VOL_PATH=/home/youruser/.local/share
VOL_PROJECTS=/home/youruser/projects
OPENCODE_PORT=4096
OPENCODE_HOSTNAME=0.0.0.0
OLLAMA_HOST=http://localhost:11434
OLLAMA_HOST=http://localhost:11434
+44 -53
View File
@@ -1,82 +1,73 @@
###############################################################################
# Paperless-ngx
# Modifed from: https://github.com/paperless-ngx/paperless-ngx/blob/main/docker/compose/docker-compose.mariadb-tika.yml
###############################################################################
services:
paperless-broker:
image: docker.io/library/redis:8
restart: unless-stopped
image: ${REDIS_IMAGE:-redis:8}
restart: ${REDIS_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-/data}/paperless/redis:/data
- ${VOL_PATH}/paperless/redis:/data
networks:
- paperless
- internal
paperless-db:
image: docker.io/library/mariadb:12
restart: unless-stopped
image: ${MARIADB_IMAGE:-mariadb:latest}
restart: ${MARIADB_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-/data}/paperless/db:/var/lib/mysql
- ${VOL_PATH}/paperless/db:/var/lib/mysql
environment:
MARIADB_HOST: ${PAPERLESS_MARIADB_HOST:-paperless-db}
MARIADB_DATABASE: ${PAPERLESS_MARIADB_DATABASE:-paperless}
MARIADB_USER: ${PAPERLESS_MARIADB_USER:-paperless}
MARIADB_PASSWORD: ${PAPERLESS_MARIADB_PASSWORD:-paperless}
MARIADB_ROOT_PASSWORD: ${PAPERLESS_MARIADB_ROOT_PASSWORD:-paperless}
- MARIADB_HOST=paperless-db
- MARIADB_DATABASE=${PAPERLESS_MARIADB_DATABASE:-paperless}
- MARIADB_USER=${PAPERLESS_MARIADB_USER:-paperless}
- MARIADB_PASSWORD=${PAPERLESS_MARIADB_PASSWORD:-paperless}
- MARIADB_ROOT_PASSWORD=${PAPERLESS_MARIADB_ROOT_PASSWORD:-paperless}
networks:
- paperless
- internal
paperless-webserver:
image: ${PAPERLESS_IMAGE:-ghcr.io/paperless-ngx/paperless-ngx:latest}
restart: unless-stopped
restart: ${PAPERLESS_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-/data}/paperless/data:/usr/src/paperless/data
- ${VOL_PATH:-/data}/paperless/media:/usr/src/paperless/media
- ${VOL_PATH:-/data}/paperless/export:/usr/src/paperless/export
- ${VOL_PATH:-/data}/paperless/consume:/usr/src/paperless/consume
- ${VOL_PATH}/paperless/data:/usr/src/paperless/data
- ${VOL_PATH}/paperless/media:/usr/src/paperless/media
- ${VOL_PATH}/paperless/export:/usr/src/paperless/export
- ${VOL_PATH}/paperless/consume:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://paperless-broker:6379
PAPERLESS_DBENGINE: mariadb
PAPERLESS_DBHOST: paperless-db
PAPERLESS_DBUSER: ${PAPERLESS_MARIADB_USER:-paperless}
PAPERLESS_DBPASS: ${PAPERLESS_MARIADB_PASSWORD:-paperless}
PAPERLESS_DBPORT: 3306
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://paperless-gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://paperless-tika:9998
PAPERLESS_TIME_ZONE: ${TZ:-America/Vancouver}
PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY:-changeme}
PAPERLESS_OCR_LANGUAGE: ${PAPERLESS_OCR_LANGUAGE:-eng}
PAPERLESS_URL: ${PAPERLESS_URL:-http://localhost}
PAPERLESS_CONSUMER_DELETE_DUPLICATES: ${PAPERLESS_CONSUMER_DELETE_DUPLICATES:-0}
PAPERLESS_CONSUMER_RECURSIVE: 1
- PAPERLESS_REDIS=redis://paperless-broker:6379
- PAPERLESS_DBENGINE=mariadb
- PAPERLESS_DBHOST=paperless-db
- PAPERLESS_DBUSER=${PAPERLESS_MARIADB_USER:-paperless}
- PAPERLESS_DBPASS=${PAPERLESS_MARIADB_PASSWORD:-paperless}
- PAPERLESS_DBPORT=3306
- PAPERLESS_TIKA_ENABLED=1
- PAPERLESS_TIKA_GOTENBERG_ENDPOINT=http://paperless-gotenberg:3000
- PAPERLESS_TIKA_ENDPOINT=http://paperless-tika:9998
- PAPERLESS_TIME_ZONE=${TZ:-America/Vancouver}
- PAPERLESS_SECRET_KEY=${PAPERLESS_SECRET_KEY:-changeme}
- PAPERLESS_OCR_LANGUAGE=${PAPERLESS_OCR_LANGUAGE:-eng}
- PAPERLESS_URL=${PAPERLESS_URL:-http://localhost}
- PAPERLESS_CONSUMER_DELETE_DUPLICATES=${PAPERLESS_CONSUMER_DELETE_DUPLICATES:-0}
- PAPERLESS_CONSUMER_RECURSIVE=1
ports:
- ${PAPERLESS_PORT:-8000}:8000
networks:
- paperless
- proxy
- internal
paperless-gotenberg:
image: docker.io/gotenberg/gotenberg:8.25
restart: unless-stopped
# The gotenberg chromium route is used to convert .eml files. We do not
# want to allow external content like tracking pixels or even javascript.
image: ${GOTENBERG_IMAGE:-gotenberg/gotenberg:8.25}
restart: ${GOTENBERG_RESTART:-unless-stopped}
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/.*"
- gotenberg
- --chromium-disable-javascript=true
- --chromium-allow-list=file:///tmp/.*
networks:
- paperless
- internal
paperless-tika:
image: docker.io/apache/tika:latest
restart: unless-stopped
image: ${TIKA_IMAGE:-apache/tika:latest}
restart: ${TIKA_RESTART:-unless-stopped}
networks:
- paperless
- internal
networks:
proxy:
external: true
paperless:
driver: bridge
internal:
+15 -9
View File
@@ -1,12 +1,18 @@
###############################################################################
# Paperless-ngx settings #
# See http://docs.paperless-ngx.com/configuration/ for all available options.
###############################################################################
TZ=America/Vancouver
VOL_PATH=./data
# Compose
VOL_PATH=/data
PAPERLESS_IMAGE=ghcr.io/paperless-ngx/paperless-ngx:latest
PAPERLESS_RESTART=unless-stopped
PAPERLESS_PORT=8000
MARIADB_IMAGE=mariadb:latest
MARIADB_RESTART=unless-stopped
REDIS_IMAGE=redis:8
REDIS_RESTART=unless-stopped
GOTENBERG_IMAGE=gotenberg/gotenberg:8.25
GOTENBERG_RESTART=unless-stopped
TIKA_IMAGE=apache/tika:latest
TIKA_RESTART=unless-stopped
# Paperless
PAPERLESS_MARIADB_HOST=paperless-db
PAPERLESS_MARIADB_DATABASE=paperless
PAPERLESS_MARIADB_USER=paperless
@@ -16,4 +22,4 @@ PAPERLESS_SECRET_KEY=changeme
PAPERLESS_OCR_LANGUAGE=eng
PAPERLESS_URL=http://localhost
PAPERLESS_CONSUMER_DELETE_DUPLICATES=0
PAPERLESS_PORT=8000
TZ=America/Vancouver
+3 -6
View File
@@ -1,19 +1,16 @@
services:
pihole:
image: ${PIHOLE_IMAGE:-pihole/pihole:latest}
restart: unless-stopped
restart: ${PIHOLE_RESTART:-unless-stopped}
volumes:
- '${VOL_PATH}/pihole/pihole:/etc/pihole'
- '${VOL_PATH}/pihole/dnsmasq:/etc/dnsmasq.d'
- ${VOL_PATH}/pihole/etc:/etc/pihole
- ${VOL_PATH}/pihole/dnsmasq:/etc/dnsmasq.d
environment:
- TZ=${TZ:-America/Vancouver}
- FTLCONF_dns_listeningMode=ALL
- FTLCONF_webserver_port=8080o,[::]:8080o,8443os,[::]:8443os
network_mode: host
cap_add:
# See https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
- NET_ADMIN
# Required if you are using Pi-hole as your NTP client to be able to set the host's system time
- SYS_TIME
# Optional, if Pi-hole should get some more processing time
- SYS_NICE
+5 -3
View File
@@ -1,3 +1,5 @@
TZ="America/Vancouver"
PIHOLE_IMAGE="pihole/pihole:2026.05.0"
VOL_PATH="/data/"
# Compose
VOL_PATH=/data
PIHOLE_IMAGE=pihole/pihole:latest
PIHOLE_RESTART=unless-stopped
TZ=America/Vancouver
+14 -8
View File
@@ -1,18 +1,24 @@
services:
qbittorrent:
image: ${QBT_IMAGE:-trigus42/qbittorrentvpn:latest}
restart: ${QBT_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH}/qbit/config:/config
- ${VOL_PATH}/qbit/downloads:/downloads
- ${VOL_PATH}/qbit/incomplete:/incomplete
- /dev/net/tun:/dev/net/tun
environment:
- VPN_TYPE=wireguard
- WEBUI_PASSWORD=${QBT_PASS:-ChangeMePass}
volumes:
- "${VOL_PATH:-/data}/qbit/config:/config"
- "${VOL_PATH:-/data}/qbit/downloads:/downloads"
- "${VOL_PATH:-/data}/qbit/incomplete:/incomplete"
- '/dev/net/tun:/dev/net/tun'
ports:
- 8080:8080
restart: unless-stopped
- ${QBT_PORT:-8080}:8080
cap_add:
- NET_ADMIN
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.conf.all.src_valid_mark=1
networks:
- proxy
networks:
proxy:
external: true
+5 -3
View File
@@ -1,4 +1,6 @@
# qbittorrent
QBT_IMAGE=trigus42/qbittorrentvpn:latest
QBT_PASS=01234567890
# Compose
VOL_PATH=/data
QBT_IMAGE=trigus42/qbittorrentvpn:latest
QBT_RESTART=unless-stopped
QBT_PORT=8080
QBT_PASS=ChangeMePass
+8 -10
View File
@@ -1,25 +1,23 @@
services:
stashapp:
image: ${STASHAPP_IMAGE:-stashapp/stash:latest}
# image: ghcr.io/hotio/stash # Alternative image
restart: ${STASHAPP_RESTART:-unless-stopped}
volumes:
- /etc/localtime:/etc/localtime:ro
- ${VOL_PATH:-./data}/stash/generated:/generated
- ${VOL_PATH:-./data}/stash/metadata:/metadata
- ${VOL_PATH:-./data}/stash/root:/root/.stash
- ${VOL_PATH}/stash/generated:/generated
- ${VOL_PATH}/stash/metadata:/metadata
- ${VOL_PATH}/stash/root:/root/.stash
- ${STASH_CONTENT_PATH:-/data/stash}:/data
environment:
- STASH_CACHE=${STASHAPP_CACHE:-/cache/}
- STASH_DOMAIN_NAME=${STASHAPP_DOMAIN:-stash.yourdomain.ca}
- STASH_GENERATED=${STASHAPP_GENERATED:-/generated/}
- STASH_METADATA=${STASHAPP_METADATA:-/metadata/}
- STASH_STASH=${STASHAPP_STASH:-/data/}
- STASH_GENERATED=/generated/
- STASH_METADATA=/metadata/
- STASH_STASH=/data/
ports:
- "${STASHAPP_PORT:-9999}:9999"
- ${STASHAPP_PORT:-9999}:9999
networks:
- proxy
networks:
proxy:
external: true
external: true
+3 -4
View File
@@ -1,12 +1,11 @@
# Compose
VOL_PATH=/data
STASH_CONTENT_PATH=/data/stash
# stashapp
STASHAPP_IMAGE=stashapp/stash:latest # https://hub.docker.com/r/stashapp/stash/tags
# ghcr.io/hotio/stash # Alternative image
STASHAPP_IMAGE=stashapp/stash:latest
STASHAPP_RESTART=unless-stopped
STASHAPP_PORT=9999
STASHAPP_CACHE=/cache/
STASHAPP_DOMAIN=stash.yourdomain.ca
STASHAPP_GENERATED=/generated/
STASHAPP_METADATA=/metadata/
STASHAPP_STASH=/data/
STASHAPP_PORT=9999