Compare commits

..

12 Commits

Author SHA1 Message Date
3wc
65b1090e54 README update for imaginary
Some checks failed
continuous-integration/drone/pr Build is failing
2026-04-15 15:10:57 -04:00
3wc
d6a9db3162 Fix docker compose version 2026-04-15 15:10:30 -04:00
3wc
c89109f7db Initial imagination 2026-04-15 15:10:29 -04:00
45d1985ddc Merge pull request 'add user_oidc' (#70) from oxaliq/nextcloud:user_oidc_setup into main
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #70
2026-03-24 21:27:08 +00:00
d49f3c4ef8 Merge pull request 'fix: mention that you need to install OnlyOffice first' (#74) from ineiti/nextcloud:readme_onlyoffice into main
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #74
Reviewed-by: decentral1se <decentral1se@noreply.git.coopcloud.tech>
2026-03-18 08:26:19 +00:00
a2395c6399 @decentral1se comment
Some checks failed
continuous-integration/drone/pr Build is failing
2026-03-17 22:26:35 +01:00
e4b3bc4f22 fix: mention that you need to install OnlyOffice first 2026-03-17 22:26:35 +01:00
21ea1daf83 chore: replace depricated traefik.docker.* with traefik.swarm.*
Some checks failed
continuous-integration/drone/push Build is failing
2026-03-17 17:25:38 +01:00
ec5934e191 document user_oidc setup
Some checks failed
continuous-integration/drone/pr Build is failing
2026-03-12 09:56:53 -04:00
4c3f6fa14d add command for initializing user_oidc 2026-03-11 15:55:53 -04:00
eb3816b9c2 add env and secrets for user_oidc app 2026-03-11 15:55:26 -04:00
8b7ed8142e chore: publish 13.0.1+32.0.3-fpm release
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is passing
2026-01-14 12:22:05 +01:00
8 changed files with 101 additions and 8 deletions

View File

@ -93,6 +93,17 @@ 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
# Image / PDF previews with Imaginary (see README)
#COMPOSE_FILE="$COMPOSE_FILE:compose.imaginary-preview.yml"
# HSTS Options
# Uncomment this line to enable HSTS: https://docs.nextcloud.com/server/30/admin_manual/installation/harden_server.html

View File

@ -25,15 +25,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.
`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 +194,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.
@ -284,6 +315,20 @@ docker exec -u www-data $(docker ps -f name=foo_com_app -q) ./occ preview:pre-ge
This app will improve performance of image browsing at the cost of storage space.
## Better image previews with `imaginary`
1. Run `abra app config <domain>` and uncomment the line `#COMPOSE_FILE="$COMPOSE_FILE:compose.imaginary-preview.yml"`.
2. Re-deploy the app (`abra app deploy <domain> --force`)
3. Edit `/var/www/config/config.php` and add:
```
'enabledPreviewProviders' =>
array (
0 => 'OC\\Preview\\Imaginary',
),
'preview_imaginary_url' => 'http://imaginary:9000',
```
## Fulltextsearch using elasticsearch
1. Uncomment the following lines in your env file:

17
abra.sh
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 ''"
}

View File

@ -0,0 +1,10 @@
---
version: '3.8'
services:
imaginary:
image: nextcloud/aio-imaginary:20250822_112758
environment:
- PORT=9000
command: -concurrency 50 -enable-url-source -log-level debug
networks:
- internal

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
compose.user_oidc.yml Normal file
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}

View File

@ -10,7 +10,7 @@ services:
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

View File

@ -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}"
@ -41,7 +41,7 @@ services:
- "caddy.reverse_proxy={{upstreams 80}}"
- "caddy.tls.on_demand="
healthcheck:
test: ["CMD-SHELL", 'curl -s -N curl -Ns localhost/status.php | grep "installed\":true"']
test: ["CMD-SHELL", "curl -fsS http://localhost/status.php | grep -q '\"installed\":true'"]
interval: 30s
timeout: 10s
retries: 10
@ -95,7 +95,7 @@ services:
failure_action: rollback
order: start-first
labels:
- "coop-cloud.${STACK_NAME}.version=13.0.0+32.0.3-fpm"
- "coop-cloud.${STACK_NAME}.version=13.0.1+32.0.3-fpm"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT}"
- "backupbot.backup=${ENABLE_BACKUPS:-true}"
- "backupbot.backup.volumes.redis=false"