bimals.net

/posts

Self-Hosting My Projects: A Practical Deployment Setup for personal projects

Overview

Deploying personal projects can be surprisingly frustrating — especially when they’re not meant for production or public release, but you still want them online. Sometimes it's just about seeing something live, validating the work, or testing ideas in a real environment.

For frontend apps, platforms like Vercel or Netlify offer reliable free-tier hosting. Backend services are trickier, but options like Render and Northflank work reasonably well.

After months of switching between different free services, I decided to set up a deployment workflow that’s stable, manageable, and entirely under my control. Here’s what that looks like.

The Workflow

  • Server: The cheapest DigitalOcean droplet. It’s not particularly powerful but it’s good enough to for small applications with zero traffic.
  • Self-hosted platform: I use Dokploy for managing deployments. I initially tried Coolify, which worked well for a while, but Dokploy felt simpler and more consistent in the long run, although has similar flaws. From here, I SSH into the server and install the necessary components to make it work.
  • Image builds: I build my images via GitHub Actions to offload the resource-heavy nature of the build step. There’s different options to build on the server itself but that’s not practical on such cheap and low-resource servers – builds tend to freeze or overload the server.
  • Deployment: Once the image is build in ghcr, it is deployed to the server through the GitHub workflow. While there is an existing setup for CI/CD in Dokploy with webhooks, because I have hosted it locally, it’s not feasible for me as I don’t want to expose my ports or use tunnels at the moment. Hence, there’s no continuous deployment pipeline — just manual deployment triggered as needed.
  • Certificates: Dokploy handles HTTPS certificates automatically with Lets Encrypt if you have a custom domain, which simplifies the process significantly. If you do not have the domain, then they will generate non-secure urls which will also do the job.
  • Domain management: I use DigitalOcean’s DNS to create and manage subdomains, assigning them to projects as needed. I previously managed it from Namecheap but migrated them here to centralize the process.
  • Why This Works

    This setup strikes a balance between control and simplicity. It’s not fully automated, but it’s predictable. I know how everything fits together, and it doesn’t rely on third-party free tiers that may change or disappear. For personal or experimental projects, for me this approach has proven reliable and low maintenance so far.

    Last updatedAug 2, 2025
    Tags
    Digital OceanCoolifyDokploySelf HostingDeploymentVercelNetlifyNorthflankRender