Use env vars

This commit is contained in:
Gal 2024-01-02 23:47:54 +07:00
parent e90770c1dc
commit dce5b863ae
Signed by: gal
GPG Key ID: F035BC65003BC00B
9 changed files with 62 additions and 43 deletions

20
Makefile Normal file
View File

@ -0,0 +1,20 @@
include .env
SERVICES = actualbudget gitea homepage linkding nextcloud photoprism restic syncthing traefik
# Default target: upload .env files for all services
upload: $(addprefix upload-,$(SERVICES))
# Target to upload .env file for a specific service
upload-%:
@echo "🚀 Uploading .env file for $* service..."
scp $*/.env $(REMOTE_USER)@$(REMOTE_HOST):$(REMOTE_PATH)/$*/
@echo "✅ Uploaded .env file for $* service successfully."
# Usage instructions
help:
@echo "📋 Usage: make [target]"
@echo ""
@echo "🎯 Targets:"
@echo " upload 📤 Upload .env files for all services"
@echo " upload-service 📤 Upload .env file for a specific service (e.g., upload-actualbudget)"

View File

@ -34,7 +34,7 @@ services:
- db - db
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.gitea.rule=Host(`git.velouria.dev`)" - "traefik.http.routers.gitea.rule=Host(${HOST})"
- "traefik.http.routers.gitea.entrypoints=websecure" - "traefik.http.routers.gitea.entrypoints=websecure"
- "traefik.http.routers.gitea.tls.certresolver=myresolver" - "traefik.http.routers.gitea.tls.certresolver=myresolver"
- "traefik.http.services.gitea.loadbalancer.server.port=3000" - "traefik.http.services.gitea.loadbalancer.server.port=3000"

View File

@ -7,8 +7,8 @@ services:
PUID: 1000 PUID: 1000
PGID: 1000 PGID: 1000
ports: ports:
- "100.104.163.2:4004:3000" - "${HOST}:4004:3000"
volumes: volumes:
- ${PWD}/config:/app/config # Make sure your local config directory exists - ${PWD}/config:/app/config
- /var/run/docker.sock:/var/run/docker.sock:ro # optional, for docker integrations - /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped restart: unless-stopped

View File

@ -5,7 +5,7 @@ services:
container_name: "${LD_CONTAINER_NAME:-linkding}" container_name: "${LD_CONTAINER_NAME:-linkding}"
image: sissbruecker/linkding:latest image: sissbruecker/linkding:latest
ports: ports:
- "100.104.163.2:${LD_HOST_PORT:-9090}:9090" - "${LD_HOST}:${LD_HOST_PORT:-9090}:9090"
volumes: volumes:
- "${LD_HOST_DATA_DIR:-./data}:/etc/linkding/data" - "${LD_HOST_DATA_DIR:-./data}:/etc/linkding/data"
env_file: env_file:

View File

@ -19,7 +19,7 @@ services:
image: nextcloud:latest image: nextcloud:latest
restart: always restart: always
ports: ports:
- "100.104.163.2:8080:80" - "${HOST}:8080:80"
volumes: volumes:
- ${PWD}/nextcloud:/var/www/html - ${PWD}/nextcloud:/var/www/html
- /mnt/nextcloud_data:/var/www/html/data - /mnt/nextcloud_data:/var/www/html/data
@ -45,12 +45,12 @@ volumes:
secrets: secrets:
nextcloud_admin_password: nextcloud_admin_password:
file: /etc/secure_config/.nextcloud_admin_password.txt # put admin password in this file file: /etc/secure_config/.nextcloud_admin_password.txt
nextcloud_admin_user: nextcloud_admin_user:
file: /etc/secure_config/.nextcloud_admin_user.txt # put admin username in this file file: /etc/secure_config/.nextcloud_admin_user.txt
postgres_db: postgres_db:
file: /etc/secure_config/.postgres_db.txt # put postgresql db name in this file file: /etc/secure_config/.postgres_db.txt
postgres_password: postgres_password:
file: /etc/secure_config/.postgres_password.txt # put postgresql password in this file file: /etc/secure_config/.postgres_password.txt
postgres_user: postgres_user:
file: /etc/secure_config/.postgres_user.txt # put postgresql username in this file file: /etc/secure_config/.postgres_user.txt

