# Repairing Nextcloud

You can run the maintenance commands like this:

```
sudo -u nextcloud nextcloud-occ maintenance:mode --on
sudo -u nextcloud nextcloud-occ maintenance:repair
sudo -u nextcloud nextcloud-occ maintenance:mode --off
```

## Rescan Files

```
sudo -u nextcloud nextcloud-occ files:scan --all
```

## Converting from SQLite to MySQL (mariadb)

First: keep Nextcloud set to SQLite as its dbtype, and separately launch MySQL
as a service by copying the configuration found
[here](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/nixos/modules/services/web-apps/nextcloud.nix).

No password is necessary, since the user-based auth works with UNIX sockets.

You can connect to the MySQL instance like this:

```
sudo -u nextcloud mysql -S /run/mysqld/mysqld.sock
```

Create a blank database for Nextcloud:

```sql
create database nextcloud;
```

Now setup the [conversion](https://docs.nextcloud.com/server/17/admin_manual/configuration_database/db_conversion.html):

```
sudo -u nextcloud nextcloud-occ db:convert-type mysql nextcloud localhost nextcloud
```

Ignore the password prompt. Proceed with the conversion.

Now `config.php` will be updated but the override config from NixOS will not
be. Now update your NixOS configuration:

- Remove the `mysql` service you created.
- Set `dbtype` to `mysql`.
- Set `database.createLocally` to `true`.

Rebuild your configuration.

Now, make sure to enable [4-byte
support](https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/mysql_4byte_support.html)
in the database.

## Backing Up MySQL Database

Use this mysqldump command:

```
sudo -u nextcloud mysqldump -S /run/mysqld/mysqld.sock --default-character-set=utf8mb4 nextcloud > backup.sql
```

## Converting to Postgres

Same as MySQL, but run this command instead:

```
sudo -u nextcloud nextcloud-occ db:convert-type pgsql nextcloud /run/postgresql/ nextcloud
```

Then set the `dbtype` to `pgsql`.

## Backing Up Postgres Database

Use this pg_dump command:

```
sudo -u nextcloud pg_dump nextcloud > backup.sql
```