services: postgres: image: postgres:16-alpine container_name: music-aggregator-db restart: unless-stopped environment: POSTGRES_USER: music POSTGRES_PASSWORD: music POSTGRES_DB: music_aggregator volumes: - postgres_data:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro ports: - "5433:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U music -d music_aggregator"] interval: 10s timeout: 5s retries: 5 jackett: image: lscr.io/linuxserver/jackett:latest container_name: music-aggregator-jackett restart: unless-stopped environment: - PUID=1000 - PGID=1000 - TZ=Europe/Warsaw - AUTO_UPDATE=true volumes: - jackett_config:/config - jackett_downloads:/downloads ports: - "9117:9117" gluetun: image: qmcgaw/gluetun:latest container_name: music-aggregator-vpn restart: unless-stopped cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun environment: - VPN_SERVICE_PROVIDER=custom - VPN_TYPE=wireguard - TZ=Europe/Warsaw volumes: - ./wg.conf:/gluetun/wireguard/wg0.conf:ro ports: - "8080:8080" - "6881:6881" - "6881:6881/udp" healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://localhost:8080"] interval: 30s timeout: 10s retries: 3 start_period: 30s qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest container_name: music-aggregator-qbittorrent restart: unless-stopped network_mode: "service:gluetun" depends_on: gluetun: condition: service_healthy environment: - PUID=1000 - PGID=1000 - TZ=Europe/Warsaw - WEBUI_PORT=8080 volumes: - qbittorrent_config:/config - downloads:/downloads volumes: postgres_data: jackett_config: jackett_downloads: qbittorrent_config: downloads: