Démarrage rapide

Goupile dans Docker nécessite un noyau Linux avec le support de Landlock. Utilisez une distribution basée sur Linux 5.13 ou plus récent pour exécuter Goupile dans Docker ou Podman, par exemple Debian 12.

Commande manuelle

Exécutez la version la plus récente avec la commande suivante :

docker run -p 8889:80 koromix/goupile:latest

Une fois Goupile démarré, ouvrez http://localhost:8889/ dans votre navigateur et cliquez sur le bouton Administration pour configurer Goupile.

Avec cette commande, les données seront sauvegardées dans le conteneur et pourront être perdues si le conteneur est détruit !

Lisez la suite pour éviter cela.

Montez un volume sur /data pour stocker les données en dehors du conteneur :

mkdir -p data
docker run -p 8889:80 -v $PWD/data:/data koromix/goupile:latest

Certaines fonctionnalités, comme les exports planifiés, dépendent du fuseau horaire local pour fonctionner correctement. Celui-ci n'est pas disponible dans le conteneur par défaut, ce qui signifie que Goupile fonctionnera avec le fuseau horaire GMT (UTC+0).

Montez les fichiers de configuration du fuseau horaire et de l'heure locale du serveur (en lecture seule) pour éviter ce problème :

mkdir -p data
docker run -p 8889:80 -v $PWD/data:/data -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro koromix/goupile:latest

Docker Compose

Voici un exemple de fichier docker-compose.yml qui peut être utilisé avec Docker Compose :

services:
  goupile:
    container_name: goupile
    image: koromix/goupile:latest

    restart: on-failure:3

    ports:
      - 8889:80

    volumes:
      - ./data:/data
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro

Il est recommandé d'utiliser une étiquette de version spécifique (comme 3.11) au lieu de latest et de mettre à jour manuellement, même si ce tag est utilisé dans la documentation pour simplifier.

Podman Quadlet

Voici un exemple d'unité Quadlet qui peut être utilisé avec Podman Quadlet :

[Unit]
Description=Goupile eCRF
After=local-fs.target

[Container]
Image=docker.io/koromix/goupile:latest
PublishPort=8889:80
Volume=/srv/goupile:/data
Volume=/etc/localtime:/etc/localtime:ro
Volume=/etc/timezone:/etc/timezone:ro

[Install]
WantedBy=multi-user.target

Avec cette configuration, les données de Goupile seront stockées dans /srv/goupile. Vous pouvez modifier ce répertoire, assurez-vous qu'il existe.

Enregistrez cette unité à un emplacement indiqué par le générateur systemd, par exemple /etc/containers/systemd/goupile.container

Utilisez les commandes suivantes pour démarrer le conteneur :

systemctl daemon-reload
systemctl start goupile.service

Image de développement

Les images de développement sont régulièrement déployées sur le Docker Hub avec l'étiquette dev, testez-les avec la commande suivante :

docker run -p 8889:80 koromix/goupile:dev

Utilisez les versions dévéloppement pour faire des tests, ne les utilisez pas en production !

Proxy inversé

NGINX

Modifiez votre configuration NGINX (directement ou dans un fichier de serveur dans /etc/nginx/sites-available) pour qu'elle fonctionne comme un proxy inversé (reverse proxy) pour Goupile.

Le bloc server devrait ressembler à ceci :

server {
    # ...

    location / {
        proxy_http_version 1.1;
        proxy_buffering on;
        proxy_read_timeout 180;
        send_timeout 180;

        client_max_body_size 256M;

        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://127.0.0.1:8888/;
    }
}

Apache 2

Modifiez votre configuration Apache 2 (directement ou dans un fichier de serveur dans /etc/apache2/sites-available) pour qu'elle fonctionne comme un proxy inversé (reverse proxy) pour Goupile.

Le bloc VirtualHost devrait ressembler à ceci :

<VirtualHost *:443>
    # ...

    LimitRequestBody 268435456

    ProxyPreserveHost On
    ProxyPass "/" "http://127.0.0.1:8888/"
    ProxyPassReverse "/" "http://127.0.0.1:8888/"
</VirtualHost>