Getting Started

Specter CRM is a multi-tenant CRM application for managing organizations, contacts, and deals. It provides deduplication, reporting, and API integrations, and uses PostgreSQL via Prisma ORM for data storage. Available as a service in Eyevinn Open Source Cloud, you can run your own private CRM instance in minutes.

Prerequisites

Step 1: Create a PostgreSQL database

Specter CRM requires a PostgreSQL 16+ database. Navigate to the PostgreSQL service in the Eyevinn OSC web console. Click Create psql-db, enter a name and a password.

Once the instance is running, construct the connection URL:

postgres://postgres:<password>@<IP>:<PORT>/postgres

Step 2: Store the database URL and JWT secrets

Navigate to the Specter CRM service page and switch to the Service Secrets tab.

Create the following secrets:

  • dburl — the PostgreSQL connection URL from Step 1 (e.g. postgres://postgres:mypassword@172.232.131.169:10505/postgres)
  • jwtsecret — a random string used to sign access tokens (e.g. generate with openssl rand -base64 32)
  • refreshsecret — a separate random string used to sign refresh tokens

Using different values for the two JWT secrets is recommended for production.

Step 3: Create the Specter CRM instance

Switch to the My spectercrms tab and click Create spectercrm. Fill in:

  • Name: a name for your instance (alphanumeric only)
  • DatabaseUrl: {{secrets.dburl}}
  • JwtSecret: {{secrets.jwtsecret}}
  • RefreshTokenSecret: {{secrets.refreshsecret}}

Click Create and wait for the status to show Running.

Step 4: Access your CRM

Click the instance card and open the URL to reach the Specter CRM web interface. Register your first user account through the sign-up flow.

Using the CLI

# Create a PostgreSQL database
osc create birme-osc-postgresql mycrm-db -o PostgresPassword="mypassword"

# Create the Specter CRM instance
osc create svensson00-spectercrm mycrm \
  -o DatabaseUrl="postgres://postgres:mypassword@<IP>:<PORT>/postgres" \
  -o JwtSecret="$(openssl rand -base64 32)" \
  -o RefreshTokenSecret="$(openssl rand -base64 32)"

Resources