NuxtHub provides the easiest way to add database persistence to your authentication. Enable NuxtHub and this module generates and manages your database schema.
twoFactor, passkeynpx nuxt db migrate for productionpnpm add @nuxthub/core
export default defineNuxtConfig({
modules: [
'@nuxthub/core',
'@onmax/nuxt-better-auth'
],
hub: {
db: 'sqlite' // 'sqlite' | 'postgresql' | 'mysql'
}
})
The schema is generated at build time. Restart after configuration changes.
The hub.db option accepts a string shorthand or full object:
export default defineNuxtConfig({
hub: {
db: 'sqlite' // shorthand: 'sqlite' | 'postgresql' | 'mysql'
// or full object:
// db: { dialect: 'postgresql', /* additional options */ }
}
})
Enable KV storage for faster session lookups:
export default defineNuxtConfig({
hub: {
db: 'sqlite',
kv: true
},
auth: {
secondaryStorage: true
}
})
Sessions are cached in NuxtHub KV, reducing database queries.
NuxtHub handles migrations automatically in most deployments. For manual control:
If you need to run migrations manually:
# Generate migrations from schema changes
npx nuxt db generate
# Apply pending migrations
npx nuxt db migrate
Add to your GitHub Actions workflow:
- name: Run migrations
run: npx nuxt db migrate
env:
NUXT_HUB_PROJECT_KEY: ${{ secrets.NUXTHUB_PROJECT_KEY }}
The module analyzes your server/auth.config.ts at build time:
hub:db:schema:extend hookWith NuxtHub, you get access to the Drizzle database instance in your server config:
export default defineServerAuth(({ db }) => ({
// db is the Drizzle instance from NuxtHub
}))