Auto-configure local HTTPS for Elysia/Bun apps using mkcert. The plugin handles creating and refreshing certificates locally so your app.listen call can stay minimal.
brew install mkcert nss
mkcert -installimport { Elysia } from 'elysia'
import { localHttps } from 'elysia-local-https'
const app = new Elysia().get('/', () => 'secure ✅')
app.listen(localHttps({ port: 3000 }))By default local HTTPS is enabled when NODE_ENV !== 'production'. Control via env vars or overrides:
ENABLE_LOCAL_HTTPS=true|falseHTTPS_CERT_PATH/HTTPS_KEY_PATH(defaults tocerts/local/localhost.pemandcerts/local/localhost-key.pem)domainsoverride in code for mkcert (defaults tolocalhost,127.0.0.1,::1)
When enabled the plugin will:
- Run
mkcert -installto ensure the local root CA is trusted. - Generate missing cert/key files with mkcert.
- Refresh the cert when <14 days from expiry.
- Log a concise hint with errors and the exact mkcert command if something fails.
When you are running first time your app:
- Script may prompt sudo password for mkdir -install command.
- If you are not allowed sudo access, you can call manualy. Don't forget to restart your app.
localHttps method first argument is same as listen() command argument.
localHttps(options, {
enabled: true, // or false, defaults to NODE_ENV !== 'production'
certPath: 'certs/local/localhost.pem',
keyPath: 'certs/local/localhost-key.pem',
domains: ['localhost', '127.0.0.1', '::1']
})ENABLE_LOCAL_HTTPS=true bun example/index.tsbun install
bun run build