
Kada i zašto premestiti Nextcloud između Linux servera
Možda želiš da promeniš hosting, unaprediš hardver, konsoliduješ servise ili prebaciš instancu na sigurnije okruženje. Migracija Nextclouda između Linux servera nije samo kopiranje fajlova — zahteva planiranje da bi podatci, podešavanja i korisničke privilegije ostali netaknuti. U ovom prvom delu pokrićemo šta treba da proveriš pre nego što kreneš sa tehničkim koracima i kako da organizuješ sve potrebne komponente.
Pripremni koraci i proveravanje okruženja
Napraviti listu komponenata koje koristiš
Pre nego što pređeš na akciju, identifikuj sve komponente tvoje Nextcloud instance:
- Verzija Nextcloud-a (važno za kompatibilnost pri restoranu).
- Tip baze podataka (MySQL/MariaDB ili PostgreSQL) i njena verzija.
- Web server (Apache, Nginx) i PHP verzija sa instaliranim ekstenzijama.
- Lokacija data direktorijuma (npr. /var/www/nextcloud/data ili bind mount).
- Crontab ili systemd timer koji pokreće cron zadatke Nextclouda.
- Specijalne aplikacije ili ekstenzije (external storage, encryption).
- SSL sertifikati, load balancer i DNS podešavanja.
Provere kompatibilnosti i pristupa
Trebaš da osiguraš da ciljni server podržava iste ili kompatibilne verzije softvera. Ako planiraš nadogradnju tokom migracije, dokumentuj trenutnu verziju i plan nadogradnje. Proveri da li imaš root ili sudo pristup na oba servera i da možeš da koristiš alatke kao što su ssh, rsync, mysqldump/pg_dump.
Izolovanje i backup podataka
Pre operacije obavezno napravi potpuni backup:
- Dump baze pomoću mysqldump ili pg_dump.
- Arhiviraj ili sinhronizuj data direktorijum (koristi rsync za očuvanje prava i linkova).
- Sacuvaj config/config.php i sve prilagođene fajlove (cron fajlovi, systemd/service fajlovi, SSL certifikati).
Preporučljivo je staviti Nextcloud u održavanje (maintenance mode) pre finalnog dump-a kako bi sve transakcije bile dosledne.
Precizno odredjivanje šta preneti i kako to organizovati
Organizuj svoj plan prenosa tako da imaš jasne korake: 1) backup na izvoru, 2) transfer podataka na odredište, 3) import baze i podataka, 4) testiranje. Posebno obrati pažnju na permision-e (vlasništvo i grupu fajlova) i na konfiguraciju PHP-a (memory_limit, upload_max_filesize, opcache), jer greške ovde često uzrokuju nefunkcionalnost posle migracije.
U sledećem delu ćemo praktično pokazati komande za stavljenje sistema u održavanje, pravljenje dump-a baze, sigurnu sinhronizaciju data direktorijuma pomoću rsync i prenos konfiguracionih fajlova na ciljnu mašinu, korak po korak.
Praktični koraci: maintenance mode, dump baze i sigurna sinhronizacija data direktorijuma
Sad prelazimo na konkretne komande i redosled. Pretpostavimo da je Nextcloud instaliran u /var/www/nextcloud i da je web server korisnik www-data (zameni po potrebi za apache/nginx korisnika na tvom sistemu).
1) Stavi Nextcloud u maintenance mode (na izvoru):
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
Ovo sprečava promene tokom dump-a i kopiranja.
2) Dump baze (MySQL/MariaDB):
mysqldump --single-transaction --quick --lock-tables=false -u root -p nextcloud > nextcloud-sqlbkp.sql
Za PostgreSQL:
pg_dump -U postgres -Fc -f nextcloud-sqlbkp.dump nextcloud
Koristi –single-transaction za InnoDB da bi dobio dosledan snapshot bez zabravljivanja tabela.
3) Sinhronizuj data direktorijum sa rsync-om. Primer koji čuva prava, linkove, extended attributes i SELinux kontekst:
rsync -aHAX --delete --numeric-ids --progress -e "ssh -p 22" /var/www/nextcloud/data/ user@target:/var/www/nextcloud/data/
Objašnjenje bitnih opcija:
- -a: arhiva (rekurzivno, čuva prava i vlasništvo).
- -H: čuva hard linkove.
- -A: čuva ACL-ove.
- -X: čuva xattr (važno za nogle storage/preview meta podatke).
- –numeric-ids: čuva numeričke UID/GID i izbegava mapiranje imena preko nss/pam.
4) Kopiraj konfiguraciju i dodatne fajlove:
scp /var/www/nextcloud/config/config.php user@target:/var/www/nextcloud/config/ scp -r /etc/letsencrypt/live/ user@target:/etc/letsencrypt/live/ # ako koristiš Let's Encrypt
Sačuvaj i cron ili systemd jedinice:
sudo crontab -u www-data -l > nextcloud-cron scp nextcloud-cron user@target:/tmp/
5) Isključi maintenance mode na izvoru tek nakon što si potvrdio da su dump i rsync uspešno završeni i sigurnosno kopirani na drugi disk (ne obriši izvor dok ne potvrdiš cilj):
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

