Platform setup
The only thing you need is Docker. The standalone image ships both the API and the web dashboard in one container.
Create an .env file
# Public origin where platform can be accessedORIGIN=http://localhost:3000
# Must be a 32-byte random value. Generate using: openssl rand -base64 32BETTER_AUTH_SECRET=replace-with-32-byte-random-secret
# From address for emails from the platformEMAIL_FROM=from@featurectrl.io
# SMTP server to use for sending the emailsEMAIL_BACKEND_URL=smtp://username:password@smtp.server.com:25
# Optional OAuth providers — set both ID and SECRET for a provider to enable it.# When unset, the provider is hidden from the login page.GITHUB_CLIENT_ID=GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=GOOGLE_CLIENT_SECRET=Create a docker-compose.yml file
services: db: image: postgres:alpine environment: POSTGRES_USER: featurectrl POSTGRES_PASSWORD: featurectrl POSTGRES_DB: featurectrl healthcheck: test: ["CMD-SHELL", "pg_isready -U featurectrl -d featurectrl"] interval: 5s timeout: 5s retries: 5 start_period: 10s volumes: - featurectrl-db:/var/lib/postgresql/data
migrate: image: featurectrl/featurectrl:latest command: ["db:migrate"] environment: DATABASE_URL: postgres://featurectrl:featurectrl@db:5432/featurectrl depends_on: db: condition: service_healthy restart: "no"
app: image: featurectrl/featurectrl:latest ports: - "3000:3000" environment: DATABASE_URL: postgres://featurectrl:featurectrl@db:5432/featurectrl depends_on: db: condition: service_healthy migrate: condition: service_completed_successfully restart: unless-stopped
volumes: featurectrl-db:Open http://localhost:3000 and sign up. The first account in a fresh database creates your organization.