From e650d80b1e74b2617c1865c2b014660b479ef8ee Mon Sep 17 00:00:00 2001 From: myve Date: Sat, 10 Aug 2024 09:07:11 +0000 Subject: [PATCH] Reboot --- commafeed/.env | 13 +++ commafeed/docker-compose.yaml | 56 ++++++++++ dashy/.env | 9 ++ dashy/docker-compose.yaml | 25 +++++ fireshare/.env | 13 +++ fireshare/docker-compose.yaml | 29 +++++ forgejo/.env | 12 +++ forgejo/docker-compose.yaml | 75 +++++++++++++ immich/.env | 14 +++ immich/docker-compose.yaml | 95 +++++++++++++++++ invidious/.env | 15 +++ invidious/docker-compose.yaml | 59 +++++++++++ jellyfin/.env | 9 ++ jellyfin/docker-compose.yaml | 26 +++++ linkding/.env | 13 +++ linkding/docker-compose.yaml | 43 ++++++++ linkstack/.env | 11 ++ linkstack/docker-compose.yaml | 25 +++++ matrix/.env | 12 +++ matrix/docker-compose.yaml | 33 ++++++ nextcloud/.env | 18 ++++ nextcloud/docker-compose.yaml | 126 ++++++++++++++++++++++ nitter/.env | 9 ++ nitter/docker-compose.yaml | 52 +++++++++ olivetin/.env | 9 ++ olivetin/docker-compose.yaml | 17 +++ ollama/.env | 9 ++ ollama/docker-compose.yaml | 43 ++++++++ onlyoffice/.env | 20 ++++ onlyoffice/docker-compose.yaml | 165 +++++++++++++++++++++++++++++ paperless/.env | 14 +++ paperless/docker-compose.yaml | 63 +++++++++++ passwordpusher/.env | 10 ++ passwordpusher/docker-compose.yaml | 24 +++++ pihole/.env | 11 ++ pihole/docker-compose.yaml | 39 +++++++ psitransfer/.env | 11 ++ psitransfer/docker-compose.yaml | 26 +++++ qbittorrent/.env | 9 ++ qbittorrent/docker-compose.yaml | 27 +++++ redlib/.env | 9 ++ redlib/docker-compose.yaml | 28 +++++ searxng/.env | 10 ++ searxng/docker-compose.yaml | 46 ++++++++ send/.env | 10 ++ send/docker-compose.yaml | 43 ++++++++ shlink/.env | 14 +++ shlink/docker-compose.yaml | 62 +++++++++++ stirling-pdf/.env | 9 ++ stirling-pdf/docker-compose.yaml | 20 ++++ tandoor/.env | 13 +++ tandoor/docker-compose.yaml | 43 ++++++++ usememos/.env | 9 ++ usememos/docker-compose.yaml | 17 +++ vaultwarden/.env | 11 ++ vaultwarden/docker-compose.yaml | 36 +++++++ vikunja/.env | 14 +++ vikunja/docker-compose.yaml | 64 +++++++++++ 58 files changed, 1747 insertions(+) create mode 100644 commafeed/.env create mode 100644 commafeed/docker-compose.yaml create mode 100644 dashy/.env create mode 100644 dashy/docker-compose.yaml create mode 100644 fireshare/.env create mode 100644 fireshare/docker-compose.yaml create mode 100644 forgejo/.env create mode 100644 forgejo/docker-compose.yaml create mode 100644 immich/.env create mode 100644 immich/docker-compose.yaml create mode 100644 invidious/.env create mode 100644 invidious/docker-compose.yaml create mode 100644 jellyfin/.env create mode 100644 jellyfin/docker-compose.yaml create mode 100644 linkding/.env create mode 100644 linkding/docker-compose.yaml create mode 100644 linkstack/.env create mode 100644 linkstack/docker-compose.yaml create mode 100644 matrix/.env create mode 100644 matrix/docker-compose.yaml create mode 100644 nextcloud/.env create mode 100644 nextcloud/docker-compose.yaml create mode 100644 nitter/.env create mode 100644 nitter/docker-compose.yaml create mode 100644 olivetin/.env create mode 100644 olivetin/docker-compose.yaml create mode 100644 ollama/.env create mode 100644 ollama/docker-compose.yaml create mode 100644 onlyoffice/.env create mode 100644 onlyoffice/docker-compose.yaml create mode 100644 paperless/.env create mode 100644 paperless/docker-compose.yaml create mode 100644 passwordpusher/.env create mode 100644 passwordpusher/docker-compose.yaml create mode 100644 pihole/.env create mode 100644 pihole/docker-compose.yaml create mode 100644 psitransfer/.env create mode 100644 psitransfer/docker-compose.yaml create mode 100644 qbittorrent/.env create mode 100644 qbittorrent/docker-compose.yaml create mode 100644 redlib/.env create mode 100644 redlib/docker-compose.yaml create mode 100644 searxng/.env create mode 100644 searxng/docker-compose.yaml create mode 100644 send/.env create mode 100644 send/docker-compose.yaml create mode 100644 shlink/.env create mode 100644 shlink/docker-compose.yaml create mode 100644 stirling-pdf/.env create mode 100644 stirling-pdf/docker-compose.yaml create mode 100644 tandoor/.env create mode 100644 tandoor/docker-compose.yaml create mode 100644 usememos/.env create mode 100644 usememos/docker-compose.yaml create mode 100644 vaultwarden/.env create mode 100644 vaultwarden/docker-compose.yaml create mode 100644 vikunja/.env create mode 100644 vikunja/docker-compose.yaml diff --git a/commafeed/.env b/commafeed/.env new file mode 100644 index 0000000..a429698 --- /dev/null +++ b/commafeed/.env @@ -0,0 +1,13 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Commafeed +COMMAFEED_PORT= +COMMAFEED_DBNAME= +COMMAFEED_DBUSER= +COMMAFEED_DBPASS= +COMMAFEED_URL= diff --git a/commafeed/docker-compose.yaml b/commafeed/docker-compose.yaml new file mode 100644 index 0000000..0a00685 --- /dev/null +++ b/commafeed/docker-compose.yaml @@ -0,0 +1,56 @@ +services: + + # https://hub.docker.com/r/athou/commafeed + commafeed: + image: ${REGISTRY}/commafeed + container_name: commafeed + restart: unless-stopped + ports: + - ${COMMAFEED_PORT:-8082}:8082 + environment: + # PostgreSQL + CF_DATABASE_DRIVERCLASS: org.postgresql.Driver + CF_DATABASE_URL: jdbc:postgresql://commafeed-postgresql:5432/${COMMAFEED_DBNAME:-commafeed} + CF_DATABASE_USER: ${COMMAFEED_DBUSER:-commafeed} + CF_DATABASE_PASSWORD: ${COMMAFEED_DBPASS:-commafeed} + # App settings + CF_APP_PUBLICURL: ${COMMAFEED_URL:-http://localhost:${COMMAFEED_PORT:-8082}} + CF_APP_IMAGEPROXYENABLED: true + CF_APP_STRICTPASSWORDPOLICY: false + # Redis + CF_APP_CACHE: redis + CF_REDIS_HOST: commafeed-redis + CF_REDIS_PORT: 6379 + volumes: + - ./data:/commafeed/data + depends_on: + - commafeed-postgresql + - commafeed-redis + networks: + - commafeed + commafeed-postgresql: + image: ${REGISTRY}/postgres + container_name: commafeed-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${COMMAFEED_DBNAME:-commafeed} + POSTGRES_USER: ${COMMAFEED_DBUSER:-commafeed} + POSTGRES_PASSWORD: ${COMMAFEED_DBPASS:-commafeed} + volumes: + - ./sql:/var/lib/postgresql/data:rw + networks: + - commafeed + commafeed-redis: + image: ${REGISTRY}/valkey + container_name: commafeed-redis + restart: unless-stopped + volumes: + - ./redis:/data + healthcheck: + test: redis-cli ping + networks: + - commafeed + +networks: + commafeed: + external: false diff --git a/dashy/.env b/dashy/.env new file mode 100644 index 0000000..19c0a9b --- /dev/null +++ b/dashy/.env @@ -0,0 +1,9 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Dashy +DASHY_PORT= diff --git a/dashy/docker-compose.yaml b/dashy/docker-compose.yaml new file mode 100644 index 0000000..05a397f --- /dev/null +++ b/dashy/docker-compose.yaml @@ -0,0 +1,25 @@ +services: + + # dashy (https://github.com/Lissy93/dashy/blob/master/docker-compose.yml) + dashy: + image: ${REGISTRY}/dashy + container_name: dashy + restart: unless-stopped + ports: + - ${DASHY_PORT:-8080}:8080 + environment: + NODE_ENV: production + healthcheck: + test: ['CMD', 'node', '/app/services/healthcheck'] + interval: 1m30s + timeout: 10s + retries: 3 + start_period: 40s + volumes: + - ./conf.yml:/app/user-data/conf.yml + networks: + - dashy + +networks: + dashy: + external: false diff --git a/fireshare/.env b/fireshare/.env new file mode 100644 index 0000000..3b68079 --- /dev/null +++ b/fireshare/.env @@ -0,0 +1,13 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Fireshare +FIRESHARE_PORT= +FIRESHARE_ADMIN= +FIRESHARE_PASSWORD= +FIRESHARE_SECRET= +FIRESHARE_URL= diff --git a/fireshare/docker-compose.yaml b/fireshare/docker-compose.yaml new file mode 100644 index 0000000..5298e40 --- /dev/null +++ b/fireshare/docker-compose.yaml @@ -0,0 +1,29 @@ +services: + + # https://github.com/ShaneIsrael/fireshare + fireshare: + image: ${REGISTRY}/fireshare + container_name: fireshare + restart: unless-stopped + ports: + - ${FIRESHARE_PORT:-8080}:80 + volumes: + - ./data:/data + - ./processed:/processed + - ./videos:/videos + - ./index.html:/app/build/index.html + environment: + ADMIN_USERNAME: ${FIRESHARE_ADMIN:-admin} + ADMIN_PASSWORD: ${FIRESHARE_PASSWORD:-admin} + SECRET_KEY: ${FIRESHARE_SECRET:-secret} + MINUTES_BETWEEN_VIDEO_SCANS: 5 + THUMBNAIL_VIDEO_LOCATION: 0 + DOMAIN: ${FIRESHARE_URL:-localhost} + PUID: 1000 + PGID: 1000 + networks: + - fireshare + +networks: + fireshare: + external: false diff --git a/forgejo/.env b/forgejo/.env new file mode 100644 index 0000000..a5c94e4 --- /dev/null +++ b/forgejo/.env @@ -0,0 +1,12 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Forgejo +FORGEJO_PORT= +FORGEJO_SSH_PORT= +FORGEJO_DBNAME= +FORGEJO_DBUSER= +FORGEJO_DBPASS= +FORGEJO_TITLE= +FORGEJO_URL= diff --git a/forgejo/docker-compose.yaml b/forgejo/docker-compose.yaml new file mode 100644 index 0000000..e0b578e --- /dev/null +++ b/forgejo/docker-compose.yaml @@ -0,0 +1,75 @@ +services: + + # https://forgejo.org/docs/latest/admin/installation-docker/ + forgejo: + image: codeberg.org/forgejo/forgejo:8-rootless + container_name: forgejo + restart: unless-stopped + ports: + - ${FORGEJO_PORT:-3000}:3000 + - ${FORGEJO_SSH_PORT:-2222}:22 + environment: + USER_UID: 1000 + USER_GID: 1000 + + FORGEJO__database__DB_TYPE: postgres + FORGEJO__database__HOST: forgejo-postgresql:5432 + FORGEJO__database__NAME: ${FORGEJO_DBNAME:-forgejo} + FORGEJO__database__USER: ${FORGEJO_DBUSER:-forgejo} + FORGEJO__database__PASSWD: ${FORGEJO_DBPASS:-forgejo} + + FORGEJO__DEFAULT__APP_NAME: ${FORGEJO_TITLE:-Forgejo} + FORGEJO__service__DISABLE_REGISTRATION: true + FORGEJO__service__SHOW_REGISTRATION_BUTTON: false + FORGEJO__other__SHOW_FOOTER_VERSION: false + FORGEJO__ui__SHOW_USER_EMAIL: false + + FORGEJO__repository__DEFAULT_BRANCH: master + FORGEJO__repository__ENABLE_PUSH_CREATE_USER: true + FORGEJO__repository__ENABLE_PUSH_CREATE_ORG: true + FORGEJO__repository.upload__FILE_MAX_SIZE: 256 + FORGEJO__mirror__DEFAULT_INTERVAL: 24h + + FORGEJO__server__ROOT_URL: ${FORGEJO_URL:-http://localhost:${FORGEJO_PORT:-3000}} + FORGEJO__server__LANDING_PAGE: login + + FORGEJO__migrations__ALLOWED_DOMAINS: "*" + + FORGEJO__cache__ENABLED: true + FORGEJO__cache__ADAPTER: redis + FORGEJO__cache__HOST: redis://forgejo-redis:6379/0?pool_size=100&idle_timeout=180s + + FORGEJO__security__LOGIN_REMEMBER_DAYS: 365 + volumes: + - ./data:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + depends_on: + - forgejo-postgresql + - forgejo-redis + networks: + - forgejo + forgejo-postgresql: + image: postgres:latest + container_name: forgejo-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${FORGEJO_DBNAME:-forgejo} + POSTGRES_USER: ${FORGEJO_DBUSER:-forgejo} + POSTGRES_PASSWORD: ${FORGEJO_DBPASS:-forgejo} + volumes: + - ./sql:/var/lib/postgresql/data:rw + networks: + - forgejo + forgejo-redis: + image: valkey/valkey + container_name: forgejo-redis + restart: unless-stopped + volumes: + - ./redis:/data + networks: + - forgejo + +networks: + forgejo: + external: false diff --git a/immich/.env b/immich/.env new file mode 100644 index 0000000..4f5cdeb --- /dev/null +++ b/immich/.env @@ -0,0 +1,14 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Immich +IMMICH_PORT= +IMMICH_REDIS_HOST= +IMMICH_DB_HOST= +IMMICH_DB_NAME= +IMMICH_DB_USER= +IMMICH_DB_PASS= diff --git a/immich/docker-compose.yaml b/immich/docker-compose.yaml new file mode 100644 index 0000000..907b719 --- /dev/null +++ b/immich/docker-compose.yaml @@ -0,0 +1,95 @@ +services: + + # https://immich.app/docs/install/docker-compose + immich-server: + image: ${REGISTRY}/immich-server + container_name: immich-server + restart: unless-stopped + command: ['start.sh', 'immich'] + ports: + - ${IMMICH_PORT:-2283}:3001 + environment: + REDIS_HOSTNAME: ${IMMICH_REDIS_HOST} + DB_HOSTNAME: ${IMMICH_DB_HOST} + DB_USERNAME: ${IMMICH_DB_USER} + DB_PASSWORD: ${IMMICH_DB_PASS} + DB_DATABASE_NAME: ${IMMICH_DB_NAME} + volumes: + - ./library:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + depends_on: + - immich-redis + - immich-postgresql + networks: + - immich + immich-microservices: + image: ${REGISTRY}/immich-server + container_name: immich-microservices + restart: unless-stopped + command: ['start.sh', 'microservices'] + environment: + REDIS_HOSTNAME: ${IMMICH_REDIS_HOST} + DB_HOSTNAME: ${IMMICH_DB_HOST} + DB_USERNAME: ${IMMICH_DB_USER} + DB_PASSWORD: ${IMMICH_DB_PASS} + DB_DATABASE_NAME: ${IMMICH_DB_NAME} + volumes: + - ./library:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + - "/nextcloud/baby/Pikachu and Sable/Both Babies:/watch/family/babies/both:ro" + - "/nextcloud/me/Pictures/Forever Starts Here:/watch/family/myve:ro" + - "/nextcloud/me/Pictures/Pikachu:/watch/family/babies/pikachu:ro" + - "/nextcloud/me/Pictures/Sable:/watch/family/babies/sable:ro" + depends_on: + - immich-redis + - immich-postgresql + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: + - gpu + - compute + - video + networks: + - immich + immich-machine-learning: + image: ${REGISTRY}/immich-machine-learning + container_name: immich-machine-learning + restart: unless-stopped + volumes: + - ./model-cache:/cache + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: + - gpu + networks: + - immich + immich-redis: + image: ${REGISTRY}/valkey + container_name: immich-redis + restart: unless-stopped + networks: + - immich + immich-postgresql: + image: ${REGISTRY}/pgvecto-rs + container_name: immich-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${IMMICH_DB_NAME} + POSTGRES_USER: ${IMMICH_DB_USER} + POSTGRES_PASSWORD: ${IMMICH_DB_PASS} + volumes: + - ./sql:/var/lib/postgresql/data:rw + networks: + - immich + +networks: + immich: + external: false diff --git a/invidious/.env b/invidious/.env new file mode 100644 index 0000000..6563992 --- /dev/null +++ b/invidious/.env @@ -0,0 +1,15 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Invidious +INVIDIOUS_PORT= +INVIDIOUS_DBNAME= +INVIDIOUS_DBUSER= +INVIDIOUS_DBPASS= +INVIDIOUS_URL= +INVIDIOUS_ADMIN= +INVIDIOUS_HMAC= diff --git a/invidious/docker-compose.yaml b/invidious/docker-compose.yaml new file mode 100644 index 0000000..b4f2308 --- /dev/null +++ b/invidious/docker-compose.yaml @@ -0,0 +1,59 @@ +services: + + # https://github.com/iv-org/invidious/releases/latest + # invidious + invidious: + image: ${REGISTRY}/invidious + container_name: invidious + restart: unless-stopped + ports: + - ${INVIDIOUS_PORT:-3000}:3000 + environment: + INVIDIOUS_CONFIG: | + db: + host: invidious-postgresql + port: 5432 + dbname: ${INVIDIOUS_DBNAME:-invidious} + user: ${INVIDIOUS_DBUSER:-invidious} + password: ${INVIDIOUS_DBPASS:-invidious} + check_tables: true + domain: ${INVIDIOUS_URL:-https://localhost:${INVIDIOUS_PORT:-3000}} + https_only: true + registration_enabled: false + admins: ["${INVIDIOUS_ADMIN:-admin}"] + hmac_key: ${INVIDIOUS_HMAC:-invidious} + quality: dash + quality_dash: auto + healthcheck: + test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1 + interval: 30s + timeout: 5s + retries: 2 + logging: + options: + max-size: 1G + max-file: 4 + depends_on: + - invidious-postgresql + networks: + - invidious + invidious-postgresql: + image: ${REGISTRY}/postgres + container_name: invidious-postgresql + restart: unless-stopped + volumes: + - ./sql:/var/lib/postgresql/data + - ./config/sql:/config/sql + - ./docker/init-invidious-postgresql.sh:/docker-entrypoint-initdb.d/init-invidious-postgresql.sh + environment: + POSTGRES_DB: ${INVIDIOUS_DBNAME:-invidious} + POSTGRES_USER: ${INVIDIOUS_DBUSER:-invidious} + POSTGRES_PASSWORD: ${INVIDIOUS_DBPASS:-invidious} + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] + networks: + - invidious + +networks: + invidious: + external: false diff --git a/jellyfin/.env b/jellyfin/.env new file mode 100644 index 0000000..9605c39 --- /dev/null +++ b/jellyfin/.env @@ -0,0 +1,9 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Jellyfin port +JELLYFIN_PORT=4200 diff --git a/jellyfin/docker-compose.yaml b/jellyfin/docker-compose.yaml new file mode 100644 index 0000000..e8a04fe --- /dev/null +++ b/jellyfin/docker-compose.yaml @@ -0,0 +1,26 @@ +services: + + jellyfin: + image: ${REGISTRY}/jellyfin + container_name: jellyfin + restart: unless-stopped + ports: + - ${JELLYFIN_PORT:-8096}:8096/tcp + user: 1000:984 + volumes: + - ./config:/config + - ./cache:/cache + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: + - gpu + networks: + - jellyfin + +networks: + jellyfin: + external: false diff --git a/linkding/.env b/linkding/.env new file mode 100644 index 0000000..52766e8 --- /dev/null +++ b/linkding/.env @@ -0,0 +1,13 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Linkding +LINKDING_PORT= +LINKDING_DBNAME= +LINKDING_DBUSER= +LINKDING_DBPASS= +LINKDING_URL= diff --git a/linkding/docker-compose.yaml b/linkding/docker-compose.yaml new file mode 100644 index 0000000..6ac8c80 --- /dev/null +++ b/linkding/docker-compose.yaml @@ -0,0 +1,43 @@ +services: + + # linkding (https://github.com/sissbruecker/linkding) + linkding: + image: ${REGISTRY}/linkding + container_name: linkding + restart: unless-stopped + ports: + - ${LINKDING_PORT:-9090}:9090 + environment: + LD_DB_ENGINE: postgres + LD_DB_HOST: linkding-postgresql + LD_DB_PORT: 5432 + LD_DB_DATABASE: ${LINKDING_DBNAME:-linkding} + LD_DB_USER: ${LINKDING_DBUSER:-linkding} + LD_DB_PASSWORD: ${LINKDING_DBPASS:-linkding} + + LD_DISABLE_BACKGROUND_TASKS: False + LD_DISABLE_URL_VALIDATION: False + LD_ENABLE_AUTH_PROXY: False + LD_CSRF_TRUSTED_ORIGINS: ${LINKDING_URL:-http://localhost:${LINKDING_PORT:-9090}} + volumes: + - ./data:/etc/linkding/data + depends_on: + - linkding-postgresql + networks: + - linkding + linkding-postgresql: + image: ${REGISTRY}/postgres + container_name: linkding-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${LINKDING_DBNAME:-linkding} + POSTGRES_USER: ${LINKDING_DBUSER:-linkding} + POSTGRES_PASSWORD: ${LINKDING_DBPASS:-linkding} + volumes: + - ./sql:/var/lib/postgresql/data:rw + networks: + - linkding + +networks: + linkding: + external: false diff --git a/linkstack/.env b/linkstack/.env new file mode 100644 index 0000000..1b744d4 --- /dev/null +++ b/linkstack/.env @@ -0,0 +1,11 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Linkstack +LINKSTACK_PORT= +LINKSTACK_ADMIN= +LINKSTACK_DOMAIN= diff --git a/linkstack/docker-compose.yaml b/linkstack/docker-compose.yaml new file mode 100644 index 0000000..dfbc700 --- /dev/null +++ b/linkstack/docker-compose.yaml @@ -0,0 +1,25 @@ +services: + + # https://github.com/LinkStackOrg/linkstack-docker/blob/main/docker-compose.yml + linkstack: + image: ${REGISTRY}/linkstack + container_name: linkstack + restart: unless-stopped + ports: + - ${LINKSTACK_PORT:-443}:443 + environment: + TZ: UTC + SERVER_ADMIN: ${LINKSTACK_ADMIN:-admin} + HTTP_SERVER_NAME: ${LINKSTACK_DOMAIN:-localhost} + HTTPS_SERVER_NAME: ${LINKSTACK_DOMAIN:-localhost} + LOG_LEVEL: info + PHP_MEMORY_LIMIT: 8G + UPLOAD_MAX_FILESIZE: 2G + volumes: + - ./data:/htdocs + networks: + - linkstack + +networks: + linkstack: + external: false diff --git a/matrix/.env b/matrix/.env new file mode 100644 index 0000000..a7c1ba3 --- /dev/null +++ b/matrix/.env @@ -0,0 +1,12 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Matrix +MATRIX_PORT= +MATRIX_DBNAME= +MATRIX_DBUSER= +MATRIX_DBPASS= diff --git a/matrix/docker-compose.yaml b/matrix/docker-compose.yaml new file mode 100644 index 0000000..2e80943 --- /dev/null +++ b/matrix/docker-compose.yaml @@ -0,0 +1,33 @@ +services: + + # Matrix (https://github.com/element-hq/synapse) + # register_new_matrix_user -c homeserver.yaml http://localhost:8008 + matrix: + image: ${REGISTRY}/synapse + container_name: matrix + restart: unless-stopped + ports: + - ${MATRIX_PORT:-8008}:8008 + volumes: + - ./data:/data:rw + depends_on: + - matrix-postgresql + networks: + - matrix + matrix-postgresql: + image: ${REGISTRY}/postgres + container_name: matrix-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${MATRIX_DBNAME:-synapse} + POSTGRES_USER: ${MATRIX_DBUSER:-synapse} + POSTGRES_PASSWORD: ${MATRIX_DBPASS:-synapse} + POSTGRES_INITDB_ARGS: --encoding=UTF8 --locale=C + volumes: + - ./sql:/var/lib/postgresql/data:rw + networks: + - matrix + +networks: + matrix: + external: false diff --git a/nextcloud/.env b/nextcloud/.env new file mode 100644 index 0000000..be09a12 --- /dev/null +++ b/nextcloud/.env @@ -0,0 +1,18 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Nextcloud +NEXTCLOUD_PORT= +NEXTCLOUD_DBNAME= +NEXTCLOUD_DBUSER= +NEXTCLOUD_DBPASS= + +# Onlyoffice Document Server +ONLYOFFICE_DS_JWTSECRET= +ONLYOFFICE_DS_JWTHEADER= +ONLYOFFICE_DS_DBNAME= +ONLYOFFICE_DS_DBUSER= diff --git a/nextcloud/docker-compose.yaml b/nextcloud/docker-compose.yaml new file mode 100644 index 0000000..05f5f2c --- /dev/null +++ b/nextcloud/docker-compose.yaml @@ -0,0 +1,126 @@ +services: + + # nextcloud (https://github.com/nextcloud/docker) + nextcloud-nginx: + image: ${REGISTRY}/nginx + container_name: nextcloud-nginx + restart: unless-stopped + ports: + - ${NEXTCLOUD_PORT:-80}:80 + volumes: + - ./nginx.conf:/etc/nginx/nginx.conf + - ./app:/var/www/html + depends_on: + - nextcloud + - onlyoffice-document-server + networks: + - nextcloud + nextcloud: + image: ${REGISTRY}/nextcloud + container_name: nextcloud + restart: unless-stopped + environment: + # Redis + REDIS_HOST: nextcloud-redis + # PostgreSQL + POSTGRES_HOST: nextcloud-postgresql + POSTGRES_DB: ${NEXTCLOUD_DBNAME:-nextcloud} + POSTGRES_USER: ${NEXTCLOUD_DBUSER:-nextcloud} + POSTGRES_PASSWORD: ${NEXTCLOUD_DBPASS:-nextcloud} + # PHP + PHP_MEMORY_LIMIT: 16G + PHP_UPLOAD_LIMIT: 0 + volumes: + - ./app:/var/www/html + - ./data:/var/www/html/data + - ./php-fpm.conf:/usr/local/etc/php-fpm.d/zz-zpmchildren.conf + depends_on: + - nextcloud-postgresql + - nextcloud-redis + networks: + - nextcloud + nextcloud-postgresql: + image: ${REGISTRY}/postgres + container_name: nextcloud-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${NEXTCLOUD_DBNAME:-nextcloud} + POSTGRES_USER: ${NEXTCLOUD_DBUSER:-nextcloud} + POSTGRES_PASSWORD: ${NEXTCLOUD_DBPASS:-nextcloud} + volumes: + - ./sql:/var/lib/postgresql/data:rw + networks: + - nextcloud + nextcloud-redis: + image: ${REGISTRY}/valkey + container_name: nextcloud-redis + restart: unless-stopped + volumes: + - ./redis:/data + networks: + - nextcloud + + # Onlyoffice Document Server + onlyoffice-document-server: + image: ${REGISTRY}/onlyoffice/documentserver + container_name: onlyoffice-document-server + restart: unless-stopped + stdin_open: true + environment: + # JWT + JWT_ENABLED: true + JWT_SECRET: ${ONLYOFFICE_DS_JWTSECRET:-onlyoffice} + JWT_HEADER: ${ONLYOFFICE_DS_JWTHEADER:-onlyoffice} + # PostgreSQL + DB_TYPE: postgres + DB_HOST: onlyoffice-postgresql + DB_PORT: 5432 + DB_NAME: ${ONLYOFFICE_DS_DBNAME:-onlyoffice} + DB_USER: ${ONLYOFFICE_DS_DBUSER:-onlyoffice} + # Rabbitmq + AMQP_URI: amqp://guest:guest@onlyoffice-rabbitmq + # Redis + REDIS_SERVER_HOST: onlyoffice-redis + REDIS_SERVER_PORT: 6379 + volumes: + - ./onlyoffice/document/data:/var/www/onlyoffice/Data + - ./onlyoffice/document/log:/var/log/onlyoffice + - ./onlyoffice/document/fonts:/usr/share/fonts/truetype/custom + - ./onlyoffice/document/forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten + - ./onlyoffice/document/cache:/var/lib/onlyoffice + depends_on: + - onlyoffice-postgresql + - onlyoffice-rabbitmq + - onlyoffice-redis + networks: + - nextcloud + onlyoffice-postgresql: + image: ${REGISTRY}/postgres + container_name: onlyoffice-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${ONLYOFFICE_DS_DBNAME:-onlyoffice} + POSTGRES_USER: ${ONLYOFFICE_DS_DBUSER:-onlyoffice} + POSTGRES_HOST_AUTH_METHOD: trust + volumes: + - ./onlyoffice/postgresql:/var/lib/postgresql:rw + networks: + - nextcloud + onlyoffice-redis: + image: ${REGISTRY}/valkey + container_name: onlyoffice-redis + restart: unless-stopped + volumes: + - ./onlyoffice/redis:/data + networks: + - nextcloud + onlyoffice-rabbitmq: + image: ${REGISTRY}/rabbitmq + container_name: onlyoffice-rabbitmq + restart: unless-stopped + networks: + - nextcloud + +networks: + nextcloud: + external: false diff --git a/nitter/.env b/nitter/.env new file mode 100644 index 0000000..be62383 --- /dev/null +++ b/nitter/.env @@ -0,0 +1,9 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Nitter +NITTER_PORT= diff --git a/nitter/docker-compose.yaml b/nitter/docker-compose.yaml new file mode 100644 index 0000000..e7dc832 --- /dev/null +++ b/nitter/docker-compose.yaml @@ -0,0 +1,52 @@ +services: + + # https://github.com/PrivacyDevel/nitter/blob/master/docker-compose.yml + # https://github.com/zedeus/nitter/issues/1155#issuecomment-1917167072 + nitter: + image: ${REGISTRY}/nitter + container_name: nitter + restart: unless-stopped + ports: + - ${NITTER_PORT:-8080}:8080 + healthcheck: + test: wget -nv --tries=1 --spider http://127.0.0.1:8080/Jack/status/20 || exit 1 + interval: 30s + timeout: 5s + retries: 2 + volumes: + - ./nitter.conf:/src/nitter.conf:Z,ro + - ./guest_accounts.json:/src/guest_accounts.json + depends_on: + - nitter-redis + user: 1000:984 + read_only: true + security_opt: + - no-new-privileges:true + cap_drop: + - ALL + networks: + - nitter + nitter-redis: + image: ${REGISTRY}/valkey + container_name: nitter-redis + command: redis-server --save 60 1 --loglevel warning + volumes: + - ./redis:/data + restart: unless-stopped + healthcheck: + test: redis-cli ping + interval: 30s + timeout: 5s + retries: 2 + user: 1000:984 + read_only: true + security_opt: + - no-new-privileges:true + cap_drop: + - ALL + networks: + - nitter + +networks: + nitter: + external: false diff --git a/olivetin/.env b/olivetin/.env new file mode 100644 index 0000000..1403b60 --- /dev/null +++ b/olivetin/.env @@ -0,0 +1,9 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Olivetin +OLIVETIN_PORT= diff --git a/olivetin/docker-compose.yaml b/olivetin/docker-compose.yaml new file mode 100644 index 0000000..8fc9038 --- /dev/null +++ b/olivetin/docker-compose.yaml @@ -0,0 +1,17 @@ +services: + + # https://docs.olivetin.app/install-compose.html + olivetin: + container_name: olivetin + image: ${REGISTRY}/olivetin + restart: unless-stopped + ports: + - ${OLIVETIN_PORT:-1337}:1337 + volumes: + - ./config:/config + networks: + - olivetin + +networks: + olivetin: + external: false diff --git a/ollama/.env b/ollama/.env new file mode 100644 index 0000000..307d509 --- /dev/null +++ b/ollama/.env @@ -0,0 +1,9 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Ollama +OLLAMA_PORT=4100 diff --git a/ollama/docker-compose.yaml b/ollama/docker-compose.yaml new file mode 100644 index 0000000..8012c9f --- /dev/null +++ b/ollama/docker-compose.yaml @@ -0,0 +1,43 @@ +services: + + # https://github.com/open-webui/open-webui + ollama: + image: ${REGISTRY}/ollama + container_name: ollama + restart: unless-stopped + pull_policy: always + tty: true + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: + - gpu + volumes: + - ./app:/root/.ollama + networks: + - ollama + ollama-webui: + image: ${REGISTRY}/open-webui + container_name: ollama-webui + restart: unless-stopped + ports: + - ${OLLAMA_PORT:-8080}:8080 + environment: + OLLAMA_BASE_URL: http://ollama:11434 + CUSTOM_NAME: MyveAI + WEBUI_NAME: MyveAI + ENABLE_SIGNUP: False + DEFAULT_MODELS: llama3 + volumes: + - ./webui:/app/backend/data + depends_on: + - ollama + networks: + - ollama + +networks: + ollama: + external: false diff --git a/onlyoffice/.env b/onlyoffice/.env new file mode 100644 index 0000000..0bb83d9 --- /dev/null +++ b/onlyoffice/.env @@ -0,0 +1,20 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Onlyoffice Document Server +ONLYOFFICE_DS_JWTSECRET= +ONLYOFFICE_DS_JWTHEADER= +ONLYOFFICE_DS_DBNAME= +ONLYOFFICE_DS_DBUSER= + +# Onlyoffice Community Server +ONLYOFFICE_CS_PORT= +ONLYOFFICE_CS_MACHINEKEY= +ONLYOFFICE_CS_DBNAME= +ONLYOFFICE_CS_DBROOT= +ONLYOFFICE_CS_DBUSER= +ONLYOFFICE_CS_DBPASS= diff --git a/onlyoffice/docker-compose.yaml b/onlyoffice/docker-compose.yaml new file mode 100644 index 0000000..844a7d5 --- /dev/null +++ b/onlyoffice/docker-compose.yaml @@ -0,0 +1,165 @@ +services: + + # Onlyoffice Document Server + onlyoffice-document-server: + image: ${REGISTRY}/onlyoffice/documentserver + container_name: onlyoffice-document-server + restart: unless-stopped + stdin_open: true + environment: + # JWT + JWT_ENABLED: true + JWT_SECRET: ${ONLYOFFICE_DS_JWTSECRET:-onlyoffice} + JWT_HEADER: ${ONLYOFFICE_DS_JWTHEADER:-onlyoffice} + # PostgreSQL + DB_TYPE: postgres + DB_HOST: onlyoffice-postgresql + DB_PORT: 5432 + DB_NAME: ${ONLYOFFICE_DS_DBNAME:-onlyoffice} + DB_USER: ${ONLYOFFICE_DS_DBUSER:-onlyoffice} + # Rabbitmq + AMQP_URI: amqp://guest:guest@onlyoffice-rabbitmq + # Redis + REDIS_SERVER_HOST: onlyoffice-redis + REDIS_SERVER_PORT: 6379 + volumes: + - ./document/data:/var/www/onlyoffice/Data + - ./document/log:/var/log/onlyoffice + - ./document/fonts:/usr/share/fonts/truetype/custom + - ./document/forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten + - ./document/cache:/var/lib/onlyoffice + depends_on: + - onlyoffice-postgresql + - onlyoffice-rabbitmq + - onlyoffice-redis + networks: + - workspace + onlyoffice-postgresql: + image: ${REGISTRY}/postgres + container_name: onlyoffice-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${ONLYOFFICE_DS_DBNAME:-onlyoffice} + POSTGRES_USER: ${ONLYOFFICE_DS_DBUSER:-onlyoffice} + POSTGRES_HOST_AUTH_METHOD: trust + volumes: + - ./postgresql:/var/lib/postgresql:rw + networks: + - workspace + onlyoffice-redis: + image: ${REGISTRY}/valkey + container_name: onlyoffice-redis + restart: unless-stopped + volumes: + - ./redis:/data + networks: + - workspace + onlyoffice-rabbitmq: + image: ${REGISTRY}/rabbitmq + container_name: onlyoffice-rabbitmq + restart: unless-stopped + networks: + - workspace + + # Onlyoffice Community Server + onlyoffice-community-server: + image: ${REGISTRY}/onlyoffice/communityserver + container_name: onlyoffice-community-server + restart: unless-stopped + ports: + - ${ONLYOFFICE_CS_PORT:-80}:80 + stdin_open: true + tty: true + privileged: true + cgroup: host + environment: + ONLYOFFICE_CORE_MACHINEKEY: ${ONLYOFFICE_CS_MACHINEKEY:-onlyoffice} + + CONTROL_PANEL_PORT_80_TCP_ADDR: onlyoffice-control-panel + CONTROL_PANEL_PORT_80_TCP: 80 + + DOCUMENT_SERVER_PORT_80_TCP_ADDR: onlyoffice-document-server + DOCUMENT_SERVER_JWT_ENABLED: true + DOCUMENT_SERVER_JWT_SECRET: ${ONLYOFFICE_DS_JWTSECRET:-onlyoffice} + DOCUMENT_SERVER_JWT_HEADER: ${ONLYOFFICE_DS_JWTHEADER:-onlyoffice} + + MYSQL_SERVER_HOST: onlyoffice-mysql-server + MYSQL_SERVER_DB_NAME: ${ONLYOFFICE_CS_DBNAME:-onlyoffice} + MYSQL_SERVER_ROOT_PASSWORD: ${ONLYOFFICE_CS_DBROOT:-onlyoffice} + MYSQL_SERVER_USER: ${ONLYOFFICE_CS_DBUSER:-onlyoffice} + MYSQL_SERVER_PASS: ${ONLYOFFICE_CS_DBPASS:-onlyoffice} + + REDIS_SERVER_HOST: onlyoffice-redis + + ELASTICSEARCH_SERVER_HOST: onlyoffice-elasticsearch + ELASTICSEARCH_SERVER_HTTPPORT: 9200 + volumes: + - ./community/data:/var/www/onlyoffice/Data + - ./community/log:/var/log/onlyoffice + - ./document/data:/var/www/onlyoffice/DocumentServerData + - /sys/fs/cgroup:/sys/fs/cgroup:rw + depends_on: + - onlyoffice-mysql-server + - onlyoffice-document-server + - onlyoffice-elasticsearch + networks: + - workspace + dns: + - 127.0.0.53 + onlyoffice-mysql-server: + image: ${REGISTRY}/mysql + container_name: onlyoffice-mysql-server + restart: unless-stopped + environment: + MYSQL_ROOT_PASSWORD: ${ONLYOFFICE_CS_DBROOT:-onlyoffice} + stdin_open: true + tty: true + volumes: + - ./mysql/conf.d:/etc/mysql/conf.d + - ./mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d + - ./mysql/data:/var/lib/mysql + networks: + - workspace + onlyoffice-elasticsearch: + image: ${REGISTRY}/onlyoffice/elasticsearch + container_name: onlyoffice-elasticsearch + restart: unless-stopped + environment: + - discovery.type=single-node + - bootstrap.memory_lock=true + - "ES_JAVA_OPTS=-Xms1g -Xmx1g -Dlog4j2.formatMsgNoLookups=true" + - "indices.fielddata.cache.size=30%" + - "indices.memory.index_buffer_size=30%" + - "ingest.geoip.downloader.enabled=false" + ulimits: + memlock: + soft: -1 + hard: -1 + nofile: + soft: 65535 + hard: 65535 + volumes: + - ./elasticsearch:/usr/share/elasticsearch/data + networks: + - workspace + onlyoffice-control-panel: + image: ${REGISTRY}/onlyoffice/controlpanel + container_name: onlyoffice-control-panel + restart: unless-stopped + stdin_open: true + tty: true + environment: + ONLYOFFICE_CORE_MACHINEKEY: ${ONLYOFFICE_CS_MACHINEKEY:-onlyoffice} + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./controlpanel/data:/var/www/onlyoffice/Data + - ./controlpanel/log:/var/log/onlyoffice + depends_on: + - onlyoffice-document-server + - onlyoffice-community-server + networks: + - workspace + +networks: + workspace: + external: false diff --git a/paperless/.env b/paperless/.env new file mode 100644 index 0000000..096c9b8 --- /dev/null +++ b/paperless/.env @@ -0,0 +1,14 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Paperless +PAPERLESS_PORT= +PAPERLESS_DBNAME= +PAPERLESS_DBUSER= +PAPERLESS_DBPASS= +PAPERLESS_URL= +PAPERLESS_SECRETKEY= diff --git a/paperless/docker-compose.yaml b/paperless/docker-compose.yaml new file mode 100644 index 0000000..bc1405f --- /dev/null +++ b/paperless/docker-compose.yaml @@ -0,0 +1,63 @@ +services: + + # paperless (https://github.com/paperless-ngx/paperless-ngx/blob/dev/docker/compose/docker-compose.postgres.yml) + paperless: + image: ${REGISTRY}/paperless-ngx + container_name: paperless + restart: unless-stopped + ports: + - ${PAPERLESS_PORT:-8000}:8000 + healthcheck: + test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"] + interval: 30s + timeout: 10s + retries: 5 + environment: + PAPERLESS_OCR_LANGUAGE: eng + + PAPERLESS_REDIS: redis://paperless-redis:6379 + + PAPERLESS_DBHOST: paperless-postgresql + PAPERLESS_DBNAME: ${PAPERLESS_DBNAME:-paperless} + PAPERLESS_DBUSER: ${PAPERLESS_DBUSER:-paperless} + PAPERLESS_DBPASS: ${PAPERLESS_DBPASS:-paperless} + + # PAPERLESS_URL: ${PAPERLESS_URL:-http://localhost:${PAPERLESS_PORT:-8000}} + PAPERLESS_CSRF_TRUSTED_ORIGINS: ${PAPERLESS_URL:-http://localhost:${PAPERLESS_PORT:-8000}} + + PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRETKEY:-paperless} + PAPERLESS_OCR_USER_ARGS: '{"invalidate_digital_signatures": true}' + volumes: + - ./data:/usr/src/paperless/data + - ./media:/usr/src/paperless/media + - ./export:/usr/src/paperless/export + - ./consume:/usr/src/paperless/consume + depends_on: + - paperless-postgresql + - paperless-redis + networks: + - paperless + paperless-postgresql: + image: ${REGISTRY}/postgres + container_name: paperless-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${PAPERLESS_DBNAME:-paperless} + POSTGRES_USER: ${PAPERLESS_DBUSER:-paperless} + POSTGRES_PASSWORD: ${PAPERLESS_DBPASS:-paperless} + volumes: + - ./sql:/var/lib/postgresql/data:rw + networks: + - paperless + paperless-redis: + image: ${REGISTRY}/valkey + container_name: paperless-redis + restart: unless-stopped + volumes: + - ./redis:/data + networks: + - paperless + +networks: + paperless: + external: false diff --git a/passwordpusher/.env b/passwordpusher/.env new file mode 100644 index 0000000..7fe3307 --- /dev/null +++ b/passwordpusher/.env @@ -0,0 +1,10 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# PasswordPusher +PWPUSHER_PORT= +PWPUSHER_TITLE= diff --git a/passwordpusher/docker-compose.yaml b/passwordpusher/docker-compose.yaml new file mode 100644 index 0000000..dbb15e6 --- /dev/null +++ b/passwordpusher/docker-compose.yaml @@ -0,0 +1,24 @@ +services: + + # passwordpusher (https://github.com/pglombardo/PasswordPusher/blob/master/containers/docker/docker-compose-ephemeral.yml) + passwordpusher: + image: ${REGISTRY}/pwpush + container_name: passwordpusher + restart: unless-stopped + ports: + - ${PWPUSHER_PORT:-5100}:5100 + environment: + PWP__BRAND__TITLE: ${PWPUSHER_TITLE:-PasswordPusher} + PWP__PW__EXPIRE_AFTER_DAYS_DEFAULT: 1 + PWP__PW__EXPIRE_AFTER_VIEWS_DEFAULT: 2 + PWP__PW__ENABLE_RETRIEVAL_STEP: false + PWP__PW__ENABLE_DELETABLE_PUSHES: false + PWP__BRAND__SHOW_FOOTER_MENU: false + PWP__SHOW_GDPR_CONSENT_BANNER: false + PWP__GEN__SEPARATORS: '-' + networks: + - passwordpusher + +networks: + passwordpusher: + external: false diff --git a/pihole/.env b/pihole/.env new file mode 100644 index 0000000..f3a5690 --- /dev/null +++ b/pihole/.env @@ -0,0 +1,11 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Pi-hole +PIHOLE_PORT= +PIHOLE_PASS= +PIHOLE_HOSTIP= diff --git a/pihole/docker-compose.yaml b/pihole/docker-compose.yaml new file mode 100644 index 0000000..c29e831 --- /dev/null +++ b/pihole/docker-compose.yaml @@ -0,0 +1,39 @@ +services: + + # https://github.com/pi-hole/docker-pi-hole/ + pihole: + container_name: pihole + image: pihole/pihole:latest + restart: unless-stopped + ports: + - 53:53/tcp + - 53:53/udp + - ${PIHOLE_PORT}:80/tcp + environment: + TZ: UTC + WEBPASSWORD: ${PIHOLE_PASS} + FTLCONF_LOCAL_IPV4: ${PIHOLE_HOSTIP} + DNSMASQ_LISTENING: all + PIHOLE_DNS_: 172.21.200.3#53 + volumes: + - ./pihole:/etc/pihole + - ./dnsmasq.d:/etc/dnsmasq.d + networks: + pihole: + ipv4_address: 172.21.200.2 + + unbound: + container_name: unbound + image: mvance/unbound:latest + restart: unless-stopped + networks: + pihole: + ipv4_address: 172.21.200.3 + +networks: + pihole: + name: pihole + ipam: + driver: default + config: + - subnet: 172.21.200.0/24 diff --git a/psitransfer/.env b/psitransfer/.env new file mode 100644 index 0000000..17ce626 --- /dev/null +++ b/psitransfer/.env @@ -0,0 +1,11 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Psitransfer +PSITRANSFER_PORT= +PSITRANSFER_UPLOADPASS= +PSITRANSFER_SUBPATH= diff --git a/psitransfer/docker-compose.yaml b/psitransfer/docker-compose.yaml new file mode 100644 index 0000000..e0425fa --- /dev/null +++ b/psitransfer/docker-compose.yaml @@ -0,0 +1,26 @@ +services: + + # psitransfer (https://github.com/psi-4ward/psitransfer) + psitransfer: + image: ${REGISTRY}/psitransfer + container_name: psitransfer + restart: unless-stopped + ports: + - ${PSITRANSFER_PORT:-8080}:8080 + environment: + PSITRANSFER_PORT: 8080 + PSITRANSFER_UPLOAD_PASS: ${PSITRANSFER_UPLOADPASS} + PSITRANSFER_BASE_URL: /${PSITRANSFER_SUBPATH} + PSITRANSFER_DEFAULT_RETENTION: 300 # or "one-time" + PSITRANSFER_RETENTIONS: '{"one-time":"One Time","300":"5 Minutes","3600":"1 Hour","86400":"1 Day","31536000":"1 Year"}' + PSITRANSFER_MAX_AGE: 31536000 + PSITRANSFER_MAX_FILE_SIZE: 0 + PSITRANSFER_MAX_BUCKET_SIZE: 0 + volumes: + - ./data:/data + networks: + - psitransfer + +networks: + psitransfer: + external: false diff --git a/qbittorrent/.env b/qbittorrent/.env new file mode 100644 index 0000000..2b65f48 --- /dev/null +++ b/qbittorrent/.env @@ -0,0 +1,9 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Qbittorrent +QBITTORRENT_PORT= diff --git a/qbittorrent/docker-compose.yaml b/qbittorrent/docker-compose.yaml new file mode 100644 index 0000000..78ae110 --- /dev/null +++ b/qbittorrent/docker-compose.yaml @@ -0,0 +1,27 @@ +services: + + qbittorrent-nox: + image: ${REGISTRY}/qbittorrent-nox + container_name: qbittorrent-nox + restart: unless-stopped + ports: + - ${QBITTORRENT_PORT:-8080}:8080/tcp + - 6881:6881/tcp + - 6881:6881/udp + environment: + PUID: 1000 + PGID: 984 + QBT_EULA: accept + QBT_VERSION: latest + QBT_WEBUI_PORT: 8080 + stop_grace_period: 30m + tty: true + volumes: + - ./config:/config + - ./downloads:/downloads + networks: + - qbittorrent + +networks: + qbittorrent: + external: false diff --git a/redlib/.env b/redlib/.env new file mode 100644 index 0000000..501f7eb --- /dev/null +++ b/redlib/.env @@ -0,0 +1,9 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Redlib +REDLIB_PORT= diff --git a/redlib/docker-compose.yaml b/redlib/docker-compose.yaml new file mode 100644 index 0000000..a42de26 --- /dev/null +++ b/redlib/docker-compose.yaml @@ -0,0 +1,28 @@ +services: + + redlib: + image: ${REGISTRY}/redlib + container_name: redlib + restart: unless-stopped + ports: + - ${REDLIB_PORT:-8080}:8080 + user: nobody + read_only: true + cap_drop: + - ALL + environment: + REDLIB_DEFAULT_SHOW_NSFW: on + REDLIB_DEFAULT_SUBSCRIPTIONS: + healthcheck: + test: ["CMD", "wget", "--spider", "-q", "--tries=1", "http://localhost:8080/settings"] + interval: 5m + timeout: 3s + security_opt: + - no-new-privileges:true + # - seccomp=./seccomp-redlib.json + networks: + - redlib + +networks: + redlib: + external: false diff --git a/searxng/.env b/searxng/.env new file mode 100644 index 0000000..af61e7e --- /dev/null +++ b/searxng/.env @@ -0,0 +1,10 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Searx +SEARX_PORT= +SEARX_URL= diff --git a/searxng/docker-compose.yaml b/searxng/docker-compose.yaml new file mode 100644 index 0000000..bcc8352 --- /dev/null +++ b/searxng/docker-compose.yaml @@ -0,0 +1,46 @@ +services: + + # searx + searxng: + image: ${REGISTRY}/searxng + container_name: searxng + restart: unless-stopped + ports: + - ${SEARX_PORT:-8080}:8080 + environment: + SEARXNG_BASE_URL: ${SEARX_URL:-http://localhost:} + volumes: + - ./settings:/etc/searxng:rw + - ./searxng.png:/usr/local/searxng/searx/static/themes/simple/img/searxng.png + cap_drop: + - ALL + cap_add: + - CHOWN + - SETGID + - SETUID + logging: + driver: json-file + options: + max-size: 1m + max-file: 1 + networks: + - searxng + searxng-redis: + image: ${REGISTRY}/valkey + container_name: searxng-redis + restart: unless-stopped + command: redis-server --save 30 1 --loglevel warning + tmpfs: + - /var/lib/redis + cap_drop: + - ALL + cap_add: + - SETGID + - SETUID + - DAC_OVERRIDE + networks: + - searxng + +networks: + searxng: + external: false diff --git a/send/.env b/send/.env new file mode 100644 index 0000000..fb4cebd --- /dev/null +++ b/send/.env @@ -0,0 +1,10 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Send +SEND_PORT= +SEND_TITLE= diff --git a/send/docker-compose.yaml b/send/docker-compose.yaml new file mode 100644 index 0000000..9eed991 --- /dev/null +++ b/send/docker-compose.yaml @@ -0,0 +1,43 @@ +services: + + # send (https://github.com/timvisee/send-docker-compose) + send: + image: ${REGISTRY}/send + container_name: send + restart: unless-stopped + ports: + - ${SEND_PORT:-1443}:1443 + volumes: + - ./uploads:/uploads + environment: + NODE_ENV: production + FILE_DIR: /uploads + DETECT_BASE_URL: true + CUSTOM_TITLE: ${SEND_TITLE:-Send} + + EXPIRE_TIMES_SECONDS: 300,3600,86400,31536000 + DEFAULT_EXPIRE_SECONDS: 300 + MAX_EXPIRE_SECONDS: 31536000 + + DOWNLOAD_COUNTS: 1,3 + DEFAULT_DOWNLOADS: 1 + MAX_DOWNLOADS: 3 + + MAX_FILE_SIZE: 107374182400 + REDIS_HOST: send-redis + depends_on: + - send-redis + networks: + - send + send-redis: + image: ${REGISTRY}/valkey + container_name: send-redis + restart: unless-stopped + volumes: + - ./redis:/data + networks: + - send + +networks: + send: + external: false diff --git a/shlink/.env b/shlink/.env new file mode 100644 index 0000000..d335bfb --- /dev/null +++ b/shlink/.env @@ -0,0 +1,14 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Shlink +SHLINK_WEBUI_PORT= +SHLINK_PORT= +SHLINK_URL= +SHLINK_DBNAME= +SHLINK_DBUSER= +SHLINK_DBPASS= diff --git a/shlink/docker-compose.yaml b/shlink/docker-compose.yaml new file mode 100644 index 0000000..feede8b --- /dev/null +++ b/shlink/docker-compose.yaml @@ -0,0 +1,62 @@ +services: + + # https://github.com/shlinkio/shlink/tree/develop + shlink-webui: + image: ${REGISTRY}/shlink-web-client + container_name: shlink-webui + restart: unless-stopped + ports: + - ${SHLINK_WEBUI_PORT:-8081}:8080 + volumes: + - ./servers.json:/usr/share/nginx/html/servers.json + networks: + - shlink + + shlink: + image: ${REGISTRY}/shlink + container_name: shlink + restart: unless-stopped + ports: + - ${SHLINK_PORT:-8080}:8080 + environment: + DEFAULT_DOMAIN: ${SHLINK_URL:-http://localhost:${SHLINK_PORT:-8080}} + BASE_PATH: ${SHLINK_BASE_PATH:-/} + IS_HTTPS_ENABLED: true + DISABLE_TRACKING: true + + DB_DRIVER: postgres + DB_HOST: shlink-postgresql + DB_NAME: ${SHLINK_DBNAME:-shlink} + DB_USER: ${SHLINK_DBUSER:-shlink} + DB_PASSWORD: ${SHLINK_DBPASS:-shlink} + + REDIS_SERVERS: redis://shlink-redis:6379 + REDIS_PUB_SUB_ENABLED: true + networks: + - shlink + + shlink-postgresql: + image: ${REGISTRY}/postgres + container_name: shlink-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${SHLINK_DBNAME:-shlink} + POSTGRES_USER: ${SHLINK_DBUSER:-shlink} + POSTGRES_PASSWORD: ${SHLINK_DBPASS:-shlink} + volumes: + - ./sql:/var/lib/postgresql/data:rw + networks: + - shlink + + shlink-redis: + image: ${REGISTRY}/valkey + container_name: shlink-redis + restart: unless-stopped + volumes: + - ./redis:/data + networks: + - shlink + +networks: + shlink: + external: false diff --git a/stirling-pdf/.env b/stirling-pdf/.env new file mode 100644 index 0000000..4fb8c50 --- /dev/null +++ b/stirling-pdf/.env @@ -0,0 +1,9 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Stirling PDF +STIRLINGPDF_PORT= diff --git a/stirling-pdf/docker-compose.yaml b/stirling-pdf/docker-compose.yaml new file mode 100644 index 0000000..8ac650e --- /dev/null +++ b/stirling-pdf/docker-compose.yaml @@ -0,0 +1,20 @@ +services: + + # https://github.com/Stirling-Tools/Stirling-PDF + stirling-pdf: + image: ${REGISTRY}/s-pdf + container_name: stirling-pdf + restart: unless-stopped + ports: + - ${STIRLINGPDF_PORT:-8080}:8080 + environment: + DOCKER_ENABLE_SECURITY: true + volumes: + - ./tesseract-ocr:/usr/share/tesseract-ocr/5/tessdata + - ./config:/configs + networks: + - stirling-pdf + +networks: + stirling-pdf: + external: false diff --git a/tandoor/.env b/tandoor/.env new file mode 100644 index 0000000..fa4c35c --- /dev/null +++ b/tandoor/.env @@ -0,0 +1,13 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Tandoor +TANDOOR_PORT= +TANDOOR_SECRETKEY= +TANDOOR_DBNAME= +TANDOOR_DBUSER= +TANDOOR_DBPASS= diff --git a/tandoor/docker-compose.yaml b/tandoor/docker-compose.yaml new file mode 100644 index 0000000..e9ebae7 --- /dev/null +++ b/tandoor/docker-compose.yaml @@ -0,0 +1,43 @@ +services: + + # tandoor (https://docs.tandoor.dev/install/docker) + tandoor: + image: ${REGISTRY}/recipes + container_name: tandoor + restart: unless-stopped + ports: + - ${TANDOOR_PORT:-8080}:8080 + environment: + TZ: UTC + SECRET_KEY: ${TANDOOR_SECRETKEY:-tandoor} + + # PostgreSQL + DB_ENGINE: django.db.backends.postgresql + POSTGRES_HOST: tandoor-postgresql + POSTGRES_PORT: 5432 + POSTGRES_DB: ${TANDOOR_DBNAME:-tandoor} + POSTGRES_USER: ${TANDOOR_DBUSER:-tandoor} + POSTGRES_PASSWORD: ${TANDOOR_DBPASS:-tandoor} + volumes: + - ./staticfiles:/opt/recipes/staticfiles + - ./mediafiles:/opt/recipes/mediafiles + depends_on: + - tandoor-postgresql + networks: + - tandoor + tandoor-postgresql: + image: ${REGISTRY}/postgres + container_name: tandoor-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${TANDOOR_DBNAME:-tandoor} + POSTGRES_USER: ${TANDOOR_DBUSER:-tandoor} + POSTGRES_PASSWORD: ${TANDOOR_DBPASS:-tandoor} + volumes: + - ./sql:/var/lib/postgresql/data:rw + networks: + - tandoor + +networks: + tandoor: + external: false diff --git a/usememos/.env b/usememos/.env new file mode 100644 index 0000000..2681696 --- /dev/null +++ b/usememos/.env @@ -0,0 +1,9 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Memos +MEMOS_PORT= diff --git a/usememos/docker-compose.yaml b/usememos/docker-compose.yaml new file mode 100644 index 0000000..5c1b3ef --- /dev/null +++ b/usememos/docker-compose.yaml @@ -0,0 +1,17 @@ +services: + + # memos (https://www.usememos.com/docs/install/self-hosting) + memos: + image: ${REGISTRY}/memos + container_name: memos + restart: unless-stopped + ports: + - ${MEMOS_PORT:-5230}:5230 + volumes: + - ./data:/var/opt/memos + networks: + - memos + +networks: + memos: + external: false diff --git a/vaultwarden/.env b/vaultwarden/.env new file mode 100644 index 0000000..66a8118 --- /dev/null +++ b/vaultwarden/.env @@ -0,0 +1,11 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Vaultwarden +VAULTWARDEN_PORT= +VAULTWARDEN_URL= +VAULTWARDEN_DBPASS= diff --git a/vaultwarden/docker-compose.yaml b/vaultwarden/docker-compose.yaml new file mode 100644 index 0000000..abda0e5 --- /dev/null +++ b/vaultwarden/docker-compose.yaml @@ -0,0 +1,36 @@ +services: + + # https://github.com/dani-garcia/vaultwarden + vaultwarden: + container_name: vaultwarden + image: ${REGISTRY}/vaultwarden + restart: unless-stopped + ports: + - ${VAULTWARDEN_PORT:-80}:80 + environment: + DATABASE_URL: postgresql://${VAULTWARDEN_DBUSER:-vaultwarden}:${VAULTWARDEN_DBPASS:-vaultwarden}@vaultwarden-postgresql:5432/${VAULTWARDEN_DBNAME:-vaultwarden} + DOMAIN: ${VAULTWARDEN_URL:-http://localhost:${VAULTWARDEN_PORT:-80}} + TRASH_AUTO_DELETE_DAYS: 30 + SIGNUPS_ALLOWED: false + volumes: + - ./data:/data + depends_on: + - vaultwarden-postgresql + networks: + - vaultwarden + vaultwarden-postgresql: + image: ${REGISTRY}/postgres + container_name: vaultwarden-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${VAULTWARDEN_DBNAME:-vaultwarden} + POSTGRES_USER: ${VAULTWARDEN_DBUSER:-vaultwarden} + POSTGRES_PASSWORD: ${VAULTWARDEN_DBPASS:-vaultwarden} + volumes: + - ./sql:/var/lib/postgresql/data:rw + networks: + - vaultwarden + +networks: + vaultwarden: + external: false diff --git a/vikunja/.env b/vikunja/.env new file mode 100644 index 0000000..9f4278e --- /dev/null +++ b/vikunja/.env @@ -0,0 +1,14 @@ +# Environment file for docker-compose.yaml +# Generate new passwords with: +# openssl rand -hex 32 + +# Fill in registry +REGISTRY= + +# Vikunja +VIKUNJA_PORT= +VIKUNJA_DBNAME= +VIKUNJA_DBUSER= +VIKUNJA_DBPASS= +VIKUNJA_JWTSECRET= +VIKUNJA_URL= diff --git a/vikunja/docker-compose.yaml b/vikunja/docker-compose.yaml new file mode 100644 index 0000000..4445aa7 --- /dev/null +++ b/vikunja/docker-compose.yaml @@ -0,0 +1,64 @@ +services: + + # vikunja (https://vikunja.io/docs/docker-walkthrough) + # https://vikunja.io/docs/cli/#user + # Usage: + # $ vikunja user create + # Flags: + # -a, --avatar-provider: The avatar provider of the new user. Optional. + # -e, --email: The email address of the new user. + # -p, --password: The password of the new user. You will be asked to enter it if not provided through the flag. + # -u, --username: The username of the new user. + vikunja: + image: ${REGISTRY}/vikunja + container_name: vikunja + restart: unless-stopped + ports: + - ${VIKUNJA_PORT:-3456}:3456 + environment: + VIKUNJA_DATABASE_TYPE: postgres + VIKUNJA_DATABASE_HOST: vikunja-postgresql + VIKUNJA_DATABASE_DATABASE: ${VIKUNJA_DBNAME:-vikunja} + VIKUNJA_DATABASE_USER: ${VIKUNJA_DBUSER:-vikunja} + VIKUNJA_DATABASE_PASSWORD: ${VIKUNJA_DBPASS:-vikunja} + + VIKUNJA_SERVICE_JWTSECRET: ${VIKUNJA_JWTSECRET:-vikunja} + + VIKUNJA_CACHE_ENABLED: 1 + VIKUNJA_CACHE_TYPE: redis + VIKUNJA_REDIS_ENABLED: 1 + VIKUNJA_REDIS_HOST: vikunja-redis:6379 + + VIKUNJA_SERVICE_FRONTENDURL: ${VIKUNJA_URL:-http://localhost:${VIKUNJA_PORT:-3456}} + VIKUNJA_SERVICE_ENABLEREGISTRATION: false + volumes: + - ./data:/app/vikunja/files + depends_on: + - vikunja-postgresql + - vikunja-redis + networks: + - vikunja + vikunja-postgresql: + image: ${REGISTRY}/postgres + container_name: vikunja-postgresql + restart: unless-stopped + environment: + POSTGRES_DB: ${VIKUNJA_DBNAME:-vikunja} + POSTGRES_USER: ${VIKUNJA_DBUSER:-vikunja} + POSTGRES_PASSWORD: ${VIKUNJA_DBPASS:-vikunja} + volumes: + - ./sql:/var/lib/postgresql/data:rw + networks: + - vikunja + vikunja-redis: + image: ${REGISTRY}/valkey + container_name: vikunja-redis + restart: unless-stopped + volumes: + - ./redis:/data + networks: + - vikunja + +networks: + vikunja: + external: false