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
Atención
El nombre del contenedor postgresql se establecerá como DB_HOST.
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 también
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.
Atención
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 también
https://blog.liberaforms.org/category/releases/ para conocer información específica sobre el despliegue de una versión en particular.
Obtener la nueva versión¶
Descargue el código fuente de la nueva versión:
# Defina una variable de entorno con la versión de destino a la que desea actualizar.
export LF_VERSION=v4.9.2
# Descargue el código fuente de la versión de destino mediante su etiqueta Git,
# donde 'origin' corresponde al repositorio oficial de LiberaForms.
git fetch origin tag ${LF_VERSION} --no-tags
# Cambie a la versión de destino creando una nueva rama dedicada para ella.
git checkout ${LF_VERSION} -b ${LF_VERSION}
# Verifique que obtuvo la versión correcta de LiberaForms.
cat VERSION.txt
Crear la nueva imagen¶
Para construir la imagen OCI con Docker:
docker build -t liberaforms-app:$(cat VERSION.txt) .
Actualizar el archivo .env¶
Actualice el valor de VERSION en su archivo .env.
Recrear el contenedor de LiberaForms¶
Para reiniciar el contenedor de LiberaForms con la nueva versión de la imagen usando Docker:
docker compose up -d --force-recreate liberaforms
docker exec liberaforms-app flask db upgrade