Initial commit: homelab configuration and documentation
This commit is contained in:
107
services/standalone/Nextcloud/docker-compose.yml
Normal file
107
services/standalone/Nextcloud/docker-compose.yml
Normal file
@@ -0,0 +1,107 @@
|
||||
# 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:
|
||||
Reference in New Issue
Block a user