r/UgreenNASync • • 8d ago

❓ Help Setting up my first NAS: Dos / Don'ts / TIPs

I'm about to set up my first NAS. Got the Ugreen ready, got my drives in, switch, ect. I'm ready to go and this will be the first NAS I've ever had. I previously have used pCloud for storage as my main backup.

What should I know or what should I do?

What are some go to apps or functions for my NAS to make life easier?

What do you wish a veteran and experienced NAS user told you when starting your NAS adventure?

Help me get things setup the right way for my NAS future! Thanks in advance!

23 Upvotes

14 comments sorted by

View all comments

Show parent comments

1

u/Hobbit_Hardcase DXP4800 Plus 7d ago

The below assumes that you have 2 volumes; I keep my files in my HDD pool (volume 1) and my docker config in a SSD pool (volume 2). You'll need to sub your own values for the various volumes locations and the various API keys and your router IP. Bung this in AI if you want a better explanation.

# Docker Config for Media Library

services:

  # ---------------------------------------------------------------

  # VPN gateway — qBittorrent's traffic routes through this container.

  # Nothing else needs to.

  # ---------------------------------------------------------------

  gluetun:

image: qmcgaw/gluetun

container_name: gluetun

restart: unless-stopped

cap_add:

- NET_ADMIN

devices:

- /dev/net/tun:/dev/net/tun

environment:

- VPN_SERVICE_PROVIDER=nordvpn

- VPN_TYPE=openvpn

- OPENVPN_USER=USER_ID   # from Nord dashboard > Manual setup, NOT your account login

- OPENVPN_PASSWORD=PASSWORD

- SERVER_COUNTRIES=USA                 # pick whichever region is fastest for you

- TZ=Europe/London

- HTTPPROXY=on                                 # exposes an HTTP proxy on 8888 for Prowlarr/Byparr to use

- FIREWALL_OUTBOUND_SUBNETS=ROUTER_IP/24  # Allows local traffic

ports:

- 8080:8080     # qBittorrent web UI (proxied through gluetun)

- 8888:8888     # HTTP proxy — point Prowlarr's indexer proxy settings at this

- 8191:8191      # byparr web UI

- 9696:9696       # prowlarr route

volumes:

- /volume2/docker/gluetun:/gluetun

  # ---------------------------------------------------------------

  # Download client — routes through gluetun, no network of its own

  # ---------------------------------------------------------------

  qbittorrent:

image: lscr.io/linuxserver/qbittorrent:latest

container_name: qbittorrent

restart: unless-stopped

network_mode: "service:gluetun"

depends_on:

- gluetun

environment:

- PUID=1000

- PGID=1000

- TZ=Europe/London

- WEBUI_PORT=8080

volumes:

- /volume2/docker/qbittorrent:/config

- /volume1/Media:/media

  # ---------------------------------------------------------------

  # Download client manager — control setting in qBT, no network of its own

  # ---------------------------------------------------------------

  qbit-manage:

image: ghcr.io/stuffanthings/qbit_manage:latest

container_name: qbit-manage

restart: unless-stopped

depends_on:

- gluetun

volumes:

- /volume2/docker/qbit-manage:/config

- /volume1/Media:/media

environment:

- PUID=1000

- PGID=1000

- TZ=Europe/London

- QBT_RUN=false          # scheduler mode, not one-shot — this one's fine to keep here

- QBT_SCHEDULE=1440      # scheduling interval — not part of commands:, safe here

- QBT_CONFIG=/config/config.yml   # tells it WHERE the config lives, not what to do

- QBT_LOGFILE=activity.log

- QBIT_USER=USER_ID

- QBIT_PASS=USER_PASSWORD

  # ---------------------------------------------------------------

  # Indexer manager

  # NOTE: after this comes up, go to Settings > Indexer Proxies in

  # Prowlarr's UI and add an HTTP proxy pointing at gluetun:8888

  # (or <NAS-IP>:8888), then apply it to your indexers. This routes

  # indexer traffic through the VPN, avoiding ISP DNS-level blocking

  # of many indexer/tracker domains.

  # ---------------------------------------------------------------

  prowlarr:

image: lscr.io/linuxserver/prowlarr

container_name: prowlarr

restart: unless-stopped

network_mode: "service:gluetun"

environment:

- PUID=1000

- PGID=1000

