Compare commits
20 Commits
4.0.1+v2.2
...
main
Author | SHA1 | Date | |
---|---|---|---|
2ea69cb952 | |||
a323593824 | |||
746413e31e | |||
973fd2a751 | |||
0a33f87074 | |||
90ddc72c37 | |||
c2421778af | |||
efa3e2e036 | |||
5deafb6ed5 | |||
8e577ae8af | |||
9531f4fe40 | |||
e9ec238865 | |||
bc6f625ac5 | |||
79a45d9aca | |||
ca5f94f089 | |||
6aeb853a3a | |||
5a94634d19 | |||
92a1cbe865 | |||
0e786fefcc | |||
121e9d76c0 |
@ -22,6 +22,7 @@ steps:
|
|||||||
SECRET_SECRET_COOKIE_TOKEN_VERSION: v1
|
SECRET_SECRET_COOKIE_TOKEN_VERSION: v1
|
||||||
SECRET_DB_PASSWORD_VERSION: v1
|
SECRET_DB_PASSWORD_VERSION: v1
|
||||||
SECRET_SMTP_PASSWORD_VERSION: v1
|
SECRET_SMTP_PASSWORD_VERSION: v1
|
||||||
|
SECRET_OAUTH_APP_SECRET_VERSION: v1
|
||||||
trigger:
|
trigger:
|
||||||
branch:
|
branch:
|
||||||
- main
|
- main
|
||||||
|
14
.env.sample
14
.env.sample
@ -90,3 +90,17 @@ SECRET_DB_PASSWORD_VERSION=v1
|
|||||||
# THEME_ACCENT_COLOR=rgb(0,188,212)
|
# THEME_ACCENT_COLOR=rgb(0,188,212)
|
||||||
# THEME_TEXT_ON_PRIMARY_COLOR=rgb(255,255,255)
|
# THEME_TEXT_ON_PRIMARY_COLOR=rgb(255,255,255)
|
||||||
# THEME_TEXT_ON_ACCENT_COLOR=rgb(255,255,255)
|
# THEME_TEXT_ON_ACCENT_COLOR=rgb(255,255,255)
|
||||||
|
|
||||||
|
# env variables needed to enable OAuth2 authentication
|
||||||
|
# COMPOSE_FILE="$COMPOSE_FILE:compose.oauth.yml"
|
||||||
|
# OAUTH_ENABLED=1
|
||||||
|
# OAUTH_AUTH_URL=
|
||||||
|
# OAUTH_TOKEN_URL=
|
||||||
|
# OAUTH_PROFILE_URL=
|
||||||
|
# OAUTH_SCOPE=
|
||||||
|
# OAUTH_APP_KEY=
|
||||||
|
# OAUTH_ATTR_UID=
|
||||||
|
# OAUTH_ATTR_NAME=
|
||||||
|
# OAUTH_ATTR_EMAIL=
|
||||||
|
# OAUTH_LOGIN_PROVIDER_NAME=
|
||||||
|
# SECRET_OAUTH_APP_SECRET_VERSION=v1
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
* `abra app deploy <app-name>`
|
* `abra app deploy <app-name>`
|
||||||
* Open the configured domain in your browser to create your user account (only works in case mail is configured correctly)
|
* Open the configured domain in your browser to create your user account (only works in case mail is configured correctly)
|
||||||
* Give yourself admin rights by running `abra app cmd <app-name> app make_last_user_admin`
|
* Give yourself admin rights by running `abra app cmd <app-name> app make_last_user_admin`
|
||||||
|
* Deploy [swarm-cronjob](https://recipes.coopcloud.tech/swarm-cronjob) on your server if it is not running yet. This is needed for loomios cron container to be started to do hourly chores.
|
||||||
|
|
||||||
## Migration guide
|
## Migration guide
|
||||||
|
|
||||||
|
4
abra.sh
4
abra.sh
@ -1,4 +1,4 @@
|
|||||||
export LOOMIO_ENTRYPOINT_VERSION=v6
|
export LOOMIO_ENTRYPOINT_VERSION=v8
|
||||||
|
|
||||||
# cannot be integrated into entrypoint.sh as it requires the operator to create a user first
|
# cannot be integrated into entrypoint.sh as it requires the operator to create a user first
|
||||||
function make_last_user_admin()
|
function make_last_user_admin()
|
||||||
@ -13,4 +13,4 @@ function set_new_db_password()
|
|||||||
echo "setting new password for db user..."
|
echo "setting new password for db user..."
|
||||||
psql -U $POSTGRES_USER -c "ALTER USER $POSTGRES_USER PASSWORD '$(cat /run/secrets/db_password)';"
|
psql -U $POSTGRES_USER -c "ALTER USER $POSTGRES_USER PASSWORD '$(cat /run/secrets/db_password)';"
|
||||||
echo "done"
|
echo "done"
|
||||||
}
|
}
|
||||||
|
31
compose.oauth.yml
Normal file
31
compose.oauth.yml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
x-oauth-env: &oauth-env
|
||||||
|
OAUTH_AUTH_URL:
|
||||||
|
OAUTH_TOKEN_URL:
|
||||||
|
OAUTH_PROFILE_URL:
|
||||||
|
OAUTH_SCOPE:
|
||||||
|
OAUTH_APP_KEY:
|
||||||
|
OAUTH_APP_SECRET_FILE: /run/secrets/oauth_app_secret
|
||||||
|
OAUTH_ATTR_UID:
|
||||||
|
OAUTH_ATTR_NAME:
|
||||||
|
OAUTH_ATTR_EMAIL:
|
||||||
|
OAUTH_LOGIN_PROVIDER_NAME:
|
||||||
|
OAUTH_ENABLED:
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
environment:
|
||||||
|
*oauth-env
|
||||||
|
secrets:
|
||||||
|
- oauth_app_secret
|
||||||
|
worker:
|
||||||
|
environment:
|
||||||
|
*oauth-env
|
||||||
|
secrets:
|
||||||
|
- oauth_app_secret
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
oauth_app_secret:
|
||||||
|
name: ${STACK_NAME}_oauth_app_secret_${SECRET_OAUTH_APP_SECRET_VERSION}
|
||||||
|
external: true
|
31
compose.yml
31
compose.yml
@ -10,8 +10,7 @@ x-redis-env: &redis-env
|
|||||||
REDIS_URL: redis://redis:6379
|
REDIS_URL: redis://redis:6379
|
||||||
|
|
||||||
x-environment: &default-env
|
x-environment: &default-env
|
||||||
<<: *db-env
|
<<: [*db-env, *redis-env]
|
||||||
<<: *redis-env
|
|
||||||
CANONICAL_HOST: ${DOMAIN}
|
CANONICAL_HOST: ${DOMAIN}
|
||||||
VIRTUAL_HOST: ${DOMAIN}
|
VIRTUAL_HOST: ${DOMAIN}
|
||||||
CHANNELS_URI: wss://channels.${DOMAIN}
|
CHANNELS_URI: wss://channels.${DOMAIN}
|
||||||
@ -33,7 +32,7 @@ x-environment: &default-env
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
app:
|
app:
|
||||||
image: loomio/loomio:v2.25.4
|
image: loomio/loomio:v3.0.0
|
||||||
configs:
|
configs:
|
||||||
- source: entrypoint
|
- source: entrypoint
|
||||||
target: /entrypoint.sh
|
target: /entrypoint.sh
|
||||||
@ -71,10 +70,16 @@ services:
|
|||||||
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})"
|
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})"
|
||||||
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
|
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
|
||||||
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
|
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
|
||||||
- "coop-cloud.${STACK_NAME}.version=4.0.1+v2.25.4"
|
- "coop-cloud.${STACK_NAME}.version=5.1.2+v3.0.0"
|
||||||
- "backupbot.backup:=${ENABLE_BACKUPS:-true}"
|
- "backupbot.backup:=${ENABLE_BACKUPS:-true}"
|
||||||
|
- "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}"
|
||||||
|
- "traefik.http.middlewares.${STACK_NAME}.headers.accesscontrolallowmethods=GET,OPTIONS,PUT"
|
||||||
|
- "traefik.http.middlewares.${STACK_NAME}.headers.accesscontrolallowheaders=*"
|
||||||
|
- "traefik.http.middlewares.${STACK_NAME}.headers.accessControlAllowOriginList=https://*.${DOMAIN}"
|
||||||
|
- "traefik.http.middlewares.${STACK_NAME}.headers.accesscontrolmaxage=100"
|
||||||
|
- "traefik.http.middlewares.${STACK_NAME}.headers.addvaryheader=true"
|
||||||
worker:
|
worker:
|
||||||
image: loomio/loomio:v2.25.4
|
image: loomio/loomio:v3.0.0
|
||||||
configs:
|
configs:
|
||||||
- source: entrypoint
|
- source: entrypoint
|
||||||
target: /entrypoint.sh
|
target: /entrypoint.sh
|
||||||
@ -117,7 +122,7 @@ services:
|
|||||||
backupbot.restore: "true"
|
backupbot.restore: "true"
|
||||||
backupbot.restore.post-hook: sh -c 'gzip -d /postgres.dump.gz && pg_restore --clean -U "$$POSTGRES_USER" --dbname="$$POSTGRES_DB" < /postgres.dump && rm -f /postgres.dump'
|
backupbot.restore.post-hook: sh -c 'gzip -d /postgres.dump.gz && pg_restore --clean -U "$$POSTGRES_USER" --dbname="$$POSTGRES_DB" < /postgres.dump && rm -f /postgres.dump'
|
||||||
redis:
|
redis:
|
||||||
image: redis:5.0
|
image: redis:8.0
|
||||||
networks:
|
networks:
|
||||||
- backend
|
- backend
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@ -134,12 +139,24 @@ services:
|
|||||||
image: loomio/loomio_channel_server
|
image: loomio/loomio_channel_server
|
||||||
networks:
|
networks:
|
||||||
- backend
|
- backend
|
||||||
|
- proxy
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
environment:
|
environment:
|
||||||
<<: *redis-env
|
<<: *redis-env
|
||||||
|
VIRTUAL_HOST: channels.${DOMAIN}
|
||||||
|
deploy:
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.docker.network=proxy"
|
||||||
|
- "traefik.http.routers.channels${STACK_NAME}.rule=Host(`channels.${DOMAIN}`)"
|
||||||
|
- "traefik.http.routers.channels${STACK_NAME}.tls=true"
|
||||||
|
- "traefik.http.routers.channels${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
|
||||||
|
- "traefik.http.services.channels${STACK_NAME}.loadbalancer.server.port=5000"
|
||||||
|
- "traefik.http.routers.channels${STACK_NAME}.entrypoints=web-secure"
|
||||||
|
|
||||||
cron:
|
cron:
|
||||||
image: loomio/loomio:v2.25.4
|
image: loomio/loomio:v3.0.0
|
||||||
configs:
|
configs:
|
||||||
- source: entrypoint
|
- source: entrypoint
|
||||||
target: /entrypoint.sh
|
target: /entrypoint.sh
|
||||||
|
@ -25,6 +25,11 @@ file_env "DEVISE_SECRET"
|
|||||||
file_env "SECRET_COOKIE_TOKEN"
|
file_env "SECRET_COOKIE_TOKEN"
|
||||||
file_env "POSTGRES_PASSWORD"
|
file_env "POSTGRES_PASSWORD"
|
||||||
file_env "SMTP_PASSWORD"
|
file_env "SMTP_PASSWORD"
|
||||||
|
|
||||||
|
if [ "$OAUTH_ENABLED" = "1" ]; then
|
||||||
|
file_env "OAUTH_APP_SECRET"
|
||||||
|
fi
|
||||||
|
|
||||||
export DB_HOST="db"
|
export DB_HOST="db"
|
||||||
export DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db/${POSTGRES_DB}"
|
export DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db/${POSTGRES_DB}"
|
||||||
|
|
||||||
|
1
release/5.1.0+v3.0.0
Normal file
1
release/5.1.0+v3.0.0
Normal file
@ -0,0 +1 @@
|
|||||||
|
Add support for OAuth2. To use this feature copy and populate the new oauth2 env variables from the .env.sample to your locale .env config and insert the oauth2_app_secret secret into your recipe:
|
Reference in New Issue
Block a user