Automatický způsob: jeden skript z účtu připraví celý server (webový stack Apache + PHP, databáze, bezpečnostní nástroje, cron). Dále už jen nasadíte panel, vydáte SSL a zadáte licenci. Funguje na Ubuntu/Debian: na čistém VPS nastaví vše od nuly, na již nakonfigurovaném serveru pouze aditivně (profil „Nakonfigurovaný server“, krok 01). Všechny příkazy níže jsou v pořadí, stačí listovat shora dolů. Na čistém VPS se hodí každý krok popořadě; pokud je server již nakonfigurovaný nebo je na něm hostingový panel, část práce skript záměrně nechává na vás — co přesně, napíše na konci své práce (rozbor výstupu najdete v kroku 01).
monitor.example.com — váš doménový; 203.0.113.10 — skutečná IP adresa serveru; /var/www/monitor — kořen panelu (kde leží public/, assets/, config.php); heslo k databázi si zvolte vlastní.
jail.local), root-crontab, pravidla UFW, konfiguraci Apache. Pokud je server již nakonfigurovaný (funkční panel, weby, pošta, vlastní jaily) — zvolte profil „Nakonfigurovaný server“: provede pouze aditivní změny a nesáhne na váš firewall, Fail2ban, poštu, SSH ani sysctl. Při zjištění hostingového panelu se skript do tohoto režimu přepne sám. Před prvním spuštěním můžete zapnout zkušební běh (zaškrtávátko v účtu) — ukáže, co se provede, aniž by cokoli změnil. Na provozním serveru si pro jistotu udělejte snímek (snapshot).
my.arciveo.com → sekce „Nastavení serveru“ (dostupná po pořízení Arcivéo Security Monitor). Je vázán na váš účet a obsahuje osobní token.
Skript připraví celý server: webový stack (Apache + PHP), databázi, nástroje pro SSL, kompletní sadu ochranných prostředků a cron úlohy (Lynis, SMART, debsums, Logwatch, denní report, aktualizace ipsum).
1) Vyberte úroveň ochrany (v účtu, před zkopírováním příkazu):
2) Spusťte na serveru pod root příkaz z účtu — vypadá takto:
3) Přečtěte si výstup na konci — je v něm napsáno, co zůstalo na vás. Skript končí blokem kontrol a seznamem „Dále — instalace panelu“. Část kroků záměrně neprovádí: co přesně, závisí na zvoleném profilu a na tom, co na serveru našel. Porovnejte se seznamem níže — provést je potřeba jen ty body, jejichž řádky se objevily ve vašem výstupu.
Control panel detected (…) — web se vytváří prostředky samotného hostingového panelu, vhost skript nevytváří. Krok 03, větev „Server s hostingovým panelem“.No vhost created (no domain given) — profil „Nakonfigurovaný server“ bez domény: vhost bez jména by se stal výchozím webem a přebíral by vaše vlastní weby, proto vytvořen nebyl. Krok 03, větev „Vytvořit vhost ručně“.sudo rules NOT written — skript nedokázal určit, pod jakým účtem panel běží. Je to běžná situace: soubory panelu se nahrávají až po automatickém nastavení, takže nebylo podle čeho určovat. Bez těchto pravidel moduly systémová data neuvidí. Krok 04, blok „sudo pro webový server“.! Nginx does not read .htaccess — před Apache stojí Nginx a zapsat zákaz do jeho konfigurace automaticky se nepodařilo. Udělejte to bezpodmínečně: jinak se data/, keys/, database/ a config.php vydávají ven mimo .htaccess. Krok 03, blok „Pokud před Apache stojí Nginx“.UFW installed but inactive — firewall je nainstalovaný, ale vypnutý: na nakonfigurovaném serveru jej skript sám nezapíná, aby vám neodřízl přístup. Zapněte jej sami a bezpodmínečně povolte svůj SSH port:
Fail2ban installed but not running — spusťte: sudo systemctl enable --now fail2ban.Database server present … but not running — spusťte databázový server před krokem 04: sudo systemctl enable --now mariadb (nebo mysql — podle toho, co je nainstalováno).Certbot skipped — issue SSL in … — certifikát se vydává přepínačem Let's Encrypt v hostingovém panelu; krok 06 nepotřebujete.All checks passed. Body s ! vyžadují pozornost; podrobnosti se zapisují do logu, jehož cestu skript vypíše úplně na konci (Log: …).
Chcete-li otevírat panel na adrese jako monitor.example.com a získat bezplatný SSL, musí doména směřovat na server. V ovládacím panelu DNS (u registrátora nebo hostera) vytvořte A-záznam:
Za několik minut (někdy až hodinu) ověřte, že doména směřuje na server:
/var/www/monitor a nastavilo web Apache (DocumentRoot na kořen panelu, PHP-FPM, AllowOverride pro .htaccess). Ve výstupu skriptu je to řádek vhost … → DocumentRoot …. Adresář ani vhost není třeba vytvářet zvlášť — stačí nahrát soubory a nastavit oprávnění.
Větev „Server s hostingovým panelem“ (ve výstupu: Control panel detected (…)). Weby na takovém serveru spravuje panel a vlastní vhost skript záměrně nevytváří — byl by přepsán při první přestavbě konfigurací panelem. Postup je následující:
public_html této domény: vedle index.php, api/, assets/ musí ležet i služební config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/. Nic nad webový kořen vynášet netřeba: služební složky jsou chráněny souborem .htaccess z distribuce a pod Nginxem zákazem, který skript zapsal do konfigurace domény.config.php (krok 05). Cesty v příkazech nahraďte za /home/účet/web/doména/public_html a vlastníka za uživatele této domény místo www-data.Větev „Vytvořit vhost ručně“ (ve výstupu: No vhost created (no domain given)). To nastává pouze u profilu „Nakonfigurovaný server“, když nebyla předána doména. Nejjednodušší je jednoduše znovu spustit příkaz z účtu a doménu uvést:
Opakované spuštění je bezpečné: již provedené se nezdvojuje. Pokud však potřebujete vhost vytvořit ručně — zde je tatáž konfigurace, jakou zapisuje instalátor:
ServerName je zde povinný. Vhost bez jména se stává výchozím webem Apache a začne odpovídat za cizí domény na témže serveru. Ze stejného důvodu nevypínejte 000-default.conf na nakonfigurovaném serveru: tento web mohl být předělán na něčí provozní — na čistém VPS jej instalátor odstraňuje sám, zde to dělat netřeba.
! Nginx does not read .htaccess). Nginx vydává statické soubory přímo z disku a .htaccess nečte — služební složky by zůstaly otevřené ven, přestože je Apache korektně uzavírá. Skript předem připravil soubor se zákazy; je potřeba jej připojit v bloku server{} vašeho webu a Nginx znovu načíst:
my.arciveo.com → „Ke stažení“. Před nahráním na server archiv rozbalte.
Nahrajte obsah distribuce do /var/www/monitor (aby uvnitř byly public/, assets/, config.php atd.) — přes SFTP/SCP (FileZilla / WinSCP) nebo příkazem scp z lokálního počítače:
ServerName), předává se do příkazu automatického nastavení už v kroku 01: … | sudo bash -s -- monitor.example.com (nebo se doména uvede v poli „Doména panelu“ v účtu). Pokud doménu nepředáte — panel odpovídá na libovolný host i na IP a ServerName zapíše certbot při vydání SSL (krok 06); nic není třeba přeinstalovávat.
root nebo přes SFTP, soubory patří uživateli root a webový server (www-data) je nedokáže přečíst — panel se otevře prázdný nebo s chybou 403 (v logu: .htaccess unreadable / directory not executable). Příkaz níže to opraví:
Zpřístupněte si nahrávání souborů přes SFTP. Po příkazu výše patří všechny soubory uživateli www-data, zatímco FileZilla / WinSCP se připojují pod vaším vlastním uživatelem — nahrávání pak selže s SSH_FX_PERMISSION_DENIED (Permission denied). Vyberte jednu ze dvou variant.
Varianta A — ACL jen pro vašeho uživatele (doporučeno). Právo zápisu získáte pouze vy; webový server stále nemůže přepsat kód panelu:
Varianta B — přes skupinu www-data. Jednodušší, ale právo zápisu k souborům panelu získá i webový server: při zranitelnosti v PHP by šlo kód vyměnit. Na pořadí příkazů záleží — config.php a pracovní složky se zavírají jako poslední:
id deploy — v seznamu skupin se musí objevit www-data; ls -ld /var/www/monitor — oprávnění drwxrwsr-x, písmeno s místo x znamená, že setgid je nastaven.
Vytvořte databázi a uživatele a poté naimportujte schéma. Blok s databází vložte do terminálu celý (sudo mysql se přihlásí jako root přes unixový soket — heslo roota není potřeba). monitor_db a monitor_user jsou příkladové názvy, můžete zvolit libovolné vlastní; zapamatujte si název databáze, uživatele a heslo — zadáte je v dalším kroku do config.php:
admin vytvoří sám při prvním otevření v prohlížeči (z database/db.sql), pokud je databáze prázdná.
Pokud se tabulky nevytvořily (panel hlásí chybu připojení k databázi nebo místo přihlašovacího formuláře zobrazuje prázdnou obrazovku) — naimportujte schéma ručně. Příkaz se spouští v kořeni panelu, hodnoty se berou z bloku výše:
$DBNAME / $DBUSER / $DBPASS už „zapomněly“ (nová relace terminálu) — doplňte hodnoty do příkazu ručně nebo je znovu nastavte týmiž třemi řádky z bloku výše.
sudo rules NOT written — nebylo podle čeho účet panelu určit (soubory ještě nebyly nahrány) a pravidla vytvořena nejsou. Bez nich zůstanou sekce jako firewall, Fail2ban a CrowdSec prázdné. Nyní, když jsou soubory na místě, spusťte příkaz z účtu ještě jednou a účet uveďte výslovně:
www-data nahraďte uživatelem, pod kterým běží PHP vašeho webu (na hostingovém panelu je to obvykle vlastník domény). Zjistíte jej takto:
/etc/sudoers.d/monitor existuje a jsou v něm řádky s vaším uživatelem.
config.php v kořeni panelu (/var/www/monitor/config.php) je jediný soubor, který je potřeba upravit ručně. Veškerá nastavení panelu jsou v něm zadaná konstantami define(). Otevřete jej v editoru:
Doplňte své hodnoty do zvýrazněných míst; ostatní ponechte beze změny:
Co měnit:
DB_NAME, DB_USER, DB_PASS — přesně stejný název databáze, uživatel a heslo, jaké jste zadali při vytváření DB v kroku 04 (pokud jste ponechali příklady — monitor_db / monitor_user). DB_HOST a DB_CHARSET neměňte.APP_URL — úplná adresa panelu s https://, bez lomítka na konci a bez www. Musí se shodovat s doménou, na kterou licenci aktivujete (krok 07), jinak bude klíč odmítnut.TIMEZONE — vaše časové pásmo (seznam — timedatectl list-timezones). Ovlivňuje pouze to, jak panel zobrazuje data; čas spouštění cron-úloh neovlivňuje (tam platí pásmo systému).SESSION_LIFETIME — po kolika sekundách nečinnosti si panel vyžádá opětovné přihlášení (výchozí je 8 hodin). Např. 3600 = 1 hodina, 86400 = den.display_errors, log_errors, error_log) — ponechte ve výchozím stavu.Uložte soubor (Ctrl+O, Enter, poté Ctrl+X) a restartujte PHP-FPM — jinak se kvůli OPcache změny neprojeví:
640 (nastavená v kroku 03) a výslovný zákaz v kořenovém .htaccess. Nezveřejňujte jej ve veřejných repozitářích a nepředávejte podpoře se skutečným heslem.
http:// se nepřihlásíte.
Certbot skipped — issue SSL in …). Certifikát se vydává přepínačem Let's Encrypt na webové doméně přímo v panelu — o jeho obnovu se pak stará také panel.
certbot a plugin pro Apache už automatická konfigurace nainstalovala. DNS domény už musí směřovat na server (krok 02). Vydání jedním příkazem:
Pokud se má panel otevírat i s www. — uveďte obě jména v jednom příkazu, jinak prohlížeč na druhé adrese zobrazí varování o certifikátu:
Y.<VirtualHost *:443>, nastaví přesměrování http→https a automatické obnovení. Na konci — Successfully enabled HTTPS.
dig +short monitor.example.com vrací IP serveru a jsou otevřené porty 80/443 (sudo ufw allow 80,443/tcp).
Po vydání: https://monitor.example.com se otevírá se zámkem, http:// přesměrovává na https://.
Otevřete https://monitor.example.com, přihlaste se admin / useradmin a projděte kontrolní seznam:
ARCIVEO-… z účtu aktivujte na svou doménu a klíč vložte do „Nastavení“ → „Licence“. Více informací.public/start_db.php, pokud zůstal: umožňuje bez přihlášení znovu vytvořit databázi. Dokud soubor leží v kořeni panelu nebo v public/, panel na něj upozorňuje červeným bannerem.sudo /usr/local/bin/clamav-scan.sh) silně zatěžuje disk i procesor a může trvat hodinu i více — na provozním serveru je lepší počkat na noční spuštění v 01:30. Sekce „Disky (SMART)“, „Výkon“ a „Bezpečnostní aktualizace“ se naplní samy: každých 30 minut, 5 minut a jednou za hodinu.