108 lines
3.3 KiB
YAML
108 lines
3.3 KiB
YAML
# 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:
|