This commit is contained in:
Jackson Delahunt 2019-02-26 18:20:11 +11:00
parent 8a47099ace
commit ab5047c991
4 changed files with 52 additions and 52 deletions

View file

@ -4,6 +4,14 @@ REPO_ROOT=$(dirname $(realpath $0))/../..
DESKTOP_ENVIRONMENT_CONTAINER=desktop-environment
DESKTOP_ENVIRONMENT_REGISTRY=sabrehagen
DESKTOP_ENVIRONMENT_USER=jackson
DESKTOP_ENVIRONMENT_DOMAIN_NAME=cloud.jacksondelahunt.com
echo DESKTOP_ENVIRONMENT_CONTAINER=$DESKTOP_ENVIRONMENT_CONTAINER
echo DESKTOP_ENVIRONMENT_REGISTRY=$DESKTOP_ENVIRONMENT_REGISTRY
echo DESKTOP_ENVIRONMENT_USER=$DESKTOP_ENVIRONMENT_USER
echo DESKTOP_ENVIRONMENT_DOMAIN_NAME=$DESKTOP_ENVIRONMENT_DOMAIN_NAME
# Desktop environment docker configuration
echo DESKTOP_ENVIRONMENT_DOCKER_NETWORK=$DESKTOP_ENVIRONMENT_REGISTRY-$DESKTOP_ENVIRONMENT_CONTAINER
# Desktop environment host configuration
DESKTOP_ENVIRONMENT_HOST_HOME=/$DESKTOP_ENVIRONMENT_USER/home
@ -12,9 +20,6 @@ echo DESKTOP_ENVIRONMENT_HOST_REPOSITORY=/$DESKTOP_ENVIRONMENT_USER/$DESKTOP_ENV
# Desktop environment repository information
echo DESKTOP_ENVIRONMENT_BRANCH=$(git --git-dir $REPO_ROOT/.git rev-parse --abbrev-ref HEAD)
echo DESKTOP_ENVIRONMENT_CONTAINER=$DESKTOP_ENVIRONMENT_CONTAINER
echo DESKTOP_ENVIRONMENT_REGISTRY=$DESKTOP_ENVIRONMENT_REGISTRY
echo DESKTOP_ENVIRONMENT_USER=$DESKTOP_ENVIRONMENT_USER
# Desktop environment application cache volumes
echo DESKTOP_ENVIRONMENT_CACHE_CERTIFICATES=$DESKTOP_ENVIRONMENT_HOST_HOME/.pki
@ -27,6 +32,7 @@ echo DESKTOP_ENVIRONMENT_CACHE_VCSH=$DESKTOP_ENVIRONMENT_HOST_HOME/.config/vcsh/
echo DESKTOP_ENVIRONMENT_CACHE_VCSH_PRIVATE=$DESKTOP_ENVIRONMENT_HOST_HOME/.config/vcsh/repo-private.d
echo DESKTOP_ENVIRONMENT_CACHE_YARN=$DESKTOP_ENVIRONMENT_HOST_HOME/.cache/yarn
echo DESKTOP_ENVIRONMENT_CACHE_ZOOM=$DESKTOP_ENVIRONMENT_HOST_HOME/.cache/zoom
echo DESKTOP_ENVIRONMENT_CACHE_X11=/tmp/.X11-unix
echo DESKTOP_ENVIRONMENT_CACHE_ZSH=$DESKTOP_ENVIRONMENT_HOST_HOME/.cache/zsh
# Desktop environment application state volumes
@ -35,6 +41,7 @@ echo DESKTOP_ENVIRONMENT_STATE_CODE=$DESKTOP_ENVIRONMENT_HOST_HOME/.config/Code
echo DESKTOP_ENVIRONMENT_STATE_GITHUB=$DESKTOP_ENVIRONMENT_HOST_HOME/.config/github
echo DESKTOP_ENVIRONMENT_STATE_JUMP=$DESKTOP_ENVIRONMENT_HOST_HOME/.jump
echo DESKTOP_ENVIRONMENT_STATE_MUSIKCUBE=$DESKTOP_ENVIRONMENT_HOST_HOME/.musikcube
echo DESKTOP_ENVIRONMENT_STATE_TRAEFIK=$DESKTOP_ENVIRONMENT_HOST_HOME/.traefik
echo DESKTOP_ENVIRONMENT_STATE_ZOOM=$DESKTOP_ENVIRONMENT_HOST_HOME/.zoom
# Desktop environment user state volumes

View file

@ -3,6 +3,9 @@ REPO_ROOT=$(dirname $(realpath $0))/../..
# Export desktop environment shell configuration
export $($REPO_ROOT/docker/scripts/environment.sh)
# Ensure desktop environment network exists
docker network create $DESKTOP_ENVIRONMENT_DOCKER_NETWORK
docker run \
--cap-add SYS_PTRACE \
--detach \
@ -19,6 +22,7 @@ docker run \
--hostname $DESKTOP_ENVIRONMENT_REGISTRY-$DESKTOP_ENVIRONMENT_CONTAINER-$(hostname) \
--interactive \
--name $DESKTOP_ENVIRONMENT_CONTAINER \
--network $DESKTOP_ENVIRONMENT_DOCKER_NETWORK \
--publish 80 \
--publish 443 \
--rm \
@ -46,6 +50,7 @@ docker run \
--volume DESKTOP_ENVIRONMENT_STATE_GITHUB:$DESKTOP_ENVIRONMENT_STATE_GITHUB \
--volume DESKTOP_ENVIRONMENT_STATE_JUMP:$DESKTOP_ENVIRONMENT_STATE_JUMP \
--volume DESKTOP_ENVIRONMENT_STATE_MUSIKCUBE:$DESKTOP_ENVIRONMENT_STATE_MUSIKCUBE \
--volume DESKTOP_ENVIRONMENT_STATE_TRAEFIK=$DESKTOP_ENVIRONMENT_STATE_TRAEFIK \
--volume DESKTOP_ENVIRONMENT_STATE_ZOOM:$DESKTOP_ENVIRONMENT_STATE_ZOOM \
--volume DESKTOP_ENVIRONMENT_USER_DOCUMENTS:$DESKTOP_ENVIRONMENT_USER_DOCUMENTS \
--volume DESKTOP_ENVIRONMENT_USER_DOWNLOADS:$DESKTOP_ENVIRONMENT_USER_DOWNLOADS \

