Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Hughlander
May 11, 2005

Jerk McJerkface posted:

Just a quick update. I ended up installing Traefik 2.1 with forward auth leveraging Google Oauth to protect all my containers. It's all working very well. I know maybe it's not the best to open up 443 to the world, but all the containers that matter are protected by Oauth. The ones that Oauth doesn't work with (like the calibre container that uses Guac) I just whiltelist to local IPs only.

I think that it's a reasonable enough solution. Maybe I'm susceptible to DDOS, but that'd happen if I only had Ombi open anyways.

What I do and works with guac is add http basic auth over https before the reverse proxy in nginx.

Adbot
ADBOT LOVES YOU

cr0y
Mar 24, 2005



You could also deploy the openVPN appliance which simplifies all that poo poo. Not sure exactly what you are trying to achieve but it totally limits your external attack surface to a single port and supports MFA and all that jazz.

sedative
Mar 20, 2003

‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ :allears:
Newshosting is on sale for $45.48 ($3.79 a month) https://controlpanel.newshosting.com/signup/index.php?promo=loving-u-senet

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

cr0y posted:

You could also deploy the openVPN appliance which simplifies all that poo poo. Not sure exactly what you are trying to achieve but it totally limits your external attack surface to a single port and supports MFA and all that jazz.

Yeah, the main thing is I need it to pass Mrs McJerkface's ease of use. Basically she needs access to LazyLibrarian and Ombi, so I just open them up with Google Oauth ( also Ombi does a more secure auth itself). If she has to futz around with a vpn it'll be a pain.

priznat
Jul 7, 2009

Let's get drunk and kiss each other all night.

Yeah I was wondering about doing this, are they pretty good?

Would also need a good indexer. I’m just thinking about getting a nzb hooked into the sonarr/radarr on my unraid setup.

Matt Zerella
Oct 7, 2002

Norris'es are back baby. It's good again. Awoouu (fox Howl)

Jerk McJerkface posted:

Yeah, the main thing is I need it to pass Mrs McJerkface's ease of use. Basically she needs access to LazyLibrarian and Ombi, so I just open them up with Google Oauth ( also Ombi does a more secure auth itself). If she has to futz around with a vpn it'll be a pain.

Legit shocked anyone's gotten LL working properly.

Rooted Vegetable
Jun 1, 2002

Jerk McJerkface posted:

Just a quick update. I ended up installing Traefik 2.1 with forward auth leveraging Google Oauth to protect all my containers.

There any guides etc to doing that? I'm still on Traefik 1.x and would like to try out 2.x, especially if I can do exactly that. Sounds awesome.

sedative
Mar 20, 2003

‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ :allears:

priznat posted:

Yeah I was wondering about doing this, are they pretty good?

Would also need a good indexer. I’m just thinking about getting a nzb hooked into the sonarr/radarr on my unraid setup.

They're fine. They have the longest retention but of course a bunch of old stuff has been removed because it wasn't obfuscated. I have Newshosting and almost never use any of my blocks, but that's due to using good indexers.


Frugal is giving away their service for free until the 16th and then "you will receive an email with a great price to continue on if you choose to" https://billing.frugalusenet.com/signup/freelove

They give you 2,000 days of retention plus access to a separate backbone on usenet.farm. You can get their service now for 40 bucks. Maybe their new deal will be even better.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Heners_UK posted:

There any guides etc to doing that? I'm still on Traefik 1.x and would like to try out 2.x, especially if I can do exactly that. Sounds awesome.

I couldn't find a really good guide for V2, but this is a start. It gives you traefik, the oauth container, and then a sample app (just a webpage that gives you some words) that you can auth against. This also protects the Traefik dashboard behind auth too.

