3.5 KiB
Setting Up Your Personal Cloud
Welcome to your journey toward digital independence! This guide will walk you through setting up your own personal cloud infrastructure using Kubernetes, providing you with privacy, control, and flexibility.
Hardware Recommendations
For a pleasant experience, we recommend:
- A dedicated mini PC, NUC, or old laptop with at least:
- 4 CPU cores
- 8GB RAM (16GB recommended)
- 128GB SSD (256GB or more recommended)
- A stable internet connection
- Optional: additional nodes for high availability
Initial Setup
1. Prepare Environment Variables
First, create your environment configuration:
# Copy the example file and edit with your details
cp .env.example .env
nano .env
# Then load the environment variables
source load-env.sh
Important variables to set in your .env
file:
DOMAIN
: Your domain name (e.g.,cloud.example.com
)EMAIL
: Your email for Let's Encrypt certificatesCLOUDFLARE_API_TOKEN
: If using Cloudflare for DNS
2. Install K3s (Lightweight Kubernetes)
K3s provides a fully-compliant Kubernetes distribution in a small footprint:
# Install K3s without the default load balancer (we'll use MetalLB)
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode=644 --disable servicelb
# Set up kubectl configuration
mkdir -p ~/.kube
sudo cat /etc/rancher/k3s/k3s.yaml > ~/.kube/config
chmod 600 ~/.kube/config
3. Install Infrastructure Components
One command sets up your entire cloud infrastructure:
./infrastructure_setup/setup-all.sh
This installs and configures:
- MetalLB: Provides IP addresses for services
- LongHorn: Provides distributed block storage on the cluster
- Traefik: Handles ingress (routing) with automatic HTTPS
- cert-manager: Manages TLS certificates automatically
- CoreDNS: Provides internal DNS resolution
- ExternalDNS: Updates DNS records automatically
- Kubernetes Dashboard: Web UI for managing your cluster
Adding Additional Nodes (Optional)
For larger workloads or high availability, you can add more nodes:
# On your master node, get the node token
NODE_TOKEN=`sudo cat /var/lib/rancher/k3s/server/node-token`
MASTER_IP=192.168.8.222
# On each new node, join the cluster
curl -sfL https://get.k3s.io | K3S_URL=https://$MASTER_IP:6443 K3S_TOKEN=$NODE_TOKEN sh -
Next Steps
Now that your infrastructure is set up, you can:
- Deploy Applications: See Applications Guide for deploying services and applications
- Access Dashboard: Visit
https://dashboard.internal.yourdomain.com
and use the token from./bin/dashboard-token
- Validate Setup: Run
./infrastructure_setup/validate_setup.sh
to ensure everything is working
Validation and Troubleshooting
Run the validation script to ensure everything is working correctly:
./infrastructure_setup/validate_setup.sh
This script checks:
- All infrastructure components
- DNS resolution
- Service connectivity
- Certificate issuance
- Network configuration
If issues are found, the script provides specific remediation steps.
What's Next?
Now that your personal cloud is running, consider:
- Setting up backups with Velero
- Adding monitoring with Prometheus and Grafana
- Deploying applications like Nextcloud, Home Assistant, or Gitea
- Exploring the Kubernetes Dashboard to monitor your services
Welcome to your personal cloud journey! You now have the foundation for hosting your own services and taking control of your digital life.