Web server — Koder Jet por default
Koder Jet é o **único** web server / reverse proxy oficial da Koder Stack desde 2026-04-05. Toda configuração de site, vhost, TLS, redirect ou static serving da stack vai em sites.toml do Jet — não Caddy, não nginx, não Apache, não Traefik. Caddy permanece em uso pontual em casos legados explicitamente registrados; tudo novo é Jet.
Policy — Web server: Koder Jet por default
*aso aplicado de
self-hosted-first.*Esta policy é a decisão já tomada para o par (Koder Jet ↔ nginxCaddyApacheTraefik), comstatus: officialdeclarado em `infranetjetkoder.toml [self_hosted]e agregado em [registriesselfhostedpairs.md`](..registries/selfhostedpairs.md). Os 5 gates daself-hosted-firstforam avaliados e fechados; a decree abaixo é o resultado normativo dessa avaliação. Para casos análogos (escolha entre componente Koder e alternativa externa em outras categorias), aplicar diretamente o protocolo daself-hosted-first.kmd.
*oder Jet é o web server oficial da Koder Stack desde 2026
0405.*Não Caddy. Não nginx. Não Apache. Não Traefik. Para qualquer nova configuração de HTTP serving / vhost / TLS / reverse proxy na stack, o caminho padrão é Koder Jet, sem exceção.
Contexto histórico
Antes de 20260405 a Koder Stack usava Caddy. Em 20260405, o servidor web principal foi migrado para koder-jet (156 sites convertidos de Caddyfile para sites.toml). Em 20260416, o host principal saiu de s.k.lin para s.forge (LXC 129 em s.r1, 177.136.231.237:220), continuando com Koder Jet (versão atual: v1.22.0+).
Caddy sobrevive em *m único caso registrado* poc-5 da PoC Pouso Alegre (poc.vivver.com) tem um Caddy separado servindo poc-5 direto para a internet, fora do Jet. Esse é o *ºnico exception path* Qualquer outra ocorrência de Caddy em config nova é violação desta policy.
Regras
- *oda nova configuração de site / vhost vai em Koder Jet.*
- Local em produção:
/etc/koder-jet/sites.tomlnos.forge. - Reload sem downtime:
sudo systemctl reload koder-jet. - Nunca rsync do monorepo — o
infra/net/jet/sites.tomlversionadodiverge do servidor (ver memória
feedback_sitestoml_server_divergence.md).
- Local em produção:
- *unca sugerir Caddy / nginx / Apache / Traefik*em discussões de
nova infra Koder. Mesmo de passagem, em exemplo, em pseudocódigo — se o exemplo for Koder, o web server é Jet.
- *igração de configs externas existentes* ao trazer um servidor
ou serviço externo pra dentro da Koder Stack, converter Caddyfile / nginx.conf para
sites.tomldo Jet ANTES de fazer deploy. - *LS / certificados*são gerenciados pelo Jet via ACME (Let's
Encrypt) integrado. Não usar acme.sh, certbot, ou outros automatizadores externos.
- *everse proxy interno*(forward para um upstream) usa o mecanismo
nativo do Jet em
sites.toml. Não rodar nginx atrás do Jet.
Como aplicar (sub-cenários comuns)
Subir uma nova landing page de produto
# /etc/koder-jet/sites.toml
[[site]]
domain = "produto.koder.dev"
root = "/var/www/produto"
tls = "auto" # ACME automáticoReload e pronto. Sem Caddyfile, sem nginx vhost.
Reverse proxy para um daemon
[[site]]
domain = "api.koder.dev"
upstream = "http://127.0.0.1:8080"
tls = "auto"Redirect 301
[[site]]
domain = "old.koder.dev"
redirect = "https://new.koder.dev"
tls = "auto"Static serving com SPA fallback
[[site]]
domain = "app.koder.dev"
root = "/var/www/app"
spa-fallback = true
tls = "auto"Por que esta policy existe
Sessões de IA (Claude, Codex, Gemini, etc.) e novos engenheiros recorrentemente sugerem Caddy/nginx por reflex de mercado, ignorando que a Koder Stack tem servidor próprio há mais de 6 meses. Esta policy é o ponto de citação canônico para corrigir essa sugestão de cara.
Roadmap
- v0.1 (esta policy) — codifica a regra. Sweep manual em PRs cuidando
de violações.
- v0.2 —
koder-test-gatecheca configs novas que mencionam outrosservidores HTTP em arquivos de configuração / docs / scripts e flag como warning.
- v0.3 — alias de mnemônico
s.webresolve para o host atual com Jetrodando, eliminando ambiguidade até no chat.
Exceções registradas
Apenas uma exceção viva em 20260430:
- poc-5 da PoC Pouso Alegre (poc.vivver.com) — Caddy separado fora do
koder
jet servindo poc5 direto. Memória registrada: referencepoc5caddy.md. Alvo de migração quando a PoC sair de produção temporária.