diff --git a/authentik_dev/compose.yaml b/authentik_dev/compose.yaml index e8c5889..16b7fa8 100644 --- a/authentik_dev/compose.yaml +++ b/authentik_dev/compose.yaml @@ -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: diff --git a/authentik_dev/sample.env b/authentik_dev/sample.env index 21ec9d8..3056e72 100644 --- a/authentik_dev/sample.env +++ b/authentik_dev/sample.env @@ -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 \ No newline at end of file +# 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= diff --git a/directus_dev/compose.yaml b/directus_dev/compose.yaml index 077bc8c..dd87cc5 100644 --- a/directus_dev/compose.yaml +++ b/directus_dev/compose.yaml @@ -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: diff --git a/directus_dev/sample.env b/directus_dev/sample.env index 1cc3c71..472488d 100644 --- a/directus_dev/sample.env +++ b/directus_dev/sample.env @@ -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 diff --git a/duplicati_dev/compose.yaml b/duplicati_dev/compose.yaml index 216ddb4..145750c 100644 --- a/duplicati_dev/compose.yaml +++ b/duplicati_dev/compose.yaml @@ -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" \ No newline at end of file + - "${DUPLICATI_PORT:-8200}:8200" + networks: + - proxy + - internal + +networks: + proxy: + external: true + internal: diff --git a/duplicati_dev/sample.env b/duplicati_dev/sample.env index 4bba4bc..8541a3b 100644 --- a/duplicati_dev/sample.env +++ b/duplicati_dev/sample.env @@ -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 diff --git a/filebrowser_dev/compose.yaml b/filebrowser_dev/compose.yaml index bd7c25f..614d2be 100644 --- a/filebrowser_dev/compose.yaml +++ b/filebrowser_dev/compose.yaml @@ -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: diff --git a/filebrowser_dev/sample.env b/filebrowser_dev/sample.env index e880339..da33f2d 100644 --- a/filebrowser_dev/sample.env +++ b/filebrowser_dev/sample.env @@ -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 diff --git a/firefly_dev/compose.yaml b/firefly_dev/compose.yaml index ea10819..e7e8689 100644 --- a/firefly_dev/compose.yaml +++ b/firefly_dev/compose.yaml @@ -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: diff --git a/firefly_dev/sample.env b/firefly_dev/sample.env index 4ccee72..1fad592 100644 --- a/firefly_dev/sample.env +++ b/firefly_dev/sample.env @@ -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 diff --git a/headscale_dev/compose.yaml b/headscale_dev/compose.yaml index 83a9680..3f230ab 100644 --- a/headscale_dev/compose.yaml +++ b/headscale_dev/compose.yaml @@ -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 \ No newline at end of file diff --git a/headscale_dev/sample.env b/headscale_dev/sample.env index c4391b8..5bc2e54 100644 --- a/headscale_dev/sample.env +++ b/headscale_dev/sample.env @@ -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 \ No newline at end of file +TZ=America/Vancouver diff --git a/homepage_dev/compose.yaml b/homepage_dev/compose.yaml index 41c499f..255afe3 100644 --- a/homepage_dev/compose.yaml +++ b/homepage_dev/compose.yaml @@ -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: diff --git a/homepage_dev/sample.env b/homepage_dev/sample.env index a980d1d..0c83038 100644 --- a/homepage_dev/sample.env +++ b/homepage_dev/sample.env @@ -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 diff --git a/invoiceninja_dev/compose.yaml b/invoiceninja_dev/compose.yaml index a1a593c..2a0d980 100644 --- a/invoiceninja_dev/compose.yaml +++ b/invoiceninja_dev/compose.yaml @@ -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: diff --git a/invoiceninja_dev/sample.env b/invoiceninja_dev/sample.env index 225bf8e..2f39650 100644 --- a/invoiceninja_dev/sample.env +++ b/invoiceninja_dev/sample.env @@ -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)" diff --git a/jellyfin_dev/compose.yaml b/jellyfin_dev/compose.yaml index 133b8e1..b229eb0 100644 --- a/jellyfin_dev/compose.yaml +++ b/jellyfin_dev/compose.yaml @@ -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: diff --git a/jellyfin_dev/sample.env b/jellyfin_dev/sample.env index b4fd1e6..cf8726a 100644 --- a/jellyfin_dev/sample.env +++ b/jellyfin_dev/sample.env @@ -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 diff --git a/lubelogger_dev/compose.yaml b/lubelogger_dev/compose.yaml index c273b5b..49708e7 100644 --- a/lubelogger_dev/compose.yaml +++ b/lubelogger_dev/compose.yaml @@ -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: diff --git a/lubelogger_dev/sample.env b/lubelogger_dev/sample.env index 05dd8c0..1c529b6 100644 --- a/lubelogger_dev/sample.env +++ b/lubelogger_dev/sample.env @@ -1,4 +1,5 @@ - LUBELOGR_IMAGE_NAME=ghcr.io/hargata/lubelogger:latest - LUBELOGR_RESTART=unless-stopped - LUBELOGR_PORT=8080 - \ No newline at end of file +# Compose +VOL_PATH=/data +LUBELOGGER_IMAGE=ghcr.io/hargata/lubelogger:latest +LUBELOGGER_RESTART=unless-stopped +LUBELOGGER_PORT=8080