Compare commits

...
10 changed files with 65 additions and 15 deletions
+4
View File
@@ -107,3 +107,7 @@ DEFAULT_QUOTA="10 GB"
#HSTS_ENABLED=1
# Uncomment this line to add the `preload` part
#HSTS_PRELOAD=1
# Metrics
# COMPOSE_FILE="$COMPOSE_FILE:compose.metrics.yml"
# SECRET_METRICS_TOKEN_VERSION=v1 # length=32 charset=hex
+18 -1
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`
@@ -122,6 +128,17 @@ To disable dashboard app (since it is so corporate):
- Configure a `defaultapp` in your `config.php` or use [apporder](https://apps.nextcloud.com/apps/apporder)
## Metrics
There is a [metrics exporter](https://github.com/xperimental/nextcloud-exporter) that can be run as sidecar container, also part of the nextcloud helm charts. Its configured via alloys label-based auto-discovery provided by the updated [monitoring-stack](https://git.coopcloud.tech/coop-cloud/monitoring-ng)
To enable, uncomment
```
COMPOSE_FILE="$COMPOSE_FILE:compose.metrics.yml"
SECRET_METRICS_TOKEN_VERSION=v1 # length=32 charset=hex
```
then generate the secret with abra and run
`abra app cmd <domain> app set_metrics_token`
## Upgrading Nextcloud
Upgrading Nextcloud can be a hair raising experiance. They [don't support downgrading](https://docs.nextcloud.com/server/latest/admin_manual/maintenance/upgrade.html) even for minor versions.
+4
View File
@@ -193,3 +193,7 @@ set_windowsfriendly_filenames() {
upgrade_mariadb() {
mariadb-upgrade -p`cat /run/secrets/db_root_password`
}
set_metrics_token() {
run_occ "config:app:set serverinfo token --value '$(cat /run/secrets/metrics_token)'"
}
+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:32.0.11-fpm
volumes:
- nextcloud:/var/www/html/
- nextapps:/var/www/html/custom_apps:cached
+22
View File
@@ -0,0 +1,22 @@
version: "3.8"
services:
app:
secrets:
- metrics_token
metrics:
image: xperimental/nextcloud-exporter:0.9.0
environment:
- NEXTCLOUD_SERVER=https://$DOMAIN
- NEXTCLOUD_AUTH_TOKEN=@/run/secrets/metrics_token
secrets:
- metrics_token
networks:
- proxy
deploy:
labels:
- "prometheus.io/scrape=true"
- "prometheus.io/port=9205"
secrets:
metrics_token:
external: true
name: ${STACK_NAME}_metrics_token_${SECRET_METRICS_TOKEN_VERSION}
+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
+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:32.0.11-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.0+32.0.11-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:32.0.11-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.