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.18.0
We made good experiences with Ubuntu, Debian, RedHat, SLES and CentOS.
Microsoft is currently developing a so called LCOW (Linux Container On Windows) Hyper-V virtualization technology so you may get a chance to run COYO on Windows in the future.
This is a guide written for Ubuntu distributions.
Server hardware requirements
If you want to run the optional metrics stack (start-advanced.sh) to gather data like CPU load, RAM usage and backend insights like created content and online user count, you would need 8 GB of additional RAM and 2 more CPU cores.
Client browser requirements
*IE11 is supported but not recommended. For a great user experience use EDGE or another modern browser.
To get an overview about 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.18.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/enterprise/)
wget https://download.coyoapp.com/release/enterprise/coyo4_<coyo-version>.zip unzip coyo4_<coyo-version>.zip`
-rw-r--r-- 1 root root 6753 Nov 26 16:38 coyo4_10.0.30-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-full.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)
COYO_DB_NAME=dbname COYO_DB_USER=dbuser COYO_DB_PASSWORD=dbpassword
Outgoing email configuration
COYO_MAIL_FROM=Company <firstname.lastname@example.org> COYO_MAIL_HOST=smtp.domain.tld COYO_MAIL_USERNAME=smtp-user COYO_MAIL_PASSWORD=smtp-password COYO_MAIL_PORT=25 COYO_MAIL_PROTOCOL=smtp
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.
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
BACKUP_CRON=0 30 3 * * * BACKUP_PATH=/srv/backup
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.
ES_HEAP_SIZE=2g ES_LOGS_HEAP_SIZE=1g ES_LOGS_KEEP_DAYS=84
Java VM memory configuration
(m/M for Megabytes or g/G for Gigabytes)
COYO_JAVA_OPTS=-Xmx4g -server COYO_PUSH_JAVA_OPTS=-Xmx1g -server COYO_BACKUP_JAVA_OPTS=-Xmx1g -server
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 work memory is used for large querys and sorting within the database.
For single host environments you don't have to change our default values.
COYO_DB_MAX_ACTIVE_CONNECTIONS=100 COYO_DB_MAX_CONNECTIONS=400 COYO_DB_SYNCHRONOUS_COMMIT=false COYO_DB_SHARED_BUFFERS=1024MB COYO_DB_WORK_MEM=32MB
With Backend cluster you have multiple, clustered backend instances. This should only be true for very large and highly available instances.
HTTP Security Headers
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.
COYO_ACTIVEMQ_MAX_CONNECTIONS=100000 COYO_ACTIVEMQ_HB_GRACE_PERIOD_MULTIPLIER=2.5 COYO_ACTIVEMQ_MIN_MEMORY=512 COYO_ACTIVEMQ_MAX_MEMORY=1536 COYO_ACTIVEMQ_LOGLEVEL=WARN
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 rm ca.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 to have 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.