Self-hosting Nextcloud
13 de enero de 2024
Beneficios
- Más privacidad y seguridad
- Rentabilidad
- Escalabilidad
- Mayor control y personalización
Requisitos previos
- Una computadora que ejecute Ubuntu o alguna distribución basada en Debian.
- Verifica si tu proveedor de internet permite habilitar el reenvío de puertos [Opcional].
- Poseer un dominio [Opcional].
Configuración inicial del servidor
Actualiza tu distribución de Linux
sudo apt update
sudo apt full-upgrade
sudo apt autoremove
- Instala todos los paquetes necesarios (algunos pueden ser opcionales según tus requerimientos)
sudo apt install neovim wget mariadb-server php php-apcu php-bcmath php-cli php-common php-curl php-gd php-gmp php-imagick php-intl php-mbstring php-mysql php-zip php-xml unzip nmap
Actualiza el nombre del host (Opcional)
- Modifica el archivo y asigna un nombre de host o dominio adecuado a tu servidor
sudo nvim /etc/hostname
sudo nvim /etc/hosts
- Reinicia tu servidor para aplicar los cambios realizados hasta ahora
sudo reboot
Descargando Nextcloud
- Descarga el archivo ZIP de Nextcloud
wget https://download.nextcloud.com/server/releases/latest.zip
Configuración de MariaDB
- Verifica el estado del servicio
mariadb
systemctl status mariadb
- Ejecuta el script de instalación segura
sudo mysql_secure_installation
- A continuación, verás varias preguntas. Responde siguiendo las indicaciones proporcionadas:
Solicitud de contraseña --> Presiona Enter
¿Cambiar a unix_socket_auth [Y/n] --> n
¿Cambiar la contraseña de root [Y/n] --> Y
Ingresa tu contraseña segura:
¿Eliminar usuarios anónimos [Y/n] --> Y
¿Deshabilitar el inicio de sesión remoto para root [Y/n] --> Y
¿Eliminar la base de datos de prueba y su acceso [Y/n] --> Y
¿Recargar las tablas de privilegios ahora [Y/n] --> Y
Configuración de la base de datos de Nextcloud
- Accede a MariaDB
sudo mariadb
- Crea la base de datos
CREATE DATABASE nextcloud;
- Configura los permisos
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'mypassword';
FLUSH PRIVILEGES;
- Presiona CTRL+D para salir
Servidor Web Apache
- Habilita estas extensiones de PHP
sudo phpenmod bcmath gmp imagick intl
- Descomprime el archivo de Nextcloud
unzip latest.zip
- Mueve los archivos a la ubicación de servicio y establece los permisos correspondientes
mv nextcloud your.domain.name
- Cambia los permisos
sudo chown -R www-data:www-data your.domain.name
- Mueve el directorio a /var/www
sudo mv your.domain.name /var/www
- Desactiva el sitio por defecto de Apache
sudo a2dissite 000-default.conf
Configurar el host de Nextcloud
- Crea un archivo de configuración de Apache para servir Nextcloud
sudo nvim /etc/apache2/sites-available/your.domain.name.conf
- Inserta el siguiente contenido en el archivo, asegurándote de modificar la parte que menciona
your.domain.name
:
<VirtualHost *:80>
DocumentRoot "/var/www/your.domain.name"
ServerName your.domain.name
<Directory "/var/www/your.domain.name/">
Options MultiViews FollowSymlinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
TransferLog /var/log/apache2/your.domain.name_access.log
ErrorLog /var/log/apache2/your.domain.name_error.log
</VirtualHost>
- Habilita el sitio
sudo a2ensite your.domain.name.conf
PHP
- Debes ajustar ciertas líneas para que Nextcloud funcione correctamente
sudo nano /etc/php/8.1/apache2/php.ini
- Dentro del archivo, localiza y modifica estos parámetros:
memory_limit = 3G #(Aumenta el valor si tienes más RAM)
upload_max_filesize = 50G #(Aumenta/Disminuye el valor según tus necesidades)
max_execution_time = 3600
post_max_size = 50G #(Aumenta/Disminuye el valor según tus necesidades)
date.timezone = Europe/London #(Consulta el siguiente enlace para ajustar tu zona horaria)
opcache.enable=1
opcache.interned_strings_buffer= 128
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
- Habilita los módulos de PHP para Apache
sudo a2enmod dir env headers mime rewrite ssl
- Reinicia Apache
sudo systemctl restart apache2
Configurar el servidor web de Nextcloud
- Al ingresar por primera vez a la página, deberías ver algo similar a esto:
- Ingresa la siguiente información en los campos correspondientes:
Username --> Tu nombre de usuario
Password --> Establece una contraseña segura para iniciar sesión en Nextcloud
Data Folder --> Déjalo por defecto
Database user --> nextcloud
Database password --> Contraseña de la base de datos de Nextcloud
Database name --> nextcloud
- Luego, instala las aplicaciones recomendadas
Opcional
- Como se mencionó anteriormente, para establecer una conexión a tu Nextcloud desde fuera de tu red privada, debes habilitar el reenvío de puertos en tu router.
- Para proceder, en este ejemplo, configuro el reenvío de puertos en un router Movistar.
- Lo primero que debes hacer es buscar tu IP privada utilizando el siguiente comando:
ifconfig -a
- A continuación, ingresa al portal de tu router para configurar el reenvío de puertos. Introduce la dirección IP y selecciona "web-server" en el puerto 80, luego actívalo.
- Para verificar si el puerto 80 está abierto, ejecuta el siguiente comando:
sudo nmap -n -PN -sT -sU -p80 {IP}
- Verifica si la página de Nextcloud es accesible ingresando tu IP pública en el navegador:
- Deberías ver algo similar a esto:
Extra
- Si deseas acceder a tu Nextcloud a través de tu IP pública:
- Edita el archivo
config.php
sudo nvim /var/www/your.domain.name/config/config.php
- En
trusted_domains
, añade tu IP pública.
Configura tu dominio
- Inicialmente, necesitas un dominio, el cual puede ser adquirido o obtenido de forma gratuita.
- Existen varios sitios web que ofrecen opciones de dominios a precios accesibles:
Configuración en Namecheap
- Una vez que hayas adquirido un dominio, procede a la configuración avanzada de DNS y establece un registro de host.
- En la sección "IP Address", ingresa tu dirección IP pública.
- Luego, en la sección "HOST", coloca "@".
- Procede a editar el archivo
config.php
sudo nvim /var/www/your.domain.name/config/config.php
- Agrega tu nombre de dominio al array
trusted_domains
.
- Ahora, puedes acceder a Nextcloud a través de tu dominio.
Certificado TLS
- Instala snapd
sudo apt install snapd
sudo snap install core && sudo snap refresh core
- Instala certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
- Obtén e instala tus certificados
sudo certbot --apache
Solución de problemas
- Para solucionar problemas, busca en internet. La mayoría de los foros suelen tener soluciones.
- En caso de que no sepas cómo resolver el problema, por favor, no dudes en contactarme vía correo electrónico.
Recursos
- Documentación de Nextcloud
- Comunidad de Nextcloud
- No dudes en preguntar cualquier cosa; es una comunidad maravillosa.
En caso de errores o sugerencias, por favor envía un pull request