Files
homelab/README.md
Julia McGhee 96e3f32f28 Initial monorepo scaffold
Turborepo + pnpm monorepo for k3s homelab cluster on Intel NUCs.

- Apps: Next.js web frontend, Express API (TypeScript, Dockerfiles, k8s manifests)
- Packages: shared UI, ESLint config, TypeScript config, Drizzle DB schemas
- Infra/Ansible: bare-metal provisioning with roles for common, k3s-server, k3s-agent, hardening
- Infra/Kubernetes: ArgoCD GitOps (app-of-apps + ApplicationSets), platform components
  (cert-manager, Traefik, CloudNativePG, Valkey, Longhorn, Sealed Secrets), namespaces
- Observability: kube-prometheus-stack, Loki, Promtail as ArgoCD Applications
- CI/CD: GitHub Actions for PR builds, preview deploys, production deploys
- DX: Taskfile, utility scripts, copier templates, Ubiquiti network docs
2026-03-19 22:24:56 +00:00

75 lines
1.9 KiB
Markdown

# 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
- [Node.js](https://nodejs.org/) >= 20
- [pnpm](https://pnpm.io/) >= 9
- [go-task](https://taskfile.dev/) >= 3
- [kubectl](https://kubernetes.io/docs/tasks/tools/) >= 1.31
- [Helm](https://helm.sh/) >= 3.16
- [Ansible](https://docs.ansible.com/) >= 2.16
- [kubeseal](https://github.com/bitnami-labs/sealed-secrets) >= 0.27
## Quick Start
```bash
# Install dependencies
pnpm install
# Start development
task dev
# Build all apps
task build
```
## Bootstrap Cluster (Day 1)
1. Flash Ubuntu Server 24.04 on NUCs, configure SSH access
2. Configure Ubiquiti Cloud Gateway (see `infra/ubiquiti/`)
3. Provision nodes and install k3s:
```bash
task cluster:bootstrap
task cluster:kubeconfig
```
4. Install platform components:
```bash
task platform:install
```
5. Seal initial secrets:
```bash
task secrets:seal
```
6. 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.