Formbricks saját üzemeltetés
A CADENSA Formbricks-t használ NPS felmérésekhez és a visszajelzés gombhoz. A Formbricks felhő helyett saját EU infrastruktúrán fut a példányunk — nincs US adattovábbítás, teljes GDPR-megfelelőség.
Self-hosted URL: https://surveys.cadensa.io (Hetzner, Németország)
Miért saját üzemeltetés?
| Formbricks Cloud | Saját (surveys.cadensa.io) | |
|---|---|---|
| Adattárolás | Formbricks szerverek (US/EU vegyes) | Hetzner Németország (csak EU) |
| US adattovábbítás | Lehetséges | Nincs |
| GDPR | DPA szükséges | Nincs harmadik fél DPA |
| Consent gate | Szükséges | Szükséges (analytics kategória) |
Architektúra
cadensa-frontend / cadensa-landing
└─ @formbricks/js SDK
└─ VITE_FORMBRICKS_APP_URL / NEXT_PUBLIC_FORMBRICKS_APP_URL
└─ https://surveys.cadensa.io
└─ Formbricks app (Kubernetes: formbricks névtér)
└─ PostgreSQL 15 (StatefulSet: formbricks-postgres)
A Formbricks app saját Kubernetes névtérben fut (formbricks), dedikált PostgreSQL StatefulSet-tel. nginx Ingress-en keresztül érhető el Let's Encrypt TLS tanúsítvánnyal.
Kubernetes telepítés
Minden manifest a cadensa-k8s/k8s/formbricks/ könyvtárban található:
| Fájl | Leírás |
|---|---|
namespace.yaml | formbricks névtér |
postgres-statefulset.yaml | PostgreSQL 15, 10 Gi PVC |
formbricks-configmap.yaml | Nem érzékeny konfiguráció (URL, SMTP host, stb.) |
formbricks-sealed-secret.yaml | Sealed Secret sablon (valódi értékekkel kell kitölteni) |
formbricks-deployment.yaml | Formbricks app + Service |
formbricks-ingress.yaml | nginx Ingress TLS-sel (surveys.cadensa.io) |
Első telepítés
# 1. Titkos kulcsok generálása
NEXTAUTH_SECRET=$(openssl rand -base64 32)
ENCRYPTION_KEY=$(openssl rand -hex 32)
POSTGRES_PASSWORD=$(openssl rand -base64 24)
# 2. Sealed Secret létrehozása (plaintext értékek lezárása előtt)
kubectl create secret generic formbricks-secrets \
--from-literal=DATABASE_URL="postgresql://formbricks:${POSTGRES_PASSWORD}@formbricks-postgres:5432/formbricks" \
--from-literal=NEXTAUTH_SECRET="${NEXTAUTH_SECRET}" \
--from-literal=ENCRYPTION_KEY="${ENCRYPTION_KEY}" \
--from-literal=SMTP_PASSWORD="<smtp-jelszo>" \
-n formbricks --dry-run=client -o yaml \
| kubeseal --controller-namespace kube-system -o yaml \
> cadensa-k8s/k8s/formbricks/formbricks-sealed-secret.yaml
# 3. Manifesztek alkalmazása
kubectl apply -f cadensa-k8s/k8s/formbricks/namespace.yaml
kubectl apply -f cadensa-k8s/k8s/formbricks/postgres-statefulset.yaml
kubectl apply -f cadensa-k8s/k8s/formbricks/formbricks-configmap.yaml
kubectl apply -f cadensa-k8s/k8s/formbricks/formbricks-sealed-secret.yaml
kubectl apply -f cadensa-k8s/k8s/formbricks/formbricks-deployment.yaml
kubectl apply -f cadensa-k8s/k8s/formbricks/formbricks-ingress.yaml
A NEXTAUTH_SECRET és ENCRYPTION_KEY értékeket soha ne változtasd meg az első telepítés után — ezekkel van titkosítva az összes survey adat. Tárold biztonságos helyen!
Frissítés
# Szerkeszd a formbricks-deployment.yaml fájlt — frissítsd az image taget
# image: formbricks/formbricks:v2.x.y
kubectl apply -f cadensa-k8s/k8s/formbricks/formbricks-deployment.yaml
Docker Compose (helyi / staging)
Helyi teszteléshez vagy staging környezethez:
# 1. Env fájl másolása és kitöltése
cp cadensa-k8s/.env.formbricks.example cadensa-k8s/.env.formbricks
# Szerkeszd a .env.formbricks fájlt — töltsd ki a CHANGE_ME értékeket
# 2. Indítás
docker compose -f cadensa-k8s/docker-compose.formbricks.yml \
--env-file cadensa-k8s/.env.formbricks up -d
# Formbricks UI: http://localhost:3001
Alkalmazás konfigurálása
Az első telepítés után nyisd meg a https://surveys.cadensa.io oldalt és kövesd a beállítási varázslót:
- Admin fiók létrehozása
- Jegyezd fel az Environment ID-t: Settings → Developer → Environment
- Frissítsd a környezeti változókat mindkét applikációban:
cadensa-frontend (.env):
VITE_FORMBRICKS_ENV_ID=<environment-id-from-formbricks>
VITE_FORMBRICKS_APP_URL=https://surveys.cadensa.io
cadensa-landing (.env.local):
NEXT_PUBLIC_FORMBRICKS_ENV_ID=<environment-id-from-formbricks>
NEXT_PUBLIC_FORMBRICKS_APP_URL=https://surveys.cadensa.io
SDK integráció működése
Mindkét app feltételesen inicializálja a Formbricks JS SDK-t:
- cadensa-frontend (
src/main.tsx): csakPRODmódban és csak azanalyticsconsent megadása után - cadensa-landing (
components/layout/FormbricksProvider.tsx):requestIdleCallbackután, hogy ne versenyezzen az LCP erőforrásokkal
A visszajelzés gomb (FeedbackButton.tsx) feedback-button-clicked eseményt küld. Ha az SDK nincs betöltve, a gomb mailto:feedback@cadensa.io fallback-re vált.
Telemetria
A ConfigMap-ban TELEMETRY_DISABLED=1 van beállítva — a Formbricks nem küld semmilyen használati adatot a Formbricks felhőbe.
Adatok és GDPR
- Adattárolás: Hetzner, Németország (EU)
- Nincs US adattovábbítás (ellentétben a Formbricks Cloud-dal)
- Survey válaszok PostgreSQL-ben tárolva — titkosítva nyugalmi állapotban (Hetzner kötet titkosítás)
- Érintetti kérések: Formbricks admin UI → People → Delete person
- Megőrzés: konfiguráld a Formbricks Settings-ben
Kapcsolódó dokumentáció: Adatok és biztonság GYIK