code:
version: '3'
services:
  traefik:
    container_name: traefik
    env_file:
       - ./config/traefik/.godaddy.env
    image: "traefik:v2.1"
    command:
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --providers.docker=true
      - --api
      - --log.level=DEBUG
      - --certificatesresolvers.leresolver.acme.email=email@gmail.com
      - --certificatesresolvers.leresolver.acme.storage=/leresolver/acme.json
      - --certificatesresolvers.leresolver.acme.dnsChallenge=true
      - --certificatesresolvers.leresolver.acme.dnsChallenge.provider=godaddy
      - --certificatesresolvers.leresolver.acme.dnsChallenge.delayBeforeCheck=0
    labels:
      - traefik.enable=true
      - traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
      - traefik.http.routers.http-catchall.entrypoints=web
      - traefik.http.routers.http-catchall.middlewares=redirect-to-https
      - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
      - traefik.http.routers.traefik-secure.entrypoints=websecure
      - traefik.http.routers.traefik-secure.rule=Host(`dashboard.domain.com`)
      - traefik.http.routers.traefik-secure.tls.certresolver=leresolver
      - traefik.http.routers.traefik-secure.service=api@internal
      - traefik.http.routers.traefik-secure.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User
  oauth:
    container_name: oauth
    image: thomseddon/traefik-forward-auth
    restart: always
    environment:
      - PROVIDERS_GOOGLE_CLIENT_ID=
      - PROVIDERS_GOOGLE_CLIENT_SECRET=
      - SECRET=
      - COOKIE_DOMAIN=domain.com
      - INSECURE_COOKIE=false
      - AUTH_HOST=oauth.domain.com
      - URL_PATH=/_oauth
      - WHITELIST=emails to allow, comma separate
      - LOG_LEVEL=debug
      - LOG_FORMAT=text
    labels:
      - traefik.enable=true
      - traefik.http.routers.oauth-secure.entrypoints=websecure
      - traefik.http.routers.oauth-secure.tls=true
      - traefik.http.routers.oauth-secure.rule=Host(`oauth.domain.com`)
      - traefik.http.routers.oauth-secure.tls.certresolver=leresolver
      - traefik.http.routers.oauth-secure.middlewares=oauth

      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User

      - traefik.http.routers.oauth-secure.service=oauth-secure
    ## HTTP Services
      - traefik.http.services.oauth-secure.loadbalancer.server.port=4181
  my-app:
    image: containous/whoami:v1.3.0
    labels:
      - traefik.http.routers.my-app.rule=Host(`myapp.domain.com`)
      - traefik.http.routers.my-app.entrypoints=websecure
      - traefik.http.routers.my-app.tls.certresolver=leresolver
      - traefik.http.routers.my-app.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User

You need to setup your Oauth with google, this guy has a good guide for traefik 1.7, but it doesn't quite match 2.0, however it has all the Google stuff pretty well laid out. Tomorrow I'll have more time and I can elaborate some more.

https://www.smarthomebeginner.com/google-oauth-with-traefik-docker/

Matt Zerella
Oct 7, 2002

Norris'es are back baby. It's good again. Awoouu (fox Howl)

Jerk McJerkface posted:

I couldn't find a really good guide for V2, but this is a start. It gives you traefik, the oauth container, and then a sample app (just a webpage that gives you some words) that you can auth against. This also protects the Traefik dashboard behind auth too.

code:
version: '3'
services:
  traefik:
    container_name: traefik
    env_file:
       - ./config/traefik/.godaddy.env
    image: "traefik:v2.1"
    command:
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --providers.docker=true
      - --api
      - --log.level=DEBUG
      - --certificatesresolvers.leresolver.acme.email=email@gmail.com
      - --certificatesresolvers.leresolver.acme.storage=/leresolver/acme.json
      - --certificatesresolvers.leresolver.acme.dnsChallenge=true
      - --certificatesresolvers.leresolver.acme.dnsChallenge.provider=godaddy
      - --certificatesresolvers.leresolver.acme.dnsChallenge.delayBeforeCheck=0
    labels:
      - traefik.enable=true
      - traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
      - traefik.http.routers.http-catchall.entrypoints=web
      - traefik.http.routers.http-catchall.middlewares=redirect-to-https
      - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
      - traefik.http.routers.traefik-secure.entrypoints=websecure
      - traefik.http.routers.traefik-secure.rule=Host(`dashboard.domain.com`)
      - traefik.http.routers.traefik-secure.tls.certresolver=leresolver
      - traefik.http.routers.traefik-secure.service=api@internal
      - traefik.http.routers.traefik-secure.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User
  oauth:
    container_name: oauth
    image: thomseddon/traefik-forward-auth
    restart: always
    environment:
      - PROVIDERS_GOOGLE_CLIENT_ID=
      - PROVIDERS_GOOGLE_CLIENT_SECRET=
      - SECRET=
      - COOKIE_DOMAIN=domain.com
      - INSECURE_COOKIE=false
      - AUTH_HOST=oauth.domain.com
      - URL_PATH=/_oauth
      - WHITELIST=emails to allow, comma separate
      - LOG_LEVEL=debug
      - LOG_FORMAT=text
    labels:
      - traefik.enable=true
      - traefik.http.routers.oauth-secure.entrypoints=websecure
      - traefik.http.routers.oauth-secure.tls=true
      - traefik.http.routers.oauth-secure.rule=Host(`oauth.domain.com`)
      - traefik.http.routers.oauth-secure.tls.certresolver=leresolver
      - traefik.http.routers.oauth-secure.middlewares=oauth

      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User

      - traefik.http.routers.oauth-secure.service=oauth-secure
    ## HTTP Services
      - traefik.http.services.oauth-secure.loadbalancer.server.port=4181
  my-app:
    image: containous/whoami:v1.3.0
    labels:
      - traefik.http.routers.my-app.rule=Host(`myapp.domain.com`)
      - traefik.http.routers.my-app.entrypoints=websecure
      - traefik.http.routers.my-app.tls.certresolver=leresolver
      - traefik.http.routers.my-app.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User

