Last active
January 13, 2025 15:37
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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