Nextcloud na linuxu: instalacija uz Nginx i Let’s Encrypt

Article Image

Zašto postaviti Nextcloud na Linux sa Nginx-om i Let’s Encrypt-om?

Ako želite privatni cloud koji vam daje kontrolu nad podacima, Nextcloud je popularan izbor. Kombinacija Linux servera, Nginx-a kao reverznog proxy-ja i Let’s Encrypt SSL sertifikata pruža brzu, sigurnu i jeftinu platformu za sinhronizaciju fajlova, deljenje kalendara i saradnju. Vi ćete imati potpunu kontrolu nad podešavanjima, sigurnosnim kopijama i politikama pristupa, dok Let’s Encrypt omogućava automatsko obnavljanje HTTPS sertifikata bez dodatnih troškova.

Šta treba da pripremite pre nego što počnete

Osnovni zahtevi i preporučene komponente

Pre nego što započnete instalaciju Nextclouda, obezbedite sledeće komponente i informacije. Ovo će ubrzati proces i smanjiti verovatnoću grešaka.

  • Linux distribucija: preporučeno Debian/Ubuntu (ili CentOS/RHEL sa odgovarajućim paketima).
  • Ulogovan korisnik sa sudo privilegijama ili pristup root nalogu.
  • Javan domen (npr. cloud.vasadomena.com) sa A/AAAA zapisom koji pokazuje na IP servera.
  • Nginx kao web server i PHP-FPM (podržane verzije PHP 8.0 ili novije za bolju kompatibilnost).
  • Baza podataka: MariaDB ili PostgreSQL (MariaDB je često najjednostavnija opcija za početnike).
  • Certbot za dobijanje i automatsko obnavljanje Let’s Encrypt sertifikata.
  • Minimalno 2 GB RAM za osnovne instalacije; više RAM-a i SSD preporučeni za veće opterećenje.

Bezbednosne i mrežne postavke koje morate rešiti

Pre nego što instalirate softver, posvetite vreme osnovnim bezbednosnim postavkama sistema:

  • Firewall: otvorite portove 80 (HTTP) i 443 (HTTPS) i zatvorite nepotrebne portove.
  • SSH: onemogućite root prijavu preko lozinke, koristite SSH ključeve i promenite podrazumevani port ako želite dodatni sloj zaštite.
  • Vremenska sinhronizacija: instalirajte i omogućite NTP ili systemd-timesyncd kako bi vreme na serveru bilo tačno (važno za SSL).
  • Backupi: planirajte mesto za rezervne kopije (lokalni disk, eksterni disk ili udaljena lokacija).
  • Prava datoteka: nakon instalacije, potrebno je pravilno podesiti vlasništvo i dozvole direktorijuma Nextcloud-a (www-data ili sličan korisnik).

Priprema baze podataka i PHP okruženja (kratki pregled)

Nextcloud zahteva bazu podataka i pouzdano PHP okruženje. Preporučeno je da kreirate namensku bazu i korisnika (npr. nextcloud@localhost) i podesite PHP-FPM pool specifičan za Nextcloud. Takođe, podesite sledeće PHP opcije pre instalacije: memory_limit, upload_max_filesize, post_max_size i max_execution_time u skladu sa vašim potrebama.

Sada kada imate jasnu sliku potrebnih komponenti i bezbednosnih podešavanja, u sledećem delu ćemo proći korak-po-korak instalaciju Nginx-a, podešavanje PHP-FPM-a, kreiranje baze i aktivaciju Let’s Encrypt sertifikata.

Instalacija Nginx-a i PHP-FPM — praktični koraci

Počnite instalaciju na Debian/Ubuntu sistemu (prilagodite pakete ako koristite drugu distribuciju). U primeru koristimo PHP 8.1; zamenite verziju ako koristite 8.0 ili 8.2.

sudo apt update
sudo apt install nginx php8.1-fpm php8.1-mysql php8.1-xml php8.1-gd php8.1-curl php8.1-zip php8.1-intl php8.1-bcmath php8.1-gmp unzip curl -y

Nakon instalacije, podesite PHP opcije koje smo pomenuli ranije: otvorite php.ini za FPM (putanja može varirati):

sudo nano /etc/php/8.1/fpm/php.ini

Izmenite ili dodajte vrednosti po potrebi:

  • memory_limit = 512M (ili više za veći sistem)
  • upload_max_filesize = 512M
  • post_max_size = 512M
  • max_execution_time = 360

Zatim kreirajte zaseban PHP-FPM pool za Nextcloud kako biste lakše kontrolisali resurse i dozvole:

sudo nano /etc/php/8.1/fpm/pool.d/nextcloud.conf
[nextcloud]
user = www-data
group = www-data
listen = /run/php/php8.1-fpm-nextcloud.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 30
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
php_admin_value[upload_max_filesize] = 512M
php_admin_value[post_max_size] = 512M

Restartujte PHP-FPM i Nginx:

sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
Article Image

Kreiranje baze podataka i Nextcloud korisnika

Primer za MariaDB/MySQL. Ako još niste, instalirajte MariaDB:

sudo apt install mariadb-server -y
sudo mysql_secure_installation

Prijavite se u MariaDB i kreirajte bazu i korisnika:

sudo mysql -u root -p

CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'SlozenaLozinka';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Napomena: zamenite ‘SlozenaLozinka’ sigurnom lozinkom i sačuvajte je. Ako preferirate PostgreSQL, postupak je sličan (kreiranje baze i korisnika).

Podešavanje Nginx server bloka i aktivacija Let’s Encrypt sertifikata

Preuzmite i raspakujte Nextcloud u /var/www/nextcloud (primer):

cd /tmp
curl -LO https://download.nextcloud.com/server/releases/nextcloud-24.0.0.zip
unzip nextcloud-24.0.0.zip
sudo mv nextcloud /var/www/nextcloud
sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 750 /var/www/nextcloud

Kreirajte Nginx konfiguraciju za vaš domen (zamenite cloud.vasadomena.com i putanju do php sock fajla):

sudo nano /etc/nginx/sites-available/nextcloud
server {
    listen 80;
    server_name cloud.vasadomena.com;

    root /var/www/nextcloud;
    access_log /var/log/nginx/nextcloud.access;
    error_log /var/log/nginx/nextcloud.error;

    client_max_body_size 512M;
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";

    location = /robots.txt { allow all; log_not_found off; access_log off; }
    location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav/; }
    location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav/; }

    location / {
        rewrite ^ /index.php$uri;
    }

    location ~ .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_pass unix:/run/php/php8.1-fpm-nextcloud.sock;
    }

    location ~* .(?:css|js|svg|gif|png|jpg|ico)$ {
        try_files $uri /index.php$uri;
        expires 365d;
        access_log off;
    }
}

Omogućite sajt i testirajte konfiguraciju:

sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Instalirajte Certbot i automatski dobijte Let’s Encrypt sertifikat:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d cloud.vasadomena.com

Certbot će zatražiti email i prihvatiti uslove. Nakon uspeha, uverite se da je automatsko obnavljanje omogućeno (systemd timer) i testirajte prekidom sučelja:

sudo systemctl status certbot.timer
sudo certbot renew --dry-run

Sada možete otvoriti https://cloud.vasadomena.com i završiti web instalaciju Nextclouda unosom podataka za administracijsku nalog i konekcije ka bazi koju ste prethodno kreirali.

Article Image

Završni koraci

Nakon uspešne instalacije preporučljivo je završiti još nekoliko zadataka radi stabilnosti i bezbednosti:

  • Podesite cron zadatak za Nextcloud da izvršava background zadatke (preporučeno na svake 15 minuta) i proverite da radi pod korisnikom web servera.
  • Proverite i eventualno dodajte domene u trusted_domains u datoteci config.php.
  • Omogućite dodatne bezbednosne zaglavlja (HSTS, Content-Security-Policy po potrebi) i pratite logove Nginx-a za greške.
  • Razvijte strategiju rezervnih kopija koja obuhvata data folder, config.php i dump baze podataka.
  • Redovno ažurirajte OS, PHP, Nextcloud i dodatke; testirajte obnavljanje certifikata pomoću certbot renew –dry-run.

Završne napomene

Postavljanje sopstvenog cloud rešenja daje veću kontrolu nad podacima, ali zahteva kontinuiranu brigu o bezbednosti i održavanju. Ako vam zatrebaju detaljna uputstva za napredne opcije ili rešavanje problema, pogledajte zvaničnu dokumentaciju: Nextcloud dokumentacija.

Frequently Asked Questions

Kako da proverim da li se Let’s Encrypt sertifikat automatski obnavlja?

Proverite status systemd timera komande certbot pomoću systemctl status certbot.timer i pokrenite test obnavljanja sa certbot renew –dry-run. Takođe osigurajte da su portovi 80 i 443 otvoreni ako se koristi webroot ili nginx plugin.

Mogu li koristiti PostgreSQL umesto MariaDB/MySQL?

Da, Nextcloud podržava PostgreSQL. Potrebno je instalirati odgovarajuće PHP ekstenzije (pdo_pgsql), kreirati PostgreSQL bazu i korisnika, i uneti te podatke tokom web instalacije ili u config.php.

Koji delovi treba da budu uključeni u rezervnu kopiju Nextclouda?

Rezervna kopija treba da obuhvati direktorijum sa podacima (data folder), datoteku config.php iz nextcloud/config i dump baze podataka (npr. mysqldump za MariaDB/MySQL ili pg_dump za PostgreSQL). Redovno testirajte vraćanje bekapa.