Automaattinen asennus

Automaattinen tapa: yksi tililtä ladattava skripti valmistelee koko palvelimen (Apache + PHP -verkkoympäristö, tietokanta, tietoturvatyökalut, cron). Sen jälkeen otetaan paneeli käyttöön, luodaan SSL ja syötetään lisenssi. Toimii Ubuntu/Debian-järjestelmillä: tuoreelle VPS:lle asennetaan kaikki alusta asti, jo määritetylle palvelimelle vain lisäävästi (profiili ”Määritetty palvelin”, vaihe 01). Kaikki alla olevat komennot ovat järjestyksessä — selaa vain ylhäältä alas.

Korvaa komentojen paikkamerkit omillasi: monitor.example.com — sinun domainisi; 203.0.113.10 — palvelimen todellinen IP; /var/www/monitor — paneelin juuri (jossa ovat public/, assets/, config.php); keksi tietokannalle oma salasana.
Täysi paketti (”Täysi suojaus”) on tarkoitettu tuoreelle VPS:lle. Puhtaalla Ubuntu/Debian-järjestelmällä se määrittää tietoturvajärjestelmän alusta asti — Fail2ban (jail.local), root-crontab, UFW-säännöt, Apache-konfiguraation. Jos palvelin on jo määritetty (toimiva paneeli, sivustot, sähköposti, omat jailit) — valitse profiili ”Määritetty palvelin”: se tekee vain lisääviä muutoksia eikä koske palomuuriisi, Fail2baniin, sähköpostiin, SSH:hon tai sysctliin. Kun hostingpaneeli havaitaan, skripti siirtyy tähän tilaan itse. Ennen ensimmäistä ajoa voit ottaa käyttöön kuivaajon (valintaruutu tilillä) — se näyttää, mitä tehdään, muuttamatta mitään. Tee toimivalla palvelimella varmuuden vuoksi tilannevedos (snapshot).

01. Automaattisen määrityksen komento tililtä

Komennon saat omalta tililtäsi my.arciveo.com → osio ”Palvelimen määritys” (käytettävissä Arcivéo Monitorin tilauksen jälkeen). Se on sidottu tiliisi ja sisältää henkilökohtaisen tunnisteen.

Skripti valmistelee koko palvelimen: web-pinon (Apache + PHP), tietokannan, SSL-työkalut, täyden suojausvalikoiman ja cron-tehtävät (Lynis, SMART, debsums, Logwatch, päivittäinen raportti, ipsum-päivitys).

1) Valitse suojaustaso (tilillä, ennen komennon kopiointia):

  • Täysi suojaus (suositeltu) — UFW (palomuuri), Fail2ban, CrowdSec + bouncer, ipsum (IP-estolista), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (DoS-suojaus), AIDE (tiedostojen eheys), debsums, ClamAV + maldet (virustorjunta), Auditd, AppArmor, Monit, Lynis (auditointi), Logwatch, automaattiset tietoturvapäivitykset.
  • Kevennetty — vähän RAM-muistia sisältäville VPS-palvelimille: peruskokoonpano ilman raskaita komponentteja.
  • Määritetty palvelin (hallintapaneeli)jo toimivalle palvelimelle, jossa on paneeli (HestiaCP jne.), sivustot ja sähköposti: vain lisäävät muutokset (työkalujen lisäasennus, cron, sudo-säännöt), kun taas palomuuri, Fail2ban, sähköposti, SSH ja sysctl jäävät ennalleen. Paneelin sisältävällä palvelimella skripti valitsee tämän tilan itse.
Kuiva ajo. Tilillä voit valita ”Kuiva ajo” — silloin komento vain näyttää, mitä skripti asentaa ja muuttaa, ja päättyy koskematta mihinkään. Hyödyllistä jo määritetyllä palvelimella: ensin ajo, sitten todellinen suoritus ilman valintaa.

2) Suorita palvelimella root-käyttäjänä tilin komento — se näyttää tältä:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Pidä komento salassa — se on sidottu tiliisi. Linkillä on rajoitettu voimassaoloaika; jos se on vanhentunut, napsauta tilillä ”Hae uusi linkki”.
Automaattisen määrityksen jälkeen web-palvelin on Apache + PHP-FPM, ja tietoturvatyökalut sekä cron-tehtävät on jo asennettu ja toimivat heti käyttövalmiina — mitään ei tarvitse määrittää erikseen.

