# Place this at ~/docker/docker-compose.yml (overwrite existing if ready) # NOTE: the top-level "version" key is optional in modern Compose v2/v3 usage. services: tsdproxy: image: almeidapaulopt/tsdproxy:1 container_name: tsdproxy restart: unless-stopped network_mode: host volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - tsd_data:/data - ./tsdproxy/config:/config ports: - "8080:8080" cap_add: - NET_ADMIN - SYS_MODULE environment: # You may optionally set an auth key here, or add it to /config/tsdproxy.yaml later TAILSCALE_AUTHKEY: "tskey-auth-kUFWCyDau321CNTRL-Vdt9PFUDUqAb7iQYLvCjqAkhcnq3aTTtg" # (optional — recommended to use config file) TS_EXTRA_ARGS: "--accept-routes" db: image: mariadb:11 container_name: nextcloud-db restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: supersecurepassword MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud MYSQL_PASSWORD: nextcloudpassword volumes: - db_data:/var/lib/mysql nextcloud: image: nextcloud:29 container_name: nextcloud-app restart: unless-stopped depends_on: - db environment: MYSQL_HOST: db MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud MYSQL_PASSWORD: nextcloudpassword volumes: - /mnt/nextcloud-data:/var/www/html/data - /mnt/nextcloud-config:/var/www/html/config labels: - "traefik.enable=true" - "traefik.http.routers.nextcloud.rule=Host(`nextcloud.sj98.duckdns.org`)" - "traefik.http.routers.nextcloud.entrypoints=websecure" - "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt" - "traefik.http.services.nextcloud.loadbalancer.server.port=80" - "tsdproxy.enable=true" - "tsdproxy.name=nextcloud" plex: image: lscr.io/linuxserver/plex:latest container_name: plex restart: unless-stopped network_mode: "host" environment: PLEX_CLAIM: claim-your-plex-claim PUID: 1000 PGID: 1000 TZ: America/Chicago volumes: - /mnt/media:/media labels: - "traefik.enable=true" - "traefik.tcp.routers.plex.rule=HostSNI(`plex.sj98.duckdns.org`)" - "traefik.tcp.routers.plex.entrypoints=websecure" - "traefik.tcp.services.plex.loadbalancer.server.port=32400" - "tsdproxy.enable=true" - "tsdproxy.name=plex" jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin restart: unless-stopped network_mode: "host" environment: PUID: 1000 PGID: 1000 TZ: America/Chicago volumes: - /mnt/media:/media labels: - "traefik.enable=true" - "traefik.tcp.routers.jellyfin.rule=HostSNI(`jellyfin.sj98.duckdns.org`)" - "traefik.tcp.routers.jellyfin.entrypoints=websecure" - "traefik.tcp.services.jellyfin.loadbalancer.server.port=8096" - "tsdproxy.enable=true" - "tsdproxy.name=jellyfin" watchtower: image: containrrr/watchtower container_name: watchtower restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock command: --interval 3600 volumes: db_data: tsd_data: