version: "3" services: letsencrypt: image: linuxserver/letsencrypt container_name: letsencrypt restart: unless-stopped cap_add: - NET_ADMIN env_file: - ./letsencrypt/letsencrypt.env volumes: - ./letsencrypt:/config ports: - 80:80 - 443:443 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 wallabag: image: wallabag/wallabag container_name: wallabag restart: unless-stopped env_file: - ./wallabag/wallabag.env volumes: - ./wallabag/images:/var/www/wallabag/web/assets/images - ./wallabag/data:/var/www/wallabag/data expose: - 80 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-agent: image: drone/agent:1 container_name: drone-agent restart: unless-stopped env_file: - ./drone/drone-agent.env - ./drone/drone-agent.env.secret volumes: - /var/run/docker.sock:/var/run/docker.sock ports: - 3030: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 lidarr: image: linuxserver/lidarr container_name: lidarr restart: unless-stopped env_file: - lidarr/lidarr.env volumes: - ./lidarr:/config - ~/music:/music - ~/downloads:/downloads expose: - 8686 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 emby: image: linuxserver/emby container_name: emby restart: unless-stopped env_file: - ./emby/emby.env volumes: - ./emby:/config - ~/videos/shows:/data/tvshows - ~/videos/movies:/data/movies - /tmp/transcode:/transcode #optional expose: - 8096 airsonic: image: linuxserver/airsonic container_name: airsonic restart: unless-stopped env_file: - ./airsonic/airsonic.env volumes: - ./airsonic/:/config - ~/music/:/music - ~/podcasts:/podcasts - ~/playlists:/playlists expose: - 4040 navidrome: image: deluan/navidrome:latest container_name: navidrome restart: unless-stopped env_file: - navidrome/navidrome.env volumes: - ./navidrome:/data - ~/music:/music:ro expose: - 4533 komga: image: gotson/komga container_name: komga restart: unless-stopped env_file: - ./komga/komga.env volumes: - ./komga:/config - ~/comics:/books/comics - ~/manga:/books/manga - /etc/timezone:/etc/timezone:ro expose: - 8080 user: 1000:1000 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 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 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 ports: - 8008:8008