Euro-Office

Euro-Office

Docker app from junkerderprovinz's Repository

Overview

Euro Office Document Server - a sovereign, European document server for browser-based editing of text documents, spreadsheets and presentations. It is a maintained fork of the OnlyOffice Document Server, so it speaks the same WOPI and OnlyOffice APIs and plugs straight into OpenCloud (and Nextcloud/ownCloud). Use it to edit .docx / .xlsx / .pptx and .odt / .ods / .odp files right in your browser, without any desktop office suite. This is a thin wrapper (github.com/junkerderprovinz/euro-office) around the official image. It lets OpenCloud show the editor under OpenCloud's own address, serves https out of the box for other clouds, and replaces the vendor's start page with one that shows what to enter in OpenCloud. This is not a standalone app. It is the editor behind a file server: you point your cloud (e.g. the OpenCloud container) at it and edit the files stored in that cloud. On its own it only shows its start page. How it fits together (with OpenCloud): • Install this container. Set a JWT secret below and remember it. • Click the WebUI button. The page that opens says whether the editor is ready and lists the three OpenCloud fields. • In the OpenCloud template set "Web office suite" = euro-office, "Office document server URL" = http://[THIS-SERVER-IP]:9900 (the address the WebUI button opened) and "Office WOPI secret" = the same value as the JWT secret here. • The New button in OpenCloud now offers documents, spreadsheets and presentations, and existing Office files open in Euro Office. OpenCloud shows the editor under its own address, so there is no certificate to accept. This needs the OpenCloud container from version 1.4.0 on. Seafile: • In the Seafile template set "Web office suite" = euro-office, "Office document server URL" = http://[THIS-SERVER-IP]:9900 and "Office JWT secret" = the same value as the JWT secret here. This needs the Seafile container from version 1.1.0 on. • Seafile loads the editor straight from Euro Office. If you open Seafile over https, use the https address here instead, as described for Nextcloud below. • Euro Office needs about 5 GB of memory while it starts. With a lower memory limit it may never finish starting. Nextcloud or ownCloud: • They load the editor straight from Euro Office, so give them the https address, https://[THIS-SERVER-IP]:9943 (HTTPS Port under Advanced View), and accept the certificate warning once on every device. Euro Office creates that certificate itself on the first start; "Own certificate" below avoids the warning. First start: • The document server bundles its own database and converter and takes a minute or two to come up on the very first start. Its start page says when it is ready. • Leave the "Database" and "Logs" fields under Advanced View blank. Neither is required, and mounting a fresh empty folder over either one hides a directory the image ships pre-built, which stops the container from starting (see Troubleshooting below). Security / reverse proxy: • Keep "Enable JWT" = true (the default). The JWT secret signs every request between your cloud and the editor, so never leave it blank. • With OpenCloud, Euro Office needs no reverse proxy and no port opened to the outside: OpenCloud passes it through. Only OpenCloud has to be reachable. • "Allow self-signed upstream" is true by default because OpenCloud on Unraid serves a self-signed certificate. Set it to false only when your cloud has a valid certificate. Own certificate: • Put the certificate and its private key into the Certificates folder (default /mnt/user/appdata/euro-office/certs), then set "TLS certificate" = /certs/cert.pem and "TLS private key" = /certs/key.pem under Advanced View. Unraid's combined *_Unraid_bundle.pem works too: copy it in and enter that one file in both fields. The key must not be passphrase-protected. • After Apply the container log shows "SSL enabled with cert=/certs/...". If it still names /var/www/euro-office/Data/certs, one of the two paths is wrong and Euro Office fell back to its own certificate. Troubleshooting - container loops "PostgreSQL ... is not accessible or does not exist": • Your "Database" field under Advanced View has a path in it. Open the container's Edit page, switch on Advanced View, clear the "Database" field completely, then Apply. The bundled, already-initialised database takes over and the container starts normally within a minute. Troubleshooting - container loops "Starting nginx nginx ...fail!": • Your "Logs" field under Advanced View has a path in it. The image keeps its log tree at /var/log/euro-office/documentserver, so mounting an empty folder over /var/log/euro-office hides it, nginx cannot open its error log there, and the entrypoint aborts before the editor comes up. Open the container's Edit page, switch on Advanced View, clear the "Logs" field completely, then Apply. • The logs are not lost by clearing the field - the Unraid log button on the container still shows everything the server prints. Troubleshooting - documents open blank, or the browser says "this content is blocked, contact the site owner": • The OpenCloud container is older than 1.4.0. Older versions let the browser load the editor straight from Euro Office, and an http address is then blocked as mixed content. Update OpenCloud, or use https://[THIS-SERVER-IP]:9943 and accept the certificate warning in every browser. • Or OpenCloud uses a proxy.yaml of your own. Then it does not pass the editor through, and its log says so at startup; use the https address as above. About Euro Office: • Euro Office is an open, sovereignty-focused document server developed in Europe as an OnlyOffice-compatible fork. Because it is API-compatible, any guide for "OnlyOffice Document Server + OpenCloud/Nextcloud" applies here as well. Project: https://github.com/euro-office/documentserver This is an independent, community-maintained Unraid packaging and is not affiliated with the Euro Office project.
Euro Office

