Self-hosted CRM na własnym serwerze — wymagania techniczne i infrastruktura
Co potrzebujesz technicznie do uruchomienia self-hosted CRM? Wymagania serwera, Docker, bazy danych, backup, monitoring. Praktyczny przewodnik dla IT decision-makerów rozważających Twenty CRM.
Decyzja o self-hosted CRM zazwyczaj zapada z perspektywy biznesowej — niższe koszty, kontrola nad danymi, niezależność od dostawcy. Ale zanim podpiszesz umowę wdrożeniową, warto rozumieć co technicznie stoi za tym rozwiązaniem.
Ten artykuł jest dla IT decision-makerów i adminów, którzy chcą wiedzieć co dostają — i co muszą zaplanować po swojej stronie.
Architektura Twenty CRM
Twenty CRM to aplikacja składająca się z kilku komponentów:
┌─────────────────────────────────────┐
│ Frontend (React) │ ← aplikacja webowa
├─────────────────────────────────────┤
│ Backend API (Node.js) │ ← GraphQL API + REST
├─────────────────────────────────────┤
│ PostgreSQL (baza danych) │ ← dane CRM
├─────────────────────────────────────┤
│ Redis (cache) │ ← sesje, kolejki
├─────────────────────────────────────┤
│ Minio/S3 (pliki i załączniki) │ ← pliki użytkowników
└─────────────────────────────────────┘
Wszystkie komponenty mogą być uruchomione w jednym Docker Compose stack’u lub rozdzielone na osobne usługi dla większej skalowalności.
Opcje hostingu
Opcja 1: Managed hosting u partnera (Railway, Render, DigitalOcean App Platform)
Dla kogo: Firmy, które chcą self-hosted bez zarządzania infrastrukturą.
Platformy jak Railway automatyzują deployment, skalowanie i monitorowanie. Twenty CRM ma oficjalny template na Railway — deployment w kilka minut.
Koszt: 150–600 PLN/miesiąc w zależności od rozmiaru Gdzie dane: EU datacenter dostępny (Railway eu-west, DigitalOcean Frankfurt) Wymagana wiedza IT: Niska — konfiguracja przez GUI
Zalety: Szybki start, automatyczne aktualizacje, monitoring out-of-the-box Wady: Mniej kontroli niż własny serwer, koszty mogą rosnąć przy dużym ruchu
Opcja 2: VPS (DigitalOcean Droplet, Hetzner, OVH)
Dla kogo: Firmy z wewnętrznym adminem lub zewnętrznym DevOps.
Wynajmujesz wirtualny serwer i samodzielnie instalujesz Twenty CRM przez Docker Compose.
Koszt: 100–400 PLN/miesiąc (Hetzner CX21–CX31) Gdzie dane: Wybierasz datacenter — serwery w Niemczech (Hetzner), Francji (OVH), Holandii (DigitalOcean AMS) Wymagana wiedza IT: Średnia — Linux, Docker, Nginx
Opcja 3: Własny serwer / kolokacja
Dla kogo: Firmy z najwyższymi wymaganiami bezpieczeństwa lub własną infrastrukturą.
Dane fizycznie w Polsce, pełna kontrola sprzętowa.
Koszt: Hardware (5 000–30 000 PLN jednorazowo) + kolokacja (300–1 500 PLN/miesiąc) Gdzie dane: Fizycznie w Polsce Wymagana wiedza IT: Wysoka — sysadmin, networking, backup
Minimalne wymagania serwera
Dla typowej firmy 10–50 użytkowników:
| Komponent | Minimum | Zalecane |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 GB | 8 GB |
| Storage | 40 GB SSD | 100 GB SSD |
| OS | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS |
| Docker | 24+ | 24+ |
| Docker Compose | 2.x | 2.x |
Dla 50–200 użytkowników zalecamy oddzielne instancje dla bazy danych i aplikacji + load balancer.
Instalacja: Twenty CRM przez Docker Compose
Podstawowa instalacja:
# Pobierz repozytorium
git clone https://github.com/twentyhq/twenty.git
cd twenty
# Skopiuj przykładowy plik środowiskowy
cp .env.example .env
# Edytuj zmienne środowiskowe
nano .env
# Uruchom stack
docker compose up -d
Kluczowe zmienne w .env:
# Baza danych
PG_DATABASE_URL=postgresql://user:password@db:5432/twenty
# Redis
REDIS_URL=redis://redis:6379
# Domena
SERVER_URL=https://crm.twojafirma.pl
FRONT_BASE_URL=https://crm.twojafirma.pl
# Klucze bezpieczeństwa
APP_SECRET=twoj-sekretny-klucz-min-32-znaki
ACCESS_TOKEN_SECRET=twoj-token-secret
REFRESH_TOKEN_SECRET=twoj-refresh-secret
# Email (SMTP)
EMAIL_FROM_ADDRESS=crm@twojafirma.pl
EMAIL_SMTP_HOST=smtp.twojafirma.pl
EMAIL_SMTP_PORT=587
EMAIL_SMTP_USER=crm@twojafirma.pl
EMAIL_SMTP_PASSWORD=haslo-smtp
Reverse proxy: Nginx
Twenty CRM wymaga reverse proxy (Nginx lub Traefik) dla SSL i obsługi domen:
server {
listen 443 ssl;
server_name crm.twojafirma.pl;
ssl_certificate /etc/letsencrypt/live/crm.twojafirma.pl/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/crm.twojafirma.pl/privkey.pem;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_bypass $http_upgrade;
}
}
Certyfikat SSL — Let’s Encrypt (bezpłatny):
certbot --nginx -d crm.twojafirma.pl
Backup i odzyskiwanie danych
To obszar, który wymaga szczególnej uwagi przy self-hosted. Rekomendowana strategia:
Backup bazy danych (PostgreSQL)
# Backup codzienny — dodaj do crontab
0 2 * * * pg_dump -U twenty twenty_db | gzip > /backup/twenty_$(date +%Y%m%d).sql.gz
# Zachowaj 30 dni backupów
find /backup -name "twenty_*.sql.gz" -mtime +30 -delete
Backup plików (Minio/S3)
# Synchronizacja do zewnętrznego bucketu S3 lub Wasabi
aws s3 sync /data/minio s3://twoja-firma-crm-backup/minio/
Plan odzyskiwania
Zdefiniuj i przetestuj:
- RPO (Recovery Point Objective): maksymalna utrata danych — rekomendowane 24h (backup dzienny)
- RTO (Recovery Time Objective): maksymalny czas przestoju — rekomendowane 4h
Raz na kwartał zrób próbne odtworzenie z backupu — żeby mieć pewność że działa.
Bezpieczeństwo
Sieciowe
# UFW firewall — otwórz tylko potrzebne porty
ufw default deny incoming
ufw allow 22/tcp # SSH (lub zmień na niestandardowy port)
ufw allow 80/tcp # HTTP (redirect do HTTPS)
ufw allow 443/tcp # HTTPS
ufw enable
# Fail2ban — blokada brute-force
apt install fail2ban
Aplikacyjne
- MFA (2FA) dla wszystkich użytkowników — konfigurowalne w panelu Twenty CRM
- Strong password policy — wymuszana przez Twenty
- Role-based access control — granularne uprawnienia per użytkownik/rola
- Audit log — historia działań użytkowników (wbudowane w Twenty CRM)
Aktualizacje
# Aktualizacja Twenty CRM
cd twenty
git pull
docker compose pull
docker compose up -d
# Sprawdź logi po aktualizacji
docker compose logs -f
Aktualizacje rekomendowane co miesiąc lub przy wydaniu security release.
Monitoring i alerting
Rekomendowane narzędzia:
Uptime monitoring (bezpłatne): UptimeRobot lub Better Uptime — sprawdza dostępność co 5 minut i wysyła alert na e-mail/SMS gdy system jest niedostępny.
Metrics (opcjonalne): Prometheus + Grafana — monitoring CPU, RAM, dysku, requestów. Dla firm wymagających SLA.
Log management: Papertrail lub Logtail — centralne logi aplikacji z alertingiem.
Minimalny setup: UptimeRobot (bezpłatny dla 50 monitorów) + codzienny alert e-mail o statusie backupu.
Aktualizacje i maintenance — czas tygodniowy
Przy managed hosting (Railway/Render): praktycznie zero — platforma zarządza aktualizacjami OS i infrastrukturą.
Przy własnym VPS:
- Aktualizacje OS: 30 minut miesięcznie
- Aktualizacje Twenty CRM: 30–60 minut miesięcznie
- Monitorowanie backupów: 10 minut tygodniowo
- Reagowanie na alerty: w razie potrzeby
Łącznie: 2–4 godziny miesięcznie dla VPS.
Ukryty koszt samodzielnego hostingu
Tabela niżej pokazuje koszty serwera. Nie pokazuje kosztu Twojego czasu — ani czasu Twojego admina.
Przy własnym VPS realistyczne nakłady (przy stawce 150 PLN/h):
| Czynność | Czas | Koszt |
|---|---|---|
| Wdrożenie początkowe | 16–40 godzin | 2 400–6 000 PLN jednorazowo |
| Miesięczne utrzymanie | 2–4 godziny | 300–600 PLN/miesiąc |
| Obsługa incydentu (awaria, breaking update) | 4–8 godzin | 600–1 200 PLN za zdarzenie |
| Alert o 2 w nocy | — | bezcenne |
W skali roku — przy 3 godzinach utrzymania miesięcznie i 2 incydentach — to 7 000–13 000 PLN kosztu czasu powyżej i poza kosztem serwera.
Realne TCO VPS za 12 miesięcy:
Serwer: 1 200–3 600 PLN
Czas utrzymania: 3 600–7 200 PLN
Incydenty (2/rok, est.): 1 200–2 400 PLN
────────────────────────────────────────────
Razem: 6 000–13 200 PLN/rok
Wdrożenie z partnerem (freestack.pl) kosztuje 12 000–20 000 PLN jednorazowo + 1 000–2 000 PLN/miesiąc za managed hosting. Dostajesz: migrację danych, konfigurację, szkolenie zespołu, monitoring i wsparcie na jednej umowie — bez angażowania własnego IT.
Break-even między VPS self-hosted a partnerem, przy uczciwej kalkulacji czasu, wypada w 12–24 miesiącach. Jeśli Twój admin ma inne priorytety — może nie wypaść nigdy.
Podsumowanie: samodzielnie czy z partnerem?
| Opcja | Koszt | Wymagana wiedza | Czas wdrożenia |
|---|---|---|---|
| Railway/Render (samodzielnie) | 150–400 PLN/mies. | Niska | 1–2 dni |
| VPS (samodzielnie) | 100–300 PLN/mies. | Średnia/Wysoka | 3–7 dni |
| Wdrożenie z partnerem (freestack.pl) | 12 000–20 000 PLN + 1 000–2 000 PLN/mies. | Żadna | 3–5 tygodni |
| Własny serwer (kolos) | Hardware + 300–1 500 PLN/mies. | Wysoka | 2–4 tygodnie |
Dla firm bez wewnętrznego DevOps lub admina — wdrożenie z partnerem jest najbardziej rozsądną opcją. Dostajesz gotową infrastrukturę, migrację danych i wsparcie — bez konieczności uczenia się Docker i Nginx.
Jeśli masz pytania techniczne lub chcesz omówić infrastrukturę dla swojej firmy — umów konsultację. Odpowiem na pytania techniczne i pokażę jak wygląda wdrożenie w praktyce.
Sprawdź, ile Twoja firma może zaoszczędzić
Skorzystaj z kalkulatora ROI lub umów bezpłatną konsultację — wyliczamy oszczędności w 30 minut.