Obnova na ciljnom serveru: import baze, podešavanje prava i finalne provere
Nakon transfera, idi na ciljni server i pripremi okruženje: instaliraj iste PHP ekstenzije, web server i odgovarajuću verziju baze (ili kompatibilnu verziju). Zatim importuj bazu i postavi prava.
1) Import baze (MySQL/MariaDB):
mysql -u root -p CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'tvoja_lozinka'; EXIT; mysql -u nextcloud -p nextcloud < nextcloud-sqlbkp.sql
Za PostgreSQL:
pg_restore -U postgres -d nextcloud nextcloud-sqlbkp.dump
2) Postavi prava i vlasništvo:
chown -R www-data:www-data /var/www/nextcloud
find /var/www/nextcloud -type d -exec chmod 750 {} ;
find /var/www/nextcloud -type f -exec chmod 640 {} ;
Ako koristiš SELinux, izvrši restorecon:
sudo restorecon -R /var/www/nextcloud
3) Prilagodi config.php: ažuriraj dbhost, dbuser, dbpassword i trusted_domains da odgovaraju novom serveru/IP adresi. Ako si promenio putanje (npr. data direktorijum), izmeni ‘datadirectory’.
4) Import cron-a ili registruj systemd timer, pa pokreni jedinice:
sudo crontab -u www-data /tmp/nextcloud-cron sudo systemctl daemon-reload sudo systemctl enable --now apache2
5) Pokreni provizorne Nextcloud komande za proveru i popravku:
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint # ako je potrebno sudo -u www-data php /var/www/nextcloud/occ maintenance:repair sudo -u www-data php /var/www/nextcloud/occ files:scan --all sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
6) Testiranje: prijavi se u web interfejs, proveri da li su svi korisnici, fajlovi i deljenja tu, proveri logove (data/nextcloud.log i web server logove) i proveri background jobove (cron/systemd) da rade. Ako koristiš eksterne storage backende, proveri konekcije i kredencijale.
U narednom delu ćemo obraditi uobičajene greške koje se javljaju pri migraciji i kako ih brzo dijagnostifikovati.

Uobičajene greške i brzi koraci za dijagnostiku
- Problem sa dozvolama: proveri vlasništvo i permisije (npr. chown -R www-data:www-data i podesite 750/640). Ako se pojave greške pri pristupu fajlovima, pogledaj web server log i data/nextcloud.log.
- Greška pri povezivanju na bazu: potvrdi da su dbhost, dbuser i dbpassword tačno podešeni u config.php i da je baza importovana bez grešaka. Proveri da li su portovi i socket dostupni.
- Nedostaju PHP ekstenzije: ako Nextcloud prijavljuje zahteve za ekstenzijama, instaliraj potrebne pakete (npr. php-mysql, php-gd, php-xml) i restartuj web server.
- Nevide fajlovi nakon prekopiranja: pokreni sudo -u www-data php /var/www/nextcloud/occ files:scan –all i proveri da li su skenovani svi korisnici.
- Razlike u UID/GID: ako koristiš –numeric-ids sa rsync, uveri se da su isti numerički UID/GID na cilju ili prilagodi vlasništvo posle kopiranja.
- Problemi sa eksternim storage-om: ponovo autorizuj konekcije i proveri kredencijale; proveri journal/web server log za specifične greške.
Završne napomene
Pri migraciji drži se principa “priprema-preverifikacija-bezbednost”: napravi backup, testiraj restore na izolovanom okruženju i ne briši izvor dok se ne uveriš da sve radi. Ako nisi siguran u verzije softvera ili specifične opcije, konsultuj zvaničnu dokumentaciju kao dodatnu meru: Nextcloud Admin Manual.
Frequently Asked Questions
Koliko dugo treba držati Nextcloud u maintenance mode?
Drži maintenance mode samo tokom dump-a baze i dok rsync ne završi i dok ne potvrdiš da je backup na sigurnom mestu. Isključi ga čim import i osnovne provere na ciljnom serveru uspešno prođu.
Šta ako se fajlovi pojave kao “missing” nakon kopiranja?
Pokreni sudo -u www-data php /var/www/nextcloud/occ files:scan –all da regenerišeš filecache. Proveri i prava, vlasništvo i da li su svi xattr/ACL-ovi sačuvani pri rsync kopiranju.
Kako da migriram korisnike bez gubitka deljenja i grupnih dozvola?
Pobrini se da dump baze uključuje sve tabele (bez izostavljanja) i da importuješ istu verziju baze na cilj. Deljenja i grupne konfiguracije se čuvaju u bazi; nakon restore-a pokreni maintenance:repair i files:scan da bi se sinhronizovale reference.
