How to Install Nextcloud on OpenBSD

Nextcloud is an open-source collaboration platform that allows you to store and share files, as well as manage tasks, calendars, and contacts. In this tutorial, we will guide you through the process of installing Nextcloud on OpenBSD.

Step 1: Install OpenBSD

The first step is to install OpenBSD on your system. You can download the latest version from the official OpenBSD website. Follow the installation guide to complete the OpenBSD installation process.

Step 2: Install required packages

Next, we need to install the required packages to run Nextcloud on OpenBSD. Open your terminal and run the following command:

$ doas pkg_add apache-httpd php php-gd php-curl php-pgsql postgresql-server postgresql-client

This command will install the Apache web server, PHP, PostgresQL database server, and related modules.

Step 3: Configure PostgresQL

After the installation, you need to create a new PostgreSQL database and user for Nextcloud. Run the following commands:

$ su - _postgresql
$ createdb nextcloud
$ createuser --pwprompt nextcloud

You will be prompted to set a password for the new user.

Step 4: Configure Apache

Next, we need to configure Apache to serve Nextcloud. Open the Apache configuration file /etc/apache2/httpd.conf using your favorite text editor and add the following lines:

LoadModule php7_module        /usr/local/lib/php/modules/libphp7.so
LoadModule rewrite_module     /usr/local/lib/httpd/modules/mod_rewrite.so
LoadModule headers_module     /usr/local/lib/httpd/modules/mod_headers.so

<Directory "/home/nextcloud">
  Options -Indexes +FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

<VirtualHost *:80>
  ServerName nextcloud.example.com
  DocumentRoot "/home/nextcloud"
  
  ErrorLog "/var/log/httpd/nextcloud-error.log"
  CustomLog "/var/log/httpd/nextcloud-access.log" combined
  
  <Directory "/home/nextcloud">
    Options -Indexes +FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>
  
  <IfModule mod_dir.c>
    DirectoryIndex index.php index.html
  </IfModule>
  
  <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,L]
  </IfModule>
</VirtualHost>

Note: Replace nextcloud.example.com with your domain name.

Step 5: Download and Install Nextcloud

Next, download the latest version of Nextcloud from the official website:

$ cd /tmp
$ ftp https://download.nextcloud.com/server/releases/nextcloud-22.2.0.tar.bz2

Extract the archive:

$ tar -xjf nextcloud-22.2.0.tar.bz2

Move the extracted directory to the DocumentRoot of Apache:

$ mv nextcloud /home/

Set the owner of the nextcloud directory to the user running the Apache process:

$ chown -R www /home/nextcloud

Step 6: Configure Nextcloud

Create a new configuration file for Nextcloud:

$ cd /home/nextcloud/config
$ cp config.php config.php-example
$ nano config.php

Replace the following code with the default one:

<?php
$CONFIG = array (
  'instanceid' => 'your-unique-instance-ID',
  'passwordsalt' => 'your-random-password-salt',
  'secret' => 'your-random-secret',
  'trusted_domains' =>
  array (
    0 => 'nextcloud.example.com',
  ),
  'datadirectory' => '/home/nextcloud-data',
  'overwrite.cli.url' => 'https://nextcloud.example.com',
  'dbtype' => 'pgsql',
  'version' => '22.2.0.2',
  'dbname' => 'nextcloud',
  'dbuser' => 'nextcloud',
  'dbpassword' => 'your-postgresql-password',
  'dbhost' => 'localhost:/tmp/',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'installed' => true,
);

Make sure to set the correct values for instanceid, passwordsalt, secret, trusted_domains, datadirectory, and dbpassword.

Step 7: Access Nextcloud

Restart Apache to apply the changes:

$ doas rcctl restart httpd

You can now access your Nextcloud instance by visiting https://nextcloud.example.com in your web browser. You will be asked to create a new admin user and set up storage.

Congratulations! You have successfully installed Nextcloud on OpenBSD.

If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!

Alternatively, for the best virtual desktop, try Shells!