Compare commits

...

No commits in common. "7bf38562066d4f2b7fc50a5b89c15885158d78c4" and "0c4147f723500568e8bd613c9ddaa4633aca1025" have entirely different histories.

15 changed files with 741 additions and 1 deletions

@ -0,0 +1,33 @@
## Serverhosting
Serverhosting poskytuje firma [Hetzner Online GmbH](https://www.hetzner.com/rechtliches/impressum) se sídlem v Německu. Tarif hostingu je označován jako CPX31. Hostovaným serverem je virtuální stroj v QEMU/KVM hypervizoru a jako umístění hostingu bylo vybráno datacentrum v obci [Falkenstein/Vogtland](https://mapy.cz/?source=osm&id=54446), cca 15 km od Českých hranic. Mimo serverhostingu nejsou u společnosti Hetzner využívány žádné další služby.
Udávané parametry hostingu:
- 4 vCPU
- 8 GB RAM
- 160 GB Disk space
- 20 TB Traffic
- € 15.85 / měs.
**URL** pro administraci serverhostingu: https://console.hetzner.cloud/.
Přístupové údaje jsou individuální, projekty je možno sdílet a nastavovat oprávnění jednotlivým uživatelům.
- **URL:** https://accounts.hetzner.com/login
- **Login:** j.podhorecky@gmail.com
- **Heslo:** L0vehetzner
## Doménoví registrátoři
Všechny domény s výjimkou `spotter.ngo` jsou registrovány na jmenných serverech (nameserverech) firmy [INTERNET CZ, a. s.](https://www.forpsi.org/home.aspx), působící v ČR pod obchodní značkou Forpsi. Vlastníkem této firmy je italská společnost [ARUBA S.p.A.](https://www.aruba.it/en/about-us.aspx). Mimo registrace domén nejsou u Forpsi využívány žádné další služby.
Přístupové údaje
- **URL:** https://admin.forpsi.com/
- **Login:** 171102vn
- **Heslo:** K2bDKQ2
Doména `spotter.ngo` je registrována u Irské společnosti [101domain GRS Limited](https://www.101domain.com/aboutus.htm). Mimo registrace domény `spotter.ngo` nejsou u 101domain využívány žádné další služby.
Přístupové údaje
- **URL:** https://www.101domain.com/
- **Login:** j.podhorecky@volny.cz
- **Heslo:** L0ve101domain

@ -0,0 +1,30 @@
## Server
- **CPU:** 4x AMD EPYC 7002 @ 3.3 GHz
- **RAM:** 8 GB DDR4
- **Úložiště:** 160 GB VirtIO SCSI SSD
- **Síťové rozhraní:** 1x 10Gbit/s VirtIO NIC
- **Virtuální konzole** dostupná z webového rozhraní pro administraci serverhostingu <https://console.hetzner.cloud/>
- **IPv4**: 159.69.247.130
- **IPv6**: 2a01:4f8:c010:1385::1/64
- **Hostname**: server.spotter.cz
## Operační systém a služby
- GNU/Linux distribuce **Ubuntu 24.04** x86_64
- Vzdálený terminál **OpenSSH 9.6**
- Systém detekce narušení **Fail2ban 1.1**
- Rekurzivní DNS resolver **Bind 9.18**
- Webový server **Apache 2.4** z repozitáře deb.sury.org
- PHP aplikační server **PHP-FPM 7.4** a **PHP-FPM 8.3** z repozitáře deb.sury.org
- Databázový server **PostgreSQL 16.6**
- Databázový server **MariaDB 10.11**
- In-memory databázový server **Redis 7.0**
- FTP souborový server **PureFTPd 1.0.50**
- SMTP poštovní server **Postfix 3.8.6**
- POP3/IMAP/ManageSieve poštovní server **Dovecot 2.3.21**
- Antivirus **ClamAV 1.0.7**
- Antispam **Rspamd 3.10** z repozitáře Rspamd
- Správa kontejnerů **Podman 4.9**
Instalace, konfigurace a zabezpečení provedeno dle standardu @Disassembler.

@ -0,0 +1,62 @@
## Síťová rozhraní
Primární síťové rozhraní je `ens3` s IP adresami **159.69.247.130** a **2a01:4f8:c010:1385::1**, taktéž vypsanými v [informacích o serveru](/1.-Hosting-a-server/1.2.-Informace-o-serveru). IPv4 je přidělována dynamicky pomocí DHCP protokolu z DHCP serveru ve správě společnosti Hetzner. IPv6 je nastavena staticky, ale alokace je taktéž spravována společností Hetzner. Přidělené IP jsou vypsány ve webovém rozhraní pro správu serverhostingu.
Dále je na serveru nastaveno rozhraní síťového mostu `cni-podman0` sdílené mezi hostitelem a Podman kontejnery. Na hostiteli má toto rozhraní staticky přiřazenou IPv4 **10.88.0.1/16**. Podman kontejnery mají IPv4 přidělované dynamicky z rozsahu **10.88.0.0/16**
Na serveru je zapnut IPv4 forwarding (konfigurace v souboru `/etc/sysctl.d/50-ip-forward.conf`). Fyzická síťová rozhraní jsou spravována pomocí `systemd-networkd`.
## Firewall
Na serveru je nastaven firewall pomocí `iptables` a pomocného skriptu `firewall` s konfigurací v adresáři `/etc/firewall/`. Následující pravidla jsou nastavena staticky:
**IPv4 i IPv6, tabulka *filter*, chain *INPUT***
- Zahoď fragmentované pakety, u kterých nikdy nepřišel první fragment
- Přijmi ICMP pakety (ping, informace o fragmentaci, nedostupnosti sítě atd.)
- Zahoď TCP pakety s neplatnými příznaky (např. [christmas tree packet](https://en.wikipedia.org/wiki/Christmas_tree_packet) - jednoduchá základní ochrana proti DoS, fingerprintingu a tichému scanování portů)
- Přijmi pakety z předchozích korektně navázaných spojení
- Přijmi příchozí nová TCP spojení na portu 21 (FTP)
- Přijmi příchozí nová TCP spojení na portech 40000-49999 (FTP passive)
- Přijmi příchozí nová TCP spojení na portech 80 a 443 (HTTP a HTTPS)
- Přijmi příchozí nová TCP spojení na portech 25, 465 a 587 (SMTP, SMTPS a Submission)
- Přijmi příchozí nová TCP spojení na portech 110 a 995 (POP3 a POP3S)
- Přijmi příchozí nová TCP spojení na portech 143 a 993 (IMAP a IMAPS)
- Přijmi příchozí nová TCP spojení na portu 22 (SSH) z adres dasm.dasm.cz a infra.dasm.cz (@Disassembler)
- Přijmi příchozí nová UDP i TCP spojení na portu 53 (DNS) z adres v subnetu 10.88.0.0/16 (z kontejnerů)
- Přijmi příchozí nová TCP spojení na portu 5432 (PostgreSQL) z adres v subnetu 10.88.0.0/16 (z kontejnerů)
- Přijmi příchozí nová spojení z localhostu
- Zahoď všechna ostatní spojení
**Podman NAT**
- Příchozí nová TCP spojení na portu 8801 pocházející z localhostu (127.0.0.1) přesměruj do OnlyOffice kontejneru na port 80 (HTTP)
- Příchozí nová TCP spojení na portu 8802 pocházející z localhostu (127.0.0.1) přesměruj do Gitea kontejneru na port 8080 (HTTP)
- Příchozí nová TCP spojení na portu 8803 pocházející z localhostu (127.0.0.1) přesměruj do SeedDMS kontejneru na port 8080 (HTTP)
- Příchozí nová TCP spojení na portu 8804 pocházející z localhostu (127.0.0.1) přesměruj do Odoo kontejneru na port 8080 (HTTP)
- Příchozí nová TCP spojení na portu 8805 pocházející z localhostu (127.0.0.1) přesměruj do Decidim kontejneru na port 8080 (HTTP)
- Příchozí nová TCP spojení na portu 2222 pocházející odkudkoliv přesměruj do Gitea kontejneru na port 22 (SSH).
## Systém detekce narušení
Na serveru je nainstalován systém detekce narušení **Fail2ban**. Ten principiálně funguje tak, že monitoruje logy jednotlivých služeb a vyhodnocuje neúspěšné pokusy o přihlášení nebo interakci se službou. Pokud stejná IP adresa dosáhne určitého nakonfigurovaného množství neúspěšných pokusů, dostane krátkodobý ban ke službě, ke které se pokouší přihlásit (řád minut až desítek minut). Pokud nasbírá několik těchto krátkodobých banů, je zabanována plošně na celém serveru dlouhodobě (řád dnů až týdnů).
Monitorovány jsou následující služby:
- **SSH**
- Soubor: `/var/log/auth.log` a log Gitea `/srv/gitea/data/data/log/gitea.log`
- Počet pokusů: 5
- **HTTP(S)**
- Soubor: `/var/log/apache2/*error.log`, log webového rozhraní pro maily RoundCube `/usr/share/roundcube/logs/errors` a log Gitea `/srv/gitea/data/data/log/gitea.log`
- Počet pokusů: 10
- **PHP** (zneužití funkce `fopen()`)
- Soubor: `/var/log/apache2/*access.log`
- Počet pokusů: 10
- **FTP**
- Soubor: `/var/log/pure-ftpd/auth.log`
- Počet pokusů: 10
- **SMTP(S)/POP3(S)/IMAP(S)**
- Soubor: `/var/log/mail.log`
- Počet pokusů: 10
- **Fail2ban** (recidiva)
- Soubor: `/var/log/fail2ban.log`
- Počet pokusů: 8, u GitLabu 3
Interní zabezpečovací mechanismy jednotlivých služeb, nastavení TLS, omezení funkcí atd. je rozepsáno u příslušných služeb.

@ -0,0 +1,58 @@
Server je zálohován na úložiště @Disassembler pomocí utility `rsync` a protokolu SSH. Zálohování probíhá jednou denně ve 23:10 s retencí 60 záloh. Zálohování je až do odvolání bezplatné.
Jsou zálohovány následující soubory a adresáře (výpis v rsync --include-file formátu).
Uživatelská data, včetně dumpů databází a persisteních dat kontejnerů jsou uložena v adresáři `/srv/`.
```
+ etc
+ etc/acme-sh/***
+ etc/apache2/***
+ etc/bind/***
+ etc/containers/***
+ etc/cron.d/***
+ etc/dbbackup.conf
+ etc/default/***
+ etc/dovecot/***
+ etc/fail2ban/***
+ etc/firewall/***
+ etc/fstab
+ etc/hostname
+ etc/hosts
+ etc/logrotate.d/***
+ etc/mailadmin.conf
+ etc/mailname
+ etc/mysql/***
+ etc/php/***
+ etc/postfix/***
+ etc/postgresql/***
+ etc/pure-ftpd/***
+ etc/redis/***
+ etc/report.conf
+ etc/resolv.conf
+ etc/rspamd/***
+ etc/sysctl.d/***
+ etc/systemd/***
+ lib
+ lib/systemd
+ lib/systemd/system/***
+ root/***
+ srv/***
+ usr
+ usr/share
+ usr/share/nextcloud/***
+ usr/share/roundcube/***
+ var
+ var/lib
+ var/lib/redis/***
+ var/lib/rspamd/***
- *
```
## WordPress
Mimo výše uvedené každodenní zálohy serveru se vytváří každý den ve 23:00 i záloha s archivy [WordPress](/2.-Webovy-server/2.3.-WordPress) instancí a dumpy jejich [databází](/4.-Databazove-servery). Tato záloha je dostupná na [FTP serveru](/3.-FTP-server) pod účtem *backup*. Vždy je dostupná pouze jediná záloha z předcházejícího dne (resp. mezi 23:00 a 0:00 ze současného). V případě potřeby je tedy zálohu možno manuálně stáhnout a uchovat mimo server nebo úložiště @Disassembler.

@ -0,0 +1,71 @@
## Apache HTTP Server
Konfigurace Apache HTTP Serveru se nachází v adresáři `/etc/apache2/`. Konfigurace *virtualhostů* jednotlivých subdomén je pak v podadresáři `/etc/apache2/sites-available/`, resp. `/etc/apache2/sites-enabled/`. Každý jednotlivý konfigurační soubor se týká pouze jednoho virtualhosta, resp. jedné subdomény. V případě webů běžících přímo na doméně druhého řádu jsou tyto vždy zároveň aliasovány i subdoménou `www` ve stejném konfiguračním souboru. Všechny virtualhosty mají nastaveno automatické přesměrovávání HTTP na HTTPS, včetně zaslání HTTP Strict Transport Security (HSTS) hlavičky.
Stejné rozdělení domén a subdomén je pak použito i u Let's Encrypt certifikátů o které žádá ACME klient [acme.sh](https://acme.sh/), jehož konfigurační adresář je `/etc/acme-sh`. Klient acme.sh má nastavenou cron úlohu pro automatickou obnovu certifikátů, která je spouštěna každý den ve 22:22.
V hlavním konfiguračním souboru Apache `/etc/apache2/apache2.conf` je nastavena výjimka pro URL `/.well-known/acme-challenge`, na které ACME protokol provádí challenge-response autentizaci. Tato lokace je tedy vždy vyjmuta z virtualhostů a aplikací na nich běžících a je spravována přímo globální konfigurací Apache.
### Seznam virtualhostů
- **000-default** - Virtualhost pro subdoménu **server.spotter.cz** a fallback virtualhost pro celý Apache HTTP Server
- **cluster.spotter.tv**
- **decidim.spotter.cz** - Proxy pro [Podman kontejner](/5.-Podman-kontejnery) Decidim
- **dms.spotter.ngo** - Proxy pro [Podman kontejner](/5.-Podman-kontejnery) SeedDMS
- **gitea** - Proxy pro [Podman kontejner](/5.-Podman-kontejnery) Gitea
- **jobseeker.cz** - Virtualhost pro doménu **jobseeker.cz** a subdoménu **www.jobseeker.cz**
- **job.spotter.cz**
- **kurzy.spotter.cloud** - Proxy pro [Podman kontejner](/5.-Podman-kontejnery) Odoo
- **loga.spotter.cz**
- **old.spotter.tv**
- **repo.spotter.cz**
- **spotter.cloud** - Proxy pro [Podman kontejner](/5.-Podman-kontejnery) Odoo
- **spotter.cz** - Virtualhost pro doménu **spotter.cz** a subdoménu **www.spotter.cz**
- **spotter.name** - Virtualhost pro doménu **spotter.name** a subdoménu **www.spotter.name**
- **spotter.ngo** - Virtualhost pro doménu **spotter.ngo** a subdoménu **www.spotter.ngo**
- **spotter.sk** - Virtualhost pro doménu **spotter.sk** a subdoménu **www.spotter.sk**
- **spotter.tv** - Virtualhost pro doménu **spotter.tv** a subdoménu **www.spotter.tv**
- **spuntovka.spotter.cloud** - Proxy pro [Podman kontejner](/5.-Podman-kontejnery) Odoo
- **trend.spotter.cz**
- **trendspotter.cz** - Nevyužita
- **voda.spotter.cz** - Proxy pro [Podman kontejner](/5.-Podman-kontejnery) Decidim
Pro výpis jednotlivých prezentací a aplikací, viz stránku [Weby a domény](/2.-Webovy-server/2.2.-Weby-a-domény).
### Funkce a zabezpečení Apache
V Apache HTTP Serveru jsou aktivní následující moduly
- access_compat, alias, auth_basic, authn_core, authn_file, authz_core, authz_host, authz_user, autoindex, deflate, dir, env, expires, filter, headers, http2, mime, mpm_event, negotiation, proxy, proxy_fcgi, proxy_http, proxy_wstunnel, reqtimeout, rewrite, setenvif, socache_shmcb, ssl, status, wsgi
Apache server neposílá hlavičku s informací o verzi. OpenSSL je nastaveno pro podporu moderních a mainstreamově používaných protokolů a šifer následnovně:
- **Verze OpenSSL:** 3.0.13
- **Podporované protokoly:** TLSv1.2, TLSv1.3
- **Podporované sady šifer:** ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
- **OCSP stapling:** Ano
Výsledek Qualys SSL testu:
[SSL_Server_Test__server.spotter.cz__Powered_by_Qualys_SSL_Labs_.pdf](/attachments/SSL_Server_Test__server.spotter.cz__Powered_by_Qualys_SSL_Labs_.pdf)
## PHP
PHP 8.3 interpret běží v samostatném manažeru procesů PHP-FPM a nesdílí tak paměťový prostor Apache HTTP Serveru, jako by tomu bylo v *tradičním* nastavení s mod_php8. Apache HTTP Server komunikuje s PHP-FPM přes FastCGI rozhraní zprostředkované pomocí *mod_proxy_fcgi* a unixových socketů v adresáři `/run/php/`. Hlavní konfigurační soubor pro PHP-FPM je `/etc/php/8.3/fpm/php.ini` a jednotlivé fondy procesů jsou definovány konfiguračními soubory v `/etc/php/8.3/fpm/pool.d/`. V současnosti jsou zde nastaveny tři fondy s 16 dynamicky vytvářenými PHP procesy - `vmail` pro Roundcube, `cloud` pro NextCloud a `www` pro ostatní weby.
Z důvodu udržení kompatility prezentací běžící na platformě [WordPress](/2.-Webovy-server/2.3.-WordPress) ja na serveru instalován i PHP interpret ve verzi 7.4, který je nastaven ekvivalentním způsobem jako výše uvedené PHP 8.3.
### Funkce a zabezpečení PHP
V PHP-FPM jsou aktivní následující rozšíření
- bcmath, bz2, calendar, ctype, curl, dba, dom, exif, fileinfo, ftp, gd, geoip, gettext, gnupg, iconv, imagick, imap, intl, json, ldap, mbstring, mysqli, mysqlnd, opcache, pdo, pdo_dblib,
do_mysql, pdo_pgsql, pdo_sqlite, pgsql, phar, posix, readline, shmop, simplexml, soap, sockets, sqlite3, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, zip
PHP neposílá hlavičku s informací o verzi. Funkce spouštění externích procesů jsou zakázány. Odesílání mailů funkcí `mail()` a jejími deriváty je logováno do souboru `/var/log/php8.3mail.log`, resp. `/var/log/php7.4mail.log`.
Výčet některých nastavení PHP:
- max_execution_time = 600
- max_input_time = 600
- max_input_vars = 5000
- memory_limit = 256M
- post_max_size = 16M
- upload_max_filesize = 16M
- max_file_uploads = 100
- disable_functions = pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_get_handler, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, pcntl_async_signals, exec, passthru, popen, proc_open, shell_exec, system

@ -0,0 +1,81 @@
## Weby
Soupis webů a jejich URL.
### spotter.cz
- **https://spotter.cz/** a **https://www.spotter.cz/** - [WordPress](/2.-Webovy-server/2.3.-WordPress) web Spotter.cz
- **https://decidim.spotter.cz/** - Proxy pro Decidim [Podman kontejner](/5.-Podman-kontejnery)
- **https://git.spotter.cz/** - Proxy pro Giea [Podman kontejner](/5.-Podman-kontejnery)
- **https://job.spotter.cz/** - Single page prezentace JobSeeker
- **https://loga.spotter.cz/** - Úložiště log (nedá se procházet)
- **https://repo.spotter.cz/alpine/** - Repozitář [distribučního serveru](/2.-Webovy-server/2.4.-Distribucni-server) SpotterVM Alpine balíků pro hostitele (nedá se procházet)
- **https://repo.spotter.cz/doc/** - Dokumentace SpotterVM vytvořená systémem Sphinx
- **https://repo.spotter.cz/Podman/** - Repozitář [distribučního serveru](/2.-Webovy-server/2.4.-Distribucni-server) SpotterVM Podman kontejnerů aplikací (chráněn heslem, nedá se procházet)
- **https://repo.spotter.cz/tools/** - Nástroje [distribučního serveru](/2.-Webovy-server/2.4.-Distribucni-server) pro zjišťování konektivity SpotterVM
- **https://server.spotter.cz** - [NextCloud](/2.-Webovy-server/2.5.-NextCloud-a-OnlyOffice) - Úložiště souborů, platforma pro kolaborativní nástroje a rozhraní pro kancelářský balík
- **https://server.spotter.cz/admin/** - MailAdmin - Webové rozhraní [správy mailů](/6.-Mailovy-server#webov%C3%A1-rozhran%C3%AD)
- **https://server.spotter.cz/ftp/** - FTP úložiště (chráněno heslem)
- **https://server.spotter.cz/onlyoffice/** - [OnlyOffice](/2.-Webovy-server/2.5.-NextCloud-a-OnlyOffice) - Backend s API pro kancelářský balík
- **https://server.spotter.cz/rspamd/** - Rspamd - Webové rozhraní [antispamu](/6.-Mailovy-server#webov%C3%A1-rozhran%C3%AD)
- **https://server.spotter.cz/sql/** - Adminer - Webové rozhraní pro správu databází
- **https://server.spotter.cz/webmail/** - RoundCube - Webové rozhraní [mailového klienta](/6.-Mailovy-server#webov%C3%A1-rozhran%C3%AD)
- **https://trend.spotter.cz/** - Single page prezentace TrendSpotter
- **https://voda.spotter.cz/** - Proxy pro Decidim [Podman kontejner](/5.-Podman-kontejnery)
### spotter.tv
- **https://spotter.tv/** a **https://www.spotter.tv/** - [WordPress](/2.-Webovy-server/2.3.-WordPress) web Spotter.tv a zároveň hlavní URL pro správu sítě webů (multisite) WordPress
- **https://cluster.spotter.tv/wp/** - [WordPress](/2.-Webovy-server/2.3.-WordPress) web Cluster.Spotter.tv (novější instance, neveřejná - chráněná heslem)
- **https://old.spotter.tv/** - Stará statická prezentace Spotter.tv
### spotter.cloud
- **https://spotter.cloud/** a **https://www.spotter.cloud/** - Proxy pro Odoo [Podman kontejner](/5.-Podman-kontejnery)
- **https://kurzy.spotter.cloud/** - Proxy pro Odoo [Podman kontejner](/5.-Podman-kontejnery)
- **https://spuntovka.spotter.cloud/** - Proxy pro Odoo [Podman kontejner](/5.-Podman-kontejnery)
### spotter.ngo
- **https://spotter.ngo/** a **https://www.spotter.ngo/** - [WordPress](/2.-Webovy-server/2.3.-WordPress) web Spotter.ngo
- **https://dms.spotter.ngo/** - Proxy pro SeedDMS [Podman kontejner](/5.-Podman-kontejnery)
### spotter.name
- **https://spotter.name/** a **https://www.spotter.name/** - [WordPress](/2.-Webovy-server/2.3.-WordPress) web Spotter.name
### spotter.sk
- **https://spotter.sk/** a **https://www.spotter.sk/** - [WordPress](/2.-Webovy-server/2.3.-WordPress) web Spotter.sk
### trendspotter.cz
- Nevyužita
### jobseeker.cz
- **https://jobseeker.cz/** a **https://www.jobseeker.cz/** - Redirect na https://www.facebook.com/groups/pracanti/
## Domény
Všechny domény s výjimkou `spotter.ngo` jsou registrovány u Forpsi a obsluhovány z jejich jmenných serverů. Doména `spotter.ngo` je registrována u 101domain.com. Informace o registrátorech a přístupové údaje k administračním webovým rozhraním jsou vypsány na stránce [Informace o hostingu](/1.-Hosting-a-server/1.1.-Informace-o-hostingu).
Všechny domény jsou nastaveny následovně:
| Název | Typ | Data |
| ----- | ---- | ---- |
| @ | A | 159.69.247.130 |
| * | A | 159.69.247.130 |
| @ | AAAA | 2a01:4f8:c010:1385::1 |
| * | AAAA | 2a01:4f8:c010:1385::1 |
Doména **spotter.cz**, na které fungují i mailové služby má dále následující záznamy:
| Název | Typ | Data |
| ----- | ---- | ---- |
| @ | MX | 10 server.spotter.cz. |
| @ | TXT | v=spf1 a mx -all |
| _dmarc | TXT | v=DMARC1; p=reject |
| dkim._domainkey | TXT | (veřejný DKIM klíč, viz [Mailový server](/6.-Mailovy-server)) |
TTL všech záznamů je nastaveno na 900 s.

@ -0,0 +1,39 @@
## Seznam WP instancí
- Spotter.tv - https://spotter.tv/
- Spotter.cz - https://spotter.cz/
- Spotter.sk - https://spotter.sk/
- Spotter.name - https://spotter.name/
- Spotter.ngo - https://spotter.ngo/
### Administrace
- **URL:** https://spotter.tv/wp-admin/network/sites.php
- **Login:** spotter
- **Heslo:** L0vecluster
### Známé problémy:
- Plugin *revslider* není kompatibilní s PHP 7 nebo novějším a musí být vypnut. Tento plugin je ale vyžadován tématy instalovanými na **https://spotter.ngo/** a **https://cluster.spotter.tv/wp/**.
- Současně používané šablony nejsou kompatibilní s PHP 8. Z tohoto důvodu je na serveru instalován i PHP interpret ve verzi 7.4, viz [Apache, PHP a TLS](/2.-Webovy-server/2.1.-Apache,-PHP-a-TLS).
### Další informace
- Tato instance používá MariaDB databázi `wp` a databázového uživatele `wp`, viz [Databázové servery](/4.-Databazove-servery).
- K této instanci přísluší FTP přístup uživatele `wp`, viz [FTP server](/3.-FTP-server).
## Cluster instance
Separarátní neveřejná instance na https://cluster.spotter.tv/wp/
Přístup je chráněn HTTP autentizací
- **Login:** spotter
- **Heslo:** sJZvc!v7D&3GK_6Q
### Administrace
- **URL:** https://cluster.spotter.tv/wp/wp-admin/
- **Login:** spotter
- **Heslo:** L0vecluster
### Další informace
- Tato instance používá MariaDB databázi `wp_cluster` a databázového uživatele `wp_cluster`, viz [Databázové servery](/4.-Databazove-servery).
- K této instanci přísluší FTP přístup uživatele `wp_cluster`, viz [FTP server](/3.-FTP-server).

@ -0,0 +1,33 @@
Distribuční server je koncipován jako klasické úložiště statických souborů dostupné přes HTTPS protokol v podadresářích subdomény **https://repo.spotter.cz/**.
Dále je na stejné subdoméně dostupná dokumentace projektu SpotterVM a také webové nástroje určené k testování konektivity VM.
## Alpine (APK) repozitář
Tento repozitář je veřejně dostupný na URL **https://repo.spotter.cz/alpine/**, ale nedá se procházet. Obsahuje APK balíky určené přímo nativní balíkovací systém Alpine linuxu. Poskytuje následující balíky:
- **py3-secure-cookie** - Knihovna pro práce se secure cookies, dříve součást projektu [werkzeug](https://werkzeug.palletsprojects.com/).
- **spoc** - Balíkovací systém a nástroj pro management LXC kontejnerů a aplikačních prostředí SpotterVM z příkazové řádky.
- **vmmgr** - Webové rozhraní pro VMMgr - management virtuálního stroje a LXC kontejnerů SpotterVM.
Repozitář je na SpotterVM Alpine linuxu přidán v souboru `/etc/apk/repositories` jako
```
@vm http://repo.spotter.cz/alpine/v3.12/apk
```
## LXC
Tento repozitář je dostupný na URL **https://repo.spotter.cz/spoc/** a vyžaduje HTTP autentizaci. Obsahuje komprimované archivy LXC kontejnerů určené pro balíkovací systém SPOC.
Ve současné fázi projektu je přístup následující
- **URL:** https://repo.spotter.cz/spoc/
- **Login:** spotter
- **Heslo:** txUqqZLaM.Z;3E2E
## Dokumentace
Dokumentace VMMgr, nástrojů pro vytváření LXC kontejnerů a celého projektu SpotterVM, která vytvářena generátorem statických stránek *Sphinx*, je dostupná na URL **https://repo.spotter.cz/doc/**.
## Nástroje
Na URL **https://repo.spotter.cz/tools/**, která se nedá procházet, je uložena sada jednoduchých PHP skriptů pro zjišťování konektivity SpotterVM. Jsou dostupné následující skripty:
- **[myip.php](https://repo.spotter.cz/tools/myip.php)** - Skript pro zjištění externí IPv4 a IPv6 adresy
- **[vm-ping.php](https://repo.spotter.cz/tools/vm-ping.php)** - Skript pro zjištění dostupnosti webových aplikací SpotterVM z internetu

@ -0,0 +1,15 @@
[NextCloud](https://nextcloud.com/) je webové rozhraní pro souborové úložiště a platforma pro kolaborativní nástroje. Dá se s ním nahradit spousta cloudových služeb nabízených různými společnostmi - Google, Microsoft, atd. K NextCloudu existují i [desktopoví a mobilní klienti](https://nextcloud.com/clients/) umožňující synchronizaci souborů a zpřístupnění některých dalších služeb (CalDAV/CardDAV - kontakty, kalendáře, úkoly) přímo z PC nebo smartphone.
## Webové rozhraní
* **URL:** https://server.spotter.cz
* **Login:** admin
* **Heslo:** XjsL!x3jSj-mN8YG
Ostatní uživatelé se autentizují skrze IMAP, tj. stejným uživatelským jménem a heslem jako k [mailovému serveru](/6.-Mailovy-server).
## OnlyOffice
Na serveru je nainstalován backend [OnlyOffice DocumentServer](https://github.com/ONLYOFFICE/DocumentServer), což je komponenta pro práci s dokumenty, která je součástí komunitní verze kancelářského balíku OnlyOffice. DocumentServer jede ve vlastním [Podman kontejneru](/5.-Podman-kontejnery) a omezuje použití na 25 spojení současně.
Frontend k OnlyOffice je instalován jako aplikace NextCloudu. Všechny soubory v OpenDocument a Open Office XML formátech uložené v NextCloudu jsou otevírány v OnlyOffice editorech. DocumentServer samotný nemá žádná administrační nebo uživatelská rozhraní, jedná se pouze o API ovládané z NextCloudu.

52
3.-FTP-server.md Normal file

@ -0,0 +1,52 @@
FTP souborový server **PureFTPd** z repozitáře @Disassembler přidává ke standardním vlastnostem PureFTPd navíc podporu silného hashovacího algoritmu Argon2 pro ukládání otisků hesel.
PureFTPd je nastaven jako virtuální server. Využívá tedy přihlašovací údaje uložené v [PostgreSQL databázi](/4.-Databazove-servery) `ftp`, které mapuje na uživatele existující na systému, zpravidla uživatele `www-data` pro adresáře využívané Apache HTTP Serverem a uživatele `nobody` pro ostatní účely. Každý uživatele je izolován ve svém domovském adresáři. PureFTPd běží v režimu vynucujícím explicitní TLS šifrování (protokol ftpes://). Administrace uživatelů FTP serveru je prováděna z příkazové řádky nástrojem `ftpadmin`.
Na serveru je vytvořen adresář `/srv/www/ftp` určený pro sdílení dat, který je domovským adresářem virtuálního uživatele `ftp`. Tento adresář je dostupný i přes HTTPS protokol na adrese **https://server.spotter.cz/ftp/** se stejným uživatelským jménem a heslem jako na FTP.
## Soupis uživatelů
Sdílení souborů
- **Login:** ftp
- **Heslo:** DaN1NZ7:kMGS
- **Adresář:** /srv/www/ftp
- **UID/GID:** www-data:www-data (33:33)
Statické prezentace (old.spotter.tv, trenspotter.cz, job.spotter.cz, loga.spotter.cz)
- **Login:** static
- **Heslo:** ZsamrBb$10dT
- **Adresář:** /srv/www/static
- **UID/GID:** www-data:www-data (33:33)
WordPress multisite
- **Login:** wp
- **Heslo:** f/zKsl6WxS2J
- **Adresář:** /srv/www/wordpress
- **UID/GID:** www-data:www-data (33:33)
WordPress cluster.spotter.tv/wp/
- **Login:** wp_cluster
- **Heslo:** U#b5UhN9KUjd
- **Adresář:** /srv/www/wordpress_cluster
- **UID/GID:** www-data:www-data (33:33)
Zálohy WordPress instancí a databází
- **Login:** backup
- **Heslo:** QAM5_F8dkSqB
- **Adresář:** /srv/backup
- **UID/GID:** nobody:nogroup (65534:65534)
Repozitáře Alpine a SPOC a dokumentance
- **Login:** repo
- **Heslo:** n{J2qoX9qUAL
- **Adresář:** /srv/www/repo
- **UID/GID:** www-data:www-data (33:33)
## Obecná nastavení FTP klientů
| Klíč | Hodnota |
|------|---------|
| **Port** | 21 |
| **Protokol** | ftpes:// |
| **Zabezpečení** | Explicitní SSL / TLS |
| **Režim** | pasivní |

63
4.-Databazove-servery.md Normal file

@ -0,0 +1,63 @@
Na serveru jsou nainstalovány dva databázové systémy. MySQL kompatibilní **MariaDB 10.11**, která je v současnosti využívána pouze instancemi WordPressu a **PostgreSQL 16**, který je využíván mailovým serverem, [FTP serverem](/3.-FTP-server), [NextCloudem](/2.-Webovy-server/2.5.-NextCloud-a-OnlyOffice) a [Podman kontejneru](/5.-Podman-kontejnery). Superadministrátorský přistup je u obou databázových systémů omezen na lokální připojení po unixovém socketu, takže nové databáze a databázové uživatele je možno zakládat pouze z příkazové řádky serveru.
Administrační rozhraní **[Adminer](https://www.adminer.org/)** pro správu existujících databází je na **URL: https://server.spotter.cz/sql/**.
[Podman kontejner](/5.-Podman-kontejnery) [OnlyOffice](/2.-Webovy-server2.5.-NextCloud-a-OnlyOffice) si řeší správu PostgreSQL databáze, kterou máí nainstalovanou ve svém kontejneru, vlastním způsobem a uživatelské přístupy k nim nejsou v kontextu administrace relevantní.
Žádný z databázových serverů není veřejně přístupný z internetu.
## MySQL databáze a uživatelé
[WordPress](/2.-Webovy-server/2.3.-WordPress) multisite
- **Login:** wp
- **Heslo:** sq#Wg5ZtxgZ^fn_3
- **Databáze:** wp
[WordPress](/2.-Webovy-server/2.3.-WordPress) cluster.spotter.tv/wp/
- **Login:** wp_cluster
- **Heslo:** v3Sytt4$sXN=J4M5
- **Databáze:** wp_cluster
## PostgreSQL databáze a uživatelé
[FTP](/3.-FTP-server)
- **Login:** ftp
- **Heslo:** zYxLChjj9XkFc9KRjIa7tHNhFA
- **Databáze:** ftp
[Dovecot + Postfix](/6.-Mailovy-server)
- **Login:** vmail
- **Heslo:** COdP5ZTVsT9t7xJkFMzXkzIoZo
- **Databáze:** vmail
[RoundCube](/6.-Mailovy-server)
- **Login:** roundcube
- **Heslo:** DdbQgfLSGxn6XB5WBWrRAQ15Qe
- **Databáze:** roundcube
[NextCloud](/2.-Webovy-server/2.5.-NextCloud-a-OnlyOffice)
- **Login:** cloud
- **Heslo:** FoZiJxKdfDBziDmkgrrROslLqI
- **Databáze:** cloud
## PostgreSQL databáze a uživatelé aplikací v kontejnerech
[Decidim](/5.-Podman-kontejnery)
- **Login:** decidim
- **Heslo:** mD2XC4Sr6u8Brfdg
- **Databáze:** decidim
[Odoo](/5.-Podman-kontejnery)
- **Login:** odoo
- **Heslo:** XCvY33HuxObbLJKryfFVPl
- **Databáze:** odoo
[Gitea](/5.-Podman-kontejnery)
- **Login:** gitea
- **Heslo:** A3thbbgBHSmi6LE5Pseq9MVfMi
- **Databáze:** gitea
[SeedDMS](/5.-Podman-kontejnery)
- **Login:** seeddms
- **Heslo:** ForqHs4oI4r99skHfLAoTrW
- **Databáze:** seeddms

91
5.-Podman-kontejnery.md Normal file

@ -0,0 +1,91 @@
Podman je nástroj pro vytváření, správu a běh izolovaných systémových a aplikačních prostředí (kontejnerů) sdílejících linuxové jádro hostitele. Přístup k webovým rozhraním kontejnerů je zprostředkováván skrze [Apache HTTP Server](/2.-Webovy-server/2.1.-Apache,-PHP-a-TLS) proxy. Síťová nastavení jsou rozepsána na stránce [Nastavení a zabezpečení sítě](/1.-Hosting-a-server/1.3.-Nastaveni-a-zabezpeceni-site). Všechny kontejnery jsou provozovány jako efemérní, t.j. po svém ukončení jsou vymazány a zachována zůstanou pouze data v persistentních úložištích, která jsou do kontejnů během jejich spouštění připojena.
## OnlyOffice
- **Image:** `docker.io/onlyoffice/documentserver:latest`
- **Persistentní úložiště:** `/srv/onlyoffice/DocumentServer/`
OnlyOffice DocumentServer běží v kontejneru založeném na Ubuntu 22.04 (jammy). Kontejner mimo persistentního úložiště nemá žádné externí závislosti. V kontejeru jsou instalovány dedikované služby a komponenty, které DocumentServer striktně vyžaduje - PostgreSQL databáze, Redis in-memory data store, RabbitMQ a nginx HTTP server.
Apache server hostitele na tento kontejner [přeposílá požadavky](https://helpcenter.onlyoffice.com/server/document/document-server-proxy.aspx) z kontextu https://server.spotter.cz/onlyoffice. Aplikace samotná nemá žádná administrační nebo uživatelská rozhraní, jedná se pouze o API ovládané z NextCloudu.
## Gitea
- **Image:** `docker.io/gitea/gitea:latest-rootless`
- **Persistentní úložiště:** `/srv/gitea/conf/`, `/srv/gitea/data/`
Gitea běží v kontejneru založeném na Alpine linuxu 3.20. Kontejner mimo persistentního úložiště závisí na funkcích mailového serveru a PostgreSQL databáze poskytované hostitelem.
K [odesílání mailů](/6.-Mailovy-server) používá účet **gitea@spotter.cz**.
Přístup k aplikaci:
- **URL:** https://git.spotter.cz/
- **Git SSH:** ssh://git@git.spotter.cz:2222
- **Login:** j.podhorecky@gmail.com
Přístupy jednotlivých uživatelů a nastavení projektů a oprávnění k nim jsou individuální.
## SeedDMS
- **Image:** `ghcr.io/disassembler0/seeddms:latest`
- **Zdroje pto sestavení:** <https://git.spotter.cz/Spotter-Cluster/seeddms>
- **Persistentní úložiště:** `/srv/seeddms/conf/`, `/srv/seeddms/data/`
SeedDMS 6.0.28 běží v kontejneru založeném na Alpine linuxu 3.15. Kontejner mimo persistentního úložiště závisí na funkcích mailového serveru a PostgreSQL databáze poskytované hostitelem.
K [odesílání mailů](/6.-Mailovy-server) používá účet **dms@spotter.cz**.
Přístup k aplikaci:
- **URL:** https://dms.spotter.ngo/
- **Login:** admin
- **Heslo:** L0vedms
## Odoo
- **Image:** `ghcr.io/disassembler0/odoo:latest`
- **Zdroje pto sestavení:** <https://git.spotter.cz/Spotter-Cluster/odoo>
- **Persistentní úložiště:** `/srv/odoo/conf/`, `/srv/odoo/data/`
Odoo 14 Běží v kontejneru založeném na Alpine linuxu 3.12. Kontejner mimo persistentního úložiště závisí na funkcích mailového serveru a PostgreSQL databáze poskytované hostitelem.
K [odesílání mailů](/6.-Mailovy-server) používá účet **cloud@spotter.cz**.
Přístup k aplikaci:
- **URL:** https://spotter.cloud/
- **Login:** admin
- **Heslo:** UBwFtDu2uNvZQiF4
## Decidim
- **Image:** `ghcr.io/disassembler0/decidim:latest`
- **Zdroje pto sestavení:** <https://git.spotter.cz/Spotter-Cluster/decidim>
- **Persistentní úložiště:** `/srv/decidim/migrate/`, `/srv/decidim/storage/`, `/srv/decidim/uploads/`
Decidim 0.26.2 běží v kontejneru založeném na Debianu 11 (bullseye). Kontejner mimo persistentního úložiště závisí na funkcích mailového serveru a PostgreSQL databáze poskytované hostitelem.
K [odesílání mailů](/6.-Mailovy-server) používá účet **decidim@spotter.cz**.
Přístup k aplikaci:
- **URL:** https://decidim.spotter.cz/ a https://voda.spotter.cz/
- **URL administrace:** https://decidim.spotter.cz/system/
- **Login:** admin@example.com
- **Heslo:** P8vDKAc3FdEte9Hw
Při registraci organizace budete potřebovat následující údaje:
- **Host:** decidim.spotter.cz nebo voda.spotter.cz
- **Secondary hosts:** <prázdné>
Překlady jsou evidentně dělány bez testování, takže ve výběru jazyků je první "Angličtina" čeština a druhá "Angličtina" slovenština. Skutečná angličtina je "English".
Nastavení SMTP:
- **From:** decidim@spotter.cz
- **User name:** decidim@spotter.cz
- **Password:** m8DnHxmbmGutS5tf
- **Address:** server.spotter.cz
- **Port:** 587
Až budete registrovat administrátora organizace nebo uživatele, heslo musí mít nejméně 15 znaků.
- **API** pro přístup z vnějšku https://decidim.spotter.cz/api/
- **API Dokumentace** https://decidim.spotter.cz/api/docs

96
6.-Mailovy-server.md Normal file

@ -0,0 +1,96 @@
Mailový server je složen z následujících komponent
- SMTP daemon **Postfix**
- POP3, IMAP a ManageSieve server **Dovecot**
- Antivir **ClamAV** se signaturami třetích stran (bofhland, phishtank, sanesecurity, urlhaus, virusfree.cz atd.)
- Antispam **Rspamd** s in-memory databází **Redis**
- Webový poštovní klient **RoundCube**
- Webové rozhraní pro správu schránek a aliasů **MailAdmin**
**Postfix** a **Dovecot** používají virtuální domény, schránky a aliasy definované v [PostgreSQL databázi](4.-Databazove-servery) `vmail`, které jsou spravovány webovým rozhraním **MailAdmin**. **Rspamd** je nastaven jako *milter*, kterému **Postfix** předává všechny odchozí i příchozí zprávy k antivirové a antispamové kontrole. Je kontrolováno několik desítek tisíc různých indikátorů a do **Redis** databáze jsou ukládány různé cache, statistiky, bayes vzorky atd. **Rspamd** také používá globálně dostupné URL blacklisty, reputační listiny a distribuované databáze vzorků. Odchozí maily jsou podepisovány **DKIM** klíčem, který je společně se **SPF** a **DMARC** záznamy zveřejněn v DNS.
Klient **RoundCube** se přihlašuje lokálně přes IMAP a odesílá přes Submission port s podporou STARTLS. Nastavení samotného klienta, nesouvisející s maily, ukládá do [PostgreSQL databáze](4.-Databazove-servery) `roundcube`.
## Webová rozhraní
Správu schránek a aliasů **MailAdmin**
- **URL:** https://server.spotter.cz/admin/
- **Login:** spotter
- **Heslo:** wsHm,9s4hZYj
Poštovní klient **RoundCube**
- **URL:** https://server.spotter.cz/webmail
Login a heslo jsou individuální pro jednotlivé mailové schránky
Antispam **Rspamd**
- **URL:** https://server.spotter.cz/rspamd/
- **Heslo:** hBS1A6t;yhqhJ8W2
## Seznam schránek
Gitea
- **Mail:** gitlab@spotter.cz
- **Heslo:** yGWGLj.9W7ux
- Je povoleno pouze odesílání
Odoo, NextCloud
- **Mail:** cloud@spotter.cz
- **Heslo:** FHz0_piSkW9t
- Je povoleno pouze odesílání
SeedDMS
- **Mail:** dms@spotter.cz
- **Heslo:** hX9gMUgz.c1g
- Je povoleno pouze odesílání
Decidim
- **Mail:** decidim@spotter.cz
- **Heslo:** m8DnHxmbmGutS5tf
- Je povoleno pouze odesílání
Spotter
- **Mail:** info@spotter.cz
- **Heslo:** Z2d+yD8LnAsm
JP
- **Mail:** jp@spotter.cz
- **Heslo:** L0veroundcube
KB
- **Mail:** kb@spotter.cz
- **Heslo:** dih3aaJ6|gwk
## Obecná nastavení mailových klientů
Příchozí server
| Server | Protokol | Port | Zabezpečení | Poznámka |
|--------|----------|------|-------------|----------|
| server.spotter.cz | POP3 | 110 | STARTTLS | |
| server.spotter.cz | POP3S | 995 | SSL/TLS | |
| server.spotter.cz | IMAP | 143 | STARTTLS | Doporučený způsob připojení |
| server.spotter.cz | IMAPS | 993 | SSL/TLS | |
Odchozí server
| Server | Protokol | Port | Zabezpečení | Poznámka |
|--------|----------|------|-------------|----------|
| server.spotter.cz | SMTPS | 465 | SSL/TLS | |
| server.spotter.cz | SMTP (Submission) | 587 | STARTTLS | Doporučený způsob připojení |
Metody autentizace
- PLAIN nebo LOGIN u všech zmíněných protokolů
Standardní port SMTP (25) slouží pouze pro lokální doručování a není přes něj z bezpečnostních důvodů možno odesílat zprávy na domény neobsluhované lokálním serverem.
## DKIM klíč
```
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyUMTzKkWcYo4w
wEJYWh4XeJtOquv8jyWFt5ykb7SutjbqJ2YGNwyYo+HLOYSUfm8JyRw5NFv2lzcXZaCdKfopYDe
WjGdolz8o5our4aiPRpi1OQCFnWCTKiEu3Jjhh35UzmT5fCMVMnniLtXlqtXCQQ220ssZn6AmUC
DvggdWFNPAUpO0whVvuTXOC08XKx3dH8Yyh0DP/ESSkNyi5/7N4JltvNJZO3CYkDfb8fL7o8eH4
ieBGEDVnmS1KyBOvfIoL5Juj4fO4U+WGLkkK7S7xpuDS0XenL3xS/8EQvu1Oyhmed65B77gCb0B
OHJNN8xNuqXuN0oZXMPo3/nfLYS4wIDAQAB
```
Ostatní DNS záznamy jsou uvedeny na stránce [Weby a domény](/2.-Webovy-server/2.2.-Weby-a-domeny).

@ -1 +1,17 @@
Dokumentace k hostingu serveru **server.spotter.cz** a příslušným službám, doménám, webům a aplikacím. Viz [wiki](https://git.spotter.cz/Podhorecky/Hosting/wikis/home).
## Obsah
1. Hosting a server
1. [Informace o hostingu](/1.-Hosting-a-server/1.1.-Informace-o-hostingu)
2. [Informace o serveru](/1.-Hosting-a-server/1.2.-Informace-o-serveru)
3. [Nastavení a zabezpečení sítě](/1.-Hosting-a-server/1.3.-Nastaveni-a-zabezpeceni-site)
4. [Zálohování serveru](/1.-Hosting-a-server/1.4.-Zalohovani-serveru)
2. Webový server
1. [Apache, PHP a TLS](/2.-Webovy-server/2.1.-Apache,-PHP-a-TLS)
2. [Weby a domény](/2.-Webovy-server/2.2.-Weby-a-domeny)
3. [WordPress](/2.-Webovy-server/2.3.-WordPress)
4. [Distribuční server](/2.-Webovy-server/2.4.-Distribucni-server)
5. [NextCloud a OnlyOffice](/2.-Webovy-server/2.5.-NextCloud-a-OnlyOffice)
3. [FTP server](/3.-FTP-server)
4. [Databázové servery](/4.-Databazove-servery)
5. [Podman kontejnery](/5.-Podman-kontejnery)
6. [Mailový server](/6.-Mailovy-server)