Selfhosting Wiki

Getting Started

My goal for this wiki is to become a one-stop-shop for selfhosting information. No more incessant googling around to know which file to edit, or which yaml key to change. No more trawling seven year old forum posts only to see “EDIT: SOLVED” without any actual solution.

Basically, If you want to get started, this wiki should provide all the information you need to build a simple, maintainable foundation for the future.

Requirements

  1. A Computer
  2. The Internet

Yes, that’s the bare minimum. In practice there are many considerations to be made but a single old computer can provide a workable foundation. See below for explanations behind many relevant topics. Also check out the Posts section of the site, as I document my homelab and learn new things I will be writing them up and posting them.


Note

Below is a semi-ordered list of topics which explain how I have set up my systems. As I complete each page, I will insert a hyperlink at the topic.

00 - Considerations for Selfhosting

  • What services do I want to host?
  • How much power do I need?
  • Where will I be putting the computer?
  • Will it get hot and loud?
  • How much money can I spend?
  • How will I do backups?
  • How will I access my system?

01 - Virtualization With Proxmox

  1. Baremetal Planning
  2. Proxmox Install and Basic Configuration
  3. PCI(e) Passthrough
  4. Linux Virtual Machines
  5. Linux Containers
  6. Windows Virtual Machines

02 - Networking with RouterOS

  1. Intro to RB5009 and RouterOS
  2. Network Planning
  3. VLANs and Layer 2 configuration
  4. Inter-VLAN routing and Layer 3 configuration
  5. Network Hardening

03 - Storage and Backups

  1. Planning Storage
  2. Planning Backups
  3. Disk Arrays and Filesystems
  4. Network Storage with NFS

04 - Network Infrastructure with FreeIPA

  1. Installing FreeIPA
  2. IPA Configuration
  3. IPA DNS
  4. FreeIPA Woes: Docker and Podman
  5. Kerberized NFS

05 - Infrastructure as Code with GitLab

  1. Deploying GitLab
  2. Deploying GitLab Runners
  3. Intro to Terraform\OpenTofu
  4. GitLab CI/CD
  5. Intro to Ansible
  6. Intro to Cloud-Init

06 - Kubernetes with TalosLinux and FluxCD

  1. Intro to Kubernetes and TalosLinux
  2. Cluster Planning and Deployment
  3. Intro to FluxCD

07 - K8s Cluster Services

  1. GitLab Kubernetes Agent: agentk
  2. Persistent Volume Provisioning: csi-driver-nfs
  3. LoadBalancers: MetalLB
  4. TLS Certificates: cert-manager
  5. External-DNS: FreeIPA
  6. External-DNS: Route53
  7. Ingress: ingress-nginx

08 - Critical Services

  • Authentik

  • GitLab

  • Proxmox

  • Stalwart Mail

09 - Normal Services

  • Actual Budget

  • Alert-Manager

  • Coder

  • Grafana

  • Prometheus

  • Seafile

  • Vaultwarden

10 - AlmaLinux Administration

11 - Custom Solutions

  1. This Website
  2. My Backup System
  3. Strapi Website in Azure

12 - AWS

  1. DNS with Route53
  2. SES
  3. Static Sites with S3 and CloudFront
  4. Lightsail

13 - Microsoft Azure

  1. Azure Container Apps
  2. Entra ID
  3. Microsoft 365: License Management
  4. Microsoft 365: Adding Domains

14 - Other Cloud Platforms

  1. Digital Ocean
  2. Vultr
  3. Hetzner
  4. Backblaze