Sinlege / VPS / VPS Linux

VPS Linux - root, KVM i NVMe Gen4

Root, apt/dnf, systemd — bez panelu udającego serwer. KVM na Ryzen 9 7900X, NVMe Gen4. Steal time powie prawdę o sąsiadach.

AS219481 własny ASN
WAW Tier III
10 Gbps burst shared
KVM pełna wirtualizacja

Linux jako domyślna baza

Nginx, Postgres, Redis, Node, Python, Go — wszystko ląduje naturalnie na VPS-ie z rootem.

Nie dostajesz zamkniętego panelu z pięcioma kliknięciami. Dostajesz maszynę. To plus, jeśli umiesz czytać logi.

Dystrybucja z panelu — sprawdź listę obrazów przed zamówieniem. LTS na produkcji, testing na eksperymenty.

Pierwsze pięć minut po instalacji

Nowy użytkownik deploy. Klucz SSH. Wyłącz PasswordAuthentication.

apt update && apt upgrade — albo odpowiednik dla RHEL family. Teraz, nie „kiedyś”.

ufw albo nftables: 22/tcp tylko z Twojego IP, jeśli masz stały adres. 80/443 dla webu.

hostname, timezone Europe/Warsaw, NTP. Drobne, ale psują logi i certyfikaty.

vCPU, load i steal

Load 4.0 na 4 vCPU może być OK. Load 4.0 na 1 vCPU — kolejka.

Pole %steal w top/vmstat: czas, gdy hypervisor oddał Twój slot innemu gościowi. Kilka procent sporadycznie — normalne na shared. Stałe 20%+ — rozważ upgrade albo ticket.

Ryzen 9 7900X daje mocny single-thread. Kompilacja kernela i npm ciągle będą szybsze niż na starym Xeonie, ale limit planu jest twardy.

NVMe Gen4 a codzienna praca

Bazy, logi, build cache — NVMe skraca latency. Nie eliminuje pełnego dysku o 3 w nocy.

iowait wysoki przy niskim CPU? Sprawdź który proces trzyma I/O. Często rotacja logów albo backup w tym samym window.

Współdzielony storage = wariancja. fio raz w tygodniu w off-peak da trend, nie religię.

Sieć i transfer

Transfer VPS w cenie planu. Wychodzący ruch backupu do S3 też się liczy.

AS219481, Anti-DDoS L3/L4 na hostingu. Rate limit w nginx dla API — nadal Twój obowiązek.

Potrzebujesz czystego transit BGP? Zobacz /iptransit — WireGuard, per TB, nie to samo co VPS.

sshd → firewall → aplikacja → AS219481 (shared 10G burst)

Typowe układy na jednym VPS

Reverse proxy (Caddy/Traefik) + app + lokalna baza — OK na małym planie.

Oddziel DB na większy RAM, gdy p95 query rośnie. Nie czekaj aż swap zabije MySQL.

Docker na Linux VPS? Tak, ale pamiętaj o limitach cgroup — patrz też stronę /vps-docker.

Backup nie jest domyślny

restic, borg, rsync+ssh — wybierz narzędzie. Trzy kopie, dwie lokalizacje, jedna offsite.

pg_dump w cron ≠ spójny snapshot plików w trakcie zapisu — łącz oba albo użyj hooków aplikacji.

Test restore co kwartał. Backup, którego nigdy nie odtwarzałeś, to założenie.

3-2-1

Jedna kopia na tym samym VPS-ie to nie backup.

Kiedy dołożyć RAM zamiast kolejnego skryptu tuningowego

OOM killer zabił proces — dodaj RAM, nie kolejny swap file na NVMe.

Vertical scale w panelu, potem ewentualnie drugi VPS pod read replica.

Horizontal wymaga architektury. Jeden VPS to single point of failure — zaakceptuj albo zmień design.

SSH: klucze, bastion, jump host

ed25519, passphrase na klucz, ssh-agent tylko na zaufanej stacji. Hasło root off.

Bastion: jeden VPS z publicznym SSH, reszta sieci prywatnej — jeśli masz kilka maszyn.

AllowUsers, MaxAuthTries 3, LogLevel VERBOSE — podstawy audytu.

nftables vs ufw — wybierz i konsekwentnie używaj

ufw to wrapper — OK na start. nftables bezpośrednio gdy potrzebujesz reguł v6 i rate limit.

Domyślna polityka drop incoming, allow established. Nie otwieraj portów „na próbę”.

IPv6 często zapomniane — reguły v4 nie chronią v6.

Nginx, Caddy, TLS

Automatyczny cert Let's Encrypt — cron lub wbudowany ACME w Caddy.

HSTS dopiero gdy pewny, że HTTPS działa wszędzie. Jedna strona HTTP = problem.

Proxy headers — ustaw X-Forwarded-For świadomie za reverse proxy.

Postgres/MySQL na tym samym VPS

bind tylko localhost jeśli aplikacja lokalna. Publiczny port 5432 = skanery w godzinę.

Tune pamięci do RAM planu — shared_buffers nie może zjeść całego VPS.

Backup dump przed każdą większą migracją schematu.

Cron, timer units, kolejka zadań

systemd timer zamiast cron gdy potrzebujesz zależności i logów w journal.

Zadania backupu nakładające się = I/O spike. Rozłóż harmonogram.

MAILTO na root bez czytania logów — bezużyteczne. Alert zewnętrzny.

Poczta z VPS — ostrożnie

Port 25 często filtrowany outbound — deliverability wymaga SPF, DKIM, DMARC i reputacji IP.

Reverse PTR musi zgadzać się z HELO — sprawdź w panelu.

Newsletter z fresh IP — warmup, nie tysiąc maili dnia pierwszego.

Alternatywa: SendGrid/Mailgun zamiast własnego Postfix na VPS.

Tuning bez magii sysctl

net.core.somaxconn — pod wysokie RPS. Zmiana bez testu obciążeniowego — zgadywanie.

Większość web app wymaga więcej RAM i indeksów DB niż kolejnego parametru kernela.

Profiling: py-spy, perf, slow query log — dane przed tune.

Drugi dzień na produkcji

Pierwszy deploy działa. Drugi tydzień — rotacja logów, aktualizacja certyfikatu, pełny dysk od journald. To normalna praca admina.

Ryzen 9 7900X daje mocny single-thread, ale vCPU planu to limit. Kompilacja webpack na 1 vCPU trwa — nie jest to awaria.

NVMe Gen4 skraca I/O, lecz shared backend oznacza, że backup sąsiada o 3:00 podbije Twój iowait. Zaplanuj okna maintenance.

KVM — pełna VM. Moduł kernela, sysctl, eBPF — Twój wybór. Kontener u innego providera z shared kernel bywa ciaśniejszy.

Transfer VPS w planie. rsync offsite, docker pull, apt cache — wszystko sumuje egress.

Monitoring: jedna metryka biznesowa obok CPU/RAM. Alert bez runbooka to tylko hałas.

WAW Tier III — DC, nie magiczny SLA aplikacji. Test restore backupu ważniejszy niż kolejny plugin WordPress.

Secops bez buzzwordów

Klucz SSH na agent, hasło root off, port 22 ograniczony. fail2ban to minimum, nie koniec pracy.

Aktualizacje bezpieczeństwa — automatyczne na LTS z oknem reboot. CVE w nginx/openssl nie czeka na wygodę.

Anti-DDoS operatora nie widzi exploit w Twoim WordPressie. Patch core i pluginy.

AS219481 — routing do Twojego VPS. mtr z sieci użytkowników przy problemach „wolno”, nie tylko ping z laptopa.

Apt, pinning i reproducibility

apt-mark hold na kernelu jeśli wymagana stabilność do certyfikacji — świadomy wybór, nie default na prod.

Unattended-upgrades tylko security — pełny dist-upgrade w oknie.

Lista pakietów dpkg --get-selections > packages.txt po czystej instalacji — baseline.

Reproducible deploy: Ansible/ cloud-init z repo, nie ręczne apt install bez dokumentacji.

Notatki operatora po pierwszym tygodniu

Jeśli load average rośnie liniowo z ruchem — OK. Jeśli skacze przy pustym ruchu — cron sąsiada albo backup hosta.

