Self-host Next.js + PostgreSQL with Docker
The SSR-plus-database pairing behind most Next.js apps, wired with a healthchecked Postgres.
This page describes the Levelrail template for Next.js + PostgreSQL (Starter Kits). It deploys the services below as one Docker Compose app on your own server.
Project site: https://nextjs.org/docs/app/building-your-application/deploying.Recommended memory: about 384 MiB.
Services, ports and volumes
| Service | Image | Container ports | Volumes |
|---|---|---|---|
db | postgres:16-alpine | none | nextjs_postgres_db_data -> /var/lib/postgresql/data |
web | node:22-alpine | 3000 | none |
Environment variables
| Service | Variable | Value |
|---|---|---|
db | POSTGRES_DB | Preset in the template |
db | POSTGRES_PASSWORD | Generated at deploy |
db | POSTGRES_USER | Preset in the template |
web | DATABASE_URL | Generated at deploy |
web | NEXT_TELEMETRY_DISABLED | Preset in the template |
Passwords and keys marked as generated are created for you when the app is deployed and stored as secrets. Values are not shown here.
Deploy Next.js + PostgreSQL with Levelrail
In the dashboard, open Apps, choose New app, then Browse templates, and select Next.js + PostgreSQL. Review the Compose body and deploy.
With the CLI:
levelrail-cli templates deploy nextjs-postgres-starter --name my-nextjs-postgres-starterSee Service template catalog for how templates work, and Getting started if you have not installed Levelrail yet.
More Starter Kits templates
- FastAPI + PostgreSQL
- Nginx Reverse Proxy (Multi-Backend)
- Node.js API + PostgreSQL
- Redis Cache Starter
- Static Site + API Backend
- Background Worker + Redis Queue
All templates are listed in the self-host gallery.