View File

@ -14,12 +14,12 @@ services:
- seccomp:unconfined - seccomp:unconfined
- apparmor:unconfined - apparmor:unconfined
ports: ports:
- "100.104.163.2:2342:2342" - "${HOST}:2342:2342"
environment: environment:
PHOTOPRISM_ADMIN_USER: "admin" # admin login username PHOTOPRISM_ADMIN_USER: "admin" # admin login username
PHOTOPRISM_ADMIN_PASSWORD: ${PHOTOPRISM_DATABASE_PASSWORD} # initial admin password (8-72 characters) PHOTOPRISM_ADMIN_PASSWORD: ${PHOTOPRISM_DATABASE_PASSWORD} # initial admin password (8-72 characters)
PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password) PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password)
PHOTOPRISM_SITE_URL: "http://100.104.163.2:2342/" # server URL in the format "http(s)://domain.name(:port)/(path)" PHOTOPRISM_SITE_URL: "http://${HOST}:2342/" # server URL in the format "http(s)://domain.name(:port)/(path)"
PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available
PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available
PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video) PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video)

View File

@ -30,7 +30,7 @@ services:
--keep-monthly 12 --keep-monthly 12
B2_ACCOUNT_ID: ${B2_ACCOUNT_ID} B2_ACCOUNT_ID: ${B2_ACCOUNT_ID}
B2_ACCOUNT_KEY: ${B2_ACCOUNT_KEY} B2_ACCOUNT_KEY: ${B2_ACCOUNT_KEY}
TZ: 'Europe/Berlin' TZ: ${RESTIC_TIMEZONE}
prune: prune:
image: mazzolino/restic:1.7.1 image: mazzolino/restic:1.7.1
@ -44,7 +44,7 @@ services:
RESTIC_PASSWORD: ${RESTIC_PASSWORD} RESTIC_PASSWORD: ${RESTIC_PASSWORD}
B2_ACCOUNT_ID: ${B2_ACCOUNT_ID} B2_ACCOUNT_ID: ${B2_ACCOUNT_ID}
B2_ACCOUNT_KEY: ${B2_ACCOUNT_KEY} B2_ACCOUNT_KEY: ${B2_ACCOUNT_KEY}
TZ: 'Europe/Berlin' TZ: ${RESTIC_TIMEZONE}
check: check:
image: mazzolino/restic:1.7.1 image: mazzolino/restic:1.7.1
@ -60,7 +60,7 @@ services:
RESTIC_PASSWORD: ${RESTIC_PASSWORD} RESTIC_PASSWORD: ${RESTIC_PASSWORD}
B2_ACCOUNT_ID: ${B2_ACCOUNT_ID} B2_ACCOUNT_ID: ${B2_ACCOUNT_ID}
B2_ACCOUNT_KEY: ${B2_ACCOUNT_KEY} B2_ACCOUNT_KEY: ${B2_ACCOUNT_KEY}
TZ: 'Europe/Berlin' TZ: ${RESTIC_TIMEZONE}
networks: networks:
private: {} private: {}

View File

@ -11,7 +11,7 @@ services:
volumes: volumes:
- ${PWD}/st-sync:/var/syncthing - ${PWD}/st-sync:/var/syncthing
ports: ports:
- "100.104.163.2:8384:8384" # Web UI - "{HOST}:8384:8384" # Web UI
- 22000:22000/tcp # TCP file transfers - 22000:22000/tcp # TCP file transfers
- 22000:22000/udp # QUIC file transfers - 22000:22000/udp # QUIC file transfers
- 21027:21027/udp # Receive local discovery broadcasts - 21027:21027/udp # Receive local discovery broadcasts

View File

