Gluetun using ProtonVPN docker, with the following apps running through:
Qbittorrent
Sonarr/Radarr/Readarr/Prowlarr
Jellyseerr
Deemix - though I’m having trouble finding good arls lately
Slskd
Requester - linked to discord
Gluetun using ProtonVPN docker, with the following apps running through:
Qbittorrent
Sonarr/Radarr/Readarr/Prowlarr
Jellyseerr
Deemix - though I’m having trouble finding good arls lately
Slskd
Requester - linked to discord
how is the rest of your setup? Do you use a reverse proxy for this? Can you give us a small high level “network overview” on how you provide the services to friends and family?
Do you use Docker? If so, can you share your configs? How do you do backups?
*.domain points to my server, nginx reverse proxy separates it out between the various services. I have jellyfin and navidrome. As well as audiobookshelf for my wife. No hardware transcoding.
Everything is Docker except nginx. I have gluetun routing everything that my ISP probably wouldn’t like through a VPN.
Jellyseerr, I thought would be more popular, but it turns out requestrr is doing most of the media grabbing now days. My brother has a family discord, I attached to it.
The only thing I stress about backups with is my music. I could (and have) rebuilt my server in a day. But it’s taken years to build my library. It’s syncthing’d between my server, laptop, and my brother’s computer (who helps build the library). It’s also syncing to pcloud, but less regularly. Movies are trivial to regrab, and TV can be hit or miss, but it’s still not worth the effort to back it up.
Last time I upgraded my server, I just copied out my Docker compose files and config folders. As well as my nginx. Since then, if I had to, I could back up everything and restore from a single folder.
I’ll attach my docker for my torrent stack below. It’s a single large docker because it’s easier to make services use the VPN if they’re attached like that. The rest of my services that don’t run through VPN are individuals that I can stop without commenting them out.
Nice, thanks!
I actually use lots of the same software apart from Traefik instead of nginx and my own wireguard reverse proxy in the WWW with an external IP.
I solved a similar problem with having irreplaceable audio files by using a friend backup system where I just gave a few friends a free hard disk with the condition they install syncthing so I can give them even more free music from time to time.
I’ve never messed with Traefik. I did a 5 second internet search for “best reverse proxy”, but later realized it would never matter at my scale of less than a dozen. I guess caddy is supposed to be really good and easy to use, but I still find more guides for nginx.
version: “3.7” services: gluetun: image: qmcgaw/gluetun:latest cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun
environment: #WIREGUARD ENVIRONMENT
- VPN_SERVICE_PROVIDER=custom
- VPN_SERVICE_PROVIDER=mullvad
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=asdf#Mullvad
- WIREGUARD_ADDRESSES=asdf #Mullvad
- WIREGUARD_PUBLIC_KEY=asdf=#ProtonVPN
- WIREGUARD_PRIVATE_KEY=asdf=#ProtonVPN
- WIREGUARD_PRESHARED_KEY= #ProtonVPN
- WIREGUARD_ADDRESSES=asdf#ProtonVPN
- SERVER_CITIES=New York NY
- FIREWALL_VPN_INPUT_PORTS=55106
- VPN_ENDPOINT_PORT=51820
- 9117:9117 #Jackett
- 8686:8686 #Lidarr
- 7575:7575 #Homarr
- 4000:4000 #Midarr
qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest #Master
image: cr.hotio.dev/hotio/qbittorrent #With VueTorrent Built in
ports:
- 8080:8080
- 6881:6881
- 6881:6881/udp
prowlarr: image: lscr.io/linuxserver/prowlarr:develop container_name: prowlarr network_mode: “service:gluetun” environment: - PUID=1000 - PGID=1001 - TZ=America/New_York - AUTO_UPDATE=true #optional
- RUN_OPTS=<run options here> #optional
- /External/Prowlarr:/downloads
ports:
- 9696:9696
sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr network_mode: “service:gluetun” environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - ./sonarr:/config - /External/Jellyfin/TV:/tv #optional - /External/Downloads:/downloads #optional - /home/butter/Jellyfin/TV:/internalTV
ports:
- 8989:8989
- 8990:8123
radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr network_mode: “service:gluetun” environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - ./radarr:/config - /External/Jellyfin/Movies:/movies #optional - /External/Downloads:/downloads #optional - /home/butter/Jellyfin:/internalmovies
ports:
- 7878:7878
homarr:
container_name: homarr
image: ghcr.io/ajnart/homarr:latest
network_mode: “service:gluetun”
restart: unless-stopped
volumes:
- ./homarr/configs:/app/data/configs
- ./homarr/icons:/app/public/icons
ports:
- ‘7575:7575’
jellyseerr: image: fallenbagel/jellyseerr:latest network_mode: “service:gluetun” container_name: jellyseerr environment: - LOG_LEVEL=debug - TZ=America/New_York
ports:
- 5055:5055
readarr: image: lscr.io/linuxserver/readarr:develop container_name: readarr network_mode: “service:gluetun” environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - ./readarr:/config - /External/Books:/books #optional - /External/Downloads:/downloads #optional
ports:
- 8787:8787
lidarr:
container_name: lidarr
network_mode: “service:gluetun”
image: lscr.io/linuxserver/lidarr:latest #Official
image: youegraillot/lidarr-on-steroids #Fork based off guide online; Very outdated
image: cr.hotio.dev/hotio/lidarr #Fork from Reddit
environment:
- PUID=1000
- PGID=1000
- UMASK=002
- TZ=America/New_York
volumes:
- ./lidarr:/config
- ./deemix:/config_deemix
- /External/Music/Lidarr:/music #optional
- /External/Downloads/Lidarr:/downloads #optional
lidarr-extended:
image: randomninjaatk/lidarr-extended:latest
container_name: lidarr-extended
network_mode: “service:gluetun”
volumes:
- ./lidarr-extended:/config
- /External/Downloads/Lidarr:/downloads-lidarr-extended
- /External/Music/Lidarr:/music
- /External/Music/Lidarr/Videos:/music-videos
environment:
- TZ=America/New_York
- PUID=1000
- PGID=1000
- enableAudioScript=true
- enableVideoScript=false
- scriptInterval=5m
- configureLidarrWithOptimalSettings=true
- searchSort=date
- audioFormat=native
- audioBitrate=lossless
- requireQuality=true
- enableReplaygainTags=true
- audioLyricType=both
- dlClientSource=deezer
- arlToken=
- tidalCountryCode=US
- addDeezerTopArtists=false
- addDeezerTopAlbumArtists=false
- addDeezerTopTrackArtists=false
- topLimit=10
- addRelatedArtists=false
- numberOfRelatedArtistsToAddPerArtist=5
- addFeaturedVideoArtists=false
- plexUrl=http://x.x.x.x:32400
- plexToken=Token_Goes_Here
- youtubeSubtitleLanguage=en
- enableQueueCleaner=true
- matchDistance=5
- enableBeetsTagging=true
- beetsMatchPercentage=90
ports:
- 8686:8686
restart: unless-stopped
midarr:
container_name: midarr
image: ghcr.io/midarrlabs/midarr-server:latest
network_mode: “service:gluetun”
ports:
- 4000:4000
volumes:
Database path
- ./midarr:/app/database
Media path
- /External/Jellyfin/Movies:/radarr/movies/path
- /External/Jellyfin/TV:/sonarr/shows/path
environment:
App config
- APP_URL=http://localhost:4000
- APP_MAILER_FROM=
- SENDGRID_API_KEY=someAPIKEY
Admin account
- SETUP_ADMIN_EMAIL=
- SETUP_ADMIN_NAME=
- SETUP_ADMIN_PASSWORD= # minimum length 12
Radarr integration
- RADARR_BASE_URL=localhost:7878
- RADARR_API_KEY=asdf
Sonarr integration
- SONARR_BASE_URL=localhost:8989
- SONARR_API_KEY=asdf
slskd: image: slskd/slskd container_name: slskd network_mode: “service:gluetun” volumes: - ./slskd:/app - /External/Music:/music - /External/Books:/audiobooks restart: always
deemix: image: registry.gitlab.com/bockiii/deemix-docker container_name: Deemix network_mode: “service:gluetun” volumes: - /External/Music/Deezer:/downloads - ./Deezer:/config environment: - PUID=1000 - PGID=1000 - UMASK_SET=022 - DEEMIX_SINGLE_USER=true
ports:
- 6595:6595
requestrr: container_name: requestrr network_mode: “service:gluetun”
ports:
- ‘4545:4545’
Good post just think you got your code formatting tags a little mixed up.
You’re right. When I’m at a computer, I’ll try to fix it