---
title: "Cloud server with Nextcloud and ONLYOFFICE"
sidebar_label: "Nextcloud and ONLYOFFICE"
sidebar_position: 9
toc_max_heading_level: 3
description: "How to create a cloud server for collaborative data storage and document work"
---

import EditIcon from '@selectel/docux/icons/edit'
import CheckIcon from '@selectel/docux/icons/check'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import {CustomTable} from '@selectel/docux/components'
import Formbricks from '@theme/MDXComponents/Formbricks'
import CopyIcon from '@selectel/docux/icons/copy'
import CreateServer from '@site/i18n/en/docusaurus-plugin-content-docs/current/_partials/cloud-servers/applications/create-server-for-apps.mdx'

# Cloud server with Nextcloud and ONLYOFFICE

Nextcloud is an open-source platform for building data storage: for data sharing and synchronization, as well as working with documents and files. Nextcloud users can have full control over their data.

ONLYOFFICE is an open-source service for collaborative document work: editing, reviewing, and version control.

You can [create a cloud server with Nextcloud and ONLYOFFICE pre-installed](#create-cloud-server-with-nextcloud-and-onlyoffice). In Russia, the application runs on a cloud server with a configured [SelectOS 1 64-bit](https://selectos.selectel.ru/news/mega/) operating system. In other [countries](/infrastructure/locations.mdx#country) — Ubuntu 22.04.

Before creating a cloud server with an application, review the [software license agreements](https://423.selcdn.ru/kb/license-agreements-for-application-images-LANG.pdf) included in the image.

## Minimum resource requirements \{#minimum-requirements}

<CustomTable>
  <table>
    <thead>
      <th />

      <th>Up to 500 users</th><th>500 users or more</th>
    </thead>

    <tbody>
      <tr>
        <th>vCPU count</th><td>1</td><td>2</td>
      </tr>

      <tr>
        <th>RAM</th><td>2 GB</td><td>4 GB</td>
      </tr>

      <tr>
        <th>Boot volume</th><td>20 GB</td><td>40 GB</td>
      </tr>
    </tbody>
  </table>
</CustomTable>

## Create a cloud server with Nextcloud and ONLYOFFICE \{#create-cloud-server-with-nextcloud-and-onlyoffice}

For Nextcloud and ONLYOFFICE to work, the cloud server must be accessible from the internet. To do this, when creating the server, you need to create a private subnet and attach a public floating IP address. To configure Nextcloud and ONLYOFFICE when creating the server, you must specify user data — custom operating system configuration parameters.

You can set one of two sets of parameters:

* with automatic creation of a PostgreSQL database on the server;
* with a connection to the created [Managed Database PostgreSQL](/managed-databases/postgresql/) version 13 or higher.

After creating a server with Nextcloud and ONLYOFFICE, a free [TLS certificate from Let’s Encrypt®](/certificates-manager/certificates/lets-encrypt.mdx) will be automatically issued for the domain you specify. To issue the certificate, you need to add an A record for the domain and specify the public floating IP address of the server as the record value. You can add the domain in [Selectel DNS hosting (actual](/dns-hosting/)).

1. [Create a public floating IP address](#create-floating-ip).

2. [Add an A record for the domain](#add-a-record).

3. [Create a cloud server with Nextcloud and ONLYOFFICE](#create-nextcloud-and-onlyoffice-server).

### 1. Create a public floating IP address \{#create-floating-ip}

Create a public floating IP address so that the cloud server with Nextcloud and ONLYOFFICE is accessible from the internet.

Use the [Create a public floating IP address](/cloud-servers/cloud-networks/public-floating-ip-addresses.mdx#create-public-floating-ip) subsection of the [Public Floating IP Addresses](/cloud-servers/cloud-networks/public-floating-ip-addresses.mdx) guide.

### 2. Add an A record for the domain \{#add-a-record}

[Add a resource record](/dns-hosting/records/add-record.mdx) to access Nextcloud and ONLYOFFICE via the domain.

Specify:

* [resource record type](/dns-hosting/records/add-record.mdx#record-types) — A; ;
* record value — the public floating IP address you [created in step 1](#create-floating-ip).

### 3. Create a cloud server with Nextcloud and ONLYOFFICE \{#create-nextcloud-and-onlyoffice-server}

<CreateServer AppNameInPanel="Nextcloud" MinConfig="4 vCPU, RAM starting from 8 GB and a boot disk size starting from 16 GB for 500 users and less" OptionalVolumes="Add an additional" VolumeSize="Specify the size of the network disk starting from 50 GB. The disk size depends on your data storage needs—for example, if you have 50 employees and each requires 10 GB, specify a disk size of 500 GB" />

<div style={{paddingLeft:'2em'}}>
  <Tabs queryString="add-user-data">
    <TabItem value="standard" default>
      <TabItemLabel>
        Creating a database on the server
      </TabItemLabel>

      ```yaml
      #cloud-config

      write_files:
      - path: "/opt/main.yml"
        permissions: "0644"
        content: |
          nextcloud_admin_name: "<administrator_name>"
          nextcloud_admin_pwd: "<administrator_password>"
          nextcloud_admin_email: "<root@example.com>"
          nextcloud_domain: "<example.com>"
      ```

      Specify:

      * `<administrator_name>` — Nextcloud administrator name; ;
      * `<administrator_password>` — Nextcloud administrator password. Must be more than eight characters; ;
      * `<root@example.com>` — Nextcloud administrator email for account creation and Let's Encrypt® notifications; ;
      * `<example.com>` — domain to access Nextcloud that you [added earlier](#add-a-record).
    </TabItem>

    <TabItem value="with-dbaas">
      <TabItemLabel>
        Connecting an existing Managed Database
      </TabItemLabel>

      ```yaml
      #cloud-config

      write_files:
      - path: "/opt/gomplate/values/user-values.yaml"
        permissions: "0644"
        content: |
          nextcloud_admin_name: "<administrator_name>"
          nextcloud_admin_pwd: "<administrator_password>"
          nextcloud_admin_email: "<root@example.com>"
          nextcloud_domain: "<example.com>"
          nextcloud_db_external: true
          nextcloud_db_host: "<host>;sslmode=verify-ca;sslrootcert=/etc/ssl/dbaas-ca.crt"
          nextcloud_db_name: "<database_name>"
          nextcloud_db_admin: "<database_user_name>"
          nextcloud_db_pwd: "<database_user_password>"
      ```

      Specify:

      * `<administrator_name>` — Nextcloud administrator name; ;
      * `<administrator_password>` — Nextcloud administrator password. Must be more than eight characters; ;
      * `<root@example.com>` — Nextcloud administrator email for account creation and Let's Encrypt® notifications; ;
      * `<example.com>` — domain to access Nextcloud that you [added earlier](#add-a-record);
      * `nextcloud_db_external: true` — parameter to use the Managed Database; ;
      * `<host>` — DNS address of the PostgreSQL Managed Database. You can view it in the [control panel](https://my.selectel.ru/vpc/default/dbaas/): in the top menu, click **Products** → **Managed Databases** → cluster page → **Settings** tab → **Node addresses and statuses** block → \*\*DNS addresses; \*\*;
      * `<database_name>` — name of the PostgreSQL Managed Database. You can view it in the [control panel](https://my.selectel.ru/vpc/default/dbaas/): in the top menu, click **Products** → **Managed Databases** → cluster page → \*\*Databases; \*\*;
      * `<database_user_name>` — user name of the PostgreSQL Managed Database. You can view it in the [control panel](https://my.selectel.ru/vpc/default/dbaas/): in the top menu, click **Products** → **Managed Databases** → cluster page → **Databases** tab → database card → \*\*Database owner; \*\*;
      * `<database_user_password>` — password of the PostgreSQL Managed Database user. The password is not stored in the control panel — if you have lost it, [change the password](/managed-databases/postgresql/manage-users.mdx#change-user-password).
    </TabItem>
  </Tabs>
</div>

<Formbricks />
