Euro-Office
Docker app from junkerderprovinz's Repository
Overview
Readme
View on GitHub
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.
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.
The documents in these pictures are made up.
A Word file from OpenCloud, open in Euro Office in the same tab
Spreadsheets with their formulas, edited where they are stored
The start page shows whether the editor is ready and what to enter in OpenCloud
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.
- Install Euro Office from Community Applications, set a long random JWT secret and click Apply. The first start takes a minute or two.
- Open the WebUI at
http://<server-ip>:9900. The start page says when the editor is ready. - 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.
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.
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/junkerderprovinz/euro-office:latestRuntime arguments
- Web UI
http://[IP]:[PORT:80]/- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--restart=unless-stopped
Template configuration
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
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
Keep 'true'. OpenCloud opens and saves documents over WOPI.
- Target
- WOPI_ENABLED
- Default
- true|false
- Value
- true
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
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
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
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
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
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
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
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
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
'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