Este tutorial le mostrará cómo instalar NextCloud en Ubuntu 20.04 LTS con el servidor web Apache.
¿Qué es NextCloud?
NextCloud es una solución gratuita de almacenamiento en la nube autohospedado de código abierto. Es funcionalmente similar a Dropbox. Las soluciones de almacenamiento en la nube patentadas (Dropbox, Google Drive, etc.) son convenientes, pero tienen un precio:pueden usarse para recopilar datos personales porque sus archivos se almacenan en sus computadoras. Si le preocupa la privacidad, puede cambiar a NextCloud, que puede instalar en su servidor doméstico privado o en un servidor privado virtual (VPS). Puede cargar sus archivos a su servidor a través de NextCloud y luego sincronizar esos archivos con su computadora de escritorio, computadora portátil o teléfono inteligente. De esta manera usted tiene el control total de sus datos.
Características de NextCloud
- Gratis y de código abierto
- Cifrado de extremo a extremo, lo que significa que los archivos se pueden cifrar en los dispositivos del cliente antes de cargarlos en el servidor, por lo que incluso si alguien roba su servidor, no podrá leer sus archivos.
- Se puede integrar con una suite ofimática en línea (Collobora Online, OnlyOffice) para que pueda crear y editar sus archivos doc, ppt, xls directamente desde NextCloud.
- La tienda de aplicaciones contiene cientos de aplicaciones para ampliar la funcionalidad (como la aplicación de calendario, la aplicación de contactos, la aplicación para tomar notas, la aplicación de videoconferencia, etc.).
- El cliente de sincronización está disponible en Linux, macOS, Windows, iOS y Android.
Requisitos
NextCloud está escrito en lenguaje de programación PHP. Para seguir este tutorial, primero debe instalar la pila LAMP en Ubuntu 20.04 . Si aún no lo ha hecho, consulte el siguiente tutorial.
- Cómo instalar LAMP Stack (Apache, MariaDB, PHP7.4-FPM) en Ubuntu 20.04
Puede instalar NextCloud en su servidor doméstico o en un VPS (servidor privado virtual). También necesita un nombre de dominio, por lo que más adelante podrá habilitar HTTPS para cifrar el tráfico HTTP. Registré mi nombre de dominio de NameCheap porque el precio es bajo y brindan protección de privacidad whois gratis de por vida. Nextcloud se puede instalar sin un nombre de dominio, pero realmente no tiene sentido si no cifra la conexión HTTP para evitar la intrusión. Recomiendo comprar un nombre de dominio, si realmente desea experimentar con el software del servidor y utilizarlo al máximo de su potencial.
Ahora instalemos NextCloud.
Paso 1:Descarga NextCloud en Ubuntu 20.04
Inicie sesión en su servidor Ubuntu 20.04. Luego descargue el archivo zip de NextCloud en su servidor. La última versión estable es 21.0.1 en el momento de escribir este artículo. Es posible que deba cambiar el número de versión. Vaya a https://nextcloud.com/install y haga clic en download for server
botón para ver la última versión.
Puede ejecutar el siguiente comando para descargarlo en su servidor.
wget https://download.nextcloud.com/server/releases/nextcloud-21.0.1.zip
Siempre puede usar el formato de URL anterior para descargar NextCloud. Si sale una nueva versión, simplemente reemplace 21.0.1
con el nuevo número de versión.
Una vez descargado, extraiga el archivo con unzip
.
sudo apt install unzip sudo unzip nextcloud-21.0.1.zip -d /var/www/
El -d
La opción especifica el directorio de destino. Los archivos web de NextCloud se extraerán a /var/www/nextcloud/
. Luego, debemos cambiar el propietario de este directorio a www-data
para que el servidor web (Apache) pueda escribir en este directorio.
sudo chown www-data:www-data /var/www/nextcloud/ -R
Paso 2:Cree una base de datos y un usuario para Nextcloud en el servidor de base de datos MariaDB
Inicie sesión en el servidor de la base de datos MariaDB con el siguiente comando. Dado que MariaDB ahora usa unix_socket
complemento para el inicio de sesión del usuario de autenticación, no es necesario ingresar la contraseña raíz de MariaDB. Solo necesitamos prefijar el mysql
comando con sudo
.
sudo mysql
Luego cree una base de datos para Nextcloud. Este tutorial nombra la base de datos nextcloud. Puedes usar el nombre que quieras.
create database nextcloud;
Cree el usuario de la base de datos. Nuevamente, puede usar su nombre preferido para este usuario. Reemplace your-password
con su contraseña preferida.
create user nextclouduser@localhost identified by 'your-password';
Otorgue a este usuario todos los privilegios en nextcloud
base de datos.
grant all privileges on nextcloud.* to nextclouduser@localhost identified by 'your-password';
Vacíe los privilegios y salga.
flush privileges; exit;
Paso 3:Cree un host virtual de Apache para Nextcloud
Crear un nextcloud.conf
archivo en /etc/apache2/sites-available/
directorio, con un editor de texto de línea de comandos como Nano.
sudo nano /etc/apache2/sites-available/nextcloud.conf
Copie y pegue el siguiente texto en el archivo. Reemplace nextcloud.example.com
con su propio subdominio preferido. No olvide crear un registro DNS A para este subdominio en su editor de zona DNS. Si no tiene un nombre de dominio real, le recomiendo ir a NameCheap para comprar uno. El precio es bajo y brindan protección de privacidad whois gratis de por vida.
<VirtualHost *:80> DocumentRoot "/var/www/nextcloud" ServerName nextcloud.example.com ErrorLog ${APACHE_LOG_DIR}/nextcloud.error CustomLog ${APACHE_LOG_DIR}/nextcloud.access combined <Directory /var/www/nextcloud/> Require all granted Options FollowSymlinks MultiViews AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud Satisfy Any </Directory> </VirtualHost>
Guarde y cierre el archivo. (Para guardar un archivo en el editor de texto Nano, presione Ctrl+O
, luego presione Enter
para confirmar. Para salir, presiona Ctrl+X
.)
Luego habilite este servidor virtual.
sudo a2ensite nextcloud.conf
Ejecute el siguiente comando para habilitar los módulos de Apache necesarios.
sudo a2enmod rewrite headers env dir mime setenvif ssl
Luego pruebe la configuración de Apache.
sudo apache2ctl -t
Si la sintaxis es correcta, vuelva a cargar Apache para que los cambios surtan efecto.
sudo systemctl restart apache2
Paso 4:Instalar y habilitar módulos PHP
Ejecute los siguientes comandos para instalar los módulos PHP requeridos o recomendados por NextCloud.
sudo apt install imagemagick php-imagick libapache2-mod-php7.4 php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp
Vuelva a cargar Apache para usar estos módulos.
sudo systemctl reload apache2
Paso 5:habilite HTTPS
Ahora puede acceder al asistente de instalación web de Nextcloud en su navegador web ingresando el nombre de dominio para su instalación de Nextcloud.
nextcloud.example.com
Si la página web no se puede cargar, probablemente necesite abrir el puerto 80 en el firewall.
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Y el puerto 443 también.
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
Antes de ingresar información confidencial, debemos habilitar la conexión HTTPS segura en Nextcloud. Podemos obtener un certificado TLS gratuito de Let’s Encrypt. Instale el cliente Let's Encrypt (certbot) desde el repositorio de Ubuntu 20.04.
sudo apt install certbot python3-certbot-apache
Python3-certbot-apache
es el complemento de Apache. A continuación, ejecute el siguiente comando para obtener un certificado TLS gratuito mediante el complemento de Apache.
sudo certbot --apache --agree-tos --redirect --staple-ocsp --email [email protected] -d nextcloud.example.com
donde:
- –apache2 :use el autenticador e instalador de Apache
- –de acuerdo :Acepto los términos de servicio de Let's Encrypt
- –redireccionar :Reforzar HTTPS agregando redirección 301.
- –grapa-ocsp :habilite el grapado OCSP.
- –correo electrónico :Correo electrónico utilizado para el registro y el contacto de recuperación.
- -d va seguido de una lista de nombres de dominio, separados por comas. Puede agregar hasta 100 nombres de dominio.
Se le preguntará si desea recibir correos electrónicos de EFF (Electronic Frontier Foundation). Después de elegir S o N, su certificado TLS se obtendrá y configurará automáticamente para usted, lo cual se indica en el mensaje a continuación.
Descubrí que Certbot no puede agregar automáticamente el encabezado HSTS en el archivo de configuración de Apache para Nextcloud. Si desea habilitar HSTS (HTTP Strict Transport Security), edite el archivo.
sudo nano /etc/apache2/sites-enabled/nextcloud-le-ssl.conf
Luego podemos agregar la siguiente línea en el bloque del servidor SSL para habilitar el encabezado HSTS.
Header always set Strict-Transport-Security "max-age=31536000"
Me gusta a continuación.
Guarde y cierre el archivo. Luego envíe un mensaje de texto con las configuraciones de Apache.
sudo apache2ctl -t
Si la prueba es exitosa, vuelva a cargar Apache para que el cambio surta efecto.
sudo systemctl reload apache2
La configuración anterior obtendrá una puntuación A+ en la prueba SSL.
Paso 6:finalice la instalación en su navegador web
Ahora puede acceder al asistente de instalación web de Nextcloud mediante una conexión HTTPS.
https://nextcloud.example.com
Para completar la instalación, debe crear una cuenta de administrador, ingresar la ruta de la carpeta de datos de Nextcloud, ingresar los detalles de la base de datos que creó en el paso 2. Puede usar el localhost
predeterminado. como dirección de host, o puede ingresar localhost:3306
, mientras MariaDB escucha en el puerto 3306.
La carpeta de datos es donde se almacenan los archivos de los usuarios. Por seguridad, es mejor colocar el directorio de datos fuera del directorio webroot de Nextcloud. Entonces, en lugar de almacenar los archivos de los usuarios en /var/www/nextcloud/data/
, podemos cambiarlo a /var/www/nextcloud-data
. que se puede crear con el siguiente comando:
sudo mkdir /var/www/nextcloud-data
Luego, asegúrese de que el usuario de Apache (www-data
) tiene permiso de escritura en el directorio de datos.
sudo chown www-data:www-data /var/www/nextcloud-data -R
Haga clic en Finish Setup
botón, verá la interfaz web de Nextcloud. ¡Felicitaciones! Puede comenzar a usarlo como su almacenamiento en la nube privada.
Cómo configurar la notificación por correo electrónico de NextCloud
Si su instancia de NextCloud será utilizada por más de una persona, es importante que su servidor de NextCloud pueda enviar correos electrónicos transaccionales, como el correo electrónico de restablecimiento de contraseña. Primero, debe establecer una dirección de correo electrónico para su propia cuenta. Ve a Settings
-> Personal Info
y establezca una dirección de correo electrónico para su cuenta.
Luego ve a Configuración -> Configuración básica . Encontrará la configuración del servidor de correo electrónico. Hay dos modos de envío:sendmail
y smtp
. Puede elegir el sendmail
modo si su host NextCloud tiene un servidor SMTP en ejecución.
Si desea utilizar un servidor SMTP que se ejecuta en otro host, elija smtp
e ingrese la dirección del servidor SMTP y las credenciales de inicio de sesión como se muestra a continuación. Elija STARTTLS para el cifrado.
Para saber cómo configurar un servidor de correo electrónico, consulta el siguiente tutorial. Nota que recomiendo encarecidamente ejecutar el servidor de correo iRedMail en un sistema operativo nuevo y limpio. La instalación de iRedMail en un sistema operativo que tiene otras aplicaciones web puede fallar y es probable que rompa las aplicaciones existentes.
- Cómo configurar fácilmente un servidor de correo con todas las funciones en Ubuntu 20.04 con iRedMail
Cómo restablecer la contraseña de usuario de Nextcloud desde la línea de comandos
Si perdió la contraseña de su cuenta de administrador y no configuró la entrega de correo electrónico en Nextcloud, debe restablecer la contraseña ejecutando el siguiente comando en su servidor. Reemplace nextcloud_username
con tu nombre de usuario real.
sudo -u www-data php /var/www/nextcloud/occ user:resetpassword nextcloud_username
También hay otros comandos que pueden resultarle útiles. Lista de comandos disponibles con:
sudo -u www-data php /var/www/nextcloud/occ
o
sudo -u www-data php /var/www/nextcloud/console.php
Cómo mover el directorio de datos
En caso de que necesite mover el directorio de datos de NextCloud, hay 4 pasos para lograrlo. Primero, necesitas usar el cp
comando para copiar el directorio de datos al nuevo directorio. Por ejemplo, el punto de montaje de mi disco duro externo es /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731
. Creo el nuevo directorio de datos en el disco duro externo.
sudo mkdir /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/
Luego copio el directorio de datos original al nuevo directorio de datos. -R
bandera significa que la operación de copia es recursiva.
sudo cp /var/www/nextcloud-data/* /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/ -R
También necesita copiar el .ocdata
archivo.
sudo cp /var/www/nextcloud-data/.ocdata /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/
A continuación, debe configurar www-data
(usuario de Apache) como propietario.
sudo chown www-data:www-data /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/ -R
Por último, debe editar el config.php
archivo.
sudo nano /var/www/nextcloud/config/config.php
Busque la siguiente línea y cambie el valor de datadirectory
.
'datadirectory' => '/var/www/nextcloud-data',
Guarde y cierre el archivo. Vuelva a cargar la página web de NextCloud y listo.
Paso 7:Aumente el límite de memoria de PHP
El límite de memoria predeterminado de PHP es de 128 MB. NextCloud recomienda 512 MB para un mejor rendimiento. Para cambiar el límite de memoria de PHP, edite el php.ini archivo.
sudo nano /etc/php/7.4/apache2/php.ini
Encuentra la siguiente línea. (línea 409)
memory_limit = 128M
Cambia el valor.
memory_limit = 512M
Guarde y cierre el archivo. Alternativamente, puede ejecutar el siguiente comando para cambiar el valor sin abrir manualmente el archivo.
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/apache2/php.ini
Luego, vuelva a cargar Apache para que los cambios surtan efecto.
sudo systemctl reload apache2
Si su servidor tiene el /etc/php7.4/fpm/php.ini
archivo, eso significa que su servidor también ejecuta PHP-FPM. Recomiendo cambiar el memory_limit
en PHP-FPM también.
sudo nano /etc/php/7.4/fpm/php.ini
Encuentra el memory_limit
parámetro y cambie el valor. Después de guardar el archivo, vuelva a cargar PHP-FPM para que el cambio surta efecto.
sudo systemctl reload php7.4-fpm
Paso 8:Configure Redis Cache para NextCloud
Si vas a tu configuración de NextCloud -> resumen página, es posible que vea la siguiente advertencia:
No memory cache has been configured. To enhance your performance please configure a memcache if available.
Habilitaremos el almacenamiento en caché de memoria para nextCloud mediante el uso de Redis. Ejecute el siguiente comando para instalar el servidor Redis desde el repositorio de Ubuntu.
sudo apt install redis-server
Puede comprobar la versión con:
redis-server -v
Salida de muestra:
Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=636cde3b5c7a3923
Ahora podemos verificar si el servidor Redis se está ejecutando.
systemctl status redis
Sugerencia:si el comando anterior no se cerró de inmediato, puede presionar la tecla Q para recuperar el control de la terminal.
En la captura de pantalla anterior, podemos ver que se está ejecutando y que el inicio automático está habilitado. Si por alguna razón no se está ejecutando, ejecute el siguiente comando:
sudo systemctl start redis-server
Y si el inicio automático en el momento del arranque no está habilitado, puede usar el siguiente comando para habilitarlo:
sudo systemctl enable redis-server
Para configurar Redis como caché para nextCloud, necesitamos instalar la extensión PHP para interactuar con Redis.
sudo apt install php-redis
Compruebe si la extensión está habilitada.
php --ri redis
Podemos ver que la extensión Redis está habilitada. Si no está habilitado, ejecute el siguiente comando:
sudo phpenmod redis
Es posible que también deba volver a cargar Apache si la extensión redis aún no está habilitada.
sudo systemctl reload apache2
A continuación, edite el archivo de configuración de nextCloud.
sudo nano /var/www/nextcloud/config/config.php
Agrega las siguientes líneas arriba del final );
línea.
'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.local' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ),
Guarde y cierre el archivo. Luego reinicie Apache y PHP-FPM.
sudo systemctl restart apache2 php7.4-fpm
Ahora ve a la configuración de NextCloud -> resumen página de nuevo y actualice la página web, la advertencia sobre el almacenamiento en caché de memoria debería desaparecer.
Agregar índices que faltan
Si ve el siguiente mensaje en la Configuración de NextCloud -> Resumen página,
The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically.
Luego, debe agregar manualmente esos índices. Cambie al directorio webroot de Nextcloud.
cd /var/www/nextcloud/
Ejecute el siguiente comando para agregar índices a la base de datos de Nextcloud.
sudo -u www-data php occ db:add-missing-indices
Ahora, si actualiza la Configuración de NextCloud -> Resumen página, la advertencia sobre índices faltantes debería desaparecer.
Conversión a Big Int
Si ve el siguiente mensaje en la Configuración de NextCloud -> Resumen página,
Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically.
Luego, debe cambiar manualmente el tipo de columna. Cambie al directorio webroot de Nextcloud.
cd /var/www/nextcloud/
Cambie su Nextcloud al modo de mantenimiento para evitar que los usuarios inicien sesión y realicen cambios.
sudo -u www-data php occ maintenance:mode --on
Luego ejecute el siguiente comando para cambiar el tipo de columna.
sudo -u www-data php occ db:convert-filecache-bigint
Una vez hecho esto, apague el modo de mantenimiento.
sudo -u www-data php occ maintenance:mode --off
Ahora, si actualiza la Configuración de NextCloud -> Resumen página, la advertencia sobre big int debería desaparecer.
Cómo instalar el cliente NextCloud en el escritorio Ubuntu 20.04
Ejecute los siguientes comandos en el escritorio de Ubuntu 20.04 para instalar el cliente desde el repositorio predeterminado.
sudo apt install nextcloud-client
SiguienteCliente Cloud en Ubuntu 20.04
El software cliente para macOS, Windows, Android e iOS se puede encontrar en la página de descarga de Nextcloud.
Cómo habilitar OnlyOffice/Collabora Online
De manera predeterminada, Nextcloud se envía con soporte para OnlyOffice, que es una suite de oficina en línea que le permite editar sus archivos doc, ppt, xls directamente desde NextCloud. Solo necesitamos instalar una aplicación para usar esta función. Vaya a Nextcloud Apps
-> Office & Text
. Encuentre y habilite el community document server
aplicación.
Ahora, cuando haga clic en el botón Agregar (+) en Nextcloud, podrá crear documentos de Word, hojas de cálculo y presentaciones directamente desde su servidor Nextcloud.
Sin embargo, encontré que esta aplicación no es muy confiable. Y la edición comunitaria solo permite 20 usuarios como máximo. Debe comprar una edición empresarial si tiene más de 20 usuarios. Hay otra suite de oficina en línea basada en LibreOffice de código abierto llamada Collabora Online que tiene la misma funcionalidad, pero sin la limitación en la cantidad de usuarios. Puedes leer el siguiente artículo para integrarlo con Nextcloud.
- Integre Collabora Online con Nextcloud en Ubuntu con Docker
Aumentar el límite de tamaño del archivo de carga
Si usa el módulo Apache PHP para ejecutar el script PHP, entonces no hay límite de tamaño de archivo de carga. Si usa PHP-FPM para ejecutar el script PHP, debe cambiar el límite de tamaño del archivo. El tamaño de archivo máximo predeterminado para cargar en PHP-FPM es de 2 MB. Para aumentar el límite de tamaño de carga, edite el archivo de configuración de PHP.
sudo nano /etc/php/7.4/fpm/php.ini
Busque la siguiente línea (línea 846).
upload_max_filesize = 2M
Cambie el valor como a continuación:
upload_max_filesize = 1024M
Guarde y cierre el archivo. Alternativamente, puede ejecutar el siguiente comando para cambiar el valor sin abrir manualmente el archivo.
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.4/fpm/php.ini
Luego reinicie PHP-FPM.
sudo systemctl restart php7.4-fpm
Habilitación del protocolo HTTP/2
El protocolo HTTP/2 puede mejorar en gran medida la velocidad de carga de la página. Puede leer la siguiente guía para habilitar el protocolo HTTP/2 en Apache.
- Cómo habilitar el protocolo HTTP/2 con Apache en Ubuntu 20.04
Agregar entrada de DNS local
Se recomienda editar el /etc/hosts
archivo en su servidor Nextcloud y agregue la siguiente entrada, para que Nextcloud no tenga que consultar el DNS público, lo que puede mejorar la estabilidad general. Si su servidor Nextcloud no puede resolver el nextcloud.example.com
nombre de host, es posible que encuentre un tiempo de espera de puerta de enlace 504 error.
127.0.0.1 localhost nextcloud.example.com
Una dirección IP en /etc/hosts
El archivo puede tener varios nombres de host, por lo que si tiene otras aplicaciones instaladas en el mismo cuadro, también puede agregar otros nombres de host o subdominios en la misma línea de esta manera:
127.0.0.1 localhost focal ubuntu nextcloud.example.com collabora.example.com
Uso de Cron para ejecutar tareas en segundo plano
De forma predeterminada, Nextcloud usa AJAX para ejecutar una tarea con cada carga de página. Puede usar el servicio cron del sistema más eficiente para ejecutar trabajos en segundo plano. Vaya a Configuración de Nextcloud -> Configuración básica y seleccione Cron .
A continuación, edite los www-data
archivo crontab del usuario.
sudo -u www-data crontab -e
Agregue la siguiente línea en este archivo, para que el trabajo cron se ejecute cada 5 minutos.
*/5 * * * * php7.4 -f /var/www/nextcloud/cron.php
Guarde y cierre el archivo.
Consejos para solucionar problemas
Si encuentra errores, puede consultar uno de los siguientes archivos de registro para averiguar qué está mal.
- Registro de errores de Apache:
/var/log/apache2/error.log
- Registro de errores de Apache para el host virtual de Nextcloud:
/var/log/apache2/nextcloud.error
- Registro de la aplicación Nextcloud:
/var/www/nextcloud/data/nextcloud.log
Por ejemplo, una vez tuve un “Internal Server Error
” en mi instancia de Nextcloud y el /var/log/nginx/nextcloud.error
archivo me dijo que
FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught OC\HintException: [0]: Memcache \OC\Memcache\Redis not available for local cache (Is the matching PHP module installed and enabled?)
Resultó que debido a que utilicé el PPA ppa:ondrej/php en mi servidor Ubuntu, también necesito instalar php7.4-redis
además del php-redis
paquete.
Si ve el siguiente mensaje de error en nextcloud.log
archivo, puede ignorarlo.
Could not detect any host in https:///data/htaccesstest.txt
Actualización de Nextcloud
Es importante mantener su servidor Nextcloud actualizado con las últimas correcciones de errores y seguridad. Lea el tutorial a continuación para aprender cómo actualizar Nextcloud.
- 2 formas de actualizar Nextcloud [línea de comandos y GUI]