role docker-nextcloud

modify config

Enter container:

  docker-compose exec -it application /bin/sh

Afterwards modify config:

apk add --no-cache nano && nano config/config.php

update

To update the nextcloud container execute the following commands on the server:

  docker-compose exec -it -u www-data application /var/www/html/occ maintenance:mode --on &&
  export COMPOSE_HTTP_TIMEOUT=600 &&
  export DOCKER_CLIENT_TIMEOUT=600 &&
  docker-compose down

Afterwards update the applications.nextcloud.version variable to the next version and run the this repository with this ansible role.

It is only possible to update from one to the next major version at a time

Wait for the update to finish.

You can verify that the update is finished by checking the following logs:

docker-compose logs application

and

docker-compose exec -it application top

If nextcloud stays in the maintenance mode after the update try the following:

  docker-compose exec -it -u www-data application /var/www/html/occ maintenance:mode --on
  docker-compose exec -it -u www-data application /var/www/html/occ upgrade
  docker-compose exec -it -u www-data application /var/www/html/occ maintenance:mode --off

If the update process fails execute

  docker-compose exec -it -u www-data application /var/www/html/occ maintenance:repair --include-expensive

and disable the not functioning apps.

recover latest backup

cd {{path_docker_compose_instances}}nextcloud &&
docker-compose down &&
docker-compose exec -i database mysql -u nextcloud -pPASSWORT nextcloud < "/Backups/$(sha256sum /etc/machine-id | head -c 64)/backup-docker-to-local/latest/nextcloud_database/sql/backup.sql" &&
cd {{path_administrator_scripts}}backup-docker-to-local &&
bash ./recover-docker-from-local.sh "nextcloud_data" "$(sha256sum /etc/machine-id | head -c 64)"

database

database access

To access the database execute

  docker-compose exec -it database mysql -u nextcloud -D nextcloud -p

recreate database with new volume:

docker-compose run --detach --name database --env MYSQL_USER="nextcloud" --env MYSQL_PASSWORD=PASSWORD --env MYSQL_ROOT_PASSWORD=PASSWORD --env MYSQL_DATABASE="nextcloud" -v nextcloud_database:/var/lib/mysql

The process can be checked with:

show processlist;

occ

To use occ run:

  docker-compose exec -it -u www-data application /var/www/html/occ

app relevant tables

  • oc_appconfig
  • oc_migrations

initialize duplicates

  docker-compose exec -it -u www-data application /var/www/html/occ duplicates:find-all --output

unlock files

  docker-compose exec -it -u www-data application /var/www/html/occ maintenance:mode --on
  docker-compose exec -it nextcloud_database_1 mysql -u nextcloud -pPASSWORD1234132 -D nextcloud -e "delete from oc_file_locks where 1"
  docker-compose exec -it -u www-data application /var/www/html/occ maintenance:mode --off

architecture

Maria DB

Until NC24 MariaDB version has to be used.

performance

504 Gateway Timeout

  docker-compose logs web --tail 1000 | grep 504

See

further information