LINUX

Cómo instalar Nextcloud 10 con Nginx en Debian 8

Nextcloud es un software de intercambio y sincronización de archivos de código abierto. Es una bifurcación de ownCloud y encuentra su uso tanto a nivel individual como empresarial. Recientemente fue iniciado por Frank Karlitschek, quien fundó el proyecto ownCloud anteriormente. Nextcloud no solo tiene todas las características de ownCloud, sino que también planea proporcionar otras nuevas e innovadoras.

En este artículo, aprenderemos cómo instalar la última versión de Nextcloud en Debian 8 usando Nginx (pronunciado como EngineX), MariaDB y PHP7.

1) Instalar Nextcloud

Los archivos de Nextcloud están disponibles para descargar desde los servidores de Nextcloud. Podemos descargar el archivo zip y descomprimirlo para completar la instalación.

# wget https://download.nextcloud.com/server/releases/nextcloud-10.0.1.zip
# unzip nextcloud-10.0.1.zip

Muevamos el directorio nextcloud a / var / www y cambiemos la propiedad a www-data

# mkdir /var/www/

# mv nextcloud /var/www/

# rm -f nextcloud-10.0.1.zip

# chown -R www-data: /var/www/nextcloud

2) Instalar Nginx

Nginx es de código abierto y uno de los servidores web más comunes disponibles. Funciona de manera eficiente, se escala bien con un hardware mínimo y proporciona una buena respuesta incluso bajo carga. Instalarlo es una simple tarea de ejecutar el comando apt-get install.

# apt-get update

# apt-get install nginx -y

Podemos verificar la versión de nginx que se instaló y también el estado para ver si el servicio se inició.

# nginx -v

#service nginx status

Alternativamente, también podemos apuntar el navegador a la IP del servidor y ver la página de bienvenida de nginx:

Verificación Nginx-Web

3) Instalar MariaDB

Instale el software cliente y servidor MariaDB

# apt-get install mariadb-server-10.0 mariadb-client-10.0 -y

En el momento de configurar la base de datos, se le pedirá que establezca una contraseña para el usuario root «administrativo». Proporcione una contraseña y salga.

Verifique la versión instalada

# mysql --version
mysql Ver 15.1 Distrib 10.0.27-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Podemos asegurar aún más la instalación ejecutando la instalación segura de MySQL. Se recomienda para servidores de producción.

# 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.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
... skipping.

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!

4) Crea una base de datos y un usuario para Nextcloud

Inicie sesión en MariaDB con la contraseña que se estableció anteriormente al configurar la base de datos.

# mysql -u root -p
Enter password:

Ahora, cree un usuario y establezca una contraseña para el mismo usuario.

MariaDB [(none)]> create database nextcloud;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create user nxtcloudadmin@localhost identified by 'admin123';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on nextcloud.* to nxtcloudadmin@localhost identified by 'admin123'
-> ;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit;

5) Habilite el registro binario para MariaDB

El registro binario contiene tanto los cambios de datos como los cambios estructurales realizados en la base de datos. Este registro será útil en la replicación y restauración de datos. Para habilitar esto, edite el archivo /etc/mysql/my.cnf y agregue las siguientes líneas

log-bin = /var/log/mysql/mariadb-bin
log-bin-index = /var/log/mysql/mariadb-bin.index
binlog_format = mixed

Después de esto, vuelva a cargar el servidor mysql

# service mysql reload

6) Instale PHP7

Primero, verifique si PHP ya está instalado en su sistema. Para hacer esto, ejecute el siguiente comando

# dpkg --list |grep php

Si no es así, busque la versión de Debian que tiene y obtenga los paquetes correspondientes.

# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.6 (jessie)
Release: 8.6
Codename: jessie

En el ejemplo anterior, el nombre de la versión es ‘jessie’. Por lo tanto, agreguemos los detalles del paquete jessie a la lista de fuentes, agreguemos la clave y luego instalemos los paquetes PHP requeridos.

# echo 'deb http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
# echo 'deb-src http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list

# cd /tmp
# wget https://www.dotdeb.org/dotdeb.gpg
# apt-key add dotdeb.gpg

