Está en la página 1de 9

3.

- Instalación de Nextcloud
3.1- Instalación y configuración del servidor de bases de datos Postgresql

Para la instalación de Nextcloud se necesita un servidor de bases de datos que puede ser
MySql/MariaDB o Postgresql principalmente. Además, hay que crear una base de datos y
un usuario con permisos totales en ella para que Nextcloud cree la estructura y maneje
los datos que necesita para su funcionamiento.

apt install postgresql postgresql-contrib

Completado. Ahora puede iniciar el servidor de bases de datos usando:

pg_ctlcluster 11 main start

Ver Cluster Port Status Owner Data directory Log file


11 main 5432 down postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-
11-main.log

3.1.1- Autenticación en Postgres:

Postgresql utiliza un concepto llamado role para la autenticación que es mas flexible que
los usuarios y los grupos, de esa forma asocia los roles de Postgresql con usuarios de
UNIX/Linux para iniciar sesion en el propio servidor de bases de datos (linea de
comandos de Postgres), lo que se llama autenticación ident.

En la instalación, Postgresql creo una cuenta de usuario en el sistema llamada postgres


que se asocia con el rol predeterminado de Postgres permitiendo así iniciar sesión desde
esa cuenta. Podríamos crear otros usuarios con un rol asociado en Postgres para acceder
al servidor, pero no es la finalidad de este proyecto.

root@cloud-server:~# su – postgres

Para acceder a la consola de Postgres:

postgres@cloud-server:~$ psql
psql (11.7 (Debian 11.7-0+deb10u1))
Digite «help» para obtener ayuda.

Salir de Postgres:

postgres=# \q

3.1.2- Creando el usuario y la base de datos:

Entramos en Postgres de la forma anterior y ejecutamos las siguientes instrucciones:

postgres=# CREATE ROLE usr_nextcloud_db PASSWORD 'nextcloud_db_administrador';


CREATE ROLE
postgres=# CREATE DATABASE nextcloud WITH OWNER usr_nextcloud_db;
CREATE DATABASE
postgres=# ALTER ROLE usr_nextcloud_db WITH LOGIN;
ALTER ROLE
postgres=# \q
3.2- Instalando módulos adicionales de PHP necesarios para el funcionamiento de
Nextcloud

Una vez instalado el servidor web y el servidor de base de datos, ahora hay que instalar
algunos módulos PHP adicionales, necesarios para el funcionamiento de NextCloud:
php, php-pgsql, php-curl, php-gd, php-json, php-xml, php-intl, php-zip, php-
imagic, php-mbstring, php-memcached.
root@cloud-server:~# apt install php php-pgsql php-curl php-gd php-json php-xml
php-intl php-zip php-mbstring php-memcached

3.3- Creando el sitio web para nuestro Nextcloud:

Para la instalación de la nube privada con Nextcloud hay que crear un servidor virtual, que
será starcloud.es, esta dirección tendrá que ser resuelta mediante un servidor DNS o
mediante el archivo hosts correspondiente del cliente que quiera conectar con nuesto
servidor. Los archivos del sitio estarán alojados en /var/www/nextcloud.
La versión de Nextcloud que voy a instalar es la 18.0.2, por lo que procedo a su descarga
mediante:
root@cloud-server:~# wget
https://download.nextcloud.com/server/releases/nextcloud-18.0.2.zip

Descomprimo el archivo y obtengo la carpeta nextcloud.


root@cloud-server:~# apt install unzip

root@cloud-server:~# unzip -q nextcloud-18.0.2.zip

Por último copio la carpeta nextcloud al directorio del sitio web, /var/www/nextcloud, y
le otorgo la propiedad al usuario www-data

root@cloud-server:~# cp -r nextcloud /var/www/nextcloud


root@cloud-server:~# ls /var/www/nextcloud/
3rdparty console.php index.html ocm-provider remote.php themes
apps COPYING index.php ocs resources updater
AUTHORS core lib ocs-provider robots.txt version.php
config cron.php occ public.php status.php
chown -R www-data:www-data /var/www/nextcloud

En este punto hay que crear el directorio de datos en /home/nextcloud/data:


root@cloud-server:/var/www/starenterprise# cd /home
root@cloud-server:/home# ls
aquota.group aquota.user carlos juan lost+found pedro root
root@cloud-server:/home# mkdir nextcloud
root@cloud-server:/home# cd nextcloud/
root@cloud-server:/home/nextcloud# mkdir data

Otorgamos la propiedad al usuario web y damos permisos al directorio de datos


root@cloud-server:/home/nextcloud# chown -R www-data:www-data /home/nextcloud
root@cloud-server:/home/nextcloud# chmod -R 750 /home/nextcloud/data

Crear nuesto sitio web:


Para crear el servidor virtual starcloud.es: Creo el archivo de configuracion
/etc/nginx/sites-available/starcloud.es.conf y le añado esta configuración;

# Default server configuration


#

upstream php-handler {
server 127.0.0.1:9000;
server unix:/var/run/php/php7.3-fpm.sock;
}

