# Tutorial — Nextcloud Installation on Raspberry Pi

Environment used for this guide:

- Hardware: Raspberry Pi 5
- Operating System: Ubuntu Server 25.10 (64-bit)
- Network: Local home network setup
- Services installed: Apache, MariaDB, PHP 8.2+, Nextcloud (latest stable)



## 1. Update the system



```bash

sudo apt update \&\& sudo apt upgrade -y

sudo apt install unzip curl wget -y

```



\---



## 2. Install Apache, MariaDB and PHP



```bash

sudo apt install apache2 mariadb-server libapache2-mod-php \\

php php-cli php-fpm php-mysql php-gd php-curl php-xml \\

php-mbstring php-zip php-intl php-bz2 php-imagick php-gmp -y

```



Enable services:



```bash

sudo systemctl enable apache2 mariadb

sudo systemctl start apache2 mariadb

```



\---



## 3. Secure MariaDB



```bash

sudo mariadb-secure-installation

```



\---



## 4. Create Nextcloud database



```bash

sudo mariadb

```



```sql

CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4\_general\_ci;



CREATE USER 'nextclouduser'@'localhost'

IDENTIFIED BY 'STRONG\_PASSWORD';



GRANT ALL PRIVILEGES ON nextcloud.\* TO 'nextclouduser'@'localhost';



FLUSH PRIVILEGES;

EXIT;

```



\---



## 5. Download Nextcloud



```bash

cd /var/www/html

sudo wget https://download.nextcloud.com/server/releases/latest.zip

sudo unzip latest.zip

sudo chown -R www-data:www-data nextcloud

sudo chmod -R 750 nextcloud

```



\---



## 6. Configure Apache



```bash

sudo nano /etc/apache2/sites-available/nextcloud.conf

```



Paste:



```apache

<VirtualHost \*:80>



DocumentRoot /var/www/html/nextcloud



<Directory /var/www/html/nextcloud>

Require all granted

AllowOverride All

Options FollowSymLinks MultiViews

</Directory>



ErrorLog ${APACHE\_LOG\_DIR}/nextcloud\_error.log

CustomLog ${APACHE\_LOG\_DIR}/nextcloud\_access.log combined



</VirtualHost>

```



Enable configuration:



```bash

sudo systemctl reload apache2

sudo a2ensite nextcloud.conf

sudo a2enmod rewrite headers env dir mime

systemctl restart apache2

```



\---



## 7. Enable Nextcloud Cron Job



```bash

sudo crontab -u www-data -e

```



Insert:



```bash

\*/5 \* \* \* \* php -f /var/www/html/nextcloud/cron.php

```



\---



## 8. Connect to Nextcloud



```bash

hostname -I

```



http://{IP/Hostname}/nextcloud/index.php



\---



## 9. Optional: Mount external USB storage



```bash

lsblk

sudo mkdir /mnt/usbdrive

sudo blkid

```



Edit fstab:



```bash

sudo nano /etc/fstab

```



Add:



```

UUID=XXXX /mnt/usbdrive ext4 defaults,noatime 0 2

```



Set permissions:



```bash

sudo chown -R www-data:www-data /mnt/usbdrive

sudo chmod -R 750 /mnt/usbdrive

```





