6 Docker compose installation
Ralf Becker edited this page 2024-01-15 16:11:08 +02:00

Docker-compose installation: Linux, Windows, Mac, Synology, QNAP

This is NOT the recommended installation method for supported Linux systems like Debian, Ubuntu, SuSE or RHEL!

EGroupware can be installed directly using Docker-compose, without the use of Linux DEB/RPM packages https://github.com/EGroupware/egroupware/tree/master/doc/docker#running-egroupware-in-docker

You have to create an arbitrary directory where you place the docker-compose.yml and the nginx.conf file. In this example we use /etc/egroupware-docker, like the DEB/RPM packages:

mkdir /etc/egroupware-docker
cd /etc/egroupware-docker
curl https://raw.githubusercontent.com/EGroupware/egroupware/master/doc/docker/docker-compose.yml > docker-compose.yml
curl https://raw.githubusercontent.com/EGroupware/egroupware/master/doc/docker/nginx.conf > nginx.conf
# edit docker-compose.yml or nginx.conf, by default it will run on http://localhost:8080/
mkdir data # this is where egroupware data is stored, it's by default a subdir of the directory of docker-compose.yml
docker-compose up -d

EGroupware EPL installation instructions

  • you have to do the installation of the community version, as described on this page, first
  • once EGroupware CE is up and running, change your docker-compose.yml from
services:
  egroupware:
    image: egroupware/egroupware:latest
    # EPL image: download.egroupware.org/egroupware/epl:latest

to (indention per space characters matter!)

services:
  egroupware:
    # CE image: egroupware/egroupware:latest
    image: download.egroupware.org/egroupware/epl:latest

Then run the following commands (inside the directory with your docker-compose.yml file) and give your EPL credentials:

docker login download.egroupware.org
docker-compose up -d

Docker Desktop for Mac notes

  • directories of volumes must be exported to Docker, by default only your home-directory is!
  • permissions of data directory must be writable by your user, as Docker daemon runs as that user!
  • db volume must NOT be a directory, as the networked access from Docker VM to the Mac is to slow!

Docker Desktop for Windows notes

  • you can NOT use $PWD to reference the docker-compose directory, use the full path with forward slashes!
  • directories of volumes must be exported to Docker!
  • db volume must NOT be a directory, as the networked access from Docker VM to Windows is to slow!

Docker on Linux

  • permissions of sources and data directory must be writable by www-data user (#33)

Synology installation

It's recommened you create a volume egroupware for EGroupware data on the diskstation: Control panel >> Shared folder >> Create

Name: egroupware
Description: EGroupware data and backups
Location: choose a volume eg. "volume1"
X Hide from network environment
  Extended permissions
  Activate Trash

Install the package "Docker" via the UI and then ssh into the diskstation as admin

sudo su -
<give admin password>
mkdir /etc/egroupware-docker
cd /etc/egroupware-docker
curl https://raw.githubusercontent.com/EGroupware/egroupware/master/doc/docker/docker-compose.yml > docker-compose.yml
curl https://raw.githubusercontent.com/EGroupware/egroupware/master/doc/docker/nginx.conf > nginx.conf
ln -s /volume1/egroupware data # use the name of the volume you choose above
docker-compose up -d
docker-compose logs -f

The last command allows you to follow the installation process (exit with Ctrl-C, once it's successful).

To make EGroupware public accessible you need to create a port-forward on your router for ports 80 and 443, create a DNS entry for your external domain eg. egw.example.org and on the diskstation: Control panel >> Application portal >> Reverse proxy >> Create

Description: EGroupware
Source
Protocol: HTTPS
Hostname: egw.example.org
Port: 443
  Activate HST (makes sense to activate, once everything is working!)
X Activate HTTP/2
  Access control (handled by EGroupware itself, do NOT activate)
Target
Protocol: HTTP
Hostname: localhost
Port: 8080 (unless a different port is specified in docker-compose.yml)

Custom header tab:
X-Forwarded-Proto             https
[Create v] >> Websocket

Control panel >> Security >> Certificates Create a Let's Encrypt certificate for the chosen domain egw.example.org (LE requires 80 AND 443!)

EGroupware should then be accessible under https://egw.example.org with an Let's Encrypt certificate.