Saltar al contenido principal Saltar a navegación Saltar al pie de página

Configuración de Máquinas

Cree una configuración, agregue máquinas, aprovisione servidores y configure la infraestructura.

Configuración de Máquinas

Esta página le guía a través de la configuración de su primera máquina: crear una configuración, registrar un servidor, aprovisionarlo y opcionalmente configurar la infraestructura para acceso público.

Paso 1: Crear una Configuración

Una configuración es un archivo de configuración con nombre que almacena sus credenciales SSH, definiciones de máquinas y mapeos de repositorios. Piense en ella como un espacio de trabajo del proyecto.

rdc config init --name my-infra --ssh-key ~/.ssh/id_ed25519
OpciónRequeridoDescripción
--ssh-key <path>Ruta a su clave privada SSH. La tilde (~) se expande automáticamente.
--renet-path <path>NoRuta personalizada al binario renet en las máquinas remotas. Por defecto usa la ubicación de instalación estándar.

Esto crea una configuración llamada my-infra y la almacena en ~/.config/rediacc/my-infra.json. La configuración predeterminada (cuando no se da nombre) se almacena como ~/.config/rediacc/rediacc.json.

Puede tener múltiples configuraciones (por ejemplo, production, staging, dev). Cambie entre ellas con la bandera --config en cualquier comando.

Paso 2: Agregar una Máquina

Registre su servidor remoto como una máquina en la configuración:

rdc config machine add --name server-1 --ip 203.0.113.50 --user deploy
OpciónRequeridoPredeterminadoDescripción
--ip <address>-Dirección IP o nombre de host del servidor remoto
--user <username>-Nombre de usuario SSH en el servidor remoto
--port <port>No22Puerto SSH
--datastore <path>No/mnt/rediaccRuta en el servidor donde Rediacc almacena los repositorios cifrados

Después de agregar la máquina, rdc ejecuta automáticamente ssh-keyscan para obtener las claves del host del servidor. También puede ejecutar esto manualmente:

rdc config machine scan-keys -m server-1

Para ver todas las máquinas registradas:

rdc config machine list

Paso 3: Configurar la Máquina

Aprovisione el servidor remoto con todas las dependencias requeridas:

rdc config machine setup --name server-1

Este comando:

  1. Sube el binario renet al servidor mediante SFTP
  2. Instala Docker, containerd y cryptsetup (si no están presentes)
  3. Crea el usuario del sistema rediacc (UID 7111)
  4. Crea el directorio del datastore y lo prepara para repositorios cifrados
OpciónRequeridoPredeterminadoDescripción
--datastore <path>No/mnt/rediaccDirectorio del datastore en el servidor
--datastore-size <size>No95%Cantidad de disco disponible a asignar para el datastore
--debugNofalseHabilitar salida detallada para resolución de problemas

La configuración solo necesita ejecutarse una vez por máquina. Es seguro volver a ejecutarla si es necesario.

Gestión de Claves del Host

Si las claves SSH de un servidor cambian (por ejemplo, después de una reinstalación), actualice las claves almacenadas:

rdc config machine scan-keys -m server-1

Esto actualiza el campo knownHosts en su configuración para esa máquina.

Probar Conectividad SSH

Después de agregar una máquina, verifique que sea alcanzable:

rdc term connect -m server-1 -c "hostname"

Esto abre una conexión SSH a la máquina y ejecuta el comando. Si tiene éxito, su configuración SSH es correcta.

Para diagnósticos más detallados, ejecute:

rdc doctor

Solo adaptador cloud: El comando rdc machine test-connection proporciona diagnósticos SSH detallados pero requiere el adaptador cloud. Para el adaptador local, use rdc term o ssh directamente.

Configuración de Infraestructura

Para máquinas que necesitan servir tráfico públicamente, configure los ajustes de infraestructura:

Establecer Infraestructura

rdc config infra set -m server-1 \
  --public-ipv4 203.0.113.50 \
  --base-domain example.com \
  --cert-email admin@example.com \
  --cf-dns-token your-cloudflare-api-token
OpciónAlcanceDescripción
--public-ipv4 <ip>MachinePublic IPv4 address, proxy entrypoints are only created for configured address families
--public-ipv6 <ip>MachinePublic IPv6 address, proxy entrypoints are only created for configured address families
--base-domain <domain>MachineDominio base para aplicaciones (por ejemplo, example.com)
--cert-email <email>ConfigCorreo electrónico para certificados TLS de Let’s Encrypt (compartido entre máquinas)
--cf-dns-token <token>ConfigToken de la API DNS de Cloudflare para desafíos ACME DNS-01 (compartido entre máquinas)
--tcp-ports <ports>MachinePuertos TCP adicionales separados por comas para redirigir (por ejemplo, 25,143,465,587,993)
--udp-ports <ports>MachinePuertos UDP adicionales separados por comas para redirigir (por ejemplo, 53)