apt list --upgradable co poniedziałek — patch security nie czeka.

Dwa VPS-y w WAW u tego samego providera to nadal dwa single point of failure bez load balancer i DB replication.

AS219481 widoczny w mtr kończy na bramce operatora — dalej zależy od ISP klienta.

IP Transit kupujesz gdy potrzebujesz BGP i tunel WireGuard per TB — nie gdy chcesz tylko nginx i blog.

Jak o tym myśleć

VPS Linux ma sens, gdy chodzi o: pełny root, własny stack, bez ograniczeń panelu WWW.

To nadal VPS na współdzielonej infrastrukturze: masz root, KVM i transfer w cenie planu, ale CPU steal, IOPS i uplink zależą od realnego obciążenia hosta. Jeśli potrzebujesz stałego heavy loadu 24/7, policz osobną architekturę zamiast zakładać, że większy plan VPS załatwi wszystko.

FAQ

Która dystrybucja?

Zależy od stacku. Debian/Ubuntu LTS — najczęstszy wybór. Sprawdź obrazy w panelu.

Czy mam root?

Tak, przy Linuxie — pełna administracja po Twojej stronie.

Docker out of the box?

Instalujesz sam na gościu. Działa na KVM bez problemu, o ile plan ma RAM.

Jaka pamięć na hoście?

DDR5 4800 MHz, bez ECC. Plan określa RAM gościa, nie cały węzeł.

Czy NVMe to gwarancja IOPS?

Nie. Shared backend — variance między godzinami.

Monitoring?

node_exporter + Prometheus, Uptime Kuma, cokolwiek — byle alert szedł na telefon.

IPv6?

Opcja zależna od planu. Sprawdź przed cutover DNS AAAA.

Debian czy Ubuntu?

Debian — stabilniejszy default. Ubuntu — nowsze pakiety i więcej tutoriali. Obie na KVM OK.

Czy SELinux/AppArmor?

AppArmor domyślnie na Ubuntu. Nie wyłączaj bez powodu — profil dla nginx/mysql istnieje.

Jak aktualizować kernel?

apt upgrade lub dnf. Reboot po aktualizacji kernela — zaplanuj okno.

Swap file na NVMe?

Lepszy niż OOM kill w pinch. Na produkcji DB — sygnał za mało RAM.

journalctl zapełnia dysk?

SystemMaxUse w journald.conf. Rotacja obowiązkowa.

Czy mogę użyć Cloud-init?

Zależy od obrazu panelu. Sprawdź dokumentację obrazu.

Fail2ban wystarczy?

Przy publicznym SSH — minimum. Rate limit w nginx dla webu osobno.

Jak logować aplikację?

stdout do journal albo plik z logrotate. Centralizacja Loki/ELK gdy rośniesz.

Czy potrzebuję IPv6?

Jeśli AAAA w DNS — skonfiguruj firewall v6. Jeśli nie — wyłącz lub zabezpiecz.

Migracja z innego Linux VPS?

rsync -aAXv lub dump+restore DB. Test na nowym IP przed DNS.

Jak czytać vmstat steal?

Uruchom vmstat 1 przez minutę w szczycie ruchu. Kolumna st to procent czasu, gdy hypervisor obsłużył innego gościa zamiast Ciebie. Spiky do kilku procent — normalne na shared. Stałe dwucyfrowe wartości w godzinach produkcyjnych — sygnał do upgrade planu albo ticketu ze współdzielonym hostem Ryzen 9 7900X.

Czy transfer obejmuje backup offsite?

Tak — egress z VPS do S3, rsync na inny serwer czy restic przez internet wlicza się w transfer planu VPS. IP Transit z rozliczeniem per TB to osobna usługa WireGuard, nie ten sam licznik co standardowy VPS w WAW.

Dlaczego DDR5 bez ECC ma znaczenie?

Host Sinlege używa DDR5 4800 MHz bez ECC. To nie zwiększa Twojej odpowiedzialności za backup — i tak musisz mieć kopie offsite. ECC na serwerowcu chroni infrastrukturę operatora; Twoje dane aplikacji chroni restic albo borg, nie typ pamięci gościa.

Dalej

Docker · KVM · Ryzen · Baza wiedzy