@ -1,38 +1,37 @@
version: "3.3" version: "3.3"
services: services:
traefik: traefik:
image: "traefik:latest" image: "traefik:${TRAEFIK_VERSION}"
container_name: "traefik" container_name: "traefik"
command: command:
- "--api.dashboard=true" - "--api.dashboard=${TRAEFIK_API_DASHBOARD}"
- "--api.insecure=false" - "--api.insecure=${TRAEFIK_API_INSECURE}"
- "--providers.docker=true" - "--providers.docker=${TRAEFIK_PROVIDERS_DOCKER}"
- "--providers.docker.exposedbydefault=false" - "--providers.docker.exposedbydefault=${TRAEFIK_PROVIDERS_DOCKER_EXPOSEDBYDEFAULT}"
- "--entrypoints.web.address=:9091" - "--entrypoints.web.address=${TRAEFIK_ENTRYPOINTS_WEB_ADDRESS}"
- "--entrypoints.websecure.address=:443" - "--entrypoints.websecure.address=${TRAEFIK_ENTRYPOINTS_WEBSECURE_ADDRESS}"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true" - "--certificatesresolvers.myresolver.acme.tlschallenge=${TRAEFIK_CERTIFICATESRESOLVERS_MYRESOLVER_ACME_TLSCHALLENGE}"
- "--certificatesresolvers.myresolver.acme.email=mail@velouria.dev" - "--certificatesresolvers.myresolver.acme.email=${TRAEFIK_CERTIFICATESRESOLVERS_MYRESOLVER_ACME_EMAIL}"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" - "--certificatesresolvers.myresolver.acme.storage=${TRAEFIK_CERTIFICATESRESOLVERS_MYRESOLVER_ACME_STORAGE}"
ports: ports:
- "9091:80" - "${TRAEFIK_PORTS}"
- "443:443"
volumes: volumes:
- "./letsencrypt:/letsencrypt" - "${TRAEFIK_VOLUMES_LETSENCRYPT}"
- "/var/run/docker.sock:/var/run/docker.sock:ro" - "${TRAEFIK_VOLUMES_DOCKER_SOCK}"
labels: labels:
- "traefik.enable=true" - "traefik.enable=${TRAEFIK_LABELS_ENABLE}"
- "traefik.http.routers.traefik.rule=Host(`traefik.velouria.dev`)" - "traefik.http.routers.traefik.rule=${TRAEFIK_LABELS_ROUTER_RULE}"
- "traefik.http.routers.traefik.entrypoints=websecure" - "traefik.http.routers.traefik.entrypoints=${TRAEFIK_LABELS_ROUTER_ENTRYPOINTS}"
- "traefik.http.routers.traefik.service=api@internal" - "traefik.http.routers.traefik.service=${TRAEFIK_LABELS_ROUTER_SERVICE}"
- "traefik.http.routers.traefik.tls.certresolver=myresolver" - "traefik.http.routers.traefik.tls.certresolver=${TRAEFIK_LABELS_ROUTER_TLS_CERTRESOLVER}"
- "traefik.http.routers.traefik.middlewares=traefik-auth" - "traefik.http.routers.traefik.middlewares=${TRAEFIK_LABELS_ROUTER_MIDDLEWARES}"
- "traefik.http.middlewares.traefik-auth.basicauth.users=user:$$apr1$$DzkytTmy$$B/p/aGYr4N4iH0JW8/zbg/" - "traefik.http.middlewares.traefik-auth.basicauth.users=${TRAEFIK_MIDDLEWARES_TRAEFIK_AUTH_USERS}"
- "homepage.group=Base" - "homepage.group=${TRAEFIK_HOMEPAGE_GROUP}"
- "homepage.name=Traefik" - "homepage.name=${TRAEFIK_HOMEPAGE_NAME}"
- "homepage.href=https://traefik.velouria.dev/" - "homepage.href=${TRAEFIK_HOMEPAGE_HREF}"
networks: networks:
- traefik_network - traefik_network
networks: networks:
traefik_network: traefik_network
external: true external: true