Perfect Server na Debianu 13

★ ★ ★ ★ ★ Nehodnoceno

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.

Příprava mimo server

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.

Nemíchejte stacky

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 --login

Než budete pokračovat, ověřte základní operační systém:

cat /etc/os-release
uname -m
id -u

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 reboot

Po 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-upgrades

Když 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 numbered

MariaDB, 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.log

Otevř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í

Více verzí PHP

PHP 8.1, 8.4 a 8.5, PHP-FPM a registrace v ISPConfig.

Více instancí MariaDB

Lokální databáze pro kompatibilitu bez oslabení hlavní instance ISPConfig.

Redis a FFmpeg

Redis a FFmpeg nainstalujte, když je aplikace potřebují; Redis ponechte lokální.

Elasticsearch

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 configtest

Pouze 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.5

8.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 -m

8.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 -version

8.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 --version

Bě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 --version

Webové 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 apache2

10.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 || true

Už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 . NS

Zó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 --version

Aplikaci 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 --version

Shell 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 sshd

Pro 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.log

Běž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.
0.0
★ ★ ★ ★ ★
0 hodnocení
5 ★
0 %
4 ★
0 %
3 ★
0 %
2 ★
0 %
1 ★
0 %

Přidejte komentář

Nic tu není.

Zatím sem nebyl vložen žádný komentář.