Page MenuHomePhorge

No OneTemporary

diff --git a/Makefile b/Makefile
index 391e6369..5a62ef02 100644
--- a/Makefile
+++ b/Makefile
@@ -1,30 +1,33 @@
demo:
bin/configure.sh config.demo
bin/quickstart.sh
src/artisan user:assign-sku john@kolab.org beta
prod:
env KOLAB_GIT_REF=dev/mollekopf HOST=kolab.local ADMIN_PASSWORD="simple123" bin/configure.sh config.prod
env ADMIN_PASSWORD="simple123" bin/deploy.sh
+dev:
+ env KOLAB_GIT_REF=dev/mollekopf HOST=kolab.local ADMIN_PASSWORD="simple123" bin/configure.sh config.docker-dev
+ env ADMIN_PASSWORD="simple123" bin/deploy.sh
quickstart:
bin/quickstart.sh
deploy:
env ADMIN_PASSWORD="simple123" bin/deploy.sh
octane:
src/artisan octane:start --host=(grep OCTANE_HTTP_HOST .env | tail -n1 | sed "s/OCTANE_HTTP_HOST=//")
httprestart:
src/artisan octane:stop || true
src/artisan octane:start --watch --host=$$(grep OCTANE_HTTP_HOST .env | tail -n1 | sed "s/OCTANE_HTTP_HOST=//")
taillog:
tail -f $$(ls src/storage/logs/laravel-* | sort | tail -1)
lint:
src/phpcs
shell:
docker exec -ti -w /src/kolabsrc/ kolab-webapp /bin/bash
db:
docker exec -ti kolab-mariadb /bin/bash -c "mysql -h 127.0.0.1 -u root --password=$$(grep DB_ROOT_PASSWORD .env | tail -n1 | sed "s/DB_ROOT_PASSWORD=//") kolabdev"
refresh-meet:
docker exec -ti kolab-meet /bin/bash -c "/bin/cp -rf /src/meet/* /src/meetsrc/"
refresh-webapp:
docker exec -ti kolab-webapp /update.sh
ci-shell:
cd ci && make shell
diff --git a/README.md b/README.md
index 5eeddf16..955a0e10 100644
--- a/README.md
+++ b/README.md
@@ -1,41 +1,50 @@
## Quickstart Instructions to try it out
* Make sure you have docker and docker-compose available.
* Change to the base directory of this repository.
* Run 'HOST=kolab.local ADMIN_PASSWORD="simple123" bin/configure.sh config.prod' to configure this deployment.
* Run 'env ADMIN_PASSWORD="simple123" bin/deploy.sh' to start the deployment.
* Add an /etc/hosts entry "127.0.0.1 kolab.local"
* navigate to https://kolab.local
* login as "admin@kolab.local" with password "simple123" (or whatever you have set), and create your users.
# Customization
To customize the installation, copy config.prod and adjust to your liking. You can then install the configuration using 'bin/configure.sh $YOURCONFIG',
and afterwards 'bin/deploy.sh' again.
Please note that bin/deploy.sh will remove any existing data.
+## Alternative configurations
+
+Everything but config.prod is for development or demo purposes:
+* config.dev: Run only dependencies in docker with ports exposed, and expect kolab4 to be run locally.
+* config.docker-dev: A development environment with everything running in docker. Includes a cyrus-murder.
+* config.demo: A docker environment with demo data included.
+* config.prod: A docker environment with just an admin account prepared. A starting point for a production environment.
+
+
# Use the ansible setup
The ansible/ directory contains setup scripts to setup a fresh Fedora system with a kolab deployment.
Modify the Makefile with the required variables and then execute `make setup`.
This will configure the remote system and execute the above steps.
### Update
To update the containers without removing the data:
* git pull
* Run "bin/update.sh"
### Backup / Restore
The "bin/backup.sh" script will stop all containers, snapshot the volumes to the backup/ directory, and restart the containers.
"bin/restore.sh" will stop all containers, restore the volumes from tarballs in the backup/ directory, and restart the containers.
### Requirements
* docker
* openssl
diff --git a/bin/quickstart.sh b/bin/quickstart.sh
index 57eb64b5..e16fbad3 100755
--- a/bin/quickstart.sh
+++ b/bin/quickstart.sh
@@ -1,136 +1,142 @@
#!/bin/bash
set -e
function die() {
echo "$1"
exit 1
}
rpm -qv docker-compose >/dev/null 2>&1 || \
test ! -z "$(which docker-compose 2>/dev/null)" || \
die "Is docker-compose installed?"
test ! -z "$(grep 'systemd.unified_cgroup_hierarchy=0' /proc/cmdline)" || \
die "systemd containers only work with cgroupv1 (use 'grubby --update-kernel=ALL --args=\"systemd.unified_cgroup_hierarchy=0\"' and a reboot to fix)"
base_dir=$(dirname $(dirname $0))
export DOCKER_BUILDKIT=0
docker-compose down -t 1 --remove-orphans
docker volume rm kolab_mariadb || :
docker volume rm kolab_imap || :
docker volume rm kolab_ldap || :
docker volume rm kolab_minio || :
# We can't use the following artisan commands because it will just block if redis is unavailable:
# src/artisan octane:stop >/dev/null 2>&1 || :
# src/artisan horizon:terminate >/dev/null 2>&1 || :
# we therefore just kill all artisan processes running.
pkill -9 -f artisan || :
pkill -9 -f swoole || :
bin/regen-certs
-
-docker-compose -f docker-compose.yml -f docker-compose.imap-murder.yml build imap-frontend imap-backend imap-mupdate
+
+# Build the murder setup if configured
+if grep -q "imap-frontend" docker-compose.override.yml; then
+ docker-compose build imap-frontend imap-backend imap-mupdate
+fi
+
docker-compose build coturn ldap kolab mariadb meet pdns proxy redis haproxy roundcube
-docker-compose -f docker-compose.yml -f docker-compose.imap-murder.yml up -d imap-frontend imap-backend imap-mupdate
+if grep -q "imap-frontend" docker-compose.override.yml; then
+ docker-compose up -d imap-frontend imap-backend imap-mupdate
+fi
docker-compose up -d coturn ldap kolab mariadb meet pdns redis roundcube minio
# Workaround until we have docker-compose --wait (https://github.com/docker/compose/pull/8777)
function wait_for_container {
container_id="$1"
container_name="$(docker inspect "${container_id}" --format '{{ .Name }}')"
echo "Waiting for container: ${container_name} [${container_id}]"
waiting_done="false"
while [[ "${waiting_done}" != "true" ]]; do
container_state="$(docker inspect "${container_id}" --format '{{ .State.Status }}')"
if [[ "${container_state}" == "running" ]]; then
health_status="$(docker inspect "${container_id}" --format '{{ .State.Health.Status }}')"
echo "${container_name}: container_state=${container_state}, health_status=${health_status}"
if [[ ${health_status} == "healthy" ]]; then
waiting_done="true"
fi
else
echo "${container_name}: container_state=${container_state}"
waiting_done="true"
fi
sleep 1;
done;
}
if [ "$1" == "--nodev" ]; then
echo "starting everything in containers"
docker-compose -f docker-compose.build.yml build swoole
docker-compose build webapp
docker-compose up -d webapp
wait_for_container 'kolab-webapp'
docker-compose up --no-deps -d proxy haproxy
exit 0
fi
echo "Starting the development environment"
rpm -qv composer >/dev/null 2>&1 || \
test ! -z "$(which composer 2>/dev/null)" || \
die "Is composer installed?"
rpm -qv npm >/dev/null 2>&1 || \
test ! -z "$(which npm 2>/dev/null)" || \
die "Is npm installed?"
rpm -qv php >/dev/null 2>&1 || \
test ! -z "$(which php 2>/dev/null)" || \
die "Is php installed?"
rpm -qv php-ldap >/dev/null 2>&1 || \
test ! -z "$(php --ini | grep ldap)" || \
die "Is php-ldap installed?"
rpm -qv php-mysqlnd >/dev/null 2>&1 || \
test ! -z "$(php --ini | grep mysql)" || \
die "Is php-mysqlnd installed?"
test ! -z "$(php --modules | grep swoole)" || \
die "Is swoole installed?"
# Ensure the containers we depend on are fully started
wait_for_container 'kolab'
wait_for_container 'kolab-redis'
pushd ${base_dir}/src/
rm -rf vendor/ composer.lock
php -dmemory_limit=-1 $(which composer) install
npm install
find bootstrap/cache/ -type f ! -name ".gitignore" -delete
./artisan key:generate
./artisan clear-compiled
./artisan cache:clear
./artisan horizon:install
if rpm -qv chromium 2>/dev/null; then
chver=$(rpmquery --queryformat="%{VERSION}" chromium | awk -F'.' '{print $1}')
./artisan dusk:chrome-driver ${chver}
fi
if [ ! -f 'resources/countries.php' ]; then
./artisan data:countries
fi
npm run dev
popd
pushd ${base_dir}/src/
rm -rf database/database.sqlite
./artisan db:ping --wait
php -dmemory_limit=512M ./artisan migrate:refresh --seed
./artisan data:import || :
nohup ./artisan octane:start --host=$(grep OCTANE_HTTP_HOST .env | tail -n1 | sed "s/OCTANE_HTTP_HOST=//") > octane.out &
nohup ./artisan horizon > horizon.out &
popd
docker-compose up --no-deps -d proxy haproxy
diff --git a/config.docker-dev/docker-compose.override.yml b/config.docker-dev/docker-compose.override.yml
new file mode 100644
index 00000000..cf76dd87
--- /dev/null
+++ b/config.docker-dev/docker-compose.override.yml
@@ -0,0 +1,224 @@
+version: '3'
+services:
+ haproxy:
+ depends_on:
+ proxy:
+ condition: service_healthy
+ proxy:
+ depends_on:
+ kolab:
+ condition: service_healthy
+ webapp:
+ condition: service_healthy
+ build:
+ context: ./docker/proxy/
+ args:
+ APP_WEBSITE_DOMAIN: ${APP_WEBSITE_DOMAIN:?err}
+ SSL_CERTIFICATE: ${PROXY_SSL_CERTIFICATE:?err}
+ SSL_CERTIFICATE_KEY: ${PROXY_SSL_CERTIFICATE_KEY:?err}
+ healthcheck:
+ interval: 10s
+ test: "kill -0 $$(cat /run/nginx.pid)"
+ timeout: 5s
+ retries: 30
+ container_name: kolab-proxy
+ restart: on-failure
+ hostname: proxy
+ image: kolab-proxy
+ extra_hosts:
+ - "meet:${MEET_LISTENING_HOST}"
+ networks:
+ kolab:
+ ipv4_address: 172.18.0.7
+ tmpfs:
+ - /run
+ - /tmp
+ - /var/run
+ - /var/tmp
+ tty: true
+ volumes:
+ - ./docker/certs/:/etc/certs/:ro
+ - /etc/letsencrypt/:/etc/letsencrypt/:ro
+ ports:
+ # - "80:80"
+ - "443:443"
+ - "465:465"
+ - "587:587"
+ - "143:143"
+ - "993:993"
+ imap-legacy:
+ build:
+ context: ./docker/imap-legacy/
+ args:
+ IMAP_ADMIN_LOGIN: ${IMAP_ADMIN_LOGIN}
+ IMAP_ADMIN_PASSWORD: ${IMAP_ADMIN_PASSWORD}
+ container_name: imap-legacy
+ privileged: true
+ depends_on:
+ pdns:
+ condition: service_healthy
+ # This makes docker's dns, resolve via pdns for this container.
+ # Please note it does not affect /etc/resolv.conf
+ dns: 172.18.0.11
+ image: imap-legacy
+ extra_hosts:
+ - "services.${APP_DOMAIN}:172.18.0.4"
+ networks:
+ kolab:
+ ipv4_address: 172.18.0.19
+ ports:
+ - "9993:993"
+ - "9143:143"
+ tmpfs:
+ - /run
+ - /tmp
+ - /var/run
+ - /var/tmp
+ tty: true
+ volumes:
+ - /etc/letsencrypt/:/etc/letsencrypt/:ro
+ - ./docker/certs/ca.cert:/etc/pki/tls/certs/ca.cert:ro
+ - ./docker/certs/ca.cert:/etc/pki/ca-trust/source/anchors/ca.cert:ro
+ - ./docker/certs/kolab.hosted.com.cert:${KOLAB_SSL_CERTIFICATE:?err}
+ - ./docker/certs/kolab.hosted.com.chain.pem:${KOLAB_SSL_CERTIFICATE_FULLCHAIN:?err}
+ - ./docker/certs/kolab.hosted.com.key:${KOLAB_SSL_CERTIFICATE_KEY:?err}
+ - ./docker/kolab/utils:/root/utils:ro
+ - /sys/fs/cgroup:/sys/fs/cgroup:ro
+ imap-backend:
+ build:
+ context: ./docker/imap-backend/
+ args:
+ IMAP_ADMIN_LOGIN: ${IMAP_ADMIN_LOGIN}
+ IMAP_ADMIN_PASSWORD: ${IMAP_ADMIN_PASSWORD}
+ container_name: imap-backend
+ privileged: true
+ depends_on:
+ pdns:
+ condition: service_healthy
+ imap-mupdate:
+ condition: service_healthy
+ # This makes docker's dns, resolve via pdns for this container.
+ # Please note it does not affect /etc/resolv.conf
+ dns: 172.18.0.11
+ healthcheck:
+ interval: 10s
+ test: "systemctl status cyrus-imapd || exit 1"
+ timeout: 5s
+ retries: 30
+ image: imap-backend
+ extra_hosts:
+ - "services.${APP_DOMAIN}:172.18.0.4"
+ networks:
+ kolab:
+ ipv4_address: 172.18.0.20
+ ports:
+ - "8993:993"
+ - "8143:143"
+ - "8080:80"
+ - "8443:443"
+ tmpfs:
+ - /run
+ - /tmp
+ - /var/run
+ - /var/tmp
+ tty: true
+ volumes:
+ - /etc/letsencrypt/:/etc/letsencrypt/:ro
+ - ./docker/certs/ca.cert:/etc/pki/tls/certs/ca.cert:ro
+ - ./docker/certs/ca.cert:/etc/pki/ca-trust/source/anchors/ca.cert:ro
+ - ./docker/certs/kolab.hosted.com.cert:${KOLAB_SSL_CERTIFICATE:?err}
+ - ./docker/certs/kolab.hosted.com.chain.pem:${KOLAB_SSL_CERTIFICATE_FULLCHAIN:?err}
+ - ./docker/certs/kolab.hosted.com.key:${KOLAB_SSL_CERTIFICATE_KEY:?err}
+ - ./docker/kolab/utils:/root/utils:ro
+ - /sys/fs/cgroup:/sys/fs/cgroup:ro
+ - /home/mollekopf/src/cyrus-imapd:/root/cyrus-imapd
+ imap-frontend:
+ build:
+ context: ./docker/imap-frontend/
+ args:
+ IMAP_ADMIN_LOGIN: ${IMAP_ADMIN_LOGIN}
+ IMAP_ADMIN_PASSWORD: ${IMAP_ADMIN_PASSWORD}
+ container_name: imap-frontend
+ privileged: true
+ depends_on:
+ pdns:
+ condition: service_healthy
+ # This makes docker's dns, resolve via pdns for this container.
+ # Please note it does not affect /etc/resolv.conf
+ dns: 172.18.0.11
+ healthcheck:
+ interval: 10s
+ test: "systemctl status cyrus-imapd || exit 1"
+ timeout: 5s
+ retries: 30
+ image: imap-frontend
+ extra_hosts:
+ - "services.${APP_DOMAIN}:172.18.0.4"
+ # Somehow necessary for caldav because it connects to the backend not via imap-backend but the full hostname imap.backend.${APP_DOMAIN}
+ - "imap-backend.${APP_DOMAIN}:172.18.0.20"
+ - "imap-frontend.${APP_DOMAIN}:172.18.0.21"
+ networks:
+ kolab:
+ ipv4_address: 172.18.0.21
+ ports:
+ - "7993:993"
+ - "7143:143"
+ - "7080:80"
+ - "7443:443"
+ tmpfs:
+ - /run
+ - /tmp
+ - /var/run
+ - /var/tmp
+ tty: true
+ volumes:
+ - /etc/letsencrypt/:/etc/letsencrypt/:ro
+ - ./docker/certs/ca.cert:/etc/pki/tls/certs/ca.cert:ro
+ - ./docker/certs/ca.cert:/etc/pki/ca-trust/source/anchors/ca.cert:ro
+ - ./docker/certs/kolab.hosted.com.cert:${KOLAB_SSL_CERTIFICATE:?err}
+ - ./docker/certs/kolab.hosted.com.chain.pem:${KOLAB_SSL_CERTIFICATE_FULLCHAIN:?err}
+ - ./docker/certs/kolab.hosted.com.key:${KOLAB_SSL_CERTIFICATE_KEY:?err}
+ - ./docker/kolab/utils:/root/utils:ro
+ - /sys/fs/cgroup:/sys/fs/cgroup:ro
+ - /home/mollekopf/src/cyrus-imapd:/root/cyrus-imapd
+ imap-mupdate:
+ build:
+ context: ./docker/imap-mupdate/
+ args:
+ IMAP_ADMIN_LOGIN: ${IMAP_ADMIN_LOGIN}
+ IMAP_ADMIN_PASSWORD: ${IMAP_ADMIN_PASSWORD}
+ container_name: imap-mupdate
+ privileged: true
+ depends_on:
+ pdns:
+ condition: service_healthy
+ # This makes docker's dns, resolve via pdns for this container.
+ # Please note it does not affect /etc/resolv.conf
+ dns: 172.18.0.11
+ healthcheck:
+ interval: 10s
+ test: "systemctl status cyrus-imapd || exit 1"
+ timeout: 5s
+ retries: 30
+ image: imap-mupdate
+ extra_hosts:
+ - "services.${APP_DOMAIN}:172.18.0.4"
+ networks:
+ kolab:
+ ipv4_address: 172.18.0.22
+ tmpfs:
+ - /run
+ - /tmp
+ - /var/run
+ - /var/tmp
+ tty: true
+ volumes:
+ - /etc/letsencrypt/:/etc/letsencrypt/:ro
+ - ./docker/certs/ca.cert:/etc/pki/tls/certs/ca.cert:ro
+ - ./docker/certs/ca.cert:/etc/pki/ca-trust/source/anchors/ca.cert:ro
+ - ./docker/certs/kolab.hosted.com.cert:${KOLAB_SSL_CERTIFICATE:?err}
+ - ./docker/certs/kolab.hosted.com.chain.pem:${KOLAB_SSL_CERTIFICATE_FULLCHAIN:?err}
+ - ./docker/certs/kolab.hosted.com.key:${KOLAB_SSL_CERTIFICATE_KEY:?err}
+ - ./docker/kolab/utils:/root/utils:ro
+ - /sys/fs/cgroup:/sys/fs/cgroup:ro
+ - /home/mollekopf/src/cyrus-imapd:/root/cyrus-imapd
diff --git a/config.docker-dev/src/.env b/config.docker-dev/src/.env
new file mode 100644
index 00000000..c5650560
--- /dev/null
+++ b/config.docker-dev/src/.env
@@ -0,0 +1,174 @@
+APP_NAME=Kolab
+APP_ENV=local
+APP_KEY=
+APP_DEBUG=true
+APP_URL=https://{{ host }}
+APP_PASSPHRASE=simple123
+APP_PUBLIC_URL=https://{{ host }}
+APP_DOMAIN={{ host }}
+APP_WEBSITE_DOMAIN={{ host }}
+APP_THEME=default
+APP_TENANT_ID=5
+APP_LOCALE=en
+APP_LOCALES=
+
+APP_WITH_ADMIN=1
+APP_WITH_RESELLER=1
+APP_WITH_SERVICES=1
+APP_WITH_FILES=1
+
+APP_LDAP=1
+APP_IMAP=1
+
+APP_HEADER_CSP="connect-src 'self'; child-src 'self'; font-src 'self'; form-action 'self' data:; frame-ancestors 'self'; img-src blob: data: 'self' *; media-src 'self'; object-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-eval' 'unsafe-inline'; default-src 'self';"
+APP_HEADER_XFO=sameorigin
+
+SIGNUP_LIMIT_EMAIL=0
+SIGNUP_LIMIT_IP=0
+
+ASSET_URL=https://{{ host }}
+
+WEBMAIL_URL=/roundcubemail/
+SUPPORT_URL=/support
+SUPPORT_EMAIL=support@example.com
+
+LOG_CHANNEL=stdout
+LOG_SLOW_REQUESTS=5
+LOG_DEPRECATIONS_CHANNEL=null
+LOG_LEVEL=debug
+
+DB_CONNECTION=mysql
+DB_DATABASE=kolabdev
+DB_HOST=mariadb
+DB_PASSWORD=kolab
+DB_ROOT_PASSWORD=Welcome2KolabSystems
+DB_PORT=3306
+DB_USERNAME=kolabdev
+
+BROADCAST_DRIVER=redis
+CACHE_DRIVER=redis
+
+QUEUE_CONNECTION=redis
+
+SESSION_DRIVER=file
+SESSION_LIFETIME=120
+
+OPENEXCHANGERATES_API_KEY="from openexchangerates.org"
+
+MFA_DSN=mysql://roundcube:kolab@mariadb/roundcube
+MFA_TOTP_DIGITS=6
+MFA_TOTP_INTERVAL=30
+MFA_TOTP_DIGEST=sha1
+
+IMAP_URI=ssl://imap-frontend:993
+IMAP_HOST=172.18.0.21
+IMAP_PORT=143
+IMAP_ADMIN_LOGIN=cyrus-admin
+IMAP_ADMIN_PASSWORD=Welcome2KolabSystems
+IMAP_VERIFY_HOST=false
+IMAP_VERIFY_PEER=false
+
+LDAP_BASE_DN="dc=mgmt,dc=com"
+LDAP_DOMAIN_BASE_DN="ou=Domains,dc=mgmt,dc=com"
+LDAP_HOSTS=ldap
+LDAP_PORT=389
+LDAP_SERVICE_BIND_DN="uid=kolab-service,ou=Special Users,dc=mgmt,dc=com"
+LDAP_SERVICE_BIND_PW="Welcome2KolabSystems"
+LDAP_USE_SSL=false
+LDAP_USE_TLS=false
+
+# Administrative
+LDAP_ADMIN_BIND_DN="cn=Directory Manager"
+LDAP_ADMIN_BIND_PW="Welcome2KolabSystems"
+LDAP_ADMIN_ROOT_DN="dc=mgmt,dc=com"
+
+# Hosted (public registration)
+LDAP_HOSTED_BIND_DN="uid=hosted-kolab-service,ou=Special Users,dc=mgmt,dc=com"
+LDAP_HOSTED_BIND_PW="Welcome2KolabSystems"
+LDAP_HOSTED_ROOT_DN="dc=hosted,dc=com"
+
+COTURN_PUBLIC_IP='{{ public_ip }}'
+COTURN_STATIC_SECRET="Welcome2KolabSystems"
+
+MEET_WEBHOOK_TOKEN=Welcome2KolabSystems
+MEET_SERVER_TOKEN=Welcome2KolabSystems
+MEET_SERVER_URLS=https://{{ host }}/meetmedia/api/
+MEET_SERVER_VERIFY_TLS=false
+
+MEET_WEBRTC_LISTEN_IP='172.18.0.1'
+MEET_PUBLIC_DOMAIN={{ host }}
+MEET_TURN_SERVER='turn:172.18.0.1:3478'
+MEET_LISTENING_HOST=172.18.0.1
+
+PGP_ENABLE=true
+PGP_BINARY=/usr/bin/gpg
+PGP_AGENT=/usr/bin/gpg-agent
+PGP_GPGCONF=/usr/bin/gpgconf
+PGP_LENGTH=
+
+# Set these to IP addresses you serve WOAT with.
+# Have the domain owner point _woat.<hosted-domain> NS RRs refer to ns0{1,2}.<provider-domain>
+WOAT_NS1=ns01.domain.tld
+WOAT_NS2=ns02.domain.tld
+
+REDIS_HOST=redis
+REDIS_PASSWORD=null
+REDIS_PORT=6379
+
+OCTANE_HTTP_HOST=0.0.0.0
+SWOOLE_PACKAGE_MAX_LENGTH=10485760
+
+PAYMENT_PROVIDER=
+
+MAIL_DRIVER=log
+MAIL_MAILER=smtp
+MAIL_HOST=smtp.mailtrap.io
+MAIL_PORT=2525
+MAIL_USERNAME=null
+MAIL_PASSWORD=null
+MAIL_ENCRYPTION=null
+MAIL_FROM_ADDRESS="noreply@example.com"
+MAIL_FROM_NAME="Example.com"
+MAIL_REPLYTO_ADDRESS="replyto@example.com"
+MAIL_REPLYTO_NAME=null
+
+DNS_TTL=3600
+DNS_SPF="v=spf1 mx -all"
+DNS_STATIC="%s. MX 10 ext-mx01.mykolab.com."
+DNS_COPY_FROM=null
+
+COMPANY_NAME=kolab.org
+
+VAT_COUNTRIES=CH,LI
+VAT_RATE=7.7
+
+KB_ACCOUNT_DELETE=
+KB_ACCOUNT_SUSPENDED=
+KB_PAYMENT_SYSTEM=
+
+KOLAB_SSL_CERTIFICATE=/etc/pki/tls/certs/kolab.hosted.com.cert
+KOLAB_SSL_CERTIFICATE_FULLCHAIN=/etc/pki/tls/certs/kolab.hosted.com.chain.pem
+KOLAB_SSL_CERTIFICATE_KEY=/etc/pki/tls/certs/kolab.hosted.com.key
+
+PROXY_SSL_CERTIFICATE=/etc/certs/imap.hosted.com.cert
+PROXY_SSL_CERTIFICATE_KEY=/etc/certs/imap.hosted.com.key
+
+APP_KEY=base64:FG6ECzyAMSmyX+eYwO/FW3bwnarbKkBhqtO65vlMb1E=
+COTURN_STATIC_SECRET=uzYguvIl9tpZFMuQOE78DpOi6Jc7VFSD0UAnvgMsg5n4e74MgIf6vQvbc6LWzZjz
+
+MOLLIE_KEY="from mollie"
+STRIPE_KEY="from stripe"
+STRIPE_PUBLIC_KEY="from stripe"
+STRIPE_WEBHOOK_SECRET="from stripe"
+
+OX_API_KEY="from openexchange"
+FIREBASE_API_KEY="from firebase"
+
+#Generated by php artisan passport:client --password, but can be left hardcoded (the seeder will pick it up)
+PASSPORT_PROXY_OAUTH_CLIENT_ID=942edef5-3dbd-4a14-8e3e-d5d59b727bee
+PASSPORT_PROXY_OAUTH_CLIENT_SECRET=L6L0n56ecvjjK0cJMjeeV1pPAeffUBO0YSSH63wf
+
+MINIO_USER=minio
+MINIO_PASSWORD=W3lcom32@ph3lia
+MINIO_BUCKET=kolab
+FILESYSTEM_DISK=minio
diff --git a/config.docker-dev/src/database b/config.docker-dev/src/database
new file mode 120000
index 00000000..0b1f88e7
--- /dev/null
+++ b/config.docker-dev/src/database
@@ -0,0 +1 @@
+../../config.prod/src/database/
\ No newline at end of file

File Metadata

Mime Type
text/x-diff
Expires
Tue, Jun 10, 9:21 AM (1 d, 13 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
197034
Default Alt Text
(20 KB)

Event Timeline