Instalar Restyaboard en CentOS 7

Importante: adapta nombres de host, contraseñas y rutas a tu entorno antes de ejecutar comandos con privilegios.
Objetivo y variantes de intención
- Objetivo principal: instalar Restyaboard en CentOS 7.
- Variantes relacionadas: migración a servidor propio, configurar Restyaboard con Nginx, usar PostgreSQL para Restyaboard, desplegar Restyaboard con PHP-FPM.
Requisitos previos
- Un servidor CentOS 7 mínimo.
- Acceso root o usuario con privilegios sudo.
- Conexión a Internet para descargar paquetes.
Paso 1 - Instalar Nginx
Antes de instalar paquetes, actualiza repositorios y paquetes:
yum -y update
Nginx no está en el repositorio YUM por defecto, por eso instalamos EPEL:
yum -y install epel-release
Instala Nginx:
yum -y install nginx
Arranca y habilita Nginx para que se inicie en el arranque:
systemctl start nginx systemctl enable nginx
Comprobación rápida:
- Verifica que Nginx esté activo: systemctl status nginx
- Abre el puerto 80 en el firewall si aplica: firewall-cmd –permanent –add-service=http && firewall-cmd –reload
Paso 2 - Instalar y configurar PHP-FPM con mbstring
Restyaboard funciona con PHP 7.0 (según la versión usada en este tutorial). PHP 7.0 no está en los repositorios base; añadimos Webtatic y luego instalamos PHP 7.0 y extensiones necesarias:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Instala PHP 7.0 y módulos requeridos:
yum -y install php70w php70w-fpm php70w-devel php70w-cli php70w-curl php70w-pgsql php70w-mbstring php70w-ldap php70w-pear php70w-imap php70w-xml php70w-pecl-imagick ImageMagick
Configuración clave de PHP-FPM:
Edita /etc/php-fpm.d/www.conf y cambia el usuario y grupo para que PHP-FPM funcione con Nginx:
nano /etc/php-fpm.d/www.conf
Busca y cambia apache por nginx:
user = nginx
group = nginx
Cambia el listen para usar un socket en lugar de puerto:
listen = /run/php-fpm/php7.0-fpm.sock
Asegura permisos del socket:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Ajustes en php.ini:
nano /etc/php.ini
- Establece la zona horaria (ejemplo: Asia/Kolkata, cámbiala según tu región):
date.timezone = Asia/Kolkata
- Descomenta y establece:
cgi.fix_pathinfo=0
Instala GeoIP si lo necesitas y habilítalo en php.ini:
yum -y install GeoIP-devel
Añade al final de /etc/php.ini:
extension=geoip.so
Arranca y habilita PHP-FPM, y reinicia Nginx:
systemctl start php-fpm systemctl enable php-fpm
systemctl restart nginx
Notas de compatibilidad: si tu entorno requiere PHP más reciente (7.2+ o 7.4), considera adaptar Restyaboard o usar una versión compatible; esta guía sigue la versión original del paquete mostrado.
Paso 3 - Instalar y configurar PostgreSQL
Restyaboard emplea PostgreSQL como motor de datos. En este tutorial se usa PostgreSQL 9.6 tal y como aparece en los repositorios oficiales.
Añade el repositorio de PostgreSQL 9.6:
rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
Instala PostgreSQL 9.6:
yum -y install postgresql96-server postgresql96-contrib
Inicializa la base de datos:
/usr/pgsql-9.6/bin/postgresql96-setup initdb
Configura autenticación en /var/lib/pgsql/9.6/data/pg_hba.conf para usar MD5 en conexiones locales TCP/IP y trust en sockets locales (según la guía original):
nano /var/lib/pgsql/9.6/data/pg_hba.conf
Modifica las líneas relevantes para que queden así:
local all all trust
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Arranca y habilita PostgreSQL:
systemctl start postgresql-9.6 systemctl enable postgresql-9.6
Cambia la contraseña del usuario del sistema postgres y crea un usuario y base de datos para Restyaboard:
passwd postgres
su - postgres
createuser rb_user
psql
ALTER USER rb_user WITH ENCRYPTED password 'StrongPassword';
CREATE DATABASE rb_data OWNER rb_user ENCODING 'UTF8' TEMPLATE template0;
\q
exit
Sustituye ‘StrongPassword’ por una contraseña segura y guárdala en tu gestor de contraseñas.
Paso 4 - Descargar Restyaboard
Descarga la versión lista para desplegar (ejemplo v0.4.2):
cd /usr/share/nginx/html wget https://github.com/RestyaPlatform/board/releases/download/v0.4.2/board-v0.4.2.zip
Si no tienes unzip, instálalo:
yum -y install unzip
Extrae el ZIP:
unzip board-v0.4.2.zip -d board
Importa el SQL inicial en la base de datos creada:
psql -d rb_data -f "/usr/share/nginx/html/board/sql/restyaboard_with_empty_data.sql" -U rb_user
Configura las credenciales de la base de datos en el archivo de configuración de Restyaboard:
nano /usr/share/nginx/html/board/server/php/config.inc.php
Actualiza las constantes para que apunten a rb_user, rb_data y la contraseña elegida:
define('R_DB_HOST', 'localhost');
define('R_DB_USER', 'rb_user');
define('R_DB_PASSWORD', 'StrongPassword');
define('R_DB_NAME', 'rb_data');
define('R_DB_PORT', 5432);
Paso 5 - Configurar bloque de servidor Nginx
El paquete trae un archivo de configuración para Nginx. Cópialo y adáptalo:
cp /usr/share/nginx/html/board/restyaboard.conf /etc/nginx/conf.d
nano /etc/nginx/conf.d/restyaboard.conf
- Cambia server_name por tu dominio real: board.tudominio.com
- Ajusta las directivas root para apuntar a /usr/share/nginx/html/board y client dentro de esa carpeta.
- Actualiza la ruta del socket de PHP-FPM a: unix:/run/php-fpm/php7.0-fpm.sock;
Ejemplo de cambios importantes dentro del archivo:
server {
listen 80;
server_name board.yourdomain.com;
root /usr/share/nginx/html/board;
...
location / {
root /usr/share/nginx/html/board/client;
}
...
fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;
}
Aplica permisos y propietarios adecuados:
chown -R nginx:nginx /usr/share/nginx/html/board/
chmod -R go+w "/usr/share/nginx/html/board/media"
chmod -R go+w "/usr/share/nginx/html/board/client/img"
chmod -R go+w "/usr/share/nginx/html/board/tmp/cache"
chmod -R 0755 /usr/share/nginx/html/board/server/php/shell/*.sh
Añade tareas programadas (cron) para notificaciones y sincronizaciones:
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/instant_email_notification.sh" >> /var/spool/cron/root
echo "0 * * * * /usr/share/nginx/html/board/server/php/shell/periodic_email_notification.sh" >> /var/spool/cron/root
echo "*/30 * * * * /usr/share/nginx/html/board/server/php/shell/imap.sh" >> /var/spool/cron/root
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/webhook.sh" >> /var/spool/cron/root
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/card_due_notification.sh" >> /var/spool/cron/root
SELinux: la configuración proxy incluida puede no funcionar con políticas Enforcing. Para deshabilitar temporalmente sin reiniciar:
setenforce 0
Para deshabilitar permanentemente, edita /etc/selinux/config y cambia:
SELINUX=disabled
Reinicia Nginx:
systemctl restart nginx
Accede a la aplicación en http://board.yourdomain.com
Verás la pantalla de inicio de sesión de Restyaboard.
Usa admin / restya para el primer acceso (cámbialo inmediatamente después).
Para crear un tablero nuevo, haz clic en la flecha en la esquina izquierda y selecciona Añadir tablero u Organización.
Proporciona un nombre y elige una plantilla.
Ejemplo: tablero recién creado.
Acceso al panel de administración: clic en Admin abajo a la derecha y luego en Settings en la barra superior.
Comprobaciones posteriores a la instalación
- Accede a la URL pública y verifica el login.
- Comprueba logs de Nginx: /var/log/nginx/error.log
- Revisa logs de PHP-FPM: /var/log/php-fpm/error.log (o el que corresponda)
- Valida conexión a PostgreSQL: psql -U rb_user -d rb_data -h 127.0.0.1
- Verifica que los cron jobs se hayan registrado: crontab -l -u root
Lista de verificación de despliegue (checklist)
- Actualizar sistema y paquetes
- Instalar Nginx y abrir el puerto HTTP/HTTPS
- Instalar PHP-FPM y extensiones requeridas
- Configurar socket y permisos de PHP-FPM
- Instalar PostgreSQL y crear usuario/base de datos
- Importar esquema SQL de Restyaboard
- Ajustar configuración en config.inc.php
- Copiar y ajustar restyaboard.conf a Nginx
- Establecer permisos de archivos y carpetas
- Añadir cron jobs de notificaciones
- Configurar SELinux o política equivalente
- Probar acceso y cambiar credenciales por defecto
Verificación por roles (role-based checklist)
DevOps/Administrador:
- Asegurar backups regulares de la base de datos.
- Monitorizar procesos Nginx y PHP-FPM.
- Mantener actualizaciones de seguridad.
Administrador de la aplicación:
- Cambiar usuario y contraseña admin.
- Configurar correo saliente para notificaciones.
- Definir políticas de acceso y organizaciones.
Usuario final / Equipo:
- Crear tableros y plantillas.
- Importar datos si procede.
- Validar integraciones (webhooks, IMAP).
Seguridad y endurecimiento (hardening)
- Cambia contraseñas por defecto inmediatamente.
- Ejecuta el servicio bajo un usuario no root (ya usamos nginx).
- Habilita HTTPS con certificados válidos (Let’s Encrypt) y fuerza redirección a HTTPS.
- Limita acceso SSH con autenticación por clave y deshabilita login por contraseña para root.
- Habilita cortafuegos y reglas restrictivas (firewalld/iptables).
- Realiza copias de seguridad periódicas de la base de datos y del directorio /usr/share/nginx/html/board.
Sugerencia rápida para certbot:
yum -y install certbot python2-certbot-nginx
certbot --nginx -d board.yourdomain.com
Resolución de problemas comunes
- Error 502 Bad Gateway: verifica que PHP-FPM esté en ejecución y que fastcgi_pass apunte al socket correcto (/run/php-fpm/php7.0-fpm.sock). Revisa permisos del socket.
- Fallos al conectar con la base de datos: confirma credenciales en config.inc.php y que PostgreSQL acepte conexiones desde localhost con md5.
- Imposible escribir archivos (subida de imágenes o cache): revisa permisos en /usr/share/nginx/html/board/media y tmp/cache.
- Jobs programados no se ejecutan: confirma las entradas en crontab para root y permisos de los scripts .sh.
Alternativas y cuándo no usar esta guía
- Si prefieres Docker, una alternativa más moderna es desplegar Restyaboard en contenedores (imagen oficial o mantenida). Esta guía está orientada a un despliegue bare-metal con paquetes RPM.
- Para nuevas instalaciones en entornos con PHP 7.4+ o PHP 8, verifica compatibilidad de Restyaboard o utiliza una versión del proyecto compatible.
Mini-metodología de despliegue (pasos rápidos)
- Preparar servidor y repositorios.
- Instalar y configurar Nginx y PHP-FPM.
- Instalar PostgreSQL, crear usuario y base.
- Descargar Restyaboard y ajustar config.
- Configurar Nginx, permisos y cron.
- Probar y endurecer seguridad.
Pruebas de aceptación básicas
- El servicio web carga la página de login.
- Inicio de sesión con credenciales iniciales (y cambio de contraseña exitoso).
- Creación de un tablero y subida de una imagen de tarjeta.
- Envío y recepción de notificaciones por correo (si está configurado SMTP).
Mantenimiento y migración
- Para migrar a otra máquina: exporta la base de datos (pg_dump) y copia el directorio /usr/share/nginx/html/board/media.
- Para actualizar Restyaboard: revisa las notas de la versión en Github y realiza backups antes de reemplazar archivos.
Notas sobre SELinux y alternativas
Si no puedes deshabilitar SELinux por políticas corporativas, en lugar de deshabilitarlo crea y aplica una política personalizada que permita los accesos necesarios a Nginx y PHP-FPM. Deshabilitar SELinux reduce la superficie de seguridad.
Glosario (1 línea)
- PHP-FPM: FastCGI Process Manager para PHP, maneja procesos PHP en segundo plano.
- Nginx: servidor web y reverse proxy de alto rendimiento.
- PostgreSQL: sistema de gestión de bases de datos relacional de código abierto.
- SELinux: módulo de seguridad obligatorio en CentOS/RHEL.
Resumen final
Restyaboard queda instalado tras configurar Nginx, PHP-FPM y PostgreSQL, ajustar permisos y registrar los cron jobs. Cambia las credenciales por defecto y habilita HTTPS antes de poner la instancia en producción.
Punto clave
- Guarda copias de seguridad y automatiza actualizaciones de seguridad.
Gracias por seguir esta guía. Si encuentras un paso que no funciona en tu entorno, revisa los logs y las rutas de sockets/archivos antes de cambiar configuraciones globales.
Materiales similares

Vídeo como foto de perfil en Facebook (Android)

Crear dominio de autenticación WiKID

Abrir y editar ODT en el navegador

Haz que Windows 11 parezca ChromeOS
Replicación MySQL con SSL en CentOS 5.4
