services: caddy: depends_on: - archivebox - freshrss - filebrowser - uptime-kuma - ntfy - flatnotes - radicale - metube image: caddy:latest container_name: caddy restart: unless-stopped environment: HLEDGER_PASSWORD_HASH: "${HLEDGER_PASSWORD_HASH}" ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config - /home/tomasr/vps-config/web-server:/srv/www extra_hosts: - "host.docker.internal:host-gateway" archivebox: image: archivebox/archivebox:latest container_name: archivebox restart: unless-stopped command: server 0.0.0.0:8000 environment: - TZ=Europe/Zurich volumes: # Local SSD: database + config + metadata - /opt/server/archivebox/archivebox-data:/data # kDrive: only the heavy archive content - /mnt/kdrive/Archive:/data/archive freshrss: image: freshrss/freshrss:latest container_name: freshrss restart: unless-stopped environment: - TZ=Europe/Zurich - CRON_MIN=*/20 volumes: - /opt/server/freshrss:/var/www/FreshRSS/data filebrowser: image: filebrowser/filebrowser:latest container_name: filebrowser restart: unless-stopped environment: - TZ=Europe/Zurich volumes: # Your yt-dlp downloads - /mnt/kdrive/Autre/Archive/Videos:/srv # FileBrowser database/config - /opt/server/filebrowser/database:/database - /opt/server/filebrowser:/config uptime-kuma: image: louislam/uptime-kuma:latest container_name: uptime-kuma restart: unless-stopped volumes: - /opt/server/uptime-kuma:/app/data ntfy: image: binwiederhier/ntfy:latest container_name: ntfy restart: unless-stopped command: - serve - --config - /etc/ntfy/server.yml environment: - TZ=Europe/Zurich volumes: # Persistent database, cache, attachments - /opt/server/ntfy:/var/cache/ntfy # Server configuration - /home/tomasr/vps-config/ntfy-config/server.yml:/etc/ntfy/server.yml:ro healthcheck: test: ["CMD-SHELL", "wget -q --tries=1 -O- http://localhost:80/v1/health | grep -q 'healthy'"] interval: 30s timeout: 10s retries: 3 flatnotes: image: dullage/flatnotes:latest container_name: flatnotes restart: unless-stopped environment: - TZ=Europe/Zurich - FLATNOTES_USERNAME=${FLATNOTES_USERNAME} - FLATNOTES_PASSWORD=${FLATNOTES_PASSWORD} - FLATNOTES_SECRET_KEY=${FLATNOTES_SECRET_KEY} volumes: - /mnt/kdrive/Notes/quicknotes:/data radicale: image: tomsquest/docker-radicale:latest container_name: radicale restart: unless-stopped environment: - TZ=Europe/Zurich volumes: # Calendar + contacts data - /opt/server/radicale/data:/data # Configuration - /home/tomasr/vps-config/radicale-config:/config metube: image: alexta69/metube:latest container_name: metube restart: unless-stopped environment: - YTDL_OPTIONS={"writesubtitles":true,"writeautomaticsub":true,"writethumbnail":true,"writeinfojson":true,"embedmetadata":true,"embedthumbnail":true} - MAX_CONCURRENT_DOWNLOADS=1 - STATE_DIR=/metube - YTDL_NIGHTLY_UPDATE_TIME=03:00 - TZ=Europe/Zurich volumes: # Your video archive - /mt/kdrive/Autre/Archive/Videos:/downloads # MeTube application state - /opt/server/metube:/metube volumes: caddy_data: caddy_config: