If you’re thinking of getting into self-hosting, Tailscale is a great networking solution that further boosts your privacy and security. Think of the last time you took a photo with your phone. What happens to that photo when it gets sent to Google or iCloud? In many instances, cloud storage companies can scan that image and add it to their databases, while you don't have much say over your privacy.
Alternatively, self-hosting allows you to keep your things on hardware you own and manage. This can include personal information, photos, data, and more. Tailscale can then securely connect to your self-hosted storage. In this tutorial, we’ll start by picking out hardware and installing Proxmox.
In the past, people commonly used a device called a Raspberry Pi for self-hosting. It’s a single-board computer with a CPU, RAM, network ports, and USB. However, some Raspberry Pi models can be slow and difficult to connect to devices. Hard drives can only be attached using USB, and bandwidth is shared between the USB and Ethernet, hampering performance.
Given those limitations, I recommend using a small form factor PC from Dell for your storage device. I’m specifically using a fully-fledged x86 PC because it has a lot of backward compatibility and is also very expandable. You can find similar devices here for a reasonable price.
Proxmox download page
The first step to self-hosting is installing an operating system (OS) on your device. This requires flashing an ISO onto a USB stick to turn it into a bootable drive. We’ll use Proxmox as our OS and a tool called balenaEtcher to create our bootable drive.
For MacOS:
Once the Proxmox ISO has been flashed on your USB, there are a few more steps before you can power on your storage device. First, you’ll need to give it networking capabilities, and for this tutorial's purpose, we’re using a Ubiquiti networking switch. Using Ubiquiti isn’t mandatory, but I recommend it because software-managed switches allow you to carve up the switch into different VLANs for more versatility.
To add networking to your storage device with your Ubiquiti switch:
Alex holding a Ubiquiti switch
Finally, to complete your setup, you’ll need a keyboard, mouse, and some kind of monitor. For physical hardware, you can simply plug these devices into your storage device.
If you don’t have all this hardware, next I’ll show you how to use a Jet KVM to emulate all of those devices virtually.
Alex holding a Jet KVM
A Jet KVM emulates a keyboard, monitor, and mouse in a small, Apple Watch-sized device. To connect it:
192.168.1.70).You should see that your storage device boots from your USB stick, and you can select either a graphical or terminal interface. For demonstration purposes, we’re using graphical.
Alex installing Proxmox
The next step is to install Proxmox from the USB stick onto your storage device. It will essentially act as the foundational layer of your self-hosting home lab platform.
Proxmox is known as a hypervisor, which means it can run virtual machines and containers for you. This allows you to divide one machine into multiple machines, so you can have unique containers for apps like Immich, Plex, or Jellyfin.
Installing Proxmox is very straightforward. Simply click through the prompts during installation: agree to the license, select your drive, and pick your country and timezone. Then select a root password and choose an email address to receive Proxmox alerts.
At this step, please take note of the “Management interface” you select, since you may be presented with multiple options.
Finally, you want to set a static IP address for this system. (For example: 192.168.1.10, though you can select whatever you prefer within your network’s range).
Alex runing the PromoxVE script
Once Proxmox has been installed and your computer has rebooted, you can remove your USB drive and start optimizing the self-hosting settings. We’ll be using Proxmox VE Helper-Scripts, which is a collection of tools to simplify the setup and management of Proxmox Virtual Environment:
SSH root@ + the IP address of your storage device. In this example, that's 192.168.1.10While we recommend you check the link for the most up-to-date script, here it is at the time of this writing:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/post-pve-install.sh)"
This code allows you to adjust Proxmox settings instead of accepting the defaults. For example, several enterprise repos in Proxmox require a subscription. So, if you don’t have one, I recommend answering the settings prompts as follows:
Alex going through the ProxmoxVE installation questions
Once those are set, you’ll want to manually update your package list through apt with the “update” command in the Proxmox terminal.
apt update
This process will fetch the latest versions of all the packages from Debian. Afterward, install the packages and bring your Proxmox installation up to date with the following command:
pveupgrade
I recommend installing a new kernel and updating Python, Proxmox, and PVE because the ISO may be behind the current version. To do this, go to https://192.168.1.10:8006 in a browser.
Since this is a self-signed certificate, you’ll encounter a warning saying, "Your connection is not private". You can safely disregard this message and log in with your root username and password using the standard Linux PAM authentication.
Now you have a fully functional Proxmox box. You can create virtual machines and containers, and start your self-hosted journey. You can now use this command in the Proxmox terminal to clean up any used packages:
apt autoremove
The final step is to reboot your storage device since a fresh kernel was just applied.
You can jump back to Jet KVM (or your monitor) and watch the reboot process happen in real time. Once the box has rebooted, you can try installing some applications!
Ubiquiti dashboard information
Now that your self-hosting system is up and running, you may be wondering about the basic network fundamentals in a self-hosting system. If you’re wondering, “Where do I get my gateway IP?” or “How do I know what my DNS server is?” it's all presented to you in a dashboard by Ubiquiti, which is one of the reasons I recommend it. Their switches communicate with the firewall or router and present this information in one place.
In our example, you’ll see that the gateway IP is 192.168.1.254. This refers to the firewall managing routing into and out of the network to the internet service provider. The UniFi box also functions as the DNS server, and that's a pretty common setup for most networks.
Now that you have a self-hosting system, you can enjoy complete control over whatever you’d like to store–no third-party servers or storage required. Now you can use Tailscale to send content directly to your storage device for maximum security, so you’ll have true peace of mind regarding your information and privacy.
If you want to keep searching, though, you can stay involved in the Tailscale community — in our YouTube comments, on the bustling subreddit, and in replies on X, on Mastodon, and newly on Bluesky. We love getting feedback on Tailscale and want to hear from you.