No per-service fees - one plan, unlimited appsFree tier available - start building today15% off your workspace - subscribe to our blogNo per-service fees - one plan, unlimited appsFree tier available - start building today15% off your workspace - subscribe to our blog<br>No per-service fees - one plan, unlimited appsFree tier available - start building today15% off your workspace - subscribe to our blogNo per-service fees - one plan, unlimited appsFree tier available - start building today15% off your workspace - subscribe to our blog
ProductApp DeploymentMigetpacksTemplatesGitHub IntegrationPreview AppsSSH AccessManaged DatabasesMonitoringFair SchedulerAutoscalingShared StorageRegionsMiget vs HerokuMiget vs RenderMiget vs RailwayMiget vs Fly.ioSee all comparisons
ResourcesDocumentationAPI ReferenceFAQMigration GuidesOSS ProgramReferral ProgramRoadmapRelease NotesChangelogPress & MediaStatusDiscordGitHub
Miget x AIPlansEnterpriseCompareBlogDashboardStart for Free
Deploy & build<br>App DeploymentDeploy from Git or Docker in secondsMigetpacksZero-config builds for 14+ languagesTemplates100+ self-hostable stacks, one-click deployGitHub IntegrationPush to deploy, PR previewsPreview AppsAutomatic environments for every PRSSH AccessDirect shell access to containers<br>Scale & operate<br>Managed DatabasesPostgreSQL, MySQL, Redis built inMonitoringMetrics, logs & Grafana on every appFair SchedulerSmart CPU sharing across all appsAutoscalingScale up and down automaticallyShared StoragePersistent volumes across servicesRegionsGlobal infrastructure locations<br>Compare<br>Miget vs HerokuA modern alternativeMiget vs RenderA better value platformMiget vs RailwayA better platform for your appsMiget vs Fly.ioA simpler alternativeSee all comparisons
Resources<br>DocumentationGuides and referencesAPI ReferenceREST API for your infrastructureFAQCommon questions answeredMigration GuidesMove your apps to MigetOSS ProgramFree compute for open sourceReferral ProgramEarn 30% credits for referrals<br>Community<br>RoadmapSee what's nextRelease NotesWhat's new in MigetChangelogPlatform updatesPress & MediaBoilerplate, founders, logosStatusSystem uptimeDiscordJoin the communityGitHubOpen source repos<br>Blog<br>Aug 12, 2026Deploy Rails With Kamal to a Managed ClusterA step-by-step Kamal deploy of a stock Rails app to Miget. You keep the deploy.yml and the kamal deploy workflow; the server you SSH into is a managed cluster, not a VPS you patch.Aug 11, 2026DocuSign Alternatives You Can Actually Host YourselfThree open-source e-signature platforms that run on your own infrastructure - Documenso, DocuSeal and OpenSign - what each is good at, what they cost to run, and the part of DocuSign that self-hosting does not replace.Aug 10, 2026Immich on Docker Compose: The Requirements Nobody MentionsImmich needs 6 GB of RAM minimum, its database is not stock Postgres, and putting that database on your NAS is the one mistake the docs explicitly warn against. A compose file and the constraints behind it.<br>All articles
Blog/Engineering/kamal/<br>August 12, 2026·7 min read
Kamal is the default deploy tool in new Rails apps, and its pitch is simple: SSH into a server, run Docker, get zero-downtime deploys. The part nobody loves is the server. You own the kernel, the security updates, the disk that fills up at 3am.
This is a hands-on walkthrough of deploying a plain Rails app with Kamal to Miget. You write the same deploy.yml, you run the same kamal deploy, but the host Kamal SSHes into is a managed cluster. Kamal thinks it is talking to Docker; on our side that Docker API is translated to Kubernetes. If you want the story of how that translation works, it is in Kamal Deploy: VPS vs PaaS. This post is just the steps, and everything below is from a real deploy of the stock Rails Docker template.
What you need
A Miget account.
A Rails app with a Dockerfile. Rails 7.1+ generates one for you (rails new already did it).
Kamal 2 installed locally: gem install kamal.
Docker with buildx. Docker Desktop has it; so does a plain Docker Engine.
If you are on an Apple Silicon Mac, read the arch note near the end before your first deploy. It is the one thing that will bite you.
Step 1: Create the app on Miget
In the dashboard, create a new App and choose Kamal as the deployment method. Paste your SSH public key (~/.ssh/id_ed25519.pub or whichever you use). Miget provisions the Kamal infrastructure for you and hands back four things:
An SSH endpoint : a host and a port. This is what Kamal connects to.
A registry URL , registry..miget.io, and a username (your namespace).
A registry password .
Your app's full name . Miget appends a short suffix, so my-rails-app becomes something like my-rails-app-b4mrd. Use that exact name from here on.
The user Kamal logs in as is always deploy.
Step 2: Write deploy.yml
Kamal keeps its config in config/deploy.yml. Here is the whole file for a Rails app on Miget. Replace the placeholders with the values from step 1.
service:...