mirror of
https://github.com/zokradonh/kopano-docker
synced 2025-06-07 16:06:14 +00:00
Add support for meet guest mode and make meet configurable through env (#105)
* get settings for meet from env * prepare ssl container for device registration for konnect/kwmserver * move device registry modification to konnect container * enable WebApp in the app switcher * upstream docker container has been updated to alpine 3.9 * update konnect * add further config for guest mode * replace the check for the file with a check for konnect startup * fix kwmserver wrapper * add possibility to change logging in kwmserver
This commit is contained in:
parent
4e367badc5
commit
140506df7d
@ -427,8 +427,11 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- kopanossl/:/kopano/ssl
|
- kopanossl/:/kopano/ssl
|
||||||
- kopanosocket/:/run/kopano
|
- kopanosocket/:/run/kopano
|
||||||
|
depends_on:
|
||||||
|
- kopano_ssl
|
||||||
environment:
|
environment:
|
||||||
- FQDN=${FQDN}
|
- FQDN=${FQDN}
|
||||||
|
- allow_client_guests=yes
|
||||||
env_file:
|
env_file:
|
||||||
- kopano_konnect.env
|
- kopano_konnect.env
|
||||||
networks:
|
networks:
|
||||||
@ -438,6 +441,9 @@ services:
|
|||||||
kopano_playground:
|
kopano_playground:
|
||||||
image: ${docker_repo:-zokradonh}/kopano_playground
|
image: ${docker_repo:-zokradonh}/kopano_playground
|
||||||
container_name: kopano_playground
|
container_name: kopano_playground
|
||||||
|
depends_on:
|
||||||
|
- kopano_kapi
|
||||||
|
- kopano_konnect
|
||||||
networks:
|
networks:
|
||||||
- kopano-net
|
- kopano-net
|
||||||
- web-net
|
- web-net
|
||||||
@ -446,9 +452,14 @@ services:
|
|||||||
image: ${docker_repo:-zokradonh}/kopano_kwmserver:${KWM_VERSION:-latest}
|
image: ${docker_repo:-zokradonh}/kopano_kwmserver:${KWM_VERSION:-latest}
|
||||||
container_name: kopano_kwmserver
|
container_name: kopano_kwmserver
|
||||||
command: wrapper.sh
|
command: wrapper.sh
|
||||||
|
depends_on:
|
||||||
|
- kopano_kapi
|
||||||
|
- kopano_konnect
|
||||||
environment:
|
environment:
|
||||||
- INSECURE=${INSECURE}
|
- INSECURE=${INSECURE}
|
||||||
- oidc_issuer_identifier=https://${FQDN}
|
- oidc_issuer_identifier=https://${FQDN}
|
||||||
|
- enable_guest_api=yes
|
||||||
|
- public_guest_access_regexp=^group/public/.*
|
||||||
env_file:
|
env_file:
|
||||||
- kopano_kwmserver.env
|
- kopano_kwmserver.env
|
||||||
volumes:
|
volumes:
|
||||||
@ -462,6 +473,8 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- SERVICE_TO_START=meet
|
- SERVICE_TO_START=meet
|
||||||
- KCCONF_KWEBD_TLS=no
|
- KCCONF_KWEBD_TLS=no
|
||||||
|
- KCCONF_MEET_guests_enabled=true
|
||||||
|
- KCCONF_MEET_disableFullGAB=false
|
||||||
env_file:
|
env_file:
|
||||||
- kopano_meet.env
|
- kopano_meet.env
|
||||||
depends_on:
|
depends_on:
|
||||||
|
@ -1,16 +1,19 @@
|
|||||||
ARG CODE_VERSION=0.19.1
|
ARG CODE_VERSION=0.20.0
|
||||||
FROM kopano/konnectd:${CODE_VERSION}
|
FROM kopano/konnectd:${CODE_VERSION}
|
||||||
ARG CODE_VERSION
|
ARG CODE_VERSION
|
||||||
ENV CODE_VERSION="${CODE_VERSION}"
|
ENV CODE_VERSION="${CODE_VERSION}"
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
openssl
|
jq \
|
||||||
|
moreutils \
|
||||||
|
openssl \
|
||||||
|
py-pip \
|
||||||
|
&& pip install yq==2.7.2
|
||||||
|
|
||||||
ENV DOCKERIZE_VERSION v0.6.1
|
ENV DOCKERIZE_VERSION v0.6.1
|
||||||
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||||
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||||
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
|
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
|
||||||
|
|
||||||
RUN mkdir -p /etc/kopano/
|
COPY --chown=nobody:nogroup konnectd-identifier-registration.yaml konnectd-identifier-scopes.yaml /etc/kopano/
|
||||||
COPY konnectd-identifier-registration.yaml konnectd-identifier-scopes.yaml /etc/kopano/
|
|
||||||
COPY wrapper.sh /usr/local/bin
|
COPY wrapper.sh /usr/local/bin
|
||||||
|
@ -2,6 +2,25 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
dockerize \
|
||||||
|
-wait file:///kopano/ssl/meet-kwmserver.pem \
|
||||||
|
-timeout 360s
|
||||||
|
cd /kopano/ssl/
|
||||||
|
|
||||||
|
konnectd utils jwk-from-pem --use sig /kopano/ssl/meet-kwmserver.pem > /tmp/jwk-meet.json
|
||||||
|
CONFIG_JSON=/etc/kopano/konnectd-identifier-registration.yaml
|
||||||
|
yq -y ".clients |= [{\"id\": \"kpop-https://$FQDN/meet/\", \"name\": \"Kopano Meet\", \"application_type\": \"web\", \"trusted\": true, \"redirect_uris\": [\"https://$FQDN/meet/\"], \"trusted_scopes\": [\"konnect/guestok\", \"kopano/kwm\"], \"jwks\": {\"keys\": [{\"kty\": $(jq .kty /tmp/jwk-meet.json), \"use\": $(jq .use /tmp/jwk-meet.json), \"crv\": $(jq .crv /tmp/jwk-meet.json), \"d\": $(jq .d /tmp/jwk-meet.json), \"kid\": $(jq .kid /tmp/jwk-meet.json), \"x\": $(jq .x /tmp/jwk-meet.json), \"y\": $(jq .y /tmp/jwk-meet.json)}]},\"request_object_signing_alg\": \"ES256\"}]" $CONFIG_JSON | sponge /kopano/ssl/konnectd-identifier-registration.yaml
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
if [ -n "$log_level" ]; then
|
||||||
|
set -- "$@" --log-level="$log_level"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
if [ "$allow_client_guests" = "yes" ]; then
|
||||||
|
set -- "$@" "--allow-client-guests"
|
||||||
|
fi
|
||||||
|
|
||||||
dockerize \
|
dockerize \
|
||||||
-wait file:///kopano/ssl/konnectd-tokens-signing-key.pem \
|
-wait file:///kopano/ssl/konnectd-tokens-signing-key.pem \
|
||||||
-wait file:///kopano/ssl/konnectd-encryption.key \
|
-wait file:///kopano/ssl/konnectd-encryption.key \
|
||||||
@ -10,6 +29,6 @@ dockerize \
|
|||||||
--signing-private-key=/kopano/ssl/konnectd-tokens-signing-key.pem \
|
--signing-private-key=/kopano/ssl/konnectd-tokens-signing-key.pem \
|
||||||
--encryption-secret=/kopano/ssl/konnectd-encryption.key \
|
--encryption-secret=/kopano/ssl/konnectd-encryption.key \
|
||||||
--iss=https://"$FQDN" \
|
--iss=https://"$FQDN" \
|
||||||
--identifier-registration-conf /etc/kopano/konnectd-identifier-registration.yaml \
|
--identifier-registration-conf /kopano/ssl/konnectd-identifier-registration.yaml \
|
||||||
--identifier-scopes-conf /etc/kopano/konnectd-identifier-scopes.yaml \
|
--identifier-scopes-conf /etc/kopano/konnectd-identifier-scopes.yaml \
|
||||||
kc
|
"$@" kc
|
||||||
|
@ -3,4 +3,13 @@ FROM kopano/kwmserverd:${CODE_VERSION}
|
|||||||
ARG CODE_VERSION
|
ARG CODE_VERSION
|
||||||
ENV CODE_VERSION="${CODE_VERSION}"
|
ENV CODE_VERSION="${CODE_VERSION}"
|
||||||
|
|
||||||
|
USER root
|
||||||
|
|
||||||
|
ENV DOCKERIZE_VERSION v0.6.1
|
||||||
|
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||||
|
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||||
|
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
|
||||||
|
|
||||||
COPY wrapper.sh /usr/local/bin
|
COPY wrapper.sh /usr/local/bin
|
||||||
|
|
||||||
|
USER nobody
|
||||||
|
@ -2,14 +2,72 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
if [ -n "$log_level" ]; then
|
||||||
|
set -- "$@" --log-level="$log_level"
|
||||||
|
fi
|
||||||
|
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
if [ -n "$oidc_issuer_identifier" ]; then
|
if [ -n "$oidc_issuer_identifier" ]; then
|
||||||
set -- "$@" --iss="$oidc_issuer_identifier"
|
set -- "$@" --iss="$oidc_issuer_identifier"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
if [ "$enable_guest_api" = "yes" ]; then
|
||||||
|
set -- "$@" --enable-guest-api
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSECURE" = "yes" ]; then
|
if [ "$INSECURE" = "yes" ]; then
|
||||||
set -- "$@" --insecure
|
set -- "$@" --insecure
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec /usr/local/bin/docker-entrypoint.sh serve "$@"
|
# kwmserver turn
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
|
||||||
|
if [ -z "$turn_service_url" ]; then
|
||||||
|
turn_service_url=https://turnauth.kopano.com/turnserverauth/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$turn_service_url" ]; then
|
||||||
|
set -- "$@" --turn-service-url="$turn_service_url"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
if [ -n "$turn_service_credentials" ]; then
|
||||||
|
set -- "$@" --turn-service-credentials="$$turn_service_credentials"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
if [ -n "$turn_server_shared_secret" ]; then
|
||||||
|
set -- "$@" --turn-server-shared-secret="$turn_server_shared_secret"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
if [ -n "$turn_uris" ]; then
|
||||||
|
for uri in $turn_uris; do
|
||||||
|
set -- "$@" --turn-uri="$uri"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# kwmserver guest
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
if [ "$allow_guest_only_channels" = "yes" ]; then
|
||||||
|
set -- "$@" --allow-guest-only-channels
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
if [ -n "$public_guest_access_regexp" ]; then
|
||||||
|
set -- "$@" --public-guest-access-regexp="$public_guest_access_regexp"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
export registration_conf=/kopano/ssl/konnectd-identifier-registration.yaml
|
||||||
|
|
||||||
|
# originally I wanted to wait for $registration_conf, but I needed to precreate the file
|
||||||
|
# so the konnect container (since the startup is running as nobody) can write to it.
|
||||||
|
exec dockerize \
|
||||||
|
-wait http://kopano_konnect:8777/.well-known/openid-configuration \
|
||||||
|
-timeout 360s \
|
||||||
|
/usr/local/bin/docker-entrypoint.sh serve \
|
||||||
|
--registration-conf /kopano/ssl/konnectd-identifier-registration.yaml \
|
||||||
|
"$@"
|
||||||
|
@ -18,7 +18,18 @@ if [ $# -gt 0 ]; then
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO use jq to modify /usr/share/kopano-kweb/www/config/kopano/meet.json
|
CONFIG_JSON="/usr/share/kopano-kweb/www/config/kopano/meet.json"
|
||||||
|
echo "Updating $CONFIG_JSON"
|
||||||
|
for setting in $(compgen -A variable KCCONF_MEET); do
|
||||||
|
setting2=${setting#KCCONF_MEET_}
|
||||||
|
# dots in setting2 need to be escaped to not be handled as separate entities in the json file
|
||||||
|
jq ".\"${setting2//_/\".\"}\" = \"${!setting}\"" $CONFIG_JSON | sponge $CONFIG_JSON
|
||||||
|
done
|
||||||
|
|
||||||
|
# enable Kopano WebApp in the app switcher
|
||||||
|
jq '.apps += {"enabled": ["kopano-webapp"]}' $CONFIG_JSON | sponge $CONFIG_JSON
|
||||||
|
|
||||||
|
#cat $CONFIG_JSON
|
||||||
|
|
||||||
sed -i s/\ *=\ */=/g /etc/kopano/kwebd.cfg
|
sed -i s/\ *=\ */=/g /etc/kopano/kwebd.cfg
|
||||||
# shellcheck disable=SC2046
|
# shellcheck disable=SC2046
|
||||||
@ -26,4 +37,3 @@ export $(grep -v '^#' /etc/kopano/kwebd.cfg | xargs -d '\n')
|
|||||||
# cleaning up env variables
|
# cleaning up env variables
|
||||||
unset "${!KCCONF_@}"
|
unset "${!KCCONF_@}"
|
||||||
exec kopano-kwebd serve
|
exec kopano-kwebd serve
|
||||||
|
|
||||||
|
21
ssl/start.sh
21
ssl/start.sh
@ -53,6 +53,27 @@ if [ ! -f $secretkey ]; then
|
|||||||
mv $secretkey.tmp $secretkey
|
mv $secretkey.tmp $secretkey
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Meet guest mode
|
||||||
|
ecparam="/kopano/ssl/ecparam.pem"
|
||||||
|
if [ ! -f $ecparam ]; then
|
||||||
|
echo "Creating ec param key for Meet..."
|
||||||
|
openssl ecparam -name prime256v1 -genkey -noout -out $ecparam.tmp >/dev/null 2>&1
|
||||||
|
mv $ecparam.tmp $ecparam
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create registration.yml so that konnect can write to it
|
||||||
|
touch /kopano/ssl/konnectd-identifier-registration.yaml
|
||||||
|
# chown to the numerical representation of nobody/nogroup
|
||||||
|
chown 65534:65534 /kopano/ssl/konnectd-identifier-registration.yaml
|
||||||
|
|
||||||
|
eckey="/kopano/ssl/meet-kwmserver.pem"
|
||||||
|
if [ ! -f $eckey ]; then
|
||||||
|
echo "Creating ec key for Meet..."
|
||||||
|
openssl ec -in $ecparam -out $eckey.tmp >/dev/null 2>&1
|
||||||
|
chown 65534:65534 $eckey.tmp
|
||||||
|
mv $eckey.tmp $eckey
|
||||||
|
fi
|
||||||
|
|
||||||
echo "SSL certs:"
|
echo "SSL certs:"
|
||||||
ls -l /kopano/ssl/*.*
|
ls -l /kopano/ssl/*.*
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user