Perfect Server na Debianu 13
V tomto průvodci
Než začnete
Průvodce je pro nový, prázdný VPS s Debianem 13. Není to návod na aktualizaci za provozu a nesmí se spouštět na serveru, který už hostuje weby, poštu nebo instalaci MariaDB.
server1.example.net, ne holou doménu.Vytvořte záznamy A a případně AAAA pro název hostitele. U poskytovatele VPS nastavte odpovídající PTR/rDNS, než začnete odesílat poštu.
Postup nepoužívejte tam, kde už je nakonfigurovaný Apache, poštovní stack, MariaDB nebo jiný hostingový panel.
Příkaz níže používá udržovaný auto-instalátor ISPConfig pro Debian 13. Sestaví službu Perfect Server, aniž by kopíroval starý seznam balíčků z Debianu 12.
1. Staňte se rootem
Připojte se přes SSH jako root nebo spusťte plný přihlašovací shell roota:
su --loginNež budete pokračovat, ověřte základní operační systém:
cat /etc/os-release
uname -m
id -uVERSION_ID="13", architektura amd64 nebo arm64 a ID uživatele root 0.2. Nastavte název hostitele a DNS
Příkladový FQDN nahraďte jednou a pak zkopírujte celý blok. Místní mapování názvu hostitele přidá, jen pokud chybí.
export FQDN="server1.example.net"
export SHORT_HOSTNAME="${FQDN%%.*}"
hostnamectl set-hostname "$FQDN"
grep -qF "$FQDN" /etc/hosts || printf '127.0.1.1\t%s %s\n' "$FQDN" "$SHORT_HOSTNAME" >> /etc/hosts
hostname
hostname -f
getent hosts "$FQDN"3. Aktualizujte Debian a restartujte
apt update
apt -y full-upgrade
apt -y install ca-certificates curl wget gnupg lsb-release
systemctl rebootPo restartu se znovu připojte a spusťte:
hostname -f
apt update
apt -y autoremove
timedatectl status
4. Instalace Apache, pošty, DNS, FTP a ISPConfig
Spusťte na čerstvě připraveném stroji. Apache je výchozí webový server; zvolený pasivní rozsah FTP se otevírá v dalším kroku.
wget -O - https://get.ispconfig.org | sh -s -- --use-ftp-ports=40110-40210 --unattended-upgradesKdyž se instalátor zeptá na potvrzení, napište yes. Nainstaluje Apache, MariaDB, Postfix, Dovecot, Rspamd, BIND, Pure-FTPd, Jailkit, Roundcube, phpMyAdmin, ISPConfig a závislosti. Na konci vypíše heslo administrátora ISPConfig a heslo roota MariaDB.
printf 'ISPConfig URL: https://%s:8080\n' "$(hostname -f)"
systemctl --no-pager --full status apache2 mariadb postfix dovecot pure-ftpd
5. Nastavte firewall
Nastavujte ho až po instalaci, aby první relace SSH zůstala dostupná. Jde o porty pro kompletní instalaci na jednom serveru.
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 20,21/tcp
ufw allow 25,80,443,465,587,993,995,8080,8081/tcp
ufw allow 53/tcp
ufw allow 53/udp
ufw allow 40110:40210/tcp
ufw --force enable
ufw status numberedMariaDB, Redis ani Elasticsearch nevystavujte veřejně. Nechte je jen lokální, pokud zvlášť navržená architektura nevyžaduje přístup.
6. Ověřte hotový server
Tyto příkazy jen čtou:
systemctl is-active apache2 mariadb postfix dovecot pure-ftpd bind9
ss -lntup
apachectl configtest
mysqladmin ping
dig @127.0.0.1 localhost A
tail -n 50 /var/log/ispconfig/cron.logOtevřete https://server1.example.net:8080, přihlaste se vygenerovanými údaji administrátora a zkontrolujte služby v System → Server Services.
- Vytvořte testovacího klienta a web a zkontrolujte odpověď HTTP i HTTPS.
- V ISPConfig vytvořte testovací databázi a přihlaste se přes phpMyAdmin.
- Vytvořte dočasný účet FTP a ověřte omezení na kořenový adresář webu.
- Než se začne odesílat skutečná pošta, ověřte PTR/rDNS, SPF, DKIM a DMARC.
7. Přidejte jen to, co aplikace potřebují
PHP 8.1, 8.4 a 8.5, PHP-FPM a registrace v ISPConfig.
Lokální databáze pro kompatibilitu bez oslabení hlavní instance ISPConfig.
Redis a FFmpeg nainstalujte, když je aplikace potřebují; Redis ponechte lokální.
Nainstalujte z aktuálního oficiálního repozitáře Elastic; ponechte autentizaci a TLS a nechte ho naslouchat jen na lokální smyčce (loopback).
Řešení potíží a bezpečná obnova
Instalátor neopakujte znovu a znovu nad částečně nakonfigurovaným serverem. Nejdřív projděte log; pokud potřebujete čistý nový pokus, obnovte snapshot před instalací.
tail -n 200 /tmp/ispconfig-ai/var/log/ispconfig.log
systemctl --failed
journalctl -p err -b --no-pager
apachectl configtestPouze pro diagnostiku na novém serveru přidejte k příkazu instalátoru --debug. Jeho log se zapisuje do /tmp/ispconfig-ai/var/log/ispconfig.log.
8. Instalace běhových prostředí aplikací a knihoven
Základní instalátor ISPConfig tuto vrstvu specifickou pro aplikace nenahrazuje. Následující bloky nainstalují potřebné verze PHP a rozšíření pro současnou sadu CMS a také Redis, FFmpeg a Elasticsearch.
8.1 Přidání repozitáře PHP
install -d -m 0755 /usr/share/keyrings
wget -qO /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ trixie main" > /etc/apt/sources.list.d/sury-php.list
apt update
apt-cache policy php8.1 php8.4 php8.58.2 Instalace PHP 8.1, 8.4 a 8.5 se sadou rozšíření pro CMS
apt -y install \
php8.1-bcmath php8.1-bz2 php8.1-cli php8.1-common php8.1-curl php8.1-fpm php8.1-gd php8.1-igbinary php8.1-imagick php8.1-intl php8.1-mbstring php8.1-mysql php8.1-opcache php8.1-readline php8.1-redis php8.1-xml php8.1-zip \
php8.4-bcmath php8.4-bz2 php8.4-cli php8.4-common php8.4-curl php8.4-fpm php8.4-gd php8.4-igbinary php8.4-imagick php8.4-intl php8.4-mbstring php8.4-mysql php8.4-opcache php8.4-readline php8.4-redis php8.4-xml php8.4-zip \
php8.5-bcmath php8.5-bz2 php8.5-cli php8.5-common php8.5-curl php8.5-fpm php8.5-gd php8.5-igbinary php8.5-imagick php8.5-intl php8.5-mbstring php8.5-mysql php8.5-opcache php8.5-readline php8.5-redis php8.5-xml php8.5-zip
systemctl enable --now php8.1-fpm php8.4-fpm php8.5-fpm
# Verify BCMath for exact tax and money calculations.
php8.1 -r 'echo bcadd("1.20", "2.30", 2), PHP_EOL;'
php8.4 -r 'echo bcadd("1.20", "2.30", 2), PHP_EOL;'
php8.5 -m8.3 Registrace verzí v ISPConfig
V System → Additional PHP Versions přidejte tři záznamy FPM. Cesty jsou specifické pro verzi: pool FPM /etc/php/VERSION/fpm/pool.d, socket /run/php/phpVERSION-fpm.sock, ini /etc/php/VERSION/fpm/php.ini a binárka CLI /usr/bin/phpVERSION. Přesná pole pro každou verzi najdete v úplném článku o PHP, potom vyberte běhové prostředí u každého webu v Sites → Website → Options.
8.4 Instalace Redisu a FFmpeg
apt -y install redis-server ffmpeg
systemctl enable --now redis-server
systemctl is-active redis-server
redis-cli ping
ffmpeg -version8.5 Instalace a omezení Elasticsearch
Elasticsearch se záměrně instaluje z oficiálního repozitáře APT od Elastic. Je to backend aplikace, ne veřejný koncový bod.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/9.x/apt stable main" > /etc/apt/sources.list.d/elastic-9.x.list
apt update
apt -y install elasticsearch
printf '%s\n' '-Xms1g' '-Xmx1g' > /etc/elasticsearch/jvm.options.d/heap.options
printf '%s\n' 'http.host: ["127.0.0.1", "::1"]' 'transport.host: ["127.0.0.1", "::1"]' >> /etc/elasticsearch/elasticsearch.yml
systemctl daemon-reload
systemctl enable --now elasticsearch
systemctl --no-pager status elasticsearch
ss -lntp | grep -E ':(9200|9300)'9. Kompletní pokrytí služeb Perfect Server
Instalátor ISPConfig sestaví základní konfiguraci. Tato kapitola uvádí všechny komponenty výslovně, ověřuje je a přidává balíčky, které jsou užitečné nebo nutné pro stejné funkční pokrytí jako tradiční ruční instalace Perfect Server.
9.1 SSH, editory a synchronizace času
apt -y install openssh-server nano vim-nox chrony rkhunter binutils
systemctl enable --now ssh chrony
systemctl is-active ssh chrony
chronyc tracking
rkhunter --versionBěhem počátečního nasazení nechte SSH na portu 22. Přihlašování heslem a přihlášení roota můžete zpřísnit až poté, co existuje pojmenovaný administrátorský účet a otestovaný přístup klíčem SSH; jinak můžete o vzdálený přístup přijít.
9.2 Systémová pošta, Postfix a Dovecot
Postfix přijímá a odesílá poštu, Dovecot poskytuje IMAP, POP3, LMTP a sieve. ISPConfig zapisuje konfiguraci virtuálních domén a schránek; vygenerované soubory virtuálních uživatelů ručně neupravujte.
systemctl enable --now postfix dovecot
systemctl is-active postfix dovecot
postconf -n
doveconf -n
ss -lntp | grep -E ':(25|465|587|110|143|993|995)'9.3 Rspamd a ClamAV
Rspamd zajišťuje moderní filtrování spamu. ClamAV se instaluje pro kontrolu malwaru, podle kapacity serveru a zásad pošty.
apt -y install rspamd clamav clamav-daemon
systemctl enable --now rspamd clamav-daemon
systemctl is-active rspamd clamav-daemon
rspamadm configtest
freshclam --versionWebové rozhraní Rspamd používejte jen z důvěryhodné sítě. Nezveřejňujte ho přímo do internetu.
10. Apache, TLS, FTP a diskové kvóty
10.1 Apache a PHP-FPM
Vhosty Apache a pooly PHP-FPM pro jednotlivé weby generuje ISPConfig. Než přidáte weby, ověřte syntaxi a zapnuté moduly.
systemctl enable --now apache2
apachectl configtest
apachectl -M | grep -E 'rewrite|ssl|http2|proxy_fcgi'
systemctl is-active apache210.2 Let's Encrypt
Instalátor ISPConfig používá ve výchozím stavu acme.sh. Vytvořte web v ISPConfig, zapněte pro něj Let's Encrypt a ujistěte se, že jeho veřejný záznam A/AAAA už míří na tento server. Pro ověření přes HTTP musí být dostupný port 80.
test -x /root/.acme.sh/acme.sh && /root/.acme.sh/acme.sh --version
systemctl list-timers --all | grep -Ei 'acme|cert'
curl -I http://server1.example.net/--use-certbot použijte jen při záměrné migraci existující instalace založené na Certbotu. Pro stejný certifikát nespouštějte oba klienty ACME.
10.3 Pure-FTPd a pasivní porty
systemctl enable --now pure-ftpd
systemctl is-active pure-ftpd
ss -lntp | grep -E ':(21|40110|40210)'
grep -R 40110 /etc/pure-ftpd /etc/default 2>/dev/null || trueUživatele FTP vytvářejte přes ISPConfig. Jsou to virtuální uživatelé v SQL, ne běžné záznamy v /etc/passwd, a jejich soubory musí patřit webovému uživateli cílového webu a skupině klienta.
10.4 Kvóty
Tradiční kvóty souborového systému vyžadují připojení ext4/XFS s podporou kvót a volby připojení při startu. Nezapínejte je násilím uvnitř VPS na ZFS nebo v omezeném LXC: použijte kvótu úložiště od poskytovatele. Na podporovaném fyzickém serveru nebo VM nainstalujte quota, nastavte volby připojení souborového systému, restartujte, spusťte quotacheck a teprve potom kvóty zapněte, než podporu kvót přepnete v ISPConfig.
11. BIND, statistiky webu a Jailkit
11.1 BIND DNS
BIND se instaluje pro lokální překlad a volitelné zóny DNS spravované v ISPConfig. Instalace BIND nevyžaduje změnu veřejných jmenných serverů. Nechte dosavadního poskytovatele DNS autoritativním až do plánované migrace jmenných serverů.
systemctl enable --now bind9
named-checkconf
dig @127.0.0.1 localhost A
dig @127.0.0.1 . NSZóny DNS vytvářejte v DNS → DNS Zone jen tehdy, když bude tento server pro ně autoritativní. Rekurzi omezte na lokální a důvěryhodné klienty; nikdy neprovozujte neomezený veřejný rekurzivní překladač.
11.2 Webalizer, AWStats a GoAccess
apt -y install webalizer awstats goaccess
webalizer --version
awstats.pl -version
goaccess --versionAplikaci pro statistiky zapněte u každého webu v ISPConfig. Zpracování logů a cesty k přehledům generuje panel; surové přístupové logy nevystavujte přes kořenový adresář webu.
11.3 Jailkit
apt -y install jailkit
command -v jk_init
jk_init --versionShell v jailu zapněte jen uživatelům, kteří ho potřebují. Než udělíte produkční přístup, vyzkoušejte uvnitř jailu nasazovací nástroje každého uživatele.
12. Fail2ban, phpMyAdmin a Roundcube
12.1 Fail2ban
apt -y install fail2ban
systemctl enable --now fail2ban
fail2ban-client status
fail2ban-client status sshdPro vlastní pravidla použijte lokální soubor /etc/fail2ban/jail.d/*.local; nikdy neupravujte balíčkované jail.conf. Otestovanou IP adresu pro obnovu přístupu přidejte mezi povolené adresy, až když rozumíte dopadu na bezpečnost.
12.2 phpMyAdmin
test -f /usr/share/phpmyadmin/config.inc.php
apachectl -S | grep -i phpmyadmin || true
curl -kI https://127.0.0.1/phpmyadmin/K phpMyAdminu se dostanete na https://server1.example.net/phpmyadmin/, jakmile je hotový jeho certifikát TLS. Přístup omezte vhostem chráněným v ISPConfig, VPN, seznamem povolených IP nebo další vrstvou HTTP autentizace. Běžné databáze webů se spravují přes ISPConfig; samostatná starší MariaDB se spravuje mimo ISPConfig, jak popisuje článek o MariaDB.
12.3 Roundcube
test -d /var/lib/roundcube -o -d /usr/share/roundcube
systemctl is-active postfix dovecot
curl -kI https://127.0.0.1/roundcube/K webmailu se dostanete na https://server1.example.net/roundcube/. Úspěšné přihlášení do Roundcube vyžaduje existující schránku v ISPConfig a funkční autentizaci Dovecot; nenahrazuje ověření DNS a doručování pošty.
13. Provoz, zálohy a závěrečné převzetí
13.1 Aktualizace a kontroly stavu
apt update
apt -y upgrade
systemctl --failed
df -h
free -h
journalctl -p err -b --no-pager
tail -n 100 /var/log/ispconfig/cron.logBěžné bezpečnostní aktualizace operačního systému instalujte pravidelně. Před aktualizací na novou hlavní verzi udělejte snapshot u poskytovatele a ověřte zdokumentovaný postup aktualizace ISPConfig.
13.2 Zálohy jsou povinné
ISPConfig umí plánovat zálohy webů a databází jednotlivých klientů, ale produkční server potřebuje také cíl záloh mimo server a otestovaný postup obnovy. Než začnete zavádět produkční data, určete uchovávání, šifrování, řízení přístupu, monitoring a vlastníka obnovy.
- Obnovte jeden web a jednu databázi na neprodukční místo.
- Obnovte jednu schránku a ověřte přístup přes IMAP.
- Ověřte, že zálohy jsou uložené mimo VPS a podle potřeby šifrované.
- Upozorňujte, když selže plánovaná záloha nebo úloha cron v ISPConfig.
13.3 Závěrečný kontrolní seznam služeb
- Apache, MariaDB, Postfix, Dovecot, Pure-FTPd, BIND, Rspamd, Fail2ban a zpracování cron v ISPConfig jsou aktivní.
- UFW zpřístupňuje jen zamýšlené porty webu, pošty, DNS, FTP a panelu.
- Všechny veřejné názvy webů a pošty se překládají na zamýšlený server a mají platné certifikáty.
- PTR/rDNS, SPF, DKIM a DMARC jsou ověřené, než se pošta použije v produkci.
- PHP 8.1/8.4/8.5, Redis, FFmpeg a Elasticsearch jsou otestované aplikacemi, které je používají.
- Databáze, virtuální účty FTP, kořenové adresáře webů a schránky jsou vytvořené zamýšlenou cestou správy.
Nic tu není.
Zatím sem nebyl vložen žádný komentář.