london-b
Primary storage and media server. The workhorse of the fleet.
Overview
|
|
| Location |
London (NW9) |
| OS |
Ubuntu 24.04 |
| Tailscale IP |
100.84.65.101 |
| Role |
Storage, media serving, Docker services |
Hardware
| Component |
Spec |
| CPU |
AMD Threadripper 3970X (64 threads) |
| Memory |
64 GB |
| GPU |
Nvidia GTX 980 |
| Boot disk |
500 GB |
| Storage pool |
~64 TB (ZFS) |
This machine is ridiculously overpowered as a media server. It's my old gaming/workstation PC repurposed into server duty. The GPU helps with Plex transcoding but the CPU can handle it fine on its own.
Storage
ZFS pool hdd: 3× RAIDZ1 vdevs, 8 drives total.
| Metric |
Value |
| Used |
46 TB |
| Free |
18 TB |
| Total |
~64 TB |
| Usage |
72% |
| Scrub |
Weekly (Sundays) |
RAIDZ1 tolerates one drive failure per vdev. With this many drives and this much data, ZFS checksumming is essential — silent data corruption on spinning disks is real and you don't want to find out about it years later.
Services
Media Servers
| Service |
Port |
URL |
| Plex |
32400 |
plex.pez.sh |
| Jellyfin |
8096 |
jellyfin.pez.sh |
| Navidrome |
4533 |
music.pez.sh |
Media Automation
| Service |
Port |
URL |
| Radarr |
7878 |
radarr.pez.sh |
| Sonarr |
8989 |
sonarr.pez.sh |
| Lidarr |
8686 |
lidarr.pez.sh |
| Readarr |
8787 |
readarr.pez.sh |
| Prowlarr |
9696 |
prowlarr.pez.sh |
| Transmission |
9091 |
download.pez.sh |
| Jellyseerr |
5055 |
request.pez.sh |
Other
| Service |
Port |
URL |
| Nextcloud AIO |
11000 |
cloud.pez.sh |
| slskd (Soulseek) |
5030 |
soulseek.pez.sh |
| smartctl_exporter |
9633 |
(Prometheus scrape) |
| prom-plex-exporter |
— |
(Prometheus scrape) |
Systemd Services (non-Docker)
The media automation suite and several supporting services run as native systemd units, not in Docker:
| Service |
Unit Name |
Notes |
| Sonarr |
sonarr |
Package-managed (mono) |
| Radarr |
radarr |
/opt/Radarr, custom unit |
| Prowlarr |
prowlarr |
/opt/Prowlarr, custom unit |
| Lidarr |
lidarr |
/opt/Lidarr, custom unit |
| Readarr |
readarr |
/opt/Readarr, custom unit |
| Whisparr |
whisparr |
/opt/Whisparr, custom unit (disabled) |
| Plex |
plexmediaserver |
Package-managed |
| Jellyfin |
jellyfin |
Package-managed |
| Transmission |
transmission-daemon |
Package-managed |
| Samba |
smbd |
Package-managed |
| Ollama |
ollama |
/usr/local/bin, custom unit |
| Promtail |
promtail |
Custom unit, ships logs to Loki |
| Cloudflared |
cloudflared |
Tunnel to Cloudflare |
| vsftpd |
vsftpd |
FTP server for /hdd/ftp |
| systemd_exporter |
systemd_exporter |
Ansible-managed |
| node_exporter |
node_exporter |
Ansible-managed |
Docker services: Nextcloud AIO, Jellyseerr, Navidrome, slskd, Miniflux, smartctl-exporter, plex-exporter.
Cron Jobs
| Schedule |
Job |
| Every hour |
/root/scripts/movie-rename-fix.fish |
| Midnight daily |
systemctl restart radarr |
| Midnight daily |
systemctl restart sonarr |
| 22:00 daily |
/root/scripts/backup.sh (rclone to B2) |
Samba Shares
| Share |
Path |
Access |
| HDD |
/hdd |
pez, root (rw) |
| Movies |
/hdd/movies |
public (ro) |
| TV Shows |
/hdd/tv |
public (ro) |
Media is served directly from the ZFS pool.
Networking
Connected via Cat 5 to the Ubiquiti switch in the utility closet. 1 Gbit LAN connection.