Files
homelab-optimized/docs/services/theme-park.md
Gitea Mirror Bot 3aba68c4c6
Some checks failed
Documentation / Deploy to GitHub Pages (push) Has been cancelled
Documentation / Build Docusaurus (push) Has been cancelled
Sanitized mirror from private repository - 2026-04-05 10:15:27 UTC
2026-04-05 10:15:27 +00:00

4.9 KiB

Theme.Park - Self-Hosted CSS Themes

Overview

Theme.Park provides custom CSS themes for various self-hosted applications. This setup runs theme.park locally to eliminate external dependencies on GitHub/CDN.

Why Self-Host?

  • No external dependency: If GitHub or theme-park.dev goes down, your themes keep working
  • Faster loading: CSS served locally instead of from CDN
  • Privacy: No external requests from your apps

Deployment

Stack Location

  • Compose file: Atlantis/theme-park/theme-park.yaml
  • Portainer Stack ID: 498
  • Container name: theme-park

Ports

Port Protocol Purpose
8580 HTTP CSS serving
8543 HTTPS CSS serving (unused)

Config Path

/volume2/metadata/docker2/theme-park

Themed Applications

All apps use Dracula theme with self-hosted CSS:

Atlantis (192.168.0.200)

Application Stack Theme Method
Sonarr arr-stack DOCKER_MODS
Radarr arr-stack DOCKER_MODS
Lidarr arr-stack DOCKER_MODS
Bazarr arr-stack DOCKER_MODS
Prowlarr arr-stack DOCKER_MODS
Tautulli arr-stack DOCKER_MODS
SABnzbd arr-stack DOCKER_MODS
Jackett arr-stack DOCKER_MODS
Whisparr arr-stack TP_HOTIO
Plex arr-stack DOCKER_MODS
Deluge arr-stack DOCKER_MODS
LazyLibrarian arr-stack DOCKER_MODS
Syncthing syncthing-stack DOCKER_MODS

Calypso (192.168.0.250)

Application Stack Theme Method
Sonarr arr-stack DOCKER_MODS
Radarr arr-stack DOCKER_MODS
Lidarr arr-stack DOCKER_MODS
Bazarr arr-stack DOCKER_MODS
Prowlarr arr-stack DOCKER_MODS
Readarr arr-stack DOCKER_MODS
Tautulli arr-stack DOCKER_MODS
SABnzbd arr-stack DOCKER_MODS
Whisparr arr-stack TP_HOTIO
Plex arr-stack DOCKER_MODS
Syncthing syncthing-stack DOCKER_MODS

Via Nginx Proxy Manager (CSS sub_filter injection)

Application Domain NPM Host ID
Gitea git.vish.gg 3
Uptime-Kuma kuma.vish.gg 41
Nginx Proxy Manager npm.vish.gg 35

Configuration

Required Environment Variables

For LinuxServer.io containers:

environment:
  - DOCKER_MODS=ghcr.io/themepark-dev/theme.park:<app_name>
  - TP_SCHEME=http
  - TP_DOMAIN=192.168.0.200:8580
  - TP_THEME=dracula

For Hotio containers (e.g., Whisparr):

environment:
  - TP_HOTIO=true
  - TP_SCHEME=http
  - TP_DOMAIN=192.168.0.200:8580
  - TP_THEME=dracula

Critical Settings

Variable Value Why
TP_SCHEME http Required! Local theme-park only serves HTTP. Without this, mod defaults to https and CSS fails to load
TP_DOMAIN 192.168.0.200:8580 Must be the NAS's LAN IP, not Docker gateway. The user's browser must be able to reach this URL

Common Mistakes

  1. Using Docker gateway IP (172.24.0.x): Containers can reach this, but user browsers cannot
  2. Missing TP_SCHEME=http: Mod defaults to https, which the local server doesn't serve
  3. Using hostname instead of IP: Container DNS may not resolve atlantis

Available Themes

  • dracula (current)
  • nord
  • hotline
  • dark
  • plex
  • aquamarine
  • space-gray
  • organizr
  • hotpink
  • onedark

To change theme, update TP_THEME in compose files and redeploy.

Apps That Cannot Be Themed

App Reason
Jellyseerr Not a LinuxServer image; not proxied via NPM (direct access only)
Portainer Accessed directly, not proxied via NPM
AdGuard Not a LinuxServer image; accessed directly
Vaultwarden No theme.park support
Wizarr No theme.park support
Homarr No theme.park support
Audiobookshelf Not a LinuxServer image, no DOCKER_MODS support

Troubleshooting

Theme not showing?

  1. Check env vars are set:

    docker exec sonarr env | grep TP_
    

    Should show:

    TP_SCHEME=http
    TP_DOMAIN=192.168.0.200:8580
    TP_THEME=dracula
    
  2. Check CSS is injected into HTML:

    docker exec sonarr grep "stylesheet.*8580" /app/sonarr/bin/UI/index.html
    

    Should show http://192.168.0.200:8580/css/...

  3. Test CSS fetch from inside container:

    docker exec sonarr curl -s http://192.168.0.200:8580/css/base/sonarr/dracula.css | head -3
    
  4. Hard refresh browser: Ctrl+Shift+R to clear cached CSS

Container logs

docker logs sonarr 2>&1 | grep -i theme

Look for:

|  Sonarr theme.park Mod  |
'TP_THEME'=dracula
Adding the stylesheets
  • Theme-park compose: Atlantis/theme-park/theme-park.yaml
  • Arr-suite compose: Atlantis/arr-suite/docker-compose.yml
  • Syncthing compose: Atlantis/syncthing.yml