how to install Nextcloud on Raspberry Pi: a detailed tutorial

Prerequisites Before diving into the installation process, ensure you have the following: Raspberry Pi (Model 2, 3, or 4 is recommended) Micro SD Card (At least 16GB, Class 10 recommended) Raspberry Pi Imager or Balena

Written by: David Choi

Published on: January 7, 2026

Prerequisites

Before diving into the installation process, ensure you have the following:

  1. Raspberry Pi (Model 2, 3, or 4 is recommended)
  2. Micro SD Card (At least 16GB, Class 10 recommended)
  3. Raspberry Pi Imager or Balena Etcher (for writing the OS)
  4. Power Supply (suitable for your Raspberry Pi model)
  5. Internet Connection (Ethernet or Wi-Fi)
  6. Computer (for downloading and setting up Raspbian OS)
  7. SSH Client (e.g., PuTTY if you’re on Windows)

Step 1: Download and Install Raspberry Pi OS

  1. Download Raspberry Pi Imager from the official website or use an existing image you have.
  2. Insert the Micro SD Card into your computer.
  3. Open Raspberry Pi Imager and select the Raspberry Pi OS (Lite version for minimal setup).
  4. Click on Write to flash the OS onto your Micro SD Card.
  5. Once the write process is complete, safely eject the SD card.

Step 2: Initial Setup

  1. Insert the Micro SD card into your Raspberry Pi and connect it to a monitor, keyboard, and power source.
  2. When booted up, perform the initial setup:
    • Set your language preferences.
    • Set a username and password (default user: pi).
    • Change your password for security.
  3. Connect to Wi-Fi or configure the Ethernet connection. You can find Wi-Fi options in the configuration menu.

Step 3: Update Your System

It’s crucial to have the latest updates:

sudo apt update
sudo apt upgrade -y

Reboot your Raspberry Pi after the upgrade:

sudo reboot

Step 4: Install Required Packages

Install the necessary dependencies for Nextcloud:

sudo apt install apache2 mariadb-server php libapache2-mod-php php-mysql 
php-xml php-mbstring php-curl php-zip php-gd php-json wget -y

Step 5: Secure Your Database

Log into MariaDB and secure your installation:

sudo mysql -u root -p

Within the MariaDB shell, run the following commands:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword'; -- replace with your password
FLUSH PRIVILEGES;
EXIT;

Step 6: Create a Database for Nextcloud

While still in the MariaDB shell, create a Nextcloud database and user:

CREATE DATABASE nextcloud;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'password'; -- replace 'password'
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Step 7: Download and Install Nextcloud

Navigate to the /var/www directory and download the latest version of Nextcloud:

cd /var/www
sudo wget https://download.nextcloud.com/server/releases/nextcloud-xx.x.x.zip  # Replace with the latest version
sudo apt install unzip
sudo unzip nextcloud-xx.x.x.zip
sudo chown -R www-data:www-data nextcloud
sudo chmod -R 755 nextcloud

Step 8: Configure Apache for Nextcloud

Create a new configuration file for Nextcloud in Apache:

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

Add the following configuration:

<VirtualHost *:80>
    ServerAdmin admin@example.com
    DocumentRoot /var/www/nextcloud
    Alias /nextcloud "/var/www/nextcloud/"

    <Directory /var/www/nextcloud/>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
    CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined
</VirtualHost>

Enable the new configuration and required Apache modules:

sudo a2ensite nextcloud
sudo a2enmod rewrite
sudo a2enmod headers
sudo systemctl reload apache2

Step 9: Configure PHP Settings

Nextcloud requires specific PHP settings. Edit your php.ini file:

sudo nano /etc/php/7.x/apache2/php.ini  # Adjust for your PHP version

Modify or add the following settings:

memory_limit=512M
upload_max_filesize=16G
post_max_size=16G
max_execution_time=360

Reboot Apache for the settings to take effect:

sudo systemctl restart apache2

Step 10: Complete Nextcloud Setup

Now, navigate to your Nextcloud installation in a web browser:

http://<your-pi-ip-address>/nextcloud
  1. Create an admin account by filling in the username and password.
  2. Under Database user, use:
    • Database user: nextclouduser
    • Database password: (the password you set earlier)
    • Database name: nextcloud
    • Host: localhost
  3. Click on Finish Setup.

Step 11: Enable HTTPS (Optional but Recommended)

For enhanced security, it’s advisable to install SSL. Use Certbot for Let’s Encrypt:

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache

Follow the prompts to secure your Nextcloud instance with HTTPS.

Step 12: Adjust Firewall Settings

If a firewall is active, allow HTTP and HTTPS traffic:

sudo ufw allow 'Apache Full'

Step 13: Configure Nextcloud Data Directory

You should create a separate data directory for Nextcloud. Run:

sudo mkdir /mnt/nextcloud_data
sudo chown -R www-data:www-data /mnt/nextcloud_data

Edit your Nextcloud config file to point to the new directory:

sudo nano /var/www/nextcloud/config/config.php

Add or modify the data directory line:

'datadirectory' => '/mnt/nextcloud_data',

Step 14: Optimize Performance (Optional)

You could further enhance performance by using Redis or APCu for file locking. Install Redis:

sudo apt install redis-server php-redis -y

Edit the Nextcloud config file again:

'memcache.local' => 'OCMemcacheRedis',
'memcache.distributed' => 'OCMemcacheRedis',
'redis' => array(
    'host' => '127.0.0.1',
    'port' => 6379,
),

Step 15: Regular Backup

Implement a backup strategy to secure your data:

  1. Create a cron job for regular backups of the database and files.
  2. Store backups on an external drive or cloud service.

Final Thoughts

Now you have a fully functional Nextcloud installation on your Raspberry Pi. Regularly check for updates and maintain your system for optimal performance. Happy file sharing!

Leave a Comment

Previous

top free libreoffice writer templates for crafting professional resumes

Next

complete guide to free video editing software for YouTube beginners