Método automático: un solo script desde su área personal prepara todo el servidor (pila web Apache + PHP, base de datos, herramientas de seguridad, cron). Después: desplegar el panel, emitir el SSL e introducir la licencia. Funciona en Ubuntu/Debian: en un VPS nuevo lo configura todo desde cero, y en un servidor ya configurado solo de forma aditiva (perfil «Servidor configurado», paso 01). Todos los comandos siguientes van en orden; solo tiene que desplazarse de arriba abajo. En un VPS nuevo le sirven todos los pasos seguidos; si el servidor ya está configurado o tiene un panel de hosting, el script deja intencionadamente parte del trabajo en sus manos: qué exactamente, lo indica al terminar su ejecución (el análisis de la salida está en el paso 01).
monitor.example.com, su dominio; 203.0.113.10, la IP real del servidor; /var/www/monitor, la raíz del panel (donde se encuentran public/, assets/, config.php); y elija su propia contraseña para la base de datos.
jail.local), root-crontab, reglas de UFW, configuración de Apache. Si el servidor ya está configurado (panel en funcionamiento, sitios, correo, sus propios jails), elija el perfil «Servidor configurado»: solo introduce cambios aditivos y no toca su cortafuegos, Fail2ban, correo, SSH ni sysctl. Al detectar un panel de hosting, el script cambia a este modo por sí mismo. Antes del primer arranque puede activar la ejecución en seco (casilla en el área personal): le mostrará qué se hará sin cambiar nada. En un servidor en funcionamiento, por si acaso, haga una instantánea (snapshot).
my.arciveo.com → sección «Configuración del servidor» (disponible tras contratar Arcivéo Security Monitor). Está vinculado a su cuenta y contiene un token personal.
El script prepara todo el servidor: la pila web (Apache + PHP), la base de datos, las herramientas para SSL, el conjunto completo de medidas de protección y las tareas de cron (Lynis, SMART, debsums, Logwatch, informe diario, actualización de ipsum).
1) Elija el nivel de protección (en el área personal, antes de copiar el comando):
2) Ejecute en el servidor como root el comando del área personal — tiene este aspecto:
3) Lea la salida del final: ahí se indica qué queda de su parte. El script termina con un bloque de comprobaciones y una lista «Después: instalación del panel». Una parte de los pasos no la realiza a propósito: cuáles exactamente depende del perfil elegido y de lo que haya encontrado en el servidor. Contraste con la lista de abajo: solo hay que ejecutar los puntos cuyas líneas hayan aparecido en su salida.
Control panel detected (…) — el sitio se crea con los medios del propio panel de hosting; el script no crea el vhost. Paso 03, rama «Servidor con panel de hosting».No vhost created (no domain given) — perfil «Servidor configurado» sin dominio: un vhost sin nombre pasaría a ser el sitio por defecto e interceptaría sus propios sitios, por eso no se ha creado. Paso 03, rama «Crear el vhost a mano».sudo rules NOT written — el script no ha podido determinar con qué cuenta trabaja el panel. Es una situación habitual: los archivos del panel se suben después de la autoconfiguración y aún no había nada por lo que determinarlo. Sin esas reglas, los módulos no verán los datos del sistema. Paso 04, bloque «sudo para el servidor web».! Nginx does not read .htaccess — delante de Apache hay un Nginx y no se ha podido escribir la denegación en su configuración automáticamente. Hágalo sin falta: de lo contrario data/, keys/, database/ y config.php se sirven hacia fuera esquivando el .htaccess. Paso 03, bloque «Si delante de Apache hay un Nginx».UFW installed but inactive — el cortafuegos está instalado, pero apagado: en un servidor configurado el script no lo activa por sí mismo para no cortarle el acceso. Actívelo usted, permitiendo obligatoriamente su puerto SSH:
Fail2ban installed but not running — inícielo: sudo systemctl enable --now fail2ban.Database server present … but not running — inicie el SGBD antes del paso 04: sudo systemctl enable --now mariadb (o mysql, según lo que tenga instalado).Certbot skipped — issue SSL in … — el certificado se emite con el interruptor de Let's Encrypt del panel de hosting; el paso 06 no le hace falta.All checks passed. Los puntos con ! requieren atención; los detalles se escriben en el registro, cuya ruta imprime el script al final del todo (Log: …).
Para abrir el panel en una dirección como monitor.example.com y obtener un SSL gratuito, el dominio debe apuntar al servidor. En el panel de control de DNS (en su registrador u hosting) cree un registro A:
Al cabo de unos minutos (a veces hasta una hora) compruebe que el dominio apunta al servidor:
/var/www/monitor y ha configurado el sitio de Apache (DocumentRoot en la raíz del panel, PHP-FPM, AllowOverride para .htaccess). En la salida del script es la línea vhost … → DocumentRoot …. No es necesario crear el directorio ni el vhost por separado: solo suba los archivos y asigne los permisos.
Rama «Servidor con panel de hosting» (en la salida: Control panel detected (…)). En un servidor así los sitios los gestiona el panel, y el script no crea su propio vhost a propósito: quedaría sobrescrito en la primera reconstrucción de configuraciones que hiciera el panel. El orden es este:
public_html de ese dominio: junto a index.php, api/ y assets/ deben estar también las carpetas de servicio config.php, includes/, data/, tmp/, logs/, keys/, cron/ y database/. No hace falta sacar nada por encima de la raíz web: las carpetas de servicio están protegidas por el archivo .htaccess de la distribución y, bajo Nginx, por la denegación que el script escribió en la configuración del dominio.config.php (paso 05). En los comandos, sustituya las rutas por /home/cuenta/web/dominio/public_html y el propietario por el usuario de ese dominio en lugar de www-data.Rama «Crear el vhost a mano» (en la salida: No vhost created (no domain given)). Esto solo ocurre con el perfil «Servidor configurado», cuando no se ha pasado el dominio. Lo más sencillo es volver a lanzar el comando del área personal indicando el dominio:
Volver a ejecutarlo es seguro: lo ya hecho no se duplica. Y si hay que crear el vhost a mano, esta es la misma configuración que escribe el instalador:
ServerName es obligatorio. Un vhost sin nombre se convierte en el sitio por defecto de Apache y empieza a responder por otros dominios de ese mismo servidor. Por la misma razón, no desactive 000-default.conf en un servidor ya configurado: ese sitio pudo haberse adaptado al de alguien en funcionamiento; en un VPS nuevo el instalador lo retira por sí mismo y aquí no hay que hacerlo.
! Nginx does not read .htaccess). Nginx sirve los archivos estáticos directamente desde el disco y no lee el .htaccess: las carpetas de servicio quedarán abiertas hacia fuera aunque Apache las cierre correctamente. El script ya ha preparado un archivo con las denegaciones; hay que incluirlo en el bloque server{} de su sitio y recargar Nginx:
my.arciveo.com → «Descargas». Descomprima el archivo antes de subirlo al servidor.
Suba el contenido de la distribución a /var/www/monitor (de modo que dentro queden public/, assets/, config.php, etc.) por SFTP/SCP (FileZilla / WinSCP) o con el comando scp desde su equipo local:
ServerName), se pasa al comando de configuración automática ya en el paso 01: … | sudo bash -s -- monitor.example.com (o se indica el dominio en el campo «Dominio del panel» del área personal). Si no se pasó el dominio, el panel responde a cualquier host y por IP, y certbot registrará el ServerName al emitir el SSL (paso 06); no hace falta reinstalar nada.
root o por SFTP, los archivos pertenecen a root y el servidor web (www-data) no podrá leerlos: el panel se abrirá vacío o con error 403 (en el registro: .htaccess unreadable / directory not executable). El comando de abajo lo soluciona:
Habilite para usted mismo la subida por SFTP. Tras el comando anterior todos los archivos pertenecen a www-data, mientras que FileZilla / WinSCP se conectan con su propio usuario: la subida fallará con SSH_FX_PERMISSION_DENIED (Permission denied). Elija una de las dos variantes.
Variante A: una ACL solo para su usuario (recomendado). El permiso de escritura lo obtiene únicamente usted; el servidor web sigue sin poder sobrescribir el código del panel:
Variante B: mediante el grupo www-data. Más sencilla, pero el servidor web también obtiene permiso de escritura sobre los archivos del panel: ante una vulnerabilidad en PHP se podría sustituir el código. El orden de los comandos importa: config.php y las carpetas de trabajo se cierran al final:
id deploy, en la lista de grupos debe aparecer www-data; ls -ld /var/www/monitor, permisos drwxrwsr-x, la letra s en lugar de x significa que setgid está activo.
Cree la base de datos y el usuario, luego importe el esquema. El bloque de la BD se pega en la terminal completo (sudo mysql accede como root por socket unix; no se necesita la contraseña de root). monitor_db y monitor_user son nombres de ejemplo, puede definir los que desee; recuerde el nombre de la base, el usuario y la contraseña — los escribirá en config.php en el siguiente paso:
admin en el primer acceso desde el navegador (a partir de database/db.sql) si la BD está vacía.
Si las tablas no se han creado (el panel muestra un error de conexión a la BD o una pantalla vacía en lugar del formulario de inicio de sesión), importe el esquema a mano. El comando se ejecuta en la raíz del panel y los valores se toman del bloque anterior:
$DBNAME / $DBUSER / $DBPASS ya se han «olvidado» (una sesión nueva de la terminal), ponga los valores a mano en el comando o defínalos de nuevo con esas mismas tres líneas del bloque anterior.
sudo rules NOT written, no había con qué determinar la cuenta del panel (los archivos aún no estaban subidos) y las reglas no se han creado. Sin ellas, secciones como el cortafuegos, Fail2ban y CrowdSec quedarán vacías. Ahora que los archivos ya están en su sitio, lance el comando del área personal otra vez, indicando la cuenta de forma explícita:
www-data por el usuario con el que se ejecuta el PHP de su sitio (en un panel de hosting suele ser el propietario del dominio). Puede verlo así:
/etc/sudoers.d/monitor existe y contiene líneas con su usuario.
config.php en la raíz del panel (/var/www/monitor/config.php) es el único archivo que hay que editar a mano. Todos los ajustes del panel se definen en él mediante constantes define(). Ábralo en el editor:
Ponga sus propios valores en los lugares resaltados; deje el resto como está:
Qué cambiar:
DB_NAME, DB_USER, DB_PASS: exactamente el mismo nombre de base de datos, usuario y contraseña que definió al crear la BD en el paso 04 (si dejó los ejemplos: monitor_db / monitor_user). No toque DB_HOST ni DB_CHARSET.APP_URL: dirección completa del panel con https://, sin barra al final y sin www. Debe coincidir con el dominio en el que activa la licencia (paso 07); de lo contrario, la clave será rechazada.TIMEZONE: su zona horaria (lista: timedatectl list-timezones). Solo afecta a cómo el panel muestra las fechas; en la hora de ejecución de las tareas de cron no influye (allí rige la zona del sistema).SESSION_LIFETIME: tras cuántos segundos de inactividad el panel pedirá entrar de nuevo (por defecto 8 horas). Por ej. 3600 = 1 hora, 86400 = un día.display_errors, log_errors, error_log): déjelo por defecto.Guarde el archivo (Ctrl+O, Enter y luego Ctrl+X) y reinicie PHP-FPM; de lo contrario, por culpa de OPcache los cambios no se aplicarán:
640 (asignados en el paso 03) y una denegación explícita en el .htaccess raíz. No lo publique en repositorios públicos ni lo envíe a soporte con la contraseña real.
http:// no podrá iniciar sesión.
Certbot skipped — issue SSL in …). El certificado se emite con el interruptor de Let's Encrypt en el dominio web del propio panel; así, de su renovación también se encarga el panel.
certbot y el complemento para Apache ya están instalados por la autoconfiguración. El DNS del dominio ya debe apuntar al servidor (paso 02). Emisión en un solo comando:
Si el panel también debe abrirse con www., enumere ambos nombres en un solo comando; de lo contrario, en la segunda dirección el navegador mostrará una advertencia de certificado:
Y.<VirtualHost *:443>, configurará la redirección http→https y la renovación automática. Al final: Successfully enabled HTTPS.
dig +short monitor.example.com devuelve la IP del servidor y que los puertos 80/443 están abiertos (sudo ufw allow 80,443/tcp).
Tras la emisión: https://monitor.example.com se abre con candado y http:// redirige a https://.
Abra https://monitor.example.com, inicie sesión con admin / useradmin y complete la lista de comprobación:
ARCIVEO-… del área personal y pegue la clave en «Ajustes» → «Licencia». Más información.public/start_db.php, si aún queda: permite recrear la base de datos sin autenticación. Mientras el archivo esté en la raíz del panel o en public/, el panel avisa de ello con un banner rojo.sudo /usr/local/bin/clamav-scan.sh) carga mucho el disco y el procesador y puede durar una hora o más: en un servidor en funcionamiento es mejor esperar a la ejecución nocturna de la 01:30. Las secciones «Discos (SMART)», «Rendimiento» y «Actualizaciones de seguridad» se llenan solas: cada 30 minutos, cada 5 minutos y una vez por hora, respectivamente.