Saltar al contenido principal

Servidor dedicado: Instalación de Nextcloud

Esta guía fue creada con los siguientes productos:

(Los detalles pueden variar según los productos de diferentes proveedores, pero los conceptos principales permanecen igual)

Introducción

Nextcloud es una solución cloud de código abierto y un fork de Owncloud, fundada en 2016 por el ex fundador de Owncloud, Frank Kalitschek.

Para lograr un rendimiento, estabilidad y funcionalidad óptimos, se recomienda la siguiente configuración para alojar un servidor Nextcloud. El servidor Nextcloud no es compatible con Windows ni MacOS. Al menos no sin virtualización adicional o soluciones similares.

Preparación

Los siguientes requisitos son recomendados por los desarrolladores y basados en nuestra propia experiencia. Podrías tener problemas si no cumples con estos prerrequisitos.

Hardware

ComponentesMínimoRecomendado
CPU2x 1 GHz4x 2+ GHz
RAM512 MB4+ GB
Almacenamiento10 GB50+ GB
Ancho de banda100 mbit/s (subida y bajada)500mbit/s (subida y bajada) Recomendado si varios usuarios van a usar la nube

Software

PlataformaOpciones
Sistema operativoUbuntu (14.04, 16.04, 18.04), Debian(8,9,10), CentOS 6.5/7
Base de datosMySQL o MariaDB 5.5+ (recomendado), SQLite (solo para pruebas y instancias mínimas)
Servidor webApache 2.4 con mod_php o php-fpm (recomendado)
PHP5.6, 7.0 (recomendado), 7.1 (recomendado), 7.2

Preparación

Para instalar la nube en un servidor Linux, hay que establecer una conexión vía cliente SSH. Si no sabes cómo usar SSH, aquí tienes una guía: Acceso inicial (SSH)

Una vez establecida la conexión, puedes empezar a instalar los paquetes necesarios para la instalación de Nextcloud. Esto incluye la instalación de un servidor web y PHP.


Apache (Servidor web)

🗄️ Debian 8/9/10:

sudo apt update && sudo apt -y upgrade
sudo apt -y install apache2

PHP (Preprocesador de hipertexto)

🗄️ Debian 8:

# Paso 1: Añadir el repositorio PPA de PHP 7.3
sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.3.list

# Paso 2: Instalar PHP 7.3
sudo apt -y install php7.3

# Paso 3: Instalar extensiones PHP 7.3
sudo apt install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-mysql php7.3-zip php7.3-gd php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json

🗄️ Debian 9:

# Paso 1: Añadir el repositorio PPA de PHP 7.3
sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.3.list

# Paso 2: Instalar PHP 7.3
sudo apt -y install php7.3

# Paso 3: Instalar extensiones PHP 7.3
sudo apt install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-mysql php7.3-zip php7.3-gd php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json

🗄️ Debian 10:

# Paso 1: Instalar PHP 7.3
sudo apt -y install php php-common

# Paso 2: Instalar extensiones PHP 7.3
sudo apt -y install php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath

Verifica la versión de PHP para comprobar que funciona

php -v

El siguiente paso es definir un tipo de base de datos para almacenar la información relevante. Hay varias opciones:


Si has decidido usar este tipo de base de datos, sigue estos pasos:

Instalación de paquetes:

sudo apt-get install mariadb-server php-mysql

Durante la instalación te pedirán establecer una contraseña root. Si no te la piden, la contraseña por defecto está en blanco. Esto no es seguro y debe cambiarse inmediatamente después.

El siguiente paso es conectarse al servidor de base de datos y crear la base de datos necesaria:

mysql -u root -p
CREATE DATABASE nextcloud;

Después hay que crear un usuario que tenga acceso a la base de datos Nextcloud.

CREATE USER 'nc_user'@'localhost' IDENTIFIED BY 'TU_CONTRASEÑA_AQUÍ';
información

No te saltes este paso usando el usuario root. No es seguro y puede poner tus datos en riesgo.

El último paso es asignar los permisos al nuevo usuario:

GRANT ALL PRIVILEGES ON nextcloud.* TO 'nc_user'@'localhost';
FLUSH PRIVILEGES;

Cuando termines, presiona Ctrl-D para salir de la base de datos y continuar con los siguientes pasos.

Instalación

Ahora se puede comenzar con la instalación real de Nextcloud. Hay que descargar y descomprimir el software:

cd /var/www/
wget https://download.nextcloud.com/server/releases/latest.zip
apt-get install unzip
unzip latest.zip
chown -R www-data:www-data nextcloud
rm latest.zip

Una vez terminado este paso, es hora de ejecutar el script de instalación. El acceso es posible vía navegador con la siguiente URL:

Aparece la configuración del script de instalación, donde se crea un usuario root y se definen los datos de la base de datos:

Seguridad y protección

Advertencias de configuración

Directorio de datos

Se recomienda encarecidamente colocar el directorio de datos fuera del directorio raíz web (es decir, fuera de /var/www). La forma más sencilla es hacerlo en una instalación nueva. El directorio puede definirse durante la configuración. Sin embargo, primero debe crearse y asignarse los permisos correspondientes. Por ejemplo, los datos podrían almacenarse en un directorio llamado Cloud en el directorio home.

mkdir /home/cloud/
chown -R www-data:www-data /home/cloud/

HTTPS mediante certificado SSL (Let's Encrypt)

Una buena solución cloud debería ser accesible solo mediante conexión SSL. Sin cifrado SSL, los datos e información se transmiten en texto plano. Esta información puede ser interceptada y leída fácilmente sin cifrado.

<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot "/var/www/nextcloud"
ServerName dominio.tld

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

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

<IfModule mod_dav.c>
Dav off
</IfModule>

SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
Satisfy Any

</Directory>

SSLCertificateFile /etc/letsencrypt/live/dominio.tld/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/dominio.tld/privkey.pem
</VirtualHost>
</IfModule>

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; preload"
</IfModule>

Además, todo el tráfico HTTP debería redirigirse a HTTPS usando una redirección permanente con código de estado 301. Esto se puede lograr con Apache usando una configuración como la siguiente para VirtualHosts:

<VirtualHost *:80>
ServerName dominio.tld
Redirect permanent / https://dominio.tld/
</VirtualHost>

Gestionar Nextcloud

El acceso a Nextcloud es posible vía navegador, así como desde smartphone y ordenador usando la app. Las fuentes de descarga están aquí: https://nextcloud.com/install/#install-clients

En ajustes puedes modificar más opciones incluso después de la configuración y ver información importante como logs, actividades. Esto incluye ajustes de seguridad adicionales (autenticación de dos factores, cifrado, ... ), ajustes de diseño (logo, color, eslogan, cabecera), ajustes de acceso y mucho más.

Apps

Además, existe la posibilidad de instalar apps adicionales aparte de las apps por defecto. Puedes acceder a ellas desde el menú Apps.

Con estas Apps puedes personalizar aún más Nextcloud según tus gustos.