composer/docker-compose.yml
padriano 54a0d0f232 add Caddy HTTPS reverse proxy with Let's Encrypt via DuckDNS DNS-01
- Custom Caddy image with duckdns DNS provider plugin for automatic TLS
- ha-padriano.duckdns.org → Home Assistant, git-padriano.duckdns.org → Forgejo
- Move homeassistant and forgejo onto internal bridge network
- Update README to reflect HTTPS setup, new URLs, and setup steps

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 22:30:47 +01:00

124 lines
3 KiB
YAML

services:
duckdns:
image: lscr.io/linuxserver/duckdns:36a2e3a3-ls78
container_name: duckdns
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- SUBDOMAINS=${DUCKDNS_SUBDOMAINS}
- TOKEN=${DUCKDNS_TOKEN}
- UPDATE_IP=ipv4
- LOG_FILE=true
volumes:
- /home/padriano/projects/duckdns/config:/config
homeassistant:
image: homeassistant/home-assistant:2024.5.4
container_name: homeassistant
restart: unless-stopped
networks:
- internal
depends_on:
- duckdns
environment:
- TZ=${TZ}
volumes:
- /home/padriano/projects/ha/config:/config
healthcheck:
test: ["CMD", "curl", "-fsSL", "http://localhost:8123/api/"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
forgejo:
image: codeberg.org/forgejo/forgejo:10
container_name: forgejo
hostname: forgejo
restart: unless-stopped
ports:
- "2222:22"
networks:
- internal
environment:
- USER_UID=${PUID}
- USER_GID=${PGID}
volumes:
- /home/padriano/projects/forgejo:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
caddy:
build: ./caddy
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
environment:
- DUCKDNS_TOKEN=${DUCKDNS_TOKEN}
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
networks:
- internal
depends_on:
- homeassistant
- forgejo
samba:
image: dperson/samba:latest
container_name: samba
hostname: samba
restart: unless-stopped
networks:
macvlan_lan:
ipv4_address: 192.168.1.247
environment:
- USERID=${SAMBA_UID}
- GROUPID=${SAMBA_GID}
- TZ=${TZ}
command: >
-u "${SAMBA_USERNAME};${SAMBA_PASSWORD}"
volumes:
- /home/padriano/share:/share
- /home/padriano/projects/composer/samba/smb.conf:/etc/samba/smb.conf:ro
timemachine:
image: mbentley/timemachine:smb-20260503
container_name: timemachine
hostname: timemachine
restart: unless-stopped
network_mode: host
tmpfs:
- /run/samba
ulimits:
nofile:
soft: 65536
hard: 65536
environment:
- TM_UID=${TM_UID}
- TM_GID=${TM_GID}
- TM_GROUPNAME=${TM_GROUPNAME}
- TM_USERNAME=${TM_USERNAME}
- PASSWORD=${TIMEMACHINE_PASSWORD}
- SET_PERMISSIONS=false
- VOLUME_SIZE_LIMIT=${TIMEMACHINE_VOLUME_LIMIT}
- CUSTOM_SMB_CONF=true
volumes:
- /home/padriano/backup/timemachine:/opt/timemachine
- /home/padriano/projects/composer/timemachine/avahi-daemon.conf:/etc/avahi/avahi-daemon.conf:ro
- /home/padriano/projects/composer/timemachine/smb.conf:/etc/samba/smb.conf:ro
networks:
internal:
driver: bridge
macvlan_lan:
external: true
volumes:
caddy_data:
caddy_config: