Use a Block Storage Volume with Nextcloud

Traducciones al Español
Estamos traduciendo nuestros guías y tutoriales al Español. Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.
Create a Linode account to try this guide with a $ credit.
This credit will be applied to any valid services used during your first  days.

What is Nextcloud?

Nextcloud is a cloud storage platform that allows you to store and access your files from any device. This guide shows how to attach a Block Storage Volume to a Linode in order to meet the demands of a large file library.

Before You Begin

  • You will need root access to your Linode, or a user account with sudo privilege.
  • Update your system.

Install Docker and Docker Compose


To install Docker CE (Community Edition), follow the instructions within one of the guides below:

For complete instructions on even more Linux distributions, reference the Install Docker Engine section of Docker’s official documentation.

Docker Compose

Docker Compose is available in plugin and standalone variants. However, Docker’s official documentation prioritizes the plugin. Further, the plugin has a straightforward installation and works well with past Docker Compose commands.

These steps thus show how to install the Docker Compose plugin. If you are interested in installing the standalone Docker Compose application, follow Docker’s official installation guide.


Many tutorials retain the Docker Compose standalone command format, which looks like the following:

docker-compose [command]

Be sure to replace this with the plugin’s command format when using this installation method. This typically just means replacing the hyphen with a space, as in:

docker compose [command]
  1. Enable the Docker repository for your system’s package manager. The repository is typically already enabled after you have installed the Docker engine. Follow our relevant guide on installing Docker to enable the repository on your system.

  2. Update your package manager, and install the Docker Compose plugin.

    • On Debian and Ubuntu systems, use the following commands:
    sudo apt update
    sudo apt install docker-compose-plugin
    • On CentOS, Fedora, and other RPM-based distributions, use the following commands:
    sudo yum update
    sudo yum install docker-compose-plugin

Attach a Block Storage Volume

  1. Create a Block Storage Volume and attach it to your Linode. See View, Create, and Delete Block Storage Volumes for instructions on how to do this from the Linode Manager.

    • You can also use the Linode CLI to create a new Volume. The command below creates a 20GB Volume with the label nextcloud attached to a Linode labeled nextcloud-linode. Adjust the command as needed:

        linode-cli volume create nextcloud -l nextcloud-linode -s 20
  2. Create a filesystem on the Block Storage Volume, then create a mount point per the instructions from the Linode Manager:

  3. Check available disk space. Notice that there is some overhead with the Volume due to the file system:

    df -BG
    Filesystem     1G-blocks  Used Available Use% Mounted on
    /dev/root            20G    2G       18G   6% /
    devtmpfs              1G    0G        1G   0% /dev
    tmpfs                 1G    0G        1G   0% /dev/shm
    tmpfs                 1G    1G        1G   2% /run
    tmpfs                 1G    0G        1G   0% /run/lock
    tmpfs                 1G    0G        1G   0% /sys/fs/cgroup
    tmpfs                 1G    0G        1G   0% /run/user/1000
    /dev/sdc             20G    1G       19G   1% /mnt/nextcloud
  4. Change the ownership of the mount point:

    sudo chown username:username /mnt/nextcloud/

Configure Nextcloud with Docker Compose

Nextcloud provides an official docker-compose.yml file for persisting data to a database when running the Nextcloud container. You can edit this file to bind the data volumes to your Block Storage Volume’s mount point.

  1. Create a directory for Nextcloud:

    mkdir ~/nextcloud && cd ~/nextcloud
  2. In a text editor, create docker-compose.yml and add the following content. Add an appropriate password for MariaDB:

    File: ~/nextcloud/docker-compose.yml
    version: '2'
        image: mariadb
        restart: always
          - /mnt/nextcloud/:/var/lib/mysql
          - MYSQL_PASSWORD=
          - MYSQL_DATABASE=nextcloud
          - MYSQL_USER=nextcloud
        image: nextcloud
          - 8080:80
          - db
          - /mnt/nextcloud/data:/var/www/html
        restart: always
  3. Launch the Docker Compose configuration:

    docker-compose up -d

    Nextcloud should be available at port 8080 on your Linode’s public IP address.

  4. When creating an admin account, open the Storage & database drop-down menu, fill in the information as shown below, and enter the MariaDB password you used in the docker-compose file:

    Nextcloud database connection

    The setup provided by Nextcloud does not include any SSL encryption. To secure your data and communications, the Nextcloud service should be placed behind a reverse proxy. A Docker Compose file using an NGINX reverse proxy and Let’s Encrypt is also available.

Upload Data

  1. After you have created an admin account, the Nextcloud dashboard will be displayed. Click on the + icon in the upper left and select Upload file. For demonstration purposes, choose a large file (an Ubuntu .iso file was used to generate the output below).

  2. After the file has uploaded successfully, return to the terminal and check to see your available space:

    df -BG
    Filesystem     1G-blocks  Used Available Use% Mounted on
    /dev/root            20G    2G       17G  11% /
    devtmpfs              1G    0G        1G   0% /dev
    tmpfs                 1G    0G        1G   0% /dev/shm
    tmpfs                 1G    1G        1G   2% /run
    tmpfs                 1G    0G        1G   0% /run/lock
    tmpfs                 1G    0G        1G   0% /sys/fs/cgroup
    /dev/sdc             20G    2G       17G  11% /mnt/nextcloud
    tmpfs                 1G    0G        1G   0% /run/user/1000

    The output should show that the file has been stored in /mnt/nextcloud, which is the mount point for the Block Storage Volume.

More Information

You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

This page was originally published on

Your Feedback Is Important

Let us know if this guide was helpful to you.

Join the conversation.
Read other comments or post your own below. Comments must be respectful, constructive, and relevant to the topic of the guide. Do not post external links or advertisements. Before posting, consider if your comment would be better addressed by contacting our Support team or asking on our Community Site.
The Disqus commenting system for Linode Docs requires the acceptance of Functional Cookies, which allow us to analyze site usage so we can measure and improve performance. To view and create comments for this article, please update your Cookie Preferences on this website and refresh this web page. Please note: You must have JavaScript enabled in your browser.