Deploy Your First App
import { Steps, Aside } from ‘@astrojs/starlight/components’;
This tutorial walks you through deploying a real application on Vessl. You’ll deploy a ready-to-run Node.js app, connect it to a database, and see it live.
Prerequisites
Section titled “Prerequisites”- A running Vessl instance (install guide)
- An admin account (create via dashboard or
vessld setup)
Step 1: Create a Project
Section titled “Step 1: Create a Project”- Log in to your Vessl dashboard at
http://your-server-ip:8080. - Click New Project in the sidebar.
- Enter
my-first-appas the project name. - Click Create.
Step 2: Deploy a Sample App
Section titled “Step 2: Deploy a Sample App”Since you don’t have a Git repository connected yet, you’ll deploy from a public Git URL.
- In your project, click New Service.
- Select Deploy from Git URL.
- Paste this URL:
https://github.com/expressjs/express
- Vessl auto-detects the build strategy — it finds the
package.jsonand uses Railpack. - Click Deploy.
Check progress: Click on the service to view live deployment logs.
Once the status shows running, your app is live at the URL shown in the service details.
Step 3: Add a Database
Section titled “Step 3: Add a Database”- Navigate to Databases in the sidebar.
- Click New Database.
- Select PostgreSQL 16.
- Click Create.
Vessl provisions a PostgreSQL container with persistent storage.
After creation, Vessl automatically injects the connection string into your app:
DATABASE_URL=postgresql://vessl:<password>@<container-name>:5432/vesslStep 4: Set Environment Variables
Section titled “Step 4: Set Environment Variables”- Go to your service’s Variables tab.
- Click Add Variable.
- Set
NODE_ENVtoproduction. - Save.
Step 5: Attach a Custom Domain (Optional)
Section titled “Step 5: Attach a Custom Domain (Optional)”- Go to Project → Domains.
- Click Add Domain.
- Enter your domain (e.g.
app.example.com). - Add the
Arecord at your DNS provider. - SSL is provisioned automatically via Let’s Encrypt.
Step 6: Monitor
Section titled “Step 6: Monitor”View real-time metrics from the service detail page:
- CPU: Current and historical usage
- Memory: RAM consumption
- Status: Running, deploying, or failed
- Logs: Live streaming output
Clean Up
Section titled “Clean Up”To remove everything:
# Via CLIvessld backup # Backup your database first
# In dashboard: Delete the project