selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Euro-Office Document Server logo

Self-host Euro-Office Document Server

v9.3.7

Collaborative office document server for Nextcloud setups

ReleaseOpen SourceAGPL-3.0
docker run -d --name euro-office --restart=unless-stopped -p 80:80 -e JWT_ENABLED=true -e JWT_SECRET=at-least-32-chars-long-for-hs256 ghcr.io/euro-office/documentserver:latest
Updated10 hours ago
LanguageShell
Setup difficultyModerate
Stars
1 869
RAM
4 GB
Storage
5 GB
Ports
80 (HTTP(S) endpoint served by the container's nginx; the quick start maps -p 80:80), 8080 (DocService: collaboration and Socket.io transport), 9000 (Optional administration panel service)
Requires
RabbitMQ, Redis
Docker
ghcr.io/euro-office/documentserver

What is Euro-Office Document Server?

Should you self-host Euro-Office Document Server?

Euro-Office Document Server scores 53/100 on selfhost.directory (how scoring works) and ranks #5 of 6 in Office Suites. It has 1 869 GitHub stars.

It shipped 7 stable releases in the past year. The latest, v9.3.7, came out on 24 October 2026. New versions land roughly every 2 weeks.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in Shell.

Its closest alternative on selfhost.directory is ONLYOFFICE (72/100, 7 057 stars). It scores higher overall, so compare the two before you pick. See Euro-Office Document Server vs ONLYOFFICE side by side.

Features

  • Administration PanelOff by default (ADMINPANEL_ENABLED=false).
  • Built-in example appTesting only; has no access control and should be disabled in production.
  • Custom fonts
  • Document format conversion
  • Editor pluginsNo in-product app directory yet; plugins are installed manually.
  • Health check endpoint
  • Horizontal ScalingDedicated high-availability documentation is announced but not published.
  • Real-time collaborative editing
  • REST API
  • StatsD metricsDisabled by default (METRICS_ENABLED=false).
  • TLS Termination
  • Web-based office editors
  • WOPI protocol supportDisabled by default (WOPI_ENABLED=false).

Euro-Office Document Server README

How to install Euro-Office Document Server

Install Euro-Office Document Server with Docker

Environment variables
JWT_ENABLED, JWT_SECRET, EXAMPLE_ENABLED, WOPI_ENABLED, DB_HOST, REDIS_SERVER_HOST, AMQP_HOST
docker run -d \
  --name euro-office \
  --restart=unless-stopped \
  -p 80:80 \
  -e JWT_ENABLED=true \
  -e JWT_SECRET=at-least-32-chars-long-for-hs256 \
  ghcr.io/euro-office/documentserver:latest

Community image; tags: latest, nightly, latest-dev. Mount volumes for persistent data.

How to configure Euro-Office Document Server

  • ADMINPANEL_ENABLEDfalseStart the administration panel service

    Start the administration panel service

  • ALLOW_META_IP_ADDRESSfalseAllow fetching documents from meta-private IPs (169.254.0.0/16)

    Allow fetching documents from meta-private IPs (169.254.0.0/16)

  • ALLOW_PRIVATE_IP_ADDRESSfalseAllow fetching documents from private IPs

    Allow fetching documents from private IPs

  • AMQP_HOSTlocalhostRabbitMQ host

    RabbitMQ host

  • AMQP_PORT5672RabbitMQ port

    RabbitMQ port

  • AMQP_URIComplete AMQP connection URI. Takes precedence over all other `AMQP_*` variables

    Complete AMQP connection URI. Takes precedence over all other `AMQP_*` variables

  • AMQP_USERguestRabbitMQ credentials

    RabbitMQ credentials

  • AMQP_VHOST/Virtual host name. A leading slash is added automatically if you omit it

    Virtual host name. A leading slash is added automatically if you omit it

  • DB_HOSTlocalhostDatabase host

    Database host

  • DB_NAMEeuroofficeDatabase name

    Database name

  • DB_PORT5432Database port

    Database port

  • DB_PWDDatabase password

    Database password

  • DB_TYPEpostgresDatabase engine. The standalone image supports `postgres` only; other engines require the cluster image

    Database engine. The standalone image supports `postgres` only; other engines require the cluster image

  • DB_USEReuroofficeDatabase user

    Database user

  • DS_LOG_LEVELWARNlog4js level for the default category, for example `ERROR`, `WARN`, `INFO`, or `DEBUG`

    log4js level for the default category, for example `ERROR`, `WARN`, `INFO`, or `DEBUG`

  • EXAMPLE_ENABLEDfalseStart the bundled example application at `/example/`. Do not enable it on a public instance

    Start the bundled example application at `/example/`. Do not enable it on a public instance

  • FILECONVERTER_INPUT_LIMIT_UNCOMPRESSED500MB
  • FILECONVERTER_MAX_DOWNLOAD_BYTES524288000
  • GENERATE_FONTStrueRegenerate the font cache on startup

    Regenerate the font cache on startup

  • JWT_ENABLEDtrueEnable JWT validation

    Enable JWT validation

  • JWT_ENABLED_INBOXJWT_ENABLEDEnable JWT per direction

    Enable JWT per direction

  • JWT_HEADERAuthorizationHTTP header carrying the token

    HTTP header carrying the token

  • JWT_HEADER_INBOXJWT_HEADERSeparate headers per direction

    Separate headers per direction

  • JWT_IN_BODYfalseAccept the token in the request body

    Accept the token in the request body

  • JWT_SECRETgeneratedShared JWT secret. When unset, a random 32-character secret is generated and stored in `/var/www/{{ brand.package_path_name }}/Data/.private/jwt_secret`

    Shared JWT secret. When unset, a random 32-character secret is generated and stored in `/var/www/{{ brand.package_path_name }}/Data/.private/jwt_secret`

  • JWT_SECRET_INBOXJWT_SECRETSeparate secrets per direction

    Separate secrets per direction

  • MAX_FILE_SIZE104857600
  • METRICS_ENABLEDfalseEnable StatsD metrics collection and start the metrics service

    Enable StatsD metrics collection and start the metrics service

  • METRICS_HOSTlocalhostStatsD host

    StatsD host

  • METRICS_PORT8125StatsD port

    StatsD port

  • METRICS_PREFIXds.Prefix prepended to every metric name

    Prefix prepended to every metric name

  • NGINX_ACCESS_LOGfalseWrite an access log to `/var/log/{{ brand.package_path_name }}/documentserver/nginx.access.log`

    Write an access log to `/var/log/{{ brand.package_path_name }}/documentserver/nginx.access.log`

  • NGINX_CLIENT_MAX_BODY_SIZE100mMaximum size of an inbound request body — see Size limits

    Maximum size of an inbound request body — see Size limits

  • NGINX_WORKER_CONNECTIONS768Value for the nginx `worker_connections` directive. When unset, the value from the base image's `nginx.conf` is left unchanged

    Value for the nginx `worker_connections` directive. When unset, the value from the base image's `nginx.conf` is left unchanged

  • NGINX_WORKER_PROCESSES1Number of nginx worker processes

    Number of nginx worker processes

  • ONLYOFFICE_HTTPS_HSTS_ENABLEDtrueSend an HSTS header. When `false`, the `max-age` directive is removed

    Send an HSTS header. When `false`, the `max-age` directive is removed

  • ONLYOFFICE_HTTPS_HSTS_MAXAGE31536000HSTS max-age in seconds (default 1 year)

    HSTS max-age in seconds (default 1 year)

  • PLUGINS_ENABLEDtrueEnable editor plugins

    Enable editor plugins

  • REDIS_SERVER_DBRedis database number. Only written to the configuration when set

    Redis database number. Only written to the configuration when set

  • REDIS_SERVER_HOSTlocalhostRedis host

    Redis host

  • REDIS_SERVER_PASSRedis password. Only written to the configuration when set

    Redis password. Only written to the configuration when set

  • REDIS_SERVER_PORT6379Redis port

    Redis port

  • REDIS_SERVER_USERRedis username for ACL-based authentication. Only written to the configuration when set

    Redis username for ACL-based authentication. Only written to the configuration when set

  • SECURE_LINK_SECRETgeneratedSecret used for the nginx secure link URLs. When unset, a random 20-character secret is generated and stored in `/var/www/{{ brand.package_path_name }}/Data/.private/secure_link_secret`

    Secret used for the nginx secure link URLs. When unset, a random 20-character secret is generated and stored in `/var/www/{{ brand.package_path_name }}/Data/.private/secure_link_secret`

  • SSL_CERTIFICATE_PATHPath inside the container to the TLS certificate

    Path inside the container to the TLS certificate

  • SSL_DHPARAM_PATHPath to a Diffie-Hellman parameter file. When unset or unreadable, the `ssl_dhparam` directive is removed

    Path to a Diffie-Hellman parameter file. When unset or unreadable, the `ssl_dhparam` directive is removed

  • SSL_KEY_PATHPath inside the container to the matching private key

    Path inside the container to the matching private key

  • SSL_VERIFY_CLIENToffValue for the nginx `ssl_verify_client` directive (client certificate verification)

    Value for the nginx `ssl_verify_client` directive (client certificate verification)

  • USE_UNAUTHORIZED_STORAGEfalseDisable TLS certificate validation for outbound requests to storage

    Disable TLS certificate validation for outbound requests to storage

  • WOPI_ENABLEDfalseEnable WOPI protocol support. An RSA key pair is generated in `/var/www/{{ brand.package_path_name }}/Data` on first start

    Enable WOPI protocol support. An RSA key pair is generated in `/var/www/{{ brand.package_path_name }}/Data` on first start

Euro-Office Document Server releases & version history

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…