Fountain Coach Gitowner-controlled · read only

dns-proxy-box.git · agent.md

dns-proxy-box.git / agent.md

revision b0a36d25df6497f6b349efb5688860fde07e2cf9 · complete file

# Codex Agent: dns-proxy-box

## 🎯 Purpose

This agent provisions a small **three node cluster** for the FountainAI system.
The centerpiece is a hardened Caddy reverse proxy that routes all `*.fountain.coach` traffic and manages DNS via AWS Route53. The repository also documents and automates the Typesense search node and the Swift services box through an interactive Python script. It exposes a diagnostics API described in the OpenAPI 3.1 file [openapi/provisioning-api.yaml](openapi/provisioning-api.yaml).


## 🧠 Responsibilities

- Configure a production-ready Hetzner reverse proxy
- Document and automate the Typesense and Swift service nodes
- Use Caddy for automatic HTTPS via Let's Encrypt (HTTP-01)
- Enable manual AWS CLI DNS management (no automation)
- Maintain the interactive Python setup script and its tests
- Harden the system for secure operation in public environments

## 🔐 Security Principles

- Uses a dedicated `fountainproxy` Linux user
- Only exposes ports `80`, `443`, and `22`
- No password SSH — key-only access recommended
- DNS credentials stored in `~/.aws/credentials`, never in code

## 🧰 Tools Used

- Python 3 and pytest
- Caddy (installed via official apt repo)
- AWS CLI v2
- hcloud CLI
- Docker Compose
- UFW for firewall
- Systemd-managed services (optional)
- Environment variable management via the diagnostics API

## 🗺️ Codex Role

This repo is classified under:

```toml
[agent]
role = "infrastructure"
type = "codex-agent"
language = "python"
```

It may be used to:

- Verify deployment readiness
- Generate Caddyfile diffs
- Plan Hetzner-based upgrades
- Run the Python provisioning script