Deployment (container)
elDoc All-in-One (AIO) Container Guide
Introduction
This document provides instructions for setting up and running the elDoc Application using Podman (or docker). This is an all-in-one (AIO) container, meaning it includes both the application and all required dependencies.
Requirements
- Podman (or Docker) must be installed on your system. If you're using
docker
instead ofpodman
, simply replacepodman
withdocker
in the commands provided below. - A domain name where the application will be hosted (can be internal domain name).
- Persistent storage to be used for data, configuration, and optionally (but strongly recommended) for logs.
Container Overview
Exposed Ports:
443
– HTTPS access
Mounted Volumes:
- Required:
/data
– Stores application data/conf
– Stores configuration files
- Optional:
/logs
– Stores application logs
- Required:
Environment Variables
ELDOC_BASE_URL
- domain name, that will be used to access elDoc application. Defaults toeldoc.local
, if not set
Self-Signed SSL Certificates:
- On startup, the container automatically generates self-signed SSL certificates at:
/conf/nginx/cert/eldoc.crt
/conf/nginx/cert/eldoc.key
- Generated certificates can be replaced with already existing certificates, if required (for example, valid certificates for external domain, obtained from trusted certificate authority)
- On startup, the container automatically generates self-signed SSL certificates at:
Installing & Running elDoc AIO Container
1. Pull elDoc AIO Image
podman login registry.example.com -u PROVIDED_USER_NAME
podman pull registry.example.com/eldoc-aio:latest
2. Start container
podman run -d \
--name eldoc \
-p 443:443 \
-v /path/to/data:/local/data \
-v /path/to/conf:/local/conf \
-v /path/to/logs:/local/logs \
-e ELDOC_BASE_URL="yourdomain.com" \
registry.example.com/eldoc-aio:latest
Explanation of parameters used:
-d
- runs application in background-p 443:443
- maps port 443/TCP to be used for external access to elDoc-v /path/to/data:/local/data
- mounts/path/to/data
directory into container to store elDoc data-v /path/to/conf:/local/conf
- mounts/path/to/conf
directory into container to store elDoc and its dependencies configuration-v /path/to/data:/local/logs
- mounts/path/to/logs
directory into container to store elDoc and its dependencies logs. Optional, but highly recommended-e ELDOC_BASE_URL="yourdomain.com"
- configures elDoc to be accessed onyourdomain.com
url-address
IMPORTANT! While mounting /local/logs directory is optional, for troubleshooting running elDoc system it is recommended to have it mounted to host system to have access to elDoc logs
IMPORTANT! During first start, container will enable Maintenance Mode for elDoc for initial setup. Credentials for accessing elDoc in Maintenance Mode will be printed to the container logs (both console and init.log file in logs directory). It is strongly recommended to disable Maintenance Mode after initial system configuration! For more details, please refer to elDoc documentation
3. Verify container is started and running
Use the following command to list running containers:
podman ps
This should print output similar to:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8cb735ef06a8 registry.example.com/eldoc-aio:1.0.0 /local/entrypoint... 4 minutes ago Up 4 minutes 0.0.0.0:443->443/tcp, 80/tcp, 443/tcp eldoc
Where 8cb735ef06a8
is the ID of the running container. If container successfully started, you should see container with name 'eldoc' in the output with running time in STATUS
column
4. Accessing elDoc logs
To access general container logs, use following command:
podman logs eldoc
Where eldoc
is the name of the container, specified during launch. Also, container id (from podman ps
output) may be used instead. This will provide generic container logs, describing startup process of the elDoc system. This should print output similar to:
...
2025-03-27 09:29:22,877 INFO success: supervisord-watchdog entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-03-27 09:29:23,884 INFO success: jmc entered RUNNING state, process has stayed up for > than 2 seconds (startsecs)
2025-03-27 09:29:23,884 INFO success: nginx entered RUNNING state, process has stayed up for > than 2 seconds (startsecs)
2025-03-27 09:29:27,141 INFO success: mongodb entered RUNNING state, process has stayed up for > than 5 seconds (startsecs)
2025-03-27 09:29:27,142 INFO success: solr entered RUNNING state, process has stayed up for > than 5 seconds (startsecs)
2025-03-27 09:29:27,142 INFO success: coolwsd entered RUNNING state, process has stayed up for > than 5 seconds (startsecs)
2025-03-27 09:29:52,639 INFO success: eldoc entered RUNNING state, process has stayed up for > than 30 seconds (startsecs)
To access more detailed logs, please navigate to the folder, that was mounted to /local/logs
directory (see start container command).
5. Stopping and restarting container
All following commands can be used both with container name (eldoc
in current guide) or container ID (obtained from podman ps
)
Stop container:
podman stop eldoc
Restart stopped container:
podman start eldoc
Remove stopped container, if no longer needed:
podman rm eldoc
Updating elDoc system
Please refer to Update Guide and Release Notes to ensure valid upgrade path in case of breaking changes
1. Backup elDoc data
To perform backup, it is enough to stop container with podman stop eldoc
and copy data
and conf
directories, that was mounted to container during startup. We recommend to also backup logs
directory to maintain consistent elDoc logs history.
2. Stop and remove elDoc container
Use the following command to stop and remove elDoc AIO container:
podman stop eldoc
podman rm eldoc
3. Pull new elDoc AIO image
podman pull registry.example.com/eldoc-aio:latest
4. Migrations
Perform additional upgrade/migration steps, if mentioned in release noted/upgrade guide
5. Start new elDoc AIO container
IMPORTANT: use same startup command, as was used with previous version, unless other specified in update documentation
podman run -d \
--name eldoc \
-p 443:443 \
-v /path/to/data:/local/data \
-v /path/to/conf:/local/conf \
-v /path/to/logs:/local/logs \
-e ELDOC_BASE_URL="yourdomain.com" \
registry.example.com/eldoc-aio:latest
6. Ensure elDoc is started and running
Please, refer to Container status check and elDoc logs to ensure container is up and running.
Securing elDoc system
For security purposes, we recommend using valid signed SSL certificates. To replace initial self-signed certificates with new ones, please place new certificates in mounted conf
directory under nginx/cert/eldoc.key
and nginx/cert/eldoc.crt
.
It is not recommended to expose MongoDB port 27017, unless strongly required. In case of exposing port, please ensure secure access to it configured via firewall or other access policies.
Troubleshooting elDoc system
IMPORTANT! For troubleshooting running elDoc system it is recommended to have /local/logs directory mounted to host system to have access to elDoc logs
Please, refer to Container status check and elDoc logs to ensure container is up and running. This will provide generic overview of the system and give details about whether it is running or some of the services are failing.
To investigate further, please check logs in mounted logs
directory (see Starting elDoc for details). In case container was initially started without logs directory mounted, please stop container and restart it with mounted logs
directory. This will allow to easily access elDoc AIO system logs, but only since the first start with mounted logs
folder. If you don't have logs
directory mounted and need to get access to previous logs, please refer to Copying files from container or Accessing running container documentation
Using elDoc system
For documentation on using elDoc system, please refer to the Official Documentation.
Last modified: March 31, 2025