27
docker/scripts/traefik.sh Executable file
View file

@ -0,0 +1,27 @@
REPO_ROOT=$(dirname $(realpath $0))/../..
# Export desktop environment shell configuration
export $($REPO_ROOT/docker/scripts/environment.sh)
# Start traefik to expose the xpra web client publicly
docker exec \
--detach \
--tty \
$DESKTOP_ENVIRONMENT_CONTAINER \
traefik \
--acme.domains=*.stemn.com \
--acme.email=security@stemn.com \
--acme.entrypoint=https \
--acme.httpchallenge \
--acme.httpchallenge.entrypoint=http \
--acme.storage=/etc/traefik/acme.json \
--acme=true \
--defaultentrypoints=http,https \
--docker \
--docker.endpoint=unix:///var/run/docker.sock \
--docker.exposedbydefault=false \
--docker.watch=true \
--entryPoints='Name:http Address::80 Redirect.EntryPoint:https' \
--entryPoints='Name:https Address::443 TLS' \
--logLevel=info \
--web

View file

@ -7,69 +7,30 @@ export $($REPO_ROOT/docker/scripts/environment.sh)
docker ps -a | grep xpra | cut -c 1-15 | xargs docker rm -f
# Xpra client configuration
XPRA_DESKTOP_ENVIRONMENT_CONTAINER=$DESKTOP_ENVIRONMENT_CONTAINER-xpra-client
DESKTOP_ENVIRONMENT_CONTAINER=$DESKTOP_ENVIRONMENT_CONTAINER-xpra-client
# Xpra server configuration
XPRA_CONTAINER=$DESKTOP_ENVIRONMENT_CONTAINER-xpra-server
XPRA_DISPLAY=:14
XPRA_SERVER_CONTAINER=$DESKTOP_ENVIRONMENT_CONTAINER-xpra-server
XPRA_WEB_PORT=10000
# Traefik configuration
ACME_DOMAINS=*.stemn.com
ACME_EMAIL=security@stemn.com
ACME_ENABLE=true
TRAEFIK_DEFAULT_ENTRYPOINTS=http,https
TRAEFIK_ENTRYPOINT_HTTP=
TRAEFIK_ENTRYPOINT_HTTPS=
TRAEFIK_HOST=cloud.jacksondelahunt.com
# Start the xpra server
docker run \
--detach \
--env DISPLAY=$XPRA_DISPLAY \
--env MODE=tcp \
--env XPRA_HTML=yes \
--label traefik.backend=$XPRA_CONTAINER \
--label traefik.backend=$XPRA_SERVER_CONTAINER \
--label traefik.enable=true \
--label traefik.frontend.entryPoints=https \
--label traefik.frontend.rule=Host:$TRAEFIK_HOST \
--label traefik.frontend.rule=Host:$DESKTOP_ENVIRONMENT_DOMAIN_NAME \
--label traefik.port=$XPRA_WEB_PORT \
--name $XPRA_CONTAINER \
--publish $XPRA_WEB_PORT:$XPRA_WEB_PORT \
--name $XPRA_SERVER_CONTAINER \
--network $DESKTOP_ENVIRONMENT_DOCKER_NETWORK \
--expose $XPRA_WEB_PORT \
--rm \
jare/x11-bridge:latest
# Start a desktop environment attached to the xpra server
docker run \
--detach \
--env DISPLAY=$XPRA_DISPLAY \
--name $XPRA_DESKTOP_ENVIRONMENT_CONTAINER \
--publish 80:80 \
--publish 443:443 \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume DESKTOP_ENVIRONMENT_TRAEFIK_CERTIFICATES=/etc/traefik \
--volumes-from $XPRA_CONTAINER \
$DESKTOP_ENVIRONMENT_REGISTRY/$DESKTOP_ENVIRONMENT_CONTAINER:$DESKTOP_ENVIRONMENT_BRANCH
# Start traefik to expose the xpra web client publicly
docker exec \
--tty \
--user $DESKTOP_ENVIRONMENT_USER \
$XPRA_DESKTOP_ENVIRONMENT_CONTAINER \
traefik \
--acme.domains=$ACME_DOMAINS \
--acme.email=$ACME_EMAIL \
--acme.entrypoint=https \
--acme.httpchallenge \
--acme.httpchallenge.entrypoint=http \
--acme.storage=/etc/traefik/acme.json \
--acme=$ACME_ENABLE \
--defaultentrypoints=$TRAEFIK_DEFAULT_ENTRYPOINTS \
--docker \
--docker.endpoint=unix:///var/run/docker.sock \
--docker.exposedbydefault=false \
--docker.watch=true \
--entryPoints='Name:http Address::80 Redirect.EntryPoint:https' \
--entryPoints='Name:https Address::443 TLS' \
--logLevel=info \
--web
# $TRAEFIK_ENTRYPOINT_HTTP $TRAEFIK_ENTRYPOINT_HTTPS
DISPLAY=$XPRA_DISPLAY $REPO_ROOT/docker/scripts/start.sh
--volumes-from $XPRA_SERVER_CONTAINER \