Skip to content

Instalación y operaciones de Coblyn ​

●  Instalacionv1.17.0 Release GateNivel · AdministradorÚltima rev · 27 jun 2026

Coblyn se instala como un appliance Docker on-premise. Desde v1.17.0 "Release Gate", arranca sólo con configuración segura, imágenes versionadas y un camino operativo para diagnóstico, backup y upgrade.

Sin credenciales por defecto

El modo production falla al arrancar si detecta secretos vacios, placeholders o CORS_ORIGINS=*. Si vienes de una guia antigua que usaba admin/admin o admin/coblyn, descartala.

Alcance soportado ​

AreaEstado actual
Host recomendadoUbuntu Server 24.04 LTS amd64 o Debian 12 amd64
RuntimeDocker 24+ con Docker Compose V2
Red PXEInterfaz fisica o bridged con conectividad L2 a la VLAN de despliegue
AlmacenamientoStorage Hub con pools NFS o SMB/CIFS desde la UI
Windows Server como hostNo es objetivo de produccion todavia
Version documentadav1.17.0 "Release Gate"

Para una PoC sin DHCP/PXE real, usa --testing --wizard; el instalador evita activar el plano PXE y expone la UI en un puerto de pruebas.

Puertos ​

ServicioPuertoProtocoloExposicion
Web UI / API via nginx${WEB_PORT:-80}TCPUsuarios y agentes
TFTP69UDPClientes PXE
DHCP / Kea67/68UDPRed host, interfaz PXE
RustDesk hbbs21115, 21116, 21118TCPSoporte remoto
RustDesk hbbs heartbeat21116UDPSoporte remoto
RustDesk hbbr21117, 21119TCPRelay remoto

PostgreSQL, Redis y backend viven en la red Docker interna 10.150.0.0/24; no abras esos puertos al exterior. El backend controla Kea mediante el socket Unix compartido /run/kea/kea-dhcp4-ctrl.sock, sin Control Agent ni API HTTP publicada.

Instalacion limpia ​

1. Preparar el servidor ​

Usa una maquina limpia con una NIC dedicada o bridged para la VLAN de despliegue. Evita NAT si necesitas DHCP/PXE.

bash
ip -brief addr
ip route

Anota:

  • Interfaz PXE, por ejemplo eth0 o ens192.
  • IP fija del servidor en esa VLAN.
  • Gateway, DNS y rango DHCP autorizado.
  • Rango de cuarentena para equipos desconocidos.

2. Descargar y verificar el bootstrapper ​

Descarga una versión explícita en un directorio privado, valida el checksum e inspecciona el script antes de elevar privilegios:

bash
install -d -m 0700 "$HOME/coblyn-bootstrap"
cd "$HOME/coblyn-bootstrap"
curl --proto '=https' --tlsv1.2 -fSLO \
  https://get.coblyn.gksistemas.es/releases/download/v1.17.0-rc.5/setup.sh
curl --proto '=https' --tlsv1.2 -fSLO \
  https://get.coblyn.gksistemas.es/releases/download/v1.17.0-rc.5/setup.sh.sha256
sha256sum --check setup.sh.sha256
less setup.sh

Para la primera instalación, usa el asistente y el perfil Web/API:

bash
sudo bash ./setup.sh --release 1.17.0-rc.5 --testing --wizard

El bootstrapper descarga el tarball inmutable y su checksum, rechaza rutas o tipos de fichero inseguros, instala en /opt/coblyn y delega en coblyn/setup.sh. No uses modo desatendido hasta haber definido cómo custodiar los secretos y crear el primer administrador sin incluir contraseñas en CLI, cloud-init o logs.

Canal piloto

El canal get del VPS permite la validación desde hosts limpios y cada release publica un manifiesto Sigstore firmado por la identidad OIDC del workflow. El bootstrap inicial todavía sólo exige el checksum y falta mantener un mirror recuperable fuera del VPS; hasta automatizar esa verificación no se considera el origen de producción. Un checksum servido por el mismo origen no protege frente al compromiso completo de ese origen.

3. Revisar .env ​

El archivo operativo queda en:

bash
cd /opt/coblyn/coblyn
sudo nano .env

Valores que debes revisar antes de produccion:

VariableUso
PXE_INTERFACEInterfaz fisica o bridged por la que escucha Kea
PXE_SERVER_IPIP del servidor en la red PXE
DHCP_MODEdhcp para servidor autoritativo, proxy si ya existe DHCP
DHCP_RANGE_START / DHCP_RANGE_ENDRango para equipos autorizados
DHCP_QUARANTINE_START / DHCP_QUARANTINE_ENDRango aislado para equipos desconocidos
WEB_PORTPuerto publicado por nginx
COBLYN_IMAGE_TAGDebe ser versionado, por ejemplo v1.17.0; no uses latest
RUSTDESK_IMAGEImagen fija, por ejemplo rustdesk/rustdesk-server:1.1.14
CORS_ORIGINSOrigenes permitidos; no uses * en produccion

