Note: since I wrote this blog post, I switched to using NixOS. I’m leaving this post up because it could still hold valuable info.
This is the introductory post in the let’s build a server series. This series goes through all the steps needed to setup the same server I have at home. Along the way, I’ll explain everything I know or thought of while setting up this server.
We’ll build a box with a media server, automated movies and series downloader protected by VPN, a file server and synchronizer, integration with dropbox, a code server, dynamic IP support, monitoring, RSS support, SSO, a dashboard, backup and recovery.
We’ll also talk about how your laptop and phone will interact with the server, so essentially file synchronization, picture viewing and backup.
We will install and configure on an Archlinux box:
- Bazarr
- Borgmatic
- Caddy
- Deluge through VPN
- DynDNS through Godaddy
- Ersatztv
- Gitlab
- GnuPG
- Haproxy
- Homer
- Jackett
- Jellyfin
- Keycloak
- LVM
- MDADM
- Nextcloud
- Oauth2-Proxy
- OpenVPN
- Password Store
- PostgreSQL
- Radarr
- Rclone
- Redis
- Sonarr
- TinyTinyRSS
- PHP-FPM
You’ll notice I left out an automation tool like Docker or Ansible which we won’t use here. The goal of this serie is to empower you and to make you understand what’s going on under the hood. That’s how I like to build the things I use.
I assume you are familiar with the command line, that’s about it.
Hardware and Distro
- CPU: Intel i5 760 2.80GHz, 4 cores
- RAM: 16GB
- Graphics Card: GeForce GTS 250
- Disks:
- Samsung SSD 950 PRO (256GB)
- TOSHIBA HDWD110 (1 TB)
- WDC WD10EZEX-60W (1 TB)
- ST2000DM006-2DM1 (1.82 TB) x2
- Distro: Archlinux 5.13.13-arch1-1
In short, it’s an old desktop repurposed in a server with some new
hard drives. The drives are in a RAID 1 setup so I have a total of
2.82 TB of available storage. The SSD is used to store /var
to speed
up writing logs and access to PostgreSQL.