Skip to content

Registro de asignación de puertos

Este documento es la única fuente de verdad para cada puerto del host consumido por Crow mismo, por los bundles en bundles/ y los reservados por la hoja de ruta del MVP. Cualquier PR de un bundle nuevo que introduzca un binding de puerto debe modificar este archivo en el mismo PR. El CI verifica que:

  1. Cada puerto del host en cualquier bundles/**/docker-compose.yml esté listado aquí.
  2. Ningún par de bundles mapee el mismo puerto del host.

Convenciones

  • Todos los puertos de los bundles se vinculan a 127.0.0.1, a menos que el bundle sea explícitamente un reverse proxy (Caddy) o use network_mode: host (browser, companion, coturn, plex, tailscale, crowdsec-firewall-bouncer).
  • Las filas "existente" son bundles que ya se publicaron antes de que se introdujera este registro — se registran aquí para que los bundles futuros los eviten.
  • Las filas "reservado" están reclamadas por bundles próximos de la Fase 2; no las consumas para trabajo no relacionado.
  • Las filas "MVP" están reclamadas por los bundles del plan MVP actual.

Conflictos conocidos en el bundles/ actual

Estos son anteriores a este registro y necesitan una resolución de seguimiento fuera del alcance del MVP:

PuertoConflicto
8080LocalAI y Nextcloud se vinculan ambos a 127.0.0.1:8080 — no pueden ejecutarse simultáneamente

Tabla de asignación

PuertoBindingBundle / ServicioEstado
22hostsshd del hostreservado (sistema)
25correo SMTPreservado (correo, Fase 2)
53hostDNS del host / systemd-resolvedreservado (sistema)
800.0.0.0Caddy (reverse proxy + ACME HTTP-01)MVP PR 0.5
143correo IMAPreservado (correo, Fase 2)
4430.0.0.0CaddyMVP PR 0.5
465correo SMTPSreservado (correo, Fase 2)
587correo submissionreservado (correo, Fase 2)
993correo IMAPSreservado (correo, Fase 2)
2222(evitar: puerto sshd anti-escaneo común en hosts)evitar
2019127.0.0.1API de administración de Caddy (local del host)MVP PR 0.5
2223127.0.0.1gitea (SSH)MVP PR 5
2224127.0.0.1forgejo (SSH)MVP PR 5
2283127.0.0.1immich (existente — verificar en el compose)existente
3001127.0.0.1gateway de Crow (HTTPS)core
3002127.0.0.1gateway de Crow (alterno)core
3004127.0.0.1gateway de Crow (alterno)core
3007127.0.0.1uptime-kumaMVP PR 1
3020127.0.0.1adguard-home (UI de administración)MVP PR 3
3030127.0.0.1homepageMVP PR 1
3040127.0.0.1gitea (web)MVP PR 5
3050127.0.0.1forgejo (web)MVP PR 5
3080127.0.0.1romm (existente)existente
3456127.0.0.1vikunja (existente)existente
4533127.0.0.1navidrome (existente)existente
5000127.0.0.1kavita (existente)existente
5006127.0.0.1actual-budget (existente)existente
5010127.0.0.1changedetectionMVP PR 1
5042rotki (web/API)reservado (finanzas, Fase 2)
5080plausiblereservado (analítica, Fase 2)
5335127.0.0.1adguard-home (DNS, TCP+UDP)MVP PR 3
5336pi-hole (DNS)reservado (DNS, Fase 2)
5337technitium (DNS)reservado (DNS, Fase 2)
6080127.0.0.1browser (noVNC, existente)existente
6875127.0.0.1bookstack (existente)existente
8000127.0.0.1paperless (existente)existente
8004127.0.0.1faster-whisper-server (STT local)existente
8080127.0.0.1localai (existente) — también nextcloud, conflictoexistente
8081127.0.0.1calibre-server (existente)existente
8083127.0.0.1calibre-web (existente)existente
8084127.0.0.1wallabag (existente)existente
8085127.0.0.1miniflux (existente)existente
8086127.0.0.1shiori (existente)existente
8088127.0.0.1trilium (existente)existente
8091127.0.0.1crowdsec (LAPI)MVP PR 4
8092127.0.0.1stirling-pdfMVP PR 1
8094127.0.0.1gatusMVP PR 2
8095127.0.0.1dozzleMVP PR 2
8096127.0.0.1jellyfin (existente)existente
8097127.0.0.1vaultwardenMVP PR 5
8098127.0.0.1searxngMVP PR 5
8530127.0.0.1adguard-home (DNS-over-TLS)MVP PR 3
8554127.0.0.1frigate (retransmisión RTSP)existente
8555127.0.0.1frigate (WebRTC)existente
8765127.0.0.1motioneyeexistente
8880127.0.0.1kokoro-tts (TTS local)existente
8971127.0.0.1frigate (UI autenticada)existente
9000127.0.0.1minio (API S3, existente)existente
9001127.0.0.1minio (consola, existente)existente
9090127.0.0.1linkding (existente)existente
11434127.0.0.1ollama (existente)existente
13378127.0.0.1audiobookshelf (existente)existente
18789127.0.0.1openclaw-old-docker (proceso externo preexistente)existente
19999127.0.0.1netdataMVP PR 2
32400hostplex (red del host, existente)existente

Bundles con red del host (sin binding a 127.0.0.1 — usan el stack del host directamente)

Estos bundles usan network_mode: host. Consumen directamente en el host los puertos que su servicio upstream espera:

  • browser (Chrome DevTools — verificar puertos)
  • companion (verificar)
  • coturn (3478 UDP, más los puertos de escucha de turnserver)
  • plex (32400, más los puertos de descubrimiento)
  • tailscale (MagicDNS, conexiones con peers)
  • crowdsec-firewall-bouncer (aplazado al PR 4.5 — el upstream no publica una imagen de Docker; necesita un Dockerfile propio y un comando de reversión probado y verificado en un host desechable) — necesitará la red del host para manipular iptables/nftables

Proceso para modificar este archivo

  1. Elige un puerto sin asignar en un rango razonable (UIs de administración en 3000-3099, APIs de backend en 8000-8099, métricas en 19000-19999).
  2. Agrega una fila a la tabla con el nombre del bundle y el PR/estado.
  3. La verificación de colisión de puertos del CI (el job static-checks en .github/workflows/test.yml) comprueba que tu puerto nuevo no choque con otro.
  4. Referencia este archivo en la descripción del PR de tu bundle.

Released under the MIT License.