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 # Recipe media should not be served by GUnicorn, don't want to setup Nginx - ./recipes/mediafiles:/opt/recipes/media - ./recipes/staticfiles:/opt/recipes/static 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 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 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 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 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 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 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 ports: - 8080:80 recipes: image: vabene1111/recipes restart: unless-stopped container_name: recipes env_file: - ./recipes/recipes.env - ./recipes/recipes.env.secret volumes: - ./recipes/staticfiles:/opt/recipes/staticfiles - ./recipes/mediafiles:/opt/recipes/mediafiles depends_on: - recipes_db recipes_db: image: postgres:11-alpine restart: unless-stopped container_name: recipes_db volumes: - ./recipes/postgresql:/var/lib/postgresql/data env_file: - ./recipes/recipes.env - ./recipes/recipes.env.secret jupyter: image: jupyter/datascience-notebook:lab-2.1.5 restart: unless-stopped container_name: jupyter volumes: - ./jupyter/notebooks:/home/jovyan/ - ./jupyter/hooks/:/usr/local/bin/start-notebook.d/ environment: - JUPYTER_ENABLE_LAB=yes - NB_UID=1000 - NB_GID=1000 - CHOWN_HOME=yes - GRANT_SUDO=yes - RESTARTABLE=yes expose: - 8888 user: root