mirror of
https://github.com/nickyeoman/docker-compose-cookbooks.git
synced 2026-09-03 18:36:22 +00:00
fix first batch of _dev stacks: authentik, directus, duplicati, filebrowser, firefly, headscale, homepage, invoiceninja, jellyfin, lubelogger
This commit is contained in:
+47
-58
@@ -1,69 +1,58 @@
|
||||
services:
|
||||
|
||||
postgresql:
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
POSTGRES_DB: ${PG_DB:-authentik}
|
||||
POSTGRES_PASSWORD: ${PG_PASS:?database password required}
|
||||
POSTGRES_USER: ${PG_USER:-authentik}
|
||||
healthcheck:
|
||||
interval: 30s
|
||||
retries: 5
|
||||
start_period: 20s
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}
|
||||
timeout: 5s
|
||||
image: docker.io/library/postgres:16-alpine
|
||||
restart: unless-stopped
|
||||
image: ${AUTHENTIK_POSTGRES_IMAGE:-postgres:16-alpine}
|
||||
restart: ${AUTHENTIK_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- database:/var/lib/postgresql/data
|
||||
- ${VOL_PATH:-/data}/authentik/db:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_DB=${PG_DB:-authentik}
|
||||
- POSTGRES_PASSWORD=${PG_PASS:?database password required}
|
||||
- POSTGRES_USER=${PG_USER:-authentik}
|
||||
networks:
|
||||
- internal
|
||||
|
||||
server:
|
||||
command: server
|
||||
depends_on:
|
||||
postgresql:
|
||||
condition: service_healthy
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
||||
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
|
||||
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
|
||||
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
|
||||
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required}
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.10.1}
|
||||
ports:
|
||||
- ${COMPOSE_PORT_HTTP:-9000}:9000
|
||||
- ${COMPOSE_PORT_HTTPS:-9443}:9443
|
||||
restart: unless-stopped
|
||||
restart: ${AUTHENTIK_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- ./media:/media
|
||||
- ./custom-templates:/templates
|
||||
- ${VOL_PATH:-/data}/authentik/media:/media
|
||||
- ${VOL_PATH:-/data}/authentik/custom-templates:/templates
|
||||
environment:
|
||||
- AUTHENTIK_POSTGRESQL__HOST=postgresql
|
||||
- AUTHENTIK_POSTGRESQL__NAME=${PG_DB:-authentik}
|
||||
- AUTHENTIK_POSTGRESQL__PASSWORD=${PG_PASS}
|
||||
- AUTHENTIK_POSTGRESQL__USER=${PG_USER:-authentik}
|
||||
- AUTHENTIK_SECRET_KEY=${AUTHENTIK_SECRET_KEY:?secret key required}
|
||||
ports:
|
||||
- "${AUTHENTIK_PORT_HTTP:-9000}:9000"
|
||||
- "${AUTHENTIK_PORT_HTTPS:-9443}:9443"
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
depends_on:
|
||||
- postgresql
|
||||
command: server
|
||||
|
||||
worker:
|
||||
command: worker
|
||||
depends_on:
|
||||
postgresql:
|
||||
condition: service_healthy
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
||||
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
|
||||
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
|
||||
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
|
||||
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required}
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.10.1}
|
||||
restart: unless-stopped
|
||||
user: root
|
||||
restart: ${AUTHENTIK_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./media:/media
|
||||
- ./certs:/certs
|
||||
- ./custom-templates:/templates
|
||||
|
||||
volumes:
|
||||
database:
|
||||
driver: local
|
||||
- ${VOL_PATH:-/data}/authentik/media:/media
|
||||
- ${VOL_PATH:-/data}/authentik/certs:/certs
|
||||
- ${VOL_PATH:-/data}/authentik/custom-templates:/templates
|
||||
environment:
|
||||
- AUTHENTIK_POSTGRESQL__HOST=postgresql
|
||||
- AUTHENTIK_POSTGRESQL__NAME=${PG_DB:-authentik}
|
||||
- AUTHENTIK_POSTGRESQL__PASSWORD=${PG_PASS}
|
||||
- AUTHENTIK_POSTGRESQL__USER=${PG_USER:-authentik}
|
||||
- AUTHENTIK_SECRET_KEY=${AUTHENTIK_SECRET_KEY:?secret key required}
|
||||
networks:
|
||||
- internal
|
||||
depends_on:
|
||||
- postgresql
|
||||
command: worker
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
internal:
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
#echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" >> .env
|
||||
#echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" >> .env
|
||||
#echo "AUTHENTIK_ERROR_REPORTING__ENABLED=true" >> .env
|
||||
#COMPOSE_PORT_HTTP=80
|
||||
#COMPOSE_PORT_HTTPS=443
|
||||
# Compose
|
||||
VOL_PATH=/data
|
||||
AUTHENTIK_IMAGE=ghcr.io/goauthentik/server
|
||||
AUTHENTIK_TAG=2025.10.1
|
||||
AUTHENTIK_RESTART=unless-stopped
|
||||
AUTHENTIK_PORT_HTTP=9000
|
||||
AUTHENTIK_PORT_HTTPS=9443
|
||||
AUTHENTIK_POSTGRES_IMAGE=postgres:16-alpine
|
||||
|
||||
# Database
|
||||
PG_DB=authentik
|
||||
PG_USER=authentik
|
||||
# Generate: openssl rand -base64 36 | tr -d '\n'
|
||||
PG_PASS=
|
||||
|
||||
# Authentik
|
||||
# Generate: openssl rand -base64 60 | tr -d '\n'
|
||||
AUTHENTIK_SECRET_KEY=
|
||||
|
||||
+50
-23
@@ -1,28 +1,55 @@
|
||||
services:
|
||||
directus:
|
||||
image: directus/directus:latest
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8000:8055"
|
||||
mariadb:
|
||||
image: ${MARIADB_IMAGE:-mariadb:10.11}
|
||||
restart: ${DIRECTUS_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- ${VOL_PATH:-/data}/directus/db:/var/lib/mysql
|
||||
environment:
|
||||
SECRET: ${DIRECTUS_SECRET:-0123456789}
|
||||
DB_CLIENT: mysql
|
||||
DB_HOST: mariadb
|
||||
DB_PORT: 3306
|
||||
DB_DATABASE: ${MARIADB_DATABASE:-dbname}
|
||||
DB_USER: ${MARIADB_USER:-db_username}
|
||||
DB_PASSWORD: ${MARIADB_PASSWORD:-db_password}
|
||||
ADMIN_EMAIL: ${DIRECTUS_ADMIN_EMAIL:-noreply@example.com}
|
||||
ADMIN_PASSWORD: ${DIRECTUS_ADMIN_PASSWORD:-change_me_to_admin_pass}
|
||||
CACHE_ENABLED: "true"
|
||||
CACHE_AUTO_PURGE: "true"
|
||||
CACHE_STORE: "redis"
|
||||
REDIS: "redis://cache:6379"
|
||||
PUBLIC_URL: ${DIRECTUS_PUBLIC_URL:-http://localhost:8055}
|
||||
- MARIADB_DATABASE=${MARIADB_DATABASE:-directus}
|
||||
- MARIADB_USER=${MARIADB_USER:-directus}
|
||||
- MARIADB_PASSWORD=${MARIADB_PASSWORD:-ChangeThisPassword}
|
||||
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-ChangeThisRootPassword}
|
||||
networks:
|
||||
- internal
|
||||
|
||||
redis:
|
||||
image: ${REDIS_IMAGE:-redis:7-alpine}
|
||||
restart: ${DIRECTUS_RESTART:-unless-stopped}
|
||||
networks:
|
||||
- internal
|
||||
|
||||
directus:
|
||||
image: ${DIRECTUS_IMAGE:-directus/directus:latest}
|
||||
restart: ${DIRECTUS_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- ${VOL_PATH:-/data}/directus/uploads:/directus/uploads
|
||||
- ${VOL_PATH:-/data}/directus/extensions:/directus/extensions
|
||||
- ${VOL_PATH:-/data}/directus/templates:/directus/templates
|
||||
environment:
|
||||
- SECRET=${DIRECTUS_SECRET:-0123456789}
|
||||
- DB_CLIENT=mysql
|
||||
- DB_HOST=mariadb
|
||||
- DB_PORT=3306
|
||||
- DB_DATABASE=${MARIADB_DATABASE:-directus}
|
||||
- DB_USER=${MARIADB_USER:-directus}
|
||||
- DB_PASSWORD=${MARIADB_PASSWORD:-ChangeThisPassword}
|
||||
- ADMIN_EMAIL=${DIRECTUS_ADMIN_EMAIL:-noreply@example.com}
|
||||
- ADMIN_PASSWORD=${DIRECTUS_ADMIN_PASSWORD:-ChangeThisPassword}
|
||||
- CACHE_ENABLED=true
|
||||
- CACHE_AUTO_PURGE=true
|
||||
- CACHE_STORE=redis
|
||||
- REDIS=redis://redis:6379
|
||||
- PUBLIC_URL=${DIRECTUS_PUBLIC_URL:-http://localhost:8055}
|
||||
ports:
|
||||
- "${DIRECTUS_PORT:-8000}:8055"
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
depends_on:
|
||||
- mariadb
|
||||
- redis
|
||||
volumes:
|
||||
- ${VOL_PATH:-./data}/directus/uploads:/directus/uploads
|
||||
- ${VOL_PATH:-./data}/directus/extensions:/directus/extensions
|
||||
- ${VOL_PATH:-./data}/directus/templates:/directus/templates
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
internal:
|
||||
|
||||
+14
-6
@@ -1,10 +1,18 @@
|
||||
# Global
|
||||
COMPOSE_PROJECT_NAME=directus
|
||||
TZ=America/Vancouver
|
||||
VOL_CONFIG_PATH=/docker/directus/config
|
||||
VOL_PATH=/docker/directus/data
|
||||
# Compose
|
||||
VOL_PATH=/data
|
||||
DIRECTUS_IMAGE=directus/directus:latest
|
||||
DIRECTUS_RESTART=unless-stopped
|
||||
DIRECTUS_PORT=8000
|
||||
|
||||
# MariaDB
|
||||
MARIADB_IMAGE=mariadb:10.11
|
||||
MARIADB_DATABASE=directus
|
||||
MARIADB_USER=directus
|
||||
MARIADB_PASSWORD=ChangeThisPassword
|
||||
MARIADB_ROOT_PASSWORD=ChangeThisRootPassword
|
||||
|
||||
# Directus
|
||||
DIRECTUS_SECRET=01234567890123456789012345678912
|
||||
DIRECTUS_ADMIN_EMAIL=noreply@example.com
|
||||
DIRECTUS_ADMIN_PASSWORD=enter_secure_password_here
|
||||
DIRECTUS_ADMIN_PASSWORD=ChangeThisPassword
|
||||
DIRECTUS_PUBLIC_URL=http://localhost:8055
|
||||
|
||||
+17
-10
@@ -1,16 +1,23 @@
|
||||
services:
|
||||
duplicati:
|
||||
image: ${DUPLICATI_IMAGE:-duplicati/duplicati:latest}
|
||||
restart: ${DUPLICATI_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- ${VOL_PATH:-./data}/duplicati/config:/data
|
||||
- ${VOL_PATH:-./data}/duplicati/backups:/backups
|
||||
- ${VOL_PATH:-./data}/duplicati/source:/source:ro
|
||||
# Add More sorces, for example: - /NAS:/source_nas:ro
|
||||
- ${VOL_PATH:-./data}/duplicati/restore:/restore
|
||||
- ${VOL_PATH:-/data}/duplicati/config:/data
|
||||
- ${VOL_PATH:-/data}/duplicati/backups:/backups
|
||||
- ${VOL_PATH:-/data}/duplicati/source:/source:ro
|
||||
- ${VOL_PATH:-/data}/duplicati/restore:/restore
|
||||
environment:
|
||||
TZ: ${TZ:-America/Vancouver}
|
||||
SETTINGS_ENCRYPTION_KEY: "${DUPLICATI_KEY:-ThisNeedsToChange}"
|
||||
DUPLICATI__WEBSERVICE_PASSWORD: "${DUPLICATI_PASS:-changeMe}"
|
||||
restart: unless-stopped
|
||||
- TZ=${TZ:-America/Vancouver}
|
||||
- SETTINGS_ENCRYPTION_KEY=${DUPLICATI_KEY:-ThisNeedsToChange}
|
||||
- DUPLICATI__WEBSERVICE_PASSWORD=${DUPLICATI_PASS:-changeMe}
|
||||
ports:
|
||||
- "8200:8200"
|
||||
- "${DUPLICATI_PORT:-8200}:8200"
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
internal:
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
TZ=America/Vancouver
|
||||
VOL_PATH=./data
|
||||
# Compose
|
||||
VOL_PATH=/data
|
||||
DUPLICATI_IMAGE=duplicati/duplicati:latest
|
||||
DUPLICATI_RESTART=unless-stopped
|
||||
DUPLICATI_PORT=8200
|
||||
|
||||
# Duplicati
|
||||
DUPLICATI_IMAGE=duplicati/duplicati:latest #2.1.0.5
|
||||
DUPLICATI_KEY=ThisNeedsToChange
|
||||
DUPLICATI_PASS=changeMe
|
||||
TZ=America/Vancouver
|
||||
|
||||
@@ -1,12 +1,22 @@
|
||||
services:
|
||||
filebrowser:
|
||||
image: ${FILEBROWSER_IMAGE:-gtstef/filebrowser:latest}
|
||||
restart: ${FILEBROWSER_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- ${VOL_PATH:-./data}/storage:/srv
|
||||
- ${VOL_PATH:-./data}/filebrowser/root:/home/filebrowser/data
|
||||
- ${VOL_CONFIG_PATH:-./config}/config.yaml:/home/filebrowser/config.yaml
|
||||
- ${VOL_PATH:-/data}/storage:/srv
|
||||
- ${VOL_PATH:-/data}/filebrowser/root:/home/filebrowser/data
|
||||
- ${FILEBROWSER_CONFIG_PATH:-/data/filebrowser}/config.yaml:/home/filebrowser/config.yaml
|
||||
environment:
|
||||
FILEBROWSER_CONFIG: "${FILEBROWSER_CONFIG:-/home/filebrowser/config.yaml}"
|
||||
FILEBROWSER_ADMIN_PASSWORD: ${FILEBROWSER_ADMIN_PASSWORD:-admin}
|
||||
TZ: ${TZ:-America/Vancouver}
|
||||
- FILEBROWSER_CONFIG=${FILEBROWSER_CONFIG:-/home/filebrowser/config.yaml}
|
||||
- FILEBROWSER_ADMIN_PASSWORD=${FILEBROWSER_ADMIN_PASSWORD:-admin}
|
||||
- TZ=${TZ:-America/Vancouver}
|
||||
ports:
|
||||
- "${FILEBROWSER_PORT:-8080}:80"
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
internal:
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
# Filebrowser Quantum
|
||||
# Compose
|
||||
VOL_PATH=/data
|
||||
FILEBROWSER_IMAGE=gtstef/filebrowser:latest
|
||||
FILEBROWSER_RESTART=unless-stopped
|
||||
FILEBROWSER_PORT=8080
|
||||
FILEBROWSER_CONFIG_PATH=/data/filebrowser
|
||||
|
||||
VOL_CONFIG_PATH=./config
|
||||
VOL_PATH=./data
|
||||
TZ=America/Vancouver
|
||||
|
||||
FILEBROWSER_IMAGE=gtstef/filebrowser:latest #0.8.7-beta
|
||||
FILEBROWSER_CONFIG="/home/filebrowser/config.yaml"
|
||||
# Filebrowser
|
||||
FILEBROWSER_CONFIG=/home/filebrowser/config.yaml
|
||||
FILEBROWSER_ADMIN_PASSWORD=admin
|
||||
TZ=America/Vancouver
|
||||
|
||||
@@ -1,12 +1,25 @@
|
||||
services:
|
||||
firefly:
|
||||
image: ${FIREFLY_IMAGE:-fireflyiii/core:latest}
|
||||
restart: unless-stopped
|
||||
restart: ${FIREFLY_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- ${VOL_PATH:-./data}/firefly:/var/www/html/storage/upload
|
||||
|
||||
- ${VOL_PATH:-/data}/firefly:/var/www/html/storage/upload
|
||||
ports:
|
||||
- "${FIREFLY_PORT:-8080}:8080"
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
|
||||
firefly-importer:
|
||||
image: ${FIREFLY_IMPORTER_IMAGE:-fireflyiii/data-importer:latest}
|
||||
restart: unless-stopped
|
||||
restart: ${FIREFLY_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- ${VOL_PATH:-./data}/firefly:/var/www/html/storage/upload
|
||||
- ${VOL_PATH:-/data}/firefly:/var/www/html/storage/upload
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
internal:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
VOL_PATH=/docker/vol/portainer-data #HELP: volpath
|
||||
COOKBOOK=/git/docker-compose-cookbooks #HELP: cookbooks
|
||||
|
||||
# firefly
|
||||
# Compose
|
||||
VOL_PATH=/data
|
||||
FIREFLY_IMAGE=fireflyiii/core:latest
|
||||
FIREFLY_IMPORTER_IMAGE=fireflyiii/data-importer:latest
|
||||
FIREFLY_RESTART=unless-stopped
|
||||
FIREFLY_PORT=8080
|
||||
|
||||
@@ -1,51 +1,34 @@
|
||||
# Headscale Docker Compose Template
|
||||
|
||||
services:
|
||||
headscale:
|
||||
image: ${HEADSCALE_IMAGE:-headscale/headscale:latest}
|
||||
restart: ${HEADSCALE_RESTART:-unless-stopped}
|
||||
|
||||
volumes:
|
||||
- ${CONFIG_PATH:-./config}/headscale/config:/etc/headscale
|
||||
- ${DATA_PATH:-./data}/headscale:/var/lib/headscale
|
||||
- ${LOG_PATH:-./logs}/headscale:/var/log/headscale
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
|
||||
- ${VOL_PATH:-/data}/headscale/config:/etc/headscale
|
||||
- ${VOL_PATH:-/data}/headscale/data:/var/lib/headscale
|
||||
- ${VOL_PATH:-/data}/headscale/logs:/var/log/headscale
|
||||
environment:
|
||||
- TZ=${TZ:-UTC}
|
||||
- TZ=${TZ:-America/Vancouver}
|
||||
- HEADSCALE_LOG_LEVEL=${HEADSCALE_LOG_LEVEL:-info}
|
||||
|
||||
expose:
|
||||
- "8080"
|
||||
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
|
||||
command:
|
||||
- headscale
|
||||
- serve
|
||||
|
||||
user: "1000:1000"
|
||||
|
||||
headscale-ui:
|
||||
image: ${HEADSCALE_UI_IMAGE:-goodieshq/headscale-admin:latest}
|
||||
restart: ${HEADSCALE_UI_RESTART:-unless-stopped}
|
||||
|
||||
environment:
|
||||
- TZ=${TZ:-UTC}
|
||||
- TZ=${TZ:-America/Vancouver}
|
||||
- HEADSCALE_URL=http://headscale:8080
|
||||
|
||||
expose:
|
||||
- "80"
|
||||
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
depends_on:
|
||||
- headscale
|
||||
|
||||
networks:
|
||||
- internal
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
internal:
|
||||
driver: bridge
|
||||
@@ -1,30 +1,12 @@
|
||||
# =========================
|
||||
# Headscale Configuration
|
||||
# =========================
|
||||
|
||||
# Images
|
||||
# Compose
|
||||
VOL_PATH=/data
|
||||
HEADSCALE_IMAGE=headscale/headscale:latest
|
||||
HEADSCALE_UI_IMAGE=goodieshq/headscale-admin:0.26
|
||||
|
||||
# Restart policy
|
||||
HEADSCALE_RESTART=unless-stopped
|
||||
HEADSCALE_UI_RESTART=unless-stopped
|
||||
|
||||
# Paths
|
||||
CONFIG_PATH=./config
|
||||
DATA_PATH=./data
|
||||
LOG_PATH=./logs
|
||||
|
||||
# Timezone
|
||||
TZ=America/Vancouver
|
||||
|
||||
# Logging
|
||||
# Headscale
|
||||
HEADSCALE_LOG_LEVEL=info
|
||||
|
||||
# Domain (IMPORTANT)
|
||||
HEADSCALE_DOMAIN=headscale.example.com
|
||||
HEADSCALE_URL=https://headscale.example.com
|
||||
|
||||
# Ports (not exposed publicly, but useful for internal reference)
|
||||
HEADSCALE_PORT=8080
|
||||
HEADSCALE_UI_PORT=9090
|
||||
TZ=America/Vancouver
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
services:
|
||||
homepage:
|
||||
image: ${HOMEPAGE_IMAGE:-ghcr.io/gethomepage/homepage:latest}
|
||||
restart: unless-stopped
|
||||
restart: ${HOMEPAGE_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- homepage-config:/app/config
|
||||
- /var/run/docker.sock:/var/run/docker.sock # Optional, for Docker integrations
|
||||
- ${VOL_PATH:-/data}/homepage/config:/app/config
|
||||
environment:
|
||||
- TZ=${TZ:-America/Vancouver} # optional, if your app needs a timezone
|
||||
- TZ=${TZ:-America/Vancouver}
|
||||
ports:
|
||||
- "${HOMEPAGE_PORT:-3000}:3000"
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
|
||||
volumes:
|
||||
homepage-config:
|
||||
name: homepage-config
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
internal:
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
# Homepage
|
||||
# Compose
|
||||
VOL_PATH=/data
|
||||
HOMEPAGE_IMAGE=ghcr.io/gethomepage/homepage:latest
|
||||
VOL_CONFIG_PATH=./config
|
||||
HOMEPAGE_RESTART=unless-stopped
|
||||
HOMEPAGE_PORT=3000
|
||||
TZ=America/Vancouver
|
||||
|
||||
@@ -1,62 +1,51 @@
|
||||
services:
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
image: invoiceninja/invoiceninja-debian:${TAG:-latest}
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ./sample.env
|
||||
volumes:
|
||||
# - ./php/php.ini:/usr/local/etc/php/conf.d/invoiceninja.ini:ro
|
||||
# - ./php/php-fpm.conf:/usr/local/etc/php-fpm.d/invoiceninja.conf:ro
|
||||
# - ./supervisor/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf:ro
|
||||
- ./data/public:/var/www/html/public
|
||||
- ./data/storage:/var/www/html/storage
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
|
||||
nginx:
|
||||
image: nginx:alpine
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8000:80"
|
||||
volumes:
|
||||
- ./nginx:/etc/nginx/conf.d:ro
|
||||
- ./data/public:/var/www/html/public:ro
|
||||
- ./data/storage:/var/www/html/storage:ro
|
||||
depends_on:
|
||||
app:
|
||||
condition: service_healthy
|
||||
|
||||
mysql:
|
||||
image: mysql:8
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_DATABASE: ${DB_DATABASE:-ninja}
|
||||
MYSQL_USER: ${DB_USERNAME:-ninja}
|
||||
MYSQL_PASSWORD: ${DB_PASSWORD:-ninja}
|
||||
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-ninjaAdm1nPassword}
|
||||
image: ${MYSQL_IMAGE:-mysql:8}
|
||||
restart: ${INVOICENINJA_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- ./data/mysql/:/var/lib/mysql
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"mysqladmin",
|
||||
"ping",
|
||||
"-h",
|
||||
"localhost",
|
||||
"-u${MYSQL_USER}",
|
||||
"-p${MYSQL_PASSWORD}",
|
||||
]
|
||||
- ${VOL_PATH:-/data}/invoiceninja/mysql:/var/lib/mysql
|
||||
environment:
|
||||
- MYSQL_DATABASE=${DB_DATABASE:-ninja}
|
||||
- MYSQL_USER=${DB_USERNAME:-ninja}
|
||||
- MYSQL_PASSWORD=${DB_PASSWORD:-ninja}
|
||||
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD:-ninjaAdm1nPassword}
|
||||
networks:
|
||||
- internal
|
||||
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: unless-stopped
|
||||
image: ${REDIS_IMAGE:-redis:alpine}
|
||||
restart: ${INVOICENINJA_RESTART:-unless-stopped}
|
||||
networks:
|
||||
- internal
|
||||
|
||||
app:
|
||||
image: ${INVOICENINJA_IMAGE:-invoiceninja/invoiceninja-debian:latest}
|
||||
restart: ${INVOICENINJA_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- ./data/redis:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
- ${VOL_PATH:-/data}/invoiceninja/public:/var/www/html/public
|
||||
- ${VOL_PATH:-/data}/invoiceninja/storage:/var/www/html/storage
|
||||
networks:
|
||||
- internal
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
|
||||
nginx:
|
||||
image: ${NGINX_IMAGE:-nginx:alpine}
|
||||
restart: ${INVOICENINJA_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- ${VOL_PATH:-/data}/invoiceninja/nginx:/etc/nginx/conf.d:ro
|
||||
- ${VOL_PATH:-/data}/invoiceninja/public:/var/www/html/public:ro
|
||||
- ${VOL_PATH:-/data}/invoiceninja/storage:/var/www/html/storage:ro
|
||||
ports:
|
||||
- "${INVOICENINJA_PORT:-8000}:80"
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
depends_on:
|
||||
- app
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
internal:
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
# Compose
|
||||
VOL_PATH=/data
|
||||
INVOICENINJA_IMAGE=invoiceninja/invoiceninja-debian:latest
|
||||
INVOICENINJA_RESTART=unless-stopped
|
||||
INVOICENINJA_PORT=8000
|
||||
MYSQL_IMAGE=mysql:8
|
||||
NGINX_IMAGE=nginx:alpine
|
||||
REDIS_IMAGE=redis:alpine
|
||||
|
||||
# IN application vars
|
||||
APP_URL=http://localhost:8000
|
||||
# echo -n "base64:$(openssl rand -base64 32)"
|
||||
|
||||
+20
-12
@@ -1,16 +1,24 @@
|
||||
services:
|
||||
jellyfin:
|
||||
image: ${JELLYFIN_IMAGE:-jellyfin/jellyfin:latest}
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- JELLYFIN_PublishedServerUrl=${JELLYFIN_PublishedServerUrl:-http://localhost:8096}
|
||||
restart: ${JELLYFIN_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- ${VOL_PATH:-./data}/jellyfin-cache:/cache
|
||||
- ${VOL_PATH:-./data}/jellyfin-config:/config
|
||||
- ${VOL_PATH:-./data}/jellyfin-content/books:/books
|
||||
- ${VOL_PATH:-./data}/jellyfin-content/media:/media
|
||||
- ${VOL_PATH:-./data}/jellyfin-content/movies:/movies
|
||||
- ${VOL_PATH:-./data}/jellyfin-content/music:/music
|
||||
- ${VOL_PATH:-./data}/jellyfin-content/musicvideos:/musicvideos
|
||||
- ${VOL_PATH:-./data}/jellyfin-content/photos:/photos
|
||||
- ${VOL_PATH:-./data}/jellyfin-content/shows:/shows
|
||||
- ${VOL_PATH:-/data}/jellyfin/cache:/cache
|
||||
- ${VOL_PATH:-/data}/jellyfin/config:/config
|
||||
- ${VOL_PATH:-/data}/jellyfin/media/books:/books
|
||||
- ${VOL_PATH:-/data}/jellyfin/media/movies:/movies
|
||||
- ${VOL_PATH:-/data}/jellyfin/media/music:/music
|
||||
- ${VOL_PATH:-/data}/jellyfin/media/photos:/photos
|
||||
- ${VOL_PATH:-/data}/jellyfin/media/shows:/shows
|
||||
environment:
|
||||
- JELLYFIN_PublishedServerUrl=${JELLYFIN_URL:-http://localhost:8096}
|
||||
ports:
|
||||
- "${JELLYFIN_PORT:-8096}:8096"
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
internal:
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# Global
|
||||
VOL_PATH=./data
|
||||
COOKBOOK=/git/docker-compose-cookbooks #HELP: cookbooks
|
||||
# Compose
|
||||
VOL_PATH=/data
|
||||
JELLYFIN_IMAGE=jellyfin/jellyfin:latest
|
||||
JELLYFIN_RESTART=unless-stopped
|
||||
JELLYFIN_PORT=8096
|
||||
|
||||
# Jellyfin
|
||||
JELLYFIN_IMAGE=jellyfin/jellyfin:latest
|
||||
JELLYFIN_PublishedServerUrl=http://localhost:8096
|
||||
JELLYFIN_URL=http://localhost:8096
|
||||
|
||||
@@ -1,9 +1,17 @@
|
||||
services:
|
||||
lubelogger:
|
||||
image: ${LUBELOGR_IMAGE_NAME:-ghcr.io/hargata/lubelogger:latest}
|
||||
restart: ${LUBELOGR_RESTART:-unless-stopped}
|
||||
image: ${LUBELOGGER_IMAGE:-ghcr.io/hargata/lubelogger:latest}
|
||||
restart: ${LUBELOGGER_RESTART:-unless-stopped}
|
||||
volumes:
|
||||
- ${VOL_PATH:-./data}/lubelogger/App:/App/data
|
||||
- ${VOL_PATH:-./data}/lubelogger/keys:/root/.aspnet/DataProtection-Keys
|
||||
- ${VOL_PATH:-/data}/lubelogger/data:/App/data
|
||||
- ${VOL_PATH:-/data}/lubelogger/keys:/root/.aspnet/DataProtection-Keys
|
||||
ports:
|
||||
- "${LUBELOGR_PORT:-8080}:8080"
|
||||
- "${LUBELOGGER_PORT:-8080}:8080"
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
internal:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
LUBELOGR_IMAGE_NAME=ghcr.io/hargata/lubelogger:latest
|
||||
LUBELOGR_RESTART=unless-stopped
|
||||
LUBELOGR_PORT=8080
|
||||
|
||||
# Compose
|
||||
VOL_PATH=/data
|
||||
LUBELOGGER_IMAGE=ghcr.io/hargata/lubelogger:latest
|
||||
LUBELOGGER_RESTART=unless-stopped
|
||||
LUBELOGGER_PORT=8080
|
||||
|
||||
Reference in New Issue
Block a user