02. Verkkotunnus ja DNS

Jotta paneelin voi avata osoitteesta kuten monitor.example.com ja saada maksuttoman SSL:n, verkkotunnuksen on osoitettava palvelimeen. Luo DNS:n hallintapaneelissa (rekisteröijällä tai hostaajalla) A-tietue:

Tyyppi: A Nimi: monitor (aliverkkotunnus → monitor.example.com) tai @ (juuriverkkotunnus → example.com) Arvo: 203.0.113.10 ← palvelimesi IP TTL: 3600

Muutaman minuutin kuluttua (joskus jopa tunnin) tarkista, että verkkotunnus osoittaa palvelimeen:

dig +short monitor.example.com # pitäisi palauttaa IP:si # tai, jos dig puuttuu: getent hosts monitor.example.com
SSL-varmenne (vaihe 06) myönnetään vain verkkotunnukselle — siksi DNS:n on osoitettava palvelimeen ennen varmenteen myöntämistä.

03. Lataa paneelin tiedostot

Automaattiasennus on jo luonut paneelin hakemiston /var/www/monitor ja määrittänyt Apache-sivuston (DocumentRoot paneelin juureen, PHP-FPM, AllowOverride tiedostolle .htaccess). Hakemistoa ja vhostia ei tarvitse luoda erikseen — lataa vain tiedostot ja aseta oikeudet.
Paneelin tiedostot (jakelupaketin arkisto) ladataan oston jälkeen tilillä my.arciveo.com”Lataukset”. Pura arkisto ennen palvelimelle siirtoa.

Lataa jakelupaketin sisältö hakemistoon /var/www/monitor (niin että sen sisällä ovat public/, assets/, config.php jne.) — SFTP:llä/SCP:llä (FileZilla / WinSCP) tai scp-komennolla paikalliselta tietokoneelta:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
Jotta vhostiin kirjautuu heti oma domainisi (ServerName), se välitetään automaattiasennuksen komennolle jo vaiheessa 01: … | sudo bash -s -- monitor.example.com (tai domain annetaan tilin kentässä ”Paneelin domain”). Jos domainia ei välitetty, paneeli vastaa mihin tahansa hostiin ja IP-osoitteeseen, ja ServerName kirjataan certbotilla SSL:n myöntämisen yhteydessä (vaihe 06); mitään ei tarvitse asentaa uudelleen.
Aseta tiedostojen oikeudet — tämä on pakollinen vaihe. Jos lataus tehtiin root-tunnuksella tai SFTP:llä, tiedostot kuuluvat root-käyttäjälle, eikä palvelin (www-data) pysty lukemaan niitä — paneeli avautuu tyhjänä tai 403-virheellä (lokissa: .htaccess unreadable / directory not executable). Alla oleva komento korjaa tämän:
# Normalisoidaan koko webrootin oikeudet: rootin luoma hakemisto ei ole # palvelimen (www-data) käytettävissä — ilman tätä paneeli antaa tyhjän sivun tai 403. cd /var/www/monitor # Työhakemistot luodaan ENNEN chown-komentoa — muuten uudet hakemistot jäävät root:root- # omistukseen ja chmod 750:n jälkeen palvelin (www-data) ei voi kirjoittaa niihin. 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

Avaa itsellesi tiedostojen lataus SFTP:llä. Yllä olevan komennon jälkeen kaikki tiedostot kuuluvat www-data-käyttäjälle, kun taas FileZilla / WinSCP yhdistävät omalla käyttäjätunnuksellasi — lataus epäonnistuu silloin virheeseen SSH_FX_PERMISSION_DENIED (Permission denied). Valitse toinen kahdesta vaihtoehdosta.

Vaihtoehto A — ACL vain omalle käyttäjällesi (suositeltava). Kirjoitusoikeuden saat vain sinä; verkkopalvelin ei edelleenkään voi korvata paneelin koodia:

sudo apt install -y acl # Kirjoitusoikeus käyttäjällesi koko paneelihakemistoon: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # Sama sääntö oletuksena — myöhemmin luotaville tiedostoille ja kansioille: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

Vaihtoehto B — www-data-ryhmän kautta. Yksinkertaisempi, mutta kirjoitusoikeuden paneelin tiedostoihin saa myös verkkopalvelin: PHP:n haavoittuvuuden yhteydessä koodi voitaisiin korvata. Komentojen järjestyksellä on merkitystä — config.php ja työkansiot suljetaan viimeisenä:

sudo usermod -aG www-data deploy # Kirjoitusoikeus ryhmälle + setgid (bitti 2): SFTP:llä ladatut tiedostot # pysyvät www-data-ryhmässä — muuten paneeli ei pysty korvaamaan niitä. 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
Vaihtoehdon B jälkeen yhdistä FileZillassa uudelleen (Palvelin → Katkaise yhteys, kirjaudu sitten uudelleen) — uusi ryhmä tulee voimaan vasta uudella kirjautumisella, sitä ennen oikeuksia ei vieläkään ole. Tarkistus: id deploy — ryhmäluettelossa pitää näkyä www-data; ls -ld /var/www/monitor — oikeudet drwxrwsr-x, kirjain s merkin x tilalla tarkoittaa, että setgid on asetettu.

04. Tietokanta

Luo tietokanta ja käyttäjä, tuo sitten skeema. Tietokantalohko liitetään terminaaliin kokonaisuudessaan (sudo mysql kirjautuu root-tunnuksella unix-socketin kautta — root-salasanaa ei tarvita). monitor_db ja monitor_user ovat esimerkkinimiä, voit antaa mitä tahansa omia; muista tietokannan nimi, käyttäjä ja salasana — kirjaat ne config.php-tiedostoon seuraavassa vaiheessa:

# 1. Tietokanta. Salasana asetetaan KERRAN DBPASS-muuttujaan ja sijoitetaan kaikkiin riveihin. # Lohko liitetään terminaaliin KOKONAISUUDESSAAN; sudo mysql kirjautuu root-tunnuksella unix-socketin kautta # (root-salasanaa ei tarvita). ÄLÄ käytä interaktiivista `sudo mysql -u root -p` # kopioimalla — liitettäessä SQL-rivit menevät salasanakyselyyn ja katoavat. DBPASS='CHOOSE_A_PASSWORD' # ← muuta vain tämä rivi 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 # Tarkistus (pitäisi näyttää monitor_db): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # Kirjaa tämä sama salasana config.php → DB_PASS.
Skeemaa ei tarvitse tuoda — paneeli luo itse taulut ja admin-tunnuksen ensimmäisellä selainkäynnillä (tiedostosta database/db.sql), jos tietokanta on tyhjä.
sudo-oikeudet verkkopalvelimelle on automaattimääritys jo asettanut — moduulit näkevät järjestelmätiedot heti. sudo täytyy määrittää erikseen vain, jos PHP toimii epätavallisella käyttäjällä (ei www-data).

05. config.php-tiedoston määritys

config.php paneelin juuressa (/var/www/monitor/config.php) on ainoa tiedosto, jota täytyy muokata käsin. Kaikki paneelin asetukset on määritetty siinä define()-vakioina. Avaa se editorissa:

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

Syötä omat arvosi korostettuihin kohtiin; jätä muut ennalleen:

// --- Tietokanta (vaiheesta 04) --- define('DB_HOST', 'localhost'); // jätä ennalleen define('DB_NAME', 'db_name'); // vaiheessa 04 luotu define('DB_USER', 'user'); // vaiheessa 04 luotu define('DB_PASS', 'db_password'); // vaiheessa 04 asetettu define('DB_CHARSET', 'utf8mb4'); // jätä ennalleen // --- Sovellus --- define('APP_URL', 'https://monitor.example.com'); // paneelin osoite, ilman kauttaviivaa lopussa define('TIMEZONE', 'Europe/Helsinki'); // aikavyöhykkeesi // --- Istunnon kesto --- define('SESSION_LIFETIME', 28800); // jouten uudelleen kirjautumiseen, s (28800 = 8 t)

Mitä muuttaa:

  • DB_NAME, DB_USER, DB_PASS — täsmälleen sama tietokannan nimi, käyttäjä ja salasana, jotka asetit tietokantaa luodessasi vaiheessa 04 (jos jätit esimerkit — monitor_db / monitor_user). Älä koske DB_HOST- ja DB_CHARSET-arvoihin.
  • APP_URL — paneelin täydellinen osoite https://-etuliitteellä, ilman kauttaviivaa lopussa ja ilman www. Sen täytyy vastata verkkotunnusta, jolle aktivoit lisenssin (vaihe 07), muuten avain hylätään.
  • TIMEZONE — aikavyöhykkeesi (luettelo — timedatectl list-timezones). Vaikuttaa vain siihen, miten paneeli näyttää päivämäärät; cron-tehtävien käynnistysaikaan se ei vaikuta (siinä pätee järjestelmän aikavyöhyke).
  • SESSION_LIFETIME — kuinka monen sekunnin jouten olon jälkeen paneeli pyytää kirjautumaan uudelleen (oletuksena 8 tuntia). Esim. 3600 = 1 tunti, 86400 = vuorokausi.
  • Virheiden lokituksen lohko (display_errors, log_errors, error_log) — jätä oletusarvoihin.

Tallenna tiedosto (Ctrl+O, Enter, sitten Ctrl+X) ja käynnistä PHP-FPM uudelleen — muuten muutokset eivät tule voimaan OPcachen takia:

sudo systemctl restart php*-fpm
config.php on salainen tiedosto (siinä on tietokannan salasana). Se sijaitsee paneelin juuressa, joka on samalla verkkojuuri, mutta se on suojattu: oikeudet 640 (asetettu vaiheessa 03) ja nimenomainen esto juuren .htaccess-tiedostossa. Älä julkaise sitä julkisiin repositorioihin äläkä lähetä sitä tukeen todellisella salasanalla.
Kaikkien parametrien tarkka läpikäynti — FAQ:ssa: ”config.php-tiedosto — kaikki paneelin asetukset”.

06. Ota käyttöön SSL (HTTPS)

Hallintapaneeli toimii vain HTTPS:n kautta. Kirjautumisistunto käyttää suojattua evästettä, ja WebAuthn (2FA) toimii standardin mukaan vain HTTPS:llä. Osoitteella http:// et pysty kirjautumaan.

certbot ja Apache-lisäosa on jo asennettu automaattiasennuksessa. Toimialueen DNS:n tulee jo osoittaa palvelimeen (vaihe 02). Käyttöönotto yhdellä komennolla:

sudo certbot --apache -d monitor.example.com
Mitä certbot kysyy:
  1. Enter email address — sähköpostisi (sinne tulevat ilmoitukset varmenteen vanhenemisesta).
  2. Terms of Service … (Y)es/(N)oY.
  3. Share email with the EFF … (Y)es/(N)o — oman harkintasi mukaan.
Sen jälkeen certbot ottaa itse varmenteen käyttöön, lisää <VirtualHost *:443>, määrittää uudelleenohjauksen http→https ja automaattisen uusinnan. Lopuksi näet Successfully enabled HTTPS.
Jos käyttöönotto epäonnistuu — tarkista, että dig +short monitor.example.com palauttaa palvelimen IP-osoitteen ja portit 80/443 ovat auki (sudo ufw allow 80,443/tcp).

Käyttöönoton jälkeen: https://monitor.example.com avautuu lukolla, ja http:// ohjautuu osoitteeseen https://.

07. Kirjautuminen ja alkuasetukset

Avaa https://monitor.example.com, kirjaudu admin / useradmin ja käy läpi tarkistuslista:

  1. Vaihda admin-salasana — valikon kohta ”Käyttäjät”.
  2. Ota WebAuthn (2FA) käyttöön — ”WebAuthn-avaimet” → rekisteröi avain/passkey (vaatii HTTPS:n). Rekisteröi heti kaksi: jos ainoa avain katoaa, sillä ei voi enää kirjautua. Lue lisää.
  3. Rajaa pääsy IP:n mukaan — ”Asetukset” → ”IP-pohjainen pääsynrajoitus” (lisää oma IP ennen käyttöönottoa, muuten suljet pääsyn itseltäsi).
  4. Syötä lisenssi — aktivoi tilin aktivointikoodi ARCIVEO-… omalle domainillesi ja liitä avain kohtaan ”Asetukset” → ”Lisenssi”. Lue lisää.
  5. Määritä ilmoitukset — Telegram ja/tai sähköposti kohdassa ”Asetukset”. Lue lisää.
  6. Poista asennusohjelma public/start_db.php, jos se on jäänyt: se sallii tietokannan uudelleenluonnin ilman kirjautumista. Niin kauan kuin tiedosto on paneelin juuressa tai kansiossa public/, paneeli varoittaa siitä punaisella bannerilla.
Valmista. Turvatyökalut ovat jo käynnissä — dashboard näyttää heti niiden tilan ja turvallisuusarvion. Kunkin työkalun opas löytyy FAQ:sta.
Arcivéo - Security Monitor © 2026