Julia McGhee 3c4ff6fb9f
All checks were successful
CI / lint-and-test (push) Successful in 30s
Deploy Production / deploy (push) Successful in 31s
CI / build (push) Successful in 29s
Add Garage S3-compatible object store to platform
Cluster-local object store for build artifacts (CLI binaries etc.)
so Docker builds don't depend on flaky external downloads.

- Single-node Garage v1.0.1 StatefulSet (LMDB, replication=1)
- Metadata on longhorn-nvme (1Gi), data on longhorn HDD (20Gi)
- S3 API at garage.platform.svc:3900
- External ingress at s3.coreworlds.io (internal-only)
- SealedSecret for admin token and RPC secret
2026-03-22 09:38:47 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00

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)

  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:
    task cluster:bootstrap
    task cluster:kubeconfig
    
  4. Install platform components:
    task platform:install
    
  5. Seal initial secrets:
    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.

Description
No description provided
Readme 2 MiB
Languages
TypeScript 94.3%
JavaScript 2.1%
Shell 1.3%
Dockerfile 1.2%
CSS 0.7%
Other 0.4%