548b0fde9847b9aaa4e6b65bc8fadebbbadd5d36
The standalone next package is trimmed and doesn't include webpack. The custom server.js was using next() which triggers config loading that requires webpack. Fix by extracting the standalone config at build time and setting __NEXT_PRIVATE_STANDALONE_CONFIG before requiring next, matching what the generated standalone server does.
Homelab
Monorepo for self-hosted applications running on a k3s cluster across Intel NUC machines.
What's Inside
- Apps: Next.js frontend, Express API (TypeScript)
- Infrastructure: Ansible provisioning, ArgoCD GitOps, full Kubernetes platform
- Observability: Prometheus, Grafana, Loki
Prerequisites
Quick Start
# Install dependencies
pnpm install
# Start development
task dev
# Build all apps
task build
Bootstrap Cluster (Day 1)
- Flash Ubuntu Server 24.04 on NUCs, configure SSH access
- Configure Ubiquiti Cloud Gateway (see
infra/ubiquiti/) - Provision nodes and install k3s:
task cluster:bootstrap task cluster:kubeconfig - Install platform components:
task platform:install - Seal initial secrets:
task secrets:seal - Push an app — ArgoCD handles the rest
Branch Deploys
Push a branch or open a PR → GitHub Actions builds changed apps → ArgoCD creates a preview namespace → merge to main deploys to production.
Project Structure
homelab/
├── apps/ # Deployable applications
├── packages/ # Shared libraries
├── infra/
│ ├── ansible/ # Bare-metal provisioning
│ ├── kubernetes/ # K8s manifests (ArgoCD, platform, observability)
│ └── ubiquiti/ # Network documentation
├── scripts/ # Utility scripts
├── templates/ # App scaffolding templates
└── Taskfile.yaml # Task runner
License
Private — All rights reserved.
Description
Languages
TypeScript
87.8%
JavaScript
7%
Shell
1.9%
Dockerfile
1.6%
CSS
1.1%
Other
0.6%