Commit graph

8 commits

Author SHA1 Message Date
Eric Garcia
1dfaf86783 Add MuffinLabs SSL configuration for hearth
Kubernetes manifests for muffinlabs.ai SSL via cert-manager:
- Namespace
- Certificate (Let's Encrypt via letsencrypt-production ClusterIssuer)
- Traefik IngressRoute with TLS
- HTTP to HTTPS redirect middleware
- www to apex redirect middleware

Part of RFC 0002: amplify-deployment

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 12:07:12 -05:00
Eric Garcia
3879d2fe35 fix: install Traefik CRDs for IngressRouteTCP SSH routing
The IngressRouteTCP resource was being silently ignored because
Traefik CRDs were never installed. This caused SSH traffic on
port 22 to be handled as HTTP, returning 400 Bad Request.

Add CRD installation step before Traefik deployment.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 13:00:28 -05:00
Eric Garcia
f23ea198f0 docs: Update documentation for minimal k3s architecture
Reflect current state:
- k3s on single EC2 spot instance (~$7.50/month)
- Forgejo, PowerDNS, Traefik running
- Remove outdated EKS/CockroachDB references

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 09:03:51 -05:00
Eric Garcia
da40273177 feat(dns): Add self-hosted PowerDNS for 5 managed domains
- Deploy PowerDNS on k3s with SQLite backend
- Add DNS ports 53 UDP/TCP to security group
- Configure zones for superviber.com, muffinlabs.ai, letemcook.com,
  appbasecamp.com, thanksforborrowing.com
- Add deploy-powerdns.sh standalone deployment script
- Document in RFC 0003

Glue records updated at GoDaddy to point ns1/ns2 to 3.218.167.115.
DNS verified working via Google DNS (8.8.8.8).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 07:42:48 -05:00
Eric Garcia
0d904fe130 fix(minimal): Replace Traefik HelmChart with direct deployment
HelmChart values schema changed in newer Traefik versions causing
installation failures. Replaced with direct Deployment + RBAC manifests
which work reliably with Traefik v3.2.

Also adds SSH public key variable for admin access.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 06:42:32 -05:00
Eric Garcia
c5b5945b46 fix(minimal): Fix template variable names and S3 lifecycle
- Use lowercase terraform template vars in user-data.sh
- Increase S3 lifecycle transition to 30 days (STANDARD_IA minimum)
- Increase expiration to 60 days

Infrastructure successfully deployed:
- Instance: i-06e1198106d251a0e
- Elastic IP: 54.82.131.189
- Backup bucket: hearth-backups-181640953119

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 06:26:05 -05:00
Eric Garcia
b1065ca887 feat(minimal): Add k3s-on-EC2 infrastructure for single user
Decision from 12-expert alignment dialogue on single-user scale.
Implements Option E with modifications:

- t4g.small spot instance (~$5/mo)
- k3s with Traefik for ingress + Let's Encrypt TLS
- SQLite database for Forgejo
- S3 backups with 30-day lifecycle
- EBS gp3 20GB encrypted
- Admin SSH on port 2222, Git SSH on port 22

Total cost: ~$7.50/month

Includes:
- terraform/minimal/ - full terraform configuration
- terraform/bootstrap/ - state backend (already applied)
- docs/spikes/0001-single-user-scale.md - decision documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 06:21:55 -05:00
Eric Garcia
e78000831e Initial commit: Port infrastructure from coherence-mcp
Hearth is the infrastructure home for the letemcook ecosystem.

Ported from coherence-mcp/infra:
- Terraform modules (VPC, EKS, IAM, NLB, S3, storage)
- Kubernetes manifests (Forgejo, ingress, cert-manager, karpenter)
- Deployment scripts (phased rollout)

Status: Not deployed. EKS cluster needs to be provisioned.

Next steps:
1. Bootstrap terraform backend
2. Deploy phase 1 (foundation)
3. Deploy phase 2 (core services including Forgejo)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 06:06:13 -05:00