Getting Started
Prerequisites
- Ubuntu 20.04 (or newer) server
- A domain name
- Basic knowledge of Linux commands
Recommended Hardware (to run all services)
- CPU: 8+ cores
- RAM: 32+ GB
Running only a few services should work on a Raspberry Pi 4 with 4 GB of RAM.
Setup your server
In a freshly installed Ubuntu 20.04 (or newer) server, begin by ensuring your system is up to date:
sudo apt update && sudo apt upgrade -y
Install some useful tools:
sudo apt install -y curl git gettext-base nano
RAID storage
If you plan on using local storage and configuring a RAID array, you may want to do this now. We recommend using ZFS to create a RAIDZ1 array 3+ disks (at least, RAIDZ2 preferred). See this guide.
Install K3s
k3s is a lightweight Kubernetes distribution. It's a great choice for our home server because it has a small resource footprint, supports single-node clusters, and supports mounting a local path as a persistent volume.
curl -sfL https://get.k3s.io | sh -
Install Helm
Helm is a package manager for Kubernetes. It allows us to easily install and manage applications on our cluster.
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
Clone this UltimateHomeServer repository
Clone UHS directory containing the Helm charts. It is recommended to clone this repository to /opt/<your domain>
or /opt/uhs
:
git clone https://github.com/TechSquidTV/UltimateHomeServer /opt/<your domain>
Configure a domain name
We will use a domain to access our server locally with a valid SSL certificate.
Before we begin, we will need to know the local IP address of our server. We can find this by running:
ip addr
You should configure your router to assign a static IP address to your server if you have not already.
- Once you have your server's IP address, you can configure a domain name. You can obtain a domain name from a registrar of your choice.
- In the DNS settings for your domain, create an
A
record that points to your server's IP address. - Create a
CNAME
record of*
that points to your domain, this will be used as a wildcard alias for your subdomains.
Configure SSL
Read the SSL guide for instructions on how to configure SSL for your domain using certbot. This step is required.
Configure Services
Read the Configure guide for instructions on how to customize the services you want to deploy.
Deploy Services
Read the Deploy guide for instructions on how to deploy the services.
Verify Services
Read the Troubleshooting guide for instructions on how to verify that the services are running correctly.