NextCloud es un servidor de alojamiento y uso compartido de archivos gratuito y de código abierto derivado del proyecto ownCloud. Es muy similar a otros servicios para compartir archivos como Google Drive, Dropbox e iCloud. NextCloud le permite almacenar archivos, documentos, imágenes, películas y videos desde la ubicación central. Con NextCloud, puede compartir archivos, contactos y cualquier otro medio con sus amigos y clientes. NextCloud se integra con el correo, el calendario, los contactos y otras funciones que ayudarán a sus equipos a realizar su trabajo de forma más rápida y sencilla. Puede instalar el cliente NextCloud en una máquina de escritorio para sincronizar archivos con su servidor Nextcloud. Los clientes de escritorio están disponibles para la mayoría de los sistemas operativos, incluidos Windows, macOS, FreeBSD y Linux.
En este tutorial, explicaremos cómo instalar NextCloud y asegurarlo con Let's Encrypt SSL en Debian 10.
Requisitos
- Un servidor que ejecuta Debian 10.
- Un nombre de dominio válido apuntado con la IP de su servidor. en este tutorial, usaremos el dominio nextcloud.example.com.
- Se ha configurado una contraseña raíz en su servidor.
Instalar Apache, MariaDB y PHP
NextCloud se ejecuta en el servidor web, está escrito en PHP y usa MariaDB para almacenar sus datos. Por lo tanto, deberá instalar Apache, MariaDB, PHP y otros paquetes necesarios en su sistema. Puede instalarlos todos ejecutando el siguiente comando:
apt-get install apache2 libapache2-mod-php mariadb-server php-xml php-cli php-cgi php-mysql php-mbstring php-gd php-curl php-zip wget unzip -y
Una vez que todos los paquetes estén instalados, abra el archivo php.ini y modifique algunas configuraciones recomendadas:
nano /etc/php/7.3/apache2/php.ini
Cambie las siguientes configuraciones:
memory_limit = 512M upload_max_filesize = 500M post_max_size = 500M max_execution_time = 300 date.timezone = Asia/Kolkata
Guarde y cierre el archivo cuando haya terminado. Luego, inicie el servicio Apache y MariaDB y habilítelos para que se inicien después de reiniciar el sistema con el siguiente comando:
systemctl start apache2
systemctl start mariadb
systemctl enable apache2
systemctl enable mariadb
Una vez que haya terminado, puede continuar con el siguiente paso.
Configurar base de datos para NextCloud
A continuación, deberá crear una base de datos y un usuario de base de datos para NextCloud. Para hacerlo, inicie sesión en el shell de MariaDB con el siguiente comando:
mysql -u root -p
Proporcione su contraseña raíz cuando se le solicite, luego cree una base de datos y un usuario con el siguiente comando:
MariaDB [(none)]> CREATE DATABASE nextclouddb;
MariaDB [(none)]> CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'password';
A continuación, otorgue todos los privilegios a nextclouddb con el siguiente comando:
MariaDB [(none)]> GRANT ALL ON nextclouddb.* TO 'nextclouduser'@'localhost';
A continuación, elimine los privilegios y salga del shell de MariaDB con el siguiente comando:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Una vez que haya terminado, puede continuar con el siguiente paso.
Descargar NextCloud
Primero, visite la página de descarga de NextCloud y descargue la última versión de NextCloud en su sistema. Al momento de escribir este artículo, la última versión de NextCloud es 17.0.1. Puedes descargarlo con el siguiente comando:
wget https://download.nextcloud.com/server/releases/nextcloud-17.0.1.zip
Una vez completada la descarga, descomprima el archivo descargado con el siguiente comando:
unzip nextcloud-17.0.1.zip
A continuación, mueva el directorio extraído al directorio raíz web de Apache:
mv nextcloud /var/www/html/
A continuación, otorgue los permisos adecuados al directorio nextcloud con el siguiente comando:
chown -R www-data:www-data /var/www/html/nextcloud/
chmod -R 755 /var/www/html/nextcloud/
Una vez que haya terminado, puede continuar con el siguiente paso.
Configurar Apache para NextCloud
A continuación, deberá crear un archivo de configuración de host virtual de Apache para servir a NextCloud. Puedes crearlo con el siguiente comando:
nano /etc/apache2/sites-available/nextcloud.conf
Agregue las siguientes líneas:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/html/nextcloud/ ServerName nextcloud.example.com Alias /nextcloud "/var/www/html/nextcloud/" <Directory /var/www/html/nextcloud/> Options +FollowSymlinks AllowOverride All Require all granted <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/html/nextcloud SetEnv HTTP_HOME /var/www/html/nextcloud </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Guarde y cierre el archivo cuando haya terminado. Luego, habilite el archivo de host virtual de Apache y otros módulos requeridos usando los siguientes comandos:
a2ensite nextcloud.conf
a2enmod rewrite
a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime
Finalmente, reinicie el servicio Apache para aplicar la nueva configuración:
systemctl restart apache2
Asegure NextCloud con Let's Encrypt Free SSL
NextCloud ahora está instalado y configurado. A continuación, se recomienda protegerlo con SSL gratuito de Let's Encrypt. Para hacerlo, primero instale el cliente Certbot con el siguiente comando:
apt-get install python-certbot-apache -y
Una vez instalado, puede ejecutar el siguiente comando para instalar el certificado Let's Encrypt para su dominio nextcloud.example.com.
certbot --apache -d nextcloud.example.com
Durante la instalación, se le pedirá que proporcione su dirección de correo electrónico y acepte el término del servicio como se muestra a continuación:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for nextcloud.example.com Enabled Apache rewrite module Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/nextcloud-le-ssl.conf Deploying Certificate to VirtualHost /etc/apache2/sites-available/nextcloud-le-ssl.conf Enabling available site: /etc/apache2/sites-available/nextcloud-le-ssl.conf Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Luego, escriba 2 y presione Enter para descargar e instalar un certificado SSL gratuito para su dominio. Una vez que la instalación se haya completado con éxito. Deberías obtener el siguiente resultado:
Enabled Apache rewrite module Redirecting vhost in /etc/apache2/sites-enabled/nextcloud.conf to ssl vhost in /etc/apache2/sites-available/ nextcloud-le-ssl.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://nextcloud.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=nextcloud.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2019-10-22. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Una vez que haya terminado, puede continuar con el siguiente paso.
Acceder a la interfaz web de NextCloud
Su NextCloud ahora está configurado y protegido con Let's Encrypt SSL. A continuación, abra su navegador web y escriba la URL https://nextcloud.example.com . Será redirigido a la siguiente página:
Ahora, proporcione su nombre de usuario y contraseña de administrador, Carpeta de datos, Corrija las credenciales de la base de datos y haga clic en Finalizar configuración botón. Será redirigido al panel de NextCloud en la siguiente página:
Eso es todo por ahora.
Conclusión
¡Felicidades! Ha instalado y protegido correctamente NextCloud con Let's Encrypt Free SSL en Debian 10. Ahora puede compartir fácilmente archivos, documentos y medios con otros usuarios mediante la interfaz web de NextCloud.