Compare commits

...

21 Commits

Author SHA1 Message Date
renovate-bot a78902158a chore(deps): update nextcloud docker tag to v34 2026-07-22 12:17:22 +00:00
stevensting fcf1ca56d3 chore: publish 13.1.1+32.0.12-fpm release 2026-07-22 13:27:50 +02:00
renovate-bot 15a795affd chore(deps): update nextcloud docker tag to v32.0.12 (#89)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| nextcloud | patch | `32.0.11-fpm` -> `32.0.12-fpm` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: coop-cloud/nextcloud#89
Co-authored-by: Renovate Bot <renovate@coopcloud.tech>
Co-committed-by: Renovate Bot <renovate@coopcloud.tech>
2026-07-22 11:19:36 +00:00
Linus Gasser 38c426178a Removing last TBDs 2026-07-21 08:08:52 +02:00
Linus Gasser 38920ae3de README improvements 2026-07-21 07:59:34 +02:00
Linus Gasser 6e6c235acd Adding maintainers to README.md 2026-07-21 07:59:34 +02:00
Linus Gasser 10fdbc92b4 Adding suggestions from @dannygroenewegen 2026-07-21 07:59:34 +02:00
Linus Gasser 8ce1b9cf30 Proposing a MAINTENANCE file
Cobbled together a file with the help of Claude.
I did re-read all of it, manually edited some parts,
and asked for modifications.
2026-07-21 07:59:34 +02:00
ineiti 29431d2a14 Merge pull request 'Remove test-swarm deployment' (#90) from ineiti/nextcloud:remove_test-swarm into main
Reviewed-on: coop-cloud/nextcloud#90
Reviewed-by: ammaratef45 <ammaratef45@proton.me>
2026-07-21 05:54:04 +00:00
Linus Gasser 66fdde358e Remove test-swarm deployment
According to @kawaiipunk from autonomic.zone, this server has been shut
down.
While waiting if they want to spin up a new server, remove this part,
so we get clean CI/CD.
2026-07-20 17:31:21 +02:00
carla 19e7fbb648 chore: publish 13.1.0+32.0.11-fpm release 2026-06-10 11:51:22 +02:00
carla 6113ccedde chore: switch from postgres to pgautoupgrade 14 2026-06-08 20:59:29 +02:00
carla 0d0c3b3266 chore: update image tags 2026-06-08 20:21:10 +02:00
decentral1se 45d1985ddc Merge pull request 'add user_oidc' (#70) from oxaliq/nextcloud:user_oidc_setup into main
Reviewed-on: coop-cloud/nextcloud#70
2026-03-24 21:27:08 +00:00
decentral1se d49f3c4ef8 Merge pull request 'fix: mention that you need to install OnlyOffice first' (#74) from ineiti/nextcloud:readme_onlyoffice into main
Reviewed-on: coop-cloud/nextcloud#74
Reviewed-by: decentral1se <decentral1se@noreply.git.coopcloud.tech>
2026-03-18 08:26:19 +00:00
Linus Gasser a2395c6399 @decentral1se comment 2026-03-17 22:26:35 +01:00
Linus Gasser e4b3bc4f22 fix: mention that you need to install OnlyOffice first 2026-03-17 22:26:35 +01:00
moritz 21ea1daf83 chore: replace depricated traefik.docker.* with traefik.swarm.* 2026-03-17 17:25:38 +01:00
oxaliq ec5934e191 document user_oidc setup 2026-03-12 09:56:53 -04:00
oxaliq 4c3f6fa14d add command for initializing user_oidc 2026-03-11 15:55:53 -04:00
oxaliq eb3816b9c2 add env and secrets for user_oidc app 2026-03-11 15:55:26 -04:00
12 changed files with 176 additions and 50 deletions
-35
View File
@@ -1,40 +1,5 @@
---
kind: pipeline
name: deploy to swarm-test.autonomic.zone
steps:
- name: deployment
image: git.coopcloud.tech/coop-cloud/stack-ssh-deploy:latest
settings:
host: swarm-test.autonomic.zone
stack: nextcloud
generate_secrets: true
purge: true
deploy_key:
from_secret: drone_ssh_swarm_test
networks:
- proxy
environment:
DOMAIN: nextcloud.swarm-test.autonomic.zone
STACK_NAME: nextcloud
LETS_ENCRYPT_ENV: production
ADMIN_USER: foobar
FPM_TUNE_VERSION: v1
NGINX_CONF_VERSION: v1
MY_CNF_VERSION: v1
ENTRYPOINT_VERSION: v1
CRONTAB_VERSION: v1
PG_BACKUP_VERSION: v2
SECRET_DB_PASSWORD_VERSION: v1
SECRET_DB_ROOT_PASSWORD_VERSION: v1
SECRET_ADMIN_PASSWORD_VERSION: v1
SECRET_ONLYOFFICE_JWT_VERSION: v1
SECRET_BBB_SECRET_VERSION: v1
EXTRA_VOLUME: "/dev/null:/tmp/.dummy"
trigger:
branch:
- main
---
kind: pipeline
name: generate recipe catalogue
steps:
- name: release a new version
+8
View File
@@ -93,6 +93,14 @@ DEFAULT_QUOTA="10 GB"
#SECRET_TALK_TURN_SECRET_VERSION=v1 # length=64 charset=default
#SECRET_TALK_SIGNALING_SECRET_VERSION=v1 # length=64 charset=default
# COMPOSE_FILE="$COMPOSE_FILE:compose.user_oidc.yml"
# APPS="$APPS user_oidc"
# USER_OIDC_PROVIDER=
# USER_OIDC_ID=
# USER_OIDC_DISCOVERY_URI=
# USER_OIDC_END_SESSION_URI=
# USER_OIDC_LOGIN_ONLY=false
# SECRET_USER_OIDC_SECRET_VERSION=v1
# HSTS Options
# Uncomment this line to enable HSTS: https://docs.nextcloud.com/server/30/admin_manual/installation/harden_server.html
+91
View File
@@ -0,0 +1,91 @@
# Nextcloud Recipe Maintenance
This document describes how the Nextcloud recipe is maintained. It builds on
the floor set by [Federation Resolution
025](https://docs.coopcloud.tech/federation/resolutions/passed/025/) and
follows the [`MAINTENANCE.md`
template](https://docs.coopcloud.tech/maintainers/maintain/#maintenancemd-template)
described in the Co-op Cloud maintainers' docs.
All contributions should be made via a pull request so that quality and
consistency stay something others can rely on.
## Maintainers
Everyone can apply to be a recipe maintainer.
Simply add yourself to the list in the README.md and open a new pull request
with the change.
## Maintainer Responsibilities
This recipe commits to the following, which is tighter than the floor set by
Resolution 025 (stable-recipe category). However, these timelines are
best-effort, so we aim for them as good as possible:
- Respond to PRs / issues within 3 working days
- Apply security patches within 1 week of disclosure
- Ship patch / minor image updates within 2 weeks of upstream release
- Adopt major Nextcloud version updates within 1 release cycle of upstream
EOL of the previous major (see below)
- Keep documentation current
In order to meet these responsibilities each maintainer:
- Watches the repository so notifications arrive
- Keeps an eye on [Renovate](./renovate.json) updates and helps shepherd them through
- Has a working contact (Matrix handle or email) reachable by the others
## Release cadence
The intent is to **track Nextcloud's own release schedule** rather than invent
our own. In practice this means:
- **Patch releases (e.g. `32.0.x`)**: published to this recipe shortly after
upstream, ideally within 1 week. `chore(deps)` opens the PRs; a maintainer
reviews the release notes and Nextcloud's issue tracker, and merges the PR
if it is OK.
- **Minor releases**: same flow as patch releases, but one of the maintainer
tests it on their own instance before merging.
- **Major releases (e.g. `32 → 33`)**: not adopted on day one. We wait for the
first one or two upstream patch releases of the new major to land
(typically 12 months) before promoting it here, to avoid passing the
early-adopter cost to operators. Major bumps get their own PR with release
notes and an upgrade-path check.
Before adding a major release, the following needs to be done:
- at least two maintainers update one of their production instances to the
new version
- the previous release gets a last update pointing to the docker image
versions nextcloud:xx-fpm, so that users can auto-update if they wish so
- the new release is added to this repo
- If people have the time it would be nice to create specially tagged versions
for major releases, which reflect that this is 'bleeding edge' and has not
been thoroughly tested.
- **Co-installed components** (Talk HPB, OnlyOffice, Whiteboard, etc.) are
bumped alongside or shortly after the matching Nextcloud release.
## Pull Requests
A pull request can be merged once it is approved by at least one maintainer.
PRs opened by a maintainer need approval from another maintainer. With three
maintainers this is workable; if the group shrinks, the rule should be
revisited.
Approvals should ideally include a smoke test on a real instance for anything
beyond a patch bump — Nextcloud upgrades have a long history of surprising us
(see the [upgrade notes in `README.md`](./README.md#upgrading-nextcloud)),
and silent CI is not enough.
## Becoming a maintainer
Everyone is welcome to apply:
1. Watch the repository so you get notifications.
2. Open a pull request adding yourself to the `Maintainer` line in
[`README.md`](./README.md) and to the list above.
3. Once an existing maintainer merges the PR, you'll be added to the
[nextcloud maintainers
team](https://git.coopcloud.tech/org/coop-cloud/teams/nextcloud-maintainers).
Stepping down is symmetrical: open a PR removing yourself, and flag it in
the federation channels so the group can plan replacement before falling
below the Res. 025 floor of one named maintainer.
+33 -1
View File
@@ -5,6 +5,7 @@
Fully automated luxury Nextcloud via docker-swarm.
<!-- metadata -->
* **Maintainer**: [@dannygroenewegen](https://git.coopcloud.tech/dannygroenewegen), [@ineiti](https://git.coopcloud.tech/ineiti)
* **Category**: Apps
* **Status**: 5
* **Image**: [`nextcloud`](https://hub.docker.com/_/nextcloud), 4, upstream
@@ -25,15 +26,21 @@ Fully automated luxury Nextcloud via docker-swarm.
### Onlyoffice Integration
First, install onlyoffice following the instructions in the
[OnlyOffice Recipe](https://recipes.coopcloud.tech/onlyoffice), and enable
the JWT secret. Then configure your nextcloud instance with:
`abra app config <app-name>`
Configure the following envs:
Configure the following envs with the URL of the onlyoffice service:
```
COMPOSE_FILE="$COMPOSE_FILE:compose.apps.yml"
ONLYOFFICE_URL=https://onlyoffice.example.com
SECRET_ONLYOFFICE_JWT_VERSION=v1
```
Then set the onlyoffice JWT secret from the onlyoffice installation:
* `abra app secret insert <app-name> onlyoffice_jwt v1 <jwt_secret>`
* `abra app cmd <app-name> app install_onlyoffice`
@@ -188,6 +195,31 @@ We've been able to get this setup by using the [social login](https://apps.nextc
If using Keycloak, you'll want to do [this trick](https://janikvonrotz.ch/2020/10/20/openid-connect-with-nextcloud-and-keycloak/) also.
## How do I enable OpenID Connect (OIDC) providers?
[user_oidc](https://github.com/nextcloud/user_oidc) is the recommended way to integrate Nextcloud with OIDC providers.
Run `abra app config <app-name>`
Set the following envs:
```env
COMPOSE_FILE="$COMPOSE_FILE:compose.user_oidc.yml"
APPS="$APPS user_oidc"
USER_OIDC_PROVIDER=example-provider # this has been tested with keycloak
USER_OIDC_ID=example-client-id # get this from your oidc provider
USER_OIDC_DISCOVERY_URI=example-oidc-provider.com/.well-known/openid-configuration # get this from your oidc provider
USER_OIDC_END_SESSION_URI=example-oidc-provider.com/protocol/openid-connect/logout # get this from your oidc provider
USER_OIDC_LOGIN_ONLY=false # set this to true to automatically redirect all logins to your oidc provider
SECRET_USER_OIDC_SECRET_VERSION=v1
```
Then insert the client secret from your OIDC provider:
```sh
abra app secret insert <app-name> user_oidc_secret v1 <client-secret from oidc provider>
```
After you deploy (or redeploy), run the following to set up the user_oidc Nextcloud app:
`abra app cmd <app-name> app set_user_oidc`
## How can I customise the CSS?
There is some basic stuff in the admin settings.
+17
View File
@@ -159,6 +159,23 @@ set_authentik() {
run_occ 'config:system:set lost_password_link --value=disabled'
}
set_user_oidc() {
install_apps user_oidc
USER_OIDC_SECRET=$(cat /run/secrets/user_oidc_secret)
run_occ "user_oidc:provider \
--clientid=${USER_OIDC_ID} \
--clientsecret=${USER_OIDC_SECRET} \
--discoveryuri=${USER_OIDC_DISCOVERY_URI} \
--endsessionendpointuri=${USER_OIDC_END_SESSION_URI} \
--postlogouturi=https://${DOMAIN} \
--scope='openid email profile' \
${USER_OIDC_PROVIDER}"
# disable non user_oidc login
if [[ ${USER_OIDC_LOGIN_ONLY:-false} = "true" ]]; then
run_occ "config:app:set --value=0 user_oidc allow_multiple_user_backends"
fi
}
disable_skeletondirectory() {
run_occ "config:system:set skeletondirectory --value ''"
}
+2 -2
View File
@@ -2,7 +2,7 @@ version: "3.8"
services:
elasticsearch:
image: "docker.elastic.co/elasticsearch/elasticsearch:8.17.2"
image: "docker.elastic.co/elasticsearch/elasticsearch:8.19.16"
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
@@ -29,7 +29,7 @@ services:
mode: 0600
searchindexer:
image: nextcloud:32.0.3-fpm
image: nextcloud:34.0.1-fpm
volumes:
- nextcloud:/var/www/html/
- nextapps:/var/www/html/custom_apps:cached
+1 -1
View File
@@ -10,7 +10,7 @@ services:
- NEXTCLOUD_UPDATE=1
db:
image: "postgres:13"
image: "pgautoupgrade/pgautoupgrade:14-debian"
command: -c "max_connections=${MAX_DB_CONNECTIONS:-100}"
volumes:
- "postgres:/var/lib/postgresql/data"
+2 -2
View File
@@ -14,7 +14,7 @@ services:
deploy:
labels:
- traefik.enable=true
- traefik.docker.network=proxy
- traefik.swarm.network=proxy
- traefik.http.services.${STACK_NAME}_talk.loadbalancer.server.port=8081
- traefik.http.routers.${STACK_NAME}_talk.rule=Host(`${TALK_DOMAIN}`)
- traefik.http.routers.${STACK_NAME}_talk.entrypoints=web-secure
@@ -67,4 +67,4 @@ configs:
entrypoint_talk:
name: ${STACK_NAME}_entrypoint_talk_${ENTRYPOINT_TALK_VERSION}
file: entrypoint.talk.sh.tmpl
template_driver: golang
template_driver: golang
+10
View File
@@ -0,0 +1,10 @@
version: "3.8"
services:
app:
secrets:
- user_oidc_secret
secrets:
user_oidc_secret:
external: true
name: ${STACK_NAME}_user_oidc_secret_${SECRET_USER_OIDC_SECRET_VERSION}
+3 -3
View File
@@ -6,11 +6,11 @@ services:
- whiteboard_jwt
whiteboard:
image: ghcr.io/nextcloud-releases/whiteboard:v1.5.0
image: ghcr.io/nextcloud-releases/whiteboard:v1.5.9
deploy:
labels:
- traefik.enable=true
- traefik.docker.network=proxy
- traefik.swarm.network=proxy
- traefik.http.services.${STACK_NAME}_whiteboard.loadbalancer.server.port=3002
- traefik.http.routers.${STACK_NAME}_whiteboard.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS}) && PathPrefix(`/whiteboard`)
- traefik.http.routers.${STACK_NAME}_whiteboard.entrypoints=web-secure
@@ -41,4 +41,4 @@ configs:
entrypoint_whiteboard:
name: ${STACK_NAME}_entrypoint_whiteboard_${ENTRYPOINT_WHITEBOARD_VERSION}
file: entrypoint.whiteboard.sh.tmpl
template_driver: golang
template_driver: golang
+6 -6
View File
@@ -1,7 +1,7 @@
version: "3.8"
services:
web:
image: nginx:1.29.4
image: nginx:1.31.1
depends_on:
- app
configs:
@@ -29,7 +29,7 @@ services:
order: start-first
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.swarm.network=proxy"
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=80"
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})"
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
@@ -48,7 +48,7 @@ services:
start_period: 5m
app:
image: nextcloud:32.0.3-fpm
image: nextcloud:34.0.1-fpm
depends_on:
- db
configs:
@@ -95,7 +95,7 @@ services:
failure_action: rollback
order: start-first
labels:
- "coop-cloud.${STACK_NAME}.version=13.0.1+32.0.3-fpm"
- "coop-cloud.${STACK_NAME}.version=13.1.1+32.0.12-fpm"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT}"
- "backupbot.backup=${ENABLE_BACKUPS:-true}"
- "backupbot.backup.volumes.redis=false"
@@ -109,7 +109,7 @@ services:
start_period: 15m
cron:
image: nextcloud:32.0.3-fpm
image: nextcloud:34.0.1-fpm
volumes:
- nextcloud:/var/www/html/
- nextapps:/var/www/html/custom_apps:cached
@@ -125,7 +125,7 @@ services:
cache:
image: redis:8.4.0-alpine
image: redis:8.8.0-alpine
networks:
- internal
volumes:
+3
View File
@@ -0,0 +1,3 @@
Important:
Posgres: Due to end of support for postgres 13 we upgraded to pgautoupgrade-14-debian but we could not test it, so please take backups before the upgrade!
Elastic Search: We chose the latest minor update for elasticsearch but we were also not able to test it.