Linux - instalace a nastavení Nextcloud s Nginx a PostgreSQL + HTTPS Lets Encrypt

Co nejvíce stručné řešení pro vývojáře a linux administrátory

Na superuser.cz nenaleznete žádný zbytečný obsah, vždy se jde přímo k věci, denně se zde objevují nové problémy a jejich řešení...

Začít používat

Linux - instalace a nastavení Nextcloud…

02.11.2019 napsal SYSTEM (update 06.11.2019)

Vyřešeno Nextcloud + Nginx + PostgreSQL
Modelová situace: Máme Linux server a chceme na něm nainstalovat a zprovoznit vlastní Nextcloud server, který poběží na webserveru Nginx s databázovým serverem PostgreSQL. Dále požadajeme nastavit HTTPS protokol, kdy vygenerujeme certifikáty pomocí certbotu pro Lets Encrypt.
Nejlépe hodnocení uživatelé
Hanz

Počet UP: 4855

React: 211

Rusty

Počet UP: 2250

React: 94

OL3G

Počet UP: 1568

React: 59

SYSTEM

Počet UP: 403

React: 23

Strosmajer

Počet UP: 460

React: 22

Oxytocin

Počet UP: 276

React: 15

Hyacint

Počet UP: 17

React: 10

RE: Linux - instalace a nastavení…

06.11.2019 odpověděl SYSTEM (update 06.11.2019)

Zkontrolováno

Předchozí díly dotazů na Nginx:
1.) Linux - instalace a nastavení Nginx, PHP a MySQL (LEMP)
2.) Linux - instalace a nastavení Nginx, PostgreSQL a phpPgAdmin

Toto je pokračování kdy nastavíme Nextcloud server běžící na Nginx a PostgreSQL + HTTPS Lets Encrypt

#založení uživatele nextcloud do PostgreSQL
sudo -i -u postgres
createuser --interactive -P nextcloud
heslo
n
y
n

#založení databáze nextcloud do PostgreSQL pro uživatele nextcloud
createdb -O nextcloud nextcloud

#založit nginx virtualhost nextcloud na portu 80
vim /etc/nginx/sites-available/nextcloud

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

server {
listen 80;
listen [::]:80;
server_name cloud.superuser.cz;

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;

fastcgi_hide_header X-Powered-By;

root /var/www/nextcloud;

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

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;
}

client_max_body_size 512M;
fastcgi_buffers 64 4K;

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 / {
rewrite ^ /index.php;
}

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;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}

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

location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
try_files $uri /index.php$request_uri;
add_header Cache-Control "public, max-age=15778463";
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;

access_log off;
}

location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
try_files $uri /index.php$request_uri;
access_log off;
}
}

#reload nginx konfigurace
systemctl reload nginx

#https lets encrypt cert pro doménu cloud.superuser.cz
apt install python-certbot-nginx
certbot --nginx -d cloud.superuser.cz

#stáhnout nextcloud server
data umístit do /var/www/nextcloud

#změnit práva
chown www-data:www-data -R /var/www/nextcloud

#provést instalaci nextcloud přes web browser
https:// c l o u d .superuser.cz

Možné chyby:


#Nextcloud Internal Server Error

Internal Server Error
The server was unable to complete your request.
If this happens again, please send the technical details below to the server administrator.
More details can be found in the server log.
Technical details
Remote Address: 192.168.3.200
Request ID: t6KcLCEp6JHHKgzLqOqh

#opravit oprávnění
chown www-data:www-data -R /var/www/nextcloud


#Nextcloud Access through untrusted domain

Access through untrusted domain
Please contact your administrator. If you are an administrator, edit the "trusted_domains" setting in config/config.php like the example in config.sample.php.

#oprava
vim /var/www/nextcloud/config/config.php

'trusted_domains' =>
array (
0 => 'cloud.superuser.cz',
1 => '192.168.3.200'
)
Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace