Self Hosted!
2025-08-05
Self Hosted!
Click here to skip to the recipe
exposition
My partners phone had been acting up for a while due to her being out of storage. She has no apps on the thing, they have been cut down to only the necessities. We tried to go through her camera roll but other than the few screenshots and saved videos it was full of pictures she genuinely cared about. Okay lets try uploading this to one of the various cloud services we are surrounded by.
Shared family iCloud is full. Google Drive is full. Dropbox only gives you 2GB ???
inciting incident
Me and Andrea (my partner) recently moved in together so that means we have been checking Facebook marketplace daily for furniture. So while looking for a shoe organizer I see a seller unloading ThinkCentres. Apparently they are under pressure to update to Windows 11 which lead to them replacing all the computers in the office with #Windows11Ready machines. $60 bucks for a ThinkCentre M710Q with a Intel i5 6th gen, 8GB RAM, and a 250G SSD.
midpoint
It was pretty trivial to throw an operating system on the machine. I did have to crawl under my bed to reach the router though. I decided after a bit of research to throw a hypervisor on there so I could run multiple things and have them isolated. It is also to fun to do some networking since each VM or container has its own IP. I went with Proxmox and used the helper scripts to install NextcloudPI. 250G might not be much in our current climate but it should provide enough relief to Andrea's iPhone (2) until at least I save up enough money to low ball a marketplace seller for their gaming PC, tell them to keep the GPU, and fill every bay with 7 terabyte hard drives.
rising action
lets expose ourselves. I wanted to be able to connect to our Nextcloud instance from outside of our network. Tailscale made that pretty easy. Next I wanted to be able to connect to it from any device and unfortunately I came across a guide for using a VPS as a reverse proxy with tailscale and a owned domain before I remembered about cloudflare tunnels. I gave Akamai $5 for their cheapest ubuntu offering and went with caddy to do the proxying. Before I finished opening up to the internet I remembered its a bit dangerous out there so I made sure to harden my VPS. Disabled root login, setup fail2ban, setup a firewall and closed ports, and automated updates. SSH keys are next to do. A bit scared I will not manage my keys well and will end up losing them. Once that was all set I dealt with both caddy and apache trying to redirect http to https causing some looping. Nextcloud was working so I created another VM with docker installed to run this Zola website using Static Web Server per their docker instructions. Messed up my caddy configuration adding the blogs IP to the reverse proxy and it was not until the next day that I noticed the misplaced curly bracket causing all the issues.
climax
This website is running on hardware inside my house! Your packets are inside my walls flowing through my router. I can see you. It is pretty cool to be able to self host and now I have to decide what to move next. I think I will definitely look for a lifting app I can host as the app I use now sucks unless you pay them money. I can become part of the plex/ jellyfin/ emby army now. Maybe I will download some, two, movies in 4k. I should setup piHole and destroy all ads or whatever it does. The possibilities are endless and I am only limited by my available cores, memory, and storage.
denouement
You should self host! For the last few weeks I have kept imagining a future where remote self hosting individuals maintain the only remnants of the internet. Although that time may never come I hope I have shown just how easy it is to get this running. You do not even have to bother with a VPS if you use cloudflare tunnels! It is pretty cool.
INGREDIENTS
- A computer (almost any machine you find second hand is probably good enough)
- USB Drive
- Ethernet Cable
- Keyboard
- Monitor
- Another computer
- Router Access
Directions
Step 0
Create a bootable media out of your USB and Proxmox ISO.
Step 1
Connect your computer, monitor, keyboard, USB, and router. Turn your machine on and prepare to react quick enough to press the enter BIOS button. Boot from USB and follow instructions to install Proxmox.
Step 2
Type in the IP you chose for the server during setup in your browser followed by colon and the default port of 8006. The Proxmox dashboard should load.
Step 3
Go here to find the Nextcloud helper script and follow the instructions for the first one.
Step 4
Install tailscale on the Nextcloud container using its console. Follow tailscale instruction.
Step 5
Use cloudflare tunnels to make this free and easier. Otherwise pay $5-$6 dollars a month for a vps. Harden that VPS by following the advice of this reddit thread and follow this guide to setup the reverse proxy. The Caddyfile provided caused me some issues when I copied it due to it not having the correct indention so fix that.
Step 6
Repeat for any other services you want to add. If they do not have a helper script maybe they have a docker container you can run. I use zola for my blog and they have a clear guide to get that up and running.
ENJOY
Yes I am not technically free of subscriptions and services. This setup requires either a reliance on cloudflare or payment to a VPS service. It relies on tailscal too. But it is a step in the right direction. It is a step towards the internet that I wish existed.