Behöver jag en VPS för att köra Ruby on Rails?
Ja, för produktion behöver du i praktiken en VPS eller en Rails-anpassad plattform. De flesta delade webbhotell saknar Ruby-stöd. Undantag som Oderland och Polar55 erbjuder Ruby via Passenger, men för seriösa Rails-applikationer med Sidekiq och bakgrundsjobb är en VPS det naturliga valet.
Varför vanliga webbhotell inte räcker för Rails
De flesta delade webbhotell är byggda för PHP. Deras servermiljö innehåller Apache eller Nginx konfigurerat för PHP-FPM, och de saknar Ruby-runtime och möjlighet att köra egna långlivade processer. Rails är ett ramverk som kräver en applikationsserver, en aktiv Ruby-runtime och ofta bakgrundsprocesser.
Undantag finns: Oderland och Polar55 erbjuder Ruby-stöd i sina delade paket, typiskt via Phusion Passenger. Det kan räcka för enklare Ruby-applikationer, men inte för fullskaliga Rails-projekt med Sidekiq, Redis och tunga bakgrundsjobb.
Rails 8 (släppt november 2024) kräver Ruby 3.2 eller nyare. Aktuell stabil version är Ruby 3.4, och det är den som rekommenderas för nya projekt.
VPS med Passenger eller Puma och Nginx
En VPS är standardlösningen för Rails i produktion. Du installerar Ruby via rbenv eller RVM, sätter upp Nginx som reverse proxy och väljer en applikationsserver. De två vanligaste alternativen är Puma och Phusion Passenger.
Puma är Rails standardapplikationsserver sedan Rails 5. Den använder en trådbaserad modell där en enda process hanterar flera förfrågningar parallellt via trådar. Passenger integrerar direkt i Nginx eller Apache som en modul och hanterar processlivscykeln automatiskt.
En typisk VPS-setup för Rails:
- Nginx tar emot HTTP/HTTPS-förfrågningar
- Nginx skickar vidare till Puma via Unix-socket
- Rails-appen körs i Puma-processen
- Sidekiq körs som en separat process för bakgrundsjobb
- Redis används som meddelandekö för Sidekiq
- PostgreSQL eller MySQL hanterar databasen
Rails 8 och Kamal för driftsättning
Rails 8 inkluderar Kamal 2 som standardverktyg för driftsättning. Kamal paketerar din app i en Docker-container och deployer den till valfri Linux-server med ett enda kommando. Det ersätter behovet av manuell Nginx-konfiguration och hanterar noll-driftstopp vid uppdateringar, automatiska SSL-certifikat via Let's Encrypt och hantering av sidotjänster som Redis och PostgreSQL.
Med Kamal räcker det med en VPS med SSH-åtkomst. Du kör kamal setup och verktyget konfigurerar servern åt dig. Det gör Rails 8 betydligt mer tillgängligt för utvecklare som inte vill ägna tid åt serveradministration.
Resurskrav för Rails i produktion
Rails är RAM-hungrigt jämfört med PHP. En Rails-process drar typiskt 200 till 400 MB RAM bara för att starta. Rekommendationer:
- Minsta startpunkt: 1 GB RAM. Tillräckligt för att testa och köra en liten app utan bakgrundsjobb.
- Rekommenderat: 2 GB RAM om du kör Sidekiq parallellt med Rails-appen på samma server.
- Mer trafik eller tunga jobb: 4 GB RAM och gärna separata servrar för app och bakgrundsjobb.
PaaS-alternativ som tar bort serverhanteringen
Om du inte vill hantera en server finns det PaaS-plattformar som sköter infrastrukturen åt dig. Render stöder Rails out of the box och erbjuder managed PostgreSQL. Fly.io använder Docker-containers och kör din app nära slutanvändarna geografiskt. Railway är snabbt att komma igång med.
Hatchbox är ett alternativ som kombinerar fördelarna från båda världar. Det är en managed tjänst som kopplar mot din egen VPS hos exempelvis Hetzner eller DigitalOcean. Du äger servern och betalar hårdvarukostnaden direkt, men Hatchbox hanterar deploy-flöde, SSL, Sidekiq och databasuppgradering för 10 dollar per server och månad. Populärt bland soloutvecklare som kör flera Rails-appar på en och samma maskin.
Nackdelarna med rena PaaS-lösningar är kostnad och kontroll. En liten VPS kostar 4 till 6 euro per månad. En PaaS-lösning med databas och bakgrundsjobb landar lätt på 30 till 50 dollar per månad.
Tips vid val av hosting för Rails
- Prototyp eller sidoprojekt: Render eller Railway förenklar driftsättning. Rails 8 och Kamal är ett bra alternativ om du ändå vill köra på egen VPS.
- Liten app med fast budget: En VPS på 2 GB RAM ger bäst pris per krona. Använd Kamal för att slippa manuell serverkonfiguration.
- Vill ha managed utan full PaaS: Hatchbox mot en egen VPS är ett prisvärt mellanalternativ.
- Komplex app med Sidekiq, Redis och hög trafik: Konfigurerade VPS-instanser med separerade tjänster.
Se även vår sammanställning av webbhotell för Ruby och webbhotell för utvecklare för konkreta leverantörer som stöder Ruby-miljöer.