Automatická instalace

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ů.

Zástupné hodnoty v příkazech nahraďte svými: 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í.
Kompletní sada („Kompletní ochrana“) je určena pro čistý VPS. Na čisté Ubuntu/Debian nastaví bezpečnostní systém od nuly — Fail2ban (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).

01. Příkaz automatického nastavení z účtu

Příkaz získáte ve svém účtu my.arciveo.com → sekce „Nastavení serveru“ (dostupná po pořízení Arcivéo 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):

  • Plná ochrana (doporučeno) — UFW (firewall), Fail2ban, CrowdSec + bouncer, ipsum (blokovací seznam IP), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (anti-DoS), AIDE (integrita souborů), debsums, ClamAV + maldet (antivirus), Auditd, AppArmor, Monit, Lynis (audit), Logwatch, automatické bezpečnostní aktualizace.
  • Odlehčená — pro VPS s malou pamětí RAM: základní sada bez náročných komponent.
  • Nastavený server (hostingový panel) — pro již běžící server s panelem (HestiaCP apod.), weby a poštou: pouze aditivní změny (doinstalace nástrojů, cron, sudo pravidla), zatímco firewall, Fail2ban, pošta, SSH a sysctl zůstávají beze změny. Na serveru s panelem skript tento režim vybírá sám.
Zkušební běh. V účtu lze zaškrtnout „Zkušební běh“ — příkaz pak jen ukáže, co skript nainstaluje a změní, a skončí, aniž by cokoli změnil. Užitečné na již nastaveném serveru: nejprve běh, poté skutečné spuštění bez zaškrtnutí.

2) Spusťte na serveru pod root příkaz z účtu — vypadá takto:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Příkaz držte v tajnosti — je vázán na váš účet. Odkaz má omezenou platnost; pokud vypršel, klikněte v účtu na „Získat nový odkaz“.
Po automatickém nastavení je webový server Apache + PHP-FPM a bezpečnostní nástroje i cron úlohy jsou již nainstalovány a fungují „hned po instalaci“ — nic dalšího není třeba nastavovat.

02. Doména a DNS

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:

Typ: A Jméno: monitor (subdoména → monitor.example.com) nebo @ (kořen domény → example.com) Hodnota: 203.0.113.10 ← IP vašeho serveru TTL: 3600

Za několik minut (někdy až hodinu) ověřte, že doména směřuje na server:

dig +short monitor.example.com # měl by vrátit vaši IP # nebo, pokud dig není: getent hosts monitor.example.com
SSL certifikát (krok 06) se vydává pouze na doménu – proto musí DNS směřovat na server před vydáním certifikátu.

03. Nahrání souborů panelu

Automatické nastavení již vytvořilo adresář panelu /var/www/monitor a nastavilo web Apache (DocumentRoot na kořen panelu, PHP-FPM, AllowOverride pro .htaccess). Adresář ani vhost není třeba vytvářet zvlášť — stačí nahrát soubory a nastavit oprávnění.
Soubory panelu (archiv distribuce) se stahují po zakoupení v účtu 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:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
Aby se do vhostu rovnou zapsala vaše doména (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.
Nastavte oprávnění souborů — to je povinný krok. Pokud jste nahrávali pod 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í:
# Normalizujeme oprávnění celého webrootu: adresář vytvořený rootem je pro # webový server (www-data) nedostupný — bez toho panel vrací prázdnou stránku nebo 403. cd /var/www/monitor # Pracovní složky vytváříme PŘED chown — jinak nové adresáře zůstanou root:root # a při chmod 750 do nich webový server (www-data) nezapíše. sudo mkdir -p data/lynis data/logwatch tmp logs sudo chown -R www-data:www-data /var/www/monitor sudo find /var/www/monitor -type d -exec chmod 755 {} \; sudo find /var/www/monitor -type f -exec chmod 644 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 750 data tmp logs

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:

sudo apt install -y acl # Právo zápisu pro vašeho uživatele na celý adresář panelu: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # Stejné pravidlo jako výchozí — pro soubory a složky vytvořené později: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

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í:

sudo usermod -aG www-data deploy # Zápis pro skupinu + setgid (bit 2): soubory nahrané přes SFTP zůstávají # ve skupině www-data — jinak je panel nedokáže přepsat. sudo find /var/www/monitor -type d -exec chmod 2775 {} \; sudo find /var/www/monitor -type f -exec chmod 664 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 2750 /var/www/monitor/data /var/www/monitor/tmp /var/www/monitor/logs
Po variantě B se ve FileZille připojte znovu (Server → Odpojit, poté se znovu přihlaste) — nová skupina se projeví až při novém přihlášení, do té doby oprávnění stále nebudete mít. Kontrola: 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.

04. Databáze

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:

# 1. Databáze. Heslo se nastavuje JEDNOU v DBPASS a doplní se do všech řádků. # Blok se do terminálu vkládá CELÝ; sudo mysql se přihlásí jako root přes unixový soket # (heslo roota není potřeba). NEPOUŽÍVEJTE interaktivní `sudo mysql -u root -p` # s vkládáním — při vložení odejdou SQL řádky do dotazu na heslo a ztratí se. DBPASS='CHOOSE_A_PASSWORD' # ← změňte pouze tento řádek sudo mysql <<SQL CREATE DATABASE IF NOT EXISTS monitor_db CHARACTER SET utf8mb4; CREATE USER IF NOT EXISTS 'monitor_user'@'localhost' IDENTIFIED BY '$DBPASS'; GRANT ALL ON monitor_db.* TO 'monitor_user'@'localhost'; FLUSH PRIVILEGES; SQL # Kontrola (měla by zobrazit monitor_db): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # Totéž heslo zadejte do config.php → DB_PASS.
Schéma není potřeba importovat — panel si tabulky a účet admin vytvoří sám při prvním otevření v prohlížeči (z database/db.sql), pokud je databáze prázdná.
sudo pro webový server už automatické nastavení zajistilo — moduly vidí systémová data ihned. Samostatně nastavovat sudo je potřeba jen tehdy, když PHP běží pod nestandardním uživatelem (ne www-data).

05. Nastavení config.php

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:

sudo nano /var/www/monitor/config.php

Doplňte své hodnoty do zvýrazněných míst; ostatní ponechte beze změny:

// --- Databáze (z kroku 04) --- define('DB_HOST', 'localhost'); // ponechat define('DB_NAME', 'db_name'); // co jste vytvořili v kroku 04 define('DB_USER', 'user'); // co jste vytvořili v kroku 04 define('DB_PASS', 'db_password'); // co jste zadali v kroku 04 define('DB_CHARSET', 'utf8mb4'); // ponechat // --- Aplikace --- define('APP_URL', 'https://monitor.example.com'); // adresa panelu, bez lomítka na konci define('TIMEZONE', 'Europe/Prague'); // vaše časové pásmo // --- Doba trvání relace --- define('SESSION_LIFETIME', 28800); // nečinnost do opětovného přihlášení, s (28800 = 8 h)

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.
  • Blok logování chyb (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í:

sudo systemctl restart php*-fpm
config.php je tajný soubor (je v něm heslo k DB). Leží v kořeni panelu, který je zároveň webovým kořenem, ale je chráněný: práva 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.
Podrobný rozbor všech parametrů najdete ve FAQ: „Soubor config.php — všechna nastavení panelu“.

06. Vydání SSL (HTTPS)

Panel funguje pouze přes HTTPS. Přihlašovací relace používá zabezpečené cookie a WebAuthn (2FA) podle standardu funguje jen na HTTPS. Přes http:// se nepřihlásíte.

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:

sudo certbot --apache -d monitor.example.com
Na co se certbot zeptá:
  1. Enter email address — váš e-mail (přijdou tam upozornění na vypršení certifikátu).
  2. Terms of Service … (Y)es/(N)oY.
  3. Share email with the EFF … (Y)es/(N)o — dle vašeho uvážení.
Dále certbot sám vydá certifikát, zapíše <VirtualHost *:443>, nastaví přesměrování http→https a automatické obnovení. Na konci — Successfully enabled HTTPS.
Pokud vydání selže — zkontrolujte, že 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://.

07. Přihlášení a prvotní nastavení

Otevřete https://monitor.example.com, přihlaste se admin / useradmin a projděte kontrolní seznam:

  1. Změňte heslo admin — sekce „Uživatelé“ v menu.
  2. Zapněte WebAuthn (2FA) — „Klíče WebAuthn“ → zaregistrujte klíč/passkey (vyžaduje HTTPS). Zaregistrujte rovnou dva: při ztrátě jediného klíče přes něj přihlášení nebude možné. Více informací.
  3. Omezte přístup podle IP — „Nastavení“ → „Omezení přístupu podle IP“ (před zapnutím zadejte svou IP, jinak si zablokujete přístup).
  4. Zadejte licenci — aktivační kód ARCIVEO-… z účtu aktivujte na svou doménu a klíč vložte do „Nastavení“ → „Licence“. Více informací.
  5. Nastavte oznámení — Telegram a/nebo Email v „Nastavení“. Více informací.
  6. Smažte instalátor 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.
Hotovo. Bezpečnostní nástroje už běží — dashboard hned ukáže jejich stav a bezpečnostní skóre. Přehled ke každému nástroji najdete v FAQ.
Arcivéo - Security Monitor © 2026