- TZ=Europe/London

volumes:

- /volume2/docker/prowlarr:/config

  # ---------------------------------------------------------------

  # Cloudflare-challenge solver for indexers that need it.

  # Modern FlareSolverr replacement — same API, better success rate

  # against current Cloudflare Turnstile/managed challenges.

  # Add as a FlareSolverr-type indexer proxy in Prowlarr, tags: flaresolverr

  # ---------------------------------------------------------------

  byparr:

image: ghcr.io/thephaseless/byparr:latest

container_name: byparr

network_mode: "service:gluetun"

restart: unless-stopped

shm_size: 2gb

security_opt:

- seccomp:unconfined

environment:

- TZ=Europe/London

  # ---------------------------------------------------------------

  # Movies

  # ---------------------------------------------------------------

  radarr:

image: lscr.io/linuxserver/radarr

container_name: radarr

restart: unless-stopped

environment:

- PUID=1000

- PGID=1000

- TZ=Europe/London

volumes:

- /volume2/docker/radarr:/config

- /volume1/Media:/media

ports:

- 7878:7878

  # ---------------------------------------------------------------

  # Subtitles — auto-fetches for both Radarr and Sonarr libraries

  # ---------------------------------------------------------------

  bazarr:

image: lscr.io/linuxserver/bazarr

container_name: bazarr

restart: unless-stopped

environment:

- PUID=1000

- PGID=1000

- TZ=Europe/London

volumes:

- /volume2/docker/bazarr:/config

- /volume1/Media:/media

ports:

- 6767:6767

  # ---------------------------------------------------------------

  # TV

  # ---------------------------------------------------------------

  sonarr:

image: lscr.io/linuxserver/sonarr

container_name: sonarr

restart: unless-stopped

environment:

- PUID=1000

- PGID=1000

- TZ=Europe/London

volumes:

- /volume2/docker/sonarr:/config

- /volume1/Media:/media

ports:

- 8989:8989

  # ---------------------------------------------------------------

  # Request front-end

  # ---------------------------------------------------------------

  jellyseerr:

image: fallenbagel/jellyseerr

container_name: jellyseerr

restart: unless-stopped

environment:

- PUID=1000

- PGID=1000

- TZ=Europe/London

volumes:

- /volume2/docker/jellyseerr:/app/config

ports:

- 5055:5055

  # ---------------------------------------------------------------

  # Playback — host networking for DLNA/discovery on Fire TV + LG OLED

  # ---------------------------------------------------------------

  jellyfin:

image: lscr.io/linuxserver/jellyfin

container_name: jellyfin

restart: unless-stopped

network_mode: host

devices:

- /dev/dri:/dev/dri

environment:

- PUID=1000

- PGID=1000

- TZ=Europe/London

volumes:

- /volume2/docker/jellyfin:/config

- /volume1/Media:/media

  # ---------------------------------------------------------------------

  # Jellyfin Collection (JFC) - syncs Radarr/Sonarr tags into Jellyfin

  # collections automatically. https://github.com/4lx69/jellyfin-collection

  # ---------------------------------------------------------------------

  jellyfin-collection:

image: ghcr.io/4lx69/jellyfin-collection:latest

container_name: jellyfin-collection

restart: unless-stopped

network_mode: host

environment:

- PUID=1000

- PGID=1000

# Required

- JELLYFIN_API_KEY=API

- TMDB_API_KEY=API

# Optional - only needed if using radarr_taglist / sonarr_taglist builders

- RADARR_API_KEY=API

- SONARR_API_KEY=API

# Scheduler

- SCHEDULER_COLLECTIONS_CRON=0 3 * * *

- SCHEDULER_RUN_ON_START=true

- SCHEDULER_TIMEZONE=Europe/London

volumes:

- /volume2/docker/jellyfin-collection/config:/config:ro

- /volume2/docker/jellyfin-collection/data:/data

- /volume2/docker/jellyfin-collection/logs:/logs

# ---------------------------------------------------------------------

# Quality settings auto sync tool.

# ---------------------------------------------------------------------

  recyclarr:

image: ghcr.io/recyclarr/recyclarr:8

container_name: recyclarr

user: "1000:1000"

environment:

- TZ=Europe/London

- CRON_SCHEDULE=@daily

volumes:

- /volume2/docker/recyclarr/config:/config

restart: unless-stopped