server {
listen 80;
listen [::]:80;
server_name starcloud.es;
# enforce https
return 301 https://$server_name:443$request_uri;
}
server {
#listen 80;
#listen [::]:80;

# SSL configuration
#
listen 443 ssl;
listen [::]:443 ssl;
# include snippets/snakeoil.conf;
ssl_certificate /etc/ssl/certs/starenterprise.es/cloud-server.crt;
ssl_certificate_key /etc/ssl/private/starenterprise.es/cloud-server.key;

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;
add_header Referrer-Policy no-referrer;

# Remove X-Powered-By, which is an information leak


fastcgi_hide_header X-Powered-By;

root /var/www/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;

# The following rule is only needed for the Social app.


# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/webfinger /public.php?service=webfinger last;

location = /.well-known/carddav {
return 301 $scheme://$host:$server_port/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host:$server_port/remote.php/dav;
}

# Add index.php to the list if you are using PHP


index index.html index.htm index.php index.nginx-debian.html;

server_name starcloud.es;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;

#esta directiva rewrite permte que se pueda listar el directorio de aplicaciones


rewrite ^ /index.php;
}
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
# fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
# fastcgi_read_timeout 300;
#}

# set max upload size


client_max_body_size 512M;
fastcgi_buffers 64 4K;

# Enable gzip but do not remove ETag headers


gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json
application/ld+json application/manifest+json application/rss+xml
application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf
application/x-web-app-manifest+json application/xhtml+xml application/xml
font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css
text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component
text/x-cross-domain-policy;

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\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
set $path_info $fastcgi_path_info;
#try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
# Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
# Enable pretty urls
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
fastcgi_read_timeout 300;
include snippets/fastcgi-php.conf;
#fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}

location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
try_files $uri/ =404;
index index.php;
}

# Adding the cache control header for js, css and map files
# Make sure it is BELOW the PHP block
location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
try_files $uri /index.php$request_uri;
add_header Cache-Control "public, max-age=15778463";
# Add headers to serve security related headers (It is intended to
# have those duplicated to the ones above)
# Before enabling Strict-Transport-Security headers please read into
# this topic first.
#add_header Strict-Transport-Security "max-age=15768000; includeSubDomains;
preload;";
#
# WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
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;
add_header Referrer-Policy no-referrer;

# Optional: Don't log access to assets


access_log off;
}

location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
try_files $uri /index.php$request_uri;
# Optional: Don't log access to other assets
access_log off;
}

access_log /var/log/nginx/starcloud.es-access.log;
error_log /var/log/nginx/starcloud.es-error.log;
}

3.4- Activar el sitio:

Para activar el servidor virtual vamos a hay que crear el enlace simbólico en /etc/sites-
enebled/starcloud.es.conf que apunte a
/etc/nginx/sites-available/starcloud.es.conf.

root@cloud-server:~# ln -s /etc/nginx/sites-available/starcloud.es.conf
/etc/nginx/sites-enabled/

En este punto, comprobamos que la sintaxis sea correcta y recargamos la configuración


de Nginx. Si accedemos al sitio mediante el nombre de dominio starcloud.es accederemos
a la página de instalación de Nextcloud.
3.5- Ajustes previos a la instalación de Nextcloud.
El error “504 Gateway Timeout ”es un problema muy común cuando se usa Nginx con
PHP-FPM. Por lo general, eso significa que PHP-FPM tardó más tiempo en generar la
respuesta de lo que Nginx estaba dispuesto a esperar. Si no se soluciona este problema
se puede interrumpir la instalación de Nextcloud por tiempo de espera ya que se llevan a
cabo multiples tareas durante dicha instalación. También pueden interrumpirse
sincronizaciones que impliquen archivos relativamente grandes.

La solución a este problema se soluciona mediante los siguientes ajustes:

- La configuración de tiempo de espera de Nginx utiliza valores muy pequeños. Hay que
aumentar el tiempo de espera de lectura de Nginx FastCGI en /etc/nginx/nginx.conf a
traves del bloque location de php en el archivo de configuración del sitio:
fastcgi_read_timeout 300

- El servidor web está sobrecargado y tarda más de lo debido en procesar las solicitudes.
Hay que aumentar el tiempo de espera de finalización de la solicitud PHP-FPM en
/etc/php/7.3/fpm/pool.d/www.conf): request_terminate_timeout = 300

- La aplicación PHP es lenta, quizás debido a que la base de datos es lenta o lenta. Se
debe aumentar el tiempo de ejecución máximo de PHP en /etc/php/7.3/fpm/php.ini:
max_execution_time = 300

3.6- Pantalla de instalación de Nextcloud

Para acceder a la página de instalación de Nextcloud introducimos en el navegador la


URL del sitio virtual donde hemos desplegado los archivos “starcloud.es”
Aparece un formulario que nos pide los datos del usuario administrador que se va a crear
para que empecemos a administrar nuestra nube, el directorio que contendrá los datos de
los usuarios, /home/nextcloud/data, y por último el usuario y la contraseña necesarios
para que Nextcloud acceda a la base de datos creada en Postgres anteriormente para su
funcionamiento.
Dejamos marcado el checkbox que indica que se instalen las aplicaciones recomendadas
como son: Calendario, contactos, correo, OnlyOffice, etc.
Despues de instalarse Nextcloud (tomará unos minutos) y las aplicaciones
recomendadas, entramos a la pagina principal de Nextcloud del Usuario administrador
que acabamos de crear.
Usuario nextadmin

contraseña nextadministrador

También podría gustarte