Skip to content

Instantly share code, notes, and snippets.

@Cremator
Last active January 13, 2025 15:37
Show Gist options
  • Save Cremator/e5f9049632d90bae93966c05b47a4530 to your computer and use it in GitHub Desktop.
Save Cremator/e5f9049632d90bae93966c05b47a4530 to your computer and use it in GitHub Desktop.
example docker compose with traefik, themepark, homepage, jellyfin and radarr full integration, modified themepark container with lsio docker-mod to get also local version of dashboard-icons for use with homepage container
name: media
x-logging:
&default-logging
options:
max-size: '1m'
max-file: '50'
driver: json-file
x-environment:
&default-env
TZ: Europe/Sofia
PUID: 1000
PGID: 1000
networks:
default:
name: def0
ipam:
driver: default
config:
- subnet: 172.23.233.0/24
services:
traefik:
container_name: traefik
restart: always
logging: *default-logging
environment: *default-env
image: traefik:v3.1
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`traefik.example.com`)"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.tls.certResolver=le"
- "traefik.http.routers.traefik.tls=true"
- "traefik.http.routers.traefik.middlewares=traefik-auth"
- "traefik.http.middlewares.traefik-auth.basicauth.users=user:$$apr1$$passw0rd."
- "homepage.group=System"
- "homepage.name=Traefik"
- "homepage.icon=https://css.example.com/dashboard-icons/svg/traefik.svg"
- "homepage.href=https://traefik.example.com/"
- "homepage.description=Cloud Native Application Proxy Server"
- "homepage.widget.type=traefik"
- "homepage.widget.url=http://traefik:8080"
command:
- --api.dashboard=true
- --providers.docker
- --log.level=DEBUG
- --accessLog
- --entrypoints.web.address=:80
- --entrypoints.web.http.redirections.entryPoint.to=websecure
- --entrypoints.web.http.redirections.entryPoint.scheme=https
- --entrypoints.websecure.address=:443
- [email protected]
- --certificatesResolvers.le.acme.storage=/config/acme.json
- --certificatesResolvers.le.acme.httpChallenge.entryPoint=web
- --providers.file.directory=/config
#- --providers.file.filename=/config/traefik.yml
- --providers.file.watch=true
#- --providers.docker.defaultRule=Host(`{{ normalize .Name }}.example.com`)
- --providers.docker.exposedbydefault=false
- --experimental.plugins.traefik-themepark.modulename=github.com/packruler/traefik-themepark
- --experimental.plugins.traefik-themepark.version=v1.4.2
ports:
- 80:80/tcp
- 443:443/tcp
#- 8080:8080/tcp
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./containers/traefik:/config
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
logging: *default-logging
#environment: *default-env
environment:
TZ: Europe/Sofia
labels:
- "traefik.enable=true"
- "traefik.http.routers.homepage.rule=Host(`home.example.com`)"
- "traefik.http.routers.homepage.tls.certResolver=le"
- "traefik.http.routers.homepage.tls=true"
- "traefik.http.services.homepage.loadbalancer.server.port=3000"
- "traefik.http.routers.homepage.middlewares=traefik-auth"
volumes:
- ./containers/homepage:/app/config
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
jellyfin:
image: ghcr.io/linuxserver/jellyfin
container_name: jellyfin
logging: *default-logging
environment:
<<: *default-env
JELLYFIN_PublishedServerUrl: https://jellyfin.example.com
DOCKER_MODS: linuxserver/mods:jellyfin-amd
volumes:
- ./containers/jellyfin:/config
- ./media:/data
- type: tmpfs
target: /config/data/transcodes
tmpfs:
size: 40000000000
labels:
- "traefik.enable=true"
- "traefik.http.routers.jellyfin.rule=Host(`jellyfin.example.com`)"
- "traefik.http.routers.jellyfin.tls.certResolver=le"
- "traefik.http.routers.jellyfin.tls=true"
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
- "homepage.group=Media"
- "homepage.name=Jellyfin"
- "homepage.icon=https://css.example.com/dashboard-icons/svg/jellyfin.svg"
- "homepage.href=https://jellifin.example.com/"
- "homepage.description=The Free Software Media System"
- "homepage.widget.type=jellyfin"
- "homepage.widget.url=http://jellyfin:8096"
- "homepage.widget.key=jellyfin_api_key"
- "homepage.widget.enableBlocks=true"
devices:
- /dev/dri:/dev/dri
- /dev/kfd:/dev/kfd
ports:
- 7359:7359/udp #optional
- 1900:1900/udp #optional
restart: unless-stopped
mem_limit: 40g
radarr:
image: ghcr.io/linuxserver/radarr:latest
container_name: radarr
logging: *default-logging
environment: *default-env
volumes:
- ./containers/radarr:/config
- ./media:/data
labels:
- "traefik.enable=true"
- "traefik.http.routers.radarr.rule=Host(`radarr.example.com`)"
- "traefik.http.routers.radarr.tls.certResolver=le"
- "traefik.http.routers.radarr.tls=true"
- "traefik.http.services.radarr.loadbalancer.server.port=7878"
- "traefik.http.routers.radarr.middlewares=traefik-auth,radarr-theme"
- "traefik.http.middlewares.radarr-theme.plugin.traefik-themepark.app=radarr"
- "traefik.http.middlewares.radarr-theme.plugin.traefik-themepark.theme=dark"
- "traefik.http.middlewares.radarr-theme.plugin.traefik-themepark.addons=radarr-darker"
- "traefik.http.middlewares.radarr-theme.plugin.traefik-themepark.baseUrl=https://css.example.com"
- "homepage.group=Media"
- "homepage.name=Radarr"
- "homepage.icon=https://css.example.com/dashboard-icons/svg/radarr.svg"
- "homepage.href=https://radarr.example.com/"
- "homepage.description=Movie organizer/manager"
- "homepage.widget.type=radarr"
- "homepage.widget.url=http://radarr:7878"
- "homepage.widget.key=radarr_api_key"
- "homepage.widget.enableQueue=true" # optional, defaults to false
restart: unless-stopped
themepark:
image: ghcr.io/themepark-dev/theme.park
container_name: themepark
logging: *default-logging
environment:
<<: *default-env
DOCKER_MODS: linuxserver/mods:universal-git|linuxserver/mods:universal-cron
volumes:
- ./containers/themepark:/config
labels:
- "traefik.enable=true"
- "traefik.http.routers.themepark.rule=Host(`css.example.com`)"
- "traefik.http.routers.themepark.tls.certResolver=le"
- "traefik.http.routers.themepark.tls=true"
- "traefik.http.services.themepark.loadbalancer.server.port=80"
restart: unless-stopped
############################
#run the following command in the themepark container as user abc: git clone https://github.com/homarr-labs/dashboard-icons.git /config/www/dashboard-icons
#then change the crontab for user abc, for example:
# echo "0 */6 * * * if [ -d /config/www/dashboard-icons/.git ]; then pushd /config/www/dashboard-icons; git pull --rebase; popd; else git clone https://github.com/homarr-labs/dashboard-icons.git /config/www/dashboard-icons; fi" >> ./containers/themepark/crontabs/abc
#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment