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. Tuoreella VPS:llä jokainen vaihe sopii sellaisenaan peräkkäin; jos palvelin on jo määritetty tai siinä on hostingpaneeli, skripti jättää osan työstä tarkoituksella sinulle — ja kertoo työnsä lopuksi, mitä täsmälleen (tulosteen läpikäynti on vaiheessa 01).
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.
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).
my.arciveo.com → osio ”Palvelimen määritys” (käytettävissä Arcivéo Security 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):
2) Suorita palvelimella root-käyttäjänä tilin komento — se näyttää tältä:
3) Lue tuloste lopusta — siinä kerrotaan, mikä jää sinun tehtäväksesi. Skripti päättää työnsä tarkistuslohkoon ja luetteloon ”Seuraavaksi — paneelin asennus”. Osan vaiheista se jättää tarkoituksella tekemättä: mitkä täsmälleen, riippuu valitusta profiilista ja siitä, mitä se löysi palvelimelta. Vertaa alla olevaan luetteloon — sinun on tehtävä vain ne kohdat, joiden rivit ilmestyivät omaan tulosteeseesi.
Control panel detected (…) — sivusto luodaan itse hostingpaneelin työkaluilla, vhostia skripti ei tee. Vaihe 03, haara ”Palvelin, jossa on hostingpaneeli”.No vhost created (no domain given) — profiili ”Määritetty palvelin” ilman domainia: nimetön vhost olisi muuttunut oletussivustoksi ja kaapannut omat sivustosi, joten sitä ei luotu. Vaihe 03, haara ”Luo vhost käsin”.sudo rules NOT written — skripti ei pystynyt päättelemään, millä tunnuksella paneeli toimii. Tämä on tavallinen tilanne: paneelin tiedostot ladataan vasta automaattimäärityksen jälkeen, joten päättelyyn ei vielä ollut mitään. Ilman näitä sääntöjä moduulit eivät näe järjestelmätietoja. Vaihe 04, lohko ”sudo-oikeudet verkkopalvelimelle”.! Nginx does not read .htaccess — Apachen edessä on Nginx, eikä eston kirjaaminen sen konfiguraatioon onnistunut automaattisesti. Tee tämä ehdottomasti: muuten data/, keys/, database/ ja config.php tarjoillaan ulos .htaccess-tiedoston ohi. Vaihe 03, lohko ”Jos Apachen edessä on Nginx”.UFW installed but inactive — palomuuri on asennettu, mutta pois päältä: määritetyllä palvelimella skripti ei kytke sitä itse päälle, jottei katkaisisi pääsyäsi. Kytke se itse ja salli ehdottomasti oma SSH-porttisi:
Fail2ban installed but not running — käynnistä: sudo systemctl enable --now fail2ban.Database server present … but not running — käynnistä tietokantapalvelin ennen vaihetta 04: sudo systemctl enable --now mariadb (tai mysql — sen mukaan, kumpi on asennettu).Certbot skipped — issue SSL in … — varmenne myönnetään hostingpaneelin Let's Encrypt -kytkimellä; vaihetta 06 et tarvitse.All checks passed. Kohdat, joissa on !, vaativat huomiota; tarkemmat tiedot kirjataan lokiin, jonka polun skripti tulostaa aivan lopuksi (Log: …).
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:
Muutaman minuutin kuluttua (joskus jopa tunnin) tarkista, että verkkotunnus osoittaa palvelimeen:
/var/www/monitor ja määrittänyt Apache-sivuston (DocumentRoot paneelin juureen, PHP-FPM, AllowOverride tiedostolle .htaccess). Skriptin tulosteessa tämä on rivi vhost … → DocumentRoot …. Hakemistoa ja vhostia ei tarvitse luoda erikseen — lataa vain tiedostot ja aseta oikeudet.
Haara ”Palvelin, jossa on hostingpaneeli” (tulosteessa: Control panel detected (…)). Tällaisella palvelimella sivustoista huolehtii paneeli, eikä skripti luo omaa vhostia tarkoituksella — se pyyhkiytyisi heti, kun paneeli kokoaa konfiguraationsa uudelleen. Etene näin:
public_html-hakemistoon: tiedostojen index.php, api/, assets/ rinnalla on oltava myös palvelutiedostot config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/. Mitään ei tarvitse siirtää verkkojuuren yläpuolelle: palvelukansiot on suojattu jakelupaketin .htaccess-tiedostolla ja Nginxin alla estolla, jonka skripti kirjasi domainin konfiguraatioon.config.php (vaihe 05). Korvaa komentojen polut muotoon /home/tili/web/domain/public_html ja omistaja tämän domainin käyttäjällä www-data:n sijaan.Haara ”Luo vhost käsin” (tulosteessa: No vhost created (no domain given)). Näin käy vain profiililla ”Määritetty palvelin”, kun domainia ei annettu. Helpointa on yksinkertaisesti ajaa tilin komento uudelleen ja antaa domain:
Uudelleenajo on turvallista: jo tehtyä ei monisteta. Jos vhost on kuitenkin luotava käsin — tässä on sama konfiguraatio, jonka asennusohjelma kirjoittaa:
ServerName on tässä pakollinen. Nimetön vhost muuttuu Apachen oletussivustoksi ja alkaa vastata samalla palvelimella olevien muiden domainien puolesta. Samasta syystä älä poista käytöstä 000-default.conf-tiedostoa määritetyllä palvelimella: se sivusto on voitu muokata jonkun toimivaksi sivustoksi — tuoreella VPS:llä asennusohjelma poistaa sen itse, tässä sitä ei pidä tehdä.
! Nginx does not read .htaccess). Nginx tarjoilee staattiset tiedostot suoraan levyltä eikä lue .htaccess-tiedostoa — palvelukansiot jäävät auki ulospäin, vaikka Apache sulkee ne oikein. Skripti on valmistellut estotiedoston etukäteen; se on liitettävä sivustosi server{}-lohkoon ja Nginx käynnistettävä uudelleen:
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:
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.
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:
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:
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ä:
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.
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:
admin-tunnuksen ensimmäisellä selainkäynnillä (tiedostosta database/db.sql), jos tietokanta on tyhjä.
Jos taulut eivät syntyneet (paneeli näyttää tietokantayhteyden virheen tai tyhjän ruudun kirjautumislomakkeen sijaan) — tuo skeema käsin. Komento suoritetaan paneelin juuressa, ja arvot otetaan yllä olevasta lohkosta:
$DBNAME / $DBUSER / $DBPASS ovat jo ”unohtuneet” (uusi terminaali-istunto) — sijoita arvot komentoon käsin tai aseta ne uudelleen samoilla kolmella rivillä yllä olevasta lohkosta.
sudo rules NOT written — paneelin tunnusta ei ollut mistä päätellä (tiedostoja ei ollut vielä ladattu), eikä sääntöjä luotu. Ilman niitä osiot kuten palomuuri, Fail2ban ja CrowdSec jäävät tyhjiksi. Nyt kun tiedostot ovat paikallaan, aja tilin komento uudelleen ja nimeä tunnus suoraan:
www-data sillä käyttäjällä, jolla sivustosi PHP toimii (hostingpaneelissa se on yleensä domainin omistaja). Sen voi katsoa näin:
/etc/sudoers.d/monitor on olemassa ja siinä on rivejä sinun käyttäjälläsi.
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:
Syötä omat arvosi korostettuihin kohtiin; jätä muut ennalleen:
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.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:
640 (asetettu vaiheessa 03) ja nimenomainen esto juuren .htaccess-tiedostossa. Älä julkaise sitä julkisiin repositorioihin äläkä lähetä sitä tukeen todellisella salasanalla.
http:// et pysty kirjautumaan.
Certbot skipped — issue SSL in …). Varmenne myönnetään itse paneelissa verkkodomainin Let's Encrypt -kytkimellä — näin myös sen uusinnasta huolehtii paneeli.
certbot ja Apache-lisäosa on jo asennettu automaattiasennuksessa. Toimialueen DNS:n tulee jo osoittaa palvelimeen (vaihe 02). Käyttöönotto yhdellä komennolla:
Jos paneelin on avauduttava myös www.-etuliitteellä — luettele molemmat nimet samassa komennossa, muuten selain näyttää toisessa osoitteessa varmennevaroituksen:
Y.<VirtualHost *:443>, määrittää uudelleenohjauksen http→https ja automaattisen uusinnan. Lopuksi näet Successfully enabled HTTPS.
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://.
Avaa https://monitor.example.com, kirjaudu admin / useradmin ja käy läpi tarkistuslista:
ARCIVEO-… omalle domainillesi ja liitä avain kohtaan ”Asetukset” → ”Lisenssi”. Lue lisää.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.sudo /usr/local/bin/clamav-scan.sh) kuormittaa levyä ja prosessoria voimakkaasti ja voi kestää tunnin tai enemmän — toimivalla palvelimella on parempi odottaa yöllistä ajoa klo 01:30. Osiot ”Levyt (SMART)”, ”Suorituskyky” ja ”Tietoturvapäivitykset” täyttyvät itsestään: 30 minuutin, 5 minuutin ja tunnin välein.