This has been one of those projects that sees an upgrade month after month. Some of these services started on my Raspberry Pi 2B in 2014, or on a Linode server in 2010.
They’ve all coalesced here for now. As my hosting needs change, so will this setup.
- Required Components
Up until now I’ve been happy running on the latest Pi flavor of $currentYear, but started to miss two distinct pieces:
- Large set of disks, for archiving and backups.
- x86 virtualization support, for MacOS and (less critically) game streaming VMs.
And so a higher caliber server must be built.
Because of what is absolutely required in my setup, very cool SBCs like the RockPro64 must be left out. Every ARM board for that matter, as running an OpenCore MacOS VM puts a stop to that architecture (maybe not for long).
With that in mind I decided to use my outgoing gaming rig with a processor upgrade and a few HDDs for this task.
- Ryzen 3700x (8 core, 16 thread processor)
- 64 GB of 3200MHz DDR4
- x6 WD Easystore 10TB HDDs, shucked
- NVME/SATA SSDs adding up to ~2TB, for container + vm storage
- Fans, cases, PCIe to SATA cards, Ethernet cards, and other less interesting components.
I set out with this particular rig to run Proxmox, mainly because of its price tag but also for its reputation as an excellent virtualization host. After a couple months of running, I could not recommend it more.
A running list of software I keep on my server, in order of importance/usefulness/neat-factors:
Caddy Reverse Proxy
- For my external facing services, I run Caddy reverse proxy behind a pfSense box
MacOS OpenCore VM
- Put together using this great guide by Nicholas Sherlock
- AirMessage Server, giving me iMessage on Android
- AirPhoto Server my hacky Go program for iCloud Photo Streams on Android
- iOS Development Environment, for testing/deploying React Native apps on iOS
- Dedicated VM to hosting a Home Assistant docker container
- MQTT python scripts to translate between differing outputs
- Mosquitto as a bridging central from other machines
- VS Code Server – This is just so cool, I can run LineageOS builds that use all given cores + ram from my phone!
- GitTea self hosted git service, comes in handy for mirroring and extremely private repos.
- Drone CI for CI/CD of various services (WIP)
- Sentry App / Server error alerting
- in an LXC container, blocks ads and makes local DNS entries incredibly easy
- for local chat and notifications.
- matrix-puppet-hangouts for forwarding Google Hangouts messages to Matrix
- 3D Printer running from Octoprint
- USB Webcam for 3D printer timelapses
- SunPower packet analyzer
Media / Cloud VM
- Nextloud for calendar and tasks hosting
- Paperless-ng for document scanning and OCR
- Wallabag article saving
- Syncthing for file synchronization
- Hauk Self hosted location tracking
- Ackee for web analytics
- Plausible for other web analytics
- Statping service monitoring
- Prometheus service metrics
- InfluxDB time series DB for when Prometheus doesn’t work
- Grafana service dashboards
- What you’re reading, containerized in an LXC and served by Caddy
- Wordpress VMs for my fledgling startups
- Audio card and a Bluetooth dongle passed through
Windows 10 Gaming
- Passed through an RTX 2080 and can stream with Moonlight
- Some scripts I use for work deployed in LXCs
The LXCs are evenly split between Alpine Linux and Ubuntu Server, depending on the application’s complexity. I tried turnkey, but it was usually a lot more than I ever needed.
I regularly watch these pages for new services to self host, and further wean myself off other people’s “cloud”.