diff --git a/.env.sample b/.env.sample index 35cf16f..675461d 100644 --- a/.env.sample +++ b/.env.sample @@ -4,3 +4,7 @@ DOMAIN=federatedwiki.example.com ## Domain aliases #EXTRA_DOMAINS=', `www.federatedwiki.example.com`' LETS_ENCRYPT_ENV=production + +COOKIE_SECRET="asflkjqpweoriuwpeogdjgbpdofigh" +AUTHOR="Baja Colorado" +PASSWORD="Please Choose a Better Password" diff --git a/abra.sh b/abra.sh index d2bcac2..1f21482 100644 --- a/abra.sh +++ b/abra.sh @@ -1 +1,3 @@ -export INSTALL_SH_VERSION=v3 +export INSTALL_SH_VERSION=v5 +export CONFIG_JSON_VERSION=v3 +export CONFIG_OWNER_JSON_VERSION=v3 diff --git a/compose.yml b/compose.yml index d1055a1..1700abb 100644 --- a/compose.yml +++ b/compose.yml @@ -13,19 +13,26 @@ services: configs: - source: install_sh_conf target: /home/node/config/install.sh + - source: config_json_conf + target: /home/node/config/config.json + - source: config_owner_json_conf + target: /home/node/config/config.owner.json + environment: + - DOMAIN + - COOKIE_SECRET + - AUTHOR + - PASSWORD deploy: restart_policy: condition: on-failure labels: - "traefik.enable=true" - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=3000" - - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})" + - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`) || HostRegexp(`{subdomain:\\w+}.${DOMAIN}`)" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" - ## Redirect from EXTRA_DOMAINS to DOMAIN - #- "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect" - #- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true" - #- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}" + - "traefik.http.routers.${STACK_NAME}.tls.domains[0].main=${DOMAIN}" + - "traefik.http.routers.${STACK_NAME}.tls.domains[0].sans=*.${DOMAIN}" # healthcheck: # test: ["CMD", "curl", "-f", "http://localhost"] # interval: 30s @@ -45,3 +52,11 @@ configs: install_sh_conf: name: ${STACK_NAME}_install_sh_${INSTALL_SH_VERSION} file: install.sh + config_json_conf: + name: ${STACK_NAME}_config_json_${CONFIG_JSON_VERSION} + file: config.json.tmpl + template_driver: golang + config_owner_json_conf: + name: ${STACK_NAME}_config_owner_json_${CONFIG_OWNER_JSON_VERSION} + file: config.owner.json.tmpl + template_driver: golang diff --git a/config.json.tmpl b/config.json.tmpl new file mode 100644 index 0000000..1ed160a --- /dev/null +++ b/config.json.tmpl @@ -0,0 +1,12 @@ +{ + "admin": "{{ env "PASSWORD" }}", + "farm": true, + "cookieSecret": "{{ env "COOKIE_SECRET" }}", + "secure_cookie": true, + "security_type": "friends", + "wikiDomains": { + "$DOMAIN": { + "id": "/home/node/.wiki/config.owner.json" + } + } +} diff --git a/config.owner.json.tmpl b/config.owner.json.tmpl new file mode 100644 index 0000000..0dae8e9 --- /dev/null +++ b/config.owner.json.tmpl @@ -0,0 +1,6 @@ +{ + "name": "{{ env "AUTHOR" }}", + "friend": { + "secret": "{{ env "PASSWORD" }}" + } +} diff --git a/install.sh b/install.sh index 67a5f5f..c1a0e86 100644 --- a/install.sh +++ b/install.sh @@ -1,7 +1,4 @@ -apk --update add gettext -chown -R node:node .wiki -/usr/bin/envsubst < config/config.json > .wiki/config.json -/usr/bin/envsubst < config/config.owner.json > .wiki/config.owner.json -chown -R node:node .wiki +cp -n config/config.json .wiki/config.json +cp -n config/config.owner.json .wiki/config.owner.json wiki --farm --security_type=friends