computer-playbook/roles/docker-nextcloud/README.md

4.9 KiB

role server_docker-nextcloud

precondition

Before executing cli commands the following variable needs to be set:

NEXTCLOUD_APPLICATION_DOCKER_CONTAINER=nextcloud-application-1

update

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

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

Afterwards update the 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 logs $NEXTCLOUD_APPLICATION_DOCKER_CONTAINER

and

docker exec -it $NEXTCLOUD_APPLICATION_DOCKER_CONTAINER top

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

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

If the update process fails execute

  docker exec -it -u www-data $NEXTCLOUD_APPLICATION_DOCKER_CONTAINER /var/www/html/occ maintenance:repair

and disable the not functioning apps.

recover latest backup

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

database

database access

To access the database execute

  docker exec -it nextcloud_database_1 mysql -u nextcloud -D nextcloud -p

recreate database with new volume:

docker run --detach --name nextcloud_database_1 --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 exec -it -u www-data $NEXTCLOUD_APPLICATION_DOCKER_CONTAINER /var/www/html/occ

app relevant tables

  • oc_appconfig
  • oc_migrations

initialize duplicates

  sudo docker exec -it -u www-data $NEXTCLOUD_APPLICATION_DOCKER_CONTAINER /var/www/html/occ duplicates:find-all --output

unlock files

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

architecture

Maria DB

Until NC24 MariaDB version has to be used.

performance

504 Gateway Timeout

  docker logs nextcloud_web_1 --tail 1000 | grep 504

See

further information