Add app stacks: Home Assistant, Immich (ML), Nextcloud, Paperless-NGX, Jellyfin; NFS volumes, Traefik labels, DB/secret references
This commit is contained in:
33
stacks/apps/homeassistant.yml
Normal file
33
stacks/apps/homeassistant.yml
Normal file
@@ -0,0 +1,33 @@
|
||||
version: '3.9'
|
||||
|
||||
services:
|
||||
homeassistant:
|
||||
image: ghcr.io/home-assistant/home-assistant:2024.8.3
|
||||
environment:
|
||||
- TZ=America/New_York
|
||||
volumes:
|
||||
- ha_config:/config
|
||||
networks:
|
||||
- traefik-public
|
||||
deploy:
|
||||
placement:
|
||||
constraints:
|
||||
- "node.labels.role==core"
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.ha.rule=Host(`ha.localhost`)
|
||||
- traefik.http.routers.ha.entrypoints=websecure
|
||||
- traefik.http.routers.ha.tls=true
|
||||
- traefik.http.services.ha.loadbalancer.server.port=8123
|
||||
|
||||
volumes:
|
||||
ha_config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=omv800.local,nolock,soft,rw
|
||||
device: :/export/homeassistant/config
|
||||
|
||||
networks:
|
||||
traefik-public:
|
||||
external: true
|
||||
56
stacks/apps/immich.yml
Normal file
56
stacks/apps/immich.yml
Normal file
@@ -0,0 +1,56 @@
|
||||
version: '3.9'
|
||||
|
||||
services:
|
||||
immich_server:
|
||||
image: ghcr.io/immich-app/immich-server:v1.119.0
|
||||
environment:
|
||||
DB_HOST: postgresql_primary
|
||||
DB_PORT: 5432
|
||||
DB_USERNAME: postgres
|
||||
DB_PASSWORD_FILE: /run/secrets/pg_root_password
|
||||
DB_DATABASE_NAME: immich
|
||||
secrets:
|
||||
- pg_root_password
|
||||
networks:
|
||||
- traefik-public
|
||||
- database-network
|
||||
volumes:
|
||||
- immich_data:/usr/src/app/upload
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.immich.rule=Host(`immich.localhost`)
|
||||
- traefik.http.routers.immich.entrypoints=websecure
|
||||
- traefik.http.routers.immich.tls=true
|
||||
- traefik.http.services.immich.loadbalancer.server.port=3001
|
||||
|
||||
immich_machine_learning:
|
||||
image: ghcr.io/immich-app/immich-machine-learning:v1.119.0
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- capabilities: [gpu]
|
||||
device_ids: ["0"]
|
||||
volumes:
|
||||
- immich_ml:/cache
|
||||
|
||||
volumes:
|
||||
immich_data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=omv800.local,nolock,soft,rw
|
||||
device: :/export/immich/data
|
||||
immich_ml:
|
||||
driver: local
|
||||
|
||||
secrets:
|
||||
pg_root_password:
|
||||
external: true
|
||||
|
||||
networks:
|
||||
traefik-public:
|
||||
external: true
|
||||
database-network:
|
||||
external: true
|
||||
52
stacks/apps/jellyfin.yml
Normal file
52
stacks/apps/jellyfin.yml
Normal file
@@ -0,0 +1,52 @@
|
||||
version: '3.9'
|
||||
|
||||
services:
|
||||
jellyfin:
|
||||
image: jellyfin/jellyfin:10.9.10
|
||||
environment:
|
||||
- JELLYFIN_PublishedServerUrl=jellyfin.localhost
|
||||
volumes:
|
||||
- jellyfin_config:/config
|
||||
- jellyfin_cache:/cache
|
||||
- media_movies:/media/movies:ro
|
||||
- media_tv:/media/tv:ro
|
||||
networks:
|
||||
- traefik-public
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- capabilities: [gpu]
|
||||
device_ids: ["0"]
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.jellyfin.rule=Host(`jellyfin.localhost`)
|
||||
- traefik.http.routers.jellyfin.entrypoints=websecure
|
||||
- traefik.http.routers.jellyfin.tls=true
|
||||
- traefik.http.services.jellyfin.loadbalancer.server.port=8096
|
||||
|
||||
volumes:
|
||||
jellyfin_config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=omv800.local,nolock,soft,rw
|
||||
device: :/export/jellyfin/config
|
||||
jellyfin_cache:
|
||||
driver: local
|
||||
media_movies:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=omv800.local,nolock,soft,ro
|
||||
device: :/export/media/movies
|
||||
media_tv:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=omv800.local,nolock,soft,ro
|
||||
device: :/export/media/tv
|
||||
|
||||
networks:
|
||||
traefik-public:
|
||||
external: true
|
||||
42
stacks/apps/nextcloud.yml
Normal file
42
stacks/apps/nextcloud.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
version: '3.9'
|
||||
|
||||
services:
|
||||
nextcloud:
|
||||
image: nextcloud:27.1.3
|
||||
environment:
|
||||
- MYSQL_HOST=mariadb_primary
|
||||
- MYSQL_DATABASE=nextcloud
|
||||
- MYSQL_USER=nextcloud
|
||||
- MYSQL_PASSWORD_FILE=/run/secrets/nextcloud_db_password
|
||||
secrets:
|
||||
- nextcloud_db_password
|
||||
volumes:
|
||||
- nextcloud_data:/var/www/html
|
||||
networks:
|
||||
- traefik-public
|
||||
- database-network
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.nextcloud.rule=Host(`nextcloud.localhost`)
|
||||
- traefik.http.routers.nextcloud.entrypoints=websecure
|
||||
- traefik.http.routers.nextcloud.tls=true
|
||||
- traefik.http.services.nextcloud.loadbalancer.server.port=80
|
||||
|
||||
volumes:
|
||||
nextcloud_data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=omv800.local,nolock,soft,rw
|
||||
device: :/export/nextcloud/html
|
||||
|
||||
secrets:
|
||||
nextcloud_db_password:
|
||||
external: true
|
||||
|
||||
networks:
|
||||
traefik-public:
|
||||
external: true
|
||||
database-network:
|
||||
external: true
|
||||
50
stacks/apps/paperless.yml
Normal file
50
stacks/apps/paperless.yml
Normal file
@@ -0,0 +1,50 @@
|
||||
version: '3.9'
|
||||
|
||||
services:
|
||||
paperless:
|
||||
image: paperlessngx/paperless-ngx:2.10.3
|
||||
environment:
|
||||
PAPERLESS_REDIS: redis://redis_master:6379
|
||||
PAPERLESS_DBHOST: postgresql_primary
|
||||
PAPERLESS_DBNAME: paperless
|
||||
PAPERLESS_DBUSER: postgres
|
||||
PAPERLESS_DBPASS_FILE: /run/secrets/pg_root_password
|
||||
secrets:
|
||||
- pg_root_password
|
||||
volumes:
|
||||
- paperless_data:/usr/src/paperless/data
|
||||
- paperless_media:/usr/src/paperless/media
|
||||
networks:
|
||||
- traefik-public
|
||||
- database-network
|
||||
deploy:
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.paperless.rule=Host(`paperless.localhost`)
|
||||
- traefik.http.routers.paperless.entrypoints=websecure
|
||||
- traefik.http.routers.paperless.tls=true
|
||||
- traefik.http.services.paperless.loadbalancer.server.port=8000
|
||||
|
||||
volumes:
|
||||
paperless_data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=omv800.local,nolock,soft,rw
|
||||
device: :/export/paperless/data
|
||||
paperless_media:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=omv800.local,nolock,soft,rw
|
||||
device: :/export/paperless/media
|
||||
|
||||
secrets:
|
||||
pg_root_password:
|
||||
external: true
|
||||
|
||||
networks:
|
||||
traefik-public:
|
||||
external: true
|
||||
database-network:
|
||||
external: true
|
||||
Reference in New Issue
Block a user