Self-hosting

GudForm core runs with Docker Compose: builder, public forms, responses, teams, API keys, and webhooks. Hosted billing, Stripe payment collection, and the integrations marketplace are not included. See developer docs for the API.

Docker Compose

From the repository root:

docker compose up --build

The default compose file publishes the app at http://localhost:3080 and Postgres at localhost:5433 so they do not collide with a local pnpm dev on port 3000.

  • Health check: GET /api/health returns { "ok": true, "edition": "oss" }
  • Register with email and password. Email verification is skipped when Resend is not configured.
  • Change AUTH_SECRET before exposing the stack beyond localhost.

Required environment

  • NEXT_PUBLIC_APP_URL — public URL of the app
  • AUTH_SECRETopenssl rand -base64 32
  • DATABASE_URL — Postgres connection string
  • AUTH_TRUST_HOST=true and AUTH_URL — set these in Docker / behind a reverse proxy

Google, Resend, and R2 are optional. Hosted gudform.com is a separate private product; this Docker image is core only.