mirror of
				https://github.com/zokradonh/kopano-docker
				synced 2025-10-31 02:17:47 +00:00 
			
		
		
		
	Add example to run meet standalone (#90)
* refactor ssl generation make ssl certificate names match container names add dns names to certificates * add example to run meet and its dependencies together with an existing kopano * update webapp example * remove port numbers from ssl cert as these could have been specified in a demo environment * set default values for HTTP, HTTPS and EMAIL fail if FQDN is unset make smtp and kopano-server ports configurable * add hint about 2015 to setup.sh * also add new defaults to webapp compose * add example for standalone core as well
This commit is contained in:
		
							parent
							
								
									511140a975
								
							
						
					
					
						commit
						10d264fa38
					
				| @ -2,16 +2,16 @@ version: "3.5" | |||||||
| 
 | 
 | ||||||
| services: | services: | ||||||
|   web: |   web: | ||||||
|     image: ${docker_repo:?err}/kopano_web |     image: ${docker_repo:-zokradonh}/kopano_web | ||||||
|     container_name: web |     container_name: web | ||||||
|     restart: always |     restart: always | ||||||
|     ports: |     ports: | ||||||
|       - "2015:2015" |       - "2015:2015" | ||||||
|       - "${HTTP}:80" |       - "${HTTP:-80}:80" | ||||||
|       - "${HTTPS}:443" |       - "${HTTPS:-443}:443" | ||||||
|     environment: |     environment: | ||||||
|       - EMAIL=${EMAIL} |       - EMAIL=${EMAIL:-off} | ||||||
|       - FQDN=${FQDN} |       - FQDN=${FQDN?err} | ||||||
|     command: wrapper.sh |     command: wrapper.sh | ||||||
|     cap_drop: |     cap_drop: | ||||||
|      - ALL |      - ALL | ||||||
| @ -25,10 +25,10 @@ services: | |||||||
|     networks: |     networks: | ||||||
|       web-net: |       web-net: | ||||||
|         aliases: |         aliases: | ||||||
|          - ${FQDN} |          - ${FQDNCLEANED?err} | ||||||
| 
 | 
 | ||||||
|   ldap: |   ldap: | ||||||
|     image: ${docker_repo:?err}/kopano_ldap_demo |     image: ${docker_repo:-zokradonh}/kopano_ldap_demo | ||||||
|     container_name: ldap |     container_name: ldap | ||||||
|     ports: |     ports: | ||||||
|       - ${LDAPPORT:-389}:389 |       - ${LDAPPORT:-389}:389 | ||||||
| @ -109,7 +109,7 @@ services: | |||||||
|     depends_on: |     depends_on: | ||||||
|       - ldap |       - ldap | ||||||
|     ports: |     ports: | ||||||
|       - "25:25" |       - "${SMTPPORT:-25}:25" | ||||||
|       - "465:465" |       - "465:465" | ||||||
|       - "587:587" |       - "587:587" | ||||||
|     volumes: |     volumes: | ||||||
| @ -181,15 +181,18 @@ services: | |||||||
|       - kopano-net |       - kopano-net | ||||||
|    |    | ||||||
|   kopano_ssl: |   kopano_ssl: | ||||||
|     image: ${docker_repo:?err}/kopano_ssl |     image: ${docker_repo:-zokradonh}/kopano_ssl | ||||||
|     container_name: kopano_ssl |     container_name: kopano_ssl | ||||||
|  |     environment: | ||||||
|  |       - FQDN=${FQDN} | ||||||
|  |       - PKI_COUNTRY=NL | ||||||
|     env_file: |     env_file: | ||||||
|       - kopano_ssl.env |       - kopano_ssl.env | ||||||
|     volumes: |     volumes: | ||||||
|       - kopanossl/:/kopano/ssl |       - kopanossl/:/kopano/ssl | ||||||
| 
 | 
 | ||||||
|   kopano_server: |   kopano_server: | ||||||
|     image: ${docker_repo:?err}/kopano_core:${CORE_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest} | ||||||
|     hostname: kopano_server |     hostname: kopano_server | ||||||
|     container_name: kopano_server |     container_name: kopano_server | ||||||
|     depends_on: |     depends_on: | ||||||
| @ -197,8 +200,8 @@ services: | |||||||
|       - ldap |       - ldap | ||||||
|       - kopano_ssl |       - kopano_ssl | ||||||
|     ports: |     ports: | ||||||
|       - 236:236 |       - ${KOPANOPORT:-236}:236 | ||||||
|       - 237:237 |       - ${KOPANOSPORT:-237}:237 | ||||||
|     environment: |     environment: | ||||||
|       - SERVICE_TO_START=server |       - SERVICE_TO_START=server | ||||||
|       - TZ=${TZ} |       - TZ=${TZ} | ||||||
| @ -209,7 +212,7 @@ services: | |||||||
|       - KCCONF_SERVER_MYSQL_DATABASE=${MYSQL_DATABASE} |       - KCCONF_SERVER_MYSQL_DATABASE=${MYSQL_DATABASE} | ||||||
|       - KCCONF_SERVER_MYSQL_USER=${MYSQL_USER} |       - KCCONF_SERVER_MYSQL_USER=${MYSQL_USER} | ||||||
|       - KCCONF_SERVER_MYSQL_PASSWORD=${MYSQL_PASSWORD} |       - KCCONF_SERVER_MYSQL_PASSWORD=${MYSQL_PASSWORD} | ||||||
|       - KCCONF_SERVER_SERVER_SSL_KEY_FILE=/kopano/ssl/kserver.pem |       - KCCONF_SERVER_SERVER_SSL_KEY_FILE=/kopano/ssl/kopano_server.pem | ||||||
|       - KCCONF_SERVER_SERVER_SSL_CA_FILE=/kopano/ssl/ca.pem |       - KCCONF_SERVER_SERVER_SSL_CA_FILE=/kopano/ssl/ca.pem | ||||||
|       - KCCONF_SERVER_SERVER_NAME=Kopano |       - KCCONF_SERVER_SERVER_NAME=Kopano | ||||||
|       - KCCONF_SERVER_SSLKEYS_PATH=/kopano/ssl/clients |       - KCCONF_SERVER_SSLKEYS_PATH=/kopano/ssl/clients | ||||||
| @ -239,7 +242,7 @@ services: | |||||||
|       - kopanosocket/:/run/kopano |       - kopanosocket/:/run/kopano | ||||||
| 
 | 
 | ||||||
|   kopano_webapp: |   kopano_webapp: | ||||||
|     image: ${docker_repo:?err}/kopano_webapp:${WEBAPP_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_webapp:${WEBAPP_VERSION:-latest} | ||||||
|     hostname: kopano_webapp |     hostname: kopano_webapp | ||||||
|     container_name: kopano_webapp |     container_name: kopano_webapp | ||||||
|     volumes: |     volumes: | ||||||
| @ -255,7 +258,7 @@ services: | |||||||
|       - kopano-net |       - kopano-net | ||||||
| 
 | 
 | ||||||
|   kopano_zpush: |   kopano_zpush: | ||||||
|     image: ${docker_repo:?err}/kopano_zpush:${ZPUSH_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_zpush:${ZPUSH_VERSION:-latest} | ||||||
|     hostname: kopano_zpush |     hostname: kopano_zpush | ||||||
|     container_name: kopano_zpush |     container_name: kopano_zpush | ||||||
|     volumes: |     volumes: | ||||||
| @ -271,7 +274,7 @@ services: | |||||||
|       - kopano-net |       - kopano-net | ||||||
| 
 | 
 | ||||||
|   kopano_grapi: |   kopano_grapi: | ||||||
|     image: ${docker_repo:?err}/kopano_core:${CORE_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest} | ||||||
|     container_name: kopano_grapi |     container_name: kopano_grapi | ||||||
|     volumes: |     volumes: | ||||||
|       - kopanosocket/:/run/kopano |       - kopanosocket/:/run/kopano | ||||||
| @ -284,7 +287,7 @@ services: | |||||||
|       - kopano-net |       - kopano-net | ||||||
| 
 | 
 | ||||||
|   kopano_kapi: |   kopano_kapi: | ||||||
|     image: ${docker_repo:?err}/kopano_core:${CORE_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest} | ||||||
|     container_name: kopano_kapi |     container_name: kopano_kapi | ||||||
|     depends_on: |     depends_on: | ||||||
|       - kopano_grapi |       - kopano_grapi | ||||||
| @ -305,7 +308,7 @@ services: | |||||||
|       - web-net |       - web-net | ||||||
| 
 | 
 | ||||||
|   kopano_dagent: |   kopano_dagent: | ||||||
|     image: ${docker_repo:?err}/kopano_core:${CORE_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest} | ||||||
|     container_name: kopano_dagent |     container_name: kopano_dagent | ||||||
|     volumes: |     volumes: | ||||||
|       - kopanossl/:/kopano/ssl |       - kopanossl/:/kopano/ssl | ||||||
| @ -313,15 +316,15 @@ services: | |||||||
|     environment: |     environment: | ||||||
|       - SERVICE_TO_START=dagent |       - SERVICE_TO_START=dagent | ||||||
|       - TZ=${TZ} |       - TZ=${TZ} | ||||||
|  |       - KCCONF_DAGENT_SSLKEY_FILE=/kopano/ssl/kopano_dagent.pem | ||||||
|       - KCCONF_DAGENT_LOG_LEVEL=3 |       - KCCONF_DAGENT_LOG_LEVEL=3 | ||||||
|       - KCCONF_DAGENT_SSLKEY_FILE=/kopano/ssl/kdagent.pem |  | ||||||
|     env_file: |     env_file: | ||||||
|       - kopano_dagent.env |       - kopano_dagent.env | ||||||
|     networks: |     networks: | ||||||
|       - kopano-net |       - kopano-net | ||||||
| 
 | 
 | ||||||
|   kopano_spooler: |   kopano_spooler: | ||||||
|     image: ${docker_repo:?err}/kopano_core:${CORE_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest} | ||||||
|     container_name: kopano_spooler |     container_name: kopano_spooler | ||||||
|     hostname: spooler |     hostname: spooler | ||||||
|     domainname: ${LDAP_DOMAIN} |     domainname: ${LDAP_DOMAIN} | ||||||
| @ -333,14 +336,14 @@ services: | |||||||
|       - TZ=${TZ} |       - TZ=${TZ} | ||||||
|       - KCCONF_SPOOLER_LOG_LEVEL=3 |       - KCCONF_SPOOLER_LOG_LEVEL=3 | ||||||
|       - KCCONF_SPOOLER_SMTP_SERVER=mail |       - KCCONF_SPOOLER_SMTP_SERVER=mail | ||||||
|       - KCCONF_SPOOLER_SSLKEY_FILE=/kopano/ssl/kspooler.pem |       - KCCONF_SPOOLER_SSLKEY_FILE=/kopano/ssl/kopano_spooler.pem | ||||||
|     env_file: |     env_file: | ||||||
|       - kopano_spooler.env |       - kopano_spooler.env | ||||||
|     networks: |     networks: | ||||||
|       - kopano-net |       - kopano-net | ||||||
| 
 | 
 | ||||||
|   kopano_gateway: |   kopano_gateway: | ||||||
|     image: ${docker_repo:?err}/kopano_core:${CORE_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest} | ||||||
|     container_name: kopano_gateway |     container_name: kopano_gateway | ||||||
|     volumes: |     volumes: | ||||||
|       - kopanossl/:/kopano/ssl |       - kopanossl/:/kopano/ssl | ||||||
| @ -356,7 +359,7 @@ services: | |||||||
|       - kopano-net |       - kopano-net | ||||||
| 
 | 
 | ||||||
|   kopano_ical: |   kopano_ical: | ||||||
|     image: ${docker_repo:?err}/kopano_core:${CORE_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest} | ||||||
|     container_name: kopano_ical |     container_name: kopano_ical | ||||||
|     volumes: |     volumes: | ||||||
|       - kopanossl/:/kopano/ssl |       - kopanossl/:/kopano/ssl | ||||||
| @ -372,7 +375,7 @@ services: | |||||||
|       - web-net |       - web-net | ||||||
| 
 | 
 | ||||||
|   kopano_monitor: |   kopano_monitor: | ||||||
|     image: ${docker_repo:?err}/kopano_core:${CORE_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest} | ||||||
|     container_name: kopano_monitor |     container_name: kopano_monitor | ||||||
|     volumes: |     volumes: | ||||||
|       - kopanossl/:/kopano/ssl |       - kopanossl/:/kopano/ssl | ||||||
| @ -386,7 +389,7 @@ services: | |||||||
|       - kopano-net |       - kopano-net | ||||||
| 
 | 
 | ||||||
|   kopano_search: |   kopano_search: | ||||||
|     image: ${docker_repo:?err}/kopano_core:${CORE_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest} | ||||||
|     container_name: kopano_search |     container_name: kopano_search | ||||||
|     volumes: |     volumes: | ||||||
|       - kopanossl/:/kopano/ssl |       - kopanossl/:/kopano/ssl | ||||||
| @ -401,7 +404,7 @@ services: | |||||||
|       - kopano-net |       - kopano-net | ||||||
| 
 | 
 | ||||||
|   kopano_konnect: |   kopano_konnect: | ||||||
|     image: ${docker_repo:?err}/kopano_konnect:${KONNECT_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_konnect:${KONNECT_VERSION:-latest} | ||||||
|     container_name: kopano_konnect |     container_name: kopano_konnect | ||||||
|     command: wrapper.sh |     command: wrapper.sh | ||||||
|     volumes: |     volumes: | ||||||
| @ -416,14 +419,14 @@ services: | |||||||
|      - web-net |      - web-net | ||||||
| 
 | 
 | ||||||
|   kopano_playground: |   kopano_playground: | ||||||
|     image: ${docker_repo:?err}/kopano_playground |     image: ${docker_repo:-zokradonh}/kopano_playground | ||||||
|     container_name: kopano_playground |     container_name: kopano_playground | ||||||
|     networks: |     networks: | ||||||
|      - kopano-net |      - kopano-net | ||||||
|      - web-net |      - web-net | ||||||
| 
 | 
 | ||||||
|   kopano_kwmserver: |   kopano_kwmserver: | ||||||
|     image: ${docker_repo:?err}/kopano_kwmserver:${KWM_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_kwmserver:${KWM_VERSION:-latest} | ||||||
|     container_name: kopano_kwmserver |     container_name: kopano_kwmserver | ||||||
|     command: wrapper.sh |     command: wrapper.sh | ||||||
|     environment: |     environment: | ||||||
| @ -437,7 +440,7 @@ services: | |||||||
|      - web-net |      - web-net | ||||||
| 
 | 
 | ||||||
|   kopano_meet: |   kopano_meet: | ||||||
|     image: ${docker_repo:?err}/kopano_meet:${MEET_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_meet:${MEET_VERSION:-latest} | ||||||
|     container_name: kopano_meet |     container_name: kopano_meet | ||||||
|     environment: |     environment: | ||||||
|      - SERVICE_TO_START=meet |      - SERVICE_TO_START=meet | ||||||
|  | |||||||
							
								
								
									
										107
									
								
								examples/core.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								examples/core.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,107 @@ | |||||||
|  | version: "3.5" | ||||||
|  | 
 | ||||||
|  | services: | ||||||
|  |   ldap: | ||||||
|  |     image: ${docker_repo:-zokradonh}/kopano_ldap_demo | ||||||
|  |     container_name: ldap | ||||||
|  |     ports: | ||||||
|  |       - ${LDAPPORT:-389}:389 | ||||||
|  |     environment: | ||||||
|  |       - LDAP_ORGANISATION=${LDAP_ORGANISATION} | ||||||
|  |       - LDAP_DOMAIN=${LDAP_DOMAIN} | ||||||
|  |       - LDAP_BASE_DN=${LDAP_BASE_DN} | ||||||
|  |       - LDAP_ADMIN_PASSWORD=${LDAP_ADMIN_PASSWORD} | ||||||
|  |       - LDAP_READONLY_USER=true | ||||||
|  |       - LDAP_READONLY_USER_PASSWORD=${LDAP_READONLY_USER_PASSWORD} | ||||||
|  |     command: "--loglevel info --copy-service" | ||||||
|  |     volumes: | ||||||
|  |       - ldap:/var/lib/ldap | ||||||
|  |       - slapd:/etc/ldap/slapd.d | ||||||
|  |     networks: | ||||||
|  |       - ldap-net | ||||||
|  | 
 | ||||||
|  |   db: | ||||||
|  |     image: mariadb:10.3.10-bionic | ||||||
|  |     restart: always | ||||||
|  |     container_name: kopano_db | ||||||
|  |     volumes: | ||||||
|  |       - mysql/:/var/lib/mysql | ||||||
|  |     environment: | ||||||
|  |       - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} | ||||||
|  |       - MYSQL_USER=${MYSQL_USER} | ||||||
|  |       - MYSQL_PASSWORD=${MYSQL_PASSWORD} | ||||||
|  |       - MYSQL_DATABASE=${MYSQL_DATABASE} | ||||||
|  |     healthcheck: | ||||||
|  |       test: ["CMD-SHELL", 'mysql --database=$$MYSQL_DATABASE --password=$$MYSQL_ROOT_PASSWORD --execute="SELECT count(table_name) > 0 FROM information_schema.tables;" --skip-column-names -B'] | ||||||
|  |       interval: 30s | ||||||
|  |       timeout: 10s | ||||||
|  |       retries: 4 | ||||||
|  |     networks: | ||||||
|  |       - kopano-net | ||||||
|  |    | ||||||
|  |   kopano_ssl: | ||||||
|  |     image: ${docker_repo:-zokradonh}/kopano_ssl | ||||||
|  |     container_name: kopano_ssl | ||||||
|  |     environment: | ||||||
|  |       - FQDN=${FQDN} | ||||||
|  |       - PKI_COUNTRY=NL | ||||||
|  |     volumes: | ||||||
|  |       - /etc/kopano/ssl/:/kopano/ssl | ||||||
|  | 
 | ||||||
|  |   kopano_server: | ||||||
|  |     image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest} | ||||||
|  |     hostname: kopano_server | ||||||
|  |     container_name: kopano_server | ||||||
|  |     depends_on: | ||||||
|  |       - db | ||||||
|  |       - ldap | ||||||
|  |       - kopano_ssl | ||||||
|  |     ports: | ||||||
|  |       - ${KOPANOPORT:-236}:236 | ||||||
|  |       - ${KOPANOSPORT:-237}:237 | ||||||
|  |     environment: | ||||||
|  |       - SERVICE_TO_START=server | ||||||
|  |       - TZ=${TZ} | ||||||
|  |       - KCCONF_SERVER_COREDUMP_ENABLED=no | ||||||
|  |       - KCCONF_SERVER_LOG_LEVEL=3 | ||||||
|  |       - KCCONF_SERVER_MYSQL_HOST=${MYSQL_HOST} | ||||||
|  |       - KCCONF_SERVER_MYSQL_PORT=3306 | ||||||
|  |       - KCCONF_SERVER_MYSQL_DATABASE=${MYSQL_DATABASE} | ||||||
|  |       - KCCONF_SERVER_MYSQL_USER=${MYSQL_USER} | ||||||
|  |       - KCCONF_SERVER_MYSQL_PASSWORD=${MYSQL_PASSWORD} | ||||||
|  |       - KCCONF_SERVER_SERVER_SSL_KEY_FILE=/kopano/ssl/kopano_server.pem | ||||||
|  |       - KCCONF_SERVER_SERVER_SSL_CA_FILE=/kopano/ssl/ca.pem | ||||||
|  |       - KCCONF_SERVER_SERVER_NAME=Kopano | ||||||
|  |       - KCCONF_SERVER_SSLKEYS_PATH=/kopano/ssl/clients | ||||||
|  |       - KCCONF_SERVER_PROXY_HEADER=* # delete line if webapp is not behind reverse proxy | ||||||
|  |       - KCCONF_SERVER_SYSTEM_EMAIL_ADDRESS=${POSTMASTER_ADDRESS} | ||||||
|  |       - KCCONF_SERVER_SYNC_GAB_REALTIME=no | ||||||
|  |       - KCCONF_LDAP_LDAP_URI=${LDAP_SERVER} | ||||||
|  |       - KCCONF_LDAP_LDAP_BIND_USER=${LDAP_BIND_DN} | ||||||
|  |       - KCCONF_LDAP_LDAP_BIND_PASSWD=${LDAP_BIND_PW} | ||||||
|  |       - KCCONF_LDAP_LDAP_SEARCH_BASE=${LDAP_SEARCH_BASE} | ||||||
|  |       - KCUNCOMMENT_LDAP_1=${KCUNCOMMENT_LDAP_1} | ||||||
|  |       - KCCOMMENT_LDAP_1=${KCCOMMENT_LDAP_1} | ||||||
|  |       - ADDITIONAL_KOPANO_PACKAGES=${ADDITIONAL_KOPANO_PACKAGES} | ||||||
|  |     networks: | ||||||
|  |       - kopano-net | ||||||
|  |       - ldap-net | ||||||
|  |       - web-net | ||||||
|  |     volumes: | ||||||
|  |       - kopanodata/:/kopano/data | ||||||
|  |       - /etc/kopano/ssl/:/kopano/ssl | ||||||
|  |       - /run/kopano/:/run/kopano | ||||||
|  | 
 | ||||||
|  | volumes: | ||||||
|  |   ldap: | ||||||
|  |   slapd: | ||||||
|  |   mysql: | ||||||
|  |   kopanodata: | ||||||
|  | 
 | ||||||
|  | networks: | ||||||
|  |   web-net: | ||||||
|  |   kopano-net: | ||||||
|  |     driver: bridge | ||||||
|  |   ldap-net: | ||||||
|  |     name: ldap-net | ||||||
|  |     driver: bridge | ||||||
							
								
								
									
										8
									
								
								examples/meet-kopano.env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								examples/meet-kopano.env
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | FQDN=kopano.demo:2015 | ||||||
|  | FQDNCLEANED=kopano-demo | ||||||
|  | INSECURE=yes | ||||||
|  | TZ=Europe/Berlin | ||||||
|  | HTTP=10080 | ||||||
|  | HTTPS=10443 | ||||||
|  | 
 | ||||||
|  | # TODO add reverse proxy example, make sure that requests go through reverse proxy | ||||||
							
								
								
									
										113
									
								
								examples/meet-kopano.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								examples/meet-kopano.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,113 @@ | |||||||
|  | version: "3.5" | ||||||
|  | 
 | ||||||
|  | services: | ||||||
|  |   web: | ||||||
|  |     image: ${docker_repo:-zokradonh}/kopano_web | ||||||
|  |     container_name: web | ||||||
|  |     restart: always | ||||||
|  |     ports: | ||||||
|  |       - "2015:2015" | ||||||
|  |       - "${HTTP:-80}:80" | ||||||
|  |       - "${HTTPS:-443}:443" | ||||||
|  |     environment: | ||||||
|  |       - EMAIL=${EMAIL:-off} | ||||||
|  |       - FQDN=${FQDN?err} | ||||||
|  |     command: wrapper.sh | ||||||
|  |     cap_drop: | ||||||
|  |      - ALL | ||||||
|  |     cap_add: | ||||||
|  |      - NET_BIND_SERVICE | ||||||
|  |      - CHOWN | ||||||
|  |      - SETGID | ||||||
|  |      - SETUID | ||||||
|  |     volumes: | ||||||
|  |       - web:/.kweb | ||||||
|  |     networks: | ||||||
|  |       web-net: | ||||||
|  |         aliases: | ||||||
|  |          - ${FQDNCLEANED?err} | ||||||
|  | 
 | ||||||
|  |   kopano_ssl: | ||||||
|  |     image: ${docker_repo:-zokradonh}/kopano_ssl | ||||||
|  |     container_name: kopano_ssl | ||||||
|  |     environment: | ||||||
|  |       - FQDN=${FQDN} | ||||||
|  |       - PKI_COUNTRY=NL | ||||||
|  |     volumes: | ||||||
|  |       - /etc/kopano/ssl/:/kopano/ssl | ||||||
|  | 
 | ||||||
|  |   kopano_grapi: | ||||||
|  |     image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest} | ||||||
|  |     container_name: kopano_grapi | ||||||
|  |     volumes: | ||||||
|  |       - /run/kopano:/run/kopano | ||||||
|  |     environment: | ||||||
|  |       - SERVICE_TO_START=grapi | ||||||
|  |       - TZ=${TZ} | ||||||
|  |     networks: | ||||||
|  |       - kopano-net | ||||||
|  | 
 | ||||||
|  |   kopano_kapi: | ||||||
|  |     image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest} | ||||||
|  |     container_name: kopano_kapi | ||||||
|  |     depends_on: | ||||||
|  |       - kopano_grapi | ||||||
|  |     volumes: | ||||||
|  |       - /etc/kopano/ssl:/kopano/ssl | ||||||
|  |       - /run/kopano:/run/kopano | ||||||
|  |     environment: | ||||||
|  |       - SERVICE_TO_START=kapid | ||||||
|  |       - TZ=${TZ} | ||||||
|  |       - KCCONF_KAPID_LOG_LEVEL=DEBUG | ||||||
|  |       - KCCONF_KAPID_OIDC_ISSUER_IDENTIFIER=https://${FQDN} | ||||||
|  |       - KCCONF_KAPID_INSECURE=${INSECURE} | ||||||
|  |     networks: | ||||||
|  |       - kopano-net | ||||||
|  |       - web-net | ||||||
|  | 
 | ||||||
|  |   kopano_konnect: | ||||||
|  |     image: ${docker_repo:-zokradonh}/kopano_konnect:${KONNECT_VERSION:-latest} | ||||||
|  |     container_name: kopano_konnect | ||||||
|  |     command: wrapper.sh | ||||||
|  |     volumes: | ||||||
|  |       - /etc/kopano/ssl:/kopano/ssl | ||||||
|  |       - /run/kopano:/run/kopano | ||||||
|  |     environment: | ||||||
|  |      - FQDN=${FQDN} | ||||||
|  |     networks: | ||||||
|  |      - web-net | ||||||
|  | 
 | ||||||
|  |   kopano_kwmserver: | ||||||
|  |     image: ${docker_repo:-zokradonh}/kopano_kwmserver:${KWM_VERSION:-latest} | ||||||
|  |     container_name: kopano_kwmserver | ||||||
|  |     command: wrapper.sh | ||||||
|  |     environment: | ||||||
|  |      - INSECURE=${INSECURE} | ||||||
|  |      - oidc_issuer_identifier=https://${FQDN} | ||||||
|  |     volumes: | ||||||
|  |       - /etc/kopano/ssl:/kopano/ssl | ||||||
|  |     networks: | ||||||
|  |      - web-net | ||||||
|  | 
 | ||||||
|  |   kopano_meet: | ||||||
|  |     image: ${docker_repo:-zokradonh}/kopano_meet:${MEET_VERSION:-latest} | ||||||
|  |     container_name: kopano_meet | ||||||
|  |     environment: | ||||||
|  |      - SERVICE_TO_START=meet | ||||||
|  |      - KCCONF_KWEBD_TLS=no | ||||||
|  |     depends_on: | ||||||
|  |      - kopano_kapi | ||||||
|  |      - kopano_konnect | ||||||
|  |      - kopano_kwmserver | ||||||
|  |      - web | ||||||
|  |     networks: | ||||||
|  |      - web-net | ||||||
|  | 
 | ||||||
|  | volumes: | ||||||
|  |   web: | ||||||
|  |   kopanossl: | ||||||
|  | 
 | ||||||
|  | networks: | ||||||
|  |   web-net: | ||||||
|  |   kopano-net: | ||||||
|  |     driver: bridge | ||||||
| @ -2,24 +2,33 @@ version: "3.5" | |||||||
| 
 | 
 | ||||||
| services: | services: | ||||||
|   web: |   web: | ||||||
|     image: ${docker_repo:?err}/kopano_web |     image: ${docker_repo:-zokradonh}/kopano_web | ||||||
|     container_name: web |     container_name: web | ||||||
|     restart: always |     restart: always | ||||||
|     ports: |     ports: | ||||||
|       - "2015:2015" |       - "2015:2015" | ||||||
|       - "${HTTP}:8080" |       - "${HTTP}:80" | ||||||
|       - "${HTTPS}:8443" |       - "${HTTPS}:443" | ||||||
|     environment: |     environment: | ||||||
|       - EMAIL=${EMAIL} |       - EMAIL=${EMAIL} | ||||||
|       - FQDN=${FQDN} |       - FQDN=${FQDN} | ||||||
|     command: wrapper.sh |     command: wrapper.sh | ||||||
|  |     cap_drop: | ||||||
|  |      - ALL | ||||||
|  |     cap_add: | ||||||
|  |      - NET_BIND_SERVICE | ||||||
|  |      - CHOWN | ||||||
|  |      - SETGID | ||||||
|  |      - SETUID | ||||||
|     volumes: |     volumes: | ||||||
|       - web:/.kweb |       - web:/.kweb | ||||||
|     networks: |     networks: | ||||||
|       - web-net |       web-net: | ||||||
|  |         aliases: | ||||||
|  |          - ${FQDN} | ||||||
| 
 | 
 | ||||||
|   kopano_webapp: |   kopano_webapp: | ||||||
|     image: ${docker_repo:?err}/kopano_webapp:${WEBAPP_VERSION} |     image: ${docker_repo:-zokradonh}/kopano_webapp:${WEBAPP_VERSION:-latest} | ||||||
|     hostname: kopano_webapp |     hostname: kopano_webapp | ||||||
|     container_name: kopano_webapp |     container_name: kopano_webapp | ||||||
|     volumes: |     volumes: | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								setup.sh
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								setup.sh
									
									
									
									
									
								
							| @ -114,7 +114,9 @@ if [ ! -e ./.env ]; then | |||||||
| 	LDAP_ORGANISATION=${new_value:-$value_default} | 	LDAP_ORGANISATION=${new_value:-$value_default} | ||||||
| 
 | 
 | ||||||
| 	value_default="kopano.demo" | 	value_default="kopano.demo" | ||||||
| 	read -p "FQDN to be used (for reverse proxy) [$value_default]: " new_value | 	read -p "FQDN to be used (for reverse proxy). | ||||||
|  | 	Tipp: use port 2015 in case port 443 is already in use on the system. | ||||||
|  | 	[$value_default]: " new_value | ||||||
| 	FQDN=${new_value:-$value_default} | 	FQDN=${new_value:-$value_default} | ||||||
| 
 | 
 | ||||||
| 	value_default="self_signed" | 	value_default="self_signed" | ||||||
| @ -307,10 +309,14 @@ TZ=$TZ | |||||||
| 
 | 
 | ||||||
| # Defines how Kopano can be accessed from the outside world | # Defines how Kopano can be accessed from the outside world | ||||||
| FQDN=$FQDN | FQDN=$FQDN | ||||||
|  | FQDNCLEANED=${FQDN%:*} | ||||||
| EMAIL=$EMAIL | EMAIL=$EMAIL | ||||||
| HTTP=80 | HTTP=80 | ||||||
| HTTPS=443 | HTTPS=443 | ||||||
| LDAPPORT=389 | LDAPPORT=389 | ||||||
|  | SMTPPORT=25 | ||||||
|  | KOPANOPORT=236 | ||||||
|  | KOPANOSPORT=237 | ||||||
| 
 | 
 | ||||||
| # Settings for test environments | # Settings for test environments | ||||||
| INSECURE=$INSECURE | INSECURE=$INSECURE | ||||||
|  | |||||||
							
								
								
									
										35
									
								
								ssl/start.sh
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								ssl/start.sh
									
									
									
									
									
								
							| @ -2,28 +2,37 @@ | |||||||
| 
 | 
 | ||||||
| mkdir -p /kopano/ssl/clients/ | mkdir -p /kopano/ssl/clients/ | ||||||
| 
 | 
 | ||||||
|  | set -euo pipefail | ||||||
|  | IFS=$'\n\t' | ||||||
|  | 
 | ||||||
|  | # clean out any potential port numbers | ||||||
|  | FQDN=${FQDN%:*} | ||||||
|  | 
 | ||||||
| if [ ! -f /kopano/ssl/ca.pem ]; then | if [ ! -f /kopano/ssl/ca.pem ]; then | ||||||
| 	# https://github.com/google/easypki | 	# https://github.com/google/easypki | ||||||
| 	echo "Creating CA and server certificates..." | 	echo "Creating CA certificate..." | ||||||
| 	easypki create --filename internalca --organizational-unit primary --expire 3650 --ca "Internal Kopano System" | 	easypki create --filename internalca --organizational-unit primary --expire 3650 --ca "Internal Kopano System" | ||||||
| 
 | 
 | ||||||
| 	for s in kserver kdagent kmonitor ksearch kspooler kwebapp; do | 	cp /kopano/easypki/internalca/certs/internalca.crt /kopano/ssl/ca.pem.tmp | ||||||
| 		easypki create --ca-name internalca --organizational-unit $s --expire 3650 $s | 	mv /kopano/ssl/ca.pem.tmp /kopano/ssl/ca.pem | ||||||
|  | 
 | ||||||
|  | 	for s in kopano_server kopano_dagent kopano_monitor kopano_search kopano_spooler kopano_webapp; do | ||||||
|  | 		if [ ! -f /kopano/ssl/$s.pem ]; then | ||||||
|  | 			echo "Creating $s certificate..." | ||||||
|  | 			easypki create --ca-name internalca --organizational-unit $s --expire 3650 --dns $s --dns $FQDN $s | ||||||
| 			cp /kopano/easypki/internalca/keys/$s.key /kopano/ssl/$s.pem.tmp | 			cp /kopano/easypki/internalca/keys/$s.key /kopano/ssl/$s.pem.tmp | ||||||
| 			cat /kopano/easypki/internalca/certs/$s.crt >> /kopano/ssl/$s.pem.tmp | 			cat /kopano/easypki/internalca/certs/$s.crt >> /kopano/ssl/$s.pem.tmp | ||||||
| 			openssl x509 -in /kopano/easypki/internalca/certs/$s.crt -pubkey -noout >  /kopano/ssl/clients/$s-public.pem.tmp | 			openssl x509 -in /kopano/easypki/internalca/certs/$s.crt -pubkey -noout >  /kopano/ssl/clients/$s-public.pem.tmp | ||||||
| 			mv /kopano/ssl/$s.pem.tmp /kopano/ssl/$s.pem | 			mv /kopano/ssl/$s.pem.tmp /kopano/ssl/$s.pem | ||||||
| 			mv /kopano/ssl/clients/$s-public.pem.tmp /kopano/ssl/clients/$s-public.pem | 			mv /kopano/ssl/clients/$s-public.pem.tmp /kopano/ssl/clients/$s-public.pem | ||||||
|  | 		fi | ||||||
| 	done | 	done | ||||||
| 
 |  | ||||||
| 	cp /kopano/easypki/internalca/certs/internalca.crt /kopano/ssl/ca.pem.tmp |  | ||||||
| 	mv /kopano/ssl/ca.pem.tmp /kopano/ssl/ca.pem |  | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # Konnect - create encryption key if not already present | # Konnect - create encryption key if not already present | ||||||
| enckey="/kopano/ssl/konnectd-encryption.key" | enckey="/kopano/ssl/konnectd-encryption.key" | ||||||
| if [ ! -f $enckey ]; then | if [ ! -f $enckey ]; then | ||||||
| 	echo "creating new encryption key" | 	echo "Creating Konnect encryption key..." | ||||||
| 	openssl rand -out $enckey.tmp 32 | 	openssl rand -out $enckey.tmp 32 | ||||||
| 	mv $enckey.tmp $enckey | 	mv $enckey.tmp $enckey | ||||||
| fi | fi | ||||||
| @ -31,8 +40,8 @@ fi | |||||||
| # Konnect - create token signing key if not already present | # Konnect - create token signing key if not already present | ||||||
| signkey="/kopano/ssl/konnectd-tokens-signing-key.pem" | signkey="/kopano/ssl/konnectd-tokens-signing-key.pem" | ||||||
| if [ ! -f $signkey ]; then | if [ ! -f $signkey ]; then | ||||||
| 	echo "creating new token signing key" | 	echo "Creating Konnect token signing key..." | ||||||
| 	openssl genpkey -algorithm RSA -out $signkey.tmp -pkeyopt rsa_keygen_bits:4096 | 	openssl genpkey -algorithm RSA -out $signkey.tmp -pkeyopt rsa_keygen_bits:4096 2&> /dev/null | ||||||
| 	chmod go+r $signkey.tmp | 	chmod go+r $signkey.tmp | ||||||
| 	mv $signkey.tmp $signkey | 	mv $signkey.tmp $signkey | ||||||
| fi | fi | ||||||
| @ -40,9 +49,13 @@ fi | |||||||
| # Kapi | # Kapi | ||||||
| secretkey="/kopano/ssl/kapid-pubs-secret.key" | secretkey="/kopano/ssl/kapid-pubs-secret.key" | ||||||
| if [ ! -f $secretkey ]; then | if [ ! -f $secretkey ]; then | ||||||
|  | 	echo "Creating Kapi secret key..." | ||||||
| 	openssl rand -out $secretkey.tmp -hex 64 | 	openssl rand -out $secretkey.tmp -hex 64 | ||||||
| 	mv $secretkey.tmp $secretkey | 	mv $secretkey.tmp $secretkey | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| ls -l /kopano/ssl/*.pem | echo "SSL certs:" | ||||||
| ls -l /kopano/ssl/*.key | ls -l /kopano/ssl/*.* | ||||||
|  | 
 | ||||||
|  | echo "Client public keys:" | ||||||
|  | ls -l /kopano/ssl/clients/* | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user