Skip to content

Instantly share code, notes, and snippets.

@Goblinlordx
Last active July 15, 2024 03:31
Show Gist options
  • Save Goblinlordx/00344f4a5fb57acafdcd7bb8e6bdaeda to your computer and use it in GitHub Desktop.
Save Goblinlordx/00344f4a5fb57acafdcd7bb8e6bdaeda to your computer and use it in GitHub Desktop.
Example docker compose for server
version: "3.3"
services:
traefik:
image: traefik:v2.5
container_name: traefik
restart: unless-stopped
ports:
- "80:80" # The HTTP port
- "443:443" # The HTTPS port
volumes:
- /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
- ./traefik:/etc/traefik
deluge:
image: lscr.io/linuxserver/deluge
container_name: deluge
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Seoul
- UMASK_SET=002
- DELUGE_LOGLEVEL=debug
volumes:
- ../inprog:/downloads
- ./data/deluge:/config
ports:
- 8112:8112
labels:
- "traefik.http.routers.deluge.rule=Host(\"deluge.domain.com\")"
- "traefik.http.routers.deluge.tls=true"
- "traefik.http.routers.deluge.tls.certresolver=primary"
- "traefik.http.routers.deluge.tls.domains[0].main=deluge.domain.com"
jellyfin:
build: ./jellyfin-ihd
# image: jellyfin/jellyfin
# image: jellyfin/jellyfin:10.8.0-alpha5
container_name: jellyfin
user: 1000:1000
privileged: true
restart: unless-stopped
group_add:
- "44"
- "109"
ports:
- 8080:8096
environment:
- JELLYFIN_CACHE_DIR=/var/cache/jellyfin
- JELLYFIN_CONFIG_DIR=/etc/jellyfin
- JELLYFIN_DATA_DIR=/var/lib/jellyfin
- JELLYFIN_LOG_DIR=/var/log/jellyfin
volumes:
- ./data/jellyfin/config:/etc/jellyfin
- ./data/jellyfin/cache:/var/cache/jellyfin
- ./data/jellyfin/lib:/var/lib/jellyfin
- ./data/jellyfin/log:/var/log/jellyfin
- /mnt/media:/media
- /mnt/secondary:/secondary
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
labels:
- "traefik.http.routers.jellyfin.rule=Host(\"jellyfin.domain.com\")"
- "traefik.http.routers.jellyfin.tls=true"
- "traefik.http.routers.jellyfin.tls.certresolver=primary"
- "traefik.http.routers.jellyfin.tls.domains[0].main=jellyfin.domain.com"
- "traefik.http.routers.jellyfin.service=jellyfin-svc"
- "traefik.http.services.jellyfin-svc.loadBalancer.server.port=8096"
- "traefik.http.services.jellyfin-svc.loadBalancer.passHostHeader=true"
prometheus:
image: prom/prometheus:v2.33.1
container_name: prometheus
restart: unless-stopped
user: root
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ./data/prometheus:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=150d'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--web.enable-lifecycle'
grafana:
image: grafana/grafana-oss:8.3.4
container_name: graphana
restart: unless-stopped
volumes:
- ./data/grafana/lib:/var/lib/grafana
labels:
- "traefik.http.routers.grafana.rule=Host(\"grafana.domain.com\")"
- "traefik.http.routers.grafana.tls=true"
- "traefik.http.routers.grafana.tls.certresolver=primary"
- "traefik.http.routers.grafana.tls.domains[0].main=grafana.domain.com"
jackett:
image: linuxserver/jackett:0.21.491
container_name: jackett
restart: unless-stopped
ports:
- 9117:9117
environment:
- TZ=Asia/Seoul
volumes:
- ./jackett:/config
- ./data/jackett/downloads:/downlaods
radarr:
image: linuxserver/radarr:latest
container_name: radarr
restart: unless-stopped
ports:
- 7878:7878
environment:
- PUID=1000
- PGID=1000
volumes:
- ./radarr:/config
- ../inprog:/downloads
- /mnt/media:/media
- /mnt/secondary:/secondary
sonarr:
image: linuxserver/sonarr:latest
container_name: sonarr
restart: unless-stopped
ports:
- 8989:8989
environment:
- PUID=1000
- PGID=1000
volumes:
- ./sonarr:/config
- ../inprog:/downloads
- /mnt/media:/media
- /mnt/secondary:/secondary
bazarr:
image: linuxserver/bazarr:latest
container_name: bazarr
restart: unless-stopped
ports:
- 6767:6767
environment:
- PUID=1000
- PGID=1000
volumes:
- ./bazarr:/config
- /mnt/media/Movies:/movies
- /mnt/media/TV:/tv
ombi:
image: lscr.io/linuxserver/ombi
container_name: ombi
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Seoul
volumes:
- ./ombi:/config
ports:
- 3579:3579
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest
restart: unless-stopped
ports:
- 13378:80
volumes:
- /mnt/media/Audiobooks:/audiobooks
- ./audiobookshelf/config:/config
- ./audiobookshelf/metadata:/metadata
environment:
- TZ=Asia/Seoul
labels:
- "traefik.http.routers.audiobookshelf.rule=Host(\"audiobookshelf.domain.com\")"
- "traefik.http.routers.audiobookshelf.tls=true"
- "traefik.http.routers.audiobookshelf.tls.certresolver=primary"
- "traefik.http.routers.audiobookshelf.tls.domains[0].main=audiobookshelf.domain.com"
library:
image: lscr.io/linuxserver/kavita:latest
container_name: kavita
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Seoul
volumes:
- ./kavita/config:/config
- ./kavita/data:/data
- /mnt/media/Ebooks:/library/Ebooks
ports:
- 5000:5000
labels:
- "traefik.http.routers.library.rule=Host(\"some.domain.com\")"
- "traefik.http.routers.library.tls=true"
- "traefik.http.routers.library.tls.certresolver=primary"
- "traefik.http.routers.library.tls.domains[0].main=some.domain.com"
entryPoints:
web:
address: ":80"
http:
redirections:
entrypoint:
to: websecure
scheme: https
websecure:
address: ":443"
certificatesResolvers:
primary:
acme:
email: <your email>
storage: /etc/traefik/acme.json
tlsChallenge: {}
# httpChallenge:
# entrypoint: web
providers:
docker: {}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment