NextCloud on tasuta avatud lähtekoodiga isehostitav pilvelahendus. Funktsionaalselt sarnaneb see Dropboxiga. Patenditud pilvelahendused (Dropbox, Google Drive jne) on mugavad, kuid hinnaga: neid saab kasutada isikuandmete kogumiseks, kuna teie failid on salvestatud nende arvutitesse. Kui olete privaatsuse pärast mures, saate lülituda NextCloud-le, mille saate paigaldada oma privaatserverisse või virtuaalsesse privaatserverisse (VPS). Saate oma failid NextCloud-i kaudu oma serverisse üles laadida ja seejärel sünkroonida need oma lauaarvuti, sülearvuti või nutitelefoniga. Nii on teil täielik kontroll oma andmete üle.
NextCloudi funktsioonid
- Tasuta ja avatud lähtekoodiga
- Täielik krüptimine, mis tähendab, et faile saab enne serverisse üleslaadimist kliendiseadmetes krüpteerida, nii et isegi kui keegi teie serveri varastab, ei saa ta teie faile lugeda.
- Saab integreerida veebipõhise kontorikomplektiga (Collobora Online, OnlyOffice), et saaksite luua ja redigeerida oma .doc, .ppt ja .xls faile otse NextCloud-st.
- Rakenduste pood sisaldab sadu rakendusi funktsioonide laiendamiseks (nt kalendrirakendus, kontaktide rakendus, märkmete tegemise rakendus, videokonverentsi rakendus jne).
- Sünkroonimisklient on saadaval operatsioonisüsteemides Linux, macOS, Windows, iOS ja Android.
2. Paigaldage Nginx
Nginx on suure jõudlusega veebiserver ja tänapäeval väga populaarne. Seda saab kasutada ka pöördpuhverserverina ja vahemällu salvestava serverina. Nginxi veebiserveri paigaldamiseks sisestage järgmine käsk.
sudo apt install nginx
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx
nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-04-10 14:11:43 UTC; 3s ago Docs: man:nginx(8) Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 8549 (nginx) Tasks: 3 (limit: 9451) Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process
Kontrollige Nginxi versiooni.
nginx -v
nginx version: nginx/1.17.9 (Ubuntu)
Kui ühenduse loomisest keeldutakse või seda ei õnnestu luua, võib tulemüür takistada TCP porti 80 sissetulevaid päringuid. Kui kasutate iptables tulemüüri, peate TCP pordi 80 avamiseks käivitama järgmise käsu.
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo ufw allow http
sudo chown www-data:www-data /usr/share/nginx/html -R
MariaDB on MySQL-i asendaja. Selle on välja töötanud endised MySQL-i meeskonna liikmed, kes on mures, et Oracle võib muuta MySQL-i suletud lähtekoodiga tooteks. MariaDB paigaldamiseks Ubuntu 20.04 sisestage järgmine käsk.
sudo apt install mariadb-server mariadb-client
systemctl status mariadb
mariadb.service - MariaDB 10.3.22 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-04-10 14:19:16 UTC; 18s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 9161 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 9451) Memory: 64.7M CGroup: /system.slice/mariadb.service └─9161 /usr/sbin/mysqld
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo mysql_secure_installation
If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here. Enter current password for root (enter for none): PRESS ENTER Switch to unix_socket authentication [Y/n] n Change the root password? [Y/n] n Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y All done!
Vaikimisi kasutab Ubuntu MaraiDB pakett kasutaja sisselogimise autentimiseks unix_socketit, mis tähendab põhimõtteliselt, et saate MariaDB konsooli sisse logimiseks kasutada operatsioonisüsteemi kasutajanime ja parooli. Seega saate sisselogimiseks käivitada järgmise käsu ilma MariaDB juurparooli andmata.
sudo mariadb -u root
sudo mysql -u root -p
exit;
mariadb --version
Samuti on Nextcloudi käitamiseks vajalik PHP. PHP paketid lisatakse Ubuntu hoidlatesse. Hoidlate versioonid ei pruugi olla uuemad. Kui teil on vaja paigaldada uuemad versioonid, peate lisama kolmanda osapoole PPA hoidla.
Kolmanda osapoole hoidlasse PHP uuemate versioonidega käivitage allolevad käsud.
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt install php7.4-fpm php7.4-imagick php7.4-common php7.4-mysql php7.4-gmp php7.4-imap php7.4-json php7.4-pgsql php7.4-ssh2 php7.4-sqlite3 php7.4-ldap php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip
PHP message: PHP Fatal error: Uncaught Error: Call to undefined function xml_parser_create()
sudo nano /etc/php/7.4/fpm/php.ini
file_uploads = On allow_url_fopen = On short_open_tag = On memory_limit = 256M upload_max_filesize = 100M max_execution_time = 360 date.timezone = America/Chicago
Nagu eespool mainitud, kasutab Nextcloud oma sisu salvestamiseks andmebaase. Nextcloudi andmebaasi loomiseks käivitage järgmised käsud:
sudo mysql -u root -p
CREATE DATABASE nextcloud;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'uus_parool_siia';
GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Oleme valmis Nextcloudi alla laadima ja alustama selle konfigureerimist. Esmalt käivitage allolevad käsud, et laadida alla Nextcloudi uusim versioon selle hoidlast.
Järgmisena pakkige lahti allalaaditud sisu Nginxi juurkataloogi. See loob kausta nimega nextcloud.
wget https://download.nextcloud.com/server/releases/nextcloud-23.0.2.zip -P /tmp
sudo unzip /tmp/nextcloud-23.0.2.zip -d /var/www
sudo chown -R www-data:www-data /var/www/nextcloud/
sudo chmod -R 755 /var/www/nextcloud/
Laadisime Nextcloudi sisu alla uude kausta, mille nimi on Nextcloud. Nüüd konfigureerime Nginxi looma uue serveriploki, mida kasutada meie Nextcloudi veebisaidiga. Nginxiga saate luua nii palju serveriplokke. Selleks käivitage allolevad käsud, et luua kataloogis /etc/nginx/sites-available/ meie Nextcloudi serveriploki majutamiseks uus konfiguratsioonifail nimega nextcloud.conf.
sudo nano /etc/nginx/sites-available/nextcloud.conf
upstream php-handler { server unix:/var/run/php/php7.4-fpm.sock; } server { listen 80; listen [::]:80; root /var/www; index index.php index.html index.htm; server_name example.com; location ^~ /nextcloud { client_max_body_size 512M; fastcgi_buffers 8 4K; fastcgi_ignore_headers X-Accel-Buffering; gzip off; error_page 403 /nextcloud/core/templates/403.php; error_page 404 /nextcloud/core/templates/404.php; location /nextcloud { rewrite ^ /nextcloud/index.php$uri; } location ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|chang elog|data)/ { return 404; } location ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console|core/skeleton/) { return 404; } location ~ ^/nextcloud/core/signature\.json { return 404; } location ~ ^/nextcloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[sm]-provider/.+|core/templates/40[34])\.php(?:$|/) { fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param modHeadersAvailable true; fastcgi_read_timeout 180; fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~ ^/nextcloud/(?:updater|oc[sm]-provider)(?:$|/) { try_files $uri $uri/ =404; index index.php; } # Adding the cache control header for js and css files # Make sure it is BELOW the PHP block location ~ /nextcloud/.*\.(?:css|js) { try_files $uri /nextcloud/index.php$uri$is_args$args; add_header Cache-Control "max-age=15778463" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always; add_header X-Robots-Tag "none" always; add_header X-Download-Options "noopen" always; add_header X-Permitted-Cross-Domain-Policies "none" always; access_log off; } location ~ /nextcloud/.*\.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg|map| json) { try_files $uri /nextcloud/index.php$uri$is_args$args; add_header Cache-Control "public, max-age=7200" always; access_log off; } } }
Pärast ülaltoodud faili salvestamist käivitage allolevad käsud, et lubada uus fail, mis sisaldab meie Nextcloudi serveriplokki ja muid olulisi Nginxi mooduleid.
Pärast seda taaskäivitage Nginx.
sudo ln -s /etc/nginx/sites-available/nextcloud.conf /etc/nginx/sites-enabled/
sudo systemctl restart nginx.service
sudo apt install imagemagick php-imagick php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp
http://example.com/nextcloud
8. Seadistame HTTPS Nextcloudile
Oleme kirjutanud postituse selle kohta, kuidas luua ja hallata Let’s Encrypt SSL sertifikaate Nginxi veebiserveri jaoks. Saate seda postitust kasutada, et seda siin oma Nextcloudi veebisaidi jaoks rakendada. Et lugeda postitust selle kohta, kuidas veebisaidi jaoks Let’s Encrypt SSL sertifikaate genereerida, klõpsake SIIA
Kui teil õnnestus Let’s Encrypt SSL sertifikaat genereerida, peaksite seejärel meie Nextcloudi veebisaidi serveriploki uuesti avama, käivitades allolevad käsud.
sudo nano /etc/nginx/sites-available/nextcloud.conf
- Esimene serveriplokk kuulab porti 80. See sisaldab 301 ümbersuunamist HTTP ümbersuunamiseks HTTPS-i.
- Teine serveriplokk kuulab porti 443. See sisaldab 301 ümbersuunamist, et suunata www ümber mitte-www domeeni.
upstream php-handler { server unix:/var/run/php/php7.4-fpm.sock; } server { listen 80; listen [::]:80; root /var/www; index index.php index.html index.htm; server_name example.com www.example.com; include snippets/well-known.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; root /var/www; index index.php index.html index.htm; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; include snippets/well-known.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; root /var/www; index index.php index.html index.htm; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; location / { return 301 https://$server_name:443$request_uri; } location ^~ /nextcloud { client_max_body_size 512M; fastcgi_buffers 8 4K; fastcgi_ignore_headers X-Accel-Buffering; gzip off; error_page 403 /nextcloud/core/templates/403.php; error_page 404 /nextcloud/core/templates/404.php; location /nextcloud { rewrite ^ /nextcloud/index.php$uri; } location ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|chang elog|data)/ { return 404; } location ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console|core/skeleton/) { return 404; } location ~ ^/nextcloud/core/signature\.json { return 404; } location ~ ^/nextcloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[sm]-provider/.+|core/templates/40[34])\.php(?:$|/) { fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS on; fastcgi_param modHeadersAvailable true; fastcgi_read_timeout 180; fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~ ^/nextcloud/(?:updater|oc[sm]-provider)(?:$|/) { try_files $uri $uri/ =404; index index.php; } # Adding the cache control header for js and css files # Make sure it is BELOW the PHP block location ~ /nextcloud/.*\.(?:css|js) { try_files $uri /nextcloud/index.php$uri$is_args$args; add_header Cache-Control "max-age=15778463" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always; add_header X-Robots-Tag "none" always; add_header X-Download-Options "noopen" always; add_header X-Permitted-Cross-Domain-Policies "none" always; access_log off; } location ~ /nextcloud/.*\.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg|map| json) { try_files $uri /nextcloud/index.php$uri$is_args$args; add_header Cache-Control "public, max-age=7200" always; access_log off; } } }
sudo systemctl reload nginx
https://example.com/nextcloud
- Looge administraatori konto ja parool
- Jäta andmete kaust vaikeseadeks
- Valige MySQL/MariaDB
- Sisestage andmebaasi kasutajanimi
- Sisestage andmebaasi kasutaja parool
- Sisestage andmebaasi nimi
- Jätke andmebaasi host kohalikuks hostiks, kui Nextcloud ja andmebaasiserver on samas hostis.
- Klõpsake nuppu Lõpeta seadistamine
----
See postitus näitas teile, kuidas seadistada Nextcloud Ubuntu Linuxis koos Nginxi ja Let’s Encryptiga. Kui leiate ülaltoodus mingi vea või parema lahenduse, siis võtke kindlasti meiega ühendust.
NB! Kindlasti üle vaadata failisisude treppimine, kuna antud foorum lükkab kogu koodi paremasse serva.