<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>koyracloud blog</title>
    <link>https://koyracloud.com/blog</link>
    <atom:link href="https://koyracloud.com/blog/rss.xml" rel="self" type="application/rss+xml" />
    <description>Self-hosting a PaaS on Docker Swarm — push-to-deploy, custom domains, workers, and moving off Vercel and Heroku onto your own hardware.</description>
    <language>en</language>
    <item>
      <title>I built my own Vercel in a month — here's the architecture</title>
      <link>https://koyracloud.com/blog/building-koyracloud-in-public</link>
      <guid>https://koyracloud.com/blog/building-koyracloud-in-public</guid>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <description>Building a self-hosted PaaS solo: the two-half control-plane/pipeline architecture, the NFS design I got wrong first, and every feature I said no to on purpose.</description>
    </item>
    <item>
      <title>Deploy a FastAPI + React app to your homelab</title>
      <link>https://koyracloud.com/blog/deploy-fastapi-react-homelab</link>
      <guid>https://koyracloud.com/blog/deploy-fastapi-react-homelab</guid>
      <pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate>
      <description>A concrete walkthrough: the .paas/app.yaml manifest for a full-stack Python+Node app, build vs predeploy, build-time env traps, push-to-deploy, and adding a worker later.</description>
    </item>
    <item>
      <title>You don't need Kubernetes to self-host your apps</title>
      <link>https://koyracloud.com/blog/you-dont-need-kubernetes</link>
      <guid>https://koyracloud.com/blog/you-dont-need-kubernetes</guid>
      <pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
      <description>The push-a-repo-get-a-URL loop most people want doesn't require Kubernetes. Why Docker Swarm plus a thin PaaS layer is the right amount of machinery for a homelab.</description>
    </item>
    <item>
      <title>Migrating a Next.js app off Vercel, the honest version</title>
      <link>https://koyracloud.com/blog/migrating-off-vercel</link>
      <guid>https://koyracloud.com/blog/migrating-off-vercel</guid>
      <pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate>
      <description>The two genuinely fiddly parts of moving Next.js to your own hardware — the Dockerfile and the apex domain — plus the build-env, pnpm, and email traps that bite everyone.</description>
    </item>
    <item>
      <title>Self-hosting a PaaS on your Docker Swarm</title>
      <link>https://koyracloud.com/blog/self-hosted-paas-docker-swarm</link>
      <guid>https://koyracloud.com/blog/self-hosted-paas-docker-swarm</guid>
      <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
      <description>What a self-hosted PaaS actually is, why Docker Swarm is a sane base for one, and what you get over hand-rolling compose, Traefik and a registry yourself.</description>
    </item>
    <item>
      <title>An open-source Vercel alternative for your own hardware</title>
      <link>https://koyracloud.com/blog/open-source-vercel-alternative</link>
      <guid>https://koyracloud.com/blog/open-source-vercel-alternative</guid>
      <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
      <description>Vercel's developer experience is genuinely good. Here's what you keep and what you give up when you self-host that git-push-to-URL loop on your own metal.</description>
    </item>
    <item>
      <title>The self-hosted version of the Heroku workflow</title>
      <link>https://koyracloud.com/blog/self-hosted-heroku-alternative</link>
      <guid>https://koyracloud.com/blog/self-hosted-heroku-alternative</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <description>Procfiles, dynos, config vars, Scheduler and the Redis add-on — mapped onto a self-hosted PaaS you run on your own Docker Swarm.</description>
    </item>
    <item>
      <title>Push-to-deploy, without the CI yak-shave</title>
      <link>https://koyracloud.com/blog/push-to-deploy-git</link>
      <guid>https://koyracloud.com/blog/push-to-deploy-git</guid>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <description>Connect a repo once, push, and it builds an image and ships it — or deploys only after your CI goes green. How the pipeline works, with live logs and rollback.</description>
    </item>
    <item>
      <title>Background workers and cron from the same repo</title>
      <link>https://koyracloud.com/blog/background-workers-and-cron</link>
      <guid>https://koyracloud.com/blog/background-workers-and-cron</guid>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
      <description>Declare always-on workers, scheduled jobs and a per-app Redis bus in one manifest, off one image — with run history, a Run-now button and no catch-up storms.</description>
    </item>
    <item>
      <title>Custom domains and automatic HTTPS, the boring way</title>
      <link>https://koyracloud.com/blog/custom-domains-automatic-https</link>
      <guid>https://koyracloud.com/blog/custom-domains-automatic-https</guid>
      <pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate>
      <description>Point a record, a certificate appears, it renews itself, you forget about it. Platform subdomains via Traefik and custom domains via Cloudflare for SaaS.</description>
    </item>
    <item>
      <title>Why we build each app into its own image, off NFS</title>
      <link>https://koyracloud.com/blog/apps-into-images-not-nfs</link>
      <guid>https://koyracloud.com/blog/apps-into-images-not-nfs</guid>
      <pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate>
      <description>We tried serving app code over NFS. It bit us. Here's the rewrite to per-app container images and an internal registry — and why it removed more code than it added.</description>
    </item>
    <item>
      <title>A homelab that pays rent</title>
      <link>https://koyracloud.com/blog/homelab-paas</link>
      <guid>https://koyracloud.com/blog/homelab-paas</guid>
      <pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate>
      <description>Most homelab hardware sits mostly idle. Closing the gap between 'I have servers' and 'I can ship to them like a small cloud' — so a new idea costs almost no friction.</description>
    </item>
  </channel>
</rss>
