Getting Started
Connecting to the Homelab
This guide walks you through connecting to the homelab platform for the first time. You’ll set up VPN access, authenticate with Google, and gain access to all core services.
Prerequisites
Before you begin, ensure you receive from the administrator:
- WireGuard VPN configuration file - Place this file at
/etc/wireguard/<username>-vpn.conf(or similar name) - kubectl configuration file - Merge this with your
~/.kube/config
Step-by-Step Setup
1. Install WireGuard
WireGuard provides secure VPN access to the homelab network.
macOS:
brew install wireguard-toolsLinux (Ubuntu/Debian):
sudo apt update
sudo apt install wireguard wireguard-toolsLinux (Fedora/RHEL):
sudo dnf install wireguard-toolsWindows: Download from wireguard.com/install
2. Install kubectl
kubectl is the Kubernetes command-line tool for interacting with the cluster.
macOS:
brew install kubectlLinux:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectlWindows:
choco install kubernetes-cli3. Install Krew (kubectl plugin manager)
Krew manages kubectl plugins. We’ll use it to install the OIDC login plugin.
macOS/Linux:
(
set -x; cd "$(mktemp -d)" &&
OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
KREW="krew-${OS}_${ARCH}" &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
tar zxvf "${KREW}.tar.gz" &&
./"${KREW}" install krew
)Add krew to your PATH (add to ~/.bashrc, ~/.zshrc, or equivalent):
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"Windows: See krew.sigs.k8s.io/docs/user-guide/setup/install
4. Install kubectl oidc-login plugin
This plugin enables Google OIDC authentication for kubectl.
kubectl krew install oidc-login5. Configure VPN
Place your VPN configuration file in the WireGuard directory:
macOS/Linux:
sudo cp <username>-vpn.conf /etc/wireguard/
sudo chmod 600 /etc/wireguard/<username>-vpn.conf6. Configure kubectl
Merge the provided kubeconfig with your existing configuration:
Backup existing config:
cp ~/.kube/config ~/.kube/config.backupMerge configs:
# If you received a standalone kubeconfig file:
export KUBECONFIG=~/.kube/config:~/path/to/homelab-kubeconfig.yaml
kubectl config view --flatten > ~/.kube/config.tmp
mv ~/.kube/config.tmp ~/.kube/config
chmod 600 ~/.kube/configOr simply copy the provided config to ~/.kube/config if you don’t have an existing configuration.
7. Connect to VPN
Start the WireGuard VPN connection:
macOS/Linux:
sudo wg-quick up <username>-vpnVerify connection:
sudo wg showYou should see connection details including peer information and handshake timestamps.
To disconnect later:
sudo wg-quick down <username>-vpn8. Verify Kubernetes Access
Test your kubectl access. This will trigger Google OAuth authentication:
kubectl get pods -AExpected behavior:
- Your browser opens automatically
- Google login page appears
- Authenticate with your Google account
- You’ll see a success message
- kubectl displays all pods across all namespaces
Troubleshooting:
- If browser doesn’t open, copy the URL from terminal and paste into your browser
- Ensure you’re using a Google account authorized by the homelab administrator
- Check VPN is connected:
sudo wg show
9. Access Gitea (Git Server)
Gitea is the internal Git server and CI/CD platform.
- Navigate to: https://gitea.homelab.int.zengarden.space/
- Click “Sign in with Google”
- Create account:
- Username format:
<firstname><first_letter_lastname> - Example: For “John Doe” use
johnd
- Username format:
- Request access: Contact the administrator to be added to the
zengarden-spaceorganization
Note: You won’t have repository access until added to the organization.
10. Request Organization Membership
Contact the homelab administrator with:
- Your Gitea username
- Your Google email address
- Brief description of what you’d like to work on
The administrator will add you to the zengarden-space organization, granting you access to repositories and CI/CD pipelines.
11. Access ArgoCD (GitOps)
ArgoCD manages continuous deployment of applications to the cluster.
- Navigate to: https://argocd.homelab.int.zengarden.space/
- Click “Login via Google”
- Authenticate with your Google account
You’ll see all applications deployed in the cluster and their sync status.
Permissions:
- Read-only access by default
- Write access granted on request basis
12. Access Metabase (Analytics)
Metabase provides business intelligence and analytics dashboards.
- Navigate to: https://metabase.homelab.int.zengarden.space/
- Click “Sign in with Google”
- Authenticate with your Google account
Available data sources:
- PostgreSQL databases managed by CloudNativePG
- Automatically discovered databases via custom operator
Quick Reference
VPN Commands
# Connect to VPN
sudo wg-quick up <username>-vpn
# Disconnect from VPN
sudo wg-quick down <username>-vpn
# Check VPN status
sudo wg show
# View VPN configuration
sudo cat /etc/wireguard/<username>-vpn.confkubectl Commands
# View all pods
kubectl get pods -A
# View cluster nodes
kubectl get nodes
# Check your authentication
kubectl auth whoami
# Switch context (if multiple clusters)
kubectl config get-contexts
kubectl config use-context homelab
# View cluster info
kubectl cluster-infoService URLs
| Service | URL | Purpose |
|---|---|---|
| Gitea | gitea.homelab.int.zengarden.space | Git server & CI/CD |
| ArgoCD | argocd.homelab.int.zengarden.space | GitOps deployment |
| Metabase | metabase.homelab.int.zengarden.space | Analytics & BI |
Troubleshooting
VPN Connection Issues
Problem: wg-quick up fails
Solutions:
# Check WireGuard is installed
which wg
# Verify config file exists and has correct permissions
ls -la /etc/wireguard/<username>-vpn.conf
# Check for port conflicts
sudo lsof -i :51820
# View system logs
sudo journalctl -u wg-quick@<username>-vpn -fkubectl Authentication Issues
Problem: kubectl get pods returns authentication error
Solutions:
# Verify kubeconfig
kubectl config view
# Check current context
kubectl config current-context
# Manually trigger OIDC login
kubectl oidc-login setup --oidc-issuer-url=https://accounts.google.com
# Remove cached credentials
rm ~/.kube/cache/oidc-login/*Browser Doesn’t Open for OAuth
Problem: OIDC authentication doesn’t open browser
Solutions:
- Copy the URL from terminal output
- Paste into your browser manually
- Complete authentication
- Return to terminal
Permanent fix (optional):
# Set default browser (macOS)
export BROWSER=open
# Set default browser (Linux)
export BROWSER=xdg-openCannot Access Internal Services
Problem: https://gitea.homelab.int.zengarden.space not accessible
Checklist:
- VPN connected:
sudo wg showshould show active connection - DNS resolution:
nslookup gitea.homelab.int.zengarden.space - Network connectivity:
ping 192.168.77.1 - Service status:
kubectl -n gitea get pods
Security Notes
VPN Configuration
- Keep your VPN configuration file secure
- Do not commit VPN configs to version control
- VPN configuration includes your private key
- If compromised, contact administrator immediately
kubeconfig
- Store kubeconfig in
~/.kube/configwith0600permissions - Never commit kubeconfig to version control
- Contains cluster certificates and authentication details
Google OAuth
- Use a personal or work Google account
- Only authorized email addresses can access services
- OAuth tokens cached in
~/.kube/cache/ - Tokens expire and auto-refresh
Next Steps
Once connected, explore:
- Core Platform - Understand platform services
- Applications - Deploy your first application
- Operations - Learn about monitoring and maintenance
Getting Help
If you encounter issues:
- Check this troubleshooting section first
- Review service logs:
kubectl logs -n <namespace> <pod> - Contact the homelab administrator
- Join the team communication channel
Welcome to the homelab! You’re now connected to a production-grade Kubernetes platform.