refactor: homepage, as well as additional services such as pihole, portainer, scrutiny, torrents-csv. caddy has been partially set up

This commit is contained in:
2026-07-08 17:44:10 -07:00
parent a42fdfd2db
commit ad48cb8bc1
10 changed files with 350 additions and 236 deletions
+97 -56
View File
@@ -24,8 +24,6 @@ services:
- DNS_UPSTREAM_RESOLVER_TYPE=doh # DNS over TLS is an extra layer of security so your isp can not look at what you're doing through your DNS requests, even if your using a vpn (very vague, I don't know how this syustem works with a vpn).
ports: # YOU MUST SPECIFY A PORT PER SERVICE ROUTED THROUGH GLUETUN!
- 8888:8000/tcp # gluetun control server, i dont think you should change this
- 6881:6881 # Default port for qbit
- 6881:6881/udp # Default port for qbit, if udp > tcp
- ${QBITTORRENT_PORT}:${QBITTORRENT_PORT} # qBittorrent Web UI
- ${PROWLARR_PORT}:${PROWLARR_PORT} # Prowlarr
- ${SONARR_PORT}:${SONARR_PORT} # Sonarr
@@ -243,6 +241,8 @@ services:
- TZ=${TIMEZONE}
ports:
- ${TAUTULLI_PORT}:${TAUTULLI_PORT}
networks:
- caddy_net
restart: always
tdarr:
@@ -250,6 +250,7 @@ services:
image: haveagitgat/tdarr:latest
networks:
- tdarr-net
- caddy_net
ports:
- ${TDARR_PORT}:${TDARR_PORT} # WebUI
- ${TDARR_NODE_PORT}:${TDARR_NODE_PORT} # local tdarr-node
@@ -268,6 +269,13 @@ services:
# dont put temp files onto a HARD DISK DRIVE! > - ${DISK1}/tdarr-temp:/temp
devices:
- /dev/dri:/dev/dri # Intel UHD Graphics 710
labels:
caddy: tdarr.shaan-server.cc
caddy.reverse_proxy: "{{upstreams 3000}}"
caddy.reverse_proxy.transport: "http"
caddy.reverse_proxy.transport.tls: ""
caddy.reverse_proxy.transport.tls_insecure_skip_verify: ""
caddy.tls: internal
restart: always
tdarr-node:
@@ -306,7 +314,8 @@ services:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
environment:
- "HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev,${LOCAL_IPV4}:${HOMEPAGE_PORT},${SERVER_NAME}:${HOMEPAGE_PORT},100.76.249.110:${HOMEPAGE_PORT},${SERVER_NAME}.tail:${HOMEPAGE_PORT},${EXTERNAL_IPV4}:${HOMEPAGE_PORT},${WEB_NAME}:${HOMEPAGE_PORT},${WEB_NAME},172.17.0.1:${HOMEPAGE_PORT}" # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
#- "HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev,${LOCAL_IPV4}:${HOMEPAGE_PORT},${SERVER_NAME}:${HOMEPAGE_PORT},100.76.249.110:${HOMEPAGE_PORT},${SERVER_NAME}.tail:${HOMEPAGE_PORT},${EXTERNAL_IPV4}:${HOMEPAGE_PORT},${WEB_NAME}:${HOMEPAGE_PORT},${WEB_NAME},172.17.0.1:${HOMEPAGE_PORT},${SERVER_NAME}:80,${SERVER_NAME}:443,shaan-server:443" # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
- "HOMEPAGE_ALLOWED_HOSTS=*"
- "HOMEPAGE_VAR_DISK1=${DISK1}"
- "HOMEPAGE_VAR_DISK2=${DISK2}"
- "HOMEPAGE_VAR_DISK3=${DISK3}"
@@ -336,6 +345,7 @@ services:
- "HOMEPAGE_VAR_SEERR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${SEERR_PORT}"
- "HOMEPAGE_VAR_MYSPEED_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${MYSPEED_PORT}"
- "HOMEPAGE_VAR_TERMIX_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${TERMIX_PORT}"
- "HOMEPAGE_VAR_ODYSSEUS_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${ODYSSEUS_PORT}"
- "HOMEPAGE_VAR_PLEX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PLEX_PORT}"
- "HOMEPAGE_VAR_QBITTORRENT_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${QBITTORRENT_PORT}"
- "HOMEPAGE_VAR_PROWLARR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PROWLARR_PORT}"
@@ -349,12 +359,12 @@ services:
- "HOMEPAGE_VAR_SEERR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${SEERR_PORT}"
- "HOMEPAGE_VAR_MYSPEED_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${MYSPEED_PORT}"
- "HOMEPAGE_VAR_TERMIX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${TERMIX_PORT}"
- "HOMEPAGE_VAR_ODYSSEUS_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${ODYSSEUS_PORT}"
- TZ=${TIMEZONE}
extra_hosts:
- "host.docker.internal:host-gateway"
#networks:
# staticaddress:
# ipv4_address: 172.200.0.2
networks:
- caddy_net
restart: always
glances:
@@ -463,32 +473,37 @@ services:
- termix-net
restart: unless-stopped
# pihole:
# container_name: pihole
# image: pihole/pihole:latest
# network_mode: "host"
# ports:
# - "53:53/tcp"
# - "53:53/udp"
# - "67:67/udp"
# - "80:80/tcp"
# environment:
# TZ: "America/Los_Angeles"
# #WEBPASSWORD: "password123"
# volumes:
# - "./etc-pihole:/etc/pihole"
# - "./etc-dnsmasq.d:/etc/dnsmasq.d"
# - /etc/localtime:/etc/localtime:ro
# - /etc/timezone:/etc/timezone:ro
# cap_add:
# - NET_ADMIN
# restart: unless-stopped
pihole:
container_name: pihole
image: pihole/pihole:latest
network_mode: "host"
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "6060:6060/tcp"
environment:
TZ: "America/Los_Angeles"
WEBPASSWORD: "password123"
FTLCONF_misc_etc_dnsmasq_d: "true"
volumes:
- "./etc-pihole:/etc/pihole"
- "./etc-dnsmasq.d:/etc/dnsmasq.d"
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
cap_add:
- NET_ADMIN
restart: unless-stopped
labels:
caddy: pihole.shaan-server.cc
caddy.reverse_proxy: "192.168.50.2:6060"
caddy.tls: internal
cloudflared:
container_name: cloudflared-tunnel
image: cloudflare/cloudflared:latest
restart: always
command: tunnel --no-autoupdate run --token eyJhIjoiMjUyZjQ3MWZkMzE2ZTg5NjI2ZjEzYzI1YzYwMTJiYzciLCJ0IjoiNWFhMDJlNmEtNDE2Ni00YTJkLTk1YzktMGFmMGY3MjM3YjIzIiwicyI6Ik5tWmhOR1V6WVRZdE5HRXdOaTAwT1RjekxXSTFPV1V0T0RrMU1UWTRabVl4WkRZeCJ9
command: tunnel --no-autoupdate run --token ${CLOUDFLARED_KEY}
torrents-csv:
image: dessalines/torrents-csv-server:latest
@@ -505,7 +520,6 @@ services:
db:
image: pgautoupgrade/pgautoupgrade:17-alpine
restart: unless-stopped
shm_size: 1gb
volumes:
- ./init-database.sh:/docker-entrypoint-initdb.d/init-database.sh
@@ -519,48 +533,75 @@ services:
POSTGRES_PASSWORD: password
POSTGRES_USER: postgres
TIMEZONE: ${TIMEZONE}
restart: unless-stopped
# caddy:
# build:
# context: .
# dockerfile_inline: |
# FROM caddy:2.11-builder AS builder
# RUN xcaddy build --with github.com/caddyserver/nginx-adapter --with github.com/caddy-dns/cloudflare
# FROM caddy:2.11-builder
# COPY --from=builder /usr/bin/caddy /usr/bin/caddy
# container_name: caddy
# restart: unless-stopped
# ports:
# - "80:80"
# - "443:443"
# - "443:443/udp"
# environment:
# - CLOUDFLARE_API_TOKEN=eyJhIjoiMjUyZjQ3MWZkMzE2ZTg5NjI2ZjEzYzI1YzYwMTJiYzciLCJ0IjoiNWFhMDJlNmEtNDE2Ni00YTJkLTk1YzktMGFmMGY3MjM3YjIzIiwicyI6Ik5tWmhOR1V6WVRZdE5HRXdOaTAwT1RjekxXSTFPV1V0T0RrMU1UWTRabVl4WkRZeCJ9
# volumes:
# - ./conf:/etc/caddy
# - ./site:/srv
# - caddy_data:/data
# - caddy_config:/config
# networks:
# - server-mesh
portainer:
container_name: portainer
image: portainer/portainer-ce:lts
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
ports:
- 9443:9443
networks:
- caddy_net
caddy:
image: caddy:latest
restart: unless-stopped
container_name: caddy
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /home/shaan/torrent-stack/caddy/Caddyfile:/etc/caddy/Caddyfile
- /home/shaan/torrent-stack/caddy/site:/srv
- /home/shaan/torrent-stack/caddy/caddy_data:/data
- /home/shaan/torrent-stack/caddy/caddy_config:/config
networks:
- caddy_net
scrutiny:
restart: unless-stopped
container_name: scrutiny
image: ghcr.io/analogj/scrutiny:nightly-omnibus
cap_add:
- SYS_RAWIO
ports:
- "${SCRUTINY_PORT:-54321}:8080" # webapp
- "${SCRUTINY_ADMIN_PORT:-12345}:8086" # influxDB admin
volumes:
- /run/udev:/run/udev:ro
- ./config:/opt/scrutiny/config
- ./influxdb:/opt/scrutiny/influxdb
devices:
- "/dev/nvme0n1"
- "/dev/sda"
- "/dev/sdb"
networks:
caddy_net:
external: true
tdarr-net:
driver: bridge
termix-net:
driver: bridge
server-mesh:
external: true
staticaddress:
ipam:
config:
- subnet: "172.200.0.0/16"
default:
name: portainer_network
volumes:
# open-webui:
# caddy_data:
# caddy_config:
caddy_data:
external: true
caddy_config:
myspeed:
external: true # docker compose will fail creating myspeed if the volume hasn't been manually created, which we have done. unless you deleted it...
termix-data:
driver: local
portainer_data:
name: portainer_data