Skip to main content

Getting Started

Prerequisites

  • Ubuntu 20.04 (or newer) server
  • A domain name
  • Basic knowledge of Linux commands
  • 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.

  1. 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.
  2. In the DNS settings for your domain, create an A record that points to your server's IP address.
  3. Create a CNAME record of * that points to your domain, this will be used as a wildcard alias for your subdomains.

DNS Settings

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.