Deployment (container)
elDoc All-in-One (AIO) Container Guide
Introduction
This document explains how to set up and run the elDoc application in a single "all-in-one" container (AIO) using Podman (or Docker). The AIO image bundles elDoc together with its required dependencies.
Requirements
Podman (or Docker) installed. If using Docker, simply replace
podmanwithdockerin the examples below.A domain name (internal or external) for hosting elDoc.
Persistent storage for:
data(application data)conf(configuration files)logs(application logs — initial login details are stored there)
Container Overview
Exposed Ports
443– HTTPS via nginx reverse proxy8080– HTTP direct access to elDoc (do not publish unless required or for diagnostic purposes)27017– MongoDB (do not publish unless required or for diagnostic purposes)
Mounted Volumes
/data– application data (required)/conf– configuration (required)/logs– logs (optional, strongly recommended)
Environment Variables
ELDOC_HOST– domain name used to access elDoc (default:eldoc.lan)DISABLE_EMBEDDED_MONGODB– set totrueto disable the embedded MongoDB server (see External MongoDB database section below)DISABLE_EMBEDDED_NGINX– set totrueto disable the embedded nginx serviceDISABLE_EMBEDDED_JMC– set totrueto disable the embedded elDoc JMC sync serviceDISABLE_EMBEDDED_SOLR– set totrueto disable the embedded Apache Solr service (also setsDISABLE_EMBEDDED_JMC=true)DISABLE_EMBEDDED_COOLWSD– set totrueto disable the embedded Collabora Online serviceCOLLABORA_URL– URL of an external Collabora Online service (see External Collabora Online service section for details). If unset, the embedded Collabora service will start instead (also setsDISABLE_EMBEDDED_COOLWSD=true)
Self-Signed SSL Certificates On first startup, the container generates self-signed certificates at:
.../conf/nginx/cert/eldoc.crt.../conf/nginx/cert/eldoc.key
To use your own certificates (for example, from a trusted CA), overwrite those files before starting the container, or replace them after the first launch.
Installing & Running
1. Pull the elDoc AIO Image
podman pull registry.eldoc.online/eldoc/eldoc-aio:latest
If authentication is required, execute the following commands instead (request USERNAME and PASSWORD from elDoc Support):
podman login registry.eldoc.online -u USERNAME podman pull registry.eldoc.online/eldoc/eldoc-aio:latest podman logout registry.eldoc.online
2. Start the Container
2.1. As a systemd Quadlet (auto-start on boot)
- Create
/etc/containers/systemd/eldoc.containerservice file with the following content (assuming mapping to/opt/eldoc/*):
[Unit] Description=elDoc All-in-One (AIO) Container #RequiresMountsFor=/opt/eldoc [Container] Image=registry.eldoc.online/eldoc/eldoc-aio:latest ContainerName=eldoc PublishPort=443:443 Environment=ELDOC_HOST=eldoc.domain.com Volume=/opt/eldoc/data:/local/data:Z Volume=/opt/eldoc/conf:/local/conf:Z Volume=/opt/eldoc/logs:/local/logs:Z StopTimeout=30 [Service] Restart=always RestartSec=5 TimeoutStartSec=180 TimeoutStopSec=35 [Install] WantedBy=multi-user.target default.target
Notes:
- Replace
eldoc.domain.comwith your actual domain name used for accessing the elDoc system. - When using some elDoc components deployed as external containers, it is recommended to add the following configuration parameters:
Network=eldoc-net NetworkAlias=eldoc.domain.com
Create the respective network:
podman network create eldoc-net
- Reload systemd and start:
systemctl daemon-reload && systemctl start eldoc
- (Optional) For diagnostics, you can also start the container manually (assuming mapping to
/opt/eldoc/*):
podman run --rm \ --name eldoc \ -p 443:443 \ -v /opt/eldoc/data:/local/data:Z \ -v /opt/eldoc/conf:/local/conf:Z \ -v /opt/eldoc/logs:/local/logs:Z \ -e ELDOC_HOST=eldoc.domain.com \ registry.eldoc.online/eldoc/eldoc-aio:latest
2.2. Container Parameters
--rm– automatically removes the container after it stops-d– runs the application in background mode-p 443:443– maps port443/TCPfor accessing elDoc-v /opt/eldoc/data:/local/data– mounts/opt/eldoc/datafor elDoc data-v /opt/eldoc/conf:/local/conf– mounts/opt/eldoc/conffor elDoc and dependency configuration files-v /opt/eldoc/logs:/local/logs– mounts/opt/eldoc/logsfor logs (optional)-e ELDOC_HOST=eldoc.domain.com– configures elDoc to be accessed usingeldoc.domain.com
IMPORTANT! While mounting /local/logs is optional, it is strongly recommended for troubleshooting.
IMPORTANT! During first start, the container enables Maintenance Mode for initial setup. Credentials for accessing elDoc in Maintenance Mode are printed to the container logs (console output and init.log file in the logs directory).
It is strongly recommended to disable Maintenance Mode after initial system configuration. For more details, please refer to elDoc documentation
3. Verifying Container Is Running
systemctl status eldoc
or:
podman ps
These commands should show:
Active: active (running)when usingsystemctlUp X minutesin theSTATUScolumn when usingpodman ps
4. Access Logs
To access general container logs:
journalctl -xeu eldoc
or
podman logs eldoc
Where eldoc is the container name specified during launch.
This provides generic startup logs similar to:
... 2025-03-27 09:29:22,877 INFO success: supervisord-watchdog entered RUNNING state 2025-03-27 09:29:23,884 INFO success: jmc entered RUNNING state 2025-03-27 09:29:23,884 INFO success: nginx entered RUNNING state 2025-03-27 09:29:27,141 INFO success: mongodb entered RUNNING state 2025-03-27 09:29:27,142 INFO success: solr entered RUNNING state 2025-03-27 09:29:27,142 INFO success: coolwsd entered RUNNING state 2025-03-27 09:29:52,639 INFO success: eldoc entered RUNNING state
For more detailed logs, navigate to the host folder mounted to /local/logs.
5. Start, Stop & Restart
systemctl start eldoc systemctl stop eldoc systemctl restart eldoc
6. Access elDoc Web UI
During initial container initialization, an elDoc Maintenance Admin user account is created. Its credentials are logged in console output and in the initialization log file init.log, located in the mounted logs directory.
The same credentials are also written into the eldoc.conf file located in the mounted conf directory.
The Maintenance Admin account is intended only for initial login and creation of users in the system, and has limited access.
Disable the Maintenance Admin account by commenting out the respective configuration in eldoc.conf.
Updating elDoc System
Please refer to:
to ensure a valid upgrade path in case of breaking changes.
1. Backup elDoc Data
To perform backup, stop the container:
podman stop eldoc
Then copy the mounted data and conf directories. It is also recommended to back up the logs directory.
2. Stop and Remove elDoc Container
systemctl stop eldoc
3. Pull New elDoc AIO Image
podman pull registry.eldoc.online/eldoc/eldoc-aio:latest
4. Migrations
Perform any additional upgrade or migration steps mentioned in the release notes or upgrade guide.
5. Start New elDoc AIO Container
systemctl start eldoc
6. elDoc Configuration Update
After starting a new version of the elDoc AIO container, a manual update of the main elDoc configuration file eldoc.conf may be required.
During startup, the elDoc AIO container checks the version of the existing eldoc.conf file. If it detects that the file is outdated, a new version of the configuration file is created next to the existing one as eldoc.conf.new.
In most cases, the new configuration file should remain backward compatible with the existing configuration. However, if startup fails or configuration-related errors appear in the logs, compare both files and manually transfer the relevant settings from the existing eldoc.conf into eldoc.conf.new.
After review, rename the files as follows:
eldoc.conf→eldoc.conf.oldeldoc.conf.new→eldoc.conf
System Account UIDs Used in the elDoc-AIO Container
| System User | UID/GID |
|---|---|
| eldoc | 9005 |
| jmc | 9015 |
| coolwsd | 9980 |
| solr | 8983 |
| mongod | 2701 |
Resource Management
To restrict container CPU or memory usage, adjust the [Container] section of /etc/containers/systemd/eldoc.container:
[Container] ... PodmanArgs=--cpus=12 --memory=32g
This sets limits of 12 CPU cores and 32 GB RAM for the elDoc AIO container.
Please refer to System requirements.
By default, elDoc AIO dynamically manages internal service memory limits.
To set explicit limits:
ELDOC_MEMORY_MAX– memory for elDoc (example:4g)JMC_MEMORY_MAX– memory for JMC (example:512m)SOLR_MEMORY_MAX– memory for Solr (example:1g)
IMPORTANT: Provided memory limits are applied only if all values are set. If some are missing, automatic calculation is used instead.
Using External Services
1. External Collabora Online Service
To use an external Collabora Online service, provide:
COLLABORA_URL=http://coolwsd.domain.com:9980
or:
COLLABORA_URL=http://IP:9980
Use protocol http, because the eldoc-aio container acts as a reverse proxy: it terminates HTTPS from end-users and communicates with Collabora over plain HTTP.
When COLLABORA_URL is set, the embedded Collabora Online (CODE) service is disabled.
Connectivity requirements:
- The external Collabora service must be reachable from the server running
eldoc-aio - The
eldoc-aiocontainer must also be reachable from the external Collabora container via the elDoc URL
Apply the integration parameters described in the elDoc documentation.
2. External MongoDB Database
To use an external MongoDB server, provide proper connection parameters for elDoc and JMC components according to the guide in elDoc documentation.
Configuration files:
- elDoc:
conf/elDoc/eldoc.conf - JMC:
conf/jmc/config-eldoc.json
IMPORTANT: After switching from internal to external MongoDB:
- remove
conf/jmc/oplog.timestamp - remove Solr core data files under
data/solrData/data/prd1
This ensures JMC properly rebuilds the full-text index.
After this, JMC should perform an initial dump. Progress can be monitored in the mounted logs directory.
When using an external MongoDB server, it is highly recommended to disable embedded MongoDB:
DISABLE_EMBEDDED_MONGODB=true
Securing elDoc System
For security purposes, use valid signed SSL certificates.
To replace the initial self-signed certificates, replace:
nginx/cert/eldoc.crtnginx/cert/eldoc.key
inside the mounted conf directory.
It is not recommended to expose MongoDB port 27017 unless strongly required. If exposed, secure it using firewall rules or other access controls.
Additionally, disable the Maintenance Admin account after initial configuration is completed and a regular administrator account/group has been created.
Troubleshooting elDoc System
IMPORTANT! For troubleshooting, it is strongly recommended to mount /local/logs to the host system.
Refer to the Container status check and elDoc logs sections to verify whether the container is running and whether any internal services are failing.
To investigate further, inspect logs in the mounted logs directory.
If the container was initially started without a mounted logs directory, stop it and restart it with logs mounted.
If you need access to previous logs without a mounted directory, refer to:
Using elDoc System
For documentation on using elDoc, please refer to the Official Documentation.
Last modified: May 28, 2026