Cómo instalar Nextcloud 15 en Debian 9
NextCloud es gratuito, de código abierto y una alternativa a otra solución de alojamiento de archivos de código abierto, OwnCloud. La principal diferencia de NextCloud con respecto a OwnCloud es que NextCloud es completamente de código abierto. NextCloud es un servidor de aplicaciones de intercambio de archivos autoalojado que te permite almacenar tus contactos, fotos y documentos personales desde una ubicación centralizada. NextCloud elimina la necesidad de utilizar software de alojamiento en la nube de terceros, como Dropbox, para almacenar tus documentos.
NextCloud viene con muchas características, algunas de las cuales se enumeran a continuación:
- Nos permite gestionar usuarios y grupos mediante OpenID o LDAP.
- Nos permite acceder, sincronizar y compartir tus datos existentes en Dropbox, FTP y NAS.
- Listar los navegadores/dispositivos conectados en la página de configuración personal. Permite al usuario desconectar los navegadores/dispositivos.
- Admite el sistema de plugins de autenticación de dos factores.
- Permite compartir archivos con otros usuarios, crear y enviar enlaces públicos protegidos por contraseña.
- Notifica por teléfono y escritorio cuando alguien en el servidor comparte archivos directamente contigo.
- Admite funciones de supervisión, búsqueda de texto completo, autenticación Kerberos y conferencias de audio y vídeo.
- Sincroniza archivos con el servidor Nextcloud desde clientes de escritorio y clientes móviles.
En este tutorial, explicaremos cómo instalar y configurar NextCloud en Debian 9 y asegurarlo con un certificado SSL gratuito de Let’s encrypt.
Requisitos
- Un servidor con Debian 9 en tu sistema.
- Una dirección IP estática en tu sistema.
- Configuración de la contraseña raíz en tu sistema.
- El nombre de dominio o subdominio que quieras utilizar para Nextcloud debe apuntar ya a la dirección IP para poder utilizarla para Nextcloud y obtener un certificado SSL gratuito de Let’s encrypt.
Cómo empezar
En primer lugar, inicia sesión en tu servidor como usuario root. Comencemos por actualizar tu sistema con la última versión estable. Puedes hacerlo ejecutando el siguiente comando:
apt-get update -y
apt-get upgrade -y
Después de actualizar el sistema, reinicia tu sistema para aplicar estos cambios:
reboot
A continuación, inicia la sesión con el usuario root y pasa al siguiente paso.
1 Instalación del servidor LAMP
NextCloud funciona con Apache, MySQL y PHP. Así que tendrás que instalar todos estos componentes en tu sistema.
Primero, instala el servidor Apache y MariaDB con el siguiente comando:
apt-get install apache2 mariadb-server apt-transport-https -y
Una vez completada la instalación, inicia el servicio de Apache y MariaDB y habilítalos para que se inicien al arrancar ejecutando el siguiente comando:
systemctl start apache2
systemctl enable apache2
systemctl start mariadb
systemctl enable mariadb
A continuación, también tendrás que instalar PHP y otros módulos necesarios en tu sistema. Yo instalaré una versión reciente de PHP 7.2 del repositorio Ondrej.
Añade el repositorio Ondrej de Debian:
wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add -
echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/ondrej.list
apt-get update
Puedes instalar todos ellos ejecutando el siguiente comando:
apt-get install libapache2-mod-php php7.2 php7.2-xml php7.2-curl php7.2-gd php7.2 php7.2-cgi php7.2-cli php7.2-zip php7.2-mysql php7.2-mbstring wget unzip -y
Después de instalar todos los paquetes, abre el archivo php.ini y haz algunos cambios dentro de él.
sudo nano /etc/php/7.2/apache2/php.ini
Realiza los siguientes cambios:
memory_limit = 512M upload_max_filesize = 200M max_execution_time = 360 post_max_size = 200M date.timezone = Europe/Berlin
2 Configurar MariaDB
Por defecto, la instalación de MariaDB no es segura, así que tendrás que asegurarla. Puedes hacerlo ejecutando el siguiente comando:
mysql_secure_installation
Responde a todas las preguntas de la siguiente manera:
# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Una vez asegurada MariaDB, entra en la consola de MariaDB con el siguiente comando:
mysql -u root -p
Introduce tu contraseña de root cuando se te pida, y luego crea una base de datos para Nextcloud:
CREATE DATABASE nextclouddb;
A continuación, crea un nombre de usuario y una contraseña para Nextcloud con el siguiente comando:
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'mypassword';
Sustituye ‘mypassword’ por tu propia contraseña segura. A continuación, concede privilegios a la base de datos de Nextcloud con el siguiente comando
GRANT ALL PRIVILEGES ON nextclouddb.* TO 'nextcloud'@'localhost';
A continuación, ejecuta el comando FLUSH PRIVILEGES para que la tabla de privilegios sea recargada por MariaDB:
FLUSH PRIVILEGES;
Por último, sal del shell de MariaDB con el siguiente comando:
quit
Una vez que tu base de datos esté configurada correctamente, puedes pasar al siguiente paso.
3 Instalar NextCloud
Utilizaré el instalador web de Nextcloud para facilitar la instalación. En primer lugar, tendremos que crear un directorio para la instalación de Nextcloud:
mkdir /var/www/nextcloud
chown www-data:www-data /var/www/nextcloud
chmod 750 /var/www/nextcloud
Y un directorio de datos donde Nextcloud almacenará tus archivos subidos.
mkdir -p /var/nextcloud/data
chown www-data:www-data /var/nextcloud/data
chmod 750 /var/nextcloud/data
A continuación, tendrás que crear un archivo de host virtual apache para NextCloud. Puedes hacerlo creando el archivo nextcloud.conf de la siguiente manera:
nano /etc/apache2/sites-available/nextcloud.conf
Añade las siguientes líneas:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/var/www/nextcloud" ServerName example.com <Directory "/var/www/nextcloud/"> Options MultiViews FollowSymlinks
AllowOverride All Order allow,deny Allow from all </Directory> TransferLog /var/log/apache2/nextcloud_access.log ErrorLog /var/log/apache2/nextcloud_error.log </VirtualHost>
Sustituye el nombre de dominio example.com por el nombre de dominio que desees. Guarda y cierra el archivo, luego habilita el archivo de host virtual de NextCloud y desactiva el archivo de host virtual por defecto con el siguiente comando:
a2dissite 000-default
a2ensite nextcloud
Para habilitar el SSL con Let’s encrypt, instalaremos el cliente Let’s encrypt certbot.
apt-get install certbot python3-certbot-apache -y
Y habilita el módulo SSL de Apache con el comando
a2enmod ssl
Por último, reinicia el servicio apache para aplicar estos cambios:
systemctl restart apache2
Ahora podemos solicitar un certificado SSL gratuito a Let’s encrypt y dejar que el programa certbot configure el vhost de apache para SSL. Ten en cuenta que tu nombre de dominio de Internet debe ser accesible desde Internet y apuntar a tu servidor ya con un registro A de DNS para utilizar Let’s encrypt. Ejecuta el comando certbot para solicitar el nuevo certificado SSL:
certbot -d example.com --apache --agree-tos -m [email protected]
Sustituye ejemplo.com por el nombre de dominio o subdominio de tu servidor Nextcloud (vhost).
Elige aquí si quieres compartir tu dirección de correo electrónico con el FEP. Personalmente no me gusta compartir mi correo electrónico, así que he elegido «N» aquí.
Si el servidor Nextcloud debe ser accesible sólo por HTTPS (lo que se recomienda por razones de seguridad), entonces elige aquí ‘2’. Si quieres poder acceder a Nextcloud con HTTP y HTTPS, elige ‘1’.
El certificado SSL gratuito de Let’s encrypt se ha emitido correctamente.
Descarga el instalador web de Nextcloud en el directorio raíz del sitio web y establece los permisos adecuados para el archivo descargado.
cd /var/www/nextcloud
wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
chown www-data:www-data setup-nextcloud.php
4 Accede a la interfaz web de NextCloud
Una vez que todo esté configurado correctamente, tendrás que permitir el puerto 80 a través del cortafuegos UFW.
Para ello, instala primero ufw con el siguiente comando:
apt-get install ufw -y
A continuación, permite los puertos 80 y 443 a través de UFW y también el puerto 22 SSH con el siguiente comando:
ufw allow 80
ufw allow 443
ufw allow 22
Abre más puertos en el cortafuegos si los necesitas. A continuación, habilita el Cortafuegos:
ufw enable
Elige «y» cuando el comando te pregunte si se debe habilitar el Cortafuegos.
Por último, abre tu navegador web y navega hasta la URL
https://example.com/setup-nextcloud.php
Sustituye ejemplo.com por tu propio nombre de dominio. Deberías ver la siguiente pantalla:
Sustituye la palabra «nextcloud» por un punto (.) en el campo de entrada, ya que queremos instalar nextcloud en el directorio actual, y pulsa el botón «Siguiente».
El primer paso de la instalación se ha completado con éxito. Haz clic en ‘Siguiente’ para continuar.
Introduce el nombre de usuario y la contraseña deseados para el usuario administrador de Nextcloud y establece la ruta de datos en ‘/var/nextcloud/data’.
Proporciona toda la información requerida, como el nombre de la base de datos, el nombre de usuario de la base de datos y la contraseña, y luego haz clic en el botón Finalizar la configuración. Deberías ver el panel de control de NextCloud en la siguiente pantalla:
5 Configurar el Cliente NextCloud
Aquí instalaremos el cliente NextCloud en Ubuntu Desktop y lo conectaremos al servidor NextCloud.
Para instalar el cliente NextCloud, tendrás que añadir el repositorio de NextCloud a tu sistema. Puedes hacerlo ejecutando el siguiente comando:
add-apt-repository ppa:nextcloud-devs/client
apt-get update -y
apt-get install nextcloud-client -y
Una vez instalado el cliente NextCloud, lánzalo desde tu Dash de Ubuntu, deberías ver la siguiente pantalla:
Aquí, proporciona la dirección de tu servidor y haz clic en el botón Siguiente, deberías ver la siguiente pantalla:
Proporciona tu credencial del servidor NextCloude y haz clic en el botón Siguiente, deberías ver la siguiente pantalla:
Ahora, haz clic en el botón Conectar, deberías ver la siguiente pantalla:
Aquí, haz clic en Carpeta local, deberías ver la siguiente pantalla:
Enhorabuena! tu servidor y tu cliente NextCloud están instalados y configurados. Ahora puedes sincronizar fácilmente tus datos desde tu cliente local NextCloud al servidor NextCloud.