A Container stands for virtualization of a single application/service, for example a Webserver like Apache and a MySQL Database.
Docker provides several images to run predefined services. You are also able to create your own images.
- Port 80 and 443 for HTTP/S connections
- Port 8083 for COYO backup REST API
- Port 5601 for Kibana to access the COYO server logs
- Port 5602 for Grafana to access the metrics stack (optional)
Server software Requirements
- docker >= 18.03.2
- docker-compose >= 1.26.0
We made good experiences with Ubuntu, Debian, RedHat, SLES and CentOS.
This is a guide written for Ubuntu distributions.
Server hardware requirements
Client browser requirements
*IE11 is supported but not recommended. For a great user experience use a modern browser.
**The support of versions of Microsoft Edge older than v80 is deprecated and will be removed in future releases
To get an overview of the supported Linux distributions and how to install docker, follow the official installation instructions: https://docs.docker.com/install/
Installing Docker on Ubuntu 18.04 LTS:
sudo apt install docker.io
Install Docker Compose
(root needed: sudo -i)
curl -L --fail https://github.com/docker/compose/releases/download/1.26.0/run.sh > /usr/local/bin/docker-compose && \ chmod +x /usr/local/bin/docker-compose && \ docker-compose --version
Prepare the host system
sudo adduser coyo
sudo adduser coyo sudo
sudo -i -u coyo
(To check available COYO versions check https://download.coyoapp.com/release/onpremises/)
wget https://download.coyoapp.com/release/onpremises/coyo4_<coyo-version>.zip unzip coyo4_<coyo-version>.zip`
-rw-r--r-- 1 root root 6753 Nov 26 16:38 coyo4_18.10.3-RELEASE.zip -rw-r--r-- 1 root root 170 Nov 26 16:38 coyo-backend.properties -rw-r--r-- 1 root root 89 Nov 26 16:38 coyo-backup.properties -rw-r--r-- 1 root root 87 Nov 26 16:38 coyo-push.properties -rwxr-xr-x 1 root root 11419 Nov 26 16:38 docker-compose.yml -rw-r--r-- 1 root root 3625 Nov 26 16:38 .env -rw-r--r-- 1 root root 1323 Nov 26 16:38 README.md -rwxr-xr-x 1 root root 565 Nov 26 16:38 start-advanced.sh -rwxr-xr-x 1 root root 1162 Nov 26 16:38 start.sh -rwxr-xr-x 1 root root 55 Nov 26 16:38 stop.sh
Configure the environment variables for Docker
(Make sure domains are configured correctly)
Outgoing email configuration
check out this article for more information about the SSL certificate file.
Configure the interval to run the backup and where it should be stored. The BACKUP_CRON property takes a crontab line as value. The pattern of those crontabs is a list of six single space-separated fields: second, minute, hour, day, month, weekday. Month and weekday names can be given as the first three letters of the English names.
BACKUP_CRON=0 30 3 * * *
0 0 * * * *= the top of every hour of every day.
*/10 * * * * *= every ten seconds.
0 0 8-10 * * *= 8, 9 and 10 o'clock of every day.
0 0 6,19 * * *= 6:00 AM and 7:00 PM every day.
0 30 3 * * *= every day at 3:30 AM.
0 0/30 8-10 * * *= 8:00, 8:30, 9:00, 9:30, 10:00 and 10:30 every day.
0 0 9-17 * * MON-FRI= on the hour nine-to-five weekdays
0 0 0 25 12 ?= every Christmas Day at midnight
An example: As a user, you get logged out after one month of inactivity.
(Only whole numbers are allowed.)
We suggest 12,5% of your RAM for ES_HEAP_SIZE and 6,25% for ES_LOGS_HEAP_SIZE.
(m/M for Megabytes or g/G for Gigabytes)
The ES_LOGS_KEEP_DAYS defines how long log entries get stored in days.
Java VM memory configuration
(m/M for Megabytes or g/G for Gigabytes)
The two max connections parameters set the maximum number of connections in general and the number of active connections that can be allocated from this pool as well.
The synchronous commit indicates the transaction strategy.
The shared buffers is the max amount of data temporarily stored in the RAM for faster access.
We suggest 6,25% of your RAM but less is also possible.
The working memory is used for large queries and sorting within the database.
For single-host environments, you don't have to change our default values.
With Backend cluster, you have multiple, clustered backend instances. This should only be true for very large and highly available instances.
For single-host environments please add the following line to your .env-file
Enable HTTP Transport Security Header to include subdomains.
Push notification service
If you don't have such a service account .json but want to use push notifications, please contact our service team. We can provide you with one.
The thread limit limits the number of parallel executed push notifications.
The multiplier is used to calculate the effective read heart-beat timeout.
The MAX_ and MIN_MEMORY parameters define the initial and max memory in MB that ActiveMQ. For max. we suggest 9,6% of your RAM.
The log level of the ActiveMQ is defined as INFO, WARN, or ERROR.
For single-host environments you don't have to change our default values except for MAX_MEMORY.
Since version 21.x COYO also requires a JSON Web Token to authorize users to the services. This token must be at least 256 bits (32 bytes) long and can be created using an online hash generator, for example.
For test environments, you can create a self-signed SSL-Certificate using OpenSSL.
Merge and move your new self-signed SSL certificate or your existing SSL-Certificate to the location defined in your .env file.
Following an example for a self-signed certificate:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out ca.pem -days 1080 -nodes -subj '/CN=\*/O=COYO GmbH./C=DE'
mv key.pem cert.pem
cat ca.pem >> cert.pem
To start COYO without the optional metrics stack run:
sudo docker ps
(Make sure to replace COYO_DATA_STORAGE with the value defined in your .env file)
tail -f COYO_DATA_STORAGE/backend/logs/coyo-backend.log
For you, as a system administrator, we suggest having a look at our Guides to integrate a user directory and to set up an authentication provider.
Also, you can check out our Update Guide to be ready for our next release or our Backup Guide.