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
Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
Is anyone running Nzbhydra2 in a docker instance behind a reverse proxy with NGINX? I have a subdomain nzbhydra.mydomain.com pointing to it. It works fine, but it's just slooooooooooooow. If I reconfigure the container so I reach it directly through http://host.ip:7878/ it's much faster. I have radarr and sonarr setup the same way and they don't have any problems.

It's odd.

Adbot
ADBOT LOVES YOU

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

uhhhhahhhhohahhh posted:

Can't say anything specific about this setup but you should be able to tail the nginx log in the container and it'll give you some info about what's going on. Are you using the jwilder/nginx-proxy container?

I'm using nginx-proxy-manager:

https://github.com/jc21/nginx-proxy-manager

I'll ditch it for Traefik since that seems like a better option. I was using a vanilla nginx docker with my own configs, but I wanted a GUI so I switched over, but I don't need it really.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
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.

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.

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/

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.

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.

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.

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.

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:

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.

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.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Jesse Iceberg posted:

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?

This here string:
- --certificatesresolvers.leresolver.acme.dnsChallenge=true

Tells Traefik and LetEncrypt how to validate that you actually own the Domain that you are added certs for. I use the Godaddy API to allow Traefik to login and check to verify I own it. You can also use a different check called "tls challenge" (documented here: https://docs.traefik.io/https/acme/) that tells Treafik to just resolve that hostname and test. This requires you to have 443 open from that hostname's IP and it has to get back to Traefik. I did not use that because I didn't initially have Oauth setup, and it would have required me to open my network to traffic before it was secure enough.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Jesse Iceberg posted:

Thanks again for this, I was able to port my setup using your Compose as a starting base with a minimal of fuckery, preserving all the backend container volume data so the move was as transparent to services as could be.

Truly, we live in an age of wonders...

Now if only apps like NZB360 could support Oauth2, it'd be perfect.

It sort of works if you auth through the browser and then open the app. You can also setup a direct "PORT:" right on the container, and it will by pass Traefik entirely if you go to the port, like I have setup for Calibre in that example (8080:8080). That will allow NZB and whatever else you use to work if you configure it to reach them directly. I'd advise against opening up those ports on your firewall and just letting the entire world get directly at your stack, but internally (or over a VPN I guess) it'd work.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

BeastOfExmoor posted:

Usenet stuff is great most of the time, but every once in awhile I find myself sitting at a linux command line for half an hour so I can watch a show with my wife and I begin to question the whole system.

The VM I was running Plex on got corrupted, so I attempted to spin up a docker instance and failed miserably for some reason I still haven't diagnosed.

The answer to your question is in your post. Just set up docker. Use my docker compose file. It's all you need.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
I'm having a super frustrating time dealing with Radarr and Sonarr. When I attempt to edit on of my indexers, Chrome automatically populates the form with other data. I know it's a chrome thing, but man is it irritating. I can't figure out how to turn it off.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Skarsnik posted:

Could you not just open in edge or whatever for a bit

Incognito mode might work too

Yeah. I did it in Firefox and it was fine, but I hate having a problem I can't sort out.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Decairn posted:

drat.... it's LastPass: Free Password Manager extension causing this for me. Another reason I should move to Bitwarden. Thankyou!

That was it. The form for that page didn't seem to contain the options, but I opened the indexer page, and saw it has the lastpass icon in the field. I clicked the icon, and then edited the vault entry. It was for another site that the same domain name as sonarr (I have it behind a proxy). I didn't see "sabnzdb" in the username or password field on lastpass, but when I clicked the Wrench to edit the form fields I saw all the errant fields. I deleted the entry it it's not happening now!

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
Heyo, anyone running Nzbhydra2 and having thousandes of gc errors? It looks like the jvm is breakdancing. I'm running the latest version in a container and it's generating thousands of GC error logs every hour. I don't think it's running out of memory, but I can't figure it out. Also with no activity it's using almost a full CPU core on it's own. I have no idea what's up.

code:
1764 Mar 25 11:02 gclog-2020-03-25_11-02-31.log
1763 Mar 25 11:02 gclog-2020-03-25_11-02-32.log
1765 Mar 25 11:02 gclog-2020-03-25_11-02-34.log
1765 Mar 25 11:02 gclog-2020-03-25_11-02-35.log
1766 Mar 25 11:02 gclog-2020-03-25_11-02-37.log
1765 Mar 25 11:02 gclog-2020-03-25_11-02-39.log
1765 Mar 25 11:02 gclog-2020-03-25_11-02-41.log
1765 Mar 25 11:02 gclog-2020-03-25_11-02-42.log
1766 Mar 25 11:02 gclog-2020-03-25_11-02-44.log
1765 Mar 25 11:02 gclog-2020-03-25_11-02-46.log
1766 Mar 25 11:02 gclog-2020-03-25_11-02-48.log
1765 Mar 25 11:02 gclog-2020-03-25_11-02-49.log
1765 Mar 25 11:02 gclog-2020-03-25_11-02-51.log
1765 Mar 25 11:02 gclog-2020-03-25_11-02-53.log
1765 Mar 25 11:02 gclog-2020-03-25_11-02-54.log
1765 Mar 25 11:02 gclog-2020-03-25_11-02-56.log
1764 Mar 25 11:02 gclog-2020-03-25_11-02-58.log
1764 Mar 25 11:03 gclog-2020-03-25_11-02-59.log
9968 Mar 25 11:03 wrapper.log.1
1763 Mar 25 11:03 gclog-2020-03-25_11-03-01.log
1765 Mar 25 11:03 gclog-2020-03-25_11-03-02.log
1763 Mar 25 11:03 gclog-2020-03-25_11-03-04.log
1764 Mar 25 11:03 gclog-2020-03-25_11-03-05.log
1764 Mar 25 11:03 gclog-2020-03-25_11-03-06.log
1765 Mar 25 11:03 gclog-2020-03-25_11-03-08.log
1765 Mar 25 11:03 gclog-2020-03-25_11-03-09.log
1763 Mar 25 11:03 gclog-2020-03-25_11-03-10.log
1765 Mar 25 11:03 gclog-2020-03-25_11-03-12.log
7460 Mar 25 11:03 wrapper.log
4912 Mar 25 11:03 .
 398 Mar 25 11:03 gclog-2020-03-25_11-03-14.log
the files are standard GC logs:
code:
user@xeons:/mnt/vault/docker/config/nzbhydra2/logs$ cat gclog-2020-03-25_11-03-14.log
[0.002s][info][gc,heap] Heap region size: 1M
[0.012s][info][gc     ] Using G1
[0.012s][info][gc,heap,coops] Heap address: 0x00000000c0000000, size: 1024 MB, Compressed Oops mode: 32-bit
[0.012s][info][gc,cds       ] Mark closed archive regions in map: [0x00000000fff00000, 0x00000000fff69ff8]
[0.012s][info][gc,cds       ] Mark open archive regions in map: [0x00000000ffe00000, 0x00000000ffe46ff8]
but there's thousands of them:

code:
user@xeons:/mnt/vault/docker/config/nzbhydra2/logs$ find -type f |wc -l
2479

Super-NintendoUser fucked around with this message at 16:05 on Mar 25, 2020

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Matt Zerella posted:

Its garbage. I just do manual searches for books I want in Hydra.

Seriously, Lazy Librarian absolutely blows up my server. It's madness and garbage.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
Just wanted to give a quick update on the Nzbhydra2 performance/GC issue I reported a few days ago. The problem was Lazylibrarian. Once i disabled that, it all stopped happening. I think the problem is that I linked LL to my Calibre library, and for some reason that made it thrash on queries to Hydra. I don't really know why, but that was it.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

BaseballPCHiker posted:

I tried LazyLibrarian and just gave up. It wasnt worth the hassle, never seemed to find anything for me.

If I wasnt so particular about lights/electronics in bed I'd just buy a new kindle and load my local librarys app to get books. But as far as I know there are no new Kindles that use e-ink and arent back lit that you can load apps on.

IRC did have a few more options but again nothing spectacular.

You don't need to put an app on your Kindle specifically. Most libraries use an app like Libby that is a middleware between their electronic library and your Kindle library. Maybe check that out. You can put the Kindle app on your phone/tablet and see how it works. It's about the same as using an actual Kindle device.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

norp posted:

I get free azure credits so I just wrote a 10 line script using az cli that updates my DNS using the rest API.

Even if I didn't get free credits I think it costs me like A$0.80/month

There's a ton of docker containers to do this.

I use ddns updater to update my godaddy dns when my home IP changes (but honestly it only changes during a power cycle of the router.

https://hub.docker.com/r/qmcgaw/ddns-updater

Compose file:

code:
  ddns-updater:
    image: qmcgaw/ddns-updater
    container_name: ddns-updater
    restart: always
    ports:
      - 8000:8000
    volumes:
      - ./config/ddns-updater/data:/updater/data
    environment:
      - DELAY=300s
      - ROOT_URL=/
      - LISTENING_PORT=8000
      - LOG_ENCODING=console
      - LOG_LEVEL=info
      - NODE_ID=0
      - HTTP_TIMEOUT=10s
    restart: always
    labels:
      - traefik.http.routers.ddns.entrypoints=websecure
      - traefik.http.routers.ddns.tls=true
      - traefik.http.routers.ddns.rule=Host(`my.domain.com`)
      - traefik.http.routers.ddns.tls.certresolver=leresolver
      - traefik.http.services.ddns.loadbalancer.server.port=8000
      - traefik.http.routers.ddns.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
my config file:

code:
cat config.json
{
    "settings": [
        {
            "provider": "godaddy",
            "domain": "my.domain.com",
            "host": "@",
            "ip_method": "cycle",
            "no_dns_lookup": true,
            "key": "sdfasdfasdfasdfasdfasdf,
            "secret": "sdfasdfasdfasdfasdfasdf"
        },
        {
            "provider": "godaddy",
            "domain": "domain.com",
            "host": "*",
            "ip_method": "cycle",
            "no_dns_lookup": true,
            "key": "sdfasdfasdfasdfasdfasdf",
            "secret": "sdfasdfasdfasdfasdfasdf"
        }
    ]
}

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

sonatinas posted:

Directly. Was hesitant using docker when it wanted more privileges.

Like what? I run it with UID and GID = to a non-privileged user. I don't believe it assumes root or anything.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Matt Zerella posted:

Radarr is also nice if you need Wife/Partner approval Factor. I set up Ombi with it, installed the app on her phone and configured it, and she can now add movies and TV to our Plex whenever she wants.

+1 on this. Ombi/radarr/sonarr gets the Mrs McJerkface seal of approval.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

charity rereg posted:

my wife is generally fine asking me to download stuff but i'm pretty sure she can use radarr in a pinch. i'm coming around to the idea mostly because this has been a fun project. i can see this evolving into a proper basement plex server once i can scratch up something better than this 3rd gen i5...

the movies script works fine for now but obviously doesn't fix the renaming issue as NZBget doesn't rename, it does fix the "plex doesn't find it in _unpack" issue though. i know there are solutions but i may just go radarr, as this starts to open up letting my disabled mom add stuff directly via remote access.

I think that Radarr/Sonarr handle renaming? I use Sabnzbd, but I've never had any naming issues.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

The Gunslinger posted:

Anyone here farted around with Traefik in unRAID? I've been using one of the combo LetsEncrypt/nginx dockers but stuff like nzbhydra breaks periodically and its always a pain to troubleshoot/fix. Is Traefik easy to setup with a custom domain?

Edit: oh, I should post this in the NAS thread.

I have traefik set up in docker with custom domains and let's encrypt. It's fantastic and pretty easy. Getting wildcard certs took a bit of finagling, but that was because GoDaddy broke some of the apis. I posted my docker-compose.yml a while back in this thread that gives a full example (before I set up the wildcards).

I can post my lastest config with wildcard setup if the thread is interested.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

canyonero posted:

What are you planning to use to "let people request stuff to auto-add to Plex"? I've heard of Ombi, but haven't really had time to try it out yet. Wasn't sure if there were other things out there doing the same thing.

Ombi is the best game in town, IMHO. I really like the integration with Plex SSO.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Matt Zerella posted:

Don't. Set up WireGuard and VPN in.

Heyo since we argued all night at work I'm gonna follow you to SA and argue here. :cheers:

I use traefik with a public domain, served over https with LetsEncrypt. I also have all my sites protected with Google oauth. So if you go to https://www.mysonarr.com you get a Google 2fa login prompt. I have a white list of google accounts that it lets login. It works super well, and I guess it's secure enough.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

UncleGuito posted:

Any idea on what they would have shown up on in the credit card statement? Can’t remember which card I used for my VIP.

I believe they accepted Amazon Giftcards (lol I know). I know I paid for my first few months that way, but I got a lifetime membership and I'm not sure how I paid for that since I can't find any transaction record.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

Takes No Damage posted:

Unrelated, is there a Plex-like app for books and comics? Something I can point to a folder full of PDFs and CBRs and have some kind of web portal to view them, have some way to organize them, remember where I am in each file etc?


Nthing Calibre for ebook library management. It's basically the Plex of ebooks, and it has every feature you could need.

However, for downloading ebooks, there's a Sonarr like program called "Lazy Librarian" that is hot garbage. I had it running as a container on my quad core Xeon server with 16GB of RAM and it brought my server to it's knees. Also the problem is that there's no standardized metadata/naming convention for books like there is for movie/TV releases (even though there's ISBNs, but they aren't used but ebook groups). It's a tall order to automatically find and download specific titles. I recommend against using it for downloads, and just get them manually. Calibre supports a hot folder, so just dump them in the hot folder (maybe add an "ebook" config on Sabnzbd or your torrent downloader to download to the folder).

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
What are the best Usenet indexers or I guess torrent sites for mp3s of comedy albums? Spotify took a bunch of the ones I like off, and I need some for roadtrips.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

I like overseerr a lot better, I forget why, but I was never really happy with Ombi.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
I remember seeing a Matrix version that had a bigger frame and you could see some green screen around, maybe it was open matte?

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

UncleGuito posted:

Does anyone know if it's possible to map a domain name A record to dynamic DNS? I use overseer and have it publicly accessible via a subdomain, but my home network IP changes pretty much every week. I tried putting in the dynamic DNS address (created via noip) as an A record but says it only allows IPV4 addresses only (Google domains).

There's a few containers that you have updaters that will go to your DNS provider every so often and update their IP.

https://github.com/qdm12/ddns-updater

I've used this one, I had a lot of weird problems with it, but I think that was just my own problems, and not relating to the container itself.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat

cryptoclastic posted:

How can I remotely name a file on my Seedbox?

I have an episode of a show that has a ô in it, which apparently screws up file structures because in the filename it has it as S\364ti. I tried SSHing in and changing the filename, but it didn't work. Maybe I'm an idiot and just don't know what I'm doing? Sonarr won't manually import it, FileBrowser errors on it when I try to copy it. If i could just rename that part of file Soti it would be great, but I can't figure out how.

You can for sure rename it over ssh, whether or not that breaks something in the app, I don't know.

Probably the \ is what is breaking your attempts. Try doing a rename (in linux this is 'mv') but do it with quotes. Let me give you an example:

code:
ls -1 /dir/

fileS\364tiwhatever.mkv

mv 'fileS\364tiwhatever.mkv' filename.mkv
or
mv fileS\\364tiwhatever.mkv filename.mkv # note the \ before the \, that's called an escape character to tell linux that the next character is a real character and not a command/function

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
can you do the following:

code:
ls -l /whatever/path
find /whatever/path -print -ls
For sure I can give you an exact command to rename it.

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
Is there a Calibre ebook thread? I'm trying to figure out some stuff with it but I can't find a good place to get help.

Adbot
ADBOT LOVES YOU

Super-NintendoUser
Jan 16, 2004

COWABUNGERDER COMPADRES
Soiled Meat
So what's the best way to get Star Trek TOS into Sonarr without any of the new fangled edits?

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