Troubleshooting masalah pada Nextcloud
Tags: nextcloud, troubleshooting, indonesia
Published: 2022-05-20 21:34:00

Berikut ini adalah beberapa masalah yang sering dihadapi para admin Nextcloud beserta cara penyelesaiannya. Sebab tampilan pada gambar dibawah ini, adalah segalanya.
![Nextcloud - All checks passed](https://cdn.hashnode.com/res/hashnode/image/upload/v1615837737597/0cX9JybXL.png)
---

## Arahan

Dalam artikel ini dituliskan beberapa field seperti ini `{TEKS}` dalam baris perintah yang akan dijalankan. Berikut keterangan dari field yang muncul, dan apa yang harus dilakukan.
- `{DB_NAME}` = ganti ini dengan nama database mysql
- `{DB_USERNAME}` = ganti ini dengan username database mysql
- `{USERNAME}` = ganti dengan nama user bawaan Nextcloud `www-data` atau nama user lain yang punya akses di sistem, jika sudah diubah.
- `{PHP_VERSION}` = ganti dengan versi PHP yang aktif, contoh format `php72`. Khusus Centos.
- `URL_NEXTCLOUD` = ganti dengan alamat URL instalasi Nextcloud, contoh `nextcloud.domain.com`

---

## Troubleshooting

### Some files have not passed the integrity check

Pesan lengkap problemnya adalah,<br>
`Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the documentation.`

Cara penyelesaiannya,

1. Buka link `List of invalid files…` dan lihat file/folder apa saja yang ditampilkan.
1. Verifikasi keberadaan file tersebut, jika ditemukan langsung hapus.

---

### MySQL is used as database but does not support 4-byte characters

Pesan lengkap problemnya adalah,<br>
`MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL. For further details read the documentation page about this.`

Cara penyelesaiannya,

1. Login ke `mysql` (jgn menggunakan `root`).
1. Ketik `show variables like 'innodb_file_format';` lalu cek kolom Value apakah = `Barracuda`. Jika benar, lanjutkan ke langkah nomor `5`.
1. Apabila Value ternyata justru = `Antelope` atau lainnya, edit konfigurasi file `/etc/mysql/conf.d/mysql.cnf`, tambahkan kode dibawah ini.
```conf
[mysqld]
innodb_large_prefix=true
innodb_file_format=barracuda
innodb_file_per_table=1
```
1. Login ke `mysql` dan cek lagi apakah sudah berubah.
1. Kalau sudah, jalankan perintah berikut.
```mysql
ALTER DATABASE {DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
```
1. Keluar dari mysql, jalankan perintah dibawah ini secara berurutan dari dalam path tempat Nextcloud.

> Untuk CentOS
```bash
sudo -u {USERNAME} /opt/rh/{PHP_VERSION}/root/bin/php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
sudo -u {USERNAME} /opt/rh/{PHP_VERSION}/root/bin/php occ maintenance:repair
```
> Untuk Ubuntu
```bash
sudo -u {USERNAME} php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
sudo -u {USERNAME} php occ maintenance:repair
```

---

### The “X-Content-Type-Options” HTTP header is not set to “nosniff”

Pesan lengkap problemnya adalah,<br>
`The "X-Content-Type-Options" HTTP header is not set to "nosniff". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly.`

Cara penyelesaiannya,

1. Dari terminal, jalankan perintah berikut.
```bash
curl -vvv https://URL_NEXTCLOUD
```
1. Pastikan entri `X-Content-Type-Options: nosniff` ada disitu.
1. Jika ternyata entri tersebut muncul beberapa kali, periksa file `/etc/httpd/conf/httpd.conf`. Kemungkinan entri ini pernah ada sebagai bagian setting-an dari versi yang lama. Hapus jika ditemukan.

---

### The “X-Robots-Tag” HTTP header is not set to “none”

Pesan lengkap problemnya adalah,<br>
`The "X-Robots-Tag" HTTP header is not set to "none". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly.`

Cara penyelesaiannya,

1. Dari terminal, jalankan perintah berikut.
```bash
curl -vvv https://URL_NEXTCLOUD
```
2. Pastikan entri `X-Robots-Tag: none` ada disitu.
3. Jika ternyata entri tersebut muncul beberapa kali, periksa file `/etc/httpd/conf/httpd.conf`. Kemungkinan entri ini pernah ada sebagai bagian setting-an dari versi yang lama. Hapus jika ada disitu.

---

### SQLite is currently being used as the backend database

Pesan lengkap problemnya adalah,<br>
`SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend. This is particularly recommended when using the desktop client for file synchronisation. To migrate to another database use the command line tool: 'occ db:convert-type', or see the documentation ↗.`

Cara penyelesaiannya,

1. Buat db mysql baru.
1. Jalankan perintah berikut pada folder Nextcloud diinstal.

> Untuk CentOS
```bash
  sudo -u {USERNAME} /opt/rh/{PHP_VERSION}/root/bin/php occ db:convert-type --all-apps mysql {DB_USERNAME} localhost {DB_NAME}
```
> Untuk Ubuntu
```bash
  sudo -u {USERNAME} php occ db:convert-type --all-apps mysql {DB_USERNAME} localhost {DB_NAME}
```
1. Masukkan pass db jika diminta.

---

### Some columns in the database are missing a conversion to big int.

Pesan lengkap problemnya adalah,<br>
`Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running 'occ db:convert-filecache-bigint' those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read the documentation page about this.`

Cara penyelesaiannya,

Jalankan perintah berikut pada folder Nextcloud diinstal.

> Untuk CentOS
```bash
sudo -u {USERNAME} /opt/rh/{PVP_VERSION}/root/bin/php occ db:convert-filecache-bigint
```
> Untuk Ubuntu
```bash
sudo -u {USERNAME} php occ db:convert-filecache-bigint
```

---

### The PHP OPcache is not properly configured.

Pesan lengkap problemnya adalah,<br>
`The PHP OPcache is not properly configured. For better performance we recommend to use following settings in the php.ini:`

Cara penyelesaiannya,

1. Edit file `/etc/opt/rh/{PHP_VERSION}/php.d/10-opcache.ini` sesuaikan dengan konfigurasi yang disarankan pada halaman admin Nextcloud.
1. Jangan lupa aktifkan `opcache.enable_cli=1` juga.
1. Simpan, dan restart dengan `systemctl restart httpd`.

---

### The database is missing some indexes.

Pesan lengkap problemnya adalah,<br>
`The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. By running "occ db:add-missing-indices" those missing indexes could be added manually while the instance keeps running. Once the indexes are added queries to those tables are usually much faster.`

Cara penyelesaiannya,

Jalankan perintah berikut pada folder Nextcloud diinstal.

> Untuk CentOS
```bash
sudo -u {USERNAME} /opt/rh/{PHP_VERSION}/root/bin/php occ db:add-missing-indices
```
> Untuk Ubuntu
```bash
sudo -u {USERNAME} php occ db:add-missing-indices
```

---

### The database is missing some optional columns.

Pesan lengkap problemnya adalah,<br>
`The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running "occ db:add-missing-columns" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability.`

Cara penyelesaiannya,

Jalankan perintah berikut pada folder instalasi Nextcloud.

> Untuk CentOS
```bash
sudo -u {USERNAME} /opt/rh/{PVP_VERSION}/root/bin/php occ db:add-missing-columns
```
> Untuk Ubuntu
```bash
sudo -u {USERNAME} php occ db:add-missing-columns
```

---

### This instance is missing some recommended PHP modules.

Pesan lengkap problemnya adalah,<br>
`This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them.`

Cara penyelesaiannya,

1. Install modul PHP yang diminta. Contoh,

> Untuk CentOS
```bash
sudo yum install php7.0-gmp -y
```
> Untuk Ubuntu
```bash
sudo apt install php7.0-gmp -y
```
1. Cari tahu lokasi file `php.ini` dalam server dengan perintah,
```bash
php --ini
```
1. Kemudian tambahkan pada file `php.ini` baris dibawah, pada bagian Dynamic Extension.
```ini
extension=php_gmp.so
```
1. Langkah terakhir, restart `httpd` dengan perintah berikut.
```bash
systemctl restart httpd
```

---

### No memory cache has been configured.

Pesan lengkap problemnya adalah,<br>
`No memory cache has been configured. To enhance performance, please configure a memcache, if available.`

> **Perhatian**:<br>
> Menurut  [dokumentasi Nextcloud](https://docs.nextcloud.com/server/21/admin_manual/configuration_server/caching_configuration.html#additional-notes-for-redis-vs-apcu-on-memory-caching) , APCu akan menyita resource RAM yang besar, sebaiknya gunakan Redis caching jika memori server < 2GB.

Cara penyelesaiannya,

1. Untuk server Nextcloud yang berskala small, single server, dengan jumlah user aktif < 10, disarankan untuk menggunakan APCu data cache. Adapun cara instalasinya sebagai berikut.
```bash
sudo apt install php7.4-apcu -y
```
1. Sesudah instalasi, restart kembali `php7.4-fpm` dan `nginx`.
```bash
 sudo systemctl restart php7.4-fpm
sudo systemctl restart nginx
```
1. Buka file `php.ini` dengan perintah berikut.
```bash
sudo nano /etc/php/7.4/cli/php.ini
```
1. Temukan bagian yang bernama `Dynamic Extensions`, lalu tambahkan baris dibawah ini dalam bagian tersebut.
```ini
apc.enable_cli=1
```
1. Simpan perubahan pada file itu, dan lanjutkan dengan membuka file `config.php` Nextcloud.
```bash
sudo nano /var/www/nextcloud/config/config.php
```
1. Salin dan tambahkan baris dibawah ini kedalam file tersebut.
```php
'memcache.local' => '\OC\Memcache\APCu',
```
1. Simpan perubahan terhadap file tersebut, dan ulangi restart `php7.4-fpm` dan `nginx`.
```bash
 sudo systemctl restart php7.4-fpm
sudo systemctl restart nginx
```

Untuk server Nextcloud dengan skala medium dan besar, disarankan untuk mengkombinasikan penggunaan APCu + Redis. Adapun cara instalasi Redis bisa dilihat pada artikel [panduan Redis oleh Tech and Me](https://www.techandme.se/install-redis-cache-on-ubuntu-server-with-php-7-and-nextcloud/) .