Initial commit
This commit is contained in:
83
stacks/media/arr.yaml
Normal file
83
stacks/media/arr.yaml
Normal file
@@ -0,0 +1,83 @@
|
||||
# When *arr apps connect to Prowlarr, use HTTP and Docker service names:
|
||||
# Lidarr: http://lidarr:8686 Radarr: http://radarr:7878
|
||||
# Sonarr: http://sonarr:8989 Prowlarr: http://prowlarr:9696
|
||||
services:
|
||||
sonarr:
|
||||
image: lscr.io/linuxserver/sonarr:latest
|
||||
container_name: sonarr
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Moscow
|
||||
ports:
|
||||
- "8989:8989"
|
||||
volumes:
|
||||
- /srv/homelab/config/media/sonarr:/config
|
||||
- /srv/media:/srv/media
|
||||
- /srv/media/downloads:/downloads
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
radarr:
|
||||
image: lscr.io/linuxserver/radarr:latest
|
||||
container_name: radarr
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Moscow
|
||||
ports:
|
||||
- "7878:7878"
|
||||
volumes:
|
||||
- /srv/homelab/config/media/radarr:/config
|
||||
- /srv/media:/srv/media
|
||||
- /srv/media/downloads:/downloads
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
lidarr:
|
||||
image: lscr.io/linuxserver/lidarr:latest
|
||||
container_name: lidarr
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Moscow
|
||||
ports:
|
||||
- "8686:8686"
|
||||
volumes:
|
||||
- /srv/homelab/config/media/lidarr:/config
|
||||
- /srv/media:/srv/media
|
||||
- /srv/media/downloads:/downloads
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
prowlarr:
|
||||
image: lscr.io/linuxserver/prowlarr:latest
|
||||
container_name: prowlarr
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Moscow
|
||||
ports:
|
||||
- "9696:9696"
|
||||
volumes:
|
||||
- /srv/homelab/config/media/prowlarr:/config
|
||||
- /srv/media:/srv/media
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
9
stacks/media/compose.yaml
Normal file
9
stacks/media/compose.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
name: media
|
||||
|
||||
include:
|
||||
- ./arr.yaml
|
||||
- ./qbittorrent.yaml
|
||||
- ./jellyfin.yaml
|
||||
- ./seer.yaml
|
||||
- ./navidrome.yaml
|
||||
- ./immich.yaml
|
||||
10
stacks/media/immich.env
Normal file
10
stacks/media/immich.env
Normal file
@@ -0,0 +1,10 @@
|
||||
TZ=Europe/Moscow
|
||||
IMMICH_VERSION=v2
|
||||
DB_HOSTNAME=immich-postgres
|
||||
REDIS_HOSTNAME=immich-redis
|
||||
DB_PASSWORD=change_me
|
||||
DB_USERNAME=postgres
|
||||
DB_DATABASE_NAME=immich
|
||||
POSTGRES_PASSWORD=change_me
|
||||
POSTGRES_USER=postgres
|
||||
POSTGRES_DB=immich
|
||||
67
stacks/media/immich.yaml
Normal file
67
stacks/media/immich.yaml
Normal file
@@ -0,0 +1,67 @@
|
||||
services:
|
||||
immich-server:
|
||||
container_name: immich_server
|
||||
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-v2}
|
||||
volumes:
|
||||
- /srv/media/immich:/data
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
env_file:
|
||||
- ./immich.env
|
||||
ports:
|
||||
- "2283:2283"
|
||||
depends_on:
|
||||
- immich-redis
|
||||
- immich-postgres
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
disable: false
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
immich-machine-learning:
|
||||
container_name: immich_machine_learning
|
||||
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-v2}
|
||||
volumes:
|
||||
- /srv/homelab/data/media/immich/model-cache:/cache
|
||||
env_file:
|
||||
- ./immich.env
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
disable: false
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
immich-redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/valkey/valkey:9@sha256:546304417feac0874c3dd576e0952c6bb8f06bb4093ea0c9ca303c73cf458f63
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
immich-postgres:
|
||||
container_name: immich_postgres
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
|
||||
env_file:
|
||||
- ./immich.env
|
||||
shm_size: 128mb
|
||||
volumes:
|
||||
- /srv/homelab/data/media/immich/postgres:/var/lib/postgresql/data
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
disable: false
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
21
stacks/media/jellyfin.yaml
Normal file
21
stacks/media/jellyfin.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
services:
|
||||
jellyfin:
|
||||
image: lscr.io/linuxserver/jellyfin:latest
|
||||
container_name: jellyfin
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Moscow
|
||||
ports:
|
||||
- "8096:8096"
|
||||
volumes:
|
||||
- /srv/homelab/config/media/jellyfin:/config
|
||||
- /srv/homelab/data/media/jellyfin/cache:/cache
|
||||
- /srv/media:/srv/media
|
||||
- /srv/media:/media
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
16
stacks/media/navidrome.yaml
Normal file
16
stacks/media/navidrome.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
services:
|
||||
navidrome:
|
||||
image: deluan/navidrome:latest
|
||||
container_name: navidrome
|
||||
user: "1000:1000"
|
||||
ports:
|
||||
- "4533:4533"
|
||||
volumes:
|
||||
- /srv/homelab/data/media/navidrome:/data
|
||||
- /srv/media/music:/music:ro
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
24
stacks/media/qbittorrent.yaml
Normal file
24
stacks/media/qbittorrent.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
services:
|
||||
qbittorrent:
|
||||
image: lscr.io/linuxserver/qbittorrent:latest
|
||||
container_name: qbittorrent
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Moscow
|
||||
- WEBUI_PORT=8081
|
||||
ports:
|
||||
- "8081:8081"
|
||||
- "6881:6881"
|
||||
- "6881:6881/udp"
|
||||
volumes:
|
||||
- /srv/homelab/config/media/qbittorrent:/config
|
||||
- /srv/media/downloads:/downloads
|
||||
- /srv/media/movies:/movies
|
||||
- /srv/media/shows:/shows
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
18
stacks/media/seer.yaml
Normal file
18
stacks/media/seer.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
services:
|
||||
seer:
|
||||
image: ghcr.io/seerr-team/seerr:latest
|
||||
container_name: seer
|
||||
environment:
|
||||
- LOG_LEVEL=info
|
||||
- TZ=Europe/Moscow
|
||||
- PORT=5055
|
||||
ports:
|
||||
- "5055:5055"
|
||||
volumes:
|
||||
- /srv/homelab/config/media/seer:/app/config
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
6
stacks/monitoring/compose.yaml
Normal file
6
stacks/monitoring/compose.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
name: monitoring
|
||||
|
||||
include:
|
||||
- ./grafana.yaml
|
||||
- ./glance.yaml
|
||||
- ./portainer.yaml
|
||||
22
stacks/monitoring/glance.env
Normal file
22
stacks/monitoring/glance.env
Normal file
@@ -0,0 +1,22 @@
|
||||
# Variables for config (re-run docker compose up after changes).
|
||||
|
||||
# Auth (optional)
|
||||
MY_SECRET_TOKEN=123456
|
||||
|
||||
# *arr stack – API base URL and key (http from container)
|
||||
RADARR_URL=http://radarr.home
|
||||
RADARR_API_URL=http://radarr.home
|
||||
RADARR_KEY=512cab3acfe84420957a9c8585560f8f
|
||||
|
||||
SONARR_URL=http://sonarr.home
|
||||
SONARR_API_URL=http://sonarr.home
|
||||
SONARR_KEY=b3a84ef407ca42d99f5bc22fb8afc401
|
||||
|
||||
LIDARR_URL=http://lidarr.home
|
||||
LIDARR_API_URL=http://lidarr.home
|
||||
LIDARR_KEY=e0862cb9aa8c4c0f8115ec794c5bebc1
|
||||
|
||||
# Portainer (Settings → API → Enable API; endpoint ID from URL e.g. !#/2/docker → 2)
|
||||
PORTAINER_URL=http://portainer.home
|
||||
PORTAINER_ENDPOINT_ID=3
|
||||
PORTAINER_API_KEY=ptr_zmLlSaAbw8nQRoJlDRb006IDVtJLojneToSVNWJxo3c=
|
||||
13
stacks/monitoring/glance.env.example
Normal file
13
stacks/monitoring/glance.env.example
Normal file
@@ -0,0 +1,13 @@
|
||||
MY_SECRET_TOKEN=change_me
|
||||
RADARR_URL=http://radarr.home
|
||||
RADARR_API_URL=http://radarr.home
|
||||
RADARR_KEY=change_me
|
||||
SONARR_URL=http://sonarr.home
|
||||
SONARR_API_URL=http://sonarr.home
|
||||
SONARR_KEY=change_me
|
||||
LIDARR_URL=http://lidarr.home
|
||||
LIDARR_API_URL=http://lidarr.home
|
||||
LIDARR_KEY=change_me
|
||||
PORTAINER_URL=http://portainer.home
|
||||
PORTAINER_ENDPOINT_ID=1
|
||||
PORTAINER_API_KEY=change_me
|
||||
24
stacks/monitoring/glance.yaml
Normal file
24
stacks/monitoring/glance.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
services:
|
||||
glance:
|
||||
container_name: glance
|
||||
image: glanceapp/glance
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /srv/homelab/config/monitoring/glance:/app/config
|
||||
- /srv/homelab/data/monitoring/glance/assets:/app/assets
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/custom-ca.crt:ro
|
||||
- /srv/media:/srv/media:ro
|
||||
- /backup:/backup:ro
|
||||
ports:
|
||||
- "9090:8080"
|
||||
env_file:
|
||||
- ./glance.env
|
||||
environment:
|
||||
- SSL_CERT_FILE=/etc/ssl/certs/custom-ca.crt
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
98
stacks/monitoring/grafana.yaml
Normal file
98
stacks/monitoring/grafana.yaml
Normal file
@@ -0,0 +1,98 @@
|
||||
# One-time permissions (run on host):
|
||||
# sudo chown -R 65534:65534 /srv/homelab/data/monitoring/prometheus
|
||||
# sudo chown -R 10001:10001 /srv/homelab/data/monitoring/loki
|
||||
# sudo chown -R 472:472 /srv/homelab/data/monitoring/grafana
|
||||
#
|
||||
services:
|
||||
cadvisor:
|
||||
image: gcr.io/cadvisor/cadvisor:latest
|
||||
container_name: cadvisor
|
||||
ports:
|
||||
- "8088:8080"
|
||||
volumes:
|
||||
- /:/rootfs:ro
|
||||
- /var/run:/var/run:ro
|
||||
- /sys:/sys:ro
|
||||
- /var/lib/docker:/var/lib/docker:ro
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
prometheus:
|
||||
image: prom/prometheus:latest
|
||||
container_name: prometheus
|
||||
extra_hosts:
|
||||
- "metrics.home:192.168.1.70"
|
||||
ports:
|
||||
- "9094:9090"
|
||||
volumes:
|
||||
- /srv/homelab/config/monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
||||
- /srv/homelab/data/monitoring/prometheus:/prometheus
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana:latest
|
||||
container_name: grafana
|
||||
user: "472:65534"
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
environment:
|
||||
- GF_FEATURE_TOGGLES_KUBERNETESDASHBOARDS=false
|
||||
depends_on:
|
||||
- loki
|
||||
- prometheus
|
||||
ports:
|
||||
- "3034:3000"
|
||||
volumes:
|
||||
- /srv/homelab/data/monitoring/grafana:/var/lib/grafana
|
||||
- /srv/homelab/config/monitoring/grafana/provisioning:/etc/grafana/provisioning:ro
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
loki:
|
||||
image: grafana/loki:2.9.0
|
||||
container_name: loki
|
||||
ports:
|
||||
- "3100:3100"
|
||||
command: -config.file=/etc/loki/config.yaml
|
||||
volumes:
|
||||
- /srv/homelab/config/monitoring/loki-config.yaml:/etc/loki/config.yaml:ro
|
||||
- /srv/homelab/data/monitoring/loki:/loki
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
promtail:
|
||||
image: grafana/promtail:2.9.0
|
||||
container_name: promtail
|
||||
command: -config.file=/etc/promtail/config.yaml
|
||||
depends_on:
|
||||
- loki
|
||||
volumes:
|
||||
- /srv/homelab/config/monitoring/promtail-config.yaml:/etc/promtail/config.yaml:ro
|
||||
- /var/log:/var/log:ro
|
||||
- /etc/machine-id:/etc/machine-id:ro
|
||||
- /var/lib/docker/containers:/var/lib/docker/containers:ro
|
||||
- /run/log/journal:/run/log/journal:ro
|
||||
- /var/log/journal:/var/log/journal:ro
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
18
stacks/monitoring/portainer.yaml
Normal file
18
stacks/monitoring/portainer.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
services:
|
||||
portainer:
|
||||
container_name: portainer
|
||||
image: portainer/portainer-ce:lts
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /srv/homelab/data/portainer/data:/data
|
||||
ports:
|
||||
- "9443:9443"
|
||||
- "8000:8000"
|
||||
environment:
|
||||
- TRUSTED_ORIGINS=portainer.home
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
5
stacks/storage/compose.yaml
Normal file
5
stacks/storage/compose.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
name: storage
|
||||
|
||||
include:
|
||||
- ./copyparty.yaml
|
||||
- ./gitea.yaml
|
||||
18
stacks/storage/copyparty.yaml
Normal file
18
stacks/storage/copyparty.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
services:
|
||||
copyparty:
|
||||
image: copyparty/ac:latest
|
||||
container_name: copyparty
|
||||
command: ["-c", "/cfg/copyparty.conf"]
|
||||
ports:
|
||||
- "3923:3923"
|
||||
volumes:
|
||||
- /srv/homelab/config/storage/copyparty:/cfg
|
||||
- /srv/homelab/config/storage/copyparty/initcfg:/z/initcfg:ro
|
||||
- /srv/media:/srv/media
|
||||
- /srv/homelab/data/storage/copyparty:/w
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
21
stacks/storage/gitea.yaml
Normal file
21
stacks/storage/gitea.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
networks:
|
||||
gitea:
|
||||
external: false
|
||||
|
||||
services:
|
||||
server:
|
||||
image: docker.gitea.com/gitea:1.25.4
|
||||
container_name: gitea
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
restart: always
|
||||
networks:
|
||||
- gitea
|
||||
volumes:
|
||||
- /srv/homelab/data/storage/gitea:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- "222:22"
|
||||
Reference in New Issue
Block a user