Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
04ba6eb8db | ||
|
|
40a68b1b12 | ||
|
|
708ba51ea4 | ||
|
|
89d43b5c04 | ||
|
|
6fd4c0ec4c | ||
|
|
9d0eabf71c | ||
|
|
d894eb27c8 | ||
|
|
8697a795c2 | ||
|
|
fa2a9bde98 | ||
|
|
312a1e286a | ||
|
|
6b48491895 | ||
|
|
2d92b1325f | ||
|
|
34b1b76843 | ||
|
|
82443668c2 | ||
|
|
1dca9c73fd | ||
|
|
8172d75b5e | ||
|
|
545514ad00 | ||
|
|
5c51760fbc | ||
|
|
dfe252e945 | ||
|
|
1d52e2ac75 |
14
.gitignore
vendored
14
.gitignore
vendored
@@ -1 +1,13 @@
|
|||||||
*.nas-compose.env
|
nas-compose.env
|
||||||
|
# Prevent the content of volumes from being commited, but allow the folders
|
||||||
|
/*/volumes/*/**
|
||||||
|
# Prevent secrets from being commited
|
||||||
|
/*/secrets/**
|
||||||
|
# Prevent local environment configuration from being commited
|
||||||
|
/*/.env
|
||||||
|
# Allow .gitkeeps for empty folders (volumes/secrets)
|
||||||
|
!.gitkeep
|
||||||
|
!.gitignore
|
||||||
|
|
||||||
|
@eaDir
|
||||||
|
.DS_Store
|
||||||
|
|||||||
68
authentication/compose.yaml
Normal file
68
authentication/compose.yaml
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
services:
|
||||||
|
authelia:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: authelia
|
||||||
|
image: authelia/authelia
|
||||||
|
command:
|
||||||
|
- authelia
|
||||||
|
- --config=/etc/authelia/configuration.yml
|
||||||
|
- --config=/etc/authelia/access.yml
|
||||||
|
- --config=/etc/authelia/authentication.yml
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
environment:
|
||||||
|
AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET_FILE: /run/secrets/jwt_secret
|
||||||
|
AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE: /run/secrets/storage_key
|
||||||
|
AUTHELIA_NOTIFIER_SMTP_ADDRESS: smtp://smtp-server
|
||||||
|
AUTHELIA_NOTIFIER_SMTP_DISABLE_REQUIRE_TLS: true
|
||||||
|
AUTHELIA_NOTIFIER_SMTP_SENDER: Authelia <authelia@${NASCOMPOSE_DOMAIN?}>
|
||||||
|
X_AUTHELIA_CONFIG_FILTERS: template
|
||||||
|
TEMPLATE_NASCOMPOSE_DOMAIN: ${NASCOMPOSE_DOMAIN?}
|
||||||
|
networks:
|
||||||
|
- smtp-server
|
||||||
|
- default
|
||||||
|
volumes:
|
||||||
|
- ./volumes/authelia_config/:/config/
|
||||||
|
- ./configs/authelia_configuration.yml:/etc/authelia/configuration.yml:ro
|
||||||
|
- ./configs/authelia_access.yml:/etc/authelia/access.yml:ro
|
||||||
|
- ./configs/authelia_authentication.yml:/etc/authelia/authentication.yml:ro
|
||||||
|
- ./secrets/authelia_jwt_secret:/run/secrets/jwt_secret:ro
|
||||||
|
- ./secrets/authelia_storage_key:/run/secrets/storage_key:ro
|
||||||
|
- ./secrets/authelia_oidcsecret:/run/secrets/oidcsecret:ro
|
||||||
|
- ./secrets/authelia_oidc.key:/run/secrets/oidc.key:ro
|
||||||
|
authelia-redis:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
container_name: authelia-redis
|
||||||
|
image: redis
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
volumes:
|
||||||
|
- ./volumes/redis_data/:/data/
|
||||||
|
lldap:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: lldap
|
||||||
|
image: lldap/lldap:latest-alpine-rootless
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
environment:
|
||||||
|
LLDAP_JWT_SECRET_FILE: /run/secrets/jwt_secret
|
||||||
|
LLDAP_KEY_SEED_FILE: /run/secrets/key_seed
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
volumes:
|
||||||
|
- ./volumes/lldap_data:/data
|
||||||
|
- ./secrets/lldap_jwt_secret:/run/secrets/jwt_secret:ro
|
||||||
|
- ./secrets/lldap_key_seed:/run/secrets/key_seed:ro
|
||||||
|
labels:
|
||||||
|
traefik.http.routers.lldap.middlewares: authelia@file
|
||||||
|
traefik.http.services.lldap.loadbalancer.server.port: 17170
|
||||||
|
networks:
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
|
smtp-server:
|
||||||
|
external: true
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
name: authentication
|
|
||||||
|
|
||||||
services:
|
|
||||||
authelia:
|
|
||||||
hostname: authelia
|
|
||||||
image: authelia/authelia
|
|
||||||
command: --config /etc/authelia/configuration.yml,/etc/authelia/access.yml,/etc/authelia/authentication.yml
|
|
||||||
environment:
|
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
|
||||||
AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET_FILE: /run/secrets/jwt_secret
|
|
||||||
AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE: /run/secrets/storage_key
|
|
||||||
AUTHELIA_NOTIFIER_SMTP_ADDRESS: ${NASCOMPOSE_AUTHELIA_SMTP_ADDRESS?}
|
|
||||||
AUTHELIA_NOTIFIER_SMTP_USERNAME: ${NASCOMPOSE_AUTHELIA_SMTP_USERNAME?}
|
|
||||||
AUTHELIA_NOTIFIER_SMTP_PASSWORD_FILE: /run/secrets/smtp_password
|
|
||||||
AUTHELIA_NOTIFIER_SMTP_SENDER: "authelia@${NASCOMPOSE_DOMAIN?}"
|
|
||||||
X_AUTHELIA_CONFIG_FILTERS: template
|
|
||||||
TEMPLATE_NASCOMPOSE_DOMAIN: ${NASCOMPOSE_DOMAIN?}
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
- default
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/authentication/volumes/authelia_config/:/config/
|
|
||||||
# Configuration
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/authentication/configs/authelia_configuration.yml:/etc/authelia/configuration.yml:ro
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/authentication/configs/authelia_access.yml:/etc/authelia/access.yml:ro
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/authentication/configs/authelia_authentication.yml:/etc/authelia/authentication.yml:ro
|
|
||||||
# Secrets
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/authentication/secrets/authelia_jwt_secret:/run/secrets/jwt_secret:ro
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/authentication/secrets/authelia_storage_key:/run/secrets/storage_key:ro
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/authentication/secrets/authelia_smtp_password:/run/secrets/smtp_password:ro
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/authentication/secrets/authelia_oidcsecret:/run/secrets/oidcsecret:ro
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/authentication/secrets/authelia_oidc.key:/run/secrets/oidc.key:ro
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
|
|
||||||
lldap:
|
|
||||||
image: lldap/lldap
|
|
||||||
environment:
|
|
||||||
UID: ${NASCOMPOSE_UID?}
|
|
||||||
GID: ${NASCOMPOSE_GID?}
|
|
||||||
LLDAP_JWT_SECRET_FILE: /run/secrets/jwt_secret
|
|
||||||
LLDAP_KEY_SEED_FILE: /run/secrets/key_seed
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
- default
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/authentication/volumes/lldap_data:/data
|
|
||||||
# Secrets
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/authentication/secrets/lldap_jwt_secret:/run/secrets/jwt_secret:ro
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/authentication/secrets/lldap_key_seed:/run/secrets/key_seed:ro
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.services.lldap.loadbalancer.server.port: 17170
|
|
||||||
|
|
||||||
networks:
|
|
||||||
reverse-proxy:
|
|
||||||
external: true
|
|
||||||
0
authentication/secrets/.gitkeep
Normal file
0
authentication/secrets/.gitkeep
Normal file
0
authentication/volumes/authelia_config/.gitkeep
Normal file
0
authentication/volumes/authelia_config/.gitkeep
Normal file
0
authentication/volumes/lldap_data/.gitkeep
Normal file
0
authentication/volumes/lldap_data/.gitkeep
Normal file
39
book-collector/compose.yaml
Normal file
39
book-collector/compose.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
x-readarr: &a1
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
image: lscr.io/linuxserver/readarr:develop # TODO: Move to a stable version
|
||||||
|
environment:
|
||||||
|
PUID: ${NASCOMPOSE_UID?}
|
||||||
|
PGID: ${NASCOMPOSE_GID?}
|
||||||
|
networks:
|
||||||
|
- torrents
|
||||||
|
- usenet
|
||||||
|
|
||||||
|
services:
|
||||||
|
readarr-audiobook:
|
||||||
|
<<: *a1
|
||||||
|
container_name: readarr-audiobook
|
||||||
|
volumes:
|
||||||
|
- ./volumes/readarr-audiobook_config/:/config/
|
||||||
|
- ${NASCOMPOSE_DATA?}/:/data/
|
||||||
|
labels:
|
||||||
|
traefik.http.routers.readarr-audiobook.middlewares: authelia@file
|
||||||
|
readarr-ebook:
|
||||||
|
<<: *a1
|
||||||
|
container_name: readarr-ebook
|
||||||
|
volumes:
|
||||||
|
- ./volumes/readarr-ebook_config/:/config/
|
||||||
|
- ${NASCOMPOSE_DATA?}/:/data/
|
||||||
|
labels:
|
||||||
|
traefik.http.routers.readarr-ebook.middlewares: authelia@file
|
||||||
|
|
||||||
|
networks:
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
|
torrents:
|
||||||
|
external: true
|
||||||
|
usenet:
|
||||||
|
external: true
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
name: book-collector
|
|
||||||
|
|
||||||
services:
|
|
||||||
readarr-audiobook:
|
|
||||||
hostname: readarr-audiobook
|
|
||||||
image: lscr.io/linuxserver/readarr:develop # TODO: Move to a stable version
|
|
||||||
environment:
|
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
- torrents
|
|
||||||
- usenet
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/book-collector/volumes/readarr-audiobook_config/:/config/
|
|
||||||
- ${NASCOMPOSE_DATA?}/:/data/
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.readarr-audiobook.middlewares: authelia@file
|
|
||||||
|
|
||||||
readarr-ebook:
|
|
||||||
hostname: readarr-ebook
|
|
||||||
image: lscr.io/linuxserver/readarr:develop # TODO: Move to a stable version
|
|
||||||
environment:
|
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
- torrents
|
|
||||||
- usenet
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/book-collector/volumes/readarr-ebook_config/:/config/
|
|
||||||
- ${NASCOMPOSE_DATA?}/:/data/
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.readarr-ebook.middlewares: authelia@file
|
|
||||||
|
|
||||||
networks:
|
|
||||||
reverse-proxy:
|
|
||||||
external: true
|
|
||||||
torrents:
|
|
||||||
external: true
|
|
||||||
usenet:
|
|
||||||
external: true
|
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
services:
|
services:
|
||||||
portainer:
|
portainer:
|
||||||
networks:
|
networks:
|
||||||
@@ -17,5 +19,3 @@ networks:
|
|||||||
ip_range: ${NASCOMPOSE_MACVLAN_RANGE?}
|
ip_range: ${NASCOMPOSE_MACVLAN_RANGE?}
|
||||||
aux_addresses:
|
aux_addresses:
|
||||||
nas: ${NASCOMPOSE_MACVLAN_HOST_IP?}
|
nas: ${NASCOMPOSE_MACVLAN_HOST_IP?}
|
||||||
labels:
|
|
||||||
nas-compose.boostrap: true
|
|
||||||
21
bootstrap/compose.yaml
Normal file
21
bootstrap/compose.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
services:
|
||||||
|
portainer:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: portainer
|
||||||
|
image: portainer/portainer-ee
|
||||||
|
command:
|
||||||
|
- --admin-password-file=/run/secrets/portainer_password
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- ./volumes/portainer_data/:/data/
|
||||||
|
- ./secrets/portainer_password:/run/secrets/portainer_password:ro
|
||||||
|
labels:
|
||||||
|
traefik.http.services.portainer.loadbalancer.server.port: 9443
|
||||||
|
traefik.http.services.portainer.loadbalancer.server.scheme: https
|
||||||
|
networks:
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
name: bootstrap
|
|
||||||
|
|
||||||
services:
|
|
||||||
portainer:
|
|
||||||
hostname: portainer
|
|
||||||
image: portainer/portainer-ce
|
|
||||||
command: >
|
|
||||||
--admin-password-file /run/secrets/portainer_password
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- /var/packages/ContainerManager/var/docker/volumes/:/var/lib/docker/volumes/
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/bootstrap/volumes/portainer_data/:/data/
|
|
||||||
# Secrets
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/bootstrap/secrets/portainer_password:/run/secrets/portainer_password:ro
|
|
||||||
restart: unless-stopped
|
|
||||||
0
bootstrap/secrets/.gitkeep
Normal file
0
bootstrap/secrets/.gitkeep
Normal file
0
bootstrap/volumes/portainer_data/.gitkeep
Normal file
0
bootstrap/volumes/portainer_data/.gitkeep
Normal file
@@ -1,28 +1,27 @@
|
|||||||
name: comic-collector
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
services:
|
services:
|
||||||
mylar:
|
mylar:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
hostname: mylar
|
hostname: mylar
|
||||||
image: lscr.io/linuxserver/mylar3
|
image: lscr.io/linuxserver/mylar3
|
||||||
environment:
|
environment:
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
PUID: ${NASCOMPOSE_UID?}
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
PGID: ${NASCOMPOSE_GID?}
|
||||||
networks:
|
networks:
|
||||||
- reverse-proxy
|
|
||||||
- torrents
|
- torrents
|
||||||
- usenet
|
- usenet
|
||||||
volumes:
|
volumes:
|
||||||
- ${NASCOMPOSE_SERVICES?}/comic-collector/volumes/mylar_config/:/config/
|
- ./volumes/mylar_config/:/config/
|
||||||
- ${NASCOMPOSE_DATA?}/:/data/
|
- ${NASCOMPOSE_DATA?}/:/data/
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.mylar.middlewares: authelia@file
|
traefik.http.routers.mylar.middlewares: authelia@file
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
reverse-proxy:
|
|
||||||
external: true
|
|
||||||
torrents:
|
torrents:
|
||||||
external: true
|
external: true
|
||||||
usenet:
|
usenet:
|
||||||
external: true
|
external: true
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
0
comic-collector/volumes/mylar_config/.gitkeep
Normal file
0
comic-collector/volumes/mylar_config/.gitkeep
Normal file
28
compose.base.yaml
Normal file
28
compose.base.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
# All services should at least use this
|
||||||
|
base-service:
|
||||||
|
# Always restart unless explicitly stopped
|
||||||
|
restart: unless-stopped
|
||||||
|
# Send the logs to a Loki instance with ability to fail
|
||||||
|
logging:
|
||||||
|
driver: loki
|
||||||
|
options:
|
||||||
|
loki-url: http://${NASCOMPOSE_MACVLAN_LOKI_IP?}:3100/loki/api/v1/push
|
||||||
|
loki-retries: 2
|
||||||
|
loki-max-backoff: 800ms
|
||||||
|
loki-timeout: 1s
|
||||||
|
keep-file: true
|
||||||
|
max-size: 20m
|
||||||
|
max-file: 5
|
||||||
|
|
||||||
|
# Service exposed via the reverse proxy
|
||||||
|
exposed-service:
|
||||||
|
extends: base-service
|
||||||
|
networks:
|
||||||
|
- reverse-proxy
|
||||||
|
labels:
|
||||||
|
traefik.enable: true
|
||||||
|
|
||||||
|
networks:
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
61
docker-monitoring/compose.yaml
Normal file
61
docker-monitoring/compose.yaml
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
services:
|
||||||
|
watchtower:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
container_name: watchtower
|
||||||
|
image: containrrr/watchtower
|
||||||
|
environment:
|
||||||
|
WATCHTOWER_INCLUDE_RESTARTING: true
|
||||||
|
WATCHTOWER_INCLUDE_STOPPED: true
|
||||||
|
WATCHTOWER_CLEANUP: true
|
||||||
|
WATCHTOWER_NOTIFICATION_REPORT: true
|
||||||
|
WATCHTOWER_NOTIFICATION_URL: /run/secrets/notification_url
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- ${NASCOMPOSE_SERVICES?}/docker-monitoring/secrets/notification_url:/run/secrets/notification_url:ro
|
||||||
|
|
||||||
|
portainer:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: portainer
|
||||||
|
image: portainer/portainer-ee
|
||||||
|
command:
|
||||||
|
- --admin-password-file=/run/secrets/portainer_password
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- ./volumes/portainer_data/:/data/
|
||||||
|
- ./secrets/portainer_password:/run/secrets/portainer_password:ro
|
||||||
|
labels:
|
||||||
|
traefik.http.services.portainer.loadbalancer.server.port: 9443
|
||||||
|
traefik.http.services.portainer.loadbalancer.server.scheme: https
|
||||||
|
|
||||||
|
dockge:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: dockge
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile_inline: |
|
||||||
|
FROM louislam/dockge
|
||||||
|
RUN apt update \
|
||||||
|
&& apt --yes --no-install-recommends install \
|
||||||
|
docker-ce-cli docker-compose-plugin \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
environment:
|
||||||
|
DOCKGE_STACKS_DIR: ${NASCOMPOSE_SERVICES?}/
|
||||||
|
COMPOSE_ENV_FILES: ${NASCOMPOSE_SERVICES?}/nas-compose.env,.env
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- ${NASCOMPOSE_SERVICES?}/:${NASCOMPOSE_SERVICES?}/
|
||||||
|
- ${NASCOMPOSE_SERVICES?}/docker-monitoring/volumes/dockge_data/:/app/data/
|
||||||
|
labels:
|
||||||
|
traefik.http.routers.dockge.middlewares: authelia@file
|
||||||
|
|
||||||
|
networks:
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
name: docker-monitoring
|
|
||||||
|
|
||||||
services:
|
|
||||||
watchtower:
|
|
||||||
hostname: watchtower
|
|
||||||
image: containrrr/watchtower
|
|
||||||
environment:
|
|
||||||
WATCHTOWER_INCLUDE_RESTARTING: true
|
|
||||||
WATCHTOWER_INCLUDE_STOPPED: true
|
|
||||||
WATCHTOWER_CLEANUP: true
|
|
||||||
WATCHTOWER_NOTIFICATION_REPORT: true
|
|
||||||
WATCHTOWER_NOTIFICATION_URL: /run/secrets/notification_url
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
# Secrets
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/docker-monitoring/secrets/notification_url:/run/secrets/notification_url:ro
|
|
||||||
restart: unless-stopped
|
|
||||||
dockge:
|
|
||||||
hostname: dockge
|
|
||||||
image: louislam/dockge
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/docker-monitoring/volumes/dockge_stacks/:/opt/stacks/
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/docker-monitoring/volumes/dockge_data/:/app/data/
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.dockge.middlewares: authelia@file
|
|
||||||
|
|
||||||
networks:
|
|
||||||
reverse-proxy:
|
|
||||||
external: true
|
|
||||||
0
docker-monitoring/secrets/.gitkeep
Normal file
0
docker-monitoring/secrets/.gitkeep
Normal file
0
docker-monitoring/volumes/dockge_data/.gitkeep
Normal file
0
docker-monitoring/volumes/dockge_data/.gitkeep
Normal file
0
docker-monitoring/volumes/portainer_data/.gitkeep
Normal file
0
docker-monitoring/volumes/portainer_data/.gitkeep
Normal file
@@ -1,39 +1,38 @@
|
|||||||
name: document-collector
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
services:
|
services:
|
||||||
paperless:
|
paperless:
|
||||||
hostname: paperless
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: paperless
|
||||||
image: ghcr.io/paperless-ngx/paperless-ngx
|
image: ghcr.io/paperless-ngx/paperless-ngx
|
||||||
|
env_file: ./config/paperless.env
|
||||||
environment:
|
environment:
|
||||||
PAPERLESS_REDIS: redis://broker:6379
|
PAPERLESS_REDIS: redis://paperless-redis:6379
|
||||||
USERMAP_UID: ${NASCOMPOSE_UID?}
|
USERMAP_UID: ${NASCOMPOSE_UID?}
|
||||||
USERMAP_GID: ${NASCOMPOSE_GID?}
|
USERMAP_GID: ${NASCOMPOSE_GID?}
|
||||||
PAPERLESS_URL: https://paperless.${NASCOMPOSE_DOMAIN?}
|
PAPERLESS_URL: https://paperless.${NASCOMPOSE_DOMAIN?}
|
||||||
PAPERLESS_ENABLE_HTTP_REMOTE_USER: true
|
|
||||||
PAPERLESS_TRASH_DIR: /usr/src/paperless/media/recycle-bin/paperless/
|
PAPERLESS_TRASH_DIR: /usr/src/paperless/media/recycle-bin/paperless/
|
||||||
PAPERLESS_OCR_USER_ARGS: '{"invalidate_digital_signatures": true}'
|
PAPERLESS_OCR_USER_ARGS: '{"invalidate_digital_signatures": true}'
|
||||||
networks:
|
networks:
|
||||||
- reverse-proxy
|
|
||||||
- default
|
- default
|
||||||
depends_on:
|
depends_on:
|
||||||
- broker
|
- paperless-redis
|
||||||
volumes:
|
volumes:
|
||||||
- ${NASCOMPOSE_SERVICES?}/document-collector/volumes/paperless_data/:/usr/src/paperless/data/
|
- ./volumes/paperless_data/:/usr/src/paperless/data/
|
||||||
- ${NASCOMPOSE_DATA?}/media/:/usr/src/paperless/media/
|
- ${NASCOMPOSE_DATA?}/media/:/usr/src/paperless/media/
|
||||||
- ${NASCOMPOSE_DATA?}/consume:/usr/src/paperless/consume
|
- ${NASCOMPOSE_DATA?}/consume:/usr/src/paperless/consume
|
||||||
- ${NASCOMPOSE_DATA?}/export:/usr/src/paperless/export
|
- ${NASCOMPOSE_DATA?}/export:/usr/src/paperless/export
|
||||||
restart: unless-stopped
|
paperless-redis:
|
||||||
labels:
|
extends:
|
||||||
traefik.enable: true
|
file: ../compose.base.yaml
|
||||||
traefik.http.routers.paperless.middlewares: authelia@file
|
service: base-service
|
||||||
|
container_name: paperless-redis
|
||||||
broker:
|
image: redis
|
||||||
hostname: broker
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
image: redis:7
|
|
||||||
volumes:
|
volumes:
|
||||||
- ${NASCOMPOSE_SERVICES?}/document-collector/volumes/broker_data/:/data/
|
- ./volumes/redis_data/:/data/
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
reverse-proxy:
|
reverse-proxy:
|
||||||
external: true
|
external: true
|
||||||
0
document-collector/volumes/broker_data/.gitkeep
Normal file
0
document-collector/volumes/broker_data/.gitkeep
Normal file
0
document-collector/volumes/paperless_data/.gitkeep
Normal file
0
document-collector/volumes/paperless_data/.gitkeep
Normal file
@@ -1,13 +1,14 @@
|
|||||||
name: dynamic-dns
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
services:
|
services:
|
||||||
duckdns:
|
duckdns:
|
||||||
hostname: duckdns
|
container_name: duckdns
|
||||||
image: lscr.io/linuxserver/duckdns
|
image: lscr.io/linuxserver/duckdns
|
||||||
environment:
|
environment:
|
||||||
- SUBDOMAINS=${NASCOMPOSE_DUCKDNS_DOMAIN?}
|
- SUBDOMAINS=${NASCOMPOSE_DUCKDNS_DOMAIN?}
|
||||||
- FILE__TOKEN=/run/secrets/duckdns_token
|
- FILE__TOKEN=/run/secrets/duckdns_token
|
||||||
volumes:
|
volumes:
|
||||||
# Secrets
|
# Secrets
|
||||||
- ${NASCOMPOSE_SERVICES?}/dynamic-dns/secrets/duckdns_token:/run/secrets/duckdns_token:ro
|
- ./secrets/duckdns_token:/run/secrets/duckdns_token:ro
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
networks: {}
|
||||||
@@ -1,46 +1,43 @@
|
|||||||
name: ebook-reader
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
services:
|
services:
|
||||||
calibre:
|
calibre:
|
||||||
hostname: calibre
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: calibre
|
||||||
image: lscr.io/linuxserver/calibre
|
image: lscr.io/linuxserver/calibre
|
||||||
environment:
|
environment:
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
PUID: ${NASCOMPOSE_UID?}
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
PGID: ${NASCOMPOSE_GID?}
|
||||||
networks:
|
networks:
|
||||||
- reverse-proxy
|
|
||||||
- calibre
|
- calibre
|
||||||
volumes:
|
volumes:
|
||||||
- ${NASCOMPOSE_SERVICES?}/ebook-reader/volumes/calibre_config/:/config/
|
- ./volumes/calibre_config/:/config/
|
||||||
|
- ./volumes/calibre_database/metadata.db:/data/media/ebooks/metadata.db
|
||||||
- ${NASCOMPOSE_DATA?}/media/ebooks/:/data/media/ebooks/
|
- ${NASCOMPOSE_DATA?}/media/ebooks/:/data/media/ebooks/
|
||||||
- ${NASCOMPOSE_SERVICES?}/ebook-reader/volumes/calibre_database/metadata.db:/data/media/ebooks/metadata.db
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.services.calibre.loadbalancer.server.port: 8080
|
traefik.http.services.calibre.loadbalancer.server.port: 8080
|
||||||
traefik.http.routers.calibre.middlewares: authelia@file
|
traefik.http.routers.calibre.middlewares: authelia@file
|
||||||
|
|
||||||
calibre-web:
|
calibre-web:
|
||||||
hostname: calibre-web
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: calibre-web
|
||||||
image: lscr.io/linuxserver/calibre-web
|
image: lscr.io/linuxserver/calibre-web
|
||||||
environment:
|
environment:
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
PUID: ${NASCOMPOSE_UID?}
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
PGID: ${NASCOMPOSE_GID?}
|
||||||
networks:
|
networks:
|
||||||
- reverse-proxy
|
|
||||||
- calibre
|
- calibre
|
||||||
volumes:
|
volumes:
|
||||||
- ${NASCOMPOSE_SERVICES?}/ebook-reader/volumes/calibre-web_config/:/config/
|
- ./volumes/calibre-web_config/:/config/
|
||||||
- ${NASCOMPOSE_DATA?}/media/ebooks/:/data/media/ebooks/:ro
|
- ${NASCOMPOSE_DATA?}/media/ebooks/:/data/media/ebooks/:ro
|
||||||
- ${NASCOMPOSE_SERVICES?}/ebook-reader/volumes/calibre_database/metadata.db:/data/media/ebooks/metadata.db:ro
|
- ./volumes/calibre_database/metadata.db:/data/media/ebooks/metadata.db:ro
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.calibre-web.middlewares: authelia@file
|
traefik.http.routers.calibre-web.middlewares: authelia@file
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
calibre:
|
calibre:
|
||||||
name: calibre
|
name: calibre
|
||||||
|
|
||||||
reverse-proxy:
|
reverse-proxy:
|
||||||
external: true
|
external: true
|
||||||
0
ebook-reader/volumes/calibre-web_config/.gitkeep
Normal file
0
ebook-reader/volumes/calibre-web_config/.gitkeep
Normal file
0
ebook-reader/volumes/calibre_config/.gitkeep
Normal file
0
ebook-reader/volumes/calibre_config/.gitkeep
Normal file
21
email/compose.yaml
Normal file
21
email/compose.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
services:
|
||||||
|
smtp-server:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
container_name: smtp-server
|
||||||
|
image: juanluisbaptiste/postfix
|
||||||
|
environment:
|
||||||
|
- SMTP_SERVER=${SMTP_ADDRESS?}
|
||||||
|
- SMTP_USERNAME=${SMTP_USERNAME?}
|
||||||
|
- SMTP_PASSWORD_FILE=/run/secrets/smtp_password
|
||||||
|
- SERVER_HOSTNAME=${NASCOMPOSE_DOMAIN?}
|
||||||
|
networks:
|
||||||
|
- smtp-server
|
||||||
|
volumes:
|
||||||
|
- ./secrets/smtp_password:/run/secrets/smtp_password:ro
|
||||||
|
networks:
|
||||||
|
smtp-server:
|
||||||
|
name: smtp-server
|
||||||
0
email/secrets/.gitkeep
Normal file
0
email/secrets/.gitkeep
Normal file
22
git/compose.yaml
Normal file
22
git/compose.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
services:
|
||||||
|
gitea:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: gitea
|
||||||
|
image: gitea/gitea:latest-rootless
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
volumes:
|
||||||
|
- ${NASCOMPOSE_DATA?}/git:/var/lib/gitea/git/lfs
|
||||||
|
- ./volumes/gitea_data:/var/lib/gitea
|
||||||
|
- ./volumes/gitea_config:/etc/gitea
|
||||||
|
labels:
|
||||||
|
traefik.http.services.gitea.loadbalancer.server.port: 3000
|
||||||
|
traefik.tcp.routers.gitea.entryPoints: ssh
|
||||||
|
traefik.tcp.routers.gitea.rule: HostSNI(`*`)
|
||||||
|
traefik.tcp.services.gitea.loadbalancer.server.port: 2222
|
||||||
|
networks:
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
0
git/volumes/gitea_config/.gitkeep
Normal file
0
git/volumes/gitea_config/.gitkeep
Normal file
0
git/volumes/gitea_data/.gitkeep
Normal file
0
git/volumes/gitea_data/.gitkeep
Normal file
@@ -1,14 +1,16 @@
|
|||||||
name: indexer
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
services:
|
services:
|
||||||
prowlarr:
|
prowlarr:
|
||||||
hostname: prowlarr
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: prowlarr
|
||||||
image: lscr.io/linuxserver/prowlarr
|
image: lscr.io/linuxserver/prowlarr
|
||||||
environment:
|
environment:
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
PUID: ${NASCOMPOSE_UID?}
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
PGID: ${NASCOMPOSE_GID?}
|
||||||
networks:
|
networks:
|
||||||
- reverse-proxy
|
|
||||||
- default
|
- default
|
||||||
- indexer
|
- indexer
|
||||||
- torrents
|
- torrents
|
||||||
@@ -18,27 +20,27 @@ services:
|
|||||||
- 1.1.1.1
|
- 1.1.1.1
|
||||||
- 1.0.0.1
|
- 1.0.0.1
|
||||||
volumes:
|
volumes:
|
||||||
- ${NASCOMPOSE_SERVICES?}/indexer/volumes/prowlarr_config/:/config/
|
- ./volumes/prowlarr_config/:/config/
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.prowlarr.middlewares: authelia@file
|
traefik.http.routers.prowlarr.middlewares: authelia@file
|
||||||
|
|
||||||
flaresolverr:
|
flaresolverr:
|
||||||
hostname: flaresolverr
|
extends:
|
||||||
image: ghcr.io/flaresolverr/flaresolverr:pr-1282 # Temporary until https://github.com/FlareSolverr/FlareSolverr/pull/1272 gets fixed
|
file: ../compose.base.yaml
|
||||||
restart: unless-stopped
|
service: base-service
|
||||||
|
container_name: flaresolverr
|
||||||
|
image: alexfozor/flaresolverr:pr-1300-experimental # ghcr.io/flaresolverr/flaresolverr:pr-1282 # Temporary until https://github.com/FlareSolverr/FlareSolverr/pull/1272 gets fixed
|
||||||
dns:
|
dns:
|
||||||
# Work around DNS blocks in various regions
|
# Work around DNS blocks in various regions
|
||||||
- 1.1.1.1
|
- 1.1.1.1
|
||||||
- 1.0.0.1
|
- 1.0.0.1
|
||||||
|
|
||||||
autobrr:
|
autobrr:
|
||||||
hostname: autobrr
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: autobrr
|
||||||
image: ghcr.io/autobrr/autobrr
|
image: ghcr.io/autobrr/autobrr
|
||||||
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
networks:
|
networks:
|
||||||
- reverse-proxy
|
|
||||||
- default
|
- default
|
||||||
- torrents
|
- torrents
|
||||||
dns:
|
dns:
|
||||||
@@ -46,27 +48,24 @@ services:
|
|||||||
- 1.1.1.1
|
- 1.1.1.1
|
||||||
- 1.0.0.1
|
- 1.0.0.1
|
||||||
volumes:
|
volumes:
|
||||||
- ${NASCOMPOSE_SERVICES?}/indexer/volumes/autobrr_config/:/config/
|
- ./volumes/autobrr_config/:/config/
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.autobrr.middlewares: authelia@file
|
traefik.http.routers.autobrr.middlewares: authelia@file
|
||||||
|
|
||||||
omegabrr:
|
omegabrr:
|
||||||
hostname: omegabrr
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
container_name: omegabrr
|
||||||
image: ghcr.io/autobrr/omegabrr
|
image: ghcr.io/autobrr/omegabrr
|
||||||
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
networks:
|
networks:
|
||||||
- reverse-proxy
|
- reverse-proxy # Hack to access sonarr/radarr
|
||||||
- default
|
- default
|
||||||
volumes:
|
volumes:
|
||||||
- ${NASCOMPOSE_SERVICES?}/indexer/volumes/omegabrr_config/:/config/
|
- ${NASCOMPOSE_SERVICES?}/indexer/volumes/omegabrr_config/:/config/
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
indexer:
|
indexer:
|
||||||
name: indexer
|
name: indexer
|
||||||
|
|
||||||
reverse-proxy:
|
reverse-proxy:
|
||||||
external: true
|
external: true
|
||||||
torrents:
|
torrents:
|
||||||
0
indexer/volumes/autobrr_config/.gitkeep
Normal file
0
indexer/volumes/autobrr_config/.gitkeep
Normal file
0
indexer/volumes/omegabrr_config/.gitkeep
Normal file
0
indexer/volumes/omegabrr_config/.gitkeep
Normal file
0
indexer/volumes/prowlarr_config/.gitkeep
Normal file
0
indexer/volumes/prowlarr_config/.gitkeep
Normal file
@@ -1,23 +1,22 @@
|
|||||||
name: irc
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
services:
|
services:
|
||||||
thelounge:
|
thelounge:
|
||||||
hostname: thelounge
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: thelounge
|
||||||
image: lscr.io/linuxserver/thelounge
|
image: lscr.io/linuxserver/thelounge
|
||||||
environment:
|
environment:
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
PUID: ${NASCOMPOSE_UID?}
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
PGID: ${NASCOMPOSE_GID?}
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
dns:
|
dns:
|
||||||
# Work around DNS blocks in various regions
|
# Work around DNS blocks in various regions
|
||||||
- 1.1.1.1
|
- 1.1.1.1
|
||||||
- 1.0.0.1
|
- 1.0.0.1
|
||||||
volumes:
|
volumes:
|
||||||
- ${NASCOMPOSE_SERVICES?}/irc/volumes/thelounge_config/:/config/
|
- ./volumes/thelounge_config/:/config/
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.thelounge.middlewares: authelia@file
|
traefik.http.routers.thelounge.middlewares: authelia@file
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
0
irc/volumes/thelounge_config/.gitkeep
Normal file
0
irc/volumes/thelounge_config/.gitkeep
Normal file
75
media-player/compose.yaml
Normal file
75
media-player/compose.yaml
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
services:
|
||||||
|
plex:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: plex
|
||||||
|
image: plexinc/pms-docker
|
||||||
|
environment:
|
||||||
|
PLEX_UID: ${NASCOMPOSE_UID?}
|
||||||
|
PLEX_GID: ${NASCOMPOSE_GID?}
|
||||||
|
networks:
|
||||||
|
- media-player
|
||||||
|
volumes:
|
||||||
|
- ./volumes/plex_config/:/config/
|
||||||
|
- ${NASCOMPOSE_DATA?}/media/:/data/:ro
|
||||||
|
labels:
|
||||||
|
traefik.http.services.plex.loadbalancer.server.port: 32400
|
||||||
|
traefik.http.services.plex.loadbalancer.server.scheme: https
|
||||||
|
tautulli:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: tautulli
|
||||||
|
image: ghcr.io/tautulli/tautulli
|
||||||
|
environment:
|
||||||
|
PUID: ${NASCOMPOSE_UID?}
|
||||||
|
PGID: ${NASCOMPOSE_GID?}
|
||||||
|
networks:
|
||||||
|
- media-player
|
||||||
|
volumes:
|
||||||
|
- ./volumes/tautulli_config/:/config/
|
||||||
|
labels:
|
||||||
|
traefik.http.routers.tautulli.middlewares: authelia@file
|
||||||
|
plaxt:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: plaxt
|
||||||
|
image: xanderstrike/goplaxt
|
||||||
|
profiles:
|
||||||
|
- plaxt
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
environment:
|
||||||
|
TRAKT_ID_FILE: /run/secrets/trakt_id
|
||||||
|
TRAKT_SECRET_FILE: /run/secrets/trakt_secret
|
||||||
|
networks:
|
||||||
|
- media-player
|
||||||
|
volumes:
|
||||||
|
- ./volumes/plaxt_keystore/:/app/keystore/
|
||||||
|
- ./secrets/trakt_id:/run/secrets/trakt_id:ro
|
||||||
|
- ./secrets/trakt_secret:/run/secrets/trakt_secret:ro
|
||||||
|
audiobookshelf:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: audiobookshelf
|
||||||
|
image: advplyr/audiobookshelf
|
||||||
|
profiles:
|
||||||
|
- ebooks
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
environment:
|
||||||
|
PORT: 13378
|
||||||
|
volumes:
|
||||||
|
- ./volumes/audiobookshelf_config/:/config/
|
||||||
|
- ./volumes/audiobookshelf_metadata/:/metadata/
|
||||||
|
- ${NASCOMPOSE_DATA?}/media/audiobooks/:/data/audiobooks/:ro
|
||||||
|
labels:
|
||||||
|
traefik.http.services.audiobookshelf.loadbalancer.server.port: 13378
|
||||||
|
networks:
|
||||||
|
media-player:
|
||||||
|
name: media-player
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
name: media-player
|
|
||||||
|
|
||||||
services:
|
|
||||||
plex:
|
|
||||||
hostname: plex
|
|
||||||
image: plexinc/pms-docker
|
|
||||||
environment:
|
|
||||||
PLEX_UID: ${NASCOMPOSE_UID?}
|
|
||||||
PLEX_GID: ${NASCOMPOSE_GID?}
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
- media-player
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/media-player/volumes/plex_config/:/config/
|
|
||||||
- ${NASCOMPOSE_DATA?}/media/:/data/:ro
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.services.plex.loadbalancer.server.port: 32400
|
|
||||||
traefik.http.services.plex.loadbalancer.server.scheme: https
|
|
||||||
|
|
||||||
tautulli:
|
|
||||||
hostname: tautulli
|
|
||||||
image: lscr.io/linuxserver/tautulli
|
|
||||||
environment:
|
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
- media-player
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/media-player/volumes/tautulli_config/:/config/
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.tautulli.middlewares: authelia@file
|
|
||||||
|
|
||||||
plaxt:
|
|
||||||
hostname: plaxt
|
|
||||||
image: xanderstrike/goplaxt
|
|
||||||
profiles: [ plaxt ]
|
|
||||||
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
|
||||||
environment:
|
|
||||||
TRAKT_ID_FILE: /run/secrets/trakt_id
|
|
||||||
TRAKT_SECRET_FILE: /run/secrets/trakt_secret
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
- media-player
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/media-player/volumes/plaxt_keystore/:/app/keystore/
|
|
||||||
# Secrets
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/media-player/secrets/trakt_id:/run/secrets/trakt_id:ro
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/media-player/secrets/trakt_secret:/run/secrets/trakt_secret:ro
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
|
|
||||||
audiobookshelf:
|
|
||||||
hostname: audiobookshelf
|
|
||||||
image: advplyr/audiobookshelf
|
|
||||||
profiles: [ ebooks ]
|
|
||||||
environment:
|
|
||||||
AUDIOBOOKSHELF_UID: ${NASCOMPOSE_UID?}
|
|
||||||
AUDIOBOOKSHELF_GID: ${NASCOMPOSE_GID?}
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/media-player/volumes/audiobookshelf_config/:/config/
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/media-player/volumes/audiobookshelf_metadata/:/metadata/
|
|
||||||
- ${NASCOMPOSE_DATA?}/media/audiobooks/:/audiobooks/
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.audiobookshelf.middlewares: authelia@file
|
|
||||||
|
|
||||||
networks:
|
|
||||||
media-player:
|
|
||||||
name: media-player
|
|
||||||
|
|
||||||
reverse-proxy:
|
|
||||||
external: true
|
|
||||||
0
media-player/secrets/.gitkeep
Normal file
0
media-player/secrets/.gitkeep
Normal file
0
media-player/volumes/audiobookshelf_config/.gitkeep
Normal file
0
media-player/volumes/audiobookshelf_config/.gitkeep
Normal file
0
media-player/volumes/plaxt_keystore/.gitkeep
Normal file
0
media-player/volumes/plaxt_keystore/.gitkeep
Normal file
0
media-player/volumes/plex_config/.gitkeep
Normal file
0
media-player/volumes/plex_config/.gitkeep
Normal file
0
media-player/volumes/tautulli_config/.gitkeep
Normal file
0
media-player/volumes/tautulli_config/.gitkeep
Normal file
@@ -1,21 +1,19 @@
|
|||||||
name: media-requester
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
services:
|
services:
|
||||||
overseerr:
|
overseerr:
|
||||||
hostname: overseerr
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: overseerr
|
||||||
image: sctx/overseerr
|
image: sctx/overseerr
|
||||||
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
networks:
|
networks:
|
||||||
- reverse-proxy
|
|
||||||
- media-player
|
- media-player
|
||||||
- tv-collector
|
- tv-collector
|
||||||
- movie-collector
|
- movie-collector
|
||||||
volumes:
|
volumes:
|
||||||
- ${NASCOMPOSE_SERVICES?}/media-requester/volumes/overseerr_config/:/app/config
|
- ./volumes/overseerr_config/:/app/config
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
reverse-proxy:
|
reverse-proxy:
|
||||||
external: true
|
external: true
|
||||||
0
media-requester/volumes/overseerr_config/.gitkeep
Normal file
0
media-requester/volumes/overseerr_config/.gitkeep
Normal file
11
monitoring/compose.macvlan.yaml
Normal file
11
monitoring/compose.macvlan.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
services:
|
||||||
|
loki:
|
||||||
|
networks:
|
||||||
|
macvlan:
|
||||||
|
ipv4_address: ${NASCOMPOSE_MACVLAN_LOKI_IP?}
|
||||||
|
|
||||||
|
networks:
|
||||||
|
macvlan:
|
||||||
|
external: true
|
||||||
79
monitoring/compose.yaml
Normal file
79
monitoring/compose.yaml
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
services:
|
||||||
|
loki:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
container_name: loki
|
||||||
|
image: grafana/loki
|
||||||
|
#user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
command: -config.file=/etc/loki/local-config.yaml
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
promtail:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
container_name: promtail
|
||||||
|
image: grafana/promtail
|
||||||
|
command: -config.file=/etc/promtail/config.yaml
|
||||||
|
#user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
volumes:
|
||||||
|
- /var/log:/var/log
|
||||||
|
- ./config/promtail_config.yaml:/etc/promtail/config.yaml
|
||||||
|
- ./volumes/promtail_logs/:/data/logs/
|
||||||
|
grafana:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: grafana
|
||||||
|
image: grafana/grafana-oss
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
environment:
|
||||||
|
MASCOMPOSE_DOMAIN: ${NASCOMPOSE_DOMAIN?}
|
||||||
|
volumes:
|
||||||
|
- ./volumes/grafana_data/:/var/lib/grafana
|
||||||
|
- ./config/grafana.ini:/etc/grafana/grafana.ini:ro
|
||||||
|
- ./secrets/grafana_oauth:/run/secrets/oauth_secret:ro
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
cadvisor:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: cadvisor
|
||||||
|
image: gcr.io/cadvisor/cadvisor
|
||||||
|
#user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
command:
|
||||||
|
- --enable_metrics=app,cpu,memory,network,oom_event,percpu
|
||||||
|
- --store_container_labels=false
|
||||||
|
- --docker_only=true
|
||||||
|
- --housekeeping_interval=10s
|
||||||
|
- --whitelisted_container_labels=com.docker.compose.project,com.docker.compose.service
|
||||||
|
volumes:
|
||||||
|
- /:/rootfs:ro
|
||||||
|
- /var/run:/var/run:ro
|
||||||
|
- /sys:/sys:ro
|
||||||
|
- /var/packages/ContainerManager/var/docker/:/var/lib/docker:ro
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
labels:
|
||||||
|
traefik.http.routers.cadvisor.middlewares: authelia@file
|
||||||
|
prometheus:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: prometheus
|
||||||
|
image: prom/prometheus
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
volumes:
|
||||||
|
- ./config/prometheus_config/prometheus.yml:/etc/prometheus/prometheus.yml
|
||||||
|
- ./volumes/prometheus_data/:/prometheus/
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
labels:
|
||||||
|
traefik.http.routers.prometheus.middlewares: authelia@file
|
||||||
|
networks:
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
1925
monitoring/config/grafana.ini
Normal file
1925
monitoring/config/grafana.ini
Normal file
File diff suppressed because it is too large
Load Diff
25
monitoring/config/promtail_config.yaml
Normal file
25
monitoring/config/promtail_config.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
server:
|
||||||
|
http_listen_port: 9080
|
||||||
|
grpc_listen_port: 0
|
||||||
|
|
||||||
|
positions:
|
||||||
|
filename: /data/logs/positions.yaml
|
||||||
|
|
||||||
|
clients:
|
||||||
|
- url: http://loki:3100/loki/api/v1/push
|
||||||
|
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: system
|
||||||
|
static_configs:
|
||||||
|
- targets:
|
||||||
|
- localhost
|
||||||
|
labels:
|
||||||
|
job: varlogs
|
||||||
|
__path__: /var/log/*.log
|
||||||
|
- job_name: traefik
|
||||||
|
static_configs:
|
||||||
|
- targets:
|
||||||
|
- traefik
|
||||||
|
labels:
|
||||||
|
job: traefik
|
||||||
|
__path__: /data/logs/traefik/*.log
|
||||||
0
monitoring/volumes/grafana_data/.gitkeep
Normal file
0
monitoring/volumes/grafana_data/.gitkeep
Normal file
0
monitoring/volumes/prometheus_data/.gitkeep
Normal file
0
monitoring/volumes/prometheus_data/.gitkeep
Normal file
6
monitoring/volumes/promtail_logs/.gitignore
vendored
Normal file
6
monitoring/volumes/promtail_logs/.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Promtail logs volume is special as it contains folders which are symlinked to as volumes for other containers
|
||||||
|
# Stop the parent .gitignore from impacting subfolders
|
||||||
|
!*/
|
||||||
|
# Ignore the content of all the subfolders
|
||||||
|
*/*
|
||||||
|
!.gitkeep
|
||||||
0
monitoring/volumes/promtail_logs/traefik/.gitkeep
Normal file
0
monitoring/volumes/promtail_logs/traefik/.gitkeep
Normal file
@@ -1,29 +1,27 @@
|
|||||||
name: movie-collector
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
services:
|
services:
|
||||||
radarr:
|
radarr:
|
||||||
hostname: radarr
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: radarr
|
||||||
image: lscr.io/linuxserver/radarr
|
image: lscr.io/linuxserver/radarr
|
||||||
environment:
|
environment:
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
PUID: ${NASCOMPOSE_UID?}
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
PGID: ${NASCOMPOSE_GID?}
|
||||||
networks:
|
networks:
|
||||||
- reverse-proxy
|
|
||||||
- movie-collector
|
- movie-collector
|
||||||
- torrents
|
- torrents
|
||||||
- usenet
|
- usenet
|
||||||
volumes:
|
volumes:
|
||||||
- ${NASCOMPOSE_SERVICES?}/movie-collector/volumes/radarr_config/:/config/
|
- ./volumes/radarr_config/:/config/
|
||||||
- ${NASCOMPOSE_DATA?}/:/data/
|
- ${NASCOMPOSE_DATA?}/:/data/
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.radarr.middlewares: authelia@file
|
traefik.http.routers.radarr.middlewares: authelia@file
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
movie-collector:
|
movie-collector:
|
||||||
name: movie-collector
|
name: movie-collector
|
||||||
|
|
||||||
reverse-proxy:
|
reverse-proxy:
|
||||||
external: true
|
external: true
|
||||||
torrents:
|
torrents:
|
||||||
0
movie-collector/volumes/radarr_config/.gitkeep
Normal file
0
movie-collector/volumes/radarr_config/.gitkeep
Normal file
@@ -1,23 +0,0 @@
|
|||||||
COMPOSE_PROFILES=ebooks,plaxt,usenet,torrents-xseed
|
|
||||||
|
|
||||||
NASCOMPOSE_UID=1000
|
|
||||||
NASCOMPOSE_GID=1000
|
|
||||||
|
|
||||||
NASCOMPOSE_SERVICES=
|
|
||||||
NASCOMPOSE_DATA=
|
|
||||||
NASCOMPOSE_DOMAIN=
|
|
||||||
NASCOMPOSE_LDAP_DN=
|
|
||||||
|
|
||||||
NASCOMPOSE_MACVLAN_IFACE=
|
|
||||||
NASCOMPOSE_MACVLAN_SUBNET=
|
|
||||||
NASCOMPOSE_MACVLAN_GATEWAY=
|
|
||||||
NASCOMPOSE_MACVLAN_RANGE=
|
|
||||||
NASCOMPOSE_MACVLAN_HOST_IP=
|
|
||||||
NASCOMPOSE_MACVLAN_TRAEFIK_IP=
|
|
||||||
NASCOMPOSE_MACVLAN_PLEX_IP=
|
|
||||||
NASCOMPOSE_MACVLAN_PORTAINER_IP=
|
|
||||||
|
|
||||||
NASCOMPOSE_AUTHELIA_SMTP_ADDRESS=
|
|
||||||
NASCOMPOSE_AUTHELIA_SMTP_USERNAME=
|
|
||||||
|
|
||||||
NASCOMPOSE_DUCKDNS_DOMAIN=
|
|
||||||
24
nas-compose.env.template
Normal file
24
nas-compose.env.template
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Profiles to enable across the instance
|
||||||
|
# Supported profiles:
|
||||||
|
# - plaxt: Plex -> Trakt Integration
|
||||||
|
# - ebooks: Support for ebooks and audiobooks
|
||||||
|
# - usenet: Support for usenet client
|
||||||
|
# - torrents-seeding: Support for a dedicated "seeding only" torrent client
|
||||||
|
COMPOSE_PROFILES=ebooks,plaxt,usenet,torrents-seeding
|
||||||
|
|
||||||
|
# UID and GID used in the docker containers
|
||||||
|
NASCOMPOSE_UID=1000
|
||||||
|
NASCOMPOSE_GID=1000
|
||||||
|
|
||||||
|
# Path to the docker services folders (SSD preferable)
|
||||||
|
NASCOMPOSE_SERVICES=
|
||||||
|
# Path to the data folders (HDD and storage)
|
||||||
|
NASCOMPOSE_DATA=
|
||||||
|
# FQDN of the group of services
|
||||||
|
NASCOMPOSE_DOMAIN=
|
||||||
|
|
||||||
|
# MacVLAN dedicated IP addresses
|
||||||
|
NASCOMPOSE_MACVLAN_HOST_IP=
|
||||||
|
NASCOMPOSE_MACVLAN_TRAEFIK_IP=
|
||||||
|
NASCOMPOSE_MACVLAN_PLEX_IP=
|
||||||
|
NASCOMPOSE_MACVLAN_LOKI_IP=
|
||||||
0
network-monitoring/volumes/smokeping_data/.gitkeep
Normal file
0
network-monitoring/volumes/smokeping_data/.gitkeep
Normal file
28
notifiarr/compose.yaml
Normal file
28
notifiarr/compose.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
services:
|
||||||
|
notifiarr:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: notifiarr
|
||||||
|
image: golift/notifiarr
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
volumes:
|
||||||
|
- ./volumes/notifiarr_config/:/config/
|
||||||
|
labels:
|
||||||
|
traefik.http.routers.notifiarr.middlewares: authelia@file
|
||||||
|
recyclarr:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
container_name: recyclarr
|
||||||
|
image: ghcr.io/recyclarr/recyclarr
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
networks:
|
||||||
|
- reverse-proxy #Hack to get access to the right containers
|
||||||
|
volumes:
|
||||||
|
- ./volumes/recyclarr_config/:/config/
|
||||||
|
networks:
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
name: notifiarr
|
|
||||||
|
|
||||||
services:
|
|
||||||
notifiarr:
|
|
||||||
hostname: notifiarr
|
|
||||||
image: golift/notifiarr
|
|
||||||
environment:
|
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/notifiarr/volumes/notifiarr_config/:/config/
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.notifiarr.middlewares: authelia@file
|
|
||||||
|
|
||||||
recyclarr:
|
|
||||||
hostname: recyclarr
|
|
||||||
image: ghcr.io/recyclarr/recyclarr
|
|
||||||
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/notifiarr/volumes/recyclarr_config/:/config/
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
networks:
|
|
||||||
reverse-proxy:
|
|
||||||
external: true
|
|
||||||
0
notifiarr/volumes/notifiarr_config/.gitkeep
Normal file
0
notifiarr/volumes/notifiarr_config/.gitkeep
Normal file
0
notifiarr/volumes/recyclarr_config/.gitkeep
Normal file
0
notifiarr/volumes/recyclarr_config/.gitkeep
Normal file
87
photo-collector/compose.yaml
Normal file
87
photo-collector/compose.yaml
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
services:
|
||||||
|
immich:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: immich
|
||||||
|
image: ghcr.io/immich-app/immich-server:release
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
networks:
|
||||||
|
- smtp-server
|
||||||
|
- default
|
||||||
|
depends_on:
|
||||||
|
- immich-redis
|
||||||
|
- immich-postgres
|
||||||
|
environment:
|
||||||
|
REDIS_HOSTNAME: immich-redis
|
||||||
|
DB_HOSTNAME: immich-postgres
|
||||||
|
DB_USERNAME: postgres
|
||||||
|
DB_PASSWORD: postgres
|
||||||
|
DB_DATABASE_NAME: immich
|
||||||
|
volumes:
|
||||||
|
- ${NASCOMPOSE_DATA?}/media/photos/:/usr/src/app/upload/
|
||||||
|
immich-ml:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
container_name: immich-ml
|
||||||
|
image: ghcr.io/immich-app/immich-machine-learning:release
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
volumes:
|
||||||
|
- ./volumes/immich_ml_cache/:/cache/
|
||||||
|
- ./volumes/immich_ml_config/:/.config/
|
||||||
|
immich-redis:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
container_name: immich-redis
|
||||||
|
image: redis:6.2-alpine
|
||||||
|
healthcheck:
|
||||||
|
test: redis-cli ping || exit 1
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
volumes:
|
||||||
|
- ./volumes/redis_data/:/data/
|
||||||
|
immich-postgres:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
container_name: immich-postgres
|
||||||
|
image: tensorchord/pgvecto-rs:pg14-v0.2.0
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: postgres
|
||||||
|
POSTGRES_DB: immich
|
||||||
|
POSTGRES_INITDB_ARGS: --data-checksums
|
||||||
|
volumes:
|
||||||
|
- ./volumes/immich_postgres_data/:/var/lib/postgresql/data/
|
||||||
|
healthcheck:
|
||||||
|
test: pg_isready --dbname='immich' --username='postgres' || exit 1;
|
||||||
|
Chksum="$$(psql --dbname='immich' --username='postgres' --tuples-only
|
||||||
|
--no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM
|
||||||
|
pg_stat_database')"; echo "checksum failure count is $$Chksum"; [
|
||||||
|
"$$Chksum" = '0' ] || exit 1
|
||||||
|
interval: 5m
|
||||||
|
#start_interval: 30s
|
||||||
|
start_period: 5m
|
||||||
|
command:
|
||||||
|
- postgres
|
||||||
|
- -c
|
||||||
|
- shared_preload_libraries=vectors.so
|
||||||
|
- -c
|
||||||
|
- search_path="$$user", public, vectors
|
||||||
|
- -c
|
||||||
|
- logging_collector=on
|
||||||
|
- -c
|
||||||
|
- max_wal_size=2GB
|
||||||
|
- -c
|
||||||
|
- shared_buffers=512MB
|
||||||
|
- -c
|
||||||
|
- wal_compression=on
|
||||||
|
networks:
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
|
smtp-server:
|
||||||
|
external: true
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
name: photo-collector
|
|
||||||
|
|
||||||
services:
|
|
||||||
immich:
|
|
||||||
hostname: immich
|
|
||||||
image: ghcr.io/immich-app/immich-server:release
|
|
||||||
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
- default
|
|
||||||
depends_on:
|
|
||||||
- immich_redis
|
|
||||||
- immich_postgres
|
|
||||||
environment:
|
|
||||||
DB_USERNAME: postgres
|
|
||||||
DB_PASSWORD: postgres
|
|
||||||
DB_DATABASE_NAME: immich
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_DATA?}/media/photos/:/usr/src/app/upload/
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.immich.middlewares: authelia@file
|
|
||||||
|
|
||||||
immich-machine-learning:
|
|
||||||
hostname: immich-machine-learning
|
|
||||||
image: ghcr.io/immich-app/immich-machine-learning:release
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/photo-collector/volumes/immich_ml_cache/:/cache/
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
immich_redis:
|
|
||||||
hostname: redis
|
|
||||||
image: redis:6.2-alpine
|
|
||||||
healthcheck:
|
|
||||||
test: redis-cli ping || exit 1
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
immich_postgres:
|
|
||||||
hostname: database
|
|
||||||
image: tensorchord/pgvecto-rs:pg14-v0.2.0
|
|
||||||
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
|
||||||
environment:
|
|
||||||
POSTGRES_USER: postgres
|
|
||||||
POSTGRES_PASSWORD: postgres
|
|
||||||
POSTGRES_DB: immich
|
|
||||||
POSTGRES_INITDB_ARGS: '--data-checksums'
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/photo-collector/volumes/immich_postgres_data/:/var/lib/postgresql/data/
|
|
||||||
healthcheck:
|
|
||||||
test: pg_isready --dbname='immich' --username='postgres' || exit 1; Chksum="$$(psql --dbname='immich' --username='postgres' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
|
|
||||||
interval: 5m
|
|
||||||
#start_interval: 30s
|
|
||||||
start_period: 5m
|
|
||||||
command: ["postgres", "-c" ,"shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
networks:
|
|
||||||
reverse-proxy:
|
|
||||||
external: true
|
|
||||||
0
photo-collector/volumes/immich_ml_cache/.gitkeep
Normal file
0
photo-collector/volumes/immich_ml_cache/.gitkeep
Normal file
16
recipe-collector/compose.yaml
Normal file
16
recipe-collector/compose.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
services:
|
||||||
|
mealie:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: mealie
|
||||||
|
image: ghcr.io/mealie-recipes/mealie
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
env_file: ./config/mealie.env
|
||||||
|
volumes:
|
||||||
|
- ./volumes/mealie_data/:/app/data/
|
||||||
|
networks:
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
name: recipe-collector
|
|
||||||
|
|
||||||
services:
|
|
||||||
mealie:
|
|
||||||
hostname: mealie
|
|
||||||
image: ghcr.io/mealie-recipes/mealie
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
environment:
|
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/recipe-collector/volumes/mealie_data/:/app/data/
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
# Embedded authentication
|
|
||||||
# traefik.http.routers.mealie.middlewares: authelia@file
|
|
||||||
|
|
||||||
networks:
|
|
||||||
reverse-proxy:
|
|
||||||
external: true
|
|
||||||
0
recipe-collector/volumes/mealie_data/.gitkeep
Normal file
0
recipe-collector/volumes/mealie_data/.gitkeep
Normal file
@@ -1,8 +1,9 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
services:
|
services:
|
||||||
traefik:
|
traefik:
|
||||||
environment:
|
environment:
|
||||||
NASCOMPOSE_MACVLAN_SYNOLOGY_IP: ${NASCOMPOSE_MACVLAN_HOST_IP?}
|
NASCOMPOSE_MACVLAN_SYNOLOGY_IP: ${NASCOMPOSE_MACVLAN_HOST_IP?}
|
||||||
NASCOMPOSE_MACVLAN_PORTAINER_IP: ${NASCOMPOSE_MACVLAN_PORTAINER_IP?}
|
|
||||||
networks:
|
networks:
|
||||||
macvlan:
|
macvlan:
|
||||||
ipv4_address: ${NASCOMPOSE_MACVLAN_TRAEFIK_IP?}
|
ipv4_address: ${NASCOMPOSE_MACVLAN_TRAEFIK_IP?}
|
||||||
@@ -1,33 +1,41 @@
|
|||||||
name: reverse-proxy
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
services:
|
services:
|
||||||
traefik:
|
traefik:
|
||||||
hostname: traefik
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: traefik
|
||||||
image: traefik
|
image: traefik
|
||||||
# TODO: Run as non root user
|
# TODO: Run as non root user
|
||||||
#user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
#user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
environment:
|
environment:
|
||||||
NASCOMPOSE_DOMAIN: ${NASCOMPOSE_DOMAIN?}
|
NASCOMPOSE_DOMAIN: ${NASCOMPOSE_DOMAIN?}
|
||||||
CF_DNS_API_TOKEN_FILE: /run/secrets/cf_dns_token
|
NASCOMPOSE_ROUTER_URL: ${NASCOMPOSE_ROUTER_URL?}
|
||||||
TRAEFIK_CERTIFICATESRESOLVERS_DEFAULTRESOLVER_ACME_EMAIL: admin@${NASCOMPOSE_DOMAIN?}
|
TRAEFIK_CERTIFICATESRESOLVERS_DEFAULTRESOLVER_ACME_EMAIL: admin@${NASCOMPOSE_DOMAIN?}
|
||||||
TRAEFIK_ENTRYPOINTS_WEBSECURE_HTTP_TLS_DOMAINS_0_MAIN: '*.${NASCOMPOSE_DOMAIN?}'
|
|
||||||
LEGO_DISABLE_CNAME_SUPPORT: true
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- ${NASCOMPOSE_SERVICES?}/reverse-proxy/volumes/traefik_acme/:/etc/traefik/acme/
|
- ./volumes/traefik_acme/:/etc/traefik/acme/
|
||||||
- ${NASCOMPOSE_SERVICES?}/reverse-proxy/volumes/traefik_logs/:/var/log/traefik/
|
- ./volumes/traefik_logs/:/var/log/traefik/
|
||||||
# Config
|
- ./configs/traefik.yml:/etc/traefik/traefik.yml:ro
|
||||||
- ${NASCOMPOSE_SERVICES?}/reverse-proxy/configs/traefik.yml:/etc/traefik/traefik.yml:ro
|
- ./configs/dynamic:/etc/traefik/dynamic:ro
|
||||||
- ${NASCOMPOSE_SERVICES?}/reverse-proxy/configs/dynamic:/etc/traefik/dynamic:ro
|
- ./secrets/cf_dns_token:/run/secrets/cf_dns_token:ro
|
||||||
# Secrets
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/reverse-proxy/secrets/cf_dns_token:/run/secrets/cf_dns_token:ro
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.traefik.service: api@internal
|
traefik.http.routers.traefik.service: api@internal
|
||||||
traefik.http.routers.traefik.middlewares: authelia@file
|
traefik.http.routers.traefik.middlewares: authelia@file
|
||||||
|
traefik.http.services.traefik.loadbalancer.server.port: 8081
|
||||||
|
endlessh:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: endlessh
|
||||||
|
image: lscr.io/linuxserver/endlessh
|
||||||
|
environment:
|
||||||
|
PUID: ${NASCOMPOSE_UID?}
|
||||||
|
PGID: ${NASCOMPOSE_GID?}
|
||||||
|
labels:
|
||||||
|
traefik.tcp.routers.endlessh.entryPoints: ssh-tarpit
|
||||||
|
traefik.tcp.routers.endlessh.rule: HostSNI(`*`)
|
||||||
# crowdsec:
|
# crowdsec:
|
||||||
# hostname: crowdsec
|
# hostname: crowdsec
|
||||||
# image: crowdsecurity/crowdsec
|
# image: crowdsecurity/crowdsec
|
||||||
@@ -1,19 +1,14 @@
|
|||||||
|
# yaml-language-server: $schema=https://json.schemastore.org/traefik-v2-file-provider.json
|
||||||
|
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
authelia:
|
authelia:
|
||||||
forwardAuth:
|
forwardAuth:
|
||||||
address: 'http://authelia:9091/api/verify?rd=https%3A%2F%2Fauthelia.{{ env `NASCOMPOSE_DOMAIN` }}%2F'
|
address: http://authelia:9091/api/authz/forward-auth
|
||||||
trustForwardHeader: true
|
|
||||||
authResponseHeaders:
|
|
||||||
- Remote-User
|
|
||||||
- Remote-Groups
|
|
||||||
- Remote-Name
|
|
||||||
- Remote-Email
|
|
||||||
authelia-basic:
|
|
||||||
forwardAuth:
|
|
||||||
address: http://authelia:9091/api/verify?auth=basic
|
|
||||||
trustForwardHeader: true
|
trustForwardHeader: true
|
||||||
authResponseHeaders:
|
authResponseHeaders:
|
||||||
|
- Authorization
|
||||||
|
- Proxy-Authorization
|
||||||
- Remote-User
|
- Remote-User
|
||||||
- Remote-Groups
|
- Remote-Groups
|
||||||
- Remote-Name
|
- Remote-Name
|
||||||
|
|||||||
41
reverse-proxy/configs/dynamic/compress.yml
Normal file
41
reverse-proxy/configs/dynamic/compress.yml
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# yaml-language-server: $schema=https://json.schemastore.org/traefik-v2-file-provider.json
|
||||||
|
|
||||||
|
http:
|
||||||
|
middlewares:
|
||||||
|
compress:
|
||||||
|
compress:
|
||||||
|
includedContentTypes:
|
||||||
|
- application/atom+xml
|
||||||
|
- application/geo+json
|
||||||
|
- application/javascript
|
||||||
|
- application/x-javascript
|
||||||
|
- application/json
|
||||||
|
- application/ld+json
|
||||||
|
- application/manifest+json
|
||||||
|
- application/rdf+xml
|
||||||
|
- application/rss+xml
|
||||||
|
- application/vnd.ms-fontobject
|
||||||
|
- application/wasm
|
||||||
|
- application/x-web-app-manifest+json
|
||||||
|
- application/xhtml+xml
|
||||||
|
- application/xml
|
||||||
|
- font/eot
|
||||||
|
- font/otf
|
||||||
|
- font/ttf
|
||||||
|
- image/bmp
|
||||||
|
- image/svg+xml
|
||||||
|
- image/vnd.microsoft.icon
|
||||||
|
- image/x-icon
|
||||||
|
- text/cache-manifest
|
||||||
|
- text/calendar
|
||||||
|
- text/css
|
||||||
|
- text/html
|
||||||
|
- text/javascript
|
||||||
|
- text/markdown
|
||||||
|
- text/plain
|
||||||
|
- text/xml
|
||||||
|
- text/vcard
|
||||||
|
- text/vnd.rim.location.xloc
|
||||||
|
- text/vtt
|
||||||
|
- text/x-component
|
||||||
|
- text/x-cross-domain-policy
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
|
# yaml-language-server: $schema=https://json.schemastore.org/traefik-v2-file-provider.json
|
||||||
|
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
hsts:
|
hsts:
|
||||||
headers:
|
headers:
|
||||||
frameDeny: true
|
customFrameOptionsValue: SAMEORIGIN
|
||||||
browserXssFilter: true
|
browserXssFilter: true
|
||||||
stsSeconds: 31536000 # 1 year
|
stsSeconds: 31536000 # 1 year
|
||||||
stsPreload: true
|
stsPreload: true
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
http:
|
|
||||||
#TODO: Convert to inline configuration for portainer
|
|
||||||
routers:
|
|
||||||
portainer:
|
|
||||||
rule: 'Host(`portainer.{{ env `NASCOMPOSE_DOMAIN` }}`)'
|
|
||||||
service: portainer@file
|
|
||||||
services:
|
|
||||||
portainer:
|
|
||||||
loadBalancer:
|
|
||||||
servers:
|
|
||||||
- url: https://{{ env `NASCOMPOSE_MACVLAN_PORTAINER_IP` }}:9443/
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
http:
|
|
||||||
routers:
|
|
||||||
qbittorrent-api:
|
|
||||||
rule: 'Host(`qbittorrent-api.{{ env `NASCOMPOSE_DOMAIN` }}`)'
|
|
||||||
service: qbittorrent@docker
|
|
||||||
middlewares:
|
|
||||||
- authelia-basic@file
|
|
||||||
15
reverse-proxy/configs/dynamic/router.yml
Normal file
15
reverse-proxy/configs/dynamic/router.yml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# yaml-language-server: $schema=https://json.schemastore.org/traefik-v2-file-provider.json
|
||||||
|
|
||||||
|
http:
|
||||||
|
services:
|
||||||
|
router:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: {{ env `NASCOMPOSE_ROUTER_URL` }}
|
||||||
|
passHostHeader: false
|
||||||
|
routers:
|
||||||
|
router:
|
||||||
|
rule: 'Host(`router.{{ env `NASCOMPOSE_DOMAIN` }}`)'
|
||||||
|
service: router@file
|
||||||
|
middlewares:
|
||||||
|
- authelia@file
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
|
# yaml-language-server: $schema=https://json.schemastore.org/traefik-v2-file-provider.json
|
||||||
|
|
||||||
http:
|
http:
|
||||||
routers:
|
routers:
|
||||||
synology:
|
synology:
|
||||||
rule: 'Host(`synology.{{ env `NASCOMPOSE_DOMAIN` }}`)'
|
rule: "Host(`synology.{{ env `NASCOMPOSE_DOMAIN` }}`)"
|
||||||
service: synology@file
|
service: synology@file
|
||||||
services:
|
services:
|
||||||
synology:
|
synology:
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
http:
|
|
||||||
#TODO: Convert to inline configuration for traefik
|
|
||||||
# Allows internal services to use `http://traefik/` to use the traefik interface.
|
|
||||||
# Useful for tools like Heimdall which use the traefik API.
|
|
||||||
routers:
|
|
||||||
traefik-internal:
|
|
||||||
rule: Host(`traefik`)
|
|
||||||
service: api@internal
|
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# yaml-language-server: $schema=https://json.schemastore.org/traefik-v2.json
|
||||||
|
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
exposedByDefault: false
|
exposedByDefault: false
|
||||||
@@ -9,33 +11,64 @@ providers:
|
|||||||
serverstransport:
|
serverstransport:
|
||||||
insecureskipverify: true
|
insecureskipverify: true
|
||||||
|
|
||||||
api: {}
|
api:
|
||||||
accessLog: {}
|
dashboard: true
|
||||||
|
insecure: true
|
||||||
|
accessLog:
|
||||||
|
filePath: /var/log/traefik/access.log
|
||||||
|
format: json
|
||||||
|
fields:
|
||||||
|
defaultMode: keep
|
||||||
|
names:
|
||||||
|
StartLocal: drop
|
||||||
|
ClientAddr: drop
|
||||||
|
headers:
|
||||||
|
defaultMode: drop
|
||||||
|
names:
|
||||||
|
Remote-User: keep
|
||||||
|
metrics:
|
||||||
|
prometheus:
|
||||||
|
addRoutersLabels: true
|
||||||
|
entryPoint: metrics
|
||||||
|
|
||||||
certificatesResolvers:
|
certificatesResolvers:
|
||||||
defaultResolver:
|
defaultResolver:
|
||||||
acme:
|
acme:
|
||||||
storage: /etc/traefik/acme/acme.json
|
storage: /etc/traefik/acme/acme.json
|
||||||
dnsChallenge:
|
tlsChallenge: {}
|
||||||
provider: cloudflare
|
|
||||||
|
|
||||||
entryPoints:
|
entryPoints:
|
||||||
web:
|
web:
|
||||||
address: :80
|
address: :8080
|
||||||
http:
|
http:
|
||||||
redirections:
|
redirections:
|
||||||
entryPoint:
|
entryPoint:
|
||||||
to: websecure
|
to: websecure
|
||||||
scheme: https
|
scheme: https
|
||||||
|
permanent: true
|
||||||
websecure:
|
websecure:
|
||||||
address: :443
|
address: :8443
|
||||||
|
asDefault: true
|
||||||
http:
|
http:
|
||||||
tls:
|
tls:
|
||||||
certResolver: defaultResolver
|
certResolver: defaultResolver
|
||||||
middlewares:
|
middlewares:
|
||||||
- hsts@file
|
- hsts@file
|
||||||
|
- compress@file
|
||||||
|
http3:
|
||||||
|
advertisedPort: 443
|
||||||
ssh:
|
ssh:
|
||||||
address: :22
|
address: :8022
|
||||||
|
ssh-tarpit:
|
||||||
|
address: :8222
|
||||||
|
transport:
|
||||||
|
respondingTimeouts:
|
||||||
|
readTimeout: 0
|
||||||
|
idleTimeout: 0
|
||||||
|
metrics:
|
||||||
|
address: :9982
|
||||||
|
traefik:
|
||||||
|
address: :8081
|
||||||
|
|
||||||
global:
|
global:
|
||||||
sendAnonymousUsage: false
|
sendAnonymousUsage: false
|
||||||
|
|||||||
0
reverse-proxy/secrets/.gitkeep
Normal file
0
reverse-proxy/secrets/.gitkeep
Normal file
0
reverse-proxy/volumes/traefik_acme/.gitkeep
Normal file
0
reverse-proxy/volumes/traefik_acme/.gitkeep
Normal file
1
reverse-proxy/volumes/traefik_logs
Symbolic link
1
reverse-proxy/volumes/traefik_logs
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../../monitoring/volumes/promtail_logs/traefik
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
name: ssh-protection
|
|
||||||
|
|
||||||
services:
|
|
||||||
endlessh:
|
|
||||||
hostname: endlessh
|
|
||||||
image: lscr.io/linuxserver/endlessh
|
|
||||||
environment:
|
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
traefik.enable: true
|
|
||||||
traefik.tcp.routers.endlessh.entryPoints: ssh
|
|
||||||
traefik.tcp.routers.endlessh.rule: HostSNI(`*`)
|
|
||||||
traefik.tcp.services.endlessh.loadbalancer.server.port: 2222
|
|
||||||
|
|
||||||
networks:
|
|
||||||
reverse-proxy:
|
|
||||||
external: true
|
|
||||||
@@ -1,25 +1,24 @@
|
|||||||
name: subtitle-collector
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
services:
|
services:
|
||||||
bazarr:
|
bazarr:
|
||||||
hostname: bazarr
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
container_name: bazarr
|
||||||
image: lscr.io/linuxserver/bazarr
|
image: lscr.io/linuxserver/bazarr
|
||||||
environment:
|
environment:
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
PUID: ${NASCOMPOSE_UID?}
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
PGID: ${NASCOMPOSE_GID?}
|
||||||
networks:
|
networks:
|
||||||
- reverse-proxy
|
|
||||||
- movie-collector
|
- movie-collector
|
||||||
- tv-collector
|
- tv-collector
|
||||||
volumes:
|
volumes:
|
||||||
- ${NASCOMPOSE_SERVICES?}/subtitle-collector/volumes/bazarr_config/:/config/
|
- ./volumes/bazarr_config/:/config/
|
||||||
- ${NASCOMPOSE_DATA?}/media/movies/:/data/media/movies/
|
- ${NASCOMPOSE_DATA?}/media/movies/:/data/media/movies/
|
||||||
- ${NASCOMPOSE_DATA?}/media/tv/:/data/media/tv/
|
- ${NASCOMPOSE_DATA?}/media/tv/:/data/media/tv/
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: true
|
|
||||||
traefik.http.routers.bazarr.middlewares: authelia@file
|
traefik.http.routers.bazarr.middlewares: authelia@file
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
reverse-proxy:
|
reverse-proxy:
|
||||||
external: true
|
external: true
|
||||||
0
subtitle-collector/volumes/bazarr_config/.gitkeep
Normal file
0
subtitle-collector/volumes/bazarr_config/.gitkeep
Normal file
116
torrents/compose.yaml
Normal file
116
torrents/compose.yaml
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json
|
||||||
|
|
||||||
|
x-qbittorrent: &a1
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: exposed-service
|
||||||
|
image: hotio/qbittorrent
|
||||||
|
environment:
|
||||||
|
PUID: ${NASCOMPOSE_UID?}
|
||||||
|
PGID: ${NASCOMPOSE_GID?}
|
||||||
|
VPN_ENABLED: true
|
||||||
|
VPN_CONF: wg0-fix
|
||||||
|
VPN_PROVIDER: ${TORRENT_VPN?}
|
||||||
|
VPN_LAN_NETWORK: 192.168.0.0/23
|
||||||
|
VPN_AUTO_PORT_FORWARD: true
|
||||||
|
VPN_KEEP_LOCAL_DNS: true
|
||||||
|
VPN_FIREWALL_TYPE: legacy
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
sysctls:
|
||||||
|
net.ipv4.conf.all.src_valid_mark: 1
|
||||||
|
networks:
|
||||||
|
- torrents
|
||||||
|
dns:
|
||||||
|
- 1.1.1.1
|
||||||
|
- 1.0.0.1
|
||||||
|
x-qbitmanage: &a2
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
image: bobokun/qbit_manage
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
environment:
|
||||||
|
QBT_SCHEDULE: 30
|
||||||
|
QBT_WIDTH: 170
|
||||||
|
networks:
|
||||||
|
- torrents
|
||||||
|
services:
|
||||||
|
qbittorrent:
|
||||||
|
<<: *a1
|
||||||
|
container_name: qbittorrent
|
||||||
|
volumes:
|
||||||
|
- ./volumes/qbittorrent_config/:/config/
|
||||||
|
- ${NASCOMPOSE_DATA?}/torrents/:/data/torrents/
|
||||||
|
- ./config/99-cron-start:/etc/cont-init.d/99-cron-start:ro
|
||||||
|
- ./config/updateMaMIP:/etc/periodic/hourly/updateMaMIP:ro
|
||||||
|
- ./secrets/wg0.conf:/config/wireguard/wg0-fix.conf:ro
|
||||||
|
labels:
|
||||||
|
traefik.http.routers.qbittorrent.middlewares: authelia@file
|
||||||
|
qbitmanage:
|
||||||
|
<<: *a2
|
||||||
|
container_name: qbitmanage
|
||||||
|
volumes:
|
||||||
|
- ./volumes/qbitmanage_config/:/config/
|
||||||
|
- ./volumes/qbittorrent_config/data/BT_backup/:/torrents/:ro
|
||||||
|
- ${NASCOMPOSE_DATA?}/torrents/:/data/torrents/
|
||||||
|
cross-seed:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
container_name: cross-seed
|
||||||
|
image: crossseed/cross-seed:master
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
networks:
|
||||||
|
- torrents
|
||||||
|
#- indexer
|
||||||
|
dns:
|
||||||
|
- 1.1.1.1
|
||||||
|
- 1.0.0.1
|
||||||
|
volumes:
|
||||||
|
- ./volumes/cross-seed_config/:/config/
|
||||||
|
- ./volumes/qbittorrent_config/data/BT_backup/:/torrents/:ro
|
||||||
|
- ${NASCOMPOSE_DATA?}/:/data/
|
||||||
|
command: daemon
|
||||||
|
unpackerr:
|
||||||
|
extends:
|
||||||
|
file: ../compose.base.yaml
|
||||||
|
service: base-service
|
||||||
|
container_name: unpackerr
|
||||||
|
image: golift/unpackerr
|
||||||
|
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
||||||
|
networks:
|
||||||
|
- torrents
|
||||||
|
volumes:
|
||||||
|
- ./volumes/unpackerr_config/:/etc/unpackerr/
|
||||||
|
- ${NASCOMPOSE_DATA?}/torrents/completed/:/data/torrents/completed/
|
||||||
|
qbittorrent-seeding:
|
||||||
|
<<: *a1
|
||||||
|
container_name: qbittorrent-seeding
|
||||||
|
profiles:
|
||||||
|
- torrents-seeding
|
||||||
|
volumes:
|
||||||
|
- ./volumes/qbittorrent-seeding_config/:/config/
|
||||||
|
- ${NASCOMPOSE_DATA?}/torrents-seeding/:/data/torrents/
|
||||||
|
- ./config/99-cron-start:/etc/cont-init.d/99-cron-start:ro
|
||||||
|
- ./config/updateMaMIP:/etc/periodic/hourly/updateMaMIP:ro
|
||||||
|
- ./secrets/wg0-seeding.conf:/config/wireguard/wg0-fix.conf:ro
|
||||||
|
labels:
|
||||||
|
traefik.http.routers.qbittorrent-seeding.middlewares: authelia@file
|
||||||
|
qbitmanage-seeding:
|
||||||
|
<<: *a2
|
||||||
|
container_name: qbitmanage-seeding
|
||||||
|
profiles:
|
||||||
|
- torrents-seeding
|
||||||
|
volumes:
|
||||||
|
- ./volumes/qbitmanage-seeding_config/:/config/
|
||||||
|
- ./volumes/qbittorrent-seeding_config/data/BT_backup/:/torrents/:ro
|
||||||
|
- ${NASCOMPOSE_DATA?}/torrents-seeding/:/data/torrents/
|
||||||
|
networks:
|
||||||
|
torrents:
|
||||||
|
name: torrents
|
||||||
|
reverse-proxy:
|
||||||
|
external: true
|
||||||
|
|
||||||
|
# indexer:
|
||||||
|
# external: true
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/command/with-contenv bash
|
|
||||||
echo "Allow DNS resolution locally"
|
|
||||||
iptables -A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT
|
|
||||||
iptables -A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
|
|
||||||
|
|
||||||
echo "Allow docker networks to connect"
|
|
||||||
docker_cirds=$(ip -o -4 route show proto kernel | awk '{print $1}')
|
|
||||||
for cidr in $docker_cirds; do
|
|
||||||
iptables -A INPUT -s "${cidr}" -d "${cidr}" -j ACCEPT
|
|
||||||
iptables -A OUTPUT -s "${cidr}" -d "${cidr}" -j ACCEPT
|
|
||||||
done
|
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
#!/command/with-contenv bash
|
#!/command/with-contenv bash
|
||||||
|
|
||||||
(crontab -l ; echo "* * * * * run-parts /etc/periodic/1min") | sort - | uniq - | crontab -
|
|
||||||
crond
|
crond
|
||||||
|
|||||||
@@ -1,102 +0,0 @@
|
|||||||
name: torrents${TORRENT_SUFFIX?TORRENT_SUFFIX variable required}
|
|
||||||
|
|
||||||
services:
|
|
||||||
qbittorrent:
|
|
||||||
# Set hostname to "SERVICE-main" if not suffix is provided. This avoids collisions with other instances using the service name as hostname (default on compose)
|
|
||||||
hostname: qbittorrent${TORRENT_SUFFIX:--main}
|
|
||||||
image: hotio/qbittorrent
|
|
||||||
environment:
|
|
||||||
PUID: ${NASCOMPOSE_UID?}
|
|
||||||
PGID: ${NASCOMPOSE_GID?}
|
|
||||||
VPN_ENABLED: true
|
|
||||||
VPN_CONF: wg0-fix
|
|
||||||
VPN_PROVIDER: ${TORRENT_VPN?}
|
|
||||||
VPN_LAN_NETWORK: 192.168.0.0/23
|
|
||||||
VPN_AUTO_PORT_FORWARD: true
|
|
||||||
VPN_KEEP_LOCAL_DNS: true
|
|
||||||
VPN_FIREWALL_TYPE: legacy
|
|
||||||
cap_add:
|
|
||||||
- NET_ADMIN
|
|
||||||
sysctls:
|
|
||||||
net.ipv4.conf.all.src_valid_mark: 1
|
|
||||||
networks:
|
|
||||||
- reverse-proxy
|
|
||||||
- torrents
|
|
||||||
dns:
|
|
||||||
- 1.1.1.1
|
|
||||||
- 1.0.0.1
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/torrents${TORRENT_SUFFIX?}/volumes/qbittorrent_config/:/config/
|
|
||||||
- ${NASCOMPOSE_DATA?}/torrents${TORRENT_SUFFIX?}/:/data/torrents/
|
|
||||||
# Configuration
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/torrents${TORRENT_SUFFIX?}/config/98-gateway-setup:/etc/cont-init.d/98-gateway-setup:ro
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/torrents${TORRENT_SUFFIX?}/config/99-cron-start:/etc/cont-init.d/99-cron-start:ro
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/torrents${TORRENT_SUFFIX?}/config/updateMaMIP:/etc/periodic/hourly/updateMaMIP:ro
|
|
||||||
# Secrets
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/torrents${TORRENT_SUFFIX?}/secrets/wg0.conf:/config/wireguard/wg0-fix.conf:ro
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
- traefik.enable=true
|
|
||||||
- traefik.http.routers.qbittorrent${TORRENT_SUFFIX?}.rule=Host(`qbittorrent${TORRENT_SUFFIX?}.${NASCOMPOSE_DOMAIN?}`)
|
|
||||||
- traefik.http.routers.qbittorrent${TORRENT_SUFFIX?}.middlewares=authelia@file
|
|
||||||
# API access for nzb360
|
|
||||||
- traefik.http.routers.qbittorrent${TORRENT_SUFFIX?}-api.rule=Host(`qbittorrent${TORRENT_SUFFIX?}-api.${NASCOMPOSE_DOMAIN?}`)
|
|
||||||
- traefik.http.routers.qbittorrent${TORRENT_SUFFIX?}-api.middlewares=authelia-basic@file
|
|
||||||
|
|
||||||
cross-seed:
|
|
||||||
# Set hostname to "SERVICE-main" if not suffix is provided. This avoids collisions with other instances using the service name as hostname (default on compose)
|
|
||||||
hostname: cross-seed${TORRENT_SUFFIX:--main}
|
|
||||||
image: crossseed/cross-seed:master
|
|
||||||
profiles: [ "torrents${TORRENT_SUFFIX?}-xseed" ]
|
|
||||||
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
|
||||||
networks:
|
|
||||||
- torrents
|
|
||||||
#- indexer
|
|
||||||
dns:
|
|
||||||
- 1.1.1.1
|
|
||||||
- 1.0.0.1
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/torrents${TORRENT_SUFFIX?}/volumes/cross-seed_config/:/config/
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/torrents${TORRENT_SUFFIX?}/volumes/qbittorrent_config/data/BT_backup/:/torrents/:ro
|
|
||||||
- ${NASCOMPOSE_DATA?}/:/data/
|
|
||||||
command: daemon
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
qbitmanage:
|
|
||||||
# Set hostname to "SERVICE-main" if not suffix is provided. This avoids collisions with other instances using the service name as hostname (default on compose)
|
|
||||||
hostname: qbitmanage${TORRENT_SUFFIX:--main}
|
|
||||||
image: bobokun/qbit_manage
|
|
||||||
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
|
||||||
environment:
|
|
||||||
QBT_SCHEDULE: 30
|
|
||||||
QBT_WIDTH: 170
|
|
||||||
networks:
|
|
||||||
- torrents
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/torrents${TORRENT_SUFFIX?}/volumes/qbitmanage_config/:/config/
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/torrents${TORRENT_SUFFIX?}/volumes/qbittorrent_config/data/BT_backup/:/torrents/:ro
|
|
||||||
- ${NASCOMPOSE_DATA?}/torrents${TORRENT_SUFFIX?}/:/data/torrents/
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
unpackerr:
|
|
||||||
# Set hostname to "SERVICE-main" if not suffix is provided. This avoids collisions with other instances using the service name as hostname (default on compose)
|
|
||||||
hostname: unpackerr{TORRENT_SUFFIX:--main}
|
|
||||||
image: golift/unpackerr
|
|
||||||
profiles: [ "torrents${TORRENT_SUFFIX?}-unpackerr" ]
|
|
||||||
user: ${NASCOMPOSE_UID?}:${NASCOMPOSE_GID?}
|
|
||||||
networks:
|
|
||||||
- torrents
|
|
||||||
volumes:
|
|
||||||
- ${NASCOMPOSE_SERVICES?}/torrents${TORRENT_SUFFIX?}/volumes/unpackerr_config/:/etc/unpackerr/
|
|
||||||
- ${NASCOMPOSE_DATA?}/torrents${TORRENT_SUFFIX?}/completed/:/data/torrents/completed/
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
networks:
|
|
||||||
torrents:
|
|
||||||
name: torrents${TORRENT_SUFFIX?}
|
|
||||||
|
|
||||||
reverse-proxy:
|
|
||||||
external: true
|
|
||||||
|
|
||||||
# indexer:
|
|
||||||
# external: true
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user