Build  Upstream  Image  OpenCloud  Unraid  License: AGPL-3.0

A plug-and-play Unraid Community Applications template for Euro Office, the sovereign European document server. It edits Word, Excel and PowerPoint files (and their OpenDocument equivalents) in the browser and plugs straight into OpenCloud over WOPI. Install from the Unraid Apps tab, set one shared secret, done.


Table of Contents

  1. Download
  2. Support
  3. What it looks like
  4. What it does
  5. Getting started
  6. How AI is used here

1. Download

Server

Install from Unraid's Community Applications   Install from the MOS Hub   Install from the ZimaOS and CasaOS store   Install from the umbrelOS community app store

Download the docker-compose file   Download the source archive


2. Support

A one-knight job: I build it, keep it running, work through the issues and add what people ask for, until nothing is missing. It is free, with no accounts, no telemetry, no ads and no paid tier. No asterisk anywhere. Nothing readable ever leaves your own walls. Forged on evenings and weekends, with heart and stubbornness.

If it has earned a place on your server or computer, toss a coin to your knight: it helps cover the costs and keeps the project alive. It also makes this knight's heart beat a little faster. Three ways below, whichever suits you.

Buy me a coffee   PayPal   Donate with crypto


3. What it looks like

The documents in these pictures are made up.

A Word document open in Euro Office inside OpenCloud, in dark mode
A Word file from OpenCloud, open in Euro Office in the same tab

A household budget spreadsheet open in Euro Office inside OpenCloud
Spreadsheets with their formulas, edited where they are stored

The Euro Office start page saying the editor is ready and listing the three fields to set in OpenCloud
The start page shows whether the editor is ready and what to enter in OpenCloud


4. What it does

Euro Office is a European fork of the OnlyOffice Document Server. It edits Word, Excel and PowerPoint files and their OpenDocument counterparts in the browser, and it speaks the OnlyOffice and WOPI APIs, so OpenCloud, Nextcloud and ownCloud can use it. It is the editor behind a file server, not an app of its own. This image is the upstream ghcr.io/euro-office/documentserver with three additions:

  • It runs under OpenCloud's address. The OpenCloud container passes the editor through at /euro-office/, and this image strips that prefix again. The browser only talks to OpenCloud, so plain http between the two containers is fine, there is no certificate to accept, and only OpenCloud has to be reachable from outside.
  • It serves https for other clouds. Nextcloud and ownCloud load the editor straight from Euro Office, so the image makes a self-signed certificate on the first start, or uses yours. The http port keeps serving the editor instead of redirecting to the Unraid web UI.
  • Its start page helps. It replaces the vendor's page and says whether the editor is ready and which three fields to set in OpenCloud.

5. Getting started

  1. Install Euro Office from Community Applications, set a long random JWT secret and click Apply. The first start takes a minute or two.
  2. Open the WebUI at http://<server-ip>:9900. The start page says when the editor is ready.
  3. In the OpenCloud template, set these three fields and apply:
OpenCloud field Value
Web office suite euro-office
Office document server URL http://<server-ip>:9900, the address the WebUI button opens
Office WOPI secret the same text as the JWT secret here

The New button in OpenCloud then offers documents, spreadsheets and presentations, and Office files open in Euro Office. This needs the OpenCloud container 1.4.0 or later. An older one loads the editor straight from Euro Office and needs its https address, https://<server-ip>:9943.

Nextcloud and ownCloud need the https port as well (HTTPS Port under Advanced View in the template, 9943 in the compose file). Accept its certificate once on every device, or put a certificate your browsers trust in the Certificates folder and fill in TLS certificate and TLS private key. Leave Logs and Database empty: an empty folder mounted there hides what the image ships, and the container cannot start.

Other Docker hosts

compose.yaml runs Euro Office on any Linux server with Docker. Put it in a folder of its own, fill in every value marked required and start it with docker compose up -d. The folders are created next to the file.

  • Synology: in Container Manager, create a project from the file (DSM 7.2 or newer).
  • Proxmox: run it in a VM or an LXC container that has Docker.
  • MOS: install Euro Office from the MOS Hub.
  • ZimaOS and CasaOS: add the community store and install Euro Office from it.
  • umbrelOS: add the community app store and install Euro Office from it.

6. How AI is used here

One knight builds this, and AI is one of the tools I work with, the same way I work with an editor or a compiler. It helps me write code and documentation and it checks my work, and that saves me a good many evenings. It does not make the decisions, though. I read and understand everything before it ships, and if something here breaks, that is on me and not on the tool.

