version: "3" services: swag: image: linuxserver/swag container_name: swag restart: unless-stopped cap_add: - NET_ADMIN env_file: - ./swag/swag.env volumes: - ./swag:/config ports: - 80:80 - 443:443 authelia: image: authelia/authelia container_name: authelia restart: unless-stopped env_file: - ./authelia/authelia.env volumes: - ./authelia:/config expose: - 9091 wg-gen-web: image: vx3r/wg-gen-web:latest container_name: wg-gen-web restart: unless-stopped expose: - 8080 env_file: - wg/wg-gen.env volumes: - /etc/wireguard:/data freshrss: image: linuxserver/freshrss container_name: freshrss restart: unless-stopped env_file: - ./freshrss/freshrss.env volumes: - ./freshrss:/config expose: - 80 rss-bridge: image: rssbridge/rss-bridge container_name: rss-bridge restart: unless-stopped env_file: - ./rss-bridge/rss-bridge.env volumes: - ./rss-bridge/whitelist.txt:/app/whitelist.txt expose: - 80 calibre: image: linuxserver/calibre container_name: calibre restart: unless-stopped env_file: - ./calibre/calibre.env - ./calibre/calibre.env.secret volumes: - ~/library:/config - ~/books_to_add:/books_to_add expose: - 8080 - 8081 depends_on: - "calibre-web" # Because of access to database calibre-web: image: linuxserver/calibre-web container_name: calibre-web restart: unless-stopped env_file: - ./calibre-web/calibre-web.env volumes: - ./calibre-web:/config - ~/library:/books expose: - 8083 gitea: image: gitea/gitea:latest container_name: gitea restart: unless-stopped env_file: - gitea/gitea.env volumes: - ./gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro expose: - 3000 ports: - "22:22" drone-server: image: drone/drone:1 container_name: drone-server restart: unless-stopped env_file: - ./drone/drone.env - ./drone/drone.env.secret volumes: - ./drone:/data expose: - 8080 depends_on: - gitea drone-runner: image: drone/drone-runner-docker:1 container_name: drone-runner restart: unless-stopped env_file: - ./drone/drone-runner.env - ./drone/drone-runner.env.secret volumes: - /var/run/docker.sock:/var/run/docker.sock expose: - 3000 depends_on: - drone-server pyload: image: linuxserver/pyload container_name: pyload restart: unless-stopped env_file: - ./pyload/pyload.env volumes: - ./pyload:/config - ~/downloads:/downloads expose: - 8000 - 7227 #optional transmission: image: linuxserver/transmission container_name: transmission restart: unless-stopped env_file: - ./transmission/transmission.env - ./transmission/transmission.env.secret volumes: - ./transmission:/config - ~/downloads:/downloads - ~/downloads/blackhole:/watch expose: - 9091 ports: - 51413:51413 - 51413:51413/udp sabnzbd: image: linuxserver/sabnzbd container_name: sabnzbd restart: unless-stopped env_file: - ./sabnzbd/sabnzbd.env volumes: - ./sabnzbd:/config - ~/downloads:/downloads expose: - 8080 - 9090 nzbhydra2: image: linuxserver/nzbhydra2 container_name: nzbhydra2 restart: unless-stopped env_file: - ./nzbhydra2/nzbhydra.env volumes: - ./nzbhydra2:/config - ~/downloads:/downloads expose: - 5076 jackett: image: linuxserver/jackett container_name: jackett restart: unless-stopped env_file: - ./jackett/jackett.env volumes: - ./jackett:/config - ~/downloads/blackhole:/downloads expose: - 9117 sonarr: image: linuxserver/sonarr container_name: sonarr restart: unless-stopped env_file: - ./sonarr/sonarr.env volumes: - ./sonarr:/config - ~/videos/shows:/tv - ~/downloads:/downloads expose: - 8989 radarr: image: linuxserver/radarr container_name: radarr restart: unless-stopped env_file: - ./radarr/radarr.env volumes: - ./radarr:/config - ~/videos/movies:/movies - ~/downloads:/downloads expose: - 7878 bazarr: image: linuxserver/bazarr container_name: bazarr restart: unless-stopped env_file: - ./bazarr/bazarr.env volumes: - ./bazarr:/config - ~/videos/movies:/movies - ~/videos/shows:/tv expose: - 6767 quassel-core: image: linuxserver/quassel-core container_name: quassel-core restart: unless-stopped env_file: - ./quassel/quassel.env volumes: - ./quassel:/config ports: - 4242:4242 - 113:10113 #optional jellyfin: image: linuxserver/jellyfin container_name: jellyfin restart: unless-stopped env_file: - ./jellyfin/jellyfin.env volumes: - ./jellyfin:/config - ~/videos/shows:/data/tvshows - ~/videos/movies:/data/movies expose: - 8096 photoprism: image: photoprism/photoprism:latest container_name: photoprism restart: unless-stopped healthcheck: test: "photoprism status" interval: 60s timeout: 15s retries: 5 env_file: - ./photoprism/photoprism.env - ./photoprism/photoprism.env.secret volumes: - ~/pictures/originals:/photoprism/originals - ~/pictures/import:/photoprism/import - ./photoprism/config:/photoprism/config - ./photoprism/cache:/photoprism/cache - ./photoprism/database:/photoprism/database expose: - 2342 - 2343 user: 1000:1000 syncthing: image: linuxserver/syncthing restart: unless-stopped container_name: syncthing restart: unless-stopped env_file: - ./syncthing/syncthing.env volumes: - ./syncthing:/config - ~/:/data1 expose: - 8384 ports: - 22000:22000 - 21027:21027/udp nextcloud: image: linuxserver/nextcloud container_name: nextcloud restart: unless-stopped env_file: - ./nextcloud/nextcloud.env volumes: - ./nextcloud:/config - ~/nextcloud:/data expose: - 443 fava: image: yegle/fava restart: unless-stopped container_name: fava env_file: - ./fava/fava.env volumes: - ~/fava:/bean expose: - 5000 user: 1000:1000 synapse: image: matrixdotorg/synapse restart: unless-stopped container_name: synapse env_file: - ./matrix/matrix.env volumes: - ./matrix:/data expose: - 8008 riot: image: vectorim/riot-web:v1.7.4 restart: unless-stopped container_name: riot volumes: - ./riot/config.json:/app/config.json expose: - 80 restic: image: lobaro/restic-backup-docker restart: unless-stopped container_name: restic hostname: restic-athos env_file: - ./restic/restic.env - ./restic/restic.env.secret volumes: - ~/library/:/data/library - ~/nextcloud/:/data/nextcloud - ./gitea/:/data/gitea - ./matrix/:/data/matrix - ./freshrss/:/data/freshrss - ./calibre-web:/data/calibre-web