# Docker Management with easydcim-control
EasyDCIM 1.25.0 and newer is managed as a Docker-based stack. The supported operational interface is the easydcim-control CLI, which installs, updates, migrates, backs up, restores, and manages the following components:
- EasyDCIM App
- Remote Agent
- Client Area
This replaces the older host-based workflow built around standalone installer scripts, direct Apache configuration, and direct service management on the host.
# Requirements
Before using easydcim-control, prepare a host with:
- Debian 12 (bookworm) or Debian 13 (trixie)
- root or sudo access
- outbound access to:
apt.easydcim.comdocker-registry.easydcim.comlicense.easydcim.com
Docker is installed automatically by the CLI if it is not present yet.
# Installing easydcim-control
# Recommended method: APT repository
wget -qO- https://apt.easydcim.com/easydcim-repo.gpg | sudo tee /usr/share/keyrings/easydcim.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/easydcim.gpg] https://apt.easydcim.com bookworm-stable main" | sudo tee /etc/apt/sources.list.d/easydcim.list
sudo apt update && sudo apt install easydcim-controlwget -qO- https://apt.easydcim.com/easydcim-repo.gpg | sudo tee /usr/share/keyrings/easydcim.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/easydcim.gpg] https://apt.easydcim.com trixie-stable main" | sudo tee /etc/apt/sources.list.d/easydcim.list
sudo apt update && sudo apt install easydcim-control# Main commands
# EasyDCIM App
easydcim-control app install --key LICENSE_KEY
easydcim-control app update
easydcim-control app status
easydcim-control app logs
easydcim-control app restart
# Remote Agent
easydcim-control agent install
easydcim-control agent update
easydcim-control agent status
easydcim-control agent logs
# Client Area
easydcim-control client install --mode external --backend-url "https://panel.example.com" --app-token "TOKEN"
easydcim-control client update
easydcim-control client status
easydcim-control client logs
# Running application commands inside containers
For maintenance commands that still belong to the EasyDCIM or Remote Agent application, use shell passthrough through easydcim-control.
# EasyDCIM App
easydcim-control app shell -- php artisan <COMMAND>
Example:
easydcim-control app shell -- php artisan user:reset [email protected]
# Remote Agent
easydcim-control agent shell -- php artisan <COMMAND>
# Performance tuning
Docker deployments can be tuned through environment variables. These values are stored in the Docker environment files and survive container restarts and application updates.
Use this only when the installation needs different runtime limits or when the Remote Agent host has a network-specific requirement.
# EasyDCIM App tuning
For the EasyDCIM App stack, edit:
/opt/easydcim_docker/easydcim/.env
After changing the values, restart the application stack:
easydcim-control app restart
PHP-FPM workers
PHP-FPM controls how many PHP requests can be processed by the application container.
Common variables:
PHP_FPM_PM=dynamic
PHP_FPM_MAX_CHILDREN=50
PHP_FPM_START_SERVERS=5
PHP_FPM_MIN_SPARE_SERVERS=3
PHP_FPM_MAX_SPARE_SERVERS=10
PHP_FPM_MAX_REQUESTS=1000
PHP_FPM_PROCESS_IDLE_TIMEOUT=10s
Increase PHP_FPM_MAX_CHILDREN when the application has enough CPU/RAM but PHP requests queue up under load.
Apache request workers
Apache controls how many HTTP requests can be accepted and passed to the application.
Common variables:
APACHE_START_SERVERS=2
APACHE_MIN_SPARE_THREADS=25
APACHE_MAX_SPARE_THREADS=75
APACHE_THREAD_LIMIT=64
APACHE_THREADS_PER_CHILD=25
APACHE_MAX_REQUEST_WORKERS=150
APACHE_MAX_CONNECTIONS_PER_CHILD=0
APACHE_SERVER_LIMIT=16
Increase APACHE_MAX_REQUEST_WORKERS only together with enough PHP-FPM and database capacity. If Apache accepts more requests than PHP-FPM or MariaDB can handle, the bottleneck only moves deeper into the stack.
MariaDB connections
MariaDB connection limits can be adjusted for larger installations with many concurrent web requests, queue workers, and background jobs.
Common variables:
MARIADB_MAX_CONNECTIONS=151
MARIADB_WAIT_TIMEOUT=28800
MARIADB_INTERACTIVE_TIMEOUT=28800
MARIADB_THREAD_CACHE_SIZE=151
Increase MARIADB_MAX_CONNECTIONS carefully. The database container must have enough memory for the higher connection count.
# Remote Agent tuning
For the Remote Agent stack, edit:
/opt/easydcim_docker/agent/.env
After changing the values, restart the Remote Agent stack:
easydcim-control agent restart
If you change the Docker network subnet, recreate the Remote Agent containers and network:
easydcim-control agent down
easydcim-control agent up
Common variables:
DHCPD_INTERFACES=
AGENT_DOCKER_NETWORK_SUBNET=10.254.241.0/24
PHP_MEMORY_LIMIT=2048M
DHCPD_INTERFACES forces ISC DHCPD inside the Remote Agent container to listen only on selected host interfaces. Leave it empty to use automatic detection.
AGENT_DOCKER_NETWORK_SUBNET defines the Docker subnet used by Remote Agent support containers such as MariaDB and Redis. Change it when this subnet overlaps with your infrastructure network.
PHP_MEMORY_LIMIT sets the PHP memory limit for the Remote Agent container.
# Recommended approach
Change one group of settings at a time and monitor the system after each change:
- web response time,
- queue / Horizon status,
- Remote Agent polling duration,
- MariaDB CPU and memory usage,
- graph and monitoring freshness.
Do not set very high worker limits without checking available CPU and RAM. Too many workers can make the system slower by causing memory pressure or database contention.
# Backup and restore
# EasyDCIM App
easydcim-control app backup
easydcim-control app restore
easydcim-control app restore /opt/backups/app/<TIMESTAMP>
# Remote Agent
easydcim-control agent backup
easydcim-control agent restore
easydcim-control agent restore /opt/backups/agent/<TIMESTAMP>
Backups are stored under /opt/backups/ and are managed separately for the App and the Remote Agent.
# Migration from legacy host-based installations
If your deployment still runs directly on the host instead of Docker, use the built-in migration commands:
easydcim-control app migrate
easydcim-control agent migrate
easydcim-control app migrate is intended for the main EasyDCIM server and automatically migrates a detected local Remote Agent. Use agent migrate separately for standalone Remote Agent hosts.
# SSL management
# EasyDCIM App
easydcim-control app ssl install <fullchain.pem> <privkey.pem> <domain>
easydcim-control app ssl letsencrypt install <domain>
easydcim-control app ssl letsencrypt renew
easydcim-control app ssl letsencrypt remove
# Client Area
easydcim-control client ssl install <fullchain.pem> <privkey.pem>
easydcim-control client ssl letsencrypt install <domain>
easydcim-control client ssl letsencrypt renew
easydcim-control client ssl letsencrypt remove