Nextcloud je bezplatný (Open Source) software podobný Dropboxu, který je součástí projektu ownCloud. Nextcloud je napsán v PHP a JavaScriptu, podporuje mnoho databázových systémů jako MySQL/MariaDB, PostgreSQL, Oracle Database a SQLite. Aby byly vaše soubory synchronizovány mezi Desktopem a vaším vlastním serverem, Nextcloud poskytuje aplikace pro stolní počítače Windows, Linux a Mac a mobilní aplikaci pro Android a iOS. Nextcloud není jen klon Dropboxu, poskytuje další funkce, jako je Kalendář, Kontakty, Plánování úkolů a streamování médií pomocí Ampache atd.
V tomto tutoriálu vám ukážeme, jak nainstalovat a nakonfigurovat nejnovější vydání Nextcloud (v době psaní tohoto článku je nejnovější vydání 13.0.2) na serveru Ubuntu 18.04. Spustíme Nextcloud s webovým serverem Nginx a PHP7.1-FPM a jako databázový systém použijeme server MySQL.
Předpoklady
- Ubuntu 18.04
- Oprávnění uživatele root
Co uděláme
- Nainstalujte webový server Nginx
- Nainstalujte a nakonfigurujte PHP7.1-FPM
- Instalace a konfigurace serveru MySQL
- Vygenerujte SSL Letsencrypt
- Stáhněte si Nextcloud 13
- Nakonfigurujte virtuálního hostitele Nginx pro Nextcloud
- Konfigurace brány firewall UFW
- Po instalaci Nextcloud
Krok 1 – Instalace webového serveru Nginx
Prvním krokem, který uděláme v této příručce nextcloud, je instalace webového serveru Nginx. Místo webového serveru Apache budeme používat webový server Nginx.
Přihlaste se k serveru a aktualizujte úložiště, poté nainstalujte webový server Nginx pomocí příkazu apt, jak je uvedeno níže.
sudo apt update
sudo apt install nginx -y
Po dokončení instalace spusťte službu Nginx a povolte spuštění služby při každém spuštění systému pomocí systemctl.
systemctl start nginx
systemctl enable nginx
Webový server Nginx byl nainstalován na Ubuntu 18.04. Zkontrolujte to pomocí příkazu netstat nebo curl níže.
netstat -plntu
curl -I localhost
Webový server Nginx nyní běží pod Ubuntu na standardním HTTP portu 80.
Krok 2 – Instalace a konfigurace PHP7.1-FPM
V tomto tutoriálu budeme používat PHP7.1-FPM pro nextcloud. Budeme používat PHP7.1-FPM z úložiště PPA, takže musíme do našeho systému přidat nové úložiště PPA.
Nainstalujte balíček 'software-properties-common' a přidejte úložiště PPA 'ondrej PHP' spuštěním následujících příkazů.
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
Poznámka:
Na Ubuntu 18.04 příkaz 'add-apt-repository' automaticky aktualizuje úložiště.
Nyní nainstalujte PHP7.1 a PHP7.1-FPM se všemi potřebnými rozšířeními pomocí jediného příkazu apt níže.
sudo apt install php7.1-fpm php7.1-mcrypt php7.1-curl php7.1-cli php7.1-mysql php7.1-gd php7.1-iconv php7.1-xsl php7.1-json php7.1-intl php-pear php-imagick php7.1-dev php7.1-common php7.1-mbstring php7.1-zip php7.1-soap -y
Po dokončení instalace nakonfigurujeme soubory php.ini pro php-fpm a php-cli.
Přejděte do adresáře '/etc/php/7.1'.
cd /etc/php/7.1/
Upravte soubory php.ini pro php-fpm a php-cli pomocí vim.
vim fpm/php.ini
vim cli/php.ini
Odkomentujte řádek 'date.timezone' a změňte hodnotu na své vlastní časové pásmo.
date.timezone = Asia/Jakarta
Odkomentujte řádek 'cgi.fix_pathinfo' a změňte hodnotu na '0'.
cgi.fix_pathinfo=0
Uložte a ukončete.
Dále upravte konfiguraci fondu php-fpm 'www.conf'.
vim fpm/pool.d/www.conf
Odkomentujte tyto řádky níže.
env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp
Uložte a ukončete.
Restartujte službu PHP7.1-FPM a povolte její spuštění při každém startu systému.
systemctl restart php7.1-fpm
systemctl enable php7.1-fpm
Nyní to zkontrolujte pomocí příkazu netstat.
netstat -pl | grep php
A dostanete, že php-fpm nyní běží pod souborem ponožky '/run/php/php7.1-fpm.sock'.
Krok 3 – Instalace a konfigurace serveru MySQL
V tomto kroku nainstalujeme nejnovější verzi MySQL a vytvoříme novou databázi pro instalaci nextcloud. Nejnovější verze balíčků MySQL jsou ve výchozím nastavení k dispozici v úložišti.
Nainstalujte nejnovější verzi serveru MySQL pomocí příkazu apt níže.
sudo apt install mysql-server mysql-client -y
Po dokončení instalace spusťte službu MySQL a povolte její spuštění při každém startu systému.
systemctl start mysql
systemctl enable mysql
Nyní nakonfigurujeme kořenové heslo MySQL pomocí příkazu 'mysql_secure_installation'.
Spusťte následující příkaz.
mysql_secure_installation
V této verzi MySQL 5.8 došlo k vylepšení zabezpečení zásady hesla MySQL. Musíte zvolit zásadu hesla – 0 pro zásadu NÍZKÁ, 1 pro zásadu STŘEDNÍ a 2 pro zásadu SILNÁ.
V této příručce budeme používat zásadu hesla 'MEDIUM' a na produkčním serveru se doporučuje používat zásadu hesla 'STRONG'.
Vyberte číslo '1' a stiskněte Enter, poté zadejte své nové heslo 'root' MySQL.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
A kořenové heslo MySQL bylo nastaveno.
Dále vytvoříme novou databázi pro instalaci nextcloud. Vytvoříme novou databázi s názvem 'nextcloud_db' s uživatelem 'nextclouduser' a heslem '[email protected]'.
Přihlaste se do prostředí MySQL jako uživatel root pomocí příkazu mysql.
mysql -u root -p
TYPE THE MYSQL ROOT PASSWORD
Nyní vytvořte databázi a uživatele s heslem spuštěním následujících dotazů MySQL.
create database nextcloud_db;
create user [email protected] identified by '[email protected]';
grant all privileges on nextcloud_db.* to [email protected] identified by '[email protected]';
flush privileges;
A byla vytvořena nová databáze a uživatel pro instalaci nextcloud.
Instalace a konfigurace MySQL pro nextcloud byla dokončena.
Krok 4 – Vygenerování SSL Letsencrypt
V tomto tutoriálu zabezpečíme nextcloud pomocí bezplatného SSL od Letsencrypt a vygenerujeme soubory certifikátů pomocí nástroje letsencrypt.
Pokud nemáte název domény nebo nemáte nainstalovaný nextcloud na místním počítači, můžete certifikát Self-Signed vygenerovat pomocí OpenSSL.
Nainstalujte nástroj 'letsencrypt' pomocí příkazu apt níže.
sudo apt install letsencrypt -y
Po dokončení instalace zastavte službu nginx.
systemctl stop nginx
Dále vygenerujeme certifikáty SSL pro název naší domény 'nextcloud.hakase-labs.io' pomocí příkazového řádku cerbot. Spusťte níže uvedený příkaz.
certbot certonly --standalone -d nextcloud.hakase-labs.io
Budete požádáni o e-mailovou adresu a ta se používá pro oznámení o obnovení. V případě smlouvy Letsencrypt TOS zadejte „A“ pro souhlas a pro sdílenou e-mailovou adresu můžete zadat „N“ jako Ne.
Po dokončení získáte výsledek, jak je znázorněno níže.
Byly vygenerovány certifikáty SSL Letsencrypt pro název domény netxcloud, všechny jsou umístěny v adresáři '/etc/letsencrypt/live/domain'.
Krok 5 – Stáhnout Nextcloud
Před stažením zdrojového kódu nextcloud se ujistěte, že je v systému nainstalován rozbalovací balíček. Pokud balíček nemáte, nainstalujte jej pomocí příkazu apt níže.
sudo apt install wget unzip zip -y
Nyní přejděte do adresáře '/var/www' a stáhněte si soubor nextcloud-13.0.2.zip.
cd /var/www/
wget https://download.nextcloud.com/server/releases/latest.zip
Rozbalte soubor zip a získáte adresář 'nextcloud' a poté vytvořte nový adresář 'data'.
unzip latest.zip
mkdir -p nextcloud/data/
Nyní změňte vlastníka adresáře 'nextcloud' na uživatele a skupinu 'www-data'.
chown -R www-data:www-data /var/www/nextcloud/
Nextcloud byl stažen do adresáře '/var/www/nextcloud' a bude to kořenový webový adresář.
Krok 6 – Konfigurace virtuálního hostitele Nginx pro Nextcloud
V tomto kroku nakonfigurujeme virtuálního hostitele nginx pro nextcloud. Nakonfigurujeme nextcloud tak, aby běžel pod připojením HTTPS a automaticky vynutíme připojení HTTP k zabezpečenému připojení HTTPS.
Nyní přejděte do adresáře '/etc/nginx/sites-available' a vytvořte nový soubor virtuálního hostitele 'nextcloud'.
cd /etc/nginx/sites-available/
vim nextcloud
Zde vložte následující konfiguraci virtuálního hostitele nextcloud.
upstream php-handler { #server 127.0.0.1:9000; server unix:/run/php/php7.1-fpm.sock; } server { listen 80; listen [::]:80; server_name nextcloud.hakase-labs.pw; # enforce https return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name nextcloud.hakase-labs.pw; ssl_certificate /etc/letsencrypt/live/nextcloud.hakase-labs.pw/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nextcloud.hakase-labs.pw/privkey.pem; # Add headers to serve security related headers # Before enabling Strict-Transport-Security headers please read into this # topic first. # add_header Strict-Transport-Security "max-age=15552000; # 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; # Path to the root of your installation 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/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } # 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; # Uncomment if your server is built with the ngx_pagespeed module # This module is currently not supported. #pagespeed off; 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/.+)\.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; #Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass php-handler; 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|woff|svg|gif)$ { try_files $uri /index.php$uri$is_args$args; 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; # Optional: Don't log access to assets access_log off; } location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } }
Uložte a ukončete.
Povolte virtuálního hostitele a otestujte konfiguraci a ujistěte se, že nedošlo k chybě.
ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
nginx -t
Nyní restartujte službu PHP7.1-FPM a službu nginx pomocí příkazu systemctl níže.
systemctl restart nginx
systemctl restart php7.1-fpm
Konfigurace virtuálního hostitele Nginx pro nextcloud byla vytvořena.
Krok 7 – Konfigurace brány UFW
V tomto tutoriálu zapneme firewall a budeme používat firewall UFW pro Ubuntu.
Povolte ufw firewall.
ufw enable
Napište „y“ a stiskněte Enter pro spuštění a povolení brány firewall UFW.
Nyní přidejte nové SSH, HTTP a HTTPS do seznamu firewallů UFW.
ufw allow ssh
ufw allow http
ufw allow https
Zkontrolujte povolený port seznamu na firewallu UFW pomocí příkazu níže.
ufw status
A získáte port HTTP 80 a port HTTPS 443 na seznamu.
Krok 8 – Nextcloud Post-Installation
Otevřete webový prohlížeč a zadejte adresu URL nextcloud.
http://nextcloud.hakase-labs.io/
A budete přesměrováni na zabezpečené připojení HTTPS.
Na hlavní stránce musíme vytvořit administrátora pro nextcloud, zadejte heslo administrátora. V konfiguraci 'Data folder' zadejte úplnou cestu k adresáři 'data' '/var/www/nextcloud/data'.
Posuňte stránku dolů a získáte konfiguraci databáze. Zadejte informace o databázi, které jsme vytvořili v kroku 3, a poté klikněte na tlačítko 'Dokončit nastavení'.
A po dokončení instalace získáte ovládací panel Nextcloud, jak je uvedeno níže.
Instalace Nextcloud 13 s webovým serverem Nginx a databází MySQL na Ubuntu 18.04 byla úspěšně dokončena.