cutty devlog #4 — w nocy zmieniłem serwer i nikt nie zauważył
Krótka rzecz na rano: cutty.dev od dziś żyje na innym serwerze. DNS się przepiął koło 22:00, certyfikat Let’s Encrypt wydał się za drugą próbą, kontener wstał z prod bazą — 17 linków i 3 użytkowników przeniesione 1:1. Druga strona ledwo zauważyła.
Tym razem bez retrospektywy — jeszcze nie wystygła. Co się stało, w kilku punktach:
Dlaczego
Do tej pory cutty.dev mieszkał w jednym pudełku z całą resztą mojego home labu. Działało, ale każdy reboot serwera = chwila nerwowości o produkcję. Production na osobnym VPS = home lab znów może być home labem, a cutty.dev przestaje zależeć od tego, czy akurat coś przeinstalowuję obok.
Stack po cutoverze
- VPS w UE (Francja, OVH) — najtańszy plan, bo cutty.dev nie potrzebuje dużo
- Caddy reverse proxy z auto-HTTPS przez Let’s Encrypt (renew co 60 dni, bez konfiguracji)
- Docker container z Astro 5 SSR + SQLite na woluminie
- Ollama (qwen3:14b) tłumaczący polski → angielski wciąż na home labu — VPS sięga po niego przez prywatną sieć mesh, latencja ~30 ms
- Baza SQLite skopiowana 1:1 — żaden link nie zniknął, żadna sesja
Pre-launch przy okazji
Skoro już byłem w środku, kilka rzeczy do uporządkowania:
- Polityka prywatności i regulamin zaktualizowane do prawdy — żadnych szczegółów infrastruktury w dokumencie publicznym, „TLS przez Cloudflare” zastąpione przez Let’s Encrypt, hostingowanie opisane neutralnie jako „własny VPS w UE”
- Strona błędu dla wygasłego linku przestała być suchym tekstem — teraz pokazuje branded layout z CTA „Wróć do strony głównej”
- Detekcja kraju w statystykach — wcześniej z headera Cloudflare (gdy ruch szedł przez ich proxy), teraz z lokalnej bazy IP→kraj. Te same dane, inna implementacja, brak zewnętrznej zależności
- Monitor co 5 minut sprawdza, czy strona żyje (kontener, reverse proxy, mesh tunnel, certyfikat, dysk, RAM). Telegram dostaje powiadomienie, jak coś padnie — z throttle 30 minut, żeby nie zalał chatu jak coś zamarznie
Co dalej
Pre-launch must-have prawie skończone — zostały drobne (Lighthouse audit po odnowieniu się dziennej kwoty Google, drugi watchdog jako redundancja). Potem v0.6: pięć nowych języków (DE/ES/FR/IT/CZ) — Ollama tłumaczy w nocy, ja śpię. Po tym dopiero ProductHunt.
Stripe? Dopiero po 1000 zarejestrowanych użytkowników. Nie ma sensu rozkładać bramki płatności jak nie wiem jeszcze, czy ludzie w ogóle skorzystają z darmowej wersji. Najpierw traction, potem monetyzacja.
Domena, prąd VPS-a, certyfikat — łącznie ok. 30 PLN miesięcznie. Reszta to czas.