Las opciones de alcance Machine se almacenan por máquina. Las opciones de alcance Config (--cert-email, --cf-dns-token) son compartidas entre todas las máquinas en la configuración, configúrelas una vez y se aplican en todas partes.

Ver Infraestructura

rdc config infra show -m server-1

Enviar al Servidor

Genere y despliegue la configuración del proxy inverso Traefik en el servidor:

rdc config infra push -m server-1

Este comando:

  1. Despliega el binario renet en la máquina remota
  2. Configura el proxy inverso Traefik, el enrutador y los servicios systemd
  3. Crea registros DNS de Cloudflare para el subdominio de la máquina (server-1.example.com y *.server-1.example.com) si se ha establecido --cf-dns-token

El paso de DNS es automático e idempotente: crea registros faltantes, actualiza registros con IPs cambiadas y omite registros que ya son correctos. Si no se ha configurado un token de Cloudflare, se omite el DNS con una advertencia. Per-repo wildcard DNS records (for auto-routes) are created automatically when you run rdc repo up.

Aprovisionamiento en la Nube

En lugar de crear VMs manualmente, puede configurar un proveedor de nube y dejar que rdc aprovisione máquinas automáticamente usando OpenTofu.

Requisitos Previos

Instale OpenTofu: opentofu.org/docs/intro/install

Asegúrese de que su configuración SSH incluya una clave pública:

rdc config set --key ssh.privateKeyPath --value ~/.ssh/id_ed25519

Agregar un Proveedor de Nube

rdc config provider add --name my-linode \
  --provider linode/linode \
  --token $LINODE_API_TOKEN \
  --region us-east \
  --type g6-standard-2
OpciónRequeridoDescripción
--provider <source>Sí*Fuente de proveedor conocido (por ejemplo, linode/linode, hetznercloud/hcloud)
--source <source>Sí*Fuente de proveedor OpenTofu personalizada (para proveedores desconocidos)
--token <token>Token de API para el proveedor de nube
--region <region>NoRegión predeterminada para nuevas máquinas
--type <type>NoTipo/tamaño de instancia predeterminado
--image <image>NoImagen de SO predeterminada
--ssh-user <user>NoNombre de usuario SSH (predeterminado: root)

* Se requiere --provider o --source. Use --provider para proveedores conocidos (valores predeterminados integrados). Use --source con las banderas adicionales --resource, --ipv4-output, --ssh-key-attr para proveedores personalizados.

Aprovisionar una Máquina

rdc machine provision --name prod-2 --provider my-linode

Este único comando:

  1. Crea una VM en el proveedor de nube mediante OpenTofu
  2. Espera la conectividad SSH
  3. Registra la máquina en su configuración
  4. Instala renet y todas las dependencias
  5. Configures Traefik proxy and Cloudflare DNS (auto-detects base domain from sibling machines, or pass --base-domain explicitly)
OpciónDescripción
--provider <name>Nombre del proveedor de nube (de add-provider)
--region <region>Anula la región predeterminada del proveedor
--type <type>Anula el tipo de instancia predeterminado
--image <image>Anula la imagen de SO predeterminada
--base-domain <domain>Base domain for infrastructure. Auto-detected from sibling machines if not specified
--no-infraSkip infrastructure configuration (proxy + DNS) entirely
--debugMuestra salida detallada del aprovisionamiento

Desaprovisionar una Máquina

rdc machine deprovision --name prod-2

Destruye la VM mediante OpenTofu y la elimina de su configuración. Requiere confirmación a menos que se use --force. Solo funciona para máquinas creadas con machine provision.

Listar Proveedores

rdc config provider list

Establecer Valores Predeterminados

Configure valores predeterminados para no tener que especificarlos en cada comando:

rdc config set --key machine --value server-1  # Máquina predeterminada
rdc config set --key team --value my-team  # Equipo predeterminado (adaptador cloud, experimental)

Después de establecer una máquina predeterminada, puede omitir -m server-1 en los comandos:

rdc repo create --name my-app -m my-server --size 10G

Múltiples Configuraciones

Gestione múltiples entornos con configuraciones con nombre:

# Crear configuraciones separadas
rdc config init --name production --ssh-key ~/.ssh/id_prod
rdc config init --name staging --ssh-key ~/.ssh/id_staging

# Usar una configuración específica
rdc repo list -m server-1 --config production
rdc repo list -m staging-1 --config staging

Ver todas las configuraciones:

rdc config list

Mostrar detalles de la configuración actual:

rdc config show