You do not have to take my word for it. The code is open and every release note is written by hand. The issue tracker shows how problems actually get handled, including the ones I got wrong the first time. If you find something that is not right, open an issue and I will look at it.


Questions? Check the support thread. Bugs, ideas or feature requests? Please open a GitHub issue.

The AGPL-3.0 covers this wrapper only. Euro Office is developed by the Euro Office project under its own licence (see euro-office/documentserver), and running or redistributing the image means following every upstream licence.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/junkerderprovinz/euro-office:latest
Last Updated2026-11-06
First Seen2026-08-20

Runtime arguments

Web UI
http://[IP]:[PORT:80]/
Network
bridge
Shell
sh
Privileged
false
Extra Params
--restart=unless-stopped

Template configuration

WebUI PortPorttcp

The WebUI button opens http://[IP]:9900. Its start page shows whether the editor is ready and the three OpenCloud fields to copy, with this server's address filled in.

Target
80
Default
9900
Value
9900
JWT secretVariable

Pick a long random string and enter the same one as 'Office WOPI secret' in OpenCloud. It signs every request between the cloud and the editor.

Target
JWT_SECRET
Enable WOPIVariable

Keep 'true'. OpenCloud opens and saves documents over WOPI.

Target
WOPI_ENABLED
Default
true|false
Value
true
HTTPS PortPorttcp

Only for Nextcloud or ownCloud without OpenCloud in front. They load the editor straight from here, so the browser needs https; accept the certificate warning once on every device. OpenCloud does not need it.

Target
443
Default
9943
Value
9943
Enable JWTVariable

Require the signed JWT on every request. Keep 'true' for security. Only set 'false' for isolated testing on a trusted LAN.

Target
JWT_ENABLED
Default
true|false
Value
true
Allow self-signed upstreamVariable

Lets the editor fetch and save documents from a cloud with a self-signed certificate, which is what OpenCloud on Unraid serves by default. Set 'false' only when your cloud has a valid certificate.

Target
USE_UNAUTHORIZED_STORAGE
Default
true|false
Value
true
DataPathrw

Optional. Persistent document-server data (keys, fonts cache, forgotten files). Recommended for a permanent install; can be omitted for a purely stateless WOPI backend.

Target
/var/www/euro-office/Data
Default
/mnt/user/appdata/euro-office/data
Value
/mnt/user/appdata/euro-office/data
LogsPathrw

Leave BLANK for a normal install. The image builds its log tree at /var/log/euro-office/documentserver (nginx.error.log plus one folder per service). Mounting an EMPTY folder over /var/log/euro-office hides that tree, nginx then cannot open its error log and fails with 'Starting nginx nginx ...fail!', and because the entrypoint stops on that error the container crash-loops on every boot. You lose nothing by leaving this blank: the Unraid log button still shows everything the server prints. Only set a path here if it already contains the log tree copied out of a running container first.

Target
/var/log/euro-office
DatabasePathrw

Leave BLANK for a normal install. The image ships with an already-initialised database baked in; mounting an EMPTY folder here hides that database and the container fails to start with 'PostgreSQL ... is not accessible or does not exist' on every boot (an upstream bug: the entrypoint cannot initialise a database in a fresh empty volume - see euro-office/documentserver#299). Without this mount the DB simply resets on container recreate, which is fine for WOPI use with OpenCloud. Only set a path here if it already contains a working euro-office Postgres data directory copied out of a running container first.

Target
/var/lib/postgresql
CertificatesPathro

Optional. Folder for your own TLS certificate and private key, used by the two fields below. Drop cert.pem and key.pem into /mnt/user/appdata/euro-office/certs on the server, then set the fields to /certs/cert.pem and /certs/key.pem. An empty folder here changes nothing.

Target
/certs
Default
/mnt/user/appdata/euro-office/certs
Value
/mnt/user/appdata/euro-office/certs
TLS certificateVariable

Leave blank to use the certificate Euro Office creates for itself. For your own, enter its path inside the container, e.g. /certs/cert.pem (not the /mnt/user/... path). Unraid's combined *_unraid_bundle.pem holds certificate and key in one file: enter that same file here and in 'TLS private key'. If either path is wrong, Euro Office falls back to its own certificate and says so in the log.

Target
SSL_CERTIFICATE_PATH
TLS private keyVariable

Leave blank to use the certificate Euro Office creates for itself. Otherwise the path inside the container to the key that belongs to 'TLS certificate', e.g. /certs/key.pem. The key must not be passphrase-protected (create it with openssl's -nodes option).

Target
SSL_KEY_PATH
Send HSTS headerVariable

'true' (the default) tells browsers to use https for this host for a year. It only matters with your own trusted certificate and a hostname: browsers ignore it for IP addresses and for the self-signed certificate. Set 'false' if that hostname also serves things you reach over plain http, e.g. unraid.example.com, because the rule applies to the whole hostname regardless of port.

Target
ONLYOFFICE_HTTPS_HSTS_ENABLED
Default
true|false
Value
true