Skip to content

Installing Euro-Office via Docker

The quickest way to run Euro-Office Document Server is via the official Docker image.

Prerequisites

  • Docker Engine 20.10 or later
  • 5 GB disk space for the image
  • 4 GB RAM minimum

Quick start

docker run -d \
  --name euro-office \
  --restart=unless-stopped \
  -p 80:80 \
  -e JWT_ENABLED=true \
  -e JWT_SECRET=your-secret \
  ghcr.io/euro-office/documentserver:latest

The server is ready when the health check returns true:

curl http://localhost/healthcheck

Image tags

Tag Use
latest Most recent release — use in production
nightly Nightly builds from main — not for production
latest-dev Development image with build tools included

Pin to a specific version in production:

ghcr.io/euro-office/documentserver:9.3.1

Verify with the example app

To test the editor in a browser, enable the built-in example app:

docker run -d \
  --name euro-office \
  --restart=unless-stopped \
  -p 8080:80 \
  -e JWT_ENABLED=true \
  -e JWT_SECRET=your-secret \
  -e EXAMPLE_ENABLED=true \
  ghcr.io/euro-office/documentserver:latest

Then open http://localhost:8080/example/ in your browser.

Warning

Disable EXAMPLE_ENABLED in production. The example app has no access control.

Persistent data

By default, documents and configuration are lost when the container is removed. Mount volumes to persist them:

docker run -d \
  --name euro-office \
  --restart=unless-stopped \
  -p 80:80 \
  -e JWT_ENABLED=true \
  -e JWT_SECRET=your-secret \
  -v /path/to/data:/var/lib/euro-office/documentserver \
  -v /path/to/logs:/var/log/euro-office/documentserver \
  -v /path/to/config:/etc/euro-office/documentserver \
  ghcr.io/euro-office/documentserver:latest

Environment variables

Variable Default Description
JWT_ENABLED true Enable JWT authentication
JWT_SECRET Shared secret — set this in production
JWT_HEADER Authorization HTTP header carrying the JWT
EXAMPLE_ENABLED false Enable the built-in example app
WOPI_ENABLED false Enable WOPI protocol support
ALLOW_PRIVATE_IP_ADDRESS false Allow document server to fetch from private IPs
NGINX_WORKER_PROCESSES 1 Number of nginx worker processes
GENERATE_FONTS true Regenerate font cache on startup
DB_HOST localhost PostgreSQL host (for external DB)
DB_NAME eurooffice PostgreSQL database name
DB_USER eurooffice PostgreSQL user
REDIS_SERVER_HOST localhost Redis host (for external Redis)
AMQP_HOST localhost RabbitMQ host (for external RabbitMQ)

Updating

docker pull ghcr.io/euro-office/documentserver:latest
docker stop euro-office && docker rm euro-office
# re-run with the same docker run command

Uninstalling

docker stop euro-office
docker rm euro-office
docker rmi ghcr.io/euro-office/documentserver:latest