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 of podman, simply replace podman with docker 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
  • Environment Variables

    • ELDOC_BASE_URL - domain name, that will be used to access elDoc application. Defaults to eldoc.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)

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 on yourdomain.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