Dokploy is a self-hosted PaaS that gives you the deployment experience of Vercel or Netlify on infrastructure you control. By the end of this guide, you'll have Dokploy running on a RamNode VPS with a live application accessible over HTTPS.
What You'll Need
- RamNode VPS (2GB RAM / 2 vCPU minimum recommended)
- Ubuntu 24.04 LTS
- A domain name (or use the server IP for testing)
- SSH access
Prepare Your Server
SSH into your fresh VPS:
ssh root@your-server-ipUpdate packages and install essentials:
apt update && apt upgrade -y
apt install -y curl git ufwConfigure the Firewall
Open only what Dokploy needs:
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw allow 3000/tcp # Dokploy dashboard
ufw enableInstall Docker
Dokploy runs everything in containers. Install Docker with the official convenience script:
curl -fsSL https://get.docker.com | shVerify it's working:
docker --version
docker run --rm hello-worldYou should see "Hello from Docker!" — you're ready for Dokploy.
Install Dokploy
One command:
curl -sSL https://dokploy.com/install.sh | shThis pulls the Dokploy containers and starts the service. Takes 2-3 minutes.
Verify it's running:
docker ps | grep dokployYou should see multiple containers: dokploy, dokploy-postgres, dokploy-redis, and dokploy-traefik.
Initial Setup
Open your browser to:
http://your-server-ip:3000You'll see the Dokploy setup wizard:
- Create your admin account — use a strong password
- Server settings — defaults are fine for now
- Git provider — connect GitHub, GitLab, or Bitbucket (or skip for now)
Once complete, you're in the dashboard.
Deploy Your First Application
Let's deploy something real. We'll use a simple static site to prove the pipeline works.
Option A: Deploy from GitHub (Recommended)
If you connected a Git provider:
- Click Create Project → give it a name like "hello-world"
- Inside the project, click Create Service → Application
- Choose GitHub and select a repository
- Dokploy auto-detects most frameworks. For a static site or Node app, it usually just works.
- Click Deploy
Watch the build logs stream in real-time. When you see "Deployment successful," your app is live.
Option B: Deploy from Docker Image
No Git repo? Deploy an existing image:
- Create Project → Create Service → Application
- Choose Docker as the source
- Enter an image:
nginx:alpine(simple web server) - Click Deploy
In 30 seconds, you have a running Nginx container.
Access Your App
After deployment, Dokploy shows you the app URL. By default it's http://your-server-ip:RANDOM_PORT. We'll fix that with a proper domain next.
Add a Domain & Enable HTTPS
This is where Dokploy shines. No manual certificate management.
Point Your Domain
In your DNS provider, add an A record:
Type: A
Name: app (or @ for root domain)
Value: your-server-ip
TTL: 300Wait a few minutes for DNS propagation.
Configure in Dokploy
- Go to your application → Domains tab
- Click Add Domain
- Enter your domain:
app.yourdomain.com - Toggle HTTPS on
- Save
Dokploy's built-in Traefik proxy automatically:
- Routes traffic to your container
- Requests a Let's Encrypt certificate
- Redirects HTTP → HTTPS
- Handles certificate renewal
Within a minute, visit https://app.yourdomain.com — it works.
What You've Built
Quick Reference
Dokploy Dashboard
http://your-server-ip:3000View running containers
docker psCheck Dokploy logs
docker logs dokploy -fUpdate Dokploy
curl -sSL https://dokploy.com/install.sh | shRestart Dokploy
docker restart dokployCommon Issues
Can't access port 3000?
- Check UFW:
ufw status - Verify Dokploy is running:
docker ps
Build fails immediately?
- Check your Dockerfile exists in the repo root
- Verify the branch name matches what you entered
SSL certificate not generating?
- DNS must be propagated first — check with
dig app.yourdomain.com - Port 80 must be open for Let's Encrypt HTTP challenge
What's Next
You've got the foundation. The rest of this series builds on it:
