Compare commits

..
Author SHA1 Message Date
autonomic-bot efb2946e00 chore: regall sweep trigger
cc-ci/testme cc-ci: success
2026-06-17 02:19:37 +00:00
trav fb867b22e2 Merge pull request 'chore: upgrade to v0.19.0' (#2) from upgrade-6771622 into main
Reviewed-on: #2
2026-06-15 17:16:02 +00:00
6 changed files with 55 additions and 110 deletions
+4 -11
View File
@@ -28,6 +28,8 @@ SECRET_MINIO_RU_VERSION=v1
SECRET_POSTGRES_P_VERSION=v1 SECRET_POSTGRES_P_VERSION=v1
# DJANGO_HOST_EMAIL_PASSWORD # DJANGO_HOST_EMAIL_PASSWORD
SECRET_EMAIL_PASS_VERSION=v1 SECRET_EMAIL_PASS_VERSION=v1
# COLLABORA_ADMIN_PASSWORD
SECRET_COLLABORA_P_VERSION=v1
############################################################################## ##############################################################################
# EMAIL # EMAIL
@@ -66,21 +68,12 @@ LOGGING_LEVEL_HANDLERS_CONSOLE=INFO
LOGGING_LEVEL_LOGGERS_ROOT=INFO LOGGING_LEVEL_LOGGERS_ROOT=INFO
LOGGING_LEVEL_LOGGERS_APP=INFO LOGGING_LEVEL_LOGGERS_APP=INFO
##############################################################################
# MIGRATIONS
##############################################################################
# Set to false to disable automatic migrations on backend startup
# AUTO_MIGRATIONS=true
############################################################################## ##############################################################################
# COLLABORA ADMIN PANEL # COLLABORA ADMIN PANEL
############################################################################## ##############################################################################
# Credentials for the Collabora admin panel (https://COLLABORA_DOMAIN/browser/dist/admin/admin.html) # Username for the Collabora admin panel (https://COLLABORA_DOMAIN/browser/dist/admin/admin.html)
# Since collabora 26.04 (image execs coolwsd directly; no shell in the image), the panel # Password is managed via Docker secret 'collabora_p'
# password moved from the retired Docker secret 'collabora_p' to this env var.
# Empty/unset = panel stays locked.
#COLLABORA_ADMIN_USERNAME=admin #COLLABORA_ADMIN_USERNAME=admin
#COLLABORA_ADMIN_PASSWORD=
############################################################################## ##############################################################################
# BACKUPS # BACKUPS
+3 -4
View File
@@ -27,12 +27,11 @@ This recipe requires four domains. One domain for drive, and one for minio which
* `abra app config <app-name>` * `abra app config <app-name>`
- make sure to set MINIO_DOMAIN, COLLABORA_DOMAIN, ONLY_OFFICE_DOMAIN to the domains you set up for each. - make sure to set MINIO_DOMAIN, COLLABORA_DOMAIN, ONLY_OFFICE_DOMAIN to the domains you set up for each.
* `abra app deploy <app-name>` * `abra app deploy <app-name>`
* `abra app cmd <app-name> backend migrate` # creates database tables
* `abra app restart <app-name> minio-createbuckets` (Note: this will appear to fail, but probably worked! Check `abra app logs <app-name> minio-createbuckets`)
You should then be able to visit the landing page of your app, but not yet to login. To login, you need to deploy and integrate single sign on (described below in the "Configure Authentication" section). You should then be able to visit the landing page of your app, but not yet to login. To login, you need to deploy and integrate single sign on (described below in the "Configure Authentication" section).
* Migrations run automatically on backend startup. To trigger manually: `abra app cmd <app-name> backend migrate`
* Minio buckets are created automatically on first deploy. To manually trigger: `abra app cmd <app-name> minio minio_initialize`
Wopi discovery is supposed to happen automatically, but if collabora/onlyoffice are not connecting, you can try running: Wopi discovery is supposed to happen automatically, but if collabora/onlyoffice are not connecting, you can try running:
* `abra app cmd <app-name> backend trigger_wopi` # connects only office & collabora (if they stop working, try running this again) * `abra app cmd <app-name> backend trigger_wopi` # connects only office & collabora (if they stop working, try running this again)
@@ -96,4 +95,4 @@ Then redeploy the app, and automated e-mail sending should work:
## Maintainers ## Maintainers
coop cloud recipe maintained by @notplants coop cloud recipe maintained by @notplants
+2 -7
View File
@@ -4,8 +4,6 @@ export ABRA_ENTRYPOINT_VERSION=v11
export NGINX_CONF_VERSION=v6 export NGINX_CONF_VERSION=v6
export ONLYOFFICE_CONF_VERSION=v2 export ONLYOFFICE_CONF_VERSION=v2
export PG_BACKUP_VERSION=v4 export PG_BACKUP_VERSION=v4
export MIGRATE_VERSION=v1
export MINIO_INITIALIZE_VERSION=v1
environment() { environment() {
# this exports all the secrets as environment variables # this exports all the secrets as environment variables
@@ -13,11 +11,8 @@ environment() {
} }
migrate() { migrate() {
/migrate.sh environment
} python manage.py migrate --noinput
minio_initialize() {
/minio-initialize.sh
} }
trigger_wopi() { trigger_wopi() {
+46 -33
View File
@@ -95,14 +95,14 @@ services:
app: app:
user: "${DOCKER_USER:-1000}" user: "${DOCKER_USER:-1000}"
image: lasuite/drive-frontend:v0.22.0 image: lasuite/drive-frontend:v0.19.0
networks: networks:
- backend - backend
deploy: deploy:
labels: labels:
- "traefik.enable=false" - "traefik.enable=false"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}" - "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
- "coop-cloud.${STACK_NAME}.version=0.13.0+v0.22.0" - "coop-cloud.${STACK_NAME}.version=0.10.0+v0.19.0"
environment: environment:
<<: [ *common-env ] <<: [ *common-env ]
healthcheck: healthcheck:
@@ -116,13 +116,11 @@ services:
backend: backend:
user: ${DOCKER_USER:-1000} user: ${DOCKER_USER:-1000}
image: lasuite/drive-backend:v0.22.0 image: lasuite/drive-backend:v0.19.0
command: [ "gunicorn", "-c", "/usr/local/etc/gunicorn/drive.py", "drive.wsgi:application" ] command: [ "gunicorn", "-c", "/usr/local/etc/gunicorn/drive.py", "drive.wsgi:application" ]
entrypoint: > entrypoint: [ "/abra-entrypoint.sh", "/usr/local/bin/entrypoint" ]
sh -c "if [ \"$$AUTO_MIGRATIONS\" = \"true\" ]; then /migrate.sh; fi && exec /abra-entrypoint.sh /usr/local/bin/entrypoint \"$$@\"" --
environment: environment:
<<: [ *common-env, *postgres-env ] <<: [ *common-env, *postgres-env ]
AUTO_MIGRATIONS: "${AUTO_MIGRATIONS:-true}"
networks: networks:
- backend - backend
depends_on: depends_on:
@@ -131,9 +129,6 @@ services:
- source: abra_entrypoint - source: abra_entrypoint
target: /abra-entrypoint.sh target: /abra-entrypoint.sh
mode: 0555 mode: 0555
- source: migrate
target: /migrate.sh
mode: 0555
secrets: secrets:
- django_sk - django_sk
- django_sp - django_sp
@@ -145,7 +140,7 @@ services:
celery: celery:
user: ${DOCKER_USER:-1000} user: ${DOCKER_USER:-1000}
image: lasuite/drive-backend:v0.22.0 image: lasuite/drive-backend:v0.19.0
networks: networks:
- backend - backend
command: [ "celery", "-A", "drive.celery_app", "worker", "-l", "INFO" ] command: [ "celery", "-A", "drive.celery_app", "worker", "-l", "INFO" ]
@@ -167,7 +162,7 @@ services:
celery-beat: celery-beat:
user: ${DOCKER_USER:-1000} user: ${DOCKER_USER:-1000}
image: lasuite/drive-backend:v0.22.0 image: lasuite/drive-backend:v0.19.0
networks: networks:
- backend - backend
command: [ "celery", "-A", "drive.celery_app", "beat", "-l", "INFO", "--schedule", "/tmp/celerybeat-schedule" ] command: [ "celery", "-A", "drive.celery_app", "beat", "-l", "INFO", "--schedule", "/tmp/celerybeat-schedule" ]
@@ -214,7 +209,7 @@ services:
- postgres_p - postgres_p
redis: redis:
image: redis:8.10.2 image: redis:8.8.0
healthcheck: healthcheck:
test: ["CMD", "redis-cli", "ping"] test: ["CMD", "redis-cli", "ping"]
interval: 10s interval: 10s
@@ -224,12 +219,34 @@ services:
- backend - backend
mailcatcher: mailcatcher:
image: sj26/mailcatcher:v0.11.0 image: sj26/mailcatcher:v0.10.0
networks:
- backend
minio-createbuckets:
image: minio/minio:RELEASE.2025-09-07T16-13-09Z
environment: *minio-env
entrypoint: >
sh -c "
MINIO_ROOT_USER=\"\$$(cat /run/secrets/minio_ru)\" &&
MINIO_ROOT_PASSWORD=\"\$$(cat /run/secrets/minio_rp)\" &&
/usr/bin/mc alias set drive http://minio:9000 \$${MINIO_ROOT_USER} \"\$${MINIO_ROOT_PASSWORD}\" && \
/usr/bin/mc mb drive/drive-media-storage && \
/usr/bin/mc version enable drive/drive-media-storage && \
exit 0;"
deploy:
mode: replicated
replicas: 0
restart_policy:
condition: none
secrets:
- minio_rp
- minio_ru
networks: networks:
- backend - backend
minio: minio:
image: quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z image: minio/minio:RELEASE.2025-09-07T16-13-09Z
environment: *minio-env environment: *minio-env
healthcheck: healthcheck:
test: ["CMD", "mc", "ready", "local"] test: ["CMD", "mc", "ready", "local"]
@@ -240,17 +257,13 @@ services:
- backend - backend
- proxy - proxy
command: minio server /data command: minio server /data
entrypoint: > entrypoint: ["/usr/bin/docker-entrypoint.sh"]
sh -c "/minio-initialize.sh & exec /usr/bin/docker-entrypoint.sh \"$$@\"" --
volumes: volumes:
- minio:/data - minio:/data
configs: configs:
- source: abra_entrypoint - source: abra_entrypoint
target: /abra-entrypoint.sh target: /abra-entrypoint.sh
mode: 0555 mode: 0555
- source: minio_initialize
target: /minio-initialize.sh
mode: 0555
secrets: secrets:
- minio_rp - minio_rp
- minio_ru - minio_ru
@@ -273,12 +286,13 @@ services:
- "backupbot.backup=${ENABLE_BACKUPS:-true}" - "backupbot.backup=${ENABLE_BACKUPS:-true}"
collabora: collabora:
image: collabora/code:26.04.4.1.1 image: collabora/code:25.04.9.4.1
# 26.04 images exec coolwsd directly (--use-env-vars; no shell in the image), entrypoint: >
# so ssl options are passed as args and the panel password comes from the env. sh -c "
command: ["--o:ssl.enable=false", "--o:ssl.termination=true"] export password=\"$$(cat /run/secrets/collabora_p)\" &&
exec /start-collabora-online.sh"
healthcheck: healthcheck:
test: [ "CMD", "/usr/bin/coolwsd", "--probe", "--o:ssl.enable=false" ] test: [ "CMD", "curl", "-f", "http://localhost:9980/hosting/discovery" ]
interval: 30s interval: 30s
retries: 5 retries: 5
start_period: 60s start_period: 60s
@@ -287,9 +301,11 @@ services:
- backend - backend
- proxy - proxy
environment: environment:
- extra_params=--o:ssl.enable=false --o:ssl.termination=true
- username=${COLLABORA_ADMIN_USERNAME:-admin} - username=${COLLABORA_ADMIN_USERNAME:-admin}
- server_name=${COLLABORA_DOMAIN} - server_name=${COLLABORA_DOMAIN}
- password=${COLLABORA_ADMIN_PASSWORD:-} secrets:
- collabora_p
deploy: deploy:
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
@@ -308,7 +324,7 @@ services:
- "traefik.http.routers.${STACK_NAME}_collabora.middlewares=${STACK_NAME}_collabora-cors" - "traefik.http.routers.${STACK_NAME}_collabora.middlewares=${STACK_NAME}_collabora-cors"
onlyoffice: onlyoffice:
image: onlyoffice/documentserver-de:9.4.1.2 image: onlyoffice/documentserver-de:9.3.1.2
healthcheck: healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost/hosting/discovery" ] test: [ "CMD", "curl", "-f", "http://localhost/hosting/discovery" ]
interval: 30s interval: 30s
@@ -347,7 +363,7 @@ services:
web: web:
image: nginx:1.31.6 image: nginx:1.31.1
configs: configs:
- source: nginx_conf - source: nginx_conf
target: /etc/nginx/conf.d/default.conf target: /etc/nginx/conf.d/default.conf
@@ -389,12 +405,6 @@ configs:
abra_entrypoint: abra_entrypoint:
name: ${STACK_NAME}_entrypoint_${ABRA_ENTRYPOINT_VERSION} name: ${STACK_NAME}_entrypoint_${ABRA_ENTRYPOINT_VERSION}
file: abra-entrypoint.sh file: abra-entrypoint.sh
migrate:
name: ${STACK_NAME}_migrate_${MIGRATE_VERSION}
file: migrate.sh
minio_initialize:
name: ${STACK_NAME}_minio_initialize_${MINIO_INITIALIZE_VERSION}
file: minio-initialize.sh
onlyoffice_conf: onlyoffice_conf:
name: ${STACK_NAME}_onlyoffice_conf_${ONLYOFFICE_CONF_VERSION} name: ${STACK_NAME}_onlyoffice_conf_${ONLYOFFICE_CONF_VERSION}
file: onlyoffice-config.json.tmpl file: onlyoffice-config.json.tmpl
@@ -419,6 +429,9 @@ secrets:
minio_ru: minio_ru:
external: true external: true
name: ${STACK_NAME}_minio_ru_${SECRET_MINIO_RU_VERSION} name: ${STACK_NAME}_minio_ru_${SECRET_MINIO_RU_VERSION}
collabora_p:
external: true
name: ${STACK_NAME}_collabora_p_${SECRET_COLLABORA_P_VERSION}
email_pass: email_pass:
external: true external: true
name: ${STACK_NAME}_email_pass_${SECRET_EMAIL_PASS_VERSION} name: ${STACK_NAME}_email_pass_${SECRET_EMAIL_PASS_VERSION}
-26
View File
@@ -1,26 +0,0 @@
#!/bin/sh
set -e
# Load secrets into environment
source /abra-entrypoint.sh -e
# Wait for database to be ready (up to 30 seconds)
i=0
while ! python manage.py check --database default 2>/dev/null; do
i=$((i+1))
if [ "$i" -ge 30 ]; then
echo "migrate: timed out waiting for database" >&2
exit 1
fi
sleep 1
done
# Idempotent: skip if no pending migrations
if python manage.py migrate --check > /dev/null 2>&1; then
echo "migrate: no pending migrations, skipping"
exit 0
fi
echo "migrate: applying pending migrations..."
python manage.py migrate --noinput
echo "migrate: done"
-29
View File
@@ -1,29 +0,0 @@
#!/bin/sh
set -e
# Wait for minio to be ready (up to 60 seconds)
i=0
while ! mc ready local 2>/dev/null; do
i=$((i+1))
if [ "$i" -ge 60 ]; then
echo "minio-initialize: timed out waiting for minio to be ready" >&2
exit 1
fi
sleep 1
done
MINIO_ROOT_USER="$(cat /run/secrets/minio_ru)"
MINIO_ROOT_PASSWORD="$(cat /run/secrets/minio_rp)"
mc alias set drive http://localhost:9000 "${MINIO_ROOT_USER}" "${MINIO_ROOT_PASSWORD}"
# Idempotent: skip if bucket already exists
if mc ls drive/drive-media-storage > /dev/null 2>&1; then
echo "minio-initialize: bucket 'drive-media-storage' already exists, skipping"
exit 0
fi
echo "minio-initialize: creating bucket 'drive-media-storage'..."
mc mb drive/drive-media-storage
mc version enable drive/drive-media-storage
echo "minio-initialize: done"