Compare commits

..

3 Commits

17 changed files with 27 additions and 130 deletions

View File

@ -22,8 +22,6 @@ steps:
NGINX_CONF_VERSION: v1 NGINX_CONF_VERSION: v1
MY_CNF_VERSION: v1 MY_CNF_VERSION: v1
ENTRYPOINT_VERSION: v1 ENTRYPOINT_VERSION: v1
CRONTAB_VERSION: v1
PG_BACKUP_VERSION: v2
SECRET_DB_PASSWORD_VERSION: v1 SECRET_DB_PASSWORD_VERSION: v1
SECRET_DB_ROOT_PASSWORD_VERSION: v1 SECRET_DB_ROOT_PASSWORD_VERSION: v1
SECRET_ADMIN_PASSWORD_VERSION: v1 SECRET_ADMIN_PASSWORD_VERSION: v1

View File

@ -1,7 +1,6 @@
TYPE=nextcloud TYPE=nextcloud
TIMEOUT=900 TIMEOUT=900
ENABLE_AUTO_UPDATE=true ENABLE_AUTO_UPDATE=true
ENABLE_BACKUPS=true
DOMAIN=nextcloud.example.com DOMAIN=nextcloud.example.com
## Domain aliases ## Domain aliases
@ -48,9 +47,9 @@ DEFAULT_QUOTA="10 GB"
## Customization ## Customization
# THEMING_COLOR= # THEMING_COLOR=
# THEMING_SLOGAN= # THEMING_SLOGAN=
# COPY_ASSETS="flow_background.jpg|app:/var/www/html/themes/" # COPY_ASSETS="flow_background.jpg|app:/var/www/html/themes/background.jpg"
# COPY_ASSETS="$COPY_ASSETS icon_left_brand.svg|app:/var/www/html/themes/" # COPY_ASSETS="$COPY_ASSETS icon_left_brand.svg|app:/var/www/html/themes/logo.svg"
# COPY_ASSETS="$COPY_ASSETS icon.png|app:/var/www/html/themes/" # COPY_ASSETS="$COPY_ASSETS icon.png|app:/web/dist/assets/icons/icon.png"
# APPS="calendar" # APPS="calendar"

View File

