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
- A Computer
- 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.
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
- Baremetal Planning
- Proxmox Install and Basic Configuration
- PCI(e) Passthrough
- Linux Virtual Machines
- Linux Containers
- Windows Virtual Machines
02 - Networking with RouterOS
- Intro to RB5009 and RouterOS
- Network Planning
- VLANs and Layer 2 configuration
- Inter-VLAN routing and Layer 3 configuration
- Network Hardening
03 - Storage and Backups
- Planning Storage
- Planning Backups
- Disk Arrays and Filesystems
- Network Storage with NFS
04 - Network Infrastructure with FreeIPA
- Installing FreeIPA
- IPA Configuration
- IPA DNS
- FreeIPA Woes: Docker and Podman
- Kerberized NFS
05 - Infrastructure as Code with GitLab
- Deploying GitLab
- Deploying GitLab Runners
- Intro to Terraform\OpenTofu
- GitLab CI/CD
- Intro to Ansible
- Intro to Cloud-Init
06 - Kubernetes with TalosLinux and FluxCD
- Intro to Kubernetes and TalosLinux
- Cluster Planning and Deployment
- Intro to FluxCD
07 - K8s Cluster Services
- GitLab Kubernetes Agent: agentk
- Persistent Volume Provisioning: csi-driver-nfs
- LoadBalancers: MetalLB
- TLS Certificates: cert-manager
- External-DNS: FreeIPA
- External-DNS: Route53
- 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
- This Website
- My Backup System
- Strapi Website in Azure
12 - AWS
- DNS with Route53
- SES
- Static Sites with S3 and CloudFront
- Lightsail
13 - Microsoft Azure
- Azure Container Apps
- Entra ID
- Microsoft 365: License Management
- Microsoft 365: Adding Domains
14 - Other Cloud Platforms
- Digital Ocean
- Vultr
- Hetzner
- Backblaze