Secretos obligatorios en produccion:

  • POSTGRES_PASSWORD
  • REDIS_PASSWORD
  • JWT_SECRET
  • STORAGE_ENCRYPTION_KEY
  • DHCP_WEBHOOK_SECRET
  • BOOT_PROGRESS_SECRET
  • MDM_ENROLLMENT_TOKEN

Normalmente el instalador los genera. Si vienes de un .env antiguo, ejecuta:

bash
sudo ./setup.sh doctor --fix

4. Validar antes de arrancar ​

bash
sudo ./setup.sh doctor

El doctor comprueba distribucion, Docker, Compose V2, .env, secretos, propagacion de variables a Compose, puertos, RAM y disco.

Si quieres ver el plan sin tocar el sistema:

bash
sudo ./setup.sh install --dry-run

5. Arrancar el stack ​

En modo interactivo el instalador puede arrancar el stack al final. Si necesitas hacerlo manualmente:

bash
docker compose up -d
docker compose ps
sudo ./setup.sh admin-bootstrap

Accede a:

text
http://<PXE_SERVER_IP>:<WEB_PORT>

El bootstrap solicita usuario y contraseña, sólo funciona mientras la base de datos no contenga usuarios y no persiste la credencial en .env. Acepta entre 15 y 128 caracteres, espacios y Unicode, sin reglas artificiales de composición; rechaza valores comunes o previsibles y repite el prompt si no coinciden las entradas o no se cumple la política.

Configuracion inicial despues del login ​

  1. Entra en la UI con el administrador persistente que acabas de crear.
  2. Abre Storage y crea un pool NFS o SMB/CIFS desde Storage Hub. No dependas del antiguo modelo de configuracion NFS plana.
  3. Carga o descarga los activos de arranque necesarios en tftpboot/.
  4. Verifica que docker compose ps no muestra servicios reiniciando.
  5. Prueba un cliente PXE en la VLAN correcta y confirma que aparece en inventario o cuarentena.

Upgrade desde v1.x ​

Desde /opt/coblyn/coblyn:

bash
sudo ./setup.sh backup
sudo ./setup.sh upgrade --auto
sudo ./setup.sh doctor

v1.17.0 introduce Alembic como autoridad de migraciones. En una instalación existente, primero verifica que el esquema heredado coincide exactamente con el modelo y solo entonces adopta el baseline:

bash
docker compose exec backend python -m utils.migrations adopt-legacy
docker compose exec backend python -m utils.migrations verify

No ejecutes alembic stamp directamente: omite la comprobación de drift que protege datos heredados. En instalaciones nuevas o tras desplegar una revisión, aplica las migraciones como paso de despliegue y valida con python -m utils.migrations verify.

Backup y restore minimo ​

Backup operativo:

bash
sudo ./setup.sh backup

El backup incluye .env, licencia, claves, Compose y datos persistentes relevantes en backups/.

Antes de cualquier upgrade:

bash
sudo ./setup.sh backup
docker compose ps

Para un restore completo en otro host, conserva como minimo:

  • Backup generado por setup.sh.
  • Volumen PostgreSQL o dump de base de datos.
  • license.key, keys/ y secretos del .env.
  • Datos de RustDesk si quieres conservar claves de soporte remoto.
  • Repositorios de imagenes gestionados por Storage Hub.

Release local ​

Para validar una release en un entorno Linux con Bash:

bash
bash scripts/release-check.sh
bash scripts/package-release.sh

release-check.sh ejecuta checks de sintaxis, tests backend, heads de Alembic, lint/test/build de frontend, validacion de Compose y empaquetado. package-release.sh genera dist/coblyn-v<version>.tar.gz y su checksum.

Troubleshooting ​

El backend se reinicia con "Unsafe production configuration" ​

Hay secretos vacios, placeholders o CORS inseguro. Ejecuta:

bash
sudo ./setup.sh doctor --fix
sudo ./setup.sh doctor
docker compose up -d

DHCP no responde ​

  • Comprueba PXE_INTERFACE.
  • Usa DHCP_MODE=proxy si existe un DHCP corporativo autoritativo.
  • Revisa logs:
bash
docker logs coblyn-dhcp-kea

El menu PXE no carga ​

bash
curl http://<PXE_SERVER_IP>/tftpboot/menus/boot.ipxe
docker logs coblyn-tftp
docker logs coblyn-nginx

Storage Hub no monta un pool ​

  • Comprueba conectividad NFS/SMB desde el host.
  • Verifica credenciales en la UI de Storage.
  • Ejecuta sudo ./setup.sh doctor para confirmar nfs-common y cifs-utils.

Docker no descarga imagenes ​

Verifica conectividad al registry configurado en COBLYN_REGISTRY. Si tu distribucion usa imagenes privadas, autentica antes:

bash
docker login registry.gitlab.com
docker compose pull

Coblyn · documentación, demo aislada y canal de instalación separados