Instalación de LimeSurvey en un VPS: configuración de encuestas y bases de datos
TL;DR
En esta guía detallada, configuraremos paso a paso un potente sistema para realizar encuestas en línea LimeSurvey en su propio servidor privado virtual (VPS). Aprenderá a preparar un servidor basado en Ubuntu 24.04 LTS, instalar la pila de software necesaria (Nginx, MariaDB, PHP 8.3), configurar LimeSurvey, asegurar la comunicación con HTTPS y configurar copias de seguridad automáticas, obteniendo control total sobre sus datos y encuestas.
- Configuración de un VPS seguro y de alto rendimiento en Ubuntu 24.04 LTS.
- Instalación y configuración del servidor web Nginx, la base de datos MariaDB y PHP 8.3.
- Despliegue de la versión actual de LimeSurvey (7.x) para realizar encuestas profesionales.
- Protección de LimeSurvey con HTTPS, utilizando Caddy para la emisión automática de certificados SSL.
- Creación de un sistema de copia de seguridad fiable para proteger los datos y la configuración de las encuestas.
- Resolución de problemas comunes y respuestas a preguntas frecuentes sobre la operación de LimeSurvey en un VPS.
¿Qué configuramos y por qué?
En esta guía, nos centraremos en la instalación y configuración de LimeSurvey, una plataforma potente, flexible y completamente personalizable para crear y realizar encuestas en línea. LimeSurvey es un software de código abierto, lo que le otorga control total sobre sus datos, funcionalidad y escalabilidad.
Al finalizar todos los pasos, obtendrá una instalación de LimeSurvey completamente funcional en su propio VPS, accesible a través de un nombre de dominio y protegida por el protocolo HTTPS. Esto le permitirá crear encuestas complejas, recopilar y analizar datos sin las limitaciones inherentes a muchos servicios en la nube, y al mismo tiempo garantizar la máxima confidencialidad para sus encuestados.
LimeSurvey es adecuado para una amplia gama de tareas: desde investigaciones académicas y campañas de marketing hasta encuestas corporativas internas y recopilación de comentarios de clientes. Gracias a su amplio conjunto de funciones, que incluye lógica de ramificación, varios tipos de preguntas, importación/exportación de datos y soporte multilingüe, LimeSurvey supera en capacidades a muchas soluciones propietarias.
Alternativas: Cloud-managed vs. Self-hosted en un VPS
Existen numerosas soluciones para realizar encuestas en el mercado. Se pueden dividir condicionalmente en dos categorías:
-
Cloud-managed (servicios en la nube): Entre ellas se encuentran plataformas como SurveyMonkey, Google Forms, Typeform. Ofrecen facilidad de uso, no requieren conocimientos técnicos para su implementación y a menudo tienen una interfaz intuitiva. Sin embargo, tienen desventajas significativas:
- Limitaciones: A menudo existen límites en el número de encuestas, preguntas, encuestados o funciones disponibles en los planes gratuitos/económicos.
- Costo: Para funciones avanzadas y grandes volúmenes de datos, la tarifa mensual puede ser considerable.
- Control de datos: Sus datos se almacenan en servidores de terceros, lo que puede ser inaceptable desde el punto de vista de la privacidad, la seguridad o el cumplimiento normativo (por ejemplo, GDPR).
- Personalización: Las posibilidades de adaptar la apariencia y la funcionalidad a sus necesidades suelen ser muy limitadas.
-
Self-hosted en un VPS/Dedicated Server (alojamiento propio): Este es el enfoque que utilizaremos con LimeSurvey. Usted instala el software en su propio servidor. Ventajas:
- Control total: Usted es el propietario total del servidor, el software y todos los datos. Esto es crítico para encuestas confidenciales.
- Flexibilidad y personalización: Posibilidad de modificar el código, instalar plugins, adaptar el diseño y la funcionalidad sin restricciones.
- Escalabilidad: Puede escalar fácilmente los recursos del servidor (CPU, RAM, disco) a medida que crecen las necesidades, sin pagar de más por funciones innecesarias.
- Costo a largo plazo: Para grandes volúmenes de encuestas o uso prolongado, el costo de poseer un VPS a menudo resulta ser menor que una suscripción a servicios en la nube.
Elegir una solución self-hosted en un VPS para LimeSurvey es optar por la máxima libertad, seguridad y control sobre su infraestructura de encuestas, lo cual es especialmente valioso para desarrolladores, startups y empresas que se toman en serio sus datos.
¿Qué configuración de VPS se necesita para esta tarea?
La elección de la configuración correcta del VPS es crucial para el funcionamiento estable y rápido de LimeSurvey. Los requisitos pueden variar según la carga esperada: el número de encuestas activas, el número de encuestados, la complejidad de la lógica de las encuestas y el volumen de datos almacenados.
Requisitos mínimos para LimeSurvey 7.x (actualizado a 2026)
Para una instalación pequeña, varias encuestas activas y hasta 1000 encuestados al mes:
- CPU: 2 núcleos (por ejemplo, Intel Xeon E5 o similar)
- RAM: 4 GB DDR4 (para SO, servidor web, PHP-FPM y base de datos)
- Disco: 50 GB SSD (para SO, software, base de datos y archivos de LimeSurvey. SSD es obligatorio para un buen rendimiento de la BD)
- Red: 100 Mbps (con tráfico ilimitado o volumen suficiente)
- Sistema operativo: Ubuntu Server 24.04 LTS
Plan de VPS recomendado para cargas medias
Para varias decenas de encuestas activas, hasta 10 000 encuestados al mes y lógica más compleja:
- CPU: 4 núcleos (procesador moderno, por ejemplo, Intel Xeon Scalable o AMD EPYC)
- RAM: 8 GB DDR4
- Disco: 100-200 GB NVMe SSD (para máxima velocidad de lectura/escritura de BD)
- Red: 1 Gbps
- Sistema operativo: Ubuntu Server 24.04 LTS
Un VPS adecuado con las características mencionadas se puede adquirir, por ejemplo, en esta página: VPS con las características mencionadas.
Cuándo se necesita un Dedicated Server y no un VPS
En la mayoría de los casos, un VPS será suficiente para LimeSurvey. Sin embargo, si planea:
- Cargas muy altas: Decenas de miles de encuestados simultáneos, cientos de miles de encuestas al mes.
- Rendimiento crítico: Mínima latencia en las respuestas a las encuestas, análisis de datos muy rápido.
- Máximo aislamiento: Requisitos de seguridad o reguladores que no permiten la virtualización en una infraestructura compartida.
- Grandes volúmenes de datos: Bases de datos que se miden en cientos de gigabytes o terabytes.
En tales escenarios, un dedicated server (servidor dedicado) le proporcionará acceso exclusivo a todos los recursos físicos, lo que garantizará el máximo rendimiento y control. Puede encontrar un servidor dedicado adecuado aquí: dedicated adecuado.
Ubicación: qué factores influye
La elección de la ubicación geográfica de su VPS o servidor dedicado es importante por varias razones:
- Latencia: Ubique el servidor lo más cerca posible de su audiencia principal de encuestados. Una menor latencia mejora la experiencia del usuario y la velocidad de carga de las páginas de las encuestas.
- Legislación: En algunas jurisdicciones existen requisitos estrictos para el almacenamiento de datos personales (por ejemplo, GDPR en Europa). Asegúrese de que la ubicación seleccionada cumpla con todas las leyes y regulaciones aplicables.
- Disponibilidad: Elija proveedores con buena reputación en cuanto a tiempo de actividad y estabilidad de la red en la región seleccionada.
Un enfoque cuidadoso en la elección de la configuración y la ubicación del servidor sentará una base sólida para el funcionamiento estable y eficiente de su plataforma LimeSurvey.
Preparación del servidor
Antes de instalar LimeSurvey, es necesario realizar una configuración básica y reforzar la seguridad de su nuevo VPS. Utilizaremos Ubuntu Server 24.04 LTS, ya que es una versión actual y soportada hasta 2026, que ofrece estabilidad y paquetes actualizados.
1. Conexión al servidor y actualización del sistema
Conéctese a su servidor a través de SSH con la cuenta de usuario root o con el usuario proporcionado por el proveedor:
ssh root@ВАШ_IP_АДРЕС
Primero, actualice la lista de paquetes y los paquetes instalados a las últimas versiones:
sudo apt update # Actualizar la lista de paquetes disponibles
sudo apt upgrade -y # Actualizar todos los paquetes instalados
sudo apt autoremove -y # Eliminar dependencias innecesarias
2. Creación de un nuevo usuario con permisos sudo
Trabajar como usuario root no es seguro. Crearemos un nuevo usuario con el que trabajaremos:
sudo adduser limesurveyuser # Crear un nuevo usuario con el nombre 'limesurveyuser'
sudo usermod -aG sudo limesurveyuser # Añadir el usuario al grupo sudo para que pueda ejecutar comandos con privilegios de administrador
Ahora, salga de la sesión root e inicie sesión con el nuevo usuario:
exit
ssh limesurveyuser@ВАШ_IP_АДРЕС
3. Configuración de la autenticación por claves SSH (recomendado)
Para mejorar la seguridad, se recomienda deshabilitar el inicio de sesión con contraseña y usar solo claves SSH. Si aún no tiene una clave SSH, genérela en su máquina local:
# En su máquina local
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Copie la clave pública al servidor:
# En su máquina local
ssh-copy-id limesurveyuser@ВАШ_IP_АДРЕС
Luego, en el servidor, edite el archivo de configuración del demonio SSH para deshabilitar el inicio de sesión con contraseña:
sudo nano /etc/ssh/sshd_config
Encuentre y modifique las siguientes líneas:
PasswordAuthentication no
PermitRootLogin no
Guarde el archivo (Ctrl+O, Enter) y salga (Ctrl+X). Reinicie el servicio SSH:
sudo systemctl restart sshd
Importante: ¡Asegúrese de poder iniciar sesión con la clave SSH antes de deshabilitar la autenticación por contraseña!
4. Configuración del firewall (UFW)
Configuraremos UFW (Uncomplicated Firewall) para permitir solo el tráfico necesario:
sudo ufw allow OpenSSH # Permitir conexiones SSH
sudo ufw allow http # Permitir HTTP (puerto 80)
sudo ufw allow https # Permitir HTTPS (puerto 443)
sudo ufw enable # Habilitar el firewall
sudo ufw status # Verificar el estado del firewall
Confirme la activación del firewall introduciendo y.
5. Instalación de Fail2ban
Fail2ban protege el servidor contra ataques de fuerza bruta, bloqueando las direcciones IP desde las que se producen intentos fallidos de inicio de sesión:
sudo apt install fail2ban -y # Instalación de Fail2ban
sudo systemctl enable fail2ban # Habilitar el inicio automático al arrancar el sistema
sudo systemctl start fail2ban # Iniciar el servicio
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Copiar la configuración para futuras modificaciones
sudo nano /etc/fail2ban/jail.local # Editar la configuración local
En el archivo jail.local puede configurar parámetros como el tiempo de bloqueo (bantime) y el número de intentos fallidos (maxretry). Asegúrese de que la sección [sshd] esté activa (es decir, no comentada):
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1h
Guarde el archivo y reinicie Fail2ban:
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd # Verificar el estado de funcionamiento para SSH
Ahora su servidor tiene una protección básica pero efectiva y está listo para la instalación del software principal.
Instalación de software — Paso a paso
Para que LimeSurvey funcione, necesitaremos un servidor web (Nginx), una base de datos (MariaDB) y un intérprete de PHP con las extensiones necesarias. Instalaremos las versiones actuales disponibles en los repositorios de Ubuntu 24.04 LTS para 2026.
1. Instalación de Nginx
Nginx es un servidor web de alto rendimiento, ideal para servir contenido estático y para actuar como proxy inverso para PHP-FPM.
sudo apt install nginx -y # Instalación del servidor web Nginx
sudo systemctl enable nginx # Habilitar el inicio automático de Nginx al arrancar el sistema
sudo systemctl start nginx # Iniciar Nginx
sudo ufw allow 'Nginx Full' # Permitir tráfico para Nginx (HTTP y HTTPS) en el firewall
sudo ufw delete allow 'Nginx HTTP' # Eliminar la regla HTTP antigua, si existía
sudo ufw delete allow http # Eliminar la regla http antigua, si existía
sudo ufw delete allow https # Eliminar la regla https antigua, si existía
sudo ufw status # Verificar el estado de UFW
Debería ver que 'Nginx Full' está permitido. Verifique el funcionamiento de Nginx abriendo la dirección IP de su servidor en el navegador. Debería ver la página de bienvenida estándar de Nginx.
2. Instalación de MariaDB
MariaDB es un sistema de gestión de bases de datos potente y rápido, compatible con MySQL. LimeSurvey utiliza activamente la base de datos para almacenar todas las encuestas, respuestas y configuraciones.
sudo apt install mariadb-server -y # Instalación del servidor MariaDB
sudo systemctl enable mariadb # Habilitar el inicio automático de MariaDB
sudo systemctl start mariadb # Iniciar MariaDB
Ejecute el script para la configuración inicial de seguridad de MariaDB:
sudo mysql_secure_installation # Ejecutar el script de seguridad de MariaDB
Siga las instrucciones: establezca una contraseña para el usuario root de la base de datos, elimine usuarios anónimos, prohíba el inicio de sesión remoto para root y elimine la base de datos de prueba. Responda Y a todas las preguntas.
3. Instalación de PHP 8.3 y extensiones necesarias
LimeSurvey está escrito en PHP, y para su funcionamiento requiere un intérprete y un conjunto de extensiones adecuados. Para 2026, PHP 8.3 es la versión actual y recomendada.
sudo apt install php8.3-fpm php8.3-mysql php8.3-mbstring php8.3-xml php8.3-gd php8.3-zip php8.3-curl php8.3-json php8.3-intl php8.3-ldap php8.3-gmp php8.3-apcu -y # Instalación de PHP-FPM 8.3 y extensiones necesarias
sudo systemctl enable php8.3-fpm # Habilitar el inicio automático de PHP-FPM
sudo systemctl start php8.3-fpm # Iniciar PHP-FPM
Nota: La extensión php8.3-apcu se recomienda para el almacenamiento en caché en LimeSurvey, lo que mejora el rendimiento.
4. Creación de la base de datos y usuario para LimeSurvey
Conéctese a MariaDB como usuario root (de la base de datos) y cree una base de datos y un usuario para LimeSurvey.
sudo mysql -u root -p # Conexión a MariaDB, introduzca la contraseña de root de la BD que estableció anteriormente
Ejecute los siguientes comandos SQL (reemplace limesurvey_db, limesurvey_user y ВАШ_НАДЕЖНЫЙ_ПАРОЛЬ con sus propios valores):
CREATE DATABASE limesurvey_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # Crear la base de datos
CREATE USER 'limesurvey_user'@'localhost' IDENTIFIED BY 'ВАШ_НАДЕЖНЫЙ_ПАРОЛЬ'; # Crear el usuario
GRANT ALL PRIVILEGES ON limesurvey_db. TO 'limesurvey_user'@'localhost'; # Otorgar todos los privilegios sobre la base de datos
FLUSH PRIVILEGES; # Actualizar privilegios
EXIT; # Salir de MariaDB
5. Descarga y descompresión de LimeSurvey
Vaya a un directorio temporal, descargue la última versión estable de LimeSurvey (se asume LimeSurvey 7.x para 2026) y descomprímala.
cd /tmp
wget https://download.limesurvey.org/latest-stable-release/limesurvey7.x.zip # Descargar la versión actual de LimeSurvey 7.x (reemplace con el enlace exacto para 2026)
sudo apt install unzip -y # Instalación de la utilidad para descomprimir archivos ZIP
sudo unzip limesurvey7.x.zip # Descomprimir el archivo
Mueva los archivos descomprimidos al directorio donde Nginx los servirá. Normalmente es /var/www/html o un directorio creado específicamente.
sudo mkdir -p /var/www/limesurvey # Crear directorio para LimeSurvey
sudo mv /tmp/limesurvey/ /var/www/limesurvey/ # Mover los archivos de LimeSurvey
sudo chown -R www-data:www-data /var/www/limesurvey # Establecer el propietario del directorio para Nginx/PHP-FPM
sudo chmod -R 755 /var/www/limesurvey # Establecer permisos de archivo
Ahora todos los componentes están instalados y estamos listos para su configuración.
Configuración
Después de instalar todos los componentes, es necesario configurarlos correctamente para que LimeSurvey pueda funcionar. Esto incluye la configuración de Nginx, PHP-FPM y la obtención de un certificado SSL para HTTPS.
1. Configuración de Nginx para LimeSurvey
Crearemos un nuevo archivo de configuración de Nginx para su dominio. Reemplace yourdomain.com con su dominio real.
sudo nano /etc/nginx/sites-available/yourdomain.com
Pegue el siguiente contenido:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/limesurvey;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
# Prohibir el acceso a directorios confidenciales de LimeSurvey
location ~ /(application|framework|installer)/ {
deny all;
return 404;
}
location ~ /(config|protected|tmp|upload)/ {
deny all;
return 404;
}
# Prohibir el acceso a archivos confidenciales
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
}
Guarde el archivo y cree un enlace simbólico a él en sites-enabled, luego verifique la configuración de Nginx y reinícielo:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t # Verificar la sintaxis de la configuración de Nginx
sudo systemctl restart nginx # Reiniciar Nginx
2. Instalación y configuración de Caddy para HTTPS (recomendado)
Caddy es un servidor web moderno que gestiona automáticamente los certificados SSL de Let's Encrypt, lo que hace que la configuración de HTTPS sea increíblemente sencilla. Utilizaremos Caddy como proxy inverso delante de Nginx para que maneje las conexiones HTTPS y emita certificados.
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https # Instalar los paquetes necesarios
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg # Añadir la clave GPG de Caddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list # Añadir el repositorio de Caddy
sudo apt update # Actualizar la lista de paquetes
sudo apt install caddy -y # Instalar Caddy
sudo systemctl enable caddy # Habilitar el inicio automático de Caddy
sudo systemctl start caddy # Iniciar Caddy
Ahora configuraremos el Caddyfile. Elimine o comente el bloque server de Nginx existente para el puerto 80, ya que Caddy manejará las solicitudes entrantes. Abra el archivo de configuración de Nginx para su dominio y comente las líneas listen 80; y server_name yourdomain.com www.yourdomain.com;. Nginx ahora solo escuchará en un puerto local, por ejemplo 127.0.0.1:8080.
sudo nano /etc/nginx/sites-available/yourdomain.com
Modifique la sección server para que se vea aproximadamente así (añada listen 127.0.0.1:8080;):
server {
listen 127.0.0.1:8080; # Nginx escuchará en el puerto local
# server_name yourdomain.com www.yourdomain.com; # Comente o elimine
root /var/www/limesurvey;
index index.php index.html index.htm;
# ... el resto de la configuración de Nginx sin cambios ...
}
sudo nginx -t
sudo systemctl restart nginx
Ahora cree el Caddyfile:
sudo nano /etc/caddy/Caddyfile
Pegue el siguiente contenido (reemplace yourdomain.com):
yourdomain.com {
reverse_proxy 127.0.0.1:8080
file_server {
root /var/www/limesurvey
}
}
Guarde el archivo y reinicie Caddy:
sudo systemctl reload caddy
Caddy obtendrá e instalará automáticamente los certificados SSL. Ahora puede acceder a https://yourdomain.com.
3. Finalización de la instalación de LimeSurvey a través de la interfaz web
Abra su dominio en el navegador (por ejemplo, https://yourdomain.com). Será redirigido a la página de instalación de LimeSurvey. Siga las instrucciones:
- Selección de idioma: Seleccione el idioma y haga clic en "Start".
- Licencia: Acepte el acuerdo de licencia.
- Verificación de requisitos previos: Asegúrese de que todas las extensiones PHP necesarias y los permisos de archivo estén marcados como "OK". Si hay advertencias, regrese e instale las extensiones faltantes o corrija los permisos de acceso (
sudo chown -R www-data:www-data /var/www/limesurvey). - Configuración de la base de datos:
- Tipo de base de datos: MySQL (o MariaDB)
- Nombre de host: localhost
- Puerto: 3306
- Nombre de la base de datos:
limesurvey_db(la que creó) - Nombre de usuario de la base de datos:
limesurvey_user(el que creó) - Contraseña de la base de datos:
SU_CONTRASEÑA_SEGURA
- Creación de tablas: LimeSurvey creará las tablas necesarias en su base de datos.
- Configuración del administrador: Establezca el nombre de usuario (por ejemplo,
admin), la contraseña, la dirección de correo electrónico y el nombre del administrador para iniciar sesión en LimeSurvey.
Una vez completada la instalación, será redirigido a la página de inicio de sesión del panel de administración de LimeSurvey. ¡Asegúrese de eliminar el directorio /var/www/limesurvey/install por seguridad!
sudo rm -rf /var/www/limesurvey/install
4. Verificación de funcionamiento
Abra https://yourdomain.com/admin en su navegador e inicie sesión con la cuenta de administrador. Verifique que puede crear nuevas encuestas, gestionar usuarios y ver la configuración del sistema.
Con curl puede verificar la disponibilidad de la página principal:
curl -I https://yourdomain.com # Verificamos los encabezados HTTP, asegurándonos de la presencia de HTTPS
Debería ver el estado HTTP/2 200 y los encabezados que indican una conexión exitosa.
En este punto, su instalación de LimeSurvey está completamente configurada y lista para funcionar.