475 lines
14 KiB
YAML
475 lines
14 KiB
YAML
services:
|
|
qbittorrent:
|
|
container_name: qbittorrent
|
|
image: ghcr.io/hotio/qbittorrent
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 9400:9400
|
|
- 6882:6882
|
|
- 6882:6882/udp
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
- WEBUI_PORTS=9400/tcp,9400/udp
|
|
volumes:
|
|
- /lake/starr/qbittorrent:/config
|
|
- /lake:/data
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.qbittorrent-secure.entrypoints=https
|
|
- traefik.http.routers.qbittorrent-secure.rule=Host(`qbit.example.com`)
|
|
- traefik.http.routers.qbittorrent-secure.tls=true
|
|
- traefik.http.routers.qbittorrent-secure.service=qbittorrent
|
|
- traefik.http.services.qbittorrent.loadbalancer.server.port=9400
|
|
- traefik.docker.network=proxy
|
|
deluge:
|
|
container_name: deluge
|
|
image: lscr.io/linuxserver/deluge:latest
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
- DELUGE_LOGLEVEL=error
|
|
volumes:
|
|
- /lake/starr/deluge:/config
|
|
- /lake/downloads/torrents:/downloads
|
|
ports:
|
|
- 8112:8112
|
|
- 6881:6881
|
|
- 6881:6881/udp
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.deluge-secure.entrypoints=https
|
|
- traefik.http.routers.deluge-secure.rule=Host(`del.example.com`)
|
|
- traefik.http.routers.deluge-secure.tls=true
|
|
- traefik.http.routers.deluge-secure.service=deluge
|
|
- traefik.http.services.deluge.loadbalancer.server.port=8112
|
|
- traefik.docker.network=proxy
|
|
plex:
|
|
container_name: plex
|
|
image: lscr.io/linuxserver/plex:latest
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
runtime: nvidia
|
|
ports:
|
|
- 32400:32400/tcp
|
|
- 8324:8324/tcp
|
|
- 32469:32469/tcp
|
|
- 32410:32410/udp
|
|
- 32412:32412/udp
|
|
- 32413:32413/udp
|
|
- 32414:32414/udp
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
- NVIDIA_VISIBLE_DEVICES=all
|
|
- VERSION=docker
|
|
- PLEX_CLAIM= #optional get from plex.tv/claim
|
|
- ADVERTISE_IP=http://PLEX_SERVER_IP_ADDRESS:32400/
|
|
volumes:
|
|
- /lake/starr/plexmediaserver:/config
|
|
- /lake/media:/media
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.plex-secure.entrypoints=https
|
|
- traefik.http.routers.plex-secure.rule=Host(`plex.example.com`)
|
|
- traefik.http.routers.plex-secure.tls=true
|
|
- traefik.http.routers.plex-secure.service=plex
|
|
- traefik.http.services.plex.loadbalancer.server.port=32400
|
|
- traefik.docker.network=proxy
|
|
jellyfin:
|
|
container_name: jellyfin
|
|
image: lscr.io/linuxserver/jellyfin:latest
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
runtime: nvidia
|
|
ports:
|
|
- 8096:8096
|
|
- 8920:8920 #optional
|
|
- 7359:7359/udp #optional
|
|
# - 1900:1900/udp #optional
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
- NVIDIA_VISIBLE_DEVICES=all
|
|
- JELLYFIN_PublishedServerUrl=JELLYFIN_SERVER_IP_ADDRESS
|
|
volumes:
|
|
- /lake/starr/jellyfin:/config
|
|
- /lake/media:/media
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.jellyfin-secure.entrypoints=https
|
|
- traefik.http.routers.jellyfin-secure.rule=Host(`jf.example.com`)
|
|
- traefik.http.routers.jellyfin-secure.tls=true
|
|
- traefik.http.routers.jellyfin-secure.service=jellyfin
|
|
- traefik.http.services.jellyfin.loadbalancer.server.port=8096
|
|
- traefik.docker.network=proxy
|
|
radarr:
|
|
container_name: radarr
|
|
image: ghcr.io/hotio/radarr
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 7878:7878
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
depends_on:
|
|
- prowlarr
|
|
volumes:
|
|
- /etc/localtime:/etc/localtime:ro
|
|
- /lake/starr/radarr:/config
|
|
- /lake:/data
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.radarr-secure.entrypoints=https
|
|
- traefik.http.routers.radarr-secure.rule=Host(`radarr.example.com`)
|
|
- traefik.http.routers.radarr-secure.tls=true
|
|
- traefik.http.routers.radarr-secure.service=radarr
|
|
- traefik.http.services.radarr.loadbalancer.server.port=7878
|
|
- traefik.docker.network=proxy
|
|
sonarr:
|
|
container_name: sonarr
|
|
image: ghcr.io/hotio/sonarr
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 8989:8989
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
depends_on:
|
|
- prowlarr
|
|
volumes:
|
|
- /etc/localtime:/etc/localtime:ro
|
|
- /lake/starr/sonarr:/config
|
|
- /lake:/data
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.sonarr-secure.entrypoints=https
|
|
- traefik.http.routers.sonarr-secure.rule=Host(`sonarr.example.com`)
|
|
- traefik.http.routers.sonarr-secure.tls=true
|
|
- traefik.http.routers.sonarr-secure.service=sonarr
|
|
- traefik.http.services.sonarr.loadbalancer.server.port=8989
|
|
- traefik.docker.network=proxy
|
|
lidarr:
|
|
container_name: lidarr
|
|
image: ghcr.io/hotio/lidarr
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 8686:8686
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
depends_on:
|
|
- prowlarr
|
|
volumes:
|
|
- /etc/localtime:/etc/localtime:ro
|
|
- /lake/starr/lidarr:/config
|
|
- /lake:/data
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.lidarr-secure.entrypoints=https
|
|
- traefik.http.routers.lidarr-secure.rule=Host(`lidarr.example.com`)
|
|
- traefik.http.routers.lidarr-secure.tls=true
|
|
- traefik.http.routers.lidarr-secure.service=lidarr
|
|
- traefik.http.services.lidarr.loadbalancer.server.port=8686
|
|
- traefik.docker.network=proxy
|
|
whisparr:
|
|
container_name: whisparr
|
|
image: ghcr.io/hotio/whisparr
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 6969:6969
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
depends_on:
|
|
- prowlarr
|
|
volumes:
|
|
- /etc/localtime:/etc/localtime:ro
|
|
- /lake/starr/whisparr:/config
|
|
- /lake:/data
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.whisparr-secure.entrypoints=https
|
|
- traefik.http.routers.whisparr-secure.rule=Host(`whisparr.example.com`)
|
|
- traefik.http.routers.whisparr-secure.tls=true
|
|
- traefik.http.routers.whisparr-secure.service=whisparr
|
|
- traefik.http.services.whisparr.loadbalancer.server.port=6969
|
|
- traefik.docker.network=proxy
|
|
bazarr:
|
|
container_name: bazarr
|
|
image: ghcr.io/hotio/bazarr
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 6767:6767
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
depends_on:
|
|
- radarr
|
|
- sonarr
|
|
volumes:
|
|
- /lake/starr/bazarr:/config
|
|
- /lake:/data
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.bazarr-secure.entrypoints=https
|
|
- traefik.http.routers.bazarr-secure.rule=Host(`bazarr.example.com`)
|
|
- traefik.http.routers.bazarr-secure.tls=true
|
|
- traefik.http.routers.bazarr-secure.service=bazarr
|
|
- traefik.http.services.bazarr.loadbalancer.server.port=6767
|
|
- traefik.docker.network=proxy
|
|
prowlarr:
|
|
container_name: prowlarr
|
|
image: ghcr.io/hotio/prowlarr
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 9696:9696
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
depends_on:
|
|
- qbittorrent
|
|
volumes:
|
|
- /etc/localtime:/etc/localtime:ro
|
|
- /lake/starr/prowlarr:/config
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.prowlarr-secure.entrypoints=https
|
|
- traefik.http.routers.prowlarr-secure.rule=Host(`prowlarr.example.com`)
|
|
- traefik.http.routers.prowlarr-secure.tls=true
|
|
- traefik.http.routers.prowlarr-secure.service=prowlarr
|
|
- traefik.http.services.prowlarr.loadbalancer.server.port=9696
|
|
- traefik.docker.network=proxy
|
|
jackett:
|
|
container_name: jackett
|
|
image: lscr.io/linuxserver/jackett:latest
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 9117:9117
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
- AUTO_UPDATE=true
|
|
depends_on:
|
|
- qbittorrent
|
|
volumes:
|
|
- /lake/starr/jackett:/config
|
|
- /lake/downloads/torrents:/downloads
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.jackett-secure.entrypoints=https
|
|
- traefik.http.routers.jackett-secure.rule=Host(`jackett.example.com`)
|
|
- traefik.http.routers.jackett-secure.tls=true
|
|
- traefik.http.routers.jackett-secure.service=jackett
|
|
- traefik.http.services.jackett.loadbalancer.server.port=9117
|
|
- traefik.docker.network=proxy
|
|
seerr:
|
|
container_name: seerr
|
|
image: ghcr.io/hotio/seerr
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 5055:5055
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
- LOG_LEVEL=warn
|
|
depends_on:
|
|
- radarr
|
|
- sonarr
|
|
volumes:
|
|
- /lake/starr/seerr:/config
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.seerr-secure.entrypoints=https
|
|
- traefik.http.routers.seerr-secure.rule=Host(`seerr.example.com`)
|
|
- traefik.http.routers.seerr-secure.tls=true
|
|
- traefik.http.routers.seerr-secure.service=seerr
|
|
- traefik.http.services.seerr.loadbalancer.server.port=5055
|
|
- traefik.docker.network=proxy
|
|
tautulli:
|
|
container_name: tautulli
|
|
image: ghcr.io/hotio/tautulli
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 8181:8181
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
volumes:
|
|
- /lake/starr/tautulli:/config
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.tautulli-secure.entrypoints=https
|
|
- traefik.http.routers.tautulli-secure.rule=Host(`tautulli.example.com`)
|
|
- traefik.http.routers.tautulli-secure.tls=true
|
|
- traefik.http.routers.tautulli-secure.service=tautulli
|
|
- traefik.http.services.tautulli.loadbalancer.server.port=8181
|
|
- traefik.docker.network=proxy
|
|
jellystat-db:
|
|
container_name: jellystat-db
|
|
image: postgres:15.2
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
environment:
|
|
- POSTGRES_DB=jfstat
|
|
- POSTGRES_USER=jfstat
|
|
- POSTGRES_PASSWORD=DB_PASSWORD # CHANGE THIS TO A SECURE PASSWORD
|
|
volumes:
|
|
- /lake/starr/jellystat/db:/var/lib/postgresql/data
|
|
jellystat:
|
|
container_name: jellystat
|
|
image: cyfershepard/jellystat:latest
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 3040:3000
|
|
environment:
|
|
- POSTGRES_USER=jfstat
|
|
- POSTGRES_PASSWORD=DB_PASSWORD # CHANGE THIS TO THE SAME SECURE PASSWORD FROM ABOVE
|
|
- POSTGRES_IP=jellystat-db
|
|
- POSTGRES_PORT=5432
|
|
- JWT_SECRET=SUPER_SECRET_STRING # CHANGE THIS TO A RANDOM SECURE STRING
|
|
depends_on:
|
|
- jellystat-db
|
|
- jellyfin
|
|
volumes:
|
|
- /lake/starr/jellystat:/app/backend/backup-data
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.jellystat-secure.entrypoints=https
|
|
- traefik.http.routers.jellystat-secure.rule=Host(`jellystat.example.com`)
|
|
- traefik.http.routers.jellystat-secure.tls=true
|
|
- traefik.http.routers.jellystat-secure.service=jellystat
|
|
- traefik.http.services.jellystat.loadbalancer.server.port=3000
|
|
ytdl_material:
|
|
container_name: youtube-dl
|
|
image: tzahi12345/youtubedl-material:latest
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 8998:17442
|
|
environment:
|
|
ytdl_mongodb_connection_string: mongodb://ytdl-mongo-db:27017
|
|
ytdl_use_local_db: "false"
|
|
write_ytdl_config: "true"
|
|
depends_on:
|
|
- ytdl-mongo-db
|
|
volumes:
|
|
- /lake/starr/youtube-dl/appdata:/app/appdata
|
|
- /lake/media/youtube-music:/app/audio
|
|
- /lake/media/youtube:/app/video
|
|
- /lake/media/youtube-subscriptions:/app/subscriptions
|
|
- /lake/starr/youtube-dl/users:/app/users
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.youtube-dl-secure.entrypoints=https
|
|
- traefik.http.routers.youtube-dl-secure.rule=Host(`ytdl.example.com`)
|
|
- traefik.http.routers.youtube-dl-secure.tls=true
|
|
- traefik.http.routers.youtube-dl-secure.service=youtube-dl
|
|
- traefik.http.services.youtube-dl.loadbalancer.server.port=8686
|
|
- traefik.docker.network=proxy
|
|
#- traefik.http.routers.youtube-dl-secure.middlewares=authelia@docker # Since yt-dl has no authentication system, you can use authelia or similar
|
|
ytdl-mongo-db:
|
|
container_name: youtube-dl-mongodb
|
|
image: mongo
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
logging:
|
|
driver: none
|
|
volumes:
|
|
- /lake/starr/youtube-dl-mongodb/:/data/db
|
|
autoscan:
|
|
container_name: autoscan
|
|
image: ghcr.io/hotio/autoscan
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
ports:
|
|
- 3030:3030
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
- PLEX_LOGIN=
|
|
- PLEX_PASSWORD=
|
|
depends_on:
|
|
- radarr
|
|
- sonarr
|
|
- lidarr
|
|
volumes:
|
|
- /lake/starr/autoscan:/config
|
|
- /lake:/data
|
|
maintainerr:
|
|
container_name: maintainerr
|
|
image: ghcr.io/maintainerr/maintainerr:latest
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
user: 1000:1000
|
|
environment:
|
|
- TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE
|
|
# - DEBUG=true # uncomment to enable debug logs
|
|
ports:
|
|
- 6246:6246
|
|
depends_on:
|
|
- radarr
|
|
- sonarr
|
|
- plex
|
|
- seerr
|
|
volumes:
|
|
- type: bind
|
|
source: /lake/starr/maintainerr
|
|
target: /opt/data
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.maintainerr-secure.entrypoints=https
|
|
- traefik.http.routers.maintainerr-secure.rule=Host(`maintainerr.example.com`)
|
|
- traefik.http.routers.maintainerr-secure.tls=true
|
|
- traefik.http.routers.maintainerr-secure.service=maintainerr
|
|
- traefik.http.services.maintainerr.loadbalancer.server.port=6246
|
|
networks:
|
|
proxy:
|
|
external: true
|