18 Commits

Author SHA1 Message Date
973fd2a751 chore: publish 5.1.1+v3.0.0 release
Some checks failed
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2025-07-31 17:08:31 -07:00
0a33f87074 Merge pull request 'update entrypoint version' (#16) from patch_5.1.0_release into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #16
2025-08-01 00:07:30 +00:00
90ddc72c37 update entrypoint version
Some checks failed
continuous-integration/drone/pr Build is failing
2025-07-31 17:04:55 -07:00
c2421778af chore: publish 5.1.0+v3.0.0 release
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-07-31 16:55:05 -07:00
efa3e2e036 remove manual release notes 2025-07-31 16:54:44 -07:00
5deafb6ed5 Merge pull request 'add OAuth2 env variables' (#14) from jmakdah2/loomio:OAuth2 into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #14
Reviewed-by: decentral1se <decentral1se@noreply.git.coopcloud.tech>
2025-07-31 23:30:50 +00:00
8e577ae8af add OAUTH_ENABLED env variable
Some checks failed
continuous-integration/drone/pr Build is failing
2025-07-28 21:07:16 -07:00
9531f4fe40 add compose.oauth.yml file
Some checks failed
continuous-integration/drone/pr Build is failing
2025-07-27 17:52:57 -07:00
e9ec238865 add OAuth2 env variables
Some checks failed
continuous-integration/drone/pr Build is failing
2025-07-23 16:17:11 -07:00
bc6f625ac5 chore: publish 5.0.0+v3.0.0 release
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-06-25 10:47:34 -07:00
79a45d9aca Merge pull request 'make channels container externally available' (#12) from fix-channels-container into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #12
Reviewed-by: 3wordchant <3wordchant@noreply.git.coopcloud.tech>
2025-06-06 19:19:06 +00:00
ca5f94f089 little more security
Some checks failed
continuous-integration/drone/pr Build is failing
2025-05-04 13:48:40 +02:00
6aeb853a3a add swarm-cronjob to install guide
Some checks failed
continuous-integration/drone/pr Build is failing
2025-05-03 15:44:06 +02:00
5a94634d19 add CORS header
Some checks failed
continuous-integration/drone/pr Build is failing
2025-05-03 15:04:31 +02:00
92a1cbe865 make channels container externally available
Some checks failed
continuous-integration/drone/pr Build is failing
2025-05-03 14:30:53 +02:00
0e786fefcc chore: publish 4.0.2+v2.25.4 release
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-04-15 20:21:08 +02:00
121e9d76c0 fix: Use different yaml merge style
All checks were successful
continuous-integration/drone/push Build is passing
For more information see: toolshed/abra#534
2025-04-15 20:18:17 +02:00
3wc
8f2cbfed46 chore: publish 4.0.1+v2.25.4 release
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-04-10 19:23:35 +01:00
8 changed files with 73 additions and 9 deletions

View File

@ -22,6 +22,7 @@ steps:
SECRET_SECRET_COOKIE_TOKEN_VERSION: v1
SECRET_DB_PASSWORD_VERSION: v1
SECRET_SMTP_PASSWORD_VERSION: v1
SECRET_OAUTH_APP_SECRET_VERSION: v1
trigger:
branch:
- main

View File

@ -90,3 +90,17 @@ SECRET_DB_PASSWORD_VERSION=v1
# THEME_ACCENT_COLOR=rgb(0,188,212)
# THEME_TEXT_ON_PRIMARY_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

View File

@ -21,6 +21,7 @@
* `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)
* 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

View File

@ -1,4 +1,4 @@
export LOOMIO_ENTRYPOINT_VERSION=v6
export LOOMIO_ENTRYPOINT_VERSION=v7
# cannot be integrated into entrypoint.sh as it requires the operator to create a user first
function make_last_user_admin()
@ -13,4 +13,4 @@ function set_new_db_password()
echo "setting new password for db user..."
psql -U $POSTGRES_USER -c "ALTER USER $POSTGRES_USER PASSWORD '$(cat /run/secrets/db_password)';"
echo "done"
}
}

25
compose.oauth.yml Normal file
View File

@ -0,0 +1,25 @@
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:
services:
app:
environment:
*oauth-env
secrets:
- oauth_app_secret
secrets:
oauth_app_secret:
name: ${STACK_NAME}_oauth_app_secret_${SECRET_OAUTH_APP_SECRET_VERSION}
external: true

View File

@ -10,8 +10,7 @@ x-redis-env: &redis-env
REDIS_URL: redis://redis:6379
x-environment: &default-env
<<: *db-env
<<: *redis-env
<<: [*db-env, *redis-env]
CANONICAL_HOST: ${DOMAIN}
VIRTUAL_HOST: ${DOMAIN}
CHANNELS_URI: wss://channels.${DOMAIN}
@ -33,7 +32,7 @@ x-environment: &default-env
services:
app:
image: loomio/loomio:v2.25.3
image: loomio/loomio:v3.0.0
configs:
- source: entrypoint
target: /entrypoint.sh
@ -71,10 +70,16 @@ services:
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
- "coop-cloud.${STACK_NAME}.version=4.0.0+v2.25.3"
- "coop-cloud.${STACK_NAME}.version=5.1.1+v3.0.0"
- "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:
image: loomio/loomio:v2.25.3
image: loomio/loomio:v3.0.0
configs:
- source: entrypoint
target: /entrypoint.sh
@ -117,7 +122,7 @@ services:
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'
redis:
image: redis:5.0
image: redis:8.0
networks:
- backend
healthcheck:
@ -134,12 +139,24 @@ services:
image: loomio/loomio_channel_server
networks:
- backend
- proxy
depends_on:
- redis
environment:
<<: *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:
image: loomio/loomio:v2.25.3
image: loomio/loomio:v3.0.0
configs:
- source: entrypoint
target: /entrypoint.sh

View File

@ -25,6 +25,11 @@ file_env "DEVISE_SECRET"
file_env "SECRET_COOKIE_TOKEN"
file_env "POSTGRES_PASSWORD"
file_env "SMTP_PASSWORD"
{{ if eq (env "OAUTH_ENABLED") "1" }}
file_env "OAUTH_APP_SECRET"
{{ end }}
export DB_HOST="db"
export DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db/${POSTGRES_DB}"

1
release/5.1.0+v3.0.0 Normal file
View 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: