Start with Raspberry Pi
The Raspberry Pi is an excellent Single Board Computer (SBC). It has a diminutive footprint, and a surprising amount of compute power. There's a vibrant community of makers and self-hosters so getting support for Raspberry Pi projects is simple.
To get started, first select your Raspberry Pi Device. If you don't have one on hand already, consider what you will want to host on it.
For most light projects, you would be fine with a Pi 3 B+ 1GB. This board is old at this point, but still does fine for applications such as Home Assistant, or Mainsail. It's not as fast as the newer boards, but it can be purchased for $35, and runs with USB Micro power.
If you want to use this device to host something like a local AI instead, you would want something like the Pi 5 8 GB with a TPU Accelerator of some kind.
This is currently a cost-prohibitive approach...
In April of 2026, the **Pi 5** has increased in price drastically since it launched. When I purchased mine, it cost $75, which is already a lot for a single board computer. It now costs over $120. That is approaching double the price that it launched for, and putting you firmly in N150 NUC territory. Hardware shopping is out of scope for this post, but check out [Jeff Geerling's post](https://www.jeffgeerling.com/blog/2025/intel-n100-better-value-raspberry-pi/) about why you may want to consider a small PC, rather than a Pi.And I don't recommend it.
Once you have your Pi in hand, you'll need to set it up with an OS. It may have shipped with RaspberryPi OS installed already, and if so, you can skip to Setting up the Raspberry Pi
Installing RaspberryPi OS
Download the RaspberryPi Imager, on your computer of choice. You will need either a MicroSD card (with a card reader to connect it to your computer), or a USB stick (if you have a Pi 4 or Pi 5)
From the imager, select your Pi in the Device tab. This will filter the available options based on your hardware.
Select Raspberry Pi OS (64-bit), then select your storage location.
BE VERY CAREFUL, as whatever storage location you select will be ERASED. Make sure that you have selected the right drive, and not your photo backups drive.
You will want to attache the MicroSD card or USB stick to your computer, and select it as the target location.
Next it will ask you to enter your hostname.
This is what the server-to-be will announce itself as to the network.
Feel free to pick something sensible, such as raspberrypi-portainer, or something more fun like my-super-awesome-server.
The name must be lower-case, with no spaces, and shouldn't be the same as anything else on your network.
For localization, pick your capital city, time zone, and keyboard layout.
Enter your username and password. Make sure to follow the instructions, and remember what they are, otherwise you will not be able to login and will need to repeat this process.
If you are going to connect the Pi to your network over ethernet, you can skip the WiFi settings page. Otherwise, put in your network name in the SSID field, and the WiFi password in the password fields.
For remote access, leave SSH off for now. It's more secure that way, and we can always enable it later if we need to. You can also leave Raspberry Pi Connect disabled, though it allows you to connect over browser-based screen sharing, or SSH. The only downside is that it requires that you have an account with Raspberry Pi setup. This is free, but an extra step, and we won't need it yet.
Lastly, confirm that your settings are correct, and proceed with writing. After this step, the target drive will be erased, so make triple-sure that it's the right one. Confirm that it should start writing and then wait.
Once the writing is done, the drive is ejected automatically, and it can be disconnected from your computer.
Connect the drive to your Raspberry Pi, and power it on.
Setting up the Raspberry Pi
You will need a power supply for the Pi, a keyboard, a mouse, and a screen. Power the Pi on, and you should see the Raspberry Pi splash screen as it boots. Once its booted you should be able to login and get to the Desktop.
Now, we will need to get Docker installed, and setup Portainer. Portainer is an easy to use Docker orchestrator, that allows you to deploy Docker containers through "App Templates". This makes it simple to browse the available list of self-hosted docker containers, and often deploy them with a single click. There are a plethora of other options for this, such as Yacht, Komodo, Podman, etc. but I personally have the most experience in Portainer.
Installing Docker
First, install Docker. Open the terminal in the Raspberry Pi desktop.
Then run the following commands:
sudo apt update &&\
sudo apt install -y docker.ioThis should install docker, and start the docker service in the background automatically. You can test this by running the following command:
sudo docker run hello-worldYou can close this terminal session now, and start a new one.
If you want to run Docker without prefixing
sudoyou will need to follow the instructions here
Installing Portainer
To install Portainer, run the following commands:
sudo docker volume create portainer_data &&\
sudo docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:stsThat's it!
You can now open your browser on the Raspberry Pi, and navigate to this URL: https://localhost:9443 It will guide you through setting up your Portainer login, and connecting to the local docker socket.
Adding Custom Templates
Portainer comes configured with some built-in templates, but it's a short list. There are template lists on GitHub that contain over 500 self-hosted container templates that can be deployed in Portainer.
This one is my personal favorite: Lissy93
To add a custom template, go to Settings -> General -> App Templates, and paste the following URL:
https://raw.githubusercontent.com/Lissy93/portainer-templates/main/templates.jsonNow, if you connect to the love environment (this tells it to use your local docker socket), and go to Application -> Templates you should see the 500+ options for containers to deploy.
Search your application, and then click Deploy.
If it says "Copy as Custom" instead, these are designed to be setup by the user, with custom environment settings. More difficult to configure than the single-click options, but more flexible.
With that, you are now equipped to deploy as many containers and applications as you wish. You can monitor the status of the Raspberry Pi from the Dashboard, and see how many containers are running and healthy.
For container deployment, make sure that you don't have two that try to use the same host port, or they will not run.
Once you have deployed a container, go to the Containers tab, and view it from there.
That tab will show you which ports the container is advertising, and you should be able to click on a port to open a web page with http://localhost:1234 for example.
Happy self-hosting!