Self-hostable contact form service for Ghost blogs. Or any other applications you can think of. The limit is in your mind.
Add a contact form to your Ghost site without a subscription! Supports captchas from Cap, reCAPTCHA and hCaptcha.
npm install
npm run buildTo run:
npm run startA docker image ghcr.io/corysanin/seance is provided. A list of tags is available here.
See docker-compose.yml.
Seance takes a JSON or JSON5 config file (default location is config/config.json5):
{
// The port the web server will run on (default 8080)
"port": number,
// URL prefix, for example: '/seance'
// Useful for using reverse proxy to use a single domain
"prefix": string
// Array of hosts allowed to embed the contact form.
// Default is to allow all (not recommended)
"allowedHosts": string[],
// Preferred locale for email contents
// Obviously won't translate an email or anything, but certain boilerplate can be localized
// default is "en"
"backendLang": string,
// If using reCAPTCHA, provide the site key
"recaptchaKey": string,
// If using reCAPTCHA, provide the site secret
"recaptchaSecret": string,
// If using hCaptcha, provide the site key
"hCaptchaKey": string,
// If using hCaptcha, provide the account secret
"hCaptchaSecret": string,
// If using Cap, provide the site key
"capKey": string,
// If using Cap, provide the site secret
"capSecret": string,
// If using Cap, provide the instance hostname
"capInstance": string,
// If using Cap, provide the public instance hostname (if different from capInstance)
"capInstancePublic": string,
// The Nodemailer transport configuration. See https://nodemailer.com/smtp/
"smtp": SMTPTransport | SMTPTransport.Options,
// The address to send emails from. Defaults to the smtp username
"senderAddress": string,
// The address to send emails to
"recipientAddress": string,
// The subject prefix for all mail sent using this form. Default is "Form submission"
"subject": string,
// Options for express-rate-limit
"limiter": LimiterOptions
}
Navigate to where Seance is hosted and copy the HTML embed snippet. In Ghost, Create a page for your contact form. Add an "HTML" card and paste the snippet.
