Publicamos un tutorial sobre cómo instalar Nextcloud en Ubuntu 16.04 con el servidor web Apache en junio de 2016, poco después del primer lanzamiento público de Nextcloud. Pero mucha gente quiere usar Nginx en lugar de Apache como servidor web. Así que en este tutorial veremos cómo instalar Nextcloud 13 en Ubuntu 16.04 con Nginx.
Nota:si está utilizando Ubuntu 18.04, siga este tutorial:Instale Nextcloud en Ubuntu 18.04 con Nginx (pila LEMP)
Requisitos
Primero, debe consultar este tutorial de instalación de LEMP para Ubuntu 16.04 si aún no ha instalado LEMP. Una vez que esté instalado, vuelve aquí y sigue leyendo.
Paso 1:Descarga NextCloud 13
Descargue el archivo zip del servidor NextCloud en su servidor. La última versión estable es 13.0.4 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 el botón de descarga para ver la última versión.
wget https://download.nextcloud.com/server/releases/nextcloud-13.0.4.zip
Extráigalo.
sudo apt install unzip unzip nextcloud-13.0.4.zip
Un nuevo directorio llamado nextcloud
se creará en el directorio de trabajo actual. Mueva el nuevo directorio y todo su contenido a la raíz del documento del servidor web Nginx
sudo mv nextcloud /usr/share/nginx/
Luego, también debe configurar el usuario de Nginx (www-data) como propietario del directorio NextCloud.
sudo chown www-data:www-data /usr/share/nginx/nextcloud/ -R
Paso 2:crear una base de datos y un usuario en MariaDB
Inicie sesión en el servidor de la base de datos MariaDB con el siguiente comando:
sudo mysql -u root
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:habilite el registro binario en MariaDB
Edite el archivo de configuración de mysqld.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Agregue las siguientes tres líneas en [mysqld]
sección.
log-bin = /var/log/mysql/mariadb-bin log-bin-index = /var/log/mysql/mariadb-bin.index binlog_format = mixed
El formato del registro binario debe ser mixed
. Guarde y cierre el archivo. Luego reinicie el servicio MariaDB.
sudo systemctl restart mysql
Ahora el registro binario está habilitado en MariaDB.
Paso 4:Cree un archivo de configuración de Nginx para Nextcloud
Crear un nextcloud.conf
archivo en /etc/nginx/conf.d/
directorio.
sudo nano /etc/nginx/conf.d/nextcloud.conf
Coloque el siguiente texto en el archivo. Reemplace el texto de color rojo con sus datos reales. No olvide establecer un registro A para el nombre de dominio.
server { listen 80; server_name nextcloud.your-domain.com; # Add headers to serve security related headers add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Path to the root of your installation root /usr/share/nginx/nextcloud/; location = /robots.txt { allow all; log_not_found off; access_log off; } # The following 2 rules are only needed for the user_webfinger app. # Uncomment it if you're planning to use this app. #rewrite ^/.well-known/host-meta /public.php?service=host-meta last; #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json # last; location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } location ~ /.well-known/acme-challenge { allow all; } # set max upload size client_max_body_size 512M; fastcgi_buffers 64 4K; # Disable gzip to avoid the removal of the ETag header gzip off; # Uncomment if your server is build with the ngx_pagespeed module # This module is currently not supported. #pagespeed off; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; location / { rewrite ^ /index.php$uri; } location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { deny all; } location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) { include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; #Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~ ^/(?:updater|ocs-provider)(?:$|/) { try_files $uri/ =404; index index.php; } # Adding the cache control header for js and css files # Make sure it is BELOW the PHP block location ~* \.(?:css|js)$ { try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=7200"; # Add headers to serve security related headers (It is intended to # have those duplicated to the ones above) add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Optional: Don't log access to assets access_log off; } location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } }
Guarde y cierre el archivo. Pruebe la configuración de Nginx, luego vuelva a cargar Nginx para que los cambios surtan efecto.
sudo nginx -t sudo systemctl reload nginx
Paso 5:Instalar y habilitar módulos PHP
Ejecute los siguientes comandos para instalar los módulos PHP necesarios.
sudo apt install php7.0-common php7.0-gd php7.0-json php7.0-curl php7.0-zip php7.0-xml php7.0-mbstring
Paso 6:habilite HTTPS
Ahora puede acceder al asistente de instalación web de Nextcloud en su navegador ingresando el nombre de dominio para su instalación de Nextcloud.
nextcloud.your-domain.com
Pero 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. Ejecute los siguientes comandos para instalar el cliente certbot (Let's Encrypt) en Ubuntu 16.04 desde el PPA oficial. software-properties-common
Se necesita el paquete para agregar PPA en Ubuntu. A veces, no está instalado de forma predeterminada en Ubuntu. Python-certbot-nginx
es el complemento de Nginx.
sudo apt install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt update sudo apt install certbot python-certbot-nginx
Es posible que también deba actualizar algunas bibliotecas.
sudo apt upgrade
A continuación, ejecute el siguiente comando para obtener un certificado TLS gratuito mediante el complemento de Nginx.
sudo certbot --nginx --agree-tos --redirect --staple-ocsp --email your-email-address -d nextcloud.your-domain.com
En unos segundos, verá un mensaje como el siguiente, lo que significa que el certificado TLS se obtuvo e instaló correctamente.
Finalice la instalación en su navegador web
Ahora puede acceder al asistente de instalación web de Nextcloud mediante una conexión HTTPS. 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 creada anteriormente.
La carpeta de datos es donde se almacenan los archivos de los usuarios. Por seguridad, es mejor colocar el directorio de datos fuera de la raíz web de Nextcloud. Entonces, en lugar de almacenar los archivos de los usuarios en /usr/share/nginx/nextcloud/data/
, podemos cambiarlo a /usr/share/nginx/nextcloud-data
, que se puede crear con el siguiente comando:
sudo mkdir /usr/share/nginx/nextcloud-data
Luego, asegúrese de que el usuario de Nginx (www-data
) tiene permiso de escritura en el directorio de datos.
sudo chown www-data:www-data /usr/share/nginx/nextcloud-data -R
Una vez hecho esto, verá la interfaz web de Nextcloud. ¡Felicitaciones! Puede comenzar a usarlo como su almacenamiento en la nube privada.
¡Eso es todo! Espero que este tutorial te haya ayudado a instalar Nextcloud en Ubuntu 16.04 con la configuración de Nginx. Como siempre, si encuentra útil esta publicación, suscríbase a nuestro boletín gratuito. También puede seguirnos en Google+, Twitter o gustar en nuestra página de Facebook.