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.
  • Subredes Docker: crow-workspace fija 10.89.70.0/24 (scratch: 10.89.71.0/24 smoke, 10.89.72.0/24 restore). No las reutilices.

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
—ninguno. El conflicto 8080 LocalAI/Nextcloud se resolvió el 2026-10-02 (el bundle nextcloud ya no despliega; Crow Workspace usa 3070/3071).

Tabla de asignación ​

PuertoBindingBundle / ServicioEstado
22hostsshd del hostreservado (sistema)
25—correo SMTPreservado (correo, Fase 2)
53hostDNS del host / systemd-resolvedreservado (sistema)
800.0.0.0Caddy (reverse proxy + ACME HTTP-01)MVP PR 0.5
143—correo IMAPreservado (correo, Fase 2)
4430.0.0.0CaddyMVP PR 0.5
465—correo SMTPSreservado (correo, Fase 2)
587—correo submissionreservado (correo, Fase 2)
993—correo 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
3005127.0.0.1sdxl (se cambia con SDXL_PORT; companion lo alcanza en localhost por la red del host)existente
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
5042—rotki (web/API)reservado (finanzas, Fase 2)
5080—plausiblereservado (analítica, Fase 2)
5335127.0.0.1adguard-home (DNS, TCP+UDP)MVP PR 3
5336—pi-hole (DNS)reservado (DNS, Fase 2)
5337—technitium (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
8018127.0.0.1design-kit (puerta del renderizador: Vega-Lite / Mermaid / D2 → SVG; el contenedor de renderizado está en una red Docker interna sin salida; sin regla ufw)Design kit v1
8080127.0.0.1localai (existente)existente
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
8088127.0.0.1valor por defecto de nominatim (NOMINATIM_PORT) — choca con trilium; define NOMINATIM_PORT si usas ambosexistente
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
8456tailnet (Serve)Tailscale Serve HTTPS → 127.0.0.1:3070 (Workspace; nunca Funnel)W1 2026-10
8457tailnet (Serve)Tailscale Serve HTTPS → 127.0.0.1:3071 (editor de Workspace; nunca Funnel)W1 2026-10
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
18018127.0.0.1design-kit, instancia de PRUEBA del renderizador (scripts/design-kit/smoke-renderer.sh; temporal, solo para pruebas)Design kit v1
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.