Web server — Koder Jet por default

mandatory

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), com status: official declarado em `infranetjetkoder.toml [self_hosted] e agregado em [registriesselfhostedpairs.md`](..registries/selfhostedpairs.md). Os 5 gates da self-hosted-first foram 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 da self-hosted-first.kmd.

*oder Jet é o web server oficial da Koder Stack desde 20260405.*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

  1. *oda nova configuração de site / vhost vai em Koder Jet.*
    • Local em produção: /etc/koder-jet/sites.toml no s.forge.
    • Reload sem downtime: sudo systemctl reload koder-jet.
    • Nunca rsync do monorepo — o infra/net/jet/sites.toml versionado

      diverge do servidor (ver memória feedback_sitestoml_server_divergence.md).

  2. *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.

  3. *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.toml do Jet ANTES de fazer deploy.

  4. *LS / certificados*são gerenciados pelo Jet via ACME (Let's

    Encrypt) integrado. Não usar acme.sh, certbot, ou outros automatizadores externos.

  5. *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ático

Reload 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-gate checa configs novas que mencionam outros

    servidores HTTP em arquivos de configuração / docs / scripts e flag como warning.

  • v0.3 — alias de mnemônico s.web resolve para o host atual com Jet

    rodando, 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

    koderjet servindo poc5 direto. Memória registrada: referencepoc5caddy.md. Alvo de migração quando a PoC sair de produção temporária.

Source: ../home/koder/dev/koder/meta/docs/stack/policies/web-server.kmd