MeshCentral en un VPS: acceso remoto a un centenar de máquinas gratis
TL;DR
MeshCentral es una plataforma self-hosted para gestionar de forma remota ordenadores, servidores y estaciones de trabajo a través del navegador. En un VPS se puede desplegar un servidor MeshCentral propio, conectar alrededor de un centenar de máquinas y utilizar escritorio remoto, terminal, transferencia de archivos e inventario sin pagar por cada ordenador conectado.
Para una instalación pequeña bastan 2 vCPU, 4 GB de RAM, 40–60 GB de SSD y un canal estable de 100 Mbit/s.
El servidor se despliega en Docker Compose, y Caddy obtiene HTTPS automáticamente mediante Let’s Encrypt.
El cliente MeshCentral se instala en los ordenadores gestionados como MeshAgent.
Para el acceso se necesitan un nombre de dominio, los puertos TCP 80 y 443 abiertos y SSH para la administración.
Es necesario hacer copias de seguridad de la configuración de MeshCentral, la base de datos, los certificados y los archivos de usuario.
1. TL;DR
MeshCentral es adecuado para el acceso remoto centralizado a ordenadores con Windows, Linux y macOS. A diferencia del RDP o VNC convencional, el agente establece por sí mismo una conexión saliente con el servidor, por lo que no es necesario abrir puertos RDP en cada estación de trabajo. El servidor MeshCentral se aloja en su VPS y el administrador trabaja mediante una interfaz web protegida.
En estas instrucciones se utiliza Ubuntu Server 24.04 LTS, Docker Engine 27 o posterior, Docker Compose Plugin 2.x, MeshCentral desde la imagen oficial del contenedor y Caddy 2.10. La configuración está prevista para aproximadamente 100 máquinas conectadas permanentemente con una carga moderada: varias sesiones paralelas, transferencias periódicas de archivos y un terminal remoto.
2. Índice
Las secciones anteriores forman la navegación de las instrucciones. Si el servidor ya está preparado, se puede pasar a la instalación de Docker y MeshCentral, pero antes es importante comprobar el DNS, los puertos de red y los requisitos del VPS.
3. Qué configuramos y por qué
Esquema: 3. Qué configuramos y por qué
Cómo funciona MeshCentral
MeshCentral consta de una parte de servidor y MeshAgent. El servidor acepta las conexiones de los agentes, almacena la lista de dispositivos y usuarios y proporciona una interfaz web. El agente se ejecuta en la máquina gestionada y mantiene la comunicación con el servidor mediante HTTPS o WebSocket.
Cuando el operador abre el escritorio remoto, el terminal o una transferencia de archivos, MeshCentral transmite los datos a través del servidor. Esto resulta práctico para ordenadores situados detrás de NAT, routers domésticos y firewalls corporativos: normalmente basta con permitir el tráfico HTTPS saliente en el cliente.
Función
Aplicación práctica
Escritorio remoto
Soporte a usuarios y administración de aplicaciones GUI
Terminal remoto
Comandos de PowerShell, CMD, Bash y otras operaciones de consola
Transferencia de archivos
Carga de actualizaciones, registros y utilidades de diagnóstico
Inventario
Consulta del sistema operativo, procesador, memoria, discos e interfaces de red
Grupos de dispositivos
Separación de ordenadores por clientes, departamentos o ubicaciones
Permisos de acceso
Limitación de los operadores a dispositivos y funciones concretos
Qué se obtendrá al final
Después de completar las instrucciones funcionará un sitio web del tipo https://mesh.example.com. En él se podrá crear un usuario administrador, organizar grupos de dispositivos y obtener instaladores de agentes. Las máquinas conectadas aparecerán en la interfaz después de iniciar MeshAgent.
El acceso al servidor estará protegido mediante un certificado TLS de Let’s Encrypt. El VPS no debería tener abiertos al Internet general los puertos RDP, VNC o SSH. SSH se limita a su dirección IP o se protege mediante claves y reglas adicionales del firewall.
Opciones self-hosted y cloud-managed
Los servicios cloud-managed se encargan de las actualizaciones, las copias de seguridad y la operación de la parte del servidor. Esto resulta práctico si son importantes el soporte preparado, el SLA y no tener que contar con un DevOps propio. Las desventajas son la cuota de suscripción, las limitaciones de los planes, la dependencia de la política del proveedor y la transferencia de metadatos sobre los dispositivos a una empresa externa.
El MeshCentral self-hosted en un VPS requiere mantener por cuenta propia Linux, Docker, DNS, TLS y las copias de seguridad. A cambio, los datos, las cuentas y la configuración quedan bajo su control. Para un pequeño departamento de TI, laboratorio, infraestructura doméstica o proyecto MSP, a menudo resulta más práctico que una nube de pago.
Importante: la palabra «gratis» se refiere al software MeshCentral y a la ausencia de un cobro por dispositivo. El propio VPS, el dominio, el almacenamiento de copias de seguridad y el tiempo del administrador pueden tener un coste.
Limitaciones y modelo de seguridad
MeshCentral no sustituye a un sistema completo de gestión de configuraciones, MDM o SIEM. Proporciona acceso remoto e inventario básico, pero no debe ser el único mecanismo de control de actualizaciones y auditoría en una infraestructura crítica.
Cualquier usuario con permiso para utilizar el terminal remoto puede controlar de facto el dispositivo. Por eso, utilice cuentas personales, autenticación de dos factores, privilegios mínimos y revise periódicamente la lista de operadores.
4. Qué configuración de VPS se necesita para esta tarea
Configuración mínima
Para 20–30 ordenadores conectados normalmente bastan 1–2 vCPU y 2 GB de RAM. Para un centenar de agentes es razonable empezar con 2 vCPU y 4 GB de RAM. El propio agente consume recursos en la máquina cliente, pero el servidor necesita memoria y CPU para las conexiones WebSocket, TLS, el almacenamiento del estado y las sesiones simultáneas.
Carga
CPU
RAM
Disco
Canal
Hasta 30 máquinas
1–2 vCPU
2 GB
25 GB SSD
50 Mbit/s
Hasta 100 máquinas
2–4 vCPU
4 GB
40–60 GB SSD
100 Mbit/s
100 máquinas y muchas sesiones
4–8 vCPU
8–16 GB
80–160 GB SSD
200 Mbit/s o más
Para la configuración objetivo se puede elegir un VPS adecuado con 4 vCPU, 8 GB de RAM, un disco NVMe de al menos 80 GB, una dirección IPv4 pública y un canal de al menos 100 Mbit/s. Esta reserva resulta útil si varios operadores trabajan simultáneamente, se ejecutan copias de seguridad o se alojan contenedores auxiliares en el mismo servidor.
Disco y copias de seguridad
La base de datos principal de MeshCentral es pequeña, pero las transferencias de archivos, los registros y las copias de seguridad aumentan rápidamente el volumen. Para una instalación destinada a un centenar de máquinas bastan 40 GB si no se almacenan archivos grandes en el servidor. NVMe es preferible a un HDD convencional, especialmente durante el archivado y la recuperación.
No considere el disco local del VPS como una copia de seguridad. Al menos una copia debe encontrarse en un almacenamiento externo compatible con S3, en otro VPS o en un servidor físico independiente. Es recomendable cifrar los datos antes de enviarlos.
Cuándo se necesita un dedicated
Un servidor dedicado se justifica no por el número de agentes en sí, sino por la carga. Es necesario con cientos o miles de conexiones permanentes, un gran número de sesiones de vídeo simultáneas, transferencias masivas de archivos, requisitos de CPU dedicada o la necesidad de aislar el sistema de otros usuarios del hipervisor.
Para un centenar de ordenadores de oficina con conexiones ocasionales, un dedicated suele ser excesivo. Primero mida la CPU, la RAM, el tráfico de red y las latencias en el VPS; después aumente los recursos verticalmente o traslade MeshCentral a un servidor independiente.
Elección de la ubicación
La ubicación del VPS influye principalmente en la latencia hasta los operadores y clientes. Para el escritorio remoto es recomendable elegir una región a la que la mayoría de los usuarios tenga menos de 80–100 ms. Los agentes de distintos países pueden acceder al mismo servidor, pero la calidad de la sesión interactiva será diferente.
Compruebe la disponibilidad de TCP 443 entrante y saliente, la existencia de una IPv4 pública o de un IPv6 correctamente configurado, las reglas de la política de abuse y la posibilidad de crear un registro PTR. Para un MeshCentral normal, PTR no es obligatorio; sin embargo, una configuración DNS ordenada facilita el diagnóstico.
5. Preparación del servidor
5. Preparación del servidor
Esquema: 5. Preparación del servidor
Condiciones iniciales
A continuación se presupone un Ubuntu Server 24.04 LTS limpio con acceso root y el dominio mesh.example.com. Sustituya este dominio por el suyo. El registro DNS de tipo A debe apuntar a la dirección IPv4 del VPS, mientras que el registro AAAA solo debe configurarse si IPv6 está realmente configurado y disponible.
# Проверяем адрес сервера и имя хоста
hostnamectl
# Создаём A-запись заранее и проверяем её с локального компьютера
dig +short mesh.example.com
Después de actualizar el kernel, compruebe si es necesario reiniciar. Si se trata de un servidor nuevo, reinícielo antes de continuar para no dejar activa una versión antigua del kernel.
# Показываем, требуется ли перезагрузка после обновлений
if [ -f /var/run/reboot-required ]; then echo "Reboot required"; fi
# Перезагружаем сервер при необходимости
sudo reboot
Usuario y claves SSH
No trabaje permanentemente como root. En el equipo local debe haber una clave SSH ED25519. Si todavía no tiene una, créela con el comando siguiente y añada la parte pública durante el acceso inicial.
# Выполняется на вашем локальном компьютере: создаём ключ администратора
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/meshcentral_admin
# На VPS создаём отдельного администратора
sudo adduser deploy
sudo usermod -aG sudo deploy
# Создаём каталог SSH и задаём корректные права
sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
Copie el contenido del archivo ~/.ssh/meshcentral_admin.pub en /home/deploy/.ssh/authorized_keys. Si el acceso inicial se realizó mediante contraseña, compruebe el nuevo inicio de sesión en una ventana aparte antes de desactivar root y la contraseña.
# Пример передачи публичного ключа с локального компьютера
ssh-copy-id -i ~/.ssh/meshcentral_admin.pub deploy@SERVER_IP
# Проверяем вход новым пользователем
ssh -i ~/.ssh/meshcentral_admin deploy@SERVER_IP
SSH y firewall
Primero permita SSH, HTTPS y HTTP para obtener el certificado. Si conoce su dirección IP permanente, es preferible limitar SSH mediante la regla allow from. En el ejemplo siguiente, el puerto 22 está abierto temporalmente para todos; después de la comprobación, debe limitarse.
# Разрешаем SSH, HTTP и HTTPS до включения firewall
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Включаем firewall с политикой запрета входящих соединений
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
# Проверяем активные правила
sudo ufw status verbose
Después de comprobar SSH, sustituya la regla general por una dirección específica, por ejemplo 203.0.113.10.
# Удаляем общее правило SSH
sudo ufw delete allow 22/tcp
# Разрешаем SSH только с доверенного внешнего IP
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
Fail2ban
Fail2ban supervisa los intentos fallidos de inicio de sesión y bloquea temporalmente las direcciones de los infractores. No sustituye las claves SSH ni el firewall, pero reduce el ruido generado por los intentos automatizados.
# Создаём локальную конфигурацию защиты SSH
sudo tee /etc/fail2ban/jail.d/sshd.local > /dev/null <<'EOF'
[sshd]
enabled = true
backend = systemd
banaction = ufw
maxretry = 5
findtime = 10m
bantime = 1h
EOF
# Перезапускаем fail2ban и проверяем состояние jail
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
6. Instalación del software — paso a paso
Esquema: 6. Instalación del software — paso a paso
Instalación de Docker Engine
En lugar de utilizar paquetes de repositorios aleatorios, use el repositorio apt oficial de Docker. En 2026, Docker Engine 27+ y Compose Plugin 2.x son adecuados para Ubuntu Server 24.04. La versión secundaria concreta dependerá del repositorio actual.
# Удаляем конфликтующие старые пакеты, если они есть
sudo apt remove -y docker.io docker-doc docker-compose podman-docker containerd runc || true
# Создаём каталог для ключей репозиториев
sudo install -m 0755 -d /etc/apt/keyrings
# Загружаем официальный ключ Docker и ограничиваем его права
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Добавляем репозиторий Docker для текущего выпуска Ubuntu
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Устанавливаем Docker Engine, CLI, Buildx и Compose Plugin
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Проверяем версии и состояние службы
sudo docker version
sudo docker compose version
sudo systemctl enable --now docker
Añadir el usuario al grupo docker resulta práctico, pero este grupo proporciona de facto permisos de root a través del socket de Docker. Para un VPS independiente pequeño, puede utilizar sudo docker sin ampliar los permisos del usuario.
Creación de directorios del proyecto
# Создаём каталоги MeshCentral и отдельный каталог для Caddy
sudo mkdir -p /opt/meshcentral/{meshcentral-data,meshcentral-files}
sudo mkdir -p /opt/caddy/{data,config}
# Передаём рабочие каталоги пользователю deploy
sudo chown -R deploy:deploy /opt/meshcentral /opt/caddy
# Переходим в каталог проекта
cd /opt/meshcentral
Archivo de variables de entorno
Guarde los secretos y el nombre de dominio en el archivo .env, no en un archivo YAML que pueda enviarse accidentalmente a Git con mayor facilidad. El archivo solo debe estar disponible para su propietario.
# Создаём переменные проекта
cat > /opt/meshcentral/.env <<'EOF'
MESH_DOMAIN=mesh.example.com
[email protected]
TZ=Europe/Moscow
EOF
# Ограничиваем доступ к переменным окружения
chmod 600 /opt/meshcentral/.env
Docker Compose
El proyecto oficial de MeshCentral publica la imagen del contenedor en el registro GitHub Container Registry. La etiqueta latest resulta práctica para el primer inicio, pero en un entorno de producción es preferible fijar una etiqueta verificada después de probar la actualización. El ejemplo siguiente utiliza la imagen ghcr.io/ylianst/meshcentral:latest; antes de actualizar, compruebe las etiquetas compatibles en el repositorio oficial del proyecto.
MeshCentral escucha dentro de la red de Docker en el puerto 4433. No es necesario publicar este puerto externamente: el único punto de entrada externo será Caddy en los puertos TCP 80 y 443.
7. Configuración
Esquema: 7. Configuración
Configuración de MeshCentral
Cree el archivo config.json en el directorio de datos. El valor WANonly activa el modo de servidor para dispositivos remotos. El parámetro webProxy permite que MeshCentral funcione correctamente detrás de un proxy inverso, mientras que AliasPort define el puerto HTTPS externo que ven los agentes.
El valor newAccounts: false desactiva el registro abierto. Normalmente, el primer administrador se crea a través de la interfaz web durante el primer inicio, si el contenedor utiliza el mecanismo estándar de MeshCentral. Después de crear el administrador, compruebe que el registro público esté realmente cerrado.
Los parámetros pueden variar entre versiones de MeshCentral. Si una versión concreta ignora un campo o informa de un error, compárelo con el ejemplo de configuración actualizado de la documentación oficial y con el registro del contenedor. No copie parámetros desconocidos sin verificarlos: algunos ajustes afectan a la compatibilidad de los agentes.
Proxy inverso Caddy
Caddy obtiene y renueva automáticamente el certificado de Let’s Encrypt. Para emitir correctamente el certificado, el DNS ya debe apuntar al VPS y los puertos TCP 80 y 443 deben estar accesibles desde Internet.
# Создаём конфигурацию Caddy
cat > /opt/meshcentral/Caddyfile <<'EOF'
mesh.example.com {
encode gzip zstd
reverse_proxy meshcentral:4433 {
transport http {
tls_insecure_skip_verify
}
}
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains"
X-Content-Type-Options "nosniff"
X-Frame-Options "SAMEORIGIN"
Referrer-Policy "strict-origin-when-cross-origin"
}
log {
output file /data/access.log
format json
}
}
EOF
# Запускаем контейнеры в фоновом режиме
cd /opt/meshcentral
sudo docker compose --env-file .env -f compose.yml up -d
# Проверяем состояние контейнеров
sudo docker compose ps
En algunas versiones de MeshCentral, el servidor HTTPS interno utiliza un certificado autofirmado. Por ello, en el bloque transport http se especifica tls_insecure_skip_verify. Esta conexión se realiza únicamente dentro de la red de Docker; el TLS externo termina en Caddy. No utilice este parámetro para crear un proxy de un servicio externo arbitrario.
Comprobación de DNS, TLS y HTTP
# Проверяем, что домен указывает на VPS
dig +short mesh.example.com
# Проверяем открытые локальные порты
sudo ss -tulpn | grep -E ':(80|443)\b'
# Смотрим последние логи MeshCentral
sudo docker logs --tail=100 meshcentral
# Смотрим логи Caddy
sudo docker logs --tail=100 meshcentral-caddy
# Проверяем HTTPS с сервера
curl -I https://mesh.example.com
# Проверяем доступность через внешний DNS и TLS
curl -fsS https://mesh.example.com/ | head
El resultado esperado es una respuesta HTTP 200 o una redirección a la página de inicio de sesión. Un error 502 significa que Caddy no puede conectarse a MeshCentral. Un error de certificado suele estar relacionado con el DNS, el puerto 80 cerrado o una hora incorrecta en el servidor.
Primer inicio de sesión y creación de un grupo
Abra https://mesh.example.com en el navegador. Cree una frase de contraseña larga de al menos 14 caracteres y active la autenticación de dos factores TOTP en el perfil de usuario, si esta función está disponible en la versión instalada.
Cree grupos independientes: por ejemplo, «Oficina», «PC domésticos», «Clientes» y «Servidores». No conceda al operador acceso a todo el servidor si solo necesita un grupo. Utilice una cuenta independiente para cada empleado, de modo que las acciones queden registradas.
Instalación de MeshAgent en los equipos cliente
En la interfaz de MeshCentral, abra el grupo de dispositivos necesario y seleccione la opción para añadir un equipo. Descargue el instalador del agente correspondiente al sistema operativo y entréguelo al usuario mediante un canal seguro o distribúyalo a través de un sistema de gestión existente.
En Windows, el agente se instala como servicio con privilegios de administrador. En Linux se requiere acceso root, mientras que en macOS se necesitan permisos de Accessibility y Screen Recording. Sin estos permisos, el agente puede conectarse, pero el escritorio remoto y el control de entrada estarán limitados.
Para instalaciones masivas, no inserte tokens de invitación en scripts públicos. Utilice políticas de grupo, Intune, Ansible, Salt, un RMM existente u otro mecanismo interno de distribución. Después de la instalación, compruebe que el agente aparezca en el grupo correcto y tenga los permisos esperados.
Comprobación de la sesión remota
Asegúrese de que el dispositivo aparezca como conectado.
Abra la información del dispositivo y compruebe el nombre del sistema operativo, la dirección IP y la hora del último contacto.
Inicie el terminal y ejecute un comando seguro, por ejemplo whoami o hostname.
Compruebe la transferencia de un archivo de texto pequeño.
Abra el escritorio y finalice la sesión con el botón correspondiente.
Compruebe el registro de acciones del administrador.
Comprobación del reinicio y el inicio automático
# Перезапускаем стек без удаления данных
cd /opt/meshcentral
sudo docker compose restart
# Проверяем, что контейнеры запускаются после перезагрузки
sudo reboot
# После подключения проверяем статус
sudo docker compose ps
sudo systemctl is-enabled docker
8. Copias de seguridad y mantenimiento
Esquema: 8. Copias de seguridad y mantenimiento
Qué es necesario conservar
El directorio meshcentral-data es crítico. Contiene la configuración, la base de datos, las claves del servidor, los certificados y el estado de los dispositivos. Si se pierden las claves o la base de datos, los agentes pueden requerir un nuevo registro y los usuarios y grupos dejarán de estar disponibles.
El directorio meshcentral-files contiene los archivos de los usuarios y los datos relacionados con la transferencia de archivos. Los directorios de Caddy /opt/caddy/data y /opt/caddy/config almacenan los certificados y los datos de servicio del proxy. También es obligatorio realizar copias del archivo Compose, Caddyfile y .env, pero los secretos que contengan deben estar cifrados.
Datos
Periodicidad
Recomendación
meshcentral-data
Diariamente
Al menos las 14 últimas copias
meshcentral-files
Diariamente o con mayor frecuencia
Depende del valor de los archivos transferidos
Caddy data/config
Después de cambios y diariamente
Necesario para restaurar el estado de TLS
Compose y configuraciones
Después de cada cambio
Conservar en un Git privado o en un archivo cifrado
Instalación de Restic
Restic cifra los datos antes de enviarlos a un almacenamiento compatible con S3. A continuación se muestra un ejemplo con variables de entorno. Los valores de las claves no deben colocarse en un script abierto ni pasarse en la línea de comandos, donde podrían aparecer en la lista de procesos.
Genere una contraseña independiente para el repositorio de al menos 32 caracteres aleatorios y guárdela en un gestor de contraseñas. Perder la contraseña de Restic significa perder la posibilidad de descifrar el archivo.
Para ejecutarlo diariamente, cree un temporizador de systemd o un cron. La opción con cron es más sencilla, pero systemd resulta más cómodo para el registro.
# Добавляем ежедневный запуск в 03:30
sudo tee /etc/cron.d/meshcentral-backup > /dev/null <<'EOF'
30 3 * root /usr/local/sbin/meshcentral-backup >> /var/log/meshcentral-backup.log 2>&1
EOF
# Проверяем размер и наличие последних архивов
sudo bash -c 'source /root/.restic-env && restic snapshots --tag meshcentral'
Prueba de restauración
Una copia de seguridad que nunca se ha restaurado no puede considerarse verificada. Una vez por trimestre, cree un directorio temporal y extraiga allí la última copia. No sustituya el directorio de trabajo antes de comprobar el contenido y la compatibilidad de las versiones.
# Восстанавливаем последний снимок во временный каталог
sudo mkdir -p /var/tmp/meshcentral-restore
sudo bash -c 'source /root/.restic-env && restic restore latest \
--tag meshcentral --target /var/tmp/meshcentral-restore'
# Проверяем наличие ключевых файлов
sudo find /var/tmp/meshcentral-restore/opt/meshcentral \
-maxdepth 3 -type f | head -30
Actualización de MeshCentral y Docker
No actualice automáticamente la instalación de producción cada noche. Primero estudie los cambios de la versión, realice una copia de seguridad completa y después actualice la imagen durante una ventana de mantenimiento planificada. Para un centenar de agentes, es mejor probar primero la actualización en un grupo de prueba independiente compuesto por varias máquinas.
# Сохраняем текущие версии и делаем резервную копию
cd /opt/meshcentral
sudo docker compose images
sudo /usr/local/sbin/meshcentral-backup
# Получаем новый образ
sudo docker compose pull meshcentral caddy
# Пересоздаём контейнеры без удаления volume-каталогов
sudo docker compose up -d
# Проверяем статус и логи после обновления
sudo docker compose ps
sudo docker logs --tail=200 meshcentral
Si la nueva versión es incompatible, restaure la etiqueta de imagen anterior en el archivo Compose y restaure los datos solo después de analizar la causa. No elimine los directorios meshcentral-data y meshcentral-files con el comando docker compose down -v: esto puede destruir los datos del volumen de Docker si se ha modificado el esquema de almacenamiento.
Supervisión
Compruebe la disponibilidad de HTTPS desde un nodo externo, la validez del certificado, el espacio libre y los reinicios de los contenedores. El control mínimo puede implementarse mediante una comprobación de curl con cron y notificaciones por correo electrónico o en el chat corporativo.
# Смотрим загрузку ресурсов контейнеров
sudo docker stats --no-stream
# Проверяем место на диске
df -h / /opt/meshcentral
# Ищем ошибки в журнале за последние 30 минут
sudo journalctl --since "30 minutes ago" | grep -Ei "error|failed|meshcentral"
9. Solución de problemas y FAQ
¿Por qué aparece el error 502 Bad Gateway?
Compruebe si el contenedor MeshCentral está en ejecución: sudo docker compose ps. Después, consulte su registro con el comando sudo docker logs meshcentral. Si el contenedor se ha detenido, las causas frecuentes son un error JSON en config.json, una ruta de volume incorrecta o un parámetro de configuración no compatible. Compruebe la sintaxis: jq . /opt/meshcentral/meshcentral-data/config.json. Asegúrese también de que Caddy y MeshCentral se encuentren en la misma red de Docker.
El certificado de Let’s Encrypt no se emite. ¿Qué debo comprobar?
Asegúrese de que el registro A del dominio apunta a la dirección IPv4 actual del VPS y de que TCP 80 y 443 están permitidos tanto en UFW como en el firewall externo del proveedor. Compruebe el DNS con el comando dig +short mesh.example.com y, a continuación, abra los registros sudo docker logs meshcentral-caddy. Si hay un registro AAAA incorrecto, Let’s Encrypt puede acceder mediante IPv6 y llegar a otro servidor. Elimine el registro erróneo o configure IPv6 correctamente.
El agente está instalado, pero el dispositivo no aparece en MeshCentral
En el cliente, compruebe el acceso saliente a https://mesh.example.com y la ausencia de un proxy corporativo que bloquee WebSocket. Asegúrese de que la fecha y la hora del cliente sean correctas y de que el instalador se haya descargado exactamente del grupo de MeshCentral necesario. En Windows, compruebe el servicio Mesh Agent y los eventos del sistema; en Linux, el estado del servicio mediante systemd. Si el dispositivo se registró en un servidor antiguo, elimine la instalación anterior del agente e instale el nuevo paquete de invitación.
El terminal funciona, pero no hay escritorio remoto
En Windows, compruebe si la sesión gráfica está iniciada y si el acceso del agente está permitido. En Linux, la presencia de GUI, X11/Wayland y los permisos del usuario influyen en el funcionamiento de la sesión de escritorio. En macOS, los permisos Accessibility y Screen Recording se conceden por separado en la configuración de privacidad. Compruebe también que la función de escritorio no esté desactivada por una política de grupo. El terminal puede funcionar independientemente de la sesión gráfica, por lo que su ejecución correcta no garantiza el acceso a la pantalla.
La pantalla remota funciona lentamente o se desconecta
Mida la latencia entre el operador y el cliente, y compruebe el uso de CPU y el tráfico de red del contenedor. La calidad se ve afectada por Wi-Fi, las redes móviles, VPN y las transferencias de archivos simultáneas. Finalice las sesiones innecesarias, reduzca la calidad de imagen y desactive la transferencia de archivos grandes durante el trabajo interactivo. Si se utilizan simultáneamente decenas de sesiones de escritorio, aumente el VPS a 4–8 vCPU y 8–16 GB de RAM, y compruebe también el límite de red.
¿Qué configuración mínima de VPS será adecuada?
Para un laboratorio o varios equipos, son suficientes 1 vCPU, 2 GB de RAM y 25 GB de SSD, pero esta reserva no está diseñada para un centenar de dispositivos. El mínimo práctico para 100 agentes es 2 vCPU, 4 GB de RAM, 40 GB de SSD y un canal estable de al menos 100 Mbit/s. Si se prevén escritorios remotos simultáneos, es preferible elegir 4 vCPU y 8 GB de RAM. Es imprescindible disponer de una dirección pública y de acceso a TCP 80/443.
¿Qué elegir: VPS o dedicated para esta tarea?
Para cien máquinas y un número reducido de operadores, elija un VPS: es más barato, escala con mayor facilidad y normalmente dispone de recursos suficientes. Se necesita un dedicated cuando hay cientos o miles de agentes, una gran carga de transferencia de archivos, una estricta aislación de CPU, requisitos especiales para los discos o las interfaces de red. Comience con un VPS con monitorización y un plan de migración preparado de antemano. A medida que aumente la carga, puede trasladar la pila de Docker y los directorios de datos a un dedicated.
¿Se puede cerrar el puerto 80 después de obtener el certificado?
Normalmente es conveniente mantener TCP 80 abierto: Caddy lo utiliza para las comprobaciones HTTP-01 y para redirigir a los usuarios a HTTPS. Si la política de seguridad exige cerrar el puerto 80, configure la comprobación DNS-01 mediante el proveedor de DNS y asegúrese de que el certificado se renueve automáticamente. Cerrar simplemente el puerto 80 sin cambiar el método de comprobación puede provocar que se detenga la renovación automática. El puerto 443 debe seguir siendo accesible para los agentes y operadores.
¿Cómo limitar el acceso del operador solo a determinados equipos?
Cree un grupo de dispositivos independiente y asigne al operador permisos únicamente para ese grupo. No utilice una única cuenta compartida para todo el equipo: de lo contrario, no será posible determinar de forma fiable quién inició el terminal o transfirió un archivo. Desactive las funciones que el operador concreto no necesite, como la transferencia de archivos o el terminal remoto. Revise periódicamente la lista de usuarios, los tokens de invitación y los registros de acciones, especialmente después de la baja de un empleado o del cambio de contratista.
10. Conclusiones y próximos pasos
Esquema: 10. Conclusiones y próximos pasos
En el VPS se ha implementado un MeshCentral self-hosted con HTTPS, terminal remoto, escritorio, transferencia de archivos y gestión de grupos de dispositivos. Para un centenar de máquinas es suficiente una configuración moderada si se limitan los permisos de los usuarios, se actualiza periódicamente el servidor y se almacenan copias de seguridad cifradas fuera del VPS.
Cree un grupo de prueba con varios equipos y compruebe las políticas de acceso y la restauración desde la copia de seguridad.
Añada monitorización externa de HTTPS, del espacio libre, de la validez del certificado TLS y del estado de los contenedores.
Cuando aumente la carga, distribuya MeshCentral, el almacenamiento de copias de seguridad y los servicios adicionales en nodos independientes, o traslade la instalación a un servidor dedicated.
¿Te fue útil esta guía?
Tus comentarios nos ayudan a mejorar nuestras guías.
Compartir esta publicación:
Envía esta guía a alguien a quien pueda resultarle útil.