Get started
Goupile in Docker requires a Linux kernel with Landlock support. Use a distribution with Linux 5.13 or newer to run Goupile inside Docker or Podman, such as Debian 12.
Manual command
Run the most recent release with the following command:
docker run -p 8889:80 koromix/goupile:latest
Once Goupile is running, open http://localhost:8889/ in your browser and click on the Administration button.
With this command, the data will be saved inside the container and may be lost once the container is destroyed!
Follow on to prevent this from occuring.
Mount a volume on /data
to prevent this:
mkdir -p data
docker run -p 8889:80 -v $PWD/data:/data koromix/goupile:latest
Some features, such as scheduled exports, rely on the local timezone to work correctly. It is not available in the container by default, which means Goupile will run in the GMT timezone (UTC+0).
Mount the server localtime and timezone config files (read-only) to fix this:
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
Here is a sample docker-compose.yml
file for use with 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
It is recommended to use a specific version tag (such as 3.11) instead of latest
and update manually, even though it is used in the documentation to make things simpler.
Podman Quadlet
Here is a sample Quadlet unit file for use with 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
This unit stores data in /srv/goupile
, change it or make sure this directory exists.
Save this file somewhere the quadlet systemd generator can find it, such as /etc/containers/systemd/goupile.container
.
Start it with the following commands:
systemctl daemon-reload
systemctl start goupile.service
Development image
Development images are regularly pushed to the Docker Hub with the dev
tag, use it with the following command:
docker run -p 8889:80 koromix/goupile:dev
Use this for evaluation only, please don't run this in production!
Reverse proxy
NGINX
Edit your NGINX config (directly or in a server file in /etc/nginx/sites-available
) to make it work as a reverse proxy for Goupile.
The server block should you something like this:
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
Edit your Apache 2 config (directly or in a server file in /etc/apache2/sites-available
) to make it work as a reverse proxy for Goupile.
The VirtualHost block should you something like this:
<VirtualHost *:443>
# ...
LimitRequestBody 268435456
ProxyPreserveHost On
ProxyPass "/" "http://127.0.0.1:8888/"
ProxyPassReverse "/" "http://127.0.0.1:8888/"
</VirtualHost>