Afunana is deployed as a set of Docker containers on a single Linux server. No runtimes, packages, or system services are installed on the host beyond Docker itself.
| Container | Role | Notes |
|---|---|---|
afunana-app | Application server, web UI, AI pipeline | Always running |
sqlserver | SQL Server 2022 database | Always running |
caddy | Reverse proxy with automatic TLS | Optional — not started when using an external proxy |
Two deployment modes are supported, depending on whether the customer provides their own reverse proxy.
The included Caddy container handles TLS certificates (Let's Encrypt) and routes all traffic. Users connect on port 443.
The Caddy container is not started. The customer's proxy (F5, nginx, HAProxy, etc.) forwards traffic to 127.0.0.1:18080.
| Port | Mode | Binding |
|---|---|---|
| 443, 80 | Built-in Caddy | 0.0.0.0 (public) |
| 18080 | External proxy | 127.0.0.1 (loopback only) |
| Destination | Port | Required |
|---|---|---|
| IBM i | 8471 (JDBC), 21 (FTP) | Yes |
| LLM provider API | 443 | Only if using a cloud LLM |
| Setting | Value |
|---|---|
| Upstream | http://127.0.0.1:18080 |
| Path | / — all traffic (API and web UI share one port) |
| WebSocket | Enable for /api/chat/* |
| Headers | X-Forwarded-For, X-Forwarded-Proto |
| Protocol | Port | Purpose |
|---|---|---|
| JDBC (jt400) | 8471 | SQL queries, CL commands, job submission |
| FTP | 21 | Source extraction, SAVF transfer |
A small extraction library (TTDOC) is installed in its own library on the IBM i. It reads source members and metadata — it does not modify customer data.