Documentos de Académico
Documentos de Profesional
Documentos de Cultura
- 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.
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.
root@cloud-server:~# su – postgres
postgres@cloud-server:~$ psql
psql (11.7 (Debian 11.7-0+deb10u1))
Digite «help» para obtener ayuda.
Salir de Postgres:
postgres=# \q
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
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
Por último copio la carpeta nextcloud al directorio del sitio web, /var/www/nextcloud, y
le otorgo la propiedad al usuario www-data
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;
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;
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;
}
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;
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;
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;
}
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/
- 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
contraseña nextadministrador