Configuración de Máquinas
Cuatro pasos para que su primera máquina funcione: crear una configuración, registrar el servidor, aprovisionarlo y opcionalmente configurar la infraestructura para tráfico 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ón | Requerido | Descripción |
|---|---|---|
--ssh-key <path> | Sí | Ruta a su clave privada SSH. La tilde (~) se expande automáticamente. |
--renet-path <path> | No | Ruta 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--configen 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ón | Requerido | Predeterminado | Descripción |
|---|---|---|---|
--ip <address> | Sí | - | Dirección IP o nombre de host del servidor remoto |
--user <username> | Sí | - | Nombre de usuario SSH en el servidor remoto |
--port <port> | No | 22 | Puerto SSH |
--datastore <path> | No | /mnt/rediacc | Ruta 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:
- Sube el binario renet al servidor mediante SFTP
- Instala Docker, containerd y cryptsetup (si no están presentes)
- Crea el usuario del sistema
rediacc(UID 7111) - Crea el directorio del datastore y lo prepara para repositorios cifrados
| Opción | Requerido | Predeterminado | Descripción |
|---|---|---|---|
--datastore <path> | No | /mnt/rediacc | Directorio del datastore en el servidor |
--datastore-size <size> | No | 95% | Cantidad de disco disponible a asignar para el datastore |
--debug | No | false | Habilitar 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-connectionproporciona diagnósticos SSH detallados pero requiere el adaptador cloud. Para el adaptador local, userdc termosshdirectamente.
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ón | Alcance | Descripción |
|---|---|---|
--public-ipv4 <ip> | Machine | Dirección IPv4 pública, los puntos de entrada del proxy solo se crean para familias de direcciones configuradas |
--public-ipv6 <ip> | Machine | Dirección IPv6 pública, los puntos de entrada del proxy solo se crean para familias de direcciones configuradas |
--base-domain <domain> | Machine | Dominio base para aplicaciones (por ejemplo, example.com) |
--cert-email <email> | Config | Correo electrónico para certificados TLS de Let’s Encrypt (compartido entre máquinas) |
--cf-dns-token <token> | Config | Token de la API DNS de Cloudflare para desafíos ACME DNS-01 (compartido entre máquinas) |
--tcp-ports <ports> | Machine | Puertos TCP adicionales separados por comas para redirigir (por ejemplo, 25,143,465,587,993) |
--udp-ports <ports> | Machine | Puertos 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:
- Despliega el binario renet en la máquina remota
- Configura el proxy inverso Traefik, el enrutador y los servicios systemd
- Crea registros DNS de Cloudflare para el subdominio de la máquina (
server-1.example.comy*.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. Los registros DNS de comodín por repositorio (para rutas automáticas) se crean automáticamente cuando ejecuta 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 tenga una clave registrada con rdc:
# Lee el archivo de clave e inserta el contenido en /credentials/ssh.
rdc config ssh set --key ~/.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ón | Requerido | Descripció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> | Sí | Token de API para el proveedor de nube |
--region <region> | No | Región predeterminada para nuevas máquinas |
--type <type> | No | Tipo/tamaño de instancia predeterminado |
--image <image> | No | Imagen de SO predeterminada |
--ssh-user <user> | No | Nombre 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:
- Crea una VM en el proveedor de nube mediante OpenTofu
- Espera la conectividad SSH
- Registra la máquina en su configuración
- Instala renet y todas las dependencias
- Configura el proxy Traefik y DNS de Cloudflare (detecta automáticamente el dominio base de máquinas hermanas, o pase
--base-domainexplícitamente)
| Opción | Descripció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> | Dominio base para la infraestructura. Se detecta automáticamente de máquinas hermanas si no se especifica |
--no-infra | Omitir completamente la configuración de infraestructura (proxy + DNS) |
--debug | Muestra 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 field set --pointer /defaults/machine --new '"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