Compare commits
13 Commits
11.2.0+30.
...
feature/in
Author | SHA1 | Date | |
---|---|---|---|
42c90cce21 | |||
8c5d843ba4 | |||
7074744ba8 | |||
cb0a103e04 | |||
ff6873a52c | |||
9408a6ab81 | |||
c4bb6d0932 | |||
7a6256f78d | |||
8be413fe71 | |||
af36d22633 | |||
85e5070b8d | |||
36615bc097 | |||
a3cd6741eb
|
14
.env.sample
14
.env.sample
@ -55,6 +55,12 @@ DEFAULT_QUOTA="10 GB"
|
|||||||
# APPS="calendar"
|
# APPS="calendar"
|
||||||
|
|
||||||
# COLLABORA_URL=https://collabora.example.com
|
# COLLABORA_URL=https://collabora.example.com
|
||||||
|
## IMPORTANT FOR SECURITY REASONS WHEN RUNNING COLLABORA
|
||||||
|
## list of IP addresses that are allowed to make WOPI requests. Use the default
|
||||||
|
## when running the collabora server on the same machine as nextcloud.
|
||||||
|
## Otherwise set this to the IP address range of your collabora server(s) i.e. 1.2.3.4/32
|
||||||
|
## https://docs.nextcloud.com/server/latest/admin_manual/office/configuration.html#wopi-settings
|
||||||
|
# COLLABORA_ALLOWLIST="172.16.0.0/12"
|
||||||
|
|
||||||
# COMPOSE_FILE="$COMPOSE_FILE:compose.onlyoffice.yml"
|
# COMPOSE_FILE="$COMPOSE_FILE:compose.onlyoffice.yml"
|
||||||
# ONLYOFFICE_URL=https://onlyoffice.example.com
|
# ONLYOFFICE_URL=https://onlyoffice.example.com
|
||||||
@ -67,7 +73,7 @@ DEFAULT_QUOTA="10 GB"
|
|||||||
|
|
||||||
# COMPOSE_FILE="$COMPOSE_FILE:compose.whiteboard.yml"
|
# COMPOSE_FILE="$COMPOSE_FILE:compose.whiteboard.yml"
|
||||||
# APPS="$APPS whiteboard"
|
# APPS="$APPS whiteboard"
|
||||||
# WHITEBOARD_JWT="" # generate JWT token for whiteboard!
|
# SECRET_WHITEBOARD_JWT_VERSION=v1
|
||||||
|
|
||||||
# COMPOSE_FILE="$COMPOSE_FILE:compose.authentik.yml"
|
# COMPOSE_FILE="$COMPOSE_FILE:compose.authentik.yml"
|
||||||
# APPS="$APPS sociallogin"
|
# APPS="$APPS sociallogin"
|
||||||
@ -81,3 +87,9 @@ DEFAULT_QUOTA="10 GB"
|
|||||||
|
|
||||||
#COMPOSE_FILE="$COMPOSE_FILE:compose.fulltextsearch.yml"
|
#COMPOSE_FILE="$COMPOSE_FILE:compose.fulltextsearch.yml"
|
||||||
#SECRET_ELASTICSEARCH_PASSWORD_VERSION=v1
|
#SECRET_ELASTICSEARCH_PASSWORD_VERSION=v1
|
||||||
|
|
||||||
|
# HSTS Options
|
||||||
|
# Uncomment this line to enable HSTS: https://docs.nextcloud.com/server/30/admin_manual/installation/harden_server.html
|
||||||
|
#HSTS_ENABLED=1
|
||||||
|
# Uncomment this line to add the `preload` part
|
||||||
|
#HSTS_PRELOAD=1
|
||||||
|
@ -286,3 +286,11 @@ And you can populate the index manually and check if any errors occur:
|
|||||||
```
|
```
|
||||||
abra app cmd <domain> app run_occ '"fulltextsearch:index"'
|
abra app cmd <domain> app run_occ '"fulltextsearch:index"'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Troubleshooting fulltextsearch
|
||||||
|
|
||||||
|
The fulltextsearch plugin might be stuck with this error: "Index is already running". In that case the following command can get things runing again:
|
||||||
|
|
||||||
|
```
|
||||||
|
abra app run <domain> db /bin/sh -- -c 'echo "delete from oc_fulltextsearch_ticks;" | mariadb -u root -p$(cat /run/secrets/db_root_password) nextcloud'
|
||||||
|
```
|
||||||
|
12
abra.sh
12
abra.sh
@ -1,9 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
export FPM_TUNE_VERSION=v5
|
export FPM_TUNE_VERSION=v5
|
||||||
export NGINX_CONF_VERSION=v7
|
export NGINX_CONF_VERSION=v8
|
||||||
export MY_CNF_VERSION=v5
|
export MY_CNF_VERSION=v6
|
||||||
export ENTRYPOINT_VERSION=v3
|
export ENTRYPOINT_VERSION=v3
|
||||||
|
export ENTRYPOINT_WHITEBOARD_VERSION=v1
|
||||||
export CRONTAB_VERSION=v1
|
export CRONTAB_VERSION=v1
|
||||||
export PG_BACKUP_VERSION=v2
|
export PG_BACKUP_VERSION=v2
|
||||||
|
|
||||||
@ -91,12 +92,15 @@ install_onlyoffice() {
|
|||||||
install_collabora() {
|
install_collabora() {
|
||||||
install_apps richdocuments
|
install_apps richdocuments
|
||||||
set_app_config richdocuments wopi_url "$COLLABORA_URL"
|
set_app_config richdocuments wopi_url "$COLLABORA_URL"
|
||||||
|
# important for security reaosns
|
||||||
|
# https://docs.nextcloud.com/server/latest/admin_manual/office/configuration.html#wopi-settings
|
||||||
|
set_app_config richdocuments wopi_allowlist "$COLLABORA_ALLOWLIST"
|
||||||
}
|
}
|
||||||
|
|
||||||
install_whiteboard() {
|
install_whiteboard() {
|
||||||
install_apps whiteboard
|
install_apps whiteboard
|
||||||
set_app_config whiteboard collabBackendUrl "https://${DOMAIN}/whiteboard"
|
set_app_config whiteboard collabBackendUrl "https://${DOMAIN}/whiteboard"
|
||||||
set_app_config whiteboard jwt_secret_key "${WHITEBOARD_JWT}"
|
set_app_config whiteboard jwt_secret_key "$(cat /run/secrets/whiteboard_jwt)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -168,4 +172,4 @@ set_windowsfriendly_filenames() {
|
|||||||
|
|
||||||
upgrade_mariadb() {
|
upgrade_mariadb() {
|
||||||
mariadb-upgrade -p`cat /run/secrets/db_root_password`
|
mariadb-upgrade -p`cat /run/secrets/db_root_password`
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ services:
|
|||||||
mode: 0600
|
mode: 0600
|
||||||
|
|
||||||
searchindexer:
|
searchindexer:
|
||||||
image: nextcloud:30.0.6-fpm
|
image: nextcloud:31.0.6-fpm
|
||||||
volumes:
|
volumes:
|
||||||
- nextcloud:/var/www/html/
|
- nextcloud:/var/www/html/
|
||||||
- nextapps:/var/www/html/custom_apps:cached
|
- nextapps:/var/www/html/custom_apps:cached
|
||||||
|
@ -16,6 +16,7 @@ services:
|
|||||||
- MYSQL_PASSWORD_FILE=/run/secrets/db_password
|
- MYSQL_PASSWORD_FILE=/run/secrets/db_password
|
||||||
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_password
|
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_password
|
||||||
- MAX_DB_CONNECTIONS=${MAX_DB_CONNECTIONS:-100}
|
- MAX_DB_CONNECTIONS=${MAX_DB_CONNECTIONS:-100}
|
||||||
|
- INNODB_BUFFER_POOL_SIZE=${INNODB_BUFFER_POOL_SIZE:-1G}"
|
||||||
configs:
|
configs:
|
||||||
- source: my_tune
|
- source: my_tune
|
||||||
target: /etc/mysql/conf.d/my-tune.cnf
|
target: /etc/mysql/conf.d/my-tune.cnf
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
version: "3.8"
|
version: "3.8"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
app:
|
||||||
|
secrets:
|
||||||
|
- whiteboard_jwt
|
||||||
|
|
||||||
whiteboard:
|
whiteboard:
|
||||||
image: ghcr.io/nextcloud-releases/whiteboard:v1.0.5
|
image: ghcr.io/nextcloud-releases/whiteboard:v1.1.2
|
||||||
deploy:
|
deploy:
|
||||||
labels:
|
labels:
|
||||||
- traefik.enable=true
|
- traefik.enable=true
|
||||||
@ -13,10 +17,28 @@ services:
|
|||||||
- traefik.http.routers.${STACK_NAME}_whiteboard.tls.certresolver=${LETS_ENCRYPT_ENV}
|
- traefik.http.routers.${STACK_NAME}_whiteboard.tls.certresolver=${LETS_ENCRYPT_ENV}
|
||||||
- traefik.http.middlewares.${STACK_NAME}_whiteboard-stripprefix.stripprefix.prefixes=/whiteboard
|
- traefik.http.middlewares.${STACK_NAME}_whiteboard-stripprefix.stripprefix.prefixes=/whiteboard
|
||||||
- traefik.http.routers.${STACK_NAME}_whiteboard.middlewares=${STACK_NAME}_whiteboard-stripprefix
|
- traefik.http.routers.${STACK_NAME}_whiteboard.middlewares=${STACK_NAME}_whiteboard-stripprefix
|
||||||
|
configs:
|
||||||
|
- source: entrypoint_whiteboard
|
||||||
|
target: /custom-entrypoint.sh
|
||||||
|
entrypoint: ["sh", "/custom-entrypoint.sh"]
|
||||||
|
user: root
|
||||||
networks:
|
networks:
|
||||||
- proxy
|
- proxy
|
||||||
ports:
|
ports:
|
||||||
- 3002:3002
|
- 3002:3002
|
||||||
|
secrets:
|
||||||
|
- whiteboard_jwt
|
||||||
environment:
|
environment:
|
||||||
- NEXTCLOUD_URL=https://$DOMAIN
|
- NEXTCLOUD_URL=https://$DOMAIN
|
||||||
- JWT_SECRET_KEY=${WHITEBOARD_JWT}
|
- JWT_SECRET_KEY_FILE=/run/secrets/whiteboard_jwt
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
whiteboard_jwt:
|
||||||
|
external: true
|
||||||
|
name: ${STACK_NAME}_whiteboard_jwt_${SECRET_WHITEBOARD_JWT_VERSION}
|
||||||
|
|
||||||
|
configs:
|
||||||
|
entrypoint_whiteboard:
|
||||||
|
name: ${STACK_NAME}_entrypoint_whiteboard_${ENTRYPOINT_WHITEBOARD_VERSION}
|
||||||
|
file: entrypoint.whiteboard.sh.tmpl
|
||||||
|
template_driver: golang
|
13
compose.yml
13
compose.yml
@ -1,7 +1,7 @@
|
|||||||
version: "3.8"
|
version: "3.8"
|
||||||
services:
|
services:
|
||||||
web:
|
web:
|
||||||
image: nginx:1.27.4
|
image: nginx:1.29.0
|
||||||
depends_on:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
configs:
|
configs:
|
||||||
@ -12,6 +12,8 @@ services:
|
|||||||
- X_FRAME_OPTIONS_ENABLED
|
- X_FRAME_OPTIONS_ENABLED
|
||||||
- DOMAIN
|
- DOMAIN
|
||||||
- STACK_NAME
|
- STACK_NAME
|
||||||
|
- HSTS_ENABLED
|
||||||
|
- HSTS_PRELOAD
|
||||||
volumes:
|
volumes:
|
||||||
- nextcloud:/var/www/html/
|
- nextcloud:/var/www/html/
|
||||||
- nextapps:/var/www/html/custom_apps:cached
|
- nextapps:/var/www/html/custom_apps:cached
|
||||||
@ -46,7 +48,7 @@ services:
|
|||||||
start_period: 5m
|
start_period: 5m
|
||||||
|
|
||||||
app:
|
app:
|
||||||
image: nextcloud:30.0.6-fpm
|
image: nextcloud:31.0.6-fpm
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
configs:
|
configs:
|
||||||
@ -72,6 +74,7 @@ services:
|
|||||||
- TRUSTED_PROXIES=10.0.0.0/8
|
- TRUSTED_PROXIES=10.0.0.0/8
|
||||||
- REDIS_HOST=cache
|
- REDIS_HOST=cache
|
||||||
- OVERWRITEPROTOCOL=https
|
- OVERWRITEPROTOCOL=https
|
||||||
|
- OVERWRITECLIURL=https://${DOMAIN}
|
||||||
- PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT:-1G}
|
- PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT:-1G}
|
||||||
- FPM_MAX_CHILDREN=${FPM_MAX_CHILDREN:-131}
|
- FPM_MAX_CHILDREN=${FPM_MAX_CHILDREN:-131}
|
||||||
- FPM_START_SERVERS=${FPM_START_SERVERS:-32}
|
- FPM_START_SERVERS=${FPM_START_SERVERS:-32}
|
||||||
@ -91,7 +94,7 @@ services:
|
|||||||
failure_action: rollback
|
failure_action: rollback
|
||||||
order: start-first
|
order: start-first
|
||||||
labels:
|
labels:
|
||||||
- "coop-cloud.${STACK_NAME}.version=11.2.0+30.0.6-fpm"
|
- "coop-cloud.${STACK_NAME}.version=12.0.1+31.0.6-fpm"
|
||||||
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
|
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
|
||||||
- "backupbot.backup=${ENABLE_BACKUPS:-true}"
|
- "backupbot.backup=${ENABLE_BACKUPS:-true}"
|
||||||
- "backupbot.backup.volumes.redis=false"
|
- "backupbot.backup.volumes.redis=false"
|
||||||
@ -105,7 +108,7 @@ services:
|
|||||||
start_period: 15m
|
start_period: 15m
|
||||||
|
|
||||||
cron:
|
cron:
|
||||||
image: nextcloud:30.0.6-fpm
|
image: nextcloud:31.0.6-fpm
|
||||||
volumes:
|
volumes:
|
||||||
- nextcloud:/var/www/html/
|
- nextcloud:/var/www/html/
|
||||||
- nextapps:/var/www/html/custom_apps:cached
|
- nextapps:/var/www/html/custom_apps:cached
|
||||||
@ -121,7 +124,7 @@ services:
|
|||||||
|
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
image: redis:7.4.2-alpine
|
image: redis:8.0.2-alpine
|
||||||
networks:
|
networks:
|
||||||
- internal
|
- internal
|
||||||
volumes:
|
volumes:
|
||||||
|
6
entrypoint.whiteboard.sh.tmpl
Normal file
6
entrypoint.whiteboard.sh.tmpl
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
export JWT_SECRET_KEY=$(cat /run/secrets/whiteboard_jwt)
|
||||||
|
|
||||||
|
exec npm run server:start
|
@ -4,7 +4,7 @@
|
|||||||
# https://mariadb.com/kb/en/library/performance-schema-overview/
|
# https://mariadb.com/kb/en/library/performance-schema-overview/
|
||||||
|
|
||||||
[server]
|
[server]
|
||||||
innodb_buffer_pool_size = 1G
|
innodb_buffer_pool_size = {{ env "INNODB_BUFFER_POOL_SIZE" }}
|
||||||
innodb_flush_log_at_trx_commit = 2
|
innodb_flush_log_at_trx_commit = 2
|
||||||
innodb_log_buffer_size = 32M
|
innodb_log_buffer_size = 32M
|
||||||
innodb_max_dirty_pages_pct = 90
|
innodb_max_dirty_pages_pct = 90
|
||||||
|
@ -45,6 +45,13 @@ http {
|
|||||||
# could take several months.
|
# could take several months.
|
||||||
#add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
|
#add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
|
||||||
|
|
||||||
|
{{ if eq (env "HSTS_ENABLED") "1" }}
|
||||||
|
{{ if eq (env "HSTS_PRELOAD") "1" }}
|
||||||
|
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
|
||||||
|
{{ else }}
|
||||||
|
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains;" always;
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
# set max upload size
|
# set max upload size
|
||||||
client_max_body_size 512M;
|
client_max_body_size 512M;
|
||||||
|
Reference in New Issue
Block a user