@ -87,12 +87,7 @@ OCC_CMDS="app:disable dashboard"
- Configure a `defaultapp` in your `config.php` or use [apporder](https://apps.nextcloud.com/apps/apporder) - Configure a `defaultapp` in your `config.php` or use [apporder](https://apps.nextcloud.com/apps/apporder)
## Upgrading Nextcloud ## Upgrading Nextcloud apps
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.
Many of us have found that jumping major versions when upgrading is also a bad idea. We have however found that it's ok to skip minor version upgrades and go to the last minor version before a major version (e.g. 24.0.0 to 24.9.9 before going to 25.0.0). To extra cautious just upgrade one release at a time. Read the release notes and check your logs.
## Upgrading Nextcloud apps (plug-ins)
`abra app cmd <app-name> app run_occ '"app:update --all"'` `abra app cmd <app-name> app run_occ '"app:update --all"'`

23
abra.sh
View File

@ -1,11 +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=v6
export MY_CNF_VERSION=v5 export MY_CNF_VERSION=v5
export ENTRYPOINT_VERSION=v3 export ENTRYPOINT_VERSION=v3
export CRONTAB_VERSION=v1 export CRONTAB_VERSION=v1
export PG_BACKUP_VERSION=v2
run_occ() { run_occ() {
su -p www-data -s /bin/sh -c "/var/www/html/occ $@" su -p www-data -s /bin/sh -c "/var/www/html/occ $@"
@ -122,7 +121,7 @@ set_authentik() {
\"tokenUrl\": \"https://$AUTHENTIK_DOMAIN/application/o/token/\", \"tokenUrl\": \"https://$AUTHENTIK_DOMAIN/application/o/token/\",
\"displayNameClaim\":\"preferred_username\", \"displayNameClaim\":\"preferred_username\",
\"userInfoUrl\": \"https://$AUTHENTIK_DOMAIN/application/o/userinfo/\", \"userInfoUrl\": \"https://$AUTHENTIK_DOMAIN/application/o/userinfo/\",
\"logoutUrl\": \"https://$AUTHENTIK_DOMAIN/application/o/nextcloud/end-session/\", \"logoutUrl\": \"https://$AUTHENTIK_DOMAIN/if/session-end/nextcloud/\",
\"clientId\":\"$AUTHENTIK_ID\", \"clientId\":\"$AUTHENTIK_ID\",
\"clientSecret\":\"$AUTHENTIK_SECRET\", \"clientSecret\":\"$AUTHENTIK_SECRET\",
\"scope\":\"openid profile email nextcloud\", \"scope\":\"openid profile email nextcloud\",
@ -144,21 +143,3 @@ set_authentik() {
run_occ 'config:system:set allow_user_to_change_display_name --value=false' run_occ 'config:system:set allow_user_to_change_display_name --value=false'
run_occ 'config:system:set lost_password_link --value=disabled' run_occ 'config:system:set lost_password_link --value=disabled'
} }
disable_skeletondirectory() {
run_occ "config:system:set skeletondirectory --value ''"
}
set_windowsfriendly_filenames() {
run_occ 'config:system:set forbidden_filename_characters 0 --value=?'
run_occ 'config:system:set forbidden_filename_characters 1 --value=\<'
run_occ 'config:system:set forbidden_filename_characters 2 --value=\>'
run_occ 'config:system:set forbidden_filename_characters 3 --value=:'
run_occ 'config:system:set forbidden_filename_characters 4 --value=*'
run_occ 'config:system:set forbidden_filename_characters 5 --value=\|'
run_occ 'config:system:set forbidden_filename_characters 6 --value=\"'
}
upgrade_mariadb() {
mariadb-upgrade -p`cat /run/secrets/db_root_password`
}

View File

@ -1,24 +0,0 @@
authentik:
uncomment:
- compose.authentik.yml
- AUTHENTIK_USER_PREFIX
- AUTHENTIK_DOMAIN
- SECRET_AUTHENTIK_SECRET_VERSION
- SECRET_AUTHENTIK_ID_VERSION
initial-hooks:
- app set_authentik
shared_secrets:
nextcloud_secret: authentik_secret
nextcloud_id: authentik_id
onlyoffice:
uncomment:
- compose.onlyoffice.yml
- ONLYOFFICE_URL
- SECRET_ONLYOFFICE_JWT_VERSION
initial-hooks:
- app install_onlyoffice
collabora:
uncomment:
- COLLABORA_URL
initial-hooks:
- app install_collabora

View File

@ -2,7 +2,7 @@ version: "3.8"
services: services:
elasticsearch: elasticsearch:
image: "docker.elastic.co/elasticsearch/elasticsearch:8.17.0" image: "docker.elastic.co/elasticsearch/elasticsearch:8.11.3"
environment: environment:
- cluster.name=docker-cluster - cluster.name=docker-cluster
- bootstrap.memory_lock=true - bootstrap.memory_lock=true
@ -29,7 +29,7 @@ services:
mode: 0600 mode: 0600
searchindexer: searchindexer:
image: nextcloud:30.0.4-fpm image: nextcloud:28.0.5-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

View File

@ -9,7 +9,7 @@ services:
- MYSQL_PASSWORD_FILE=/run/secrets/db_password - MYSQL_PASSWORD_FILE=/run/secrets/db_password
db: db:
image: "mariadb:11.4" image: "mariadb:10.5"
environment: environment:
- MYSQL_DATABASE=nextcloud - MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud - MYSQL_USER=nextcloud
@ -28,11 +28,12 @@ services:
- internal - internal
deploy: deploy:
labels: labels:
backupbot.backup.pre-hook: 'mysqldump --single-transaction -u root -p"$$(cat /run/secrets/db_root_password)" nextcloud > /var/lib/mysql/backup.sql' backupbot.backup: "true"
backupbot.backup.volumes.mariadb.path: "backup.sql" backupbot.backup.pre-hook: 'mysqldump --single-transaction -u root -p"$$(cat /run/secrets/db_root_password)" nextcloud > /var/lib/mysql/backup.sql'
backupbot.restore.post-hook: 'mysql -u root -p"$$(cat /run/secrets/db_root_password)" nextcloud < /var/lib/mysql/backup.sql' backupbot.backup.post-hook: "rm -rf /var/lib/mysql/backup.sql"
backupbot.backup.path: "/var/lib/mysql/backup.sql"
healthcheck: healthcheck:
test: ["CMD-SHELL", 'mariadb-admin -p"$$(cat /run/secrets/db_root_password)" ping'] test: ["CMD-SHELL", 'mysqladmin -p"$$(cat /run/secrets/db_root_password)" ping']
interval: 30s interval: 30s
timeout: 10s timeout: 10s
retries: 10 retries: 10

View File

@ -10,7 +10,7 @@ services:
- NEXTCLOUD_UPDATE=1 - NEXTCLOUD_UPDATE=1
db: db:
image: "postgres:13" image: "postgres:12"
command: -c "max_connections=${MAX_DB_CONNECTIONS:-100}" command: -c "max_connections=${MAX_DB_CONNECTIONS:-100}"
volumes: volumes:
- "postgres:/var/lib/postgresql/data" - "postgres:/var/lib/postgresql/data"
@ -29,18 +29,10 @@ services:
retries: 5 retries: 5
deploy: deploy:
labels: labels:
backupbot.backup.pre-hook: "/pg_backup.sh backup" backupbot.backup: "true"
backupbot.backup.volumes.postgres.path: "backup.sql" backupbot.backup.pre-hook: "PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /var/lib/postgresql/data/backup.sql"
backupbot.restore.post-hook: '/pg_backup.sh restore' backupbot.backup.post-hook: "rm -rf /var/lib/postgresql/data/backup.sql"
configs: backupbot.backup.path: "/var/lib/postgresql/data/"
- source: pg_backup
target: /pg_backup.sh
mode: 0555
volumes: volumes:
postgres: postgres:
configs:
pg_backup:
name: ${STACK_NAME}_pg_backup_${PG_BACKUP_VERSION}
file: pg_backup.sh

View File

@ -1,7 +1,7 @@
version: "3.8" version: "3.8"
services: services:
web: web:
image: nginx:1.27.2 image: nginx:1.27.0
depends_on: depends_on:
- app - app
configs: configs:
@ -46,7 +46,7 @@ services:
start_period: 5m start_period: 5m
app: app:
image: nextcloud:30.0.4-fpm image: nextcloud:28.0.5-fpm
depends_on: depends_on:
- db - db
configs: configs:
@ -91,12 +91,10 @@ services:
failure_action: rollback failure_action: rollback
order: start-first order: start-first
labels: labels:
- "coop-cloud.${STACK_NAME}.version=11.0.0+30.0.4-fpm" - "coop-cloud.${STACK_NAME}.version=6.0.7+28.0.5-fpm"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}" - "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
- "backupbot.backup=${ENABLE_BACKUPS:-true}" - "backupbot.backup=true"
- "backupbot.backup.volumes.redis=false" - "backupbot.backup.path=/var/www/html/config/,/var/www/html/data/,/var/www/html/custom_apps/"
#- "backupbot.backup.volumes.nextcloud=false"
healthcheck: healthcheck:
test: ["CMD-SHELL", 'SCRIPT_NAME=status SCRIPT_FILENAME=/var/www/html/status.php REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000 | grep "installed\":true"'] test: ["CMD-SHELL", 'SCRIPT_NAME=status SCRIPT_FILENAME=/var/www/html/status.php REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000 | grep "installed\":true"']
interval: 30s interval: 30s
@ -105,7 +103,7 @@ services:
start_period: 15m start_period: 15m
cron: cron:
image: nextcloud:30.0.4-fpm image: nextcloud:28.0.5-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 +119,7 @@ services:
cache: cache:
image: redis:7.4.1-alpine image: redis:7.2.4-alpine
networks: networks:
- internal - internal
volumes: volumes:

View File

@ -136,9 +136,6 @@ http {
# then Nginx will encounter an infinite rewriting loop when it prepends `/index.php` # then Nginx will encounter an infinite rewriting loop when it prepends `/index.php`
# to the URI, resulting in a HTTP 500 error response. # to the URI, resulting in a HTTP 500 error response.
location ~ \.php(?:$|/) { location ~ \.php(?:$|/) {
# Required for legacy support
rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|.+\/richdocumentscode(_arm64)?\/proxy) /index.php$request_uri;
fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info; set $path_info $fastcgi_path_info;

View File

@ -1,34 +0,0 @@
#!/bin/bash
set -e
BACKUP_FILE='/var/lib/postgresql/data/backup.sql'
function backup {
export PGPASSWORD=$(cat /run/secrets/db_password)
pg_dump -U ${POSTGRES_USER} ${POSTGRES_DB} > $BACKUP_FILE
}
function restore {
cd /var/lib/postgresql/data/
restore_config(){
# Restore allowed connections
cat pg_hba.conf.bak > pg_hba.conf
su postgres -c 'pg_ctl reload'
}
# Don't allow any other connections than local
cp pg_hba.conf pg_hba.conf.bak
echo "local all all trust" > pg_hba.conf
su postgres -c 'pg_ctl reload'
trap restore_config EXIT INT TERM
# Recreate Database
psql -U ${POSTGRES_USER} -d postgres -c "DROP DATABASE ${POSTGRES_DB} WITH (FORCE);"
createdb -U ${POSTGRES_USER} ${POSTGRES_DB}
psql -U ${POSTGRES_USER} -d ${POSTGRES_DB} -1 -f $BACKUP_FILE
trap - EXIT INT TERM
restore_config
}
$@

View File

@ -1 +0,0 @@
https://docs.nextcloud.com/server/latest/admin_manual/release_notes/upgrade_to_30.html

View File

@ -1,4 +0,0 @@
Upgrades mariadb from 10.5 to 11.4
NOTE: If your Nextcloud instance is using mariadb, after running this update you MUST run the database upgrade command:
`abra app command nextcloud.yourserver.org db upgrade_mariadb`
More info: https://mariadb.com/kb/en/upgrading-from-mariadb-10-11-to-mariadb-11-4/

1
release/6.0.5+28.0.5-fpm Normal file
View File

@ -0,0 +1 @@
BREAKING CHANGE: compose.apps.yml was split to compose.bbb.yml and compose.onlyoffice.yml, configuration update is required!

View File

@ -1 +0,0 @@
BREAKING CHANGE: compose.apps.yml is now split for bbb and onlyoffice, configs must be updated

View File

@ -1 +0,0 @@
Added automated customization options. Config needs to be updated to be able to use it.