Instalación¶
Requisitos previos¶
Para instalar LiberaForms en un Debian es necesario contar con:
Python3.7 o superior
Un servidor PostgreSQL
También deberemos de tener un dominio para configurarlo luego. Para esta guía, usaremos forms.dominio.edu.ar.
Instalación y configuración de LiberaForms¶
Descargamos el repo de GitLab de LiberaForms:
git clone https://gitlab.com/liberaforms/liberaforms.git /var/www/vhosts/forms.dominio.edu.ar/www/
cd liberaforms
chown liberaforms logs uploads
Ahora tendremos que crear un entorno virtual de Python, por lo que necesitaremos primero tener instalado estos paquetes:
apt install git python3-venv python3-dev gcc libpq-dev mime-support`
Y creamos el entorno virtual:
python3 -m venv /var/www/vhosts/forms.dominio.edu.ar/www/venv`
Lo siguiente será instalar los paquetes necesarios:
source /var/www/vhosts/forms.dominio.edu.ar/www/venv/bin/activate
pip install --upgrade pip
pip install -r /var/www/vhosts/forms.dominio.edu.ar/www/requirements.txt
Configuraremos para que se guarden la sesión directamente en el sistema de archivos, también se puede hacer en memoria.
mkdir /var/www/vhosts/forms.dominio.edu.ar/www/liberaforms/flask_session
chown www-data /var/www/vhosts/forms.dominio.edu.ar/www/liberaforms/flask_session
Tras esto, creamos el archivo de configuración y le asignaremos los permisos necesarios:
cp /var/www/vhosts/forms.dominio.edu.ar/www/dotenv.example /var/www/vhosts/forms.dominio.edu.ar/www/.env
chown www-data /var/www/vhosts/forms.dominio.edu.ar/www/.env
chmod go-rw /var/www/vhosts/forms.dominio.edu.ar/www/.env
Creamos el SECRET_KEY para configurarlo en el archivo .env:
#openssl rand -base64 32
python -c 'import secrets; print(secrets.token_hex())'
El resultado de este comando lo añadiremos al archivo .env, también agregamos un correo electrónico para crear el primer usuario.
SECRET_KEY = 'XXXXXXXXXXX'
ROOT_USERS = ['forms@dominio.edu.ar']
Agregamos los datos de acceso a la base de dados.
DB_HOST=localhost
DB_NAME=liberaforms
DB_USER=liberaforms
DB_PASSWORD=clave_para_la_BD
Base de datos¶
Creamos el usuario y la base de datos con los valores del archivo .env
flask database create
Otra manera de hacer lo mismo
su postgres -c "liberaforms/commands/postgres.sh create-db"
exit
Crear las tablas¶
Actualizamos la base de datos a la última versión
flask db upgrade
Con la base de datos creada ya podemos iniciar la aplicación:
cd /var/www/vhosts/forms.dominio.edu.ar/www/
gunicorn -c /var/www/vhosts/forms.dominio.edu.ar/www/gunicorn.py liberaforms:app
La salida de esto nos mostrará lo siguiente:
[2020-12-07 14:48:56 +0100] [29945] [INFO] Starting gunicorn 20.0.4
[2020-12-07 14:48:56 +0100] [29945] [INFO] Listening at: http://127.0.0.1:5000 (29945)
[2020-12-07 14:48:56 +0100] [29945] [INFO] Using worker: sync
[2020-12-07 14:48:56 +0100] [29948] [INFO] Booting worker with pid: 29948
[2020-12-07 14:48:56 +0100] [29949] [INFO] Booting worker with pid: 29949
[2020-12-07 14:48:56 +0100] [29953] [INFO] Booting worker with pid: 29953
[2020-12-07 14:49:07 +0100] [29945] [INFO] Handling signal: winch
Esto significa que todo funciona correctamente y ahora deberemos de configurar el Proxy Reverso para que LiberaForms responda al dominio escogido.
Configuración de Proxy Reverso con Nginx¶
Para la configuración de Nginx hay que crear la siguiente configuración:
server {
listen 80;
server_name forms.dominio.edu.ar;
return 301 https://$server_name$request_uri;
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass_header server;
}
access_log /var/www/vhosts/forms.dominio.edu.ar/logs/liberaforms.access.log;
error_log /var/www/vhosts/forms.dominio.edu.ar/logs/liberaforms.error.log notice;
}
Creamos el enlace simbólico
# ln -s /etc/nginx/sites-available/form.conf /etc/nginx/sites-enabled/form.conf` Comprobamos que la configuración sea correcta:
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Recargamos con configuración de Nginx
# systemctl reload nginx
Configuración de Proxy Reverso con Apache¶
Para la configuración de Apache hay que crear la siguiente configuración:
<VirtualHost *:80>
ServerName formularios.unau.edu.ar
ProxyPass /favicon.ico !
ProxyPass /logo.png !
ProxyPass /static/ !
ProxyPass /file/media/ !
Alias /static/ /opt/liberaforms/liberaforms/static/
Alias /file/media/ /opt/liberaforms/uploads/media/
UseCanonicalName on
ProxyPreserveHost On
RequestHeader set Host "formularios.unau.edu.ar"
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
Alias /favicon.ico /opt/liberaforms/uploads/media/brand/favicon.ico
Alias /logo.png /opt/liberaforms/uploads/media/brand/logo.png
<Directory /opt/liberaforms>
Require all granted
Options -Indexes
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error_formularios.log
CustomLog ${APACHE_LOG_DIR}/access_formularios.log combined
</VirtualHost>
Activamos el vhost
# a2ensite formularios.unau.edu.ar.conf
Verificamos con configuración
# apachectl configtest
Syntax OK
Recargamos la configuración de Apache
# systemctl reload apache2
Instalamos Supervisor para que controle el proceso de LiberaForms:
# apt install supervisor
Editamos el archivo /etc/supervisor/conf.d/LiberaForms.confy añadimos esta configuración:
[program:LiberaForms]
command = /var/www/vhosts/forms.dominio.edu.ar/www/venv/bin/gunicorn -c /var/www/html/vhosts/forms.dominio.edu.ar/www/gunicorn.py liberaforms:app
directory = /var/www/vhosts/forms.dominio.edu.ar/www
user = www-data
Reiniciamos supervisor:
# systemctl restart supervisor
Crear el primer super usuario¶
Para crear el primer usuario administrador o superusuario de Liberaforms, tenemos que dirigir el navegador web a la plataforma e ir al apartado Entrar > Has olvidado la contraseña?. Allí introducir la cuenta de correo que hemos configurado en el archivo de configuración anteriormente:

Tras hacer clic sobre Recuperar podremos crear nuestro primer usuario:
