Bump the homeassistant image to 2026.5.4 (latest 2026.5 patch) and adjust the healthcheck for modern HA: - swap the probe from /api/ (now requires auth, returned 401 → spurious "unhealthy") to the auth-free /manifest.json - set start_period to 2m; the recorder schema migration (43→48) completed in milliseconds on this 149M SQLite DB, so the temporary 30m headroom used during the upgrade is no longer needed Verified post-upgrade: container healthy, version 2026.5.4, local /manifest.json 200, reverse proxy 200, trusted_proxies /12 validated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
129 lines
3.1 KiB
YAML
129 lines
3.1 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:2026.5.4
|
|
container_name: homeassistant
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8123:8123"
|
|
networks:
|
|
internal:
|
|
macvlan_lan:
|
|
ipv4_address: 192.168.1.246
|
|
depends_on:
|
|
- duckdns
|
|
environment:
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- /home/padriano/projects/ha/config:/config
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-fsSL", "http://localhost:8123/manifest.json"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 2m
|
|
|
|
forgejo:
|
|
image: codeberg.org/forgejo/forgejo:10
|
|
container_name: forgejo
|
|
hostname: forgejo
|
|
restart: unless-stopped
|
|
ports:
|
|
- "3000:3000"
|
|
- "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:
|