You need to setup your Oauth with google, this guy has a good guide for traefik 1.7, but it doesn't quite match 2.0, however it has all the Google stuff pretty well laid out. Tomorrow I'll have more time and I can elaborate some more.

https://www.smarthomebeginner.com/google-oauth-with-traefik-docker/

I finally found something I don't like about Unraid. Doing all of this poo poo through the web interface is miserable.

disaster pastor
May 1, 2007


Matt Zerella posted:

Legit shocked anyone's gotten LL working properly.

This was almost word-for-word my reaction.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Matt Zerella posted:

Legit shocked anyone's gotten LL working properly.

:shrug:



I downloaded a 10000000 book scifi bundle, so don't judge me.

Matt Zerella
Oct 7, 2002

Norris'es are back baby. It's good again. Awoouu (fox Howl)

Jerk McJerkface posted:

:shrug:



I downloaded a 10000000 book scifi bundle, so don't judge me.

No judging. I've poked at it about 5 times and given up every single time and just manually search now. Between ebooks not having a decent naming standard and LL being insanely slow and obtuse I just gave up.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
My docker stack:

Everything is served by a domain name, protected by Google Oauth. The only thing I can't get working is Calibre, which is embedded in Guac, but I can get to it on the direct ports if I have to.

That Works
Jul 22, 2006

Every revolution evaporates and leaves behind only the slime of a new bureaucracy


Decairn posted:

Download the tag "preview" to get v3

So uh, I am unclear on what this means / how to do this. I have linuxserver sonarr docker installed on my unraid server and googling around doesn't seem to really provide instructions on where / how to download or change tags to preview etc.

Closest thing I found was in the Sonarr V2 UI to go to settings/general/ and in the list at the bottom under "Updates" there's a field titled "Branch" and I changed this text to 'preview' and restarted / checked for updates but its still just v2. Sorry to bother but am just kinda stuck on how to update this.

BeastOfExmoor
Aug 19, 2003

I will be gone, but not forever.

That Works posted:

So uh, I am unclear on what this means / how to do this. I have linuxserver sonarr docker installed on my unraid server and googling around doesn't seem to really provide instructions on where / how to download or change tags to preview etc.

Closest thing I found was in the Sonarr V2 UI to go to settings/general/ and in the list at the bottom under "Updates" there's a field titled "Branch" and I changed this text to 'preview' and restarted / checked for updates but its still just v2. Sorry to bother but am just kinda stuck on how to update this.

It has to happen in when you create the docker image. They make it really difficult to figure out what to change to get v3, but here is a portion of my docker-compose YML file that shows adding ":preview" the the end of the image name. Presumably the "tag" is added in a similar way if you're creating from the command line.

code:
  sonarr:
    image: linuxserver/sonarr:preview
    container_name: sonarr

Nullset
Apr 21, 2010

In the Unraid webui, go to the Docker tab, click the Sonarr icon then Edit. Add :preview to the end of the Repository entry.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Jerk McJerkface posted:

Everything is served by a domain name, protected by Google Oauth. The only thing I can't get working is Calibre, which is embedded in Guac, but I can get to it on the direct ports if I have to.

