2025-02-06 23:04:37 +01:00
# Docker Nextcloud Role 🚀
2020-12-24 14:27:31 +01:00
2025-02-06 23:04:37 +01:00
This repository contains an Ansible role for deploying and managing [Nextcloud ](https://nextcloud.com/ ) using [Docker ](https://www.docker.com/ ). It covers configuration modifications, updates, backups, database management, and more. Additionally, OIDC (OpenID Connect) is supported (for example, via **Keycloak** ).
---
## Modify Config 🔧
### Enter the Container
2023-11-04 14:20:59 +01:00
```bash
2025-02-06 23:04:37 +01:00
docker-compose exec -it application /bin/sh
2023-11-04 14:20:59 +01:00
```
2022-04-08 14:17:18 +02:00
2025-02-06 23:04:37 +01:00
### Modify the Configuration
Inside the container, install a text editor and edit the config:
2022-04-08 14:17:18 +02:00
```bash
2023-11-04 14:20:59 +01:00
apk add --no-cache nano & & nano config/config.php
2022-04-08 14:17:18 +02:00
```
2025-02-06 23:04:37 +01:00
---
2020-12-26 19:09:26 +01:00
2025-02-06 23:04:37 +01:00
## Update 🔄
To update the Nextcloud container, execute the following commands on the server:
2020-12-26 19:09:26 +01:00
```bash
2025-02-06 23:04:37 +01:00
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
2020-12-26 19:09:26 +01:00
```
2021-11-11 14:25:19 +01:00
2025-02-06 23:04:37 +01:00
Afterwards, update the ** *applications.nextcloud.version*** variable to the next version and run this repository with this Ansible role.
2022-02-12 08:36:55 +00:00
2025-02-06 23:04:37 +01:00
> **Note:**
> It is only possible to update from one to the next major version at a time.
> Wait for the update to finish.
2022-02-12 08:36:55 +00:00
2025-02-06 23:04:37 +01:00
Verify the update by checking the logs:
2022-02-12 08:36:55 +00:00
```bash
2023-11-04 14:20:59 +01:00
docker-compose logs application
2022-02-12 08:36:55 +00:00
```
2022-02-12 19:52:34 +00:00
and
2020-12-26 19:09:26 +01:00
```bash
2023-11-04 14:20:59 +01:00
docker-compose exec -it application top
2020-12-26 19:09:26 +01:00
```
2025-02-06 23:04:37 +01:00
If Nextcloud remains in maintenance mode after the update, try the following:
2020-12-26 19:09:26 +01:00
```bash
2025-02-06 23:04:37 +01:00
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
2020-12-26 19:09:26 +01:00
```
2025-02-06 23:04:37 +01:00
If the update process fails, execute:
2021-08-18 21:01:22 +02:00
```bash
2025-02-06 23:04:37 +01:00
docker-compose exec -it -u www-data application /var/www/html/occ maintenance:repair --include-expensive
2021-08-18 21:01:22 +02:00
```
2025-02-06 23:04:37 +01:00
and disable any non-functioning apps.
2021-08-18 21:01:22 +02:00
2025-02-06 23:04:37 +01:00
---
## Recover Latest Backup 💾
2021-08-18 21:01:22 +02:00
2021-11-11 14:25:19 +01:00
```bash
2023-12-07 16:56:43 +01:00
cd {{path_docker_compose_instances}}nextcloud & &
2023-04-19 00:03:13 +02:00
docker-compose down & &
2023-11-16 17:07:28 +01:00
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 & &
2023-11-16 23:02:38 +01:00
bash ./recover-docker-from-local.sh "nextcloud_data" "$(sha256sum /etc/machine-id | head -c 64)"
2021-11-11 14:25:19 +01:00
```
2025-02-06 23:04:37 +01:00
---
## Database Management 🗄️
### Database Access
To access the database, execute:
2022-02-12 19:52:34 +00:00
```bash
2025-02-06 23:04:37 +01:00
docker-compose exec -it database mysql -u nextcloud -D nextcloud -p
2022-02-12 19:52:34 +00:00
```
2025-02-06 23:04:37 +01:00
### Recreate Database with New Volume
2022-02-12 19:52:34 +00:00
```bash
2023-11-04 14:20:59 +01:00
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
2022-02-12 19:52:34 +00:00
```
2025-02-06 23:04:37 +01:00
Check the process with:
```sql
2022-02-12 19:52:34 +00:00
show processlist;
2021-08-18 21:01:22 +02:00
```
2022-02-12 19:52:34 +00:00
2025-02-06 23:04:37 +01:00
---
2020-12-24 14:27:31 +01:00
2025-02-06 23:04:37 +01:00
## OCC (Nextcloud Command Line) 🔧
2020-12-24 14:27:31 +01:00
2025-02-06 23:04:37 +01:00
To use OCC, run:
2020-12-24 14:27:31 +01:00
```bash
2025-02-06 23:04:37 +01:00
docker-compose exec -it -u www-data application /var/www/html/occ
2020-12-24 14:27:31 +01:00
```
2022-02-12 19:52:34 +00:00
2025-02-06 23:04:37 +01:00
---
2022-01-30 16:13:35 +01:00
2025-02-06 23:04:37 +01:00
## App Relevant Tables 🗃️
2022-01-30 16:13:35 +01:00
2025-02-06 23:04:37 +01:00
- `oc_appconfig`
- `oc_migrations`
### Initialize Duplicates
2022-01-30 16:13:35 +01:00
```bash
2025-02-06 23:04:37 +01:00
docker-compose exec -it -u www-data application /var/www/html/occ duplicates:find-all --output
2022-01-30 16:13:35 +01:00
```
2020-12-24 14:27:31 +01:00
2025-02-06 23:04:37 +01:00
### Unlock Files
2020-12-24 14:27:31 +01:00
```bash
2025-02-06 23:04:37 +01:00
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
2020-12-24 14:27:31 +01:00
```
2021-08-17 22:19:29 +02:00
2025-02-10 22:42:08 +01:00
---
# Identity and Access Management (IAM)
## OpenID Connect (OIDC) Support 🔐
OIDC is supported in this role—for example, via **Keycloak** . OIDC-specific tasks are included when enabled, allowing integration of external authentication providers seamlessly.
## LDAP
2025-02-06 23:04:37 +01:00
---
## Architecture
2022-01-23 11:42:04 +01:00
2025-02-06 23:04:37 +01:00
### MariaDB
Until Nextcloud 24, the MariaDB version must be used.
---
## Performance: 504 Gateway Timeout ⏱️
2022-01-29 16:39:23 +01:00
```bash
2025-02-06 23:04:37 +01:00
docker-compose logs web --tail 1000 | grep 504
2022-01-29 16:39:23 +01:00
```
2022-01-29 10:21:29 +01:00
2025-02-06 23:04:37 +01:00
#### See:
- [F5 Support: K48373902 ](https://support.f5.com/csp/article/K48373902 )
- [Nextcloud Server Issue #25436 ](https://github.com/nextcloud/server/issues/25436 )
- [Nextcloud 21.0.2 Update Error ](https://help.nextcloud.com/t/update-to-next-cloud-21-0-2-has-get-an-error/117028/23?page=2 )
- [ServerFault: Nginx PHP-FPM 504 Error ](https://serverfault.com/questions/178671/nginx-php-fpm-504-gateway-time-out-error-with-almost-zero-load-on-a-test-se )
- [Manual LEMP Install Timeout ](https://help.nextcloud.com/t/solved-manual-lemp-install-php-fpm-timing-out/39070 )
---
## Further Information ℹ ️
- [Nextcloud Docker Example with Nginx Proxy, MariaDB, and FPM ](https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/docker-compose.yml )
- [Nextcloud Upgrade via Docker by Goneuland ](https://goneuland.de/nextcloud-upgrade-auf-neue-versionen-mittels-docker/ )
- [Nextcloud Data Version Issue ](https://help.nextcloud.com/t/cant-start-nextcloud-because-the-version-of-the-data-is-higher-than-the-docker-image-version-and-downgrading-is-not-supported/109438 )
- [Nextcloud Docker Issue #1302 ](https://github.com/nextcloud/docker/issues/1302 )
- [Update to Nextcloud 22 Failed Database Error ](https://help.nextcloud.com/t/update-to-22-failed-with-database-error-updated/120682 )
- [Nextcloud 21.0.0-beta1 Database Error ](https://help.nextcloud.com/t/nc-update-to-21-0-0-beta1-exception-database-error/101124/4 )
- [Reset Password for MariaDB/MySQL in Docker ](https://wolfgang.gassler.org/reset-password-mariadb-mysql-docker/ )
- [Ansible Docker Container and depends_on Issue ](https://unix.stackexchange.com/questions/478855/ansible-docker/container/and-depends-on )
- [Docker Convenience Scripts by gdiepen ](https://github.com/gdiepen/docker-convenience-scripts )
- [Issues After Upgrading to Nextcloud 21 ](https://help.nextcloud.com/t/several-issues-after-upgrading-to-nextcloud-21/113118/3 )
- [Nextcloud Talk Plugin and Turnserver in Docker ](https://forum.openmediavault.org/index.php?thread/31782-docker-nextcloud-talk-plugin-and-turnserver/ )
- [Nextcloud Talk on Docker: Turn Server Issues ](https://help.nextcloud.com/t/nextcloud-talk-im-docker/container/turn-server-auf-docker-host-kein-video/84133/10 )
---
2025-02-06 23:08:32 +01:00
## Author
**Developed by:** Kevin Veen-Birkenbach
**Website:** [https://www.veen.world/ ](https://www.veen.world/ )
*This README.md was created with the help of [ChatGPT ](https://chatgpt.com/share/67a5312c-7248-800f-ae27-0288c1c82f1d ).*
2025-02-06 23:04:37 +01:00
2025-02-06 23:08:32 +01:00
---
2025-02-06 23:04:37 +01:00
*Enjoy and happy containerizing! 😄*
2025-02-06 23:08:32 +01:00