Ir al contenido

Instalar un nodo

Cuatro pasos en la máquina, y dos cosas que solo tú puedes hacer fuera de ella: apuntar el DNS, y que verifiquen tu huella.

Si te dieron un token de inscripción, todo el paso 0 al 2 se reduce a un comando. Descarga el código, lo extrae a /opt/trusted-codes y ejecuta tc-operator setup, que obtiene el operator.yaml de este nodo a partir del token, instala la pila y se autoinscribe.

Ventana de terminal
curl -fsSL https://app.trusted.codes/download/install-node.sh | sudo bash -s -- <token-de-inscripción>

Deja el token fuera para que te lo pida, así nunca queda en el historial de tu terminal:

Ventana de terminal
curl -fsSL https://app.trusted.codes/download/install-node.sh | sudo bash

La descarga se verifica contra el manifiesto de publicación publicado, y el manifiesto en sí contra una clave de firma fijada.

Sigue los pasos manuales de abajo si quieres inspeccionar el archivo primero, fijar una versión, o instalar en un sitio distinto de /opt/trusted-codes (--dir <ruta>).

Ventana de terminal
sudo mkdir -p /opt/trusted-codes
sudo tar -xzf trusted-codes-operator-<versión>.tar.gz -C /opt/trusted-codes
cd /opt/trusted-codes

El preflight de la instalación verifica que el árbol esté completo y falla de forma ruidosa, con esta instrucción, si no lo está.

Ventana de terminal
cp scripts/tc-operator/operator.yaml.example operator.yaml
chmod 600 operator.yaml
$EDITOR operator.yaml

Mantenlo en modo 0600 — guarda tu contraseña SMTP. Dos campos son obligatorios:

home_server: node1.example.com
admin_email: ops@example.com

Todo lo demás tiene un valor por defecto que funciona. operator.yaml cubre el resto del archivo.

Ventana de terminal
sudo scripts/tc-operator/tc-operator install --config operator.yaml

Es idempotente — segura de volver a ejecutar, y volver a ejecutarla es la forma habitual de aplicar un archivo nuevo. Hace lo siguiente:

  1. Preflight de la máquina: comprueba el sistema operativo, aprovisiona un archivo de intercambio de 4 GB, instala Docker si falta, permite 22, 80 y 443 a través del cortafuegos.
  2. Genera cada secreto y emite el certificado mTLS del nodo.
  3. Arranca la pila completa en un proyecto Docker aislado, con cada puerto publicado unido a 127.0.0.1.
  4. Reproduce el esquema — migraciones, después datos de referencia, después la anulación del operador. Una base de datos nueva construida por construcción, nunca a partir de un volcado.
  5. Configura la identidad y los indicadores de federación, y activa el descubrimiento WebFinger.
  6. Se autoevalúa: una lectura autenticada, y el manejador de federación respondiendo.
  7. Imprime los registros DNS que necesitas y escribe la carga de admisión.

No aborta si tu DNS todavía no apunta. El TLS es un paso aparte.

La instalación no está bloqueada tras una confirmación escrita: es tu único comando en tu propia máquina.

Escribe /etc/trusted-codes/install.log con la salida completa de cada comando, y /etc/trusted-codes/README.md — una referencia en la propia máquina que nombra cada archivo de ese directorio, cuáles son críticos para la identidad, qué hace cada contenedor y qué se rompe cuando está caído. Empieza por esos dos cuando algo se ve mal.

Si fijaste admin_email, la instalación también crea tu primer operator_admin para esa dirección e imprime una contraseña temporal de un solo uso. Inicia sesión en la aplicación de administración del nodo y cámbiala de inmediato. El instalador la imprime una vez y nunca más. Si la pierdes antes de cambiarla, vuelve a ejecutar la instalación en un terminal: encuentra la cuenta existente y se ofrece a restablecer la contraseña.

Ese rol administra solo este nodo. Se le niega cualquier pantalla central — concesiones, derechos, planes, indicadores de función — en el servidor, no solo en la interfaz, y no hay forma de escalarlo. Consulta Ejecutar el nodo.

Paso 3 — apuntar el DNS, después finalizar el TLS

Sección titulada «Paso 3 — apuntar el DNS, después finalizar el TLS»

El instalador imprime el registro exacto. Fíjalo en tu proveedor de DNS:

node1.example.com. A <la-ip-de-tu-máquina>

En cuanto se resuelva:

Ventana de terminal
sudo scripts/tc-operator/tc-operator finalize-tls --config operator.yaml

Esto sondea hasta que el registro A se resuelve a la máquina, genera la configuración del proxy, y activa HTTPS con un certificado de Let’s Encrypt.

Ensaya primero con --dry-run. Usa el entorno de pruebas de Let’s Encrypt: el certificado no es de confianza, y no consumes límite de tasa. Eso importa, porque el límite de tasa real es por dominio y no puedes deshacer haberlo alcanzado.

El instalador escribió /etc/trusted-codes/admission-payload.json. Contiene solo material de clave pública: tu clave pública de firma de federación y su huella, tu huella mTLS, tus dominios y tus capacidades.

Ventana de terminal
scripts/tc-operator/tc-operator submit-admission

Esto firma la carga con la clave de federación de tu nodo y la envía a la cola de revisión central.

La firma demuestra que tu nodo tiene la clave. No demuestra que eres dueño del nombre de host — así que dile a Trusted Codes la huella de tu clave pública por un canal aparte. El comando la imprime. Alguien verifica esa huella a mano y después aprueba tu nodo; no hay autoaprobación. Volver a ejecutar el comando actualiza la entrada pendiente.

Una vez aprobado, y una vez que el registro firmado se vuelve a publicar, tu nodo se federa con la malla. Hasta entonces, la superficie de administración se queda detrás de una pantalla de “aprobación pendiente”.

El nodo funciona en el momento en que termina la instalación. Eso no es lo mismo que estar listo.

  • Los registros DNS se resuelven a la máquina, y finalize-tls terminó con un certificado válido.
  • Admisión aprobada — tu huella verificada, el nodo federándose.
  • SMTP conectado y verificado. Envíate a ti mismo un enlace de inicio de sesión y confirma que llega.
  • La contraseña de administrador cambiada de la temporal.
  • /etc/trusted-codes/secrets.env copiado a algún sitio fuera de línea. Perderlo pierde las claves de identidad del nodo y hace que cualquier dato restaurado sea ilegible.
  • Claves de integración opcionales fijadas, si quieres esas funciones.

Se saltó la construcción de una superficie. Las demás superficies se instalaron; solo ese portal no se construyó. Lee el error en install.log — busca surface <nombre>: building. La causa habitual es la memoria: una línea “killed” o con señal 137 significa que la máquina se quedó sin memoria. Añade RAM o intercambio y vuelve a ejecutar la instalación, que reintenta la construcción. El nodo se puede usar mientras tanto.

El TLS no finalizó. Casi siempre es DNS que todavía no se ha propagado. Confirma con getent hosts <tu-dominio>, después ejecuta finalize-tls de nuevo.

La admisión está atascada como pendiente. Alguien en Trusted Codes tiene que verificar tu huella fuera de banda y aprobarla. Volver a enviarla actualiza la entrada; no la aprueba.