Automatski način: jedna skripta iz korisničkog naloga priprema ceo server (veb-stek Apache + PHP, baza podataka, bezbednosni alati, cron). Zatim — postavite kontrolnu tablu, izdajte SSL i unesite licencu. Radi na Ubuntu/Debian: na novom VPS-u podešava sve od nule, a na već podešenom serveru — samo aditivno (profil „Podešeni server“, korak 01). Sve komande ispod idu po redu, samo listajte odozgo nadole. Na novom VPS-u odgovara svaki korak redom; ako je server već podešen ili na njemu stoji hosting-panel, deo posla skripta namerno ostavlja vama — šta tačno, ispisuje na kraju svog rada (analiza ispisa — u koraku 01).
monitor.example.com — vaš domen; 203.0.113.10 — stvarna IP adresa servera; /var/www/monitor — koren kontrolne table (gde se nalaze public/, assets/, config.php); lozinku za bazu smislite sami.
jail.local), root-crontab, UFW pravila, Apache konfiguraciju. Ako je server već podešen (radna kontrolna tabla, sajtovi, pošta, sopstveni jail-ovi) — izaberite profil „Podešeni server“: on unosi samo aditivne izmene i ne dira vaš firewall, Fail2ban, poštu, SSH i sysctl. Kada otkrije hosting-tablu, skripta se sama prebacuje na ovaj režim. Pre prvog pokretanja možete uključiti probni prolaz (kvačica u nalogu) — on prikazuje šta će biti urađeno, bez ikakvih izmena. Na radnom serveru za svaki slučaj napravite snimak (snapshot).
my.arciveo.com → odeljak „Podešavanje servera“ (dostupan nakon aktivacije Arcivéo Security Monitor). Vezana je za vaš nalog i sadrži lični token.
Skripta priprema ceo server: veb-stek (Apache + PHP), bazu podataka, alate za SSL, kompletan set zaštitnih sredstava i cron-zadatke (Lynis, SMART, debsums, Logwatch, dnevni izveštaj, ažuriranje ipsum).
1) Izaberite nivo zaštite (u nalogu, pre kopiranja komande):
2) Izvršite na serveru pod root komandu iz naloga — izgleda ovako:
3) Pročitajte ispis na kraju — tamo piše šta ostaje na vama. Skripta završava rad blokom provera i spiskom „Dalje — instalacija kontrolne table“. Deo koraka ona namerno ne radi: šta tačno, zavisi od izabranog profila i od toga šta je zatekla na serveru. Uporedite sa spiskom ispod — treba izvršiti samo one stavke čije su se linije pojavile u vašem ispisu.
Control panel detected (…) — sajt se pravi sredstvima same hosting-table, vhost skripta ne pravi. Korak 03, grana „Server sa hosting-panelom“.No vhost created (no domain given) — profil „Podešeni server“ bez domena: vhost bez imena postao bi podrazumevani sajt i presretao bi vaše sopstvene sajtove, zato nije napravljen. Korak 03, grana „Napraviti vhost ručno“.sudo rules NOT written — skripta nije mogla da utvrdi pod kojim nalogom radi panel. To je uobičajena situacija: fajlovi panela se otpremaju tek posle automatskog podešavanja, pa još nije bilo po čemu da se to utvrdi. Bez tih pravila moduli neće videti sistemske podatke. Korak 04, blok „sudo za veb-server“.! Nginx does not read .htaccess — ispred Apache-a stoji Nginx, a upis zabrane u njegovu konfiguraciju automatski nije uspeo. Obavezno to uradite: inače se data/, keys/, database/ i config.php izdaju napolje zaobilazeći .htaccess. Korak 03, blok „Ako ispred Apache-a stoji Nginx“.UFW installed but inactive — zaštitni zid je instaliran, ali isključen: na podešenom serveru skripta ga ne uključuje sama, da vam ne bi odsekla pristup. Uključite ga sami, obavezno dozvolivši svoj SSH-port:
Fail2ban installed but not running — pokrenite: sudo systemctl enable --now fail2ban.Database server present … but not running — pokrenite bazu pre koraka 04: sudo systemctl enable --now mariadb (ili mysql — u zavisnosti od toga šta je instalirano).Certbot skipped — issue SSL in … — sertifikat se izdaje prekidačem Let's Encrypt u hosting-panelu; korak 06 vam nije potreban.All checks passed. Stavke sa ! zahtevaju pažnju; detalji se upisuju u log, čiju putanju skripta ispisuje na samom kraju (Log: …).
Da biste kontrolnu tablu otvarali na adresi poput monitor.example.com i dobili besplatan SSL, domen mora da pokazuje na server. U kontrolnoj tabli za DNS (kod registratora ili hostinga) napravite A-zapis:
Nakon nekoliko minuta (ponekad i do sat vremena) proverite da li domen pokazuje na server:
/var/www/monitor i podesilo Apache sajt (DocumentRoot na koren kontrolne table, PHP-FPM, AllowOverride za .htaccess). U ispisu skripte to je linija vhost … → DocumentRoot …. Ne morate posebno da pravite direktorijum i vhost — samo otpremite fajlove i podesite dozvole.
Grana „Server sa hosting-panelom“ (u ispisu: Control panel detected (…)). Sajtovima na takvom serveru upravlja panel, i skripta namerno ne pravi sopstveni vhost — bio bi prebrisan pri prvoj ponovnoj izgradnji konfiguracija od strane panela. Redosled je sledeći:
public_html tog domena: pored index.php, api/, assets/ moraju da se nađu i servisni config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/. Ništa ne treba iznositi iznad veb-korena: servisni folderi zatvoreni su fajlom .htaccess iz distribucije, a pod Nginx-om — zabranom koju je skripta upisala u konfiguraciju domena.config.php (korak 05). Putanje u komandama zamenite sa /home/nalog/web/domen/public_html, a vlasnika — korisnikom tog domena umesto www-data.Grana „Napraviti vhost ručno“ (u ispisu: No vhost created (no domain given)). To se dešava samo na profilu „Podešeni server“, kada domen nije prosleđen. Najjednostavnije je ponovo pokrenuti komandu iz naloga, navodeći domen:
Ponovno pokretanje je bezbedno: već urađeno se ne duplira. Ako vhost ipak treba napraviti ručno — evo iste konfiguracije koju upisuje instalater:
ServerName je ovde obavezan. Vhost bez imena postaje podrazumevani Apache sajt i počinje da odgovara za tuđe domene na istom serveru. Iz istog razloga ne isključujte 000-default.conf na podešenom serveru: taj sajt je možda prepravljen za nečiji radni — na novom VPS-u instalater ga sam uklanja, ovde to ne treba raditi.
! Nginx does not read .htaccess). Nginx izdaje statičke fajlove direktno sa diska i .htaccess ne čita — servisni folderi bi ostali otvoreni napolje, iako ih Apache ispravno zatvara. Skripta je unapred pripremila fajl sa zabranama; treba ga uključiti u blok server{} vašeg sajta i ponovo učitati Nginx:
my.arciveo.com → „Preuzimanja“. Raspakujte arhivu pre otpremanja na server.
Otpremite sadržaj distribucije u /var/www/monitor (tako da se unutra nađu public/, assets/, config.php itd.) — preko SFTP/SCP (FileZilla / WinSCP) ili komandom scp sa lokalnog računara:
ServerName), prosleđuje se u komandu automatskog podešavanja još u koraku 01: … | sudo bash -s -- monitor.example.com (ili se domen navodi u polju „Domen kontrolne table“ u korisničkom nalogu). Ako domen nije prosleđen — kontrolna tabla odgovara na bilo koji host i po IP adresi, a ServerName će upisati certbot pri izdavanju SSL sertifikata (korak 06); ništa ne treba ponovo instalirati.
root ili preko SFTP, fajlovi pripadaju korisniku root, pa ih veb-server (www-data) neće moći da pročita — kontrolna tabla će se otvoriti prazna ili sa greškom 403 (u logu: .htaccess unreadable / directory not executable). Komanda ispod to rešava:
Otvorite sebi otpremanje fajlova preko SFTP. Nakon gornje komande svi fajlovi pripadaju korisniku www-data, dok se FileZilla / WinSCP povezuju pod vašim sopstvenim korisnikom — otpremanje tada pada uz SSH_FX_PERMISSION_DENIED (Permission denied). Izaberite jednu od dve varijante.
Varijanta A — ACL samo za vašeg korisnika (preporučeno). Pravo upisa dobijate samo vi; veb-server i dalje ne može da prepiše kôd kontrolne table:
Varijanta B — preko grupe www-data. Jednostavnija, ali pravo upisa u fajlove kontrolne table dobija i veb-server: uz ranjivost u PHP-u kôd bi mogao da se podmeni. Redosled komandi je bitan — config.php i radni folderi se zatvaraju poslednji:
id deploy — na spisku grupa mora da se pojavi www-data; ls -ld /var/www/monitor — dozvole drwxrwsr-x, slovo s umesto x znači da je setgid postavljen.
Kreirajte bazu i korisnika, zatim uvezite šemu. Blok sa bazom se u terminal umeće u celini (sudo mysql prijavljuje root preko unix-soketa — lozinka za root nije potrebna). monitor_db i monitor_user su primeri imena, možete zadati bilo koja svoja; zapamtite ime baze, korisnika i lozinku — upisaćete ih u config.php u sledećem koraku:
admin pri prvom otvaranju u pregledaču (iz database/db.sql), ako je baza prazna.
Ako tabele nisu kreirane (kontrolna tabla prikazuje grešku povezivanja sa bazom ili prazan ekran umesto forme za prijavu) — uvezite šemu ručno. Komanda se izvršava u korenu kontrolne table, a vrednosti se uzimaju iz gornjeg bloka:
$DBNAME / $DBUSER / $DBPASS već „zaboravljene“ (nova sesija terminala) — unesite vrednosti u komandu ručno ili ih zadajte ponovo istim trima linijama iz gornjeg bloka.
sudo rules NOT written — nije bilo po čemu da se utvrdi nalog panela (fajlovi još nisu bili otpremljeni), pa pravila nisu napravljena. Bez njih će odeljci poput zaštitnog zida, Fail2ban i CrowdSec ostati prazni. Sada, kada su fajlovi na mestu, pokrenite komandu iz naloga još jednom, navodeći nalog izričito:
www-data zamenite korisnikom pod kojim radi PHP vašeg sajta (na hosting-panelu je to obično vlasnik domena). Možete ga videti ovako:
/etc/sudoers.d/monitor postoji i u njemu ima linija sa vašim korisnikom.
config.php u korenu kontrolne table (/var/www/monitor/config.php) — jedini je fajl koji treba ručno urediti. Sva podešavanja kontrolne table zadata su u njemu kao define() konstante. Otvorite ga u uređivaču:
Unesite svoje vrednosti tamo gde su podsvetljena mesta; ostalo ostavite kako jeste:
Šta menjati:
DB_NAME, DB_USER, DB_PASS — tačno ista imena baze, korisnika i lozinke koje ste zadali pri kreiranju baze u koraku 04 (ako ste ostavili primere — monitor_db / monitor_user). DB_HOST i DB_CHARSET ne dirajte.APP_URL — puna adresa kontrolne table sa https://, bez kose crte na kraju i bez www. Mora se poklapati sa domenom na kom aktivirate licencu (korak 07), inače će ključ biti odbijen.TIMEZONE — vaša vremenska zona (spisak — timedatectl list-timezones). Utiče samo na to kako kontrolna tabla prikazuje datume; na vreme pokretanja cron-zadataka ne utiče (tamo važi zona sistema).SESSION_LIFETIME — nakon koliko sekundi neaktivnosti kontrolna tabla traži ponovnu prijavu (podrazumevano 8 sati). Npr. 3600 = 1 sat, 86400 = jedan dan.display_errors, log_errors, error_log) — ostavite podrazumevano.Sačuvajte fajl (Ctrl+O, Enter, zatim Ctrl+X) i ponovo pokrenite PHP-FPM — inače se zbog OPcache izmene neće primeniti:
640 (postavljena u koraku 03) i eksplicitna zabrana u korenskom .htaccess. Ne postavljajte ga u javne repozitorijume i ne prosleđujte podršci sa stvarnom lozinkom.
http:// nećete moći da se prijavite.
Certbot skipped — issue SSL in …). Sertifikat se izdaje prekidačem Let's Encrypt na veb-domenu u samom panelu — tako se i njegovim obnavljanjem bavi panel.
certbot i dodatak za Apache već su instalirani automatskim podešavanjem. DNS domena već treba da pokazuje na server (korak 02). Izdavanje jednom komandom:
Ako kontrolna tabla treba da se otvara i sa www. — navedite oba imena u jednoj komandi, inače će na drugoj adresi pregledač prikazati upozorenje o sertifikatu:
Y.<VirtualHost *:443>, podešava preusmeravanje http→https i automatsko obnavljanje. Na kraju — Successfully enabled HTTPS.
dig +short monitor.example.com vraća IP servera i da su otvoreni portovi 80/443 (sudo ufw allow 80,443/tcp).
Nakon izdavanja: https://monitor.example.com otvara se s katancem, http:// preusmerava na https://.
Otvorite https://monitor.example.com, prijavite se admin / useradmin i prođite kroz čeklistu:
ARCIVEO-… iz naloga aktivirajte na svoj domen i unesite ključ u „Podešavanja“ → „Licenca“. Više informacija.public/start_db.php ako je ostao: omogućava da se baza ponovo kreira bez autorizacije. Dok se fajl nalazi u korenu kontrolne table ili u public/, kontrolna tabla upozorava na njega crvenim banerom.sudo /usr/local/bin/clamav-scan.sh) jako opterećuje disk i procesor i može trajati sat vremena i duže — na radnom serveru je bolje sačekati noćno pokretanje u 01:30. Odeljci „Diskovi (SMART)“, „Performanse“ i „Bezbednosna ažuriranja“ pune se sami: na svakih 30 minuta, na svakih 5 minuta odnosno jednom na sat.