Tools: Deploy Like Vercel on Your Own VPS: A Complete ServerCompass Guide

Tools: Deploy Like Vercel on Your Own VPS: A Complete ServerCompass Guide

Source: Dev.to

The Problem: The SaaS Tax ## What is ServerCompass? ## Prerequisites ## Step 1: Download and Install ServerCompass ## Step 2: Connect Your First Server ## Opening the Add Server Wizard ## Option A: First Time Connecting (Recommended) ## Option B: I Have Credentials (Existing Mode) ## Tips for Server Connection ## Step 3: Connect Your GitHub Account ## Connecting GitHub via OAuth ## Step 4: Deploy Your First Application ## Starting the Deployment ## Choosing Your Deployment Source ## Deploying a Next.js App from GitHub ## Watching the Deployment ## Example: Deploying GhostCMS ## Troubleshooting Deployments ## Step 5: Connect a Domain (Optional) ## Prerequisites ## Setting Up Traefik (First Time Only) ## Adding Your Domain ## DNS Propagation Times ## SSL Certificate Troubleshooting ## Why ServerCompass Changes the Game ## Key Benefits ## What's Next? ## Community and Support ## Final Thoughts Are you tired of watching your Vercel, Railway, or Render bill climb every month? What if I told you that you could get the same polished deployment experience for just $5-10/month using your own VPS? In this comprehensive guide, I'll walk you through ServerCompass, a desktop application that brings PaaS-level user experience to your own infrastructure‚Äîno terminal commands required. Here's a common story: You start with a simple side project. You deploy it to Vercel because it's easy‚Äîjust connect GitHub and you're done. Then you add a database through Supabase ($50/month), maybe some serverless functions on Vercel ($20/month), and a PostgreSQL instance on NeonDB ($30/month). Suddenly, you're paying $100+ per month for what could run comfortably on a $5 DigitalOcean droplet. Or maybe you tried self-hosting alternatives like Coolify, Dokploy, or CapRover. The problem? They install heavyweight dashboards directly on your server. Your budget VPS spends most of its resources running someone else's control panel instead of your actual applications. ServerCompass solves both problems. It runs on your desktop (not your server), giving you a Vercel-like deployment experience while keeping your VPS clean, fast, and focused solely on running your apps. ServerCompass is a native desktop application (macOS, Windows, Linux) that manages your VPS deployments through SSH. Think of it as Vercel's UI meets your own infrastructure: Before we begin, you'll need: A VPS - Any provider works (DigitalOcean, Hetzner, Linode, Vultr, AWS EC2) A domain name (optional, for the final section) ServerCompass installed - Download from servercompass.app Head to https://servercompass.app and download the version for your operating system. Installation is straightforward: Launch the application once installed. You'll be greeted with a clean, modern interface that feels right at home with modern development tools. The first step is connecting ServerCompass to your VPS. The app provides a simple two-step wizard with two connection modes. This is the script mode - perfect for beginners and more secure. Here's how it works: Enter basic information: Generate and copy the script: Run the script on your server: Why this method is better: ServerCompass generates a dedicated SSH key pair stored in ~/.ssh/servercompass/ on your computer. You never expose your existing SSH keys or passwords. If you already have SSH credentials configured, you can use them directly: Enter server details: Choose authentication: To deploy from GitHub repositories, you need to connect your GitHub account. ServerCompass uses a smart two-tier system: This design means you connect GitHub once, then link it to individual servers as needed. Perfect for managing multiple VPS instances! Navigate to Git section and click "Add Account" Select GitHub and click "Continue" Enter the device code: No GitHub App setup required! Unlike other tools that require creating a GitHub App, ServerCompass uses OAuth with automatic SSH key management. The SSH keys are generated per-server and configured automatically. Now for the exciting part‚Äîdeploying your first app! ServerCompass supports multiple deployment sources: Let's deploy a Next.js app from GitHub. You'll see several options: Option 1: App Templates (Great for beginners) Option 2: GitHub Repository (For your own code) Let's walk through deploying a Next.js application: Select GitHub Repository as your source Configure the deployment: Review the Compose Configuration: Configure Build Location: Set Environment Variables: Click "Deploy to Server" The deployment wizard shows real-time progress: Live logs color-coded by severity: Background deployment: You can close the wizard‚Äîdeployment continues in the background with progress in the status bar Deployment complete: You'll see a success message with a link to view your running app! Want a quick win? Deploy Ghost (popular blogging platform) in under 2 minutes: Can't access your app? Your app is deployed! But it's probably running on an IP address with a port. Let's connect a custom domain with automatic SSL. ServerCompass uses Traefik as a reverse proxy to: Traefik is now listening on ports 80 (HTTP) and 443 (HTTPS), ready to route traffic! Enter your domain name: Configure DNS records: Create an A record with your domain registrar: Click "Configure Domain": Success! Your app is now live at https://yourdomain.com with automatic SSL! üéâ Pro tip: Use a low TTL (300 seconds) during initial setup for faster propagation. If HTTPS doesn't work immediately: Let's recap what we've accomplished: ‚úÖ Deployed a production-ready app in under 10 minutes ‚úÖ Zero terminal commands - everything through a visual interface ‚úÖ Automatic SSL certificates - HTTPS configured automatically ‚úÖ GitHub integration - Push-to-deploy workflow (with GitHub Actions coming soon) ‚úÖ Total cost: $5-10/month VPS + $19 one-time for ServerCompass You can consolidate $100+/month in SaaS fees into one $10 VPS. Over a year, that's $600-700+ in savings. Own Your Infrastructure After deploying your first app, here are some next steps: ServerCompass is built by a solo developer who got tired of surprise Vercel bills and clunky VPS tooling. Join the growing community: If you're paying $100+ per month for basic deployments, or if you're intimidated by VPS management, ServerCompass is your solution. It brings the polish and simplicity of Vercel to infrastructure you own and control. The one-time $19 payment pays for itself in the first month. The free tier (1 server, 1 deployment, 1 domain) lets you try it risk-free. Stop paying the SaaS tax. Start deploying like a pro on your own terms. Get started today at servercompass.app üöÄ Have you tried ServerCompass? What's your current deployment setup? Drop a comment below‚ÄîI'd love to hear your experience! Disclaimer: I'm not affiliated with ServerCompass, Vercel, Railway, or any provider mentioned. This is an independent tutorial based on hands-on experience with the platform. Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse COMMAND_BLOCK: ssh root@your-server-ip COMMAND_BLOCK: ssh root@your-server-ip CODE_BLOCK: Type: A Name: @ (for apex) or subdomain name Value: Your VPS IP address TTL: 300 (5 minutes) Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: Type: A Name: @ (for apex) or subdomain name Value: Your VPS IP address TTL: 300 (5 minutes) CODE_BLOCK: Type: A Name: @ (for apex) or subdomain name Value: Your VPS IP address TTL: 300 (5 minutes) - One-click GitHub deployments with OAuth (no GitHub App setup) - Zero server overhead - nothing installed on your VPS except Docker - Visual deployment wizard - no terminal, no commands - Automatic SSL certificates via Traefik and Let's Encrypt - Zero-downtime deployments using blue-green deployment strategy - Built-in file browser and SSH terminal for when you need them - One-time payment - $19 for lifetime access (free tier available: 1 server, 1 deployment, 1 domain) - A VPS - Any provider works (DigitalOcean, Hetzner, Linode, Vultr, AWS EC2) Minimum: 512MB RAM (though 1GB+ recommended) Ubuntu 20.04+ or Debian 10+ recommended SSH access (root or sudo user) - Minimum: 512MB RAM (though 1GB+ recommended) - Ubuntu 20.04+ or Debian 10+ recommended - SSH access (root or sudo user) - A domain name (optional, for the final section) - ServerCompass installed - Download from servercompass.app Also available at GitHub Releases - Also available at GitHub Releases - Minimum: 512MB RAM (though 1GB+ recommended) - Ubuntu 20.04+ or Debian 10+ recommended - SSH access (root or sudo user) - Also available at GitHub Releases - macOS: Open the .dmg file and drag to Applications - Windows: Run the installer .exe - Linux: Install the .AppImage or .deb package - Click "Add Server" or the "+" button in the servers section - You'll see two options: - Enter basic information: Server Name: A display name like "Production API" or "My Blog" Server IP/Hostname: Your VPS IP address (e.g., 192.168.1.100) Username: Usually root for most VPS providers - Server Name: A display name like "Production API" or "My Blog" - Server IP/Hostname: Your VPS IP address (e.g., 192.168.1.100) - Username: Usually root for most VPS providers - Generate and copy the script: Click "Generate Script" ServerCompass creates a unique SSH key pair for this server Copy the generated script to clipboard - Click "Generate Script" - ServerCompass creates a unique SSH key pair for this server - Copy the generated script to clipboard - Run the script on your server: SSH into your server using your VPS provider's web console or terminal: ssh root@your-server-ip - SSH into your server using your VPS provider's web console or terminal: - Server Name: A display name like "Production API" or "My Blog" - Server IP/Hostname: Your VPS IP address (e.g., 192.168.1.100) - Username: Usually root for most VPS providers - Click "Generate Script" - ServerCompass creates a unique SSH key pair for this server - Copy the generated script to clipboard - SSH into your server using your VPS provider's web console or terminal: - Paste and run the script - The script adds ServerCompass's public key to ~/.ssh/authorized_keys - Verify connection: Check "I have run the script" in ServerCompass Click "Continue" The app automatically tests the SSH connection Click "Save Server" when verification succeeds - Check "I have run the script" in ServerCompass - Click "Continue" - The app automatically tests the SSH connection - Click "Save Server" when verification succeeds - Check "I have run the script" in ServerCompass - Click "Continue" - The app automatically tests the SSH connection - Click "Save Server" when verification succeeds - Enter server details: Server Name Host/IP Address Port (default: 22) Username - Server Name - Host/IP Address - Port (default: 22) - Choose authentication: SSH Key: ServerCompass auto-detects keys in ~/.ssh/, or you can upload/paste a key Password: Enter your SSH password (less secure) - SSH Key: ServerCompass auto-detects keys in ~/.ssh/, or you can upload/paste a key - Password: Enter your SSH password (less secure) - Test and save: Click "Test Connection" Click "Add Server" when successful - Click "Test Connection" - Click "Add Server" when successful - Server Name - Host/IP Address - Port (default: 22) - SSH Key: ServerCompass auto-detects keys in ~/.ssh/, or you can upload/paste a key - Password: Enter your SSH password (less secure) - Click "Test Connection" - Click "Add Server" when successful - The server name is just for display‚Äîpick something memorable - Script mode is recommended for security (one key per server) - Generated keys are stored locally in ~/.ssh/servercompass/ - Connection is tested before saving, so you'll know immediately if something's wrong - Global GitHub Account - OAuth connection to your GitHub account - Server-Linked Git Account - Automatic SSH key configuration per server - Navigate to Git section and click "Add Account" - Select GitHub and click "Continue" ServerCompass opens your browser to GitHub Authorize the application - ServerCompass opens your browser to GitHub - Authorize the application - Enter the device code: GitHub provides a verification code Return to ServerCompass The app displays where to enter the code Paste it in GitHub's verification page - GitHub provides a verification code - Return to ServerCompass - The app displays where to enter the code - Paste it in GitHub's verification page - Link to your server: Go to your server's dashboard Select the "Git" tab Click "Link Existing" Choose your connected GitHub account ServerCompass automatically generates and configures an SSH key for deployments - Go to your server's dashboard - Select the "Git" tab - Click "Link Existing" - Choose your connected GitHub account - ServerCompass automatically generates and configures an SSH key for deployments - ServerCompass opens your browser to GitHub - Authorize the application - GitHub provides a verification code - Return to ServerCompass - The app displays where to enter the code - Paste it in GitHub's verification page - Go to your server's dashboard - Select the "Git" tab - Click "Link Existing" - Choose your connected GitHub account - ServerCompass automatically generates and configures an SSH key for deployments - App Templates - Pre-configured apps (WordPress, Ghost, PostgreSQL, etc.) - GitHub Repository - Deploy your own code with auto-detection - Upload - Upload code from your computer (coming soon) - Paste Configuration - Bring your own docker-compose.yml (coming soon) - Navigate to your server's dashboard - Go to the Apps or Stacks section - Click "Deploy New App" or the "+" button - The Stack Wizard opens - Pre-configured applications ready to deploy - Available templates include: Databases: PostgreSQL, MySQL, MongoDB, Redis CMS: WordPress, Ghost, Strapi Tools: n8n, Grafana, Nextcloud, Supabase And 160+ more! - Databases: PostgreSQL, MySQL, MongoDB, Redis - CMS: WordPress, Ghost, Strapi - Tools: n8n, Grafana, Nextcloud, Supabase - And 160+ more! - Features: Auto-generated secure passwords Port conflict detection Minimum RAM requirements displayed - Auto-generated secure passwords - Port conflict detection - Minimum RAM requirements displayed - Databases: PostgreSQL, MySQL, MongoDB, Redis - CMS: WordPress, Ghost, Strapi - Tools: n8n, Grafana, Nextcloud, Supabase - And 160+ more! - Auto-generated secure passwords - Port conflict detection - Minimum RAM requirements displayed - Deploy directly from your repositories - Supported frameworks auto-detected: Node.js: Next.js, React, Vue, Express, NestJS Python: Django, Flask, FastAPI Ruby: Rails, Sinatra PHP: Laravel, Symfony Go: Gin, Echo, Fiber Rust: Actix, Rocket, Axum And more: Java, Elixir, Swift, Deno, static sites - Node.js: Next.js, React, Vue, Express, NestJS - Python: Django, Flask, FastAPI - Ruby: Rails, Sinatra - PHP: Laravel, Symfony - Go: Gin, Echo, Fiber - Rust: Actix, Rocket, Axum - And more: Java, Elixir, Swift, Deno, static sites - Node.js: Next.js, React, Vue, Express, NestJS - Python: Django, Flask, FastAPI - Ruby: Rails, Sinatra - PHP: Laravel, Symfony - Go: Gin, Echo, Fiber - Rust: Actix, Rocket, Axum - And more: Java, Elixir, Swift, Deno, static sites - Select GitHub Repository as your source - Configure the deployment: Project Name: Enter a URL-safe name (e.g., my-nextjs-app) GitHub Account: Select your linked account Repository: Browse and select your repo Private repos are supported (shown with lock icon) Search by name or description Branch: Choose which branch to deploy (default: main) Runtime: Usually auto-detected as "Node.js" Auto-Pull on Redeploy: Enable to run git pull before rebuilding - Project Name: Enter a URL-safe name (e.g., my-nextjs-app) - GitHub Account: Select your linked account - Repository: Browse and select your repo Private repos are supported (shown with lock icon) Search by name or description - Private repos are supported (shown with lock icon) - Search by name or description - Branch: Choose which branch to deploy (default: main) - Runtime: Usually auto-detected as "Node.js" - Auto-Pull on Redeploy: Enable to run git pull before rebuilding - Review the Compose Configuration: ServerCompass auto-generates a docker-compose.yml using Nixpacks Also generates a Dockerfile if needed You can edit these if you're advanced, but defaults work great - ServerCompass auto-generates a docker-compose.yml using Nixpacks - Also generates a Dockerfile if needed - You can edit these if you're advanced, but defaults work great - Configure Build Location: Build on VPS (recommended): Build directly on your server GitHub Actions (coming soon): Use CI/CD pipeline - Build on VPS (recommended): Build directly on your server - GitHub Actions (coming soon): Use CI/CD pipeline - Set Environment Variables: Add any required environment variables (API keys, database URLs, etc.) Template apps auto-generate secure secrets - Add any required environment variables (API keys, database URLs, etc.) - Template apps auto-generate secure secrets - Click "Deploy to Server" - Project Name: Enter a URL-safe name (e.g., my-nextjs-app) - GitHub Account: Select your linked account - Repository: Browse and select your repo Private repos are supported (shown with lock icon) Search by name or description - Private repos are supported (shown with lock icon) - Search by name or description - Branch: Choose which branch to deploy (default: main) - Runtime: Usually auto-detected as "Node.js" - Auto-Pull on Redeploy: Enable to run git pull before rebuilding - Private repos are supported (shown with lock icon) - Search by name or description - ServerCompass auto-generates a docker-compose.yml using Nixpacks - Also generates a Dockerfile if needed - You can edit these if you're advanced, but defaults work great - Build on VPS (recommended): Build directly on your server - GitHub Actions (coming soon): Use CI/CD pipeline - Add any required environment variables (API keys, database URLs, etc.) - Template apps auto-generate secure secrets - Live logs color-coded by severity: Blue (Info): Progress messages Green (Success): Completed steps Yellow (Warning): Non-critical issues Red (Error): Problems requiring attention - Blue (Info): Progress messages - Green (Success): Completed steps - Yellow (Warning): Non-critical issues - Red (Error): Problems requiring attention - Background deployment: You can close the wizard‚Äîdeployment continues in the background with progress in the status bar - Deployment complete: You'll see a success message with a link to view your running app! - Blue (Info): Progress messages - Green (Success): Completed steps - Yellow (Warning): Non-critical issues - Red (Error): Problems requiring attention - Click "Deploy New App" - Select "App Template" - Choose "Ghost" from the template grid - Review auto-generated configuration: Secure MySQL password: ‚úÖ auto-generated Available port: ‚úÖ auto-assigned Environment variables: ‚úÖ pre-configured - Secure MySQL password: ‚úÖ auto-generated - Available port: ‚úÖ auto-assigned - Environment variables: ‚úÖ pre-configured - Click "Deploy to Server" - Wait ~2 minutes - Your blog is live! üéâ - Secure MySQL password: ‚úÖ auto-generated - Available port: ‚úÖ auto-assigned - Environment variables: ‚úÖ pre-configured - Check the deployment logs for specific error messages - Verify all required environment variables are set - Ensure your code builds locally first - Try overriding the auto-detected runtime if needed - Verify the container is running (check the Apps list) - Check firewall settings on your VPS - View container logs for startup errors - Give it a minute‚Äîsome apps need time to initialize - A deployed application (from Step 4) - A registered domain name - Access to your domain's DNS settings - Route traffic from your domain to your application - Automatically obtain SSL certificates from Let's Encrypt - Handle HTTPS redirects - Support multiple domains on one server - Navigate to the Domains tab - Click "Add Domain" - You'll see a blue info box: "Traefik Setup Required" - Enter your email address (for Let's Encrypt notifications) - Click "Install Traefik" - Wait for installation (~30 seconds) - Enter your domain name: Valid: example.com, app.example.com, api.v2.example.com Invalid: https://example.com, example.com/app, 192.168.1.1 - Valid: example.com, app.example.com, api.v2.example.com - Invalid: https://example.com, example.com/app, 192.168.1.1 - Configure DNS records: - Valid: example.com, app.example.com, api.v2.example.com - Invalid: https://example.com, example.com/app, 192.168.1.1 - DNS Verification: ServerCompass automatically checks if your DNS is configured Green checkmark: DNS verified ‚úÖ Yellow warning: DNS not propagated yet ‚ö†Ô∏è You can skip verification if you prefer (advanced) - ServerCompass automatically checks if your DNS is configured - Green checkmark: DNS verified ‚úÖ - Yellow warning: DNS not propagated yet ‚ö†Ô∏è - You can skip verification if you prefer (advanced) - Click "Configure Domain": Traefik labels are applied to your container Container restarts with new configuration SSL certificate is requested from Let's Encrypt Processing takes 1-5 minutes - Traefik labels are applied to your container - Container restarts with new configuration - SSL certificate is requested from Let's Encrypt - Processing takes 1-5 minutes - Success! Your app is now live at https://yourdomain.com with automatic SSL! üéâ - ServerCompass automatically checks if your DNS is configured - Green checkmark: DNS verified ‚úÖ - Yellow warning: DNS not propagated yet ‚ö†Ô∏è - You can skip verification if you prefer (advanced) - Traefik labels are applied to your container - Container restarts with new configuration - SSL certificate is requested from Let's Encrypt - Processing takes 1-5 minutes - Wait a few minutes - Certificate issuance can take 1-5 minutes - Verify DNS - Run dig yourdomain.com to confirm it points to your server - Check Traefik logs - Look for Let's Encrypt errors in the container logs - Rate limits - Let's Encrypt allows 5 certificates per domain per week - Vercel: $20+/month per project - Railway: $5-20+/month - Supabase: $25-50/month - NeonDB: $19-50/month - PaaS UX, VPS Price Get the Vercel experience for VPS costs No learning curve if you've used modern platforms - Get the Vercel experience for VPS costs - No learning curve if you've used modern platforms - Zero Server Overhead Nothing installed on your VPS except Docker and your apps Unlike Coolify/Dokploy/CapRover which consume 500MB+ RAM Your 512MB VPS stays fast and responsive - Nothing installed on your VPS except Docker and your apps - Unlike Coolify/Dokploy/CapRover which consume 500MB+ RAM - Your 512MB VPS stays fast and responsive - Own Your Infrastructure No vendor lock-in Full control over your data SSH access whenever you need it Built-in terminal and file browser - No vendor lock-in - Full control over your data - SSH access whenever you need it - Built-in terminal and file browser - One-Time Payment $19 lifetime license (not subscription) Free tier: 1 server, 1 deployment, 1 domain No surprise bills or usage-based pricing - $19 lifetime license (not subscription) - Free tier: 1 server, 1 deployment, 1 domain - No surprise bills or usage-based pricing - Framework-Agnostic Auto-detects Node.js, Python, Go, Rust, Ruby, PHP, Java 166+ pre-configured app templates Bring your own docker-compose.yml - Auto-detects Node.js, Python, Go, Rust, Ruby, PHP, Java - 166+ pre-configured app templates - Bring your own docker-compose.yml - Get the Vercel experience for VPS costs - No learning curve if you've used modern platforms - Nothing installed on your VPS except Docker and your apps - Unlike Coolify/Dokploy/CapRover which consume 500MB+ RAM - Your 512MB VPS stays fast and responsive - No vendor lock-in - Full control over your data - SSH access whenever you need it - Built-in terminal and file browser - $19 lifetime license (not subscription) - Free tier: 1 server, 1 deployment, 1 domain - No surprise bills or usage-based pricing - Auto-detects Node.js, Python, Go, Rust, Ruby, PHP, Java - 166+ pre-configured app templates - Bring your own docker-compose.yml - Set up automated backups for databases - Configure environment variables for different environments - Monitor resources - View CPU and memory usage - Scale your application - Add more instances - Explore templates - Deploy PostgreSQL, Redis, n8n, or 160+ other apps - Use the built-in terminal - SSH directly from ServerCompass when needed - Manage cron jobs - Schedule tasks visually - File browser - Edit config files without command line - Discord: Get help and share feedback - GitHub: @stoicsoft - Twitter/X: @server_compass - Email: [email protected]