Docker update, I got it all working. If anyone wants a my docker file I'll post it, I'm going through it now and santizing it (putting passwords in a secret file etc.

Jesse Iceberg
Jan 7, 2012

Jerk McJerkface posted:

Docker update, I got it all working. If anyone wants a my docker file I'll post it, I'm going through it now and santizing it (putting passwords in a secret file etc.

Yeah, if you could post the sanitised Docker compose file that'd be awesome.

I've been using the jwilder Nginx reverse proxy approach for a while, and slapping client cert auth in front for some additional protection, but this Traefik + Oauth2 + 2FA new hotness is looking better.

That Works
Jul 22, 2006

Every revolution evaporates and leaves behind only the slime of a new bureaucracy


Nullset posted:

In the Unraid webui, go to the Docker tab, click the Sonarr icon then Edit. Add :preview to the end of the Repository entry.



Thank you! Jesus I looked all over before coming back here to ask.

E: I was getting messed up also because I was using the binhex-sonarr image and when I 1st tried to do this it ruined it.

That Works fucked around with this message at 13:53 on Feb 15, 2020

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Jesse Iceberg posted:

Yeah, if you could post the sanitised Docker compose file that'd be awesome.

I've been using the jwilder Nginx reverse proxy approach for a while, and slapping client cert auth in front for some additional protection, but this Traefik + Oauth2 + 2FA new hotness is looking better.

I'm traveling at the moment, but it's really cool. The best part is that I can have 443 open so I can reach it all publically, but every thing is protected by a secure auth. Most of the apps like Sonarr and Radarr have logins but can probably easy get hacked, so I like the layers. A couple of my own apps that I run I have a whitelist in front of it so it's only reachable from internal IPs.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
I am having a weird issue, I setup an A record for *.domain.com to point to my IP in godaddy, but all the subdomains don't resolve unless I add a specific CNAME for each. Strange.

Former Human
Oct 15, 2001

Is there a master list anywhere of what newsservices carry which groups? Giganews has a search feature on their website but lol if you pay for Giganews. Astraweb had a feature like this on their site too but I'm pretty sure it was fake because you could type in any nonsense and it would come back "yes we carry it."

cr0y
Mar 24, 2005



If I already have a full fledged sab/sonarr/radarr/nzbhydra/indexers setup and running does spotnet add any additional value?

Volguus
Mar 3, 2009

cr0y posted:

If I already have a full fledged sab/sonarr/radarr/nzbhydra/indexers setup and running does spotnet add any additional value?

Eh, don't think so. I installed mine after a very popular indexer went offline about 10 years or so ago and I was basically left with nothing for a while. I used to use it a lot until I got myself some better indexers. Nowadays, not so much. I have it still running though and occasionally nzbhydra grabs from it.

Fano
Oct 20, 2010
I'm getting a lot more failures after switching from NewsHosting to NewsDemon + BulkNews, I also messed with my profiles a bunch to prefer x265 and x264 over everything else.

I wonder if it's related to profiles or if NewsDemon is just a shittier provider.

Tea Bone
Feb 18, 2011

I'm going for gasps.
Is there a setting in NZBget to just leave failed downloads inside the intermittent directory rather than delete them?

I had a bunch of movies fail over night during unpacking as the media drive wasn't available and they're nowhere to be found this morning. I'm sure I had it set on my old server when this happened I could just go in and manually move them to the correct directory?

Henrik Zetterberg
Dec 7, 2007

I thought having Radarr automatically upgrade my 1080p stuff to 4K was rad as hell until I realized that my 10ish yo Ivy Bridge Plex server PC couldn’t keep up with transcoding them from 4K -> 1080p for my smaller tv without tons of buffering. gently caress.

sedative
Mar 20, 2003

‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ :allears:

Fano posted:

I'm getting a lot more failures after switching from NewsHosting to NewsDemon + BulkNews, I also messed with my profiles a bunch to prefer x265 and x264 over everything else.

I wonder if it's related to profiles or if NewsDemon is just a shittier provider.

NewsDemon just resells Newshosting's service, so it shouldn't be that. You're getting the same files from the same servers.

Incessant Excess
Aug 15, 2005

Cause of glitch:
Pretentiousness

Henrik Zetterberg posted:

I thought having Radarr automatically upgrade my 1080p stuff to 4K was rad as hell until I realized that my 10ish yo Ivy Bridge Plex server PC couldn’t keep up with transcoding them from 4K -> 1080p for my smaller tv without tons of buffering. gently caress.

You might want to try Plex pass for a month, it allows for hardware accelerated transcoding which should make those 4k files playable.

Vykk.Draygo
Jan 17, 2004

I say salesmen and women of the world unite!

Incessant Excess posted:

You might want to try Plex pass for a month, it allows for hardware accelerated transcoding which should make those 4k files playable.

This made me check to see how Emby handles hardware transcoding, and they require a paid subscription too! Wild that everyone makes you pay for hardware transcoding even locally.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
As mentioned before, here is my sanitized docker file. Very little of it is in external config files, but I'm starting to break it off and do it that way instead, but this is fully functioning.

code:

version: '3'
services:
  heimdall:
    image: linuxserver/heimdall
    container_name: heimdall
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    ports:
      - 8980:80
      - 8443:443
    volumes:
      - ./config/heimdall:/config
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.http.routers.heimdall.rule=Host(`heimdall.yourdomain.com`)
      - traefik.http.routers.heimdall.entrypoints=websecure
      - traefik.http.routers.heimdall.tls.certresolver=leresolver
      - traefik.http.routers.heimdall.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User
    networks:
      usenet:
      backend:
  traefik:
    container_name: traefik 
    env_file:
       # file contains Godaddy API keys
       - ./config/traefik/.godaddy.env
    image: "traefik:v2.1"       
    command:
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --providers.docker=true
      - --api
      - --log.level=DEBUG
      - --certificatesresolvers.leresolver.acme.email=your.email@email.com
      - --certificatesresolvers.leresolver.acme.storage=/leresolver/acme.json
      - --certificatesresolvers.leresolver.acme.dnsChallenge=true
      - --certificatesresolvers.leresolver.acme.dnsChallenge.provider=godaddy
      - --certificatesresolvers.leresolver.acme.dnsChallenge.delayBeforeCheck=0
      - --serverstransport.insecureskipverify=true
    labels:
      - traefik.enable=true
      - traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
      - traefik.http.routers.http-catchall.entrypoints=web
      - traefik.http.routers.http-catchall.middlewares=redirect-to-https
      - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
      - traefik.http.routers.traefik-secure.entrypoints=websecure
      - traefik.http.routers.traefik-secure.rule=Host(`dashboard.yourdomain.com`)
      - traefik.http.routers.traefik-secure.tls.certresolver=leresolver
      - traefik.http.routers.traefik-secure.service=api@internal
      - traefik.http.routers.traefik-secure.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User
    ports:
      - "443:443"
      - "80:80"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./config/traefik/leresolver:/leresolver
    networks:
      usenet:
      backend:
        aliases:
          - traefik-app
  oauth:
    container_name: oauth
    image: thomseddon/traefik-forward-auth
    restart: always
    environment:
      # next three come from google's API auth setup
      - PROVIDERS_GOOGLE_CLIENT_ID=asdfasdfasdf
      - PROVIDERS_GOOGLE_CLIENT_SECRET=Rasdfasdfasdf
      - SECRET=zsdfasdfasdfasdf                  
      - COOKIE_DOMAIN=yourdomain.com
      - INSECURE_COOKIE=false
      - AUTH_HOST=oauth.yourdomain.com
      - URL_PATH=/_oauth
      # list of emails that can pass google auth login
      - WHITELIST=your.email@email.com,other.email@allowed.com
      - LOG_LEVEL=debug
      - LOG_FORMAT=text
    labels:
      - traefik.enable=true
      - traefik.http.routers.oauth-secure.entrypoints=websecure
      - traefik.http.routers.oauth-secure.tls=true
      - traefik.http.routers.oauth-secure.rule=Host(`oauth.yourdomain.com`)
      - traefik.http.routers.oauth-secure.tls.certresolver=leresolver
      - traefik.http.routers.oauth-secure.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User
      - traefik.http.routers.oauth-secure.service=oauth-secure
    ## HTTP Services
      - traefik.http.services.oauth-secure.loadbalancer.server.port=4181
    networks:
      usenet:
      backend:
  my-app:
    # simple app used for testing, just returns some computer information
    image: containous/whoami:v1.3.0
    container_name: my-app
    labels:
      - traefik.http.routers.my-app.rule=Host(`myapp.yourdomain.com`)
      - traefik.http.routers.my-app.entrypoints=websecure
      - traefik.http.routers.my-app.tls.certresolver=leresolver
      - traefik.http.routers.my-app.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User
    networks:
      backend:
  plex:
    image: linuxserver/plex
    container_name: plex
    network_mode: host
    environment:
      - PUID=1000
      - PGID=1000
      - VERSION=docker
      - UMASK_SET=022 #optional
      - PLEX_CLAIM=claim-xxxxxxxxxxx #optional
    volumes:
      - /mnt/vault/docker/config/plexmediaserver:/config
      - /mnt/vault/Shares/media:/media
    restart: unless-stopped
  ddclient:
    image: linuxserver/ddclient
    container_name: ddclient
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - /mnt/vault/docker/config/ddclient:/config
    restart: unless-stopped  
  calibre:
    image: linuxserver/calibre
    container_name: calibre
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - GUAC_USER=user #optional
      - GUAC_PASS=dddddddddddddddddddddddddddddddd #optional
    volumes:
      - /mnt/vault/Shares/media/Books:/config
      - /mnt/vault/Shares/sabnzbd/downloads:/downloads
    ports:
      - 8180:8080
      - 8181:8081
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.http.routers.calibre.entrypoints=websecure
      - traefik.http.routers.calibre.tls=true
      - traefik.http.routers.calibre.rule=Host(`calibre.yourdomain.com`)
      - traefik.http.routers.calibre.tls.certresolver=leresolver
      - traefik.http.services.calibre.loadbalancer.server.port=8080
      - traefik.http.routers.calibre.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User
    networks:
      usenet:
        aliases:
          - calibre-app
  calibre-web:
    image: linuxserver/calibre-web
    container_name: calibre-web
    ports:
      - 8083:8080
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - DOCKER_MODS=linuxserver/calibre-web:calibre
    labels:
      - traefik.enable=true
      - traefik.http.routers.calibre-web.entrypoints=websecure
      - traefik.http.routers.calibre-web.tls=true
      - traefik.http.routers.calibre-web.rule=Host(`books.yourdomain.com`)
      - traefik.http.routers.calibre-web.tls.certresolver=leresolver
      - traefik.http.services.calibre-web.loadbalancer.server.port=8083
      - traefik.http.routers.calibre-web.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User
    volumes:
      - /mnt/vault/docker/config/calibre-web:/config
      - /mnt/vault/Shares/media/Books:/books  
    restart: unless-stopped
    networks:
      usenet:
        aliases:
          - calibre-web-app
  locatebot:                      
    # my own custom app, don't worry about it
    build: /mnt/vault/bots/locatebot   
    restart: unless-stopped
    container_name: locatebot       
    labels:
      - traefik.http.routers.locatebot.rule=Host(`locatebot.yourdomain.com`)
      - traefik.http.services.locatebot.loadbalancer.server.port=5000
      - traefik.http.routers.locatebot.entrypoints=websecure
      - traefik.http.routers.locatebot.tls.certresolver=leresolver
      - traefik.http.routers.locatebot.middlewares=whitelist
      # doesn't support oauth, so it's locked down by IP
      - traefik.http.middlewares.whitelist.ipwhitelist.sourcerange=127.0.0.1/32, 10.0.0.0/24
    environment:
      - CONFIGDIR=/config
      - LOGDIR=/logfiles
    volumes:
      - /mnt/vault/docker/config/locatebot/config:/config
      - /mnt/vault/docker/config/locatebot/logfiles:/logfiles
      - /mnt/vault/bots/locatebot/resources/needles:/app/needles
      - /mnt/vault/bots/locatebot/resources/code:/app/code    
    networks:                     
      backend:
  lazylibrarian:
    image: linuxserver/lazylibrarian
    container_name: lazylibrarian
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - DOCKER_MODS=linuxserver/calibre-web:calibre #optional
    volumes:
      - ./config/lazylibrarian:/config
      - /mnt/vault/Shares/sabnzbd/downloads/books:/downloads
      - /mnt/vault/Shares/media/Books:/books
    labels:
      - traefik.enable=true
      - traefik.http.routers.lazylibrarian.entrypoints=websecure
      - traefik.http.routers.lazylibrarian.tls=true
      - traefik.http.routers.lazylibrarian.rule=Host(`lazylibrarian.yourdomain.com`)
      - traefik.http.routers.lazylibrarian.tls.certresolver=leresolver
      - traefik.http.services.lazylibrarian.loadbalancer.server.port=5299
      - traefik.http.routers.lazylibrarian.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User    
    ports:
      - 5299:5299
    restart: unless-stopped
    networks:
      usenet:
        aliases:
          - lazylibrarian-app
  nzbhydra2:
    image: linuxserver/hydra2
    container_name: nzbhydra2
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - ./config/nzbhydra2:/config
      - /mnt/vault/Shares/newz/downloads:/downloads
    ports:
      - 5076:5076
    labels:
      - traefik.enable=true
      - traefik.http.routers.nzbhydra2.entrypoints=websecure
      - traefik.http.routers.nzbhydra2.tls=true
      - traefik.http.routers.nzbhydra2.rule=Host(`nzbhydra2.yourdomain.com`)
      - traefik.http.routers.nzbhydra2.tls.certresolver=leresolver
      - traefik.http.services.nzbhydra2.loadbalancer.server.port=5076
      - traefik.http.routers.nzbhydra2.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User 
    restart: unless-stopped
    networks:
      usenet:
        aliases:
          - hydra2-app   
  jackett:
    image: linuxserver/jackett
    container_name: jackett
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    labels:
      - traefik.enable=true
      - traefik.http.routers.jackett.entrypoints=websecure
      - traefik.http.routers.jackett.tls=true
      - traefik.http.routers.jackett.rule=Host(`jackett.yourdomain.com`)
      - traefik.http.routers.jackett.tls.certresolver=leresolver
      - traefik.http.services.jackett.loadbalancer.server.port=9117
      - traefik.http.routers.jackett.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User    
    volumes:
      - ./config/jackett:/config
      - /mnt/vault/Shares/jackett/downloads:/downloads
    ports:
      - 9117:9117
    restart: unless-stopped
    networks:
      usenet:
        aliases:
          - jackett-app
  ombi:
    image: linuxserver/ombi
    container_name: ombi
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - ./config/ombi:/config
    ports:
      - 3579:3579
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.http.routers.ombi.entrypoints=websecure
      - traefik.http.routers.ombi.tls=true
      - traefik.http.routers.ombi.rule=Host(`ombi.yourdomain.com`)
      - traefik.http.routers.ombi.tls.certresolver=leresolver
      - traefik.http.services.ombi.loadbalancer.server.port=3579
      - traefik.http.routers.ombi.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User        
    networks:
      usenet:
        aliases:
          - ombi-app   
  portainer:
    image: portainer/portainer
    restart: always
    container_name: portainer
    ports:
      - 9000:9000
    command: -H unix:///var/run/docker.sock
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./config/portainer:/data
    labels:
      - traefik.enable=true
      - traefik.http.routers.portainer.entrypoints=websecure
      - traefik.http.routers.portainer.tls=true
      - traefik.http.routers.portainer.rule=Host(`portainer.yourdomain.com`)
      - traefik.http.routers.portainer.tls.certresolver=leresolver
      - traefik.http.services.portainer.loadbalancer.server.port=9000
      - traefik.http.routers.portainer.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User          
    networks:
      backend:
      usenet:  
  radarr:
    image: linuxserver/radarr
    container_name: radarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - UMASK_SET=022 #optional
    volumes:
      - ./config/radarr:/config
      - /mnt/vault/Shares/media/movies:/movies
      - /mnt/vault/Shares/sabnzbd/downloads:/downloads
    ports:
      - 7878:7878
    labels:
      - traefik.enable=true
      - traefik.http.routers.radarr.entrypoints=websecure
      - traefik.http.routers.radarr.tls=true
      - traefik.http.routers.radarr.rule=Host(`radarr.yourdomain.com`)
      - traefik.http.routers.radarr.tls.certresolver=leresolver
      - traefik.http.services.radarr.loadbalancer.server.port=7878
      - traefik.http.routers.radarr.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User          
    restart: unless-stopped
    networks:
      usenet:
        aliases:
          - radarr-app
  sabnzbd:
    image: linuxserver/sabnzbd
    container_name: sabnzbd
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - ./config/sabnzbd:/config
      - /mnt/vault/Shares/alts:/alts
      - /mnt/vault/Shares/sabnzbd/downloads:/downloads
      - /mnt/vault/Shares/sabnzbd/incomplete-downloads:/incomplete-downloads
    labels:
      - traefik.enable=true
      - traefik.http.routers.sabnzbd.entrypoints=websecure
      - traefik.http.routers.sabnzbd.tls=true
      - traefik.http.routers.sabnzbd.rule=Host(`sabnzbd.yourdomain.com`)
      - traefik.http.routers.sabnzbd.tls.certresolver=leresolver
      - traefik.http.services.sabnzbd.loadbalancer.server.port=8080
      - traefik.http.routers.sabnzbd.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User          
    restart: unless-stopped
    networks:
      usenet:
        aliases:
          - sabnzbd-app
  sonarr:
    image: linuxserver/sonarr
    container_name: sonarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - UMASK_SET=022 #optional
    volumes:
      - ./config/sonarr:/config
      - /mnt/vault/Shares/media/tv:/tv
      - /mnt/vault/Shares/media/tv.backup:/tv.backup
      - /mnt/vault/Shares/media/tv_old:/tv_old
      - /mnt/vault/Shares/sabnzbd/downloads:/downloads
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.http.routers.sonarr.entrypoints=websecure
      - traefik.http.routers.sonarr.tls=true
      - traefik.http.routers.sonarr.rule=Host(`sonarr.yourdomain.com`)
      - traefik.http.routers.sonarr.tls.certresolver=leresolver
      - traefik.http.services.sonarr.loadbalancer.server.port=8989
      - traefik.http.routers.sonarr.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User          
    networks:
      usenet:
        aliases:
          - sonarr-app
  transmission:
    image: linuxserver/transmission
    container_name: transmission
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - TRANSMISSION_WEB_HOME=/transmission-web-control/           
      - USER=admin             
      - PASS=buckethead           
    volumes:
      - ./config/transmission/config:/config
      - ./config/transmission/watch:/watch  
      - /mnt/vault/Shares/alts:/downloads
      - /mnt/vault/Shares/media:/media
    ports:
      - 9091:9091
      - 51413:51413
      - 51413:51413/udp
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.http.routers.transmission.entrypoints=websecure
      - traefik.http.routers.transmission.tls=true
      - traefik.http.routers.transmission.rule=Host(`transmission.yourdomain.com`)
      - traefik.http.routers.transmission.tls.certresolver=leresolver
      - traefik.http.services.transmission.loadbalancer.server.port=9091
      - traefik.http.routers.transmission.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User          
    networks:
      usenet:
        aliases:
          - transmission-app
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    ports:
      - 53:53/tcp
      - 53:53/udp
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - WEBPASSWORD=
    volumes:
      - ./config/pihole/etc-pihole/:/etc/pihole/
      - ./config/pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/
    dns:
      - 127.0.0.1
      - 1.1.1.1
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.http.routers.pihole.entrypoints=websecure
      - traefik.http.routers.pihole.tls=true
      - traefik.http.routers.pihole.rule=Host(`pihole.yourdomain.com`)
      - traefik.http.routers.pihole.tls.certresolver=leresolver
      - traefik.http.services.pihole.loadbalancer.server.port=80
      - traefik.http.routers.pihole.middlewares=oauth
      - traefik.http.middlewares.oauth.forwardauth.trustForwardHeader=true
      - traefik.http.middlewares.oauth.forwardauth.Address=http://oauth:4181
      - traefik.http.middlewares.oauth.forwardauth.authResponseHeaders=X-Forwarded-User,X-WebAuth-User          
    networks:
      backend:
        aliases:
          - pihole-app
networks:      
  backend:
  usenet:

Billa
Jul 12, 2005

The Emperor protects.

Jerk McJerkface posted:

As mentioned before, here is my sanitized docker file. Very little of it is in external config files, but I'm starting to break it off and do it that way instead, but this is fully functioning.

What's this for if you don't mind me aksing?

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Billa posted:

What's this for if you don't mind me aksing?

So it's a full stack for all these apps, self explanatory if you are in this thread. I can give more details if someone wants:
container_name: heimdall
container_name: traefik
container_name: plex
container_name: ddclient
container_name: calibre
container_name: calibre-web
container_name: lazylibrarian
container_name: nzbhydra2
container_name: jackett
container_name: ombi
container_name: portainer
container_name: radarr
container_name: sabnzbd
container_name: sonarr
container_name: transmission
container_name: pihole



It also includes these:
container_name: oauth
container_name: traefik

Traefik basically the coolest thing ever. It's fully functional reverse proxy (think NGINX) that is docker aware and basically hooks into the docker config to automatically make rules based on the labels applied to container. Every since site I server is https with lets encrypt, and also has Oauth configured with is Google MFA. I have 443 and 80 open, but if you go to any of my sites, you get a Google auth challenge, and I have a whitelist configured for gmail address to allow in.

These two apps:
container_name: my-app
container_name: locatebot
Aren't important for the stack, my-app, is a simple all just used for testing the setup, and locatebot is a personal project I'm using to learn python and how to make my own docker applications. However, it's also protected by a whitelist since it is technically exposed.

cr0y
Mar 24, 2005



Vykk.Draygo posted:

This made me check to see how Emby handles hardware transcoding, and they require a paid subscription too! Wild that everyone makes you pay for hardware transcoding even locally.

Checkout jellyfin. It's an opensource fork of the OG emby code and it's starting to get some good developers. Definitely not as polished but it's nice to be completely free of all of the paid subscription poo poo.

Thermopyle
Jul 1, 2003

...the stupid are cocksure while the intelligent are full of doubt. —Bertrand Russell

cr0y posted:

Checkout jellyfin. It's an opensource fork of the OG emby code and it's starting to get some good developers. Definitely not as polished but it's nice to be completely free of all of the paid subscription poo poo.

I was going to post this.

I'm going to be switching over to jellyfin once I fully evaluate the kodi plugin.

90% of my emby and plex usage has always been just to centrally manage the media database for Kodi, and I'm tired of this centralized remote auth with plex.

Tea Bone
Feb 18, 2011

I'm going for gasps.

Jerk McJerkface posted:

As mentioned before, here is my sanitized docker file. Very little of it is in external config files, but I'm starting to break it off and do it that way instead, but this is fully functioning.


What benefit does pihole add to the usenet stack? Or is it just on there for general purposes?

lordfrikk
Mar 11, 2010

Oh, say it ain't fuckin' so,
you stupid fuck!
I signed up for a monthly on NewsgroupDirect and while it works great most of the time I'm noticing lot of older stuff is missing parts. Do I understand it correctly that this is not an indexer problem but a usenet provider problem? If so, what other providers have great retention and won't have you paying through the roof? For reference, I snagged their $3.14/mo deal.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Tea Bone posted:

What benefit does pihole add to the usenet stack? Or is it just on there for general purposes?

No benefit, it's just there to function as my DNS server for adblocking.

Adbot
ADBOT LOVES YOU

Jesse Iceberg
Jan 7, 2012

Jerk McJerkface posted:

As mentioned before, here is my sanitized docker file. Very little of it is in external config files, but I'm starting to break it off and do it that way instead, but this is fully functioning.

code:
Lots of docker-compose

That's awesome, thanks for that, that gives me a really good jumping off point to start converting.

The docker-gen + Nginx approach was getting increasingly brittle over successive LetsEncypt renewals.

One thing I had wondered about Traefik is, is it necessary to give it DNS API credentials, if instead you have a wildcard A record to catch all your apps and services?

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply