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:

KomponentMinimumZalecane
CPU2 vCPU4 vCPU
RAM4 GB8 GB
Storage40 GB SSD100 GB SSD
OSUbuntu 22.04 LTSUbuntu 22.04 LTS
Docker24+24+
Docker Compose2.x2.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śćCzasKoszt
Wdrożenie początkowe16–40 godzin2 400–6 000 PLN jednorazowo
Miesięczne utrzymanie2–4 godziny300–600 PLN/miesiąc
Obsługa incydentu (awaria, breaking update)4–8 godzin600–1 200 PLN za zdarzenie
Alert o 2 w nocybezcenne

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?

OpcjaKosztWymagana wiedzaCzas wdrożenia
Railway/Render (samodzielnie)150–400 PLN/mies.Niska1–2 dni
VPS (samodzielnie)100–300 PLN/mies.Średnia/Wysoka3–7 dni
Wdrożenie z partnerem (freestack.pl)12 000–20 000 PLN + 1 000–2 000 PLN/mies.Żadna3–5 tygodni
Własny serwer (kolos)Hardware + 300–1 500 PLN/mies.Wysoka2–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.

Kalkulator ROI → Bezpłatna konsultacja

Przeczytaj też

Czytaj → Czytaj → Czytaj →