diff --git a/.env b/.env index 44537e7..be86290 100644 --- a/.env +++ b/.env @@ -120,6 +120,7 @@ AIOLISTS_HOSTNAME=aiolists.${DOMAIN?} AIOMETADATA_HOSTNAME=aiometadata.${DOMAIN?} AIOSTREAMS_HOSTNAME=aiostreams.${DOMAIN} AIOSTREMIO_HOSTNAME=aiostremio.${DOMAIN} +ALTMOUNT_HOSTNAME=altmount.${DOMAIN} ANIME_KITSU_HOSTNAME=kitsu.${DOMAIN} APPRISE_HOSTNAME=apprise.${DOMAIN} ARCANE_HOSTNAME=arcane.${DOMAIN} @@ -159,6 +160,7 @@ MINECRAFT_HOSTNAME=mc.${DOMAIN} NITTER_HOSTNAME=nitter.${DOMAIN} NOTIFIARR_HOSTNAME=notifiarr.${DOMAIN} NTFY_HOSTNAME=ntfy.${DOMAIN} +NZBDAV_HOSTNAME=nzbdav.${DOMAIN} NZBHYDRA2_HOSTNAME=nzbhydra2.${DOMAIN} OMG_TV_STREMIO_ADDON_HOSTNAME=omg-tv-addon.${DOMAIN} OVERSEERR_HOSTNAME=overseerr.${DOMAIN} @@ -200,6 +202,7 @@ TMDB_COLLECTIONS_HOSTNAME=tmdb-collections.${DOMAIN} TORBOX_MANAGER_HOSTNAME=tbm.${DOMAIN} TRAEFIK_HOSTNAME=traefik.${DOMAIN} UPTIME_KUMA_HOSTNAME=status.${DOMAIN} +USENET_STREAMER_HOSTNAME=usenet-streamer.${DOMAIN} VAULTWARDEN_HOSTNAME=vaultwarden.${DOMAIN} WALLOS_HOSTNAME=wallos.${DOMAIN} WEBSTREAMR_HOSTNAME=webstreamr.${DOMAIN} diff --git a/apps/altmount/compose.yaml b/apps/altmount/compose.yaml new file mode 100644 index 0000000..1004eea --- /dev/null +++ b/apps/altmount/compose.yaml @@ -0,0 +1,32 @@ +services: + altmount: + image: ghcr.io/javi11/altmount:latest + container_name: altmount + restart: unless-stopped + expose: + - 8080 + devices: + - /dev/fuse:/dev/fuse:rwm + cap_add: + - SYS_ADMIN + security_opt: + - apparmor:unconfined + environment: + - PUID=${PUID} + - PGID=${PGID} + - PORT=8080 + - COOKIE_DOMAIN=${ALTMOUNT_HOSTNAME} + labels: + - "traefik.enable=true" + - "traefik.http.routers.altmount.rule=Host(`${ALTMOUNT_HOSTNAME?}`)" + - "traefik.http.routers.altmount.entrypoints=websecure" + - "traefik.http.routers.altmount.tls.certresolver=letsencrypt" + - "traefik.http.routers.altmount.middlewares=authelia@docker" + extra_hosts: + - "host.docker.internal:host-gateway" + volumes: + - ./config:/config + profiles: + - altmount + - all + diff --git a/apps/authelia/compose.yaml b/apps/authelia/compose.yaml index 374a9e5..c73cdd2 100644 --- a/apps/authelia/compose.yaml +++ b/apps/authelia/compose.yaml @@ -41,11 +41,14 @@ services: ${SYNCRIBULLET_HOSTNAME}, ${TMDB_ADDON_HOSTNAME}, ${TMDB_COLLECTIONS_HOSTNAME}, + ${USENET_STREAMER_HOSTNAME}, ${WEBSTREAMR_HOSTNAME} TEMPLATE_FRESHRSS_HOSTNAME: ${FRESHRSS_HOSTNAME?} TEMPLATE_KARAKEEP_HOSTNAME: ${KARAKEEP_HOSTNAME?} TEMPLATE_ACTUAL_BUDGET_HOSTNAME: ${ACTUAL_BUDGET_HOSTNAME?} TEMPLATE_TANDOOR_HOSTNAME: ${TANDOOR_HOSTNAME?} + TEMPLATE_ALTMOUNT_HOSTNAME: ${ALTMOUNT_HOSTNAME?} + TEMPLATE_NZBDAV_HOSTNAME: ${NZBDAV_HOSTNAME?} labels: - "traefik.enable=true" - "traefik.http.routers.authelia.rule=Host(`${AUTHELIA_HOSTNAME?}`)" diff --git a/apps/authelia/config/configuration.yml b/apps/authelia/config/configuration.yml index 6f8a6fb..56910ac 100644 --- a/apps/authelia/config/configuration.yml +++ b/apps/authelia/config/configuration.yml @@ -734,6 +734,19 @@ access_control: - domain_regex: '^({{ env "TEMPLATE_STREMIO_ADDON_HOSTNAMES" | replace "," "|" | replace "." "\\." | replace " " "" }})$' policy: 'bypass' + - domain: '{{ env "TEMPLATE_NZBDAV_HOSTNAME" }}' + policy: 'bypass' + resources: + - '^/api.*$' + - '^/content.*$' + - '^/$' + + - domain: '{{ env "TEMPLATE_ALTMOUNT_HOSTNAME" }}' + policy: 'bypass' + resources: + - '^/sabnzbd\/api.*$' + - '^/webdav.*$' + ## FreshRSS API endpoints bypass authentication for RSS reader apps - domain: '{{ env "TEMPLATE_FRESHRSS_HOSTNAME" }}' resources: diff --git a/apps/cloudflare-ddns/compose.yaml b/apps/cloudflare-ddns/compose.yaml index 72f2463..08e4661 100644 --- a/apps/cloudflare-ddns/compose.yaml +++ b/apps/cloudflare-ddns/compose.yaml @@ -19,6 +19,7 @@ services: ${AIOMETADATA_HOSTNAME}, ${AIOSTREAMS_HOSTNAME}, ${AIOSTREMIO_HOSTNAME}, + ${ALTMOUNT_HOSTNAME}, ${ANIME_KITSU_HOSTNAME}, ${APPRISE_HOSTNAME}, ${ARCANE_HOSTNAME}, @@ -58,6 +59,7 @@ services: ${NITTER_HOSTNAME}, ${NOTIFIARR_HOSTNAME}, ${NTFY_HOSTNAME}, + ${NZBDAV_HOSTNAME}, ${NZBHYDRA2_HOSTNAME}, ${OMG_TV_STREMIO_ADDON_HOSTNAME}, ${OVERSEERR_HOSTNAME}, @@ -99,6 +101,7 @@ services: ${TORBOX_MANAGER_HOSTNAME}, ${TRAEFIK_HOSTNAME}, ${UPTIME_KUMA_HOSTNAME}, + ${USENET_STREAMER_HOSTNAME}, ${VAULTWARDEN_HOSTNAME}, ${WALLOS_HOSTNAME}, ${WEBSTREAMR_HOSTNAME}, diff --git a/apps/easynews-indexer/.env b/apps/easynews-indexer/.env new file mode 100644 index 0000000..cd1b46f --- /dev/null +++ b/apps/easynews-indexer/.env @@ -0,0 +1,10 @@ +PORT=8081 + +# Easynews Credentials +EASYNEWS_USER=your_easynews_username +EASYNEWS_PASS=your_easynews_password + +# Set any API Key you want here to protect access to the indexer, you would use it as the API Key when adding the indexer to the application you want to use it with (e.g. NZBHydra, AIOStreams, etc.) +NEWZNAB_API_KEY=testkey + +# Note: easynews-indexer will not be exposed publicly via Traefik. You can simply use http://easynews-indexer:8081 which is accessible by all other containers / apps. diff --git a/apps/easynews-indexer/compose.yaml b/apps/easynews-indexer/compose.yaml new file mode 100644 index 0000000..17e62bd --- /dev/null +++ b/apps/easynews-indexer/compose.yaml @@ -0,0 +1,12 @@ +services: + easynews-indexer: + image: ghcr.io/sanket9225/easynewsindexer + container_name: easynews-indexer + restart: unless-stopped + expose: + - ${PORT} + env_file: + - .env + profiles: + - easynews-indexer + - all \ No newline at end of file diff --git a/apps/nzbdav/compose.yaml b/apps/nzbdav/compose.yaml new file mode 100644 index 0000000..42eeded --- /dev/null +++ b/apps/nzbdav/compose.yaml @@ -0,0 +1,21 @@ +services: + nzbdav: + image: nzbdav/nzbdav:alpha + container_name: nzbdav + restart: unless-stopped + expose: + - 3000 + environment: + - "PUID=${PUID}" + - "PGID=${PGID}" + labels: + - "traefik.enable=true" + - "traefik.http.routers.nzbdav.rule=Host(`${NZBDAV_HOSTNAME?}`)" + - "traefik.http.routers.nzbdav.entrypoints=websecure" + - "traefik.http.routers.nzbdav.tls.certresolver=letsencrypt" + - "traefik.http.routers.nzbdav.middlewares=authelia@docker" + volumes: + - ./config:/config + profiles: + - nzbdav + - all \ No newline at end of file diff --git a/apps/usenet-streamer/.env b/apps/usenet-streamer/.env new file mode 100644 index 0000000..2808c79 --- /dev/null +++ b/apps/usenet-streamer/.env @@ -0,0 +1,38 @@ +# For the most up-to-date documentation and variables, see https://github.com/Sanket9225/UsenetStreamer/#environment-variables + +# ------- USENET STREAMER CONFIGURATION ------- + +ADDON_BASE_URL=https://${USENET_STREAMER_HOSTNAME?} +# Set a token here which protects access to the addon. Whatever you set here will be used as a part of the manifest you should install to Stremio / AIOStreams. +# e.g. with 'change-me' as the secret the manifest url will be: https://${USENET_STREAMER_HOSTNAME?}/change-me/manifest.json +ADDON_SHARED_SECRET=change-me + + +# ------- NZB DAV CONFIGURATION ------- + +# These are the details for your nzbDAV instance which Usenet Streamer needs. +NZBDAV_URL=http://nzbdav:3000 +NZBDAV_WEBDAV_URL=http://nzbdav:3000 + +# Obtain this from the Web UI of nzbDAV under Settings -> SABnzbd -> API Key +NZBDAV_API_KEY= +# Obtain your WebDAV username and password from nzbDAV under Settings -> WebDAV -> WebDAV Username / Password +# (Do not use your nzbDAV login credentials here, unless you set the WebDAV username and password to be the same as your login credentials) +NZBDAV_WEBDAV_USER= +NZBDAV_WEBDAV_PASSWORD= + + +# ------- INDEXER MANAGER CONFIGURATION ------- + + +# These are the details of the indexer manager you want Usenet Streamer to use to get NZB files from indexers. +# You can choose either: prowlarr or nzbhydra2 +INDEXER_MANAGER=prowlarr +INDEXER_MANAGER_URL=http://prowlarr:9696 +# Provide the API key for your indexer manager here. You can get this from the Web UI of your indexer manager. +INDEXER_MANAGER_API_KEY= +# Control which indexers are used. +# For Prowlarr, provide the numeric Indexer IDs separated by commas. +# For NZBHydra2, provide the names of the indexers as configured in NZBHydra2 separated by commas. +# Leave empty to use all configured indexers. +INDEXER_MANAGER_INDEXERS= diff --git a/apps/usenet-streamer/compose.yaml b/apps/usenet-streamer/compose.yaml new file mode 100644 index 0000000..dc5522b --- /dev/null +++ b/apps/usenet-streamer/compose.yaml @@ -0,0 +1,19 @@ +services: + usenet-streamer: + image: ghcr.io/sanket9225/usenetstreamer:latest + container_name: usenet_streamer + restart: unless-stopped + expose: + - 7000 + env_file: + - .env + labels: + - "traefik.enable=true" + - "traefik.http.routers.usenet-streamer.rule=Host(`${USENET_STREAMER_HOSTNAME?}`)" + - "traefik.http.routers.usenet-streamer.entrypoints=websecure" + - "traefik.http.routers.usenet-streamer.tls.certresolver=letsencrypt" + - "traefik.http.routers.usenet-streamer.middlewares=authelia@docker" + - "traefik.http.services.usenet-streamer.loadbalancer.server.port=7000" + profiles: + - usenet-streamer + - all \ No newline at end of file diff --git a/compose.yaml b/compose.yaml index d2404bd..bf72f04 100644 --- a/compose.yaml +++ b/compose.yaml @@ -6,6 +6,7 @@ include: - apps/aiometadata/compose.yaml - apps/aiostreams/compose.yaml - apps/aiostremio/compose.yaml + - apps/altmount/compose.yaml - apps/anime-kitsu/compose.yaml - apps/apprise/compose.yaml - apps/arcane/compose.yaml @@ -24,6 +25,7 @@ include: - apps/discord-tickets/compose.yaml - apps/dockge/compose.yaml - apps/dozzle/compose.yaml + - apps/easynews-indexer/compose.yaml - apps/easynews-plus/compose.yaml - apps/easynews-plus-plus/compose.yaml - apps/fivefilters-full-text-rss/compose.yaml @@ -49,6 +51,7 @@ include: - apps/nitter/compose.yaml - apps/notifiarr/compose.yaml - apps/ntfy/compose.yaml + - apps/nzbdav/compose.yaml - apps/nzbhydra2/compose.yaml - apps/omg-tv-addon/compose.yaml - apps/overseerr/compose.yaml @@ -92,6 +95,7 @@ include: - apps/traefik/compose.yaml - apps/tweakio/compose.yaml - apps/uptime-kuma/compose.yaml + - apps/usenet-streamer/compose.yaml - apps/vaultwarden/compose.yaml - apps/wallos/compose.yaml - apps/warp/compose.yaml