Twenty CRM — instalacja przez Docker krok po kroku
Jak zainstalować Twenty CRM na własnym serwerze przez Docker Compose? Kompletny poradnik: wymagania, konfiguracja, pierwsze logowanie, backup i troubleshooting.
Twenty CRM to open-source CRM, który możesz hostować na własnym serwerze — bez płacenia za licencje per-user i bez przekazywania danych firmowych do zewnętrznych chmur. Docker to najłatwiejszy sposób na uruchomienie Twenty na VPS lub dedykowanym serwerze.
Ten przewodnik zakłada, że masz podstawową znajomość terminala. Nie musisz być deweloperem — każdy krok jest opisany dokładnie.
Wymagania wstępne
Zanim zaczniesz, upewnij się że masz:
- Serwer z Linuxem (Ubuntu 22.04 LTS polecam — najlepsze wsparcie)
- Minimum 2 GB RAM (4 GB zalecane, szczegóły w osobnym artykule o wymaganiach serwerowych)
- Docker Engine w wersji 24+ i Docker Compose v2
- Domenę lub subdomenę, którą skierujesz na serwer (opcjonalne, ale zalecane)
- Dostęp SSH do serwera
Instalacja Dockera (jeśli jeszcze go nie masz)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
newgrp docker
Zweryfikuj instalację:
docker --version
docker compose version
Oczekiwany wynik: Docker version 24.x.x i Docker Compose version v2.x.x.
Krok 1: Pobierz konfigurację Twenty CRM
Twenty dostarcza gotowy plik docker-compose.yml. Utwórz katalog roboczy i pobierz go:
mkdir -p ~/twenty && cd ~/twenty
curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml
curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/.env.example
Krok 2: Skonfiguruj zmienne środowiskowe
Otwórz plik .env w edytorze:
nano .env
Zmień następujące wartości:
# Twoja domena (lub IP serwera jeśli nie masz domeny)
SERVER_URL=https://crm.twojafirma.pl
# Wygeneruj losowe tokeny (każdy inny!)
APP_SECRET=wklej_tutaj_losowy_string_min_32_znaki
ACCESS_TOKEN_SECRET=inny_losowy_string
LOGIN_TOKEN_SECRET=jeszcze_inny_losowy_string
REFRESH_TOKEN_SECRET=czwarty_losowy_string
# Hasło do bazy danych (zmień koniecznie!)
PG_DATABASE_PASSWORD=silne_haslo_postgres_tutaj
Jak wygenerować bezpieczny losowy string:
openssl rand -base64 32
Uruchom to polecenie czterokrotnie — każdy wynik wklej w inne pole *_SECRET.
Opcjonalnie: konfiguracja e-mail
Jeśli chcesz żeby Twenty wysyłał e-maile (zaproszenia dla użytkowników, powiadomienia):
EMAIL_FROM_ADDRESS=crm@twojafirma.pl
EMAIL_FROM_NAME=CRM FreeStack
EMAIL_SYSTEM_ADDRESS=crm@twojafirma.pl
# SMTP (np. przez Mailgun, SendGrid lub własny serwer)
EMAIL_DRIVER=smtp
EMAIL_SMTP_HOST=smtp.mailgun.org
EMAIL_SMTP_PORT=587
EMAIL_SMTP_USER=twoj_login_smtp
EMAIL_SMTP_PASSWORD=twoje_haslo_smtp
Krok 3: Uruchom Twenty CRM
docker compose up -d
Docker pobierze obrazy (ok. 1–3 minut w zależności od łącza) i uruchomi kontenery. Sprawdź status:
docker compose ps
Powinieneś zobaczyć cztery kontenery o statusie Up:
twenty-server— backendtwenty-front— frontend Reacttwenty-db— PostgreSQLtwenty-redis— Redis (cache i kolejki)
Sprawdź logi jeśli coś nie działa
docker compose logs --tail=50 twenty-server
Krok 4: Pierwsze logowanie
Otwórz w przeglądarce adres swojego serwera (lub http://IP_SERWERA:3000 jeśli nie masz domeny).
Zobaczysz ekran tworzenia pierwszego workspace’u:
- Podaj nazwę workspace’u — np. nazwa Twojej firmy
- Utwórz konto administratora — e-mail + hasło
- Zaproś współpracowników (opcjonalnie na tym etapie)
- Wybierz dane demo lub zacznij od zera
Po zalogowaniu masz pełen dostęp do Twenty CRM: kontakty, firmy, szanse sprzedaży, pipeline kanban.
Krok 5: Skonfiguruj SSL (HTTPS)
Nigdy nie używaj Twenty przez HTTP na produkcji. Certyfikat SSL jest konieczny.
Najprostsze rozwiązanie to Caddy jako reverse proxy — automatycznie pobiera certyfikaty Let’s Encrypt:
sudo apt install caddy
Utwórz /etc/caddy/Caddyfile:
crm.twojafirma.pl {
reverse_proxy localhost:3000
}
sudo systemctl restart caddy
Caddy automatycznie wykryje domenę, pobierze certyfikat i skieruje ruch HTTPS do Twenty. Certyfikat jest odnawiany automatycznie co 60 dni.
Alternatywnie możesz użyć Nginx + Certbot, jeśli już używasz Nginx na serwerze.
Krok 6: Backup danych
Dane Twenty trzyma w PostgreSQL. Skrypt do codziennego backupu:
nano ~/twenty/backup.sh
#!/bin/bash
BACKUP_DIR=~/twenty/backups
DATE=$(date +%Y-%m-%d_%H-%M)
mkdir -p $BACKUP_DIR
docker exec twenty-db pg_dump -U twenty twenty > $BACKUP_DIR/twenty_$DATE.sql
# Usuń backupy starsze niż 30 dni
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
echo "Backup zakończony: $BACKUP_DIR/twenty_$DATE.sql"
chmod +x ~/twenty/backup.sh
Dodaj do crona (backup codziennie o 3:00):
crontab -e
0 3 * * * /root/twenty/backup.sh >> /var/log/twenty-backup.log 2>&1
Dla pełnego bezpieczeństwa kopiuj backupy poza serwer — np. do Backblaze B2, S3 lub zwykłego dysku lokalnego.
Aktualizacja Twenty CRM
Twenty regularnie wypuszcza nowe wersje. Aktualizacja jest prosta:
cd ~/twenty
docker compose pull
docker compose up -d
Przed każdą aktualizacją zrób backup ręcznie (~/twenty/backup.sh). Migracje bazy danych uruchamiają się automatycznie.
Troubleshooting — najczęstsze problemy
Kontener twenty-server restartuje się w pętli
Przyczyna: zły token lub hasło w .env.
docker compose logs twenty-server | grep ERROR
Najczęściej zobaczysz błąd o zbyt krótkim APP_SECRET (musi mieć minimum 32 znaki) lub nieudanym połączeniu z bazą danych.
Strona nie ładuje się po SSL
Sprawdź czy Caddy/Nginx działa i czy DNS domeny wskazuje na IP serwera:
dig crm.twojafirma.pl +short
sudo systemctl status caddy
„Database migration failed”
Zdarza się przy aktualizacji. Uruchom migracje ręcznie:
docker compose exec twenty-server yarn database:migrate:prod
Pełny dysk (kontenery się nie uruchamiają)
docker system prune -a --volumes
Uwaga: to usuwa wszystkie nieużywane obrazy i wolumeny. Sprawdź czy backupy bazy są aktualne zanim uruchomisz.
Podsumowanie
Instalacja Twenty CRM przez Docker zajmuje ok. 20–30 minut przy pierwszym razie. Po skonfigurowaniu masz pełen CRM na własnym serwerze:
- Brak opłat licencyjnych niezależnie od liczby użytkowników
- Dane w Polsce/UE — kontrola nad miejscem przechowywania
- Łatwe aktualizacje — dwie komendy
- Skalowalność — przy wzroście firmy zwiększasz zasoby serwera, nie kupujesz kolejnych licencji
Jeśli wolisz żebyśmy zrobili to za Ciebie — skontaktuj się z nami. Instalujemy, konfigurujemy i migrujemy dane z HubSpot/Salesforce/Pipedrive do Twenty CRM.
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.