Nest.js is an amazing and popular Node.js framework. This recipe aims to showcase, through a simple file upload demo application, advanced concepts that unlock the scalebility powers of Nest.js by running it on Zerops.
You can either click the deploy button to deploy directly on Zerops, or manually copy the import yaml to the import dialog in the Zerops app.
- Load balanced Nest.js API running on Zerops Node.js service
- Zerops PostgreSQL 16 service as database
- Zerops Object Storage (S3 compatible) service as file system
- Idempotent TypeORM database migrations setup
- Logs set up to use syslog and accessible through Zerops GUI
- Utilization of Zerops built-in environment variables system
- Mailpit as SMTP mock server
- Adminer for quick database management tool
Base of the recipe is ready for production, the difference comes down to:
- Use highly available version of the PostgreSQL database (change
mode
fromNON_HA
toHA
in recipe YAML,db
service section) - Use at least two containers for the Nest.js service to achieve high reliability and resilience (add
minContainers: 2
in recipe YAML,api
service section) - Use production-ready third-party SMTP server instead of Mailpit (change
SMTP_
secret variables in recipe YAML,api
service section) - Disable public access to Adminer or remove it altogether (remove service
adminer
from recipe YAML)
If you want to modify your existing Nest.js app to efficiently run on Zerops, these are the general steps we took:
- Add zerops.yml to your repository, our example includes health checks and idempotent migrations
- Utilize Zerops environment variables management to securely pass environment variables to your app
- Add multer, aws-sdk packages and utilize them to upload files to S3 compatible Zerops object storage
Need help setting your project up? Join Zerops Discord community.