You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Karan Sharma 2ea7481108 chore: update bookstack URL 1 year ago
floyd chore: update bookstack URL 1 year ago
hetzner/terraform feat: move to terraform for managing services 1 year ago
k8s feat: add hetzner 2 years ago
nginx feat: init 2 years ago
pi feat: cleanup manifests 2 years ago
wireguard fix: handler typo 2 years ago
.gitignore feat: setup tailscale and gitea 1 year ago
LICENSE feat: init 2 years ago feat: cleanup ansible 2 years ago


Setup scripts for my home server setup named "Hydra"


I run a Kubernetes cluster using k3s on Raspberry Pi4 (2x nodes). I've prepared an Ansible Playbook to prepare the base OS (Raspbian Buster Lite), configure some sane defaults and create a k3s cluster.

Getting Started

If you're interested in bootstrapping a RPi cluster with k3s, you can refer to the following instructions to use the Ansible playbook.


  • You need to flash Raspbian OS image on your RPi.
  • You need to enable SSH access, which can be done by sudo touch /boot/ssh.

Running the playbook

  • Copy the inventory.sample to inventory and replace the hosts with your RPi nodes.
  • Replace the pi/roles/raspbian/vars/secret.sample with your own secrets in pi/roles/raspbian/vars/secret.yml. I generally prefer to use Ansible Vault to encrypt the secrets.
  • Run the playbook using ansible-playbook pi/setup.yml. This will configure your RPi for:
    • Changing the default password for pi.
    • Disabling Password based SSH access.
    • Configure hostname on all RPi nodes.
    • Enable cgroups features.
    • Update the GPU memory to lowest possible (16M) since we are going to use this as a server.
    • Bootstrap a k3s cluster on the control-plane node and join a agent node with the control-plane node.


I referred to the following resources while creating the Playbook

Services Hosted

List of services I am running on Hydra.