This repository contains the complete configuration and documentation for my personal homelab infrastructure. The setup demonstrates practical knowledge of various technologies including virtualization, containerization, networking, and self-hosted services. All of this achieved with bypassing the lack of the public IP from the ISP.
┌──────────────┐ ┌───────────┐
│ │ │ │
│ Public │ │ Private │
│ Entrypoint │ │ Devices │
│ │ │ │
└───────┬──────┘ └──┬────────┘
│ │ ▲
▼ │ │
┌────────────────┐ │
│ │ │ │
│ Oracle VPS │ │ │
│ (HAProxy) │ │
│ │ │ │
└────────┬───────┘ │ │
│ │
▼ ▼ │
┌────────────────┐ │
DNS (AdGuard Home) │ Tailscale Mesh │
┌── ── ── ── ── ── ── ── ── ───┤ Network ├─── ──┘
└────────┬───────┘
▼ ┌────────────────┐ │
┌───────────────┐ │ │ │
│ Docker │ │ Home Server │ │
│ Containers │◄───┤ (Proxmox) │◄────────┘
└───────────────┘ │ │
└────────────────┘
- Virtualization: Proxmox VE
- Networking: Tailscale, HAProxy, Traefik
- Containerization: Docker, Docker Compose
- Security: CrowdSec, Authentik, Firewall
- Automation: GitHub Actions, Renovate
- Infrastructure as Code: All configurations stored in this repository
Component | Specification | Proxy VPS |
---|---|---|
CPU | Intel Core i5-12600K (6 p-cores, 4 e-cores, 16 threads) | Ampere A1 Flex (4 cores) |
RAM | 32GB DDR4 (2x16GB) | 20 GB |
Storage | 1TB Dahua NVMe SSD + 5x 3TB Refurbished Segate HDD | 10 GB Block Storage |
GPU | Intel UHD Graphics 770 | N/A |
Network | 1Gbps Ethernet + Tailscale VPN | 4Gbps Ethernet + Tailscale |
OS | Proxmox VE 8 | Ubuntu 24.04 Minimal |
The primary server runs Proxmox VE with VM containing various docker containers:
Service | Description |
---|---|
Jellyfin | Media streaming server |
Sonarr | TV show management |
Radarr | Movie management |
Bazarr | Subtitle management |
Jellyseerr | Media request management |
qBittorrent | Download client |
Prowlarr | Indexer management |
Recyclarr | Radarr/Sonarr configuration manager |
Decluttarr | Media organization |
Renamer | Custom media renaming service |
Byparr | Cloudflare Turnstile bypass |
Service | Description |
---|---|
Authentik Server | Identity provider and SSO |
Authentik Worker | Background task processing |
Authentik LDAP | LDAP provider outpost |
PostgreSQL | Database for Authentik |
Redis | Caching for Authentik |
AdGuard Home | DNS-based ad blocking |
CrowdSec | Security automation and threat detection |
Postfix | Reverse mail service for containers |
Service | Description |
---|---|
Traefik | Internal reverse proxy |
HomeAssistant | Home automation |
Homepage | Dashboard for services |
ScanServJS | Scanner web interface |
MSSQL | Microsoft SQL Server |
HTTPD | Web server |
Whoami | Testing service |
A VPS running on Oracle's free ARM tier with:
- HAProxy configured for reverse proxy with Proxy Protocol enabled to bypass CGNat
- Docker & Docker Compose
- Firewall rules:
- Allow HTTP/HTTPS from any source
- Allow SSH only from Tailscale network
Tailscale is utilized for:
- Secure VPN mesh connecting all infrastructure
- SSH authentication
- Automatic DNS configuration with AdGuard Home
- Game server sharing
- Zero-trust network architecture
- Self hosted proxy (Oracle VPS running as an exit node)
- GitHub Actions workflow for automated testing and deployment
- Renovate bot configured for:
- Automatic updates for minor releases
- Pull requests for major version updates
- Ensures infrastructure stays current and secure
Interstellar/
├─ .github/ # GitHub Actions workflows
├─ .vscode/ # VS Code configuration files
├─ .devcontainer/ # Testing environment
├─ Config/ # Template config files for services
├─ Scripts/ # Deploy scripts
├─ compose.*.yaml # Docker Compose files
├─ renovate.json # Renovate configuration
└─ README.md # The file that you're reading
- Domain
- Cloudflare Account
- SMTP Account
- Public IP address
- Start Tailscale with `` for docker IP resolving (may break Tailscale subnet routing)
- Clone this repository
- Rename
*.env.example
files to*.env
- Update the values in the
.env
files - Run
docker compose up -d
- Set up *arr and fill out API keys in .env file
- Setup Authentik with Traefik
- Configure LDAP Authentik with Jellyfin (use manual outpost and set outpost token in
.env
file) - Run
docker compose up -d
again to apply new variables
- Implement proper backup solution
- Expand monitoring capabilities