apt-get update

root@debian-linoxide:~# apt install php7.0-common php7.0-fpm php7.0-cli php7.0-json php7.0-mysql php7.0-curl php7.0-intl php7.0-mcrypt php-pear php7.0-gd php7.0-zip php7.0-xml php7.0-mbstring

7) Obtenga un certificado SSL gratuito para el dominio Nextcloud

Para habilitar HTTPS en cualquier sitio web, necesitamos obtener un certificado de una autoridad de certificación (CA). ‘Let’s Encrypt’ es una CA que proporciona certificados SSL gratuitos para dominios.

Para esto, primero debemos instalar el paquete ‘git’ y luego clonar el repositorio de GitHub para descargar letsencrypt

# apt-get install git bc -y

# git clone https://github.com/letsencrypt/letsencrypt

Ahora, podemos obtener el certificado SSL cambiando al directorio ‘letsencrypt’ y emitiendo un solo comando:

# /letsencrypt-auto certonly --standalone --email <your-email-address> --agree-tos -d <your-node-name>

letsencrypt salida

8) Configuración de host virtual para su dominio

Para crear un host virtual, cree un archivo con su nombre de dominio con la extensión ‘.conf’ (por ejemplo, nodenixbox.com.conf en este caso) en la ruta / etc / nginx / sites-enabled y agregue el contenido que se indica a continuación.

Nota: Debe reemplazar el nombre del nodo (en color rojo) con su propio nombre de dominio y cambiar la ruta del certificado ssl (en azul) a donde resida su certificado ssl.

upstream php-handler {
server unix:/run/php/php7.0-fpm.sock;
}

server {
listen 80;
server_name nodenixbox.com;
}

server {
listen 443 ssl;
server_name nodenixbox.com;

ssl_certificate /etc/letsencrypt/live/nodenixbox.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/nodenixbox.com/privkey.pem;

# Path to the root of your installation
root /var/www/nextcloud/;
# set max upload size
client_max_body_size 10G;
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;

index index.php;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;

rewrite ^/.well-known/carddav /remote.php/dav/ permanent;
rewrite ^/.well-known/caldav /remote.php/dav/ permanent;

# 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 = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location ~ ^/(build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}

location ~ ^/(?:.|autotest|occ|issue|indie|db_|console) {
deny all;
}

location / {

rewrite ^/remote/(.*) /remote.php last;

rewrite ^(/core/doc/[^/]+/)$ $1/index.html;

try_files $uri $uri/ =404;
}

location ~ .php(?:$|/) {
fastcgi_split_path_info ^(.+.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
}

# Adding the cache control header for js and css files
# Make sure it is BELOW the location ~ .php(?:$|/) { block
location ~* .(?:css|js)$ {
add_header Cache-Control "public, max-age=7200";
# Add headers to serve security related headers
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
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;
}

# Optional: Don't log access to other assets
location ~* .(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
access_log off;
}
}

9) Acceso a la interfaz web de Nextcloud

Para crear y administrar su cuenta administrativa de Nextcloud, apunte su navegador a su nombre de dominio. En este ejemplo, es ‘https://nodenixbox.com’. Esto abre una ventana como se muestra a continuación, solicitando la creación de una cuenta de administrador. En la parte inferior de la misma página, verá otro cuadro que solicita el usuario, la contraseña y el nombre de la base de datos. Aquí ingrese los detalles de la cuenta que creó al instalar MariaDB y presione el botón ‘Finalizar configuración’.

NextCloud-AccountCreation (1) (1)

¡Felicidades! Ahora ha configurado su propio servidor Nextcloud y puede comenzar a compartir archivos usándolo.

Página de Nextcloud

Conclusión

Nextcloud es un lugar seguro para que cualquier persona, incluidas las empresas, almacene, comparta y proteja sus archivos o datos. También se puede utilizar para compartir calendarios, contactos, comunicaciones, etc. sin preocuparse por su seguridad. Se enfoca en las necesidades de los usuarios y clientes y está tratando de agregarle más funciones. En general, es una buena herramienta para usar.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar