add knecht

This commit is contained in:
2026-04-04 14:34:22 +02:00
parent 736477cf57
commit fe6ce5249e
22 changed files with 1885 additions and 1 deletions

View File

@@ -0,0 +1,6 @@
# Generated by knecht from Portainer env vars
PUID=
PGID=
TZ=
TV_PATH=
MOVIES_PATH=

View File

@@ -0,0 +1,29 @@
services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- jellyfin_config:/config
- jellyfin_cache:/cache
- ${TV_PATH}:/media/tv:ro
- ${MOVIES_PATH}:/media/movies:ro
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.jellyfin.rule=Host(`jellyfin.home.jens.pub`)"
- "traefik.http.routers.jellyfin.entrypoints=websecure"
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
volumes:
jellyfin_config:
jellyfin_cache:
networks:
proxy:
external: true

25
services/rrr/.env.example Normal file
View File

@@ -0,0 +1,25 @@
# MullvadVPN WireGuard credentials
# Generate a config at: Mullvad Account → WireGuard configuration → Generate key
# Copy the PrivateKey value and the Address value from the generated config file
WIREGUARD_PRIVATE_KEY=
WIREGUARD_ADDRESSES=
# Optional: preferred server city/cities (comma-separated, e.g. Gothenburg,Stockholm)
# Leave empty to let gluetun pick automatically
SERVER_CITIES=
# Linux user/group IDs for file ownership in volumes
# Run `id` on the host to find the right values
PUID=
PGID=
# Timezone (e.g. Europe/Berlin)
TZ=
# Host paths for media library and downloads
TV_PATH=
MOVIES_PATH=
DOWNLOADS_PATH=
# Added by knecht
SEERR_DATA_PATH=

View File

@@ -0,0 +1,152 @@
services:
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
restart: unless-stopped
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
environment:
- VPN_SERVICE_PROVIDER=mullvad
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
- WIREGUARD_ADDRESSES=${WIREGUARD_ADDRESSES}
- SERVER_CITIES=${SERVER_CITIES}
ports:
- "8080:8080"
volumes:
- gluetun_data:/gluetun
networks:
- proxy
healthcheck:
test: ["CMD", "/gluetun-entrypoint", "healthcheck"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
# Sonarr
- "traefik.http.routers.sonarr.rule=Host(`sonarr.home.jens.pub`)"
- "traefik.http.routers.sonarr.entrypoints=websecure"
- "traefik.http.routers.sonarr.service=sonarr"
- "traefik.http.services.sonarr.loadbalancer.server.port=8989"
# Radarr
- "traefik.http.routers.radarr.rule=Host(`radarr.home.jens.pub`)"
- "traefik.http.routers.radarr.entrypoints=websecure"
- "traefik.http.routers.radarr.service=radarr"
- "traefik.http.services.radarr.loadbalancer.server.port=7878"
# Prowlarr
- "traefik.http.routers.prowlarr.rule=Host(`prowlarr.home.jens.pub`)"
- "traefik.http.routers.prowlarr.entrypoints=websecure"
- "traefik.http.routers.prowlarr.service=prowlarr"
- "traefik.http.services.prowlarr.loadbalancer.server.port=9696"
# SABnzbd
- "traefik.http.routers.sabnzbd.rule=Host(`sabnzbd.home.jens.pub`)"
- "traefik.http.routers.sabnzbd.entrypoints=websecure"
- "traefik.http.routers.sabnzbd.service=sabnzbd"
- "traefik.http.services.sabnzbd.loadbalancer.server.port=8080"
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- sonarr_config:/config
- ${TV_PATH}:/tv
- ${DOWNLOADS_PATH}:/downloads
depends_on:
gluetun:
condition: service_healthy
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- radarr_config:/config
- ${MOVIES_PATH}:/movies
- ${DOWNLOADS_PATH}:/downloads
depends_on:
gluetun:
condition: service_healthy
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- prowlarr_config:/config
depends_on:
gluetun:
condition: service_healthy
sabnzbd:
image: lscr.io/linuxserver/sabnzbd:latest
container_name: sabnzbd
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- HOST_WHITELIST_ENTRIES=sabnzbd.home.jens.pub
volumes:
- sabnzbd_config:/config
- ${DOWNLOADS_PATH}:/downloads
depends_on:
gluetun:
condition: service_healthy
seerr:
image: ghcr.io/seerr-team/seerr:latest
container_name: seerr
init: true
restart: unless-stopped
environment:
- TZ=${TZ}
volumes:
- ${SEERR_DATA_PATH}:/app/config
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.seerr.rule=Host(`seerr.home.jens.pub`)"
- "traefik.http.routers.seerr.entrypoints=websecure"
- "traefik.http.services.seerr.loadbalancer.server.port=5055"
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
start_period: 20s
timeout: 3s
interval: 15s
retries: 3
depends_on:
gluetun:
condition: service_healthy
networks:
proxy:
external: true
volumes:
gluetun_data:
sonarr_config:
radarr_config:
prowlarr_config:
sabnzbd_config: