enhance example for installing plugins at build time (#458)
* enhance example for installing plugins at build time Relates to https://github.com/zokradonh/kopano-docker/issues/457 * do not always rebuild the webapp base when building the webapp plugins image documentation
|1 day ago|
|.ci||3 weeks ago|
|.github||2 days ago|
|base||1 month ago|
|build||3 months ago|
|core||1 week ago|
|database||11 months ago|
|examples||4 days ago|
|grapi-explorer||11 months ago|
|kapps||1 month ago|
|kdav||1 week ago|
|konnect||2 weeks ago|
|kwmbridge||5 days ago|
|kwmserver||5 days ago|
|ldap||5 months ago|
|ldap-extras||9 months ago|
|ldap_demo||2 months ago|
|meet||1 month ago|
|owncloud||7 months ago|
|php||4 days ago|
|playground||4 months ago|
|python||2 months ago|
|scheduler||3 months ago|
|ssl||5 months ago|
|tests||2 months ago|
|utils||3 months ago|
|web||1 week ago|
|webapp||1 day ago|
|zpush||1 week ago|
|.editorconfig||4 months ago|
|.gitignore||4 months ago|
|.gitmodules||1 year ago|
|.hadolint.yaml||1 year ago|
|.markdownlint.json||4 months ago|
|.pylintrc||5 months ago|
|.travis.yml||3 months ago|
|.trivyignore||1 year ago|
|.yamllint||1 year ago|
|ARCHITECTURE.md||11 months ago|
|CODE_OF_CONDUCT.md||2 days ago|
|CONTRIBUTING.md||7 months ago|
|LICENSE||2 years ago|
|Makefile||1 day ago|
|README.md||2 months ago|
|Vagrantfile||4 months ago|
|docker-compose.db.yml||8 months ago|
|docker-compose.kwmbridge.yml||3 months ago|
|docker-compose.ldap.yml||1 month ago|
|docker-compose.mail.yml||5 days ago|
|docker-compose.ports.yml||8 months ago|
|docker-compose.yml||1 week ago|
|renovate.json||8 months ago|
|setup-update-tag.sh||10 months ago|
|setup.sh||3 weeks ago|
|version.sh||1 month ago|
This repository contains an easy to replicate recipe to spin up a Kopano demo environment, which can (through modification of
.env and possibly
docker-compose.override.yml) also be used for production environments.
Enteron each question
docker-compose upand you will see how the remaining Docker images are pulled and then everything is started
If you want to get an impression how the containers interact/relate with each other have a look at the architecture description.
Note: There have been reports about the LDAP demo not starting up on MacOS. It is recommended to use a Linux OS if you want to use the bundled LDAP image.
docker-compose.yml file by default pulls Docker containers from for example https://hub.docker.com/r/zokradonh/kopano_core/ and https://hub.docker.com/r/zokradonh/kopano_webapp/. These images are based on the Kopano nightly builds and will contain the latest version available from the time the image was built.
If you are running into a problem please include the following issues in the description of your report:
docker-compose logs $containername
docker-compose config(only useful when
docker-compose upsucceeds) or your
Please make sure to remove sensitive data (for example your real hostname or passwords for accounts) when posting these information publicly.
docker-compose.yml is part of the git versioning. Which mean all changes in this repository will also be applied to your local data once you pull in the latest version. If you need to configure additional env variables, this can now be done in the additional env files (more details further below, for example for
kopano_server this file is called
kopano_server.env). If you only want to run a subset of containers it is recommended to create a copy of
docker-compose.yml and specify your copy when running. e.g. like
docker-compose -f my-setup.yml up -d.
Yes, indeed. You could for example use this to easily try out newer Kopano WebApp or Z-Push releases, without touching your production environment. Through the
zokradonh/kopano_core image you could even try out newer version of e.g.
kopano-gateway without jumping into a dependency mess in your production environment.
And last but not least this project also offers a
zokradonh/kopano_utils image to easily run tools such as
kopano-migration-imap and all the other utilities that are bundles with Kopano. See below to see how to run
If you want to modify some of the values from the
setup.sh run you can simply edit
.env in your favorite editor. Repeated runs of
setup.sh will neither modify
.env. In the ´.env´ file you will also find some given defaults like LDAP query filters and the local ports for the reverse proxy.
Additionally a dedicated env file is created for each container (at least where that would make sense). The env file has the container name as part of the file name. For example for the
kopano_server container the filename is named
kopano_server.env. These additional env files are auto created when running
Any additional configuration should be done through environment variables and not done in the actual container. The images working with configuration files (e.g.
kopano_meet) have a mechanism built in to translate env variables into configuration files. For services that can directly work with env variables (e.g.
kopano_kwmserver) these can be specified directly. Please check the individual
README.md files for further instructions.
The compose file itself is part of the git repository and should not be edited directly. Instead a
docker-compose.override.yml file (will be ignored by git) can be created to override and extend the default one. See https://docs.docker.com/compose/extends/ for more information.
This project uses the
COMPOSE_FILE environment variable to allow users to override the ports exposed by each container (for example when using a different front facing proxy). When using a
docker-compose.override.yml file make sure this is included in this variable in the
.env file. For example like this:
This project switched to specifying
.env to allow users to easily disable individual ports exposed. Please rerun
setup.sh to add this variable to your
.env file or add it manually.
In this repository you can also find a Makefile that automates the process of building newer images.
You can easily rebuild all images based on the currently available Kopano version by running
make build-all. To just rebuild a certain image you can also run
make build-core or
make build-webapp. Please check the
Makefile to see other possible targets. (depending on your environment you may also be able to autocomplete with the
To be able to easily go back to a previous version you can also “tag” you Docker images by running e.g.
There are certain tasks within Kopano that either need to be executed once (like creating the public store when starting a new environment for the first time) or on a regular base (like syncing the internal user list with and external LDAP tree). For convenience this project includes a
scheduler container that will take care of this and that can be dynamically configured through env variables.
Please check the
README.md of the scheduler image for further instructions.
Instead of using the internal scheduler one can also just use an existing scheduler (cron on the docker host for example) to execute these tasks.
This project also makes it possible to build Docker images based on the official Kopano releases. For this the following section needs to be modified in
# Docker Repository to push to/pull from docker_repo=zokradonh COMPOSE_PROJECT_NAME=kopano COMPOSE_FILE=docker-compose.yml:docker-compose.ports.yml:docker-compose.db.yml:docker-compose.ldap.yml:docker-compose.mail.yml # Modify below to build a different version, than the Kopano nightly release # credentials for repositories are handled through a file called apt_auth.conf (which will be created through setup.sh or Makefile) #KOPANO_CORE_REPOSITORY_URL=https://download.kopano.io/supported/core:/8.7/Debian_10/ #KOPANO_MEET_REPOSITORY_URL=https://download.kopano.io/supported/meet:/final/Debian_10/ #KOPANO_WEBAPP_REPOSITORY_URL=https://download.kopano.io/supported/webapp:/final/Debian_10/ #KOPANO_WEBAPP_FILES_REPOSITORY_URL=https://download.kopano.io/supported/files:/final/Debian_10/ #KOPANO_WEBAPP_MDM_REPOSITORY_URL=https://download.kopano.io/supported/mdm:/final/Debian_10/ #KOPANO_WEBAPP_SMIME_REPOSITORY_URL=https://download.kopano.io/supported/smime:/final/Debian_10/ #KOPANO_ZPUSH_REPOSITORY_URL=http://repo.z-hub.io/z-push:/final/Debian_10/ #DOWNLOAD_COMMUNITY_PACKAGES=0
The credentials for the Kopano package repositories can either be defined through the url itself, e.g. like
https://serial:REPLACE-ME@download.kopano.io/supported/core:/final/Debian_10/ or through an
apt_auth.conf file. Using
apt_auth.conf is preferred, since it does not “leak” credentials into the final image.
With the above lines uncommented and credentials in place running
make build-all will rebuild the images based on the latest available Kopano release (don’t forget to
make tag-core and
make tag-webapp your images after building them).
If you are running a private Docker Registry then you have to change
docker_repo to reference your internal registry. Afterward you can run for example
make publish-core to push the image to your registry.
When storing the credentials in the url the built image will include your subscription key! Do not push this image to any public registry like e.g. https://hub.docker.com!
Please check the contributing information.
While using kweb is recommended, this is of course possible.
Please check the individual web containers (kDAV, WebApp and Z-Push for individual instructions).
kopano-gatewayto be reachable from the network?
The exposed ports of each container are defined in
docker-compose.ports.yml. If you do not want to expose some of the containers to the network, it is recommended to copy this file to
docker-compose.override.ymland just remove all entries that you do not want to have exposed.
To get a quick impression of Kopano this git repository bundles a locally build LDAP image with some example users. When using the docker-compose.yml in a production environment make sure to:
Yes, that is certainly a possibility. Within the
examples/ directory you can find some ready to run examples that can be run in the following way:
docker-compose -f examples/webapp.yml up -d
docker-compose.ymlfile in the background:
docker-compose up -d
docker-compose down -v
docker-compose exec kopano_server kopano-admin -l
docker-compose logs -f kopano_server
docker run --rm -it -v /var/run/kopano/:/var/run/kopano -v $(pwd):/kopano/path zokradonh/kopano_utils kopano-backup
docker run --rm -it --volumes-from kopano_server -v /root/kopano-backup:/kopano/path zokradonh/kopano_utils kopano-backup -h
docker run --rm -it -v /var/run/kopano/:/var/run/kopano -v $(pwd):/kopano/path zokradonh/kopano_utils(to directly run kopano-migration-pst just append it to the command)
This project includes a configuration file for Vagrant to easily try kopano-docker locally. All that is required is Vagrant itself and Virtualbox.
Steps to start kopano-docker in Vagrant:
# run setup.sh $ ./setup.sh # provision virtual machine $ vagrant up # alternatively "vagrant up --provider hyperv" when running on Windows # in case you want to connect into the machine $ vagrant ssh
After the machine has started it will be reachable from the local system through the IP
10.16.73.20, please make sure that your chosen hostname resolves to this IP. The project files are mounted to
/vagrant in the machine. To interact with the containers just change into this directory first.
docker-compose.yml uses the following components for the MTA (mail delivery, including anti-spam & anti-virus) and openLDAP. Please consult their documentation for further configuration advice.
The following (blog) articles have been written about this project: