Instalación con docker

Si desea ejecutar varios servidores LiberaForms, consulte el proyecto de clúster LiberaForms.

Clonar LiberaForms

apt install git
git clone https://codeberg.org/LiberaForms/server.git

Crear la imagen

docker build -t liberaforms-app:$(cat VERSION.txt) .

Compose

docker-compose.yml instancia dos contenedores: PostgreSQL y LiberaForms. No configurará un servidor web, tendrá que hacerlo Ud.

Editar .env

Asegúrese de incluir un archivo .env completo basado en el archivo de ejemplo dotenv.example. En concreto, debe incluir todas las variables de entorno que se definen para el servicio liberaforms del archivo docker-compose.

Deberá asegurarse de definir estas variables de entorno adicionales:

POSTGRES_ROOT_USER=
POSTGRES_ROOT_PASSWORD=

DB_HOST=liberaforms-db
DB_NAME=liberaforms

GUNICORN_WORKERS=3

docker-compose

Crear docker-compose.yml y editar según sea necesario

cp docker-compose.yml.example docker-compose.yml
VERSION=$(cat VERSION.txt) docker compose up -d

Crear la base de datos

La base de datos se crea automáticamente mediante el servicio db definido en el archivo docker-compose.yml, por lo que no debería tener que hacer nada.

Sin embargo, si no funciona, debe ejecutar lo siguiente en el host (suponiendo que flask esté instalado), donde liberaforms-db es el valor de la variable de entorno DB_HOST:

flask database create --docker-container liberaforms-db

Crear las tablas

docker exec liberaforms-app flask database create-tables
docker exec liberaforms-app flask db stamp

Ver más opciones en https://flask-migrate.readthedocs.io/en/latest/#api-reference

Eliminar la base de datos

Si necesita eliminar la base de datos, ejecute lo siguiente desde el host (suponiendo que flask está instalado), donde liberaforms-db es el valor de la variable de entorno DB_HOST:

flask database drop --docker-container liberaforms-db

Encriptación de datos

Los archivos subidos se cifran con el valor CRYPTO_KEY definido en el archivo .env. En caso que este valor no exista será imposible subir archivos.

Para crear almacenamiento para un contenedor, primero necesita un volumen

Cree un directorio, por ejemplo

mkdir /opt/liberaforms_uploads

Asegúrese de que el permiso de escritura esté configurado

Edite su docker-compose.yml y agregue el volumen a la configuración del contenedor LiberaForms.

volumes:
  - /opt/liberaforms_uploads:/app/uploads

Recuerde modificar la configuración de nginx para que se ajuste a sus necesidades.

Almacenamiento remoto

Opcionalmente, utilice un servidor de almacenamiento de objetos.

El volumen local creado en el paso anterior es necesario porque se utiliza si el servidor Minio no está disponible.

Agregue estas líneas a su docker-compose.yml

MINIO_URL: ${MINIO_URL}
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}

Y cree los buckets de Minio

flask storage create --remote-buckets --docker-container liberaforms-app

Resguardo

Base de datos

docker exec <container> /usr/local/bin/pg_dump -U <db_user> <db_name> > backup.sql

Subidas

Actualización

Ver primero https://blog.liberaforms.org/category/releases/ por información version específica de una versión en particular.

Obtener la versión

git fetch origin tag v*.*.* --no-tags
git checkout v*.*.* -b v*.*.*
cat VERSION.txt

Crear la imagen

docker build -t liberaforms-app:$(cat VERSION.txt) ./
docker image list liberaforms-app

Edite la VERSION en su archivo .env

Reinicie el contenedor

docker compose down
docker compose up -d
docker exec <container> flask db upgrade