Table of Contents

Nextcloud - Getting Started Guide

Nextcloud is a self-hosted platform for file storage, sharing and collaboration – a private alternative to Google Drive and Dropbox that you fully control. This server comes with Nextcloud fully installed and configured with the admin password you specified during the order, with Calendar and Contacts already installed. Your private cloud works by IP address right away; a domain is optional and can be connected at any time.


Step 1 – Verify Nextcloud Works

Your server’s IP address and root password are shown in the Server Information section on the Overview tab of your server in the client portal. The application settings you entered when ordering, passwords included, are shown in the NextCloud Credentials card on the same tab. Nextcloud is already accessible by IP address – open https://your.server.ip in a browser to verify it works. You should see the Nextcloud login page.

Nextcloud admin login:

  • Username: admin
  • Password: the Admin Password you entered during the order

The admin panel is available at https://your.server.ip/settings/admin.

Note: Nextcloud login works by username only, not by email. Even if you add an email to your profile later, use admin as the login.

HTTPS without a domain. Since January 2026 Let’s Encrypt issues certificates for IP addresses (official announcement), so your server gets a real, browser-trusted certificate on first boot – before you connect any domain. Certificates of this kind are short-lived (about six days) and renew automatically. If your server is not reachable from the internet on port 80 (for example, it sits behind a router), the certificate cannot be issued – in that case open http://your.server.ip instead.

If the server’s IP address changes, Nextcloud adds the new address to its trusted list automatically at the next start of the server (this takes about two minutes after boot).

If you placed the server behind a VyOS router on a private network, the server has only a private address, so it does not get the IP certificate, and Nextcloud is set up for that private address. You can open Nextcloud over http:// on the private address through a VPN on the router (WireGuard or OpenVPN, on the router’s Configuration tab). To make Nextcloud reachable from the internet, forward ports 80 and 443 to the server on the router’s Configuration tab (Port forwarding), point your domain to the router’s public address and connect the domain (Steps 2-3): until then, Nextcloud’s links point to the private address. Nextcloud accepts only addresses from its trusted list, so on the router’s public address it shows an “untrusted domain” page until the domain is connected. Forward port 22 as well if you need SSH from the internet.

Firewall. If you turn on the Firewall for this server in the client portal, allow incoming TCP port 80 in its rules, along with 443 (HTTPS). Certificates renew over port 80 – the IP certificate every few days – and without that rule the certificate expires and the browser starts showing a warning.


Step 2 – Point Your Domain to the Server (Optional)

Skip Steps 2-4 if you want to keep using the IP address. To use your own domain, go to your domain registrar’s DNS settings and create A records pointing to your server’s IP address:

Type Name Value
A@your.server.ip
Awwwyour.server.ip

DNS changes usually take a few minutes, but can take up to 24 hours. You can check the status at dnschecker.org.


Step 3 – Connect the Domain and Enable SSL

Until you run the script below, Nextcloud answers on the domain with “Access through untrusted domain”. Once the DNS records point to your server, connect via SSH and run the script with your domain and, optionally, an email for certificate notices:

ssh root@your.server.ip
/opt/setup/get-ssl.sh yourdomain.com you@example.com

The script checks DNS, obtains a free Let’s Encrypt certificate for the domain, adds the domain to the trusted list in Nextcloud and switches it to HTTPS. Automatic renewal is already configured.


Step 4 – Access Nextcloud

After the script completes, your Nextcloud is available on the domain:

  • Nextcloud: https://yourdomain.com
  • Admin panel: https://yourdomain.com/settings/admin

Log in with username admin and the Admin Password from Step 1.


Step 5 – Connect Fiberax S3 Storage (Optional)

You can connect your Fiberax S3 storage to Nextcloud as an external folder. This lets you and your users store files directly in S3 – ideal for backups, media, or large datasets.

Prerequisites:

  • An active Fiberax S3 Storage service (order from the client portal if you don’t have one)
  • A bucket created in the S3 panel
  • Your S3 credentials (endpoint, Access Key, Secret Key) – find them under S3 Credentials in your S3 service

5.1 Enable the External Storage app

Log in to Nextcloud as admin. Go to the top-right user menu > Apps. Find “External storage support” and click Enable.

5.2 Add your S3 bucket

Go to Settings > Administration > External storages. Click “Add storage” and select “S3 Storage”.

Fill in the following fields:

Field Value
Folder nameAny name (e.g. “S3Storage”)
External storageS3 Storage
AuthenticationAccess key
BucketYour bucket name from the S3 panel
HostnameYour S3 endpoint (e.g. s3.w1.fiberax.com)
PortLeave empty (defaults to 443)
RegionLeave empty
Storage ClassLeave empty
Enable SSL✓ Checked
Enable Path Style✓ Checked
Enable multipart copy✓ Checked
Access KeyYour Access Key from S3 Credentials
Secret KeyYour Secret Key from S3 Credentials
Available forAll users, or select specific users/groups

Important: Enable Path Style must be checked for Fiberax S3. Without it, Nextcloud will fail to connect. Leave Port, Region and Storage Class empty.

5.3 Verify the connection

After saving, a green circle appears next to the mount if the connection is successful. Your users will see the S3 folder in their Files app.

Tip: You can also use S3 Service Accounts instead of your main Access Key. Create a service account in the S3 panel with read-only or read-write access to a specific bucket – this is more secure for shared environments.


Step 6 – Use an External Database (Optional)

By default, Nextcloud uses a local MariaDB database on the same server. This works well for most use cases. However, if you need to scale – for example, when the number of users or files grows significantly – you can move the database to a separate server.

Benefits of an external database:

  • Database gets dedicated CPU and RAM – Nextcloud stays responsive under heavy load
  • Independent scaling – upgrade the database server or Nextcloud server separately
  • Separate backups – easier to restore database and application independently

6.1 Prepare the external database

On your external database server (a separate server or Managed MySQL service), create a database and user for Nextcloud:

CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'%' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'%';
FLUSH PRIVILEGES;

6.2 Export data from local database

SSH into your Nextcloud server and export the current database:

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
source /root/.nc_credentials
mysqldump -u nextcloud -p"$nc_mysql_pass" nextcloud > /tmp/nextcloud-db.sql

6.3 Import data to external database

mysql -h db.server.ip -u nextcloud -p nextcloud < /tmp/nextcloud-db.sql

6.4 Update Nextcloud configuration

Edit /var/www/nextcloud/config/config.php and change the database settings:

'dbtype'     => 'mysql',
'dbhost'     => 'db.server.ip',
'dbname'     => 'nextcloud',
'dbuser'     => 'nextcloud',
'dbpassword' => 'your_strong_password',

Replace db.server.ip with the IP address of your database server. If both servers are in the same virtual data center, use the private IP for better performance and security.

6.5 Verify and disable local database

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
sudo -u www-data php /var/www/nextcloud/occ status

If Nextcloud shows installed: true and works in the browser, the migration is successful. You can then stop the local MariaDB to free up resources:

systemctl stop mariadb
systemctl disable mariadb

Important: Keep the /tmp/nextcloud-db.sql backup until you confirm everything works. Make sure the external database server allows connections from your Nextcloud server’s IP address.


Post-Installation

SSL Certificate Renewal

The certificate for the IP address is valid for about six days, a certificate for your domain for 90 days. Both renew automatically. You can test renewal with:

/snap/bin/certbot renew --dry-run

Fail2Ban – Brute-Force Protection

Your server comes with Fail2Ban pre-configured to protect both SSH and Nextcloud from brute-force attacks.

Rule Max Attempts Ban Duration
SSH5 failed logins10 minutes
Nextcloud5 failed logins1 hour

Useful commands:

# Check banned IPs
fail2ban-client status nextcloud
fail2ban-client status sshd

# Unban an IP
fail2ban-client set nextcloud unbanip 1.2.3.4

If you accidentally lock yourself out, open the Console on your server’s Overview tab in the client portal and unban your IP.

Service Management

Nextcloud stack runs via systemd. Common commands:

# Check service status
systemctl status apache2
systemctl status mariadb
systemctl status redis
systemctl status php8.3-fpm

# Restart services
systemctl restart apache2
systemctl restart php8.3-fpm

Updating Nextcloud

When a new version is available, you’ll see a notification in the admin panel. You can update through the web interface (Settings > Administration > Overview) or via SSH:

sudo -u www-data php /var/www/nextcloud/updater/updater.phar
sudo -u www-data php /var/www/nextcloud/occ upgrade

Desktop and Mobile Clients

Nextcloud offers sync clients for all platforms:

  • Desktop: Windows, macOS, Linux – download at nextcloud.com/install
  • Mobile: Android (Google Play / F-Droid), iOS (App Store)

When setting up the client, enter your Nextcloud URL (e.g. https://yourdomain.com) and log in with your credentials.

Adding Users

Go to Settings > Users to create accounts for your team. Each user gets their own storage space, calendar, contacts and can access shared folders including S3 storage.

Useful Apps

Extend Nextcloud from the built-in App Store (Apps in the top-right menu):

App What it does
Nextcloud OfficeEdit documents, spreadsheets and presentations in browser
TalkAudio/video calls and chat
Calendar (pre-installed)Shared calendars with CalDAV sync
Contacts (pre-installed)Address book with CardDAV sync
DeckKanban-style project boards
NotesMarkdown note-taking

What’s Pre-Configured

  • Caching: APCu (local) + Redis (distributed and file locking) via Unix socket
  • Background jobs: System cron every 5 minutes (recommended by Nextcloud)
  • File uploads: Up to 16 GB per file
  • PHP memory: 512 MB
  • Apps: Calendar and Contacts are pre-installed

Server Credentials

MariaDB credentials are stored in /root/.nc_credentials. Nextcloud is pre-configured to use them.

Software Included

Component Version
Ubuntu24.04 LTS
Apache2.4
MariaDB10.11
PHP (FPM)8.3
Redis7.0
NextcloudLatest
Certbot5.8 (IP address), 2.9 (domain)
Fail2Ban1.0

Troubleshooting

Problem Solution
Nextcloud doesn’t open in browser By IP address: try http://your.server.ip – behind a router the IP certificate cannot be issued. By domain: check that the A record points to the server IP (dnschecker.org) and that you ran /opt/setup/get-ssl.sh yourdomain.com
403 Forbidden right after the server is created Nextcloud stays closed to visitors until setup finishes – wait a minute and reload. If the page still shows 403 after five minutes, setup did not complete: check /opt/setup/setup.log over SSH and reinstall the server with the Rebuild button on its Overview tab in the client portal
SSL script fails DNS probably hasn’t propagated yet. Wait 10-15 minutes and run /opt/setup/get-ssl.sh yourdomain.com again. Details are in /opt/setup/get-ssl.log
“Access through untrusted domain” By domain: run /opt/setup/get-ssl.sh yourdomain.com (Step 3), it adds the domain to the trusted list. Right after the server’s IP address changed: wait about two minutes after boot. To add an address by hand, list the trusted entries and add yours under the next free number:
sudo -u www-data php /var/www/nextcloud/occ config:system:get trusted_domains
sudo -u www-data php /var/www/nextcloud/occ config:system:set trusted_domains 5 --value=yourdomain.com
S3 storage shows red/yellow indicator Check that Enable Path Style is checked. Verify endpoint, bucket name and credentials in your S3 panel
Forgot admin password SSH in and run:
sudo -u www-data php /var/www/nextcloud/occ user:resetpassword admin
Slow performance Redis caching is pre-configured. Check that it’s running: systemctl status redis
Can’t upload large files PHP limits are pre-configured to 16 GB. If you need to adjust, edit /etc/php/8.3/fpm/conf.d/99-nextcloud.ini and restart PHP-FPM: systemctl restart php8.3-fpm
Blocked by Fail2Ban Use the Console on your server’s Overview tab in the client portal to unban your IP
Forgot root password Use the Console on your server’s Overview tab in the client portal to reset it