# Skiffly > Skiffly is a self-serve platform (PaaS) for deploying apps and databases: connect a GitHub repository or run `skiffly up`, get a build, a sandboxed container and a domain with TLS. Postgres, MySQL, Redis and MongoDB in one click. Prepaid balance with spend limits; pay by card, PayPal or crypto. Hosted on dedicated servers in the EU. Its CLI, GraphQL API and MCP server are compatible with Railway's, and a Railway project can be imported. Key facts: - Plans: Free $0 (no card; 1 app + 1 database, 512 MB RAM, sleeps after 10 min idle), Hobby $5/month with $5 of usage included, Pro $20/month with $20 included. - Usage rates: $15 per vCPU-month, $8 per GB of RAM per month, $0.12 per GB of volume per month, egress $0.03/GB after 100 GB free; billed per minute from a prepaid balance. - Payment: card, PayPal, crypto; prepaid top-ups, hard spend limits, no surprise invoices. - Builds: Railpack (Node, Next.js, Python, Django, Rails, Go, PHP/Laravel, Bun, static sites) or your Dockerfile; prebuilt Docker images. - Isolation: every service runs in its own sandboxed kernel (gVisor or Kata microVM). - Features: preview environments per pull request, volumes with live resize, daily backups, custom domains, TCP proxy, cron, App Sleeping, config as code, Under Attack Mode. - Tools for AI agents: remote MCP server (OAuth) at https://mcp.skiffly.dev/mcp, CLI `skiffly` (npm), GraphQL API. ## Main pages - [Pricing](https://skiffly.dev/pricing): plans, usage rates, calculator, comparison - [Migrate from Railway](https://skiffly.dev/migrate-from-railway): import a Railway project with its variables - [Skiffly vs Railway](https://skiffly.dev/vs/railway) - [Skiffly vs Heroku](https://skiffly.dev/vs/heroku) - [Templates](https://skiffly.dev/templates): one-click databases and self-hosted apps - [Deploy guides by stack](https://skiffly.dev/deploy/docker): nextjs, node, django, flask, fastapi, rails, go, docker, php-laravel, bun - [Full documentation as one Markdown file](https://skiffly.dev/llms-full.txt) ## Docs: get started - [Skiffly documentation](https://skiffly.dev/docs.md): Skiffly is a self-serve platform for deploying apps and databases from GitHub or a Docker image. Push, get a build and a domain with TLS, pay only for what runs. - [Quick start](https://skiffly.dev/docs/quick-start.md): From a GitHub repository to a running app with a public domain in a few minutes, using the dashboard, the CLI or an AI agent through MCP. ## Docs: guides - [Projects & environments](https://skiffly.dev/docs/guides/projects-environments.md): A project is a canvas of services that belong together. Each project has a production environment and as many others as you need, including one per pull request. - [Services](https://skiffly.dev/docs/guides/services.md): A service is one deployable unit, built from a GitHub repository or pulled as a Docker image. This page covers builders, start commands, health checks, resources, replicas, cron jobs and App Sleeping. - [Node.js](https://skiffly.dev/docs/guides/languages/nodejs.md): How Railpack builds a Node.js service on Skiffly — detection, package managers, the Node version, build and start commands, `PORT`, databases, migrations, health checks and the usual failures. - [Next.js](https://skiffly.dev/docs/guides/languages/nextjs.md): Deploy a Next.js app on Skiffly with Railpack — App Router or Pages, `next start` or standalone output, `NEXT_PUBLIC_*` at build time, Postgres with Prisma or Drizzle, image optimization and caching notes. - [Python & Django](https://skiffly.dev/docs/guides/languages/python-django.md): Deploy Python apps and Django projects on Skiffly with Railpack — pip, uv, Poetry, PDM and Pipenv, the Python version, gunicorn and `PORT`, Postgres and Redis, migrations and `collectstatic`, static files and common errors. - [Flask & FastAPI](https://skiffly.dev/docs/guides/languages/python-flask-fastapi.md): Deploy Flask, FastAPI, Starlette or any WSGI/ASGI app on Skiffly — what Railpack picks as the start command, gunicorn and uvicorn on `PORT`, workers, databases, background tasks and health checks. - [Ruby on Rails](https://skiffly.dev/docs/guides/languages/ruby-rails.md): Deploy Rails and other Ruby apps on Skiffly with Railpack — Bundler, the Ruby version, asset precompilation, `SECRET_KEY_BASE` and `RAILS_MASTER_KEY`, Puma on `PORT`, Postgres and Redis, `db:prepare`, Sidekiq and Active Storage. - [Go](https://skiffly.dev/docs/guides/languages/go.md): Deploy Go services on Skiffly with Railpack — module detection, the Go version, static binaries and CGO, choosing the `cmd/` to build, `PORT`, Postgres and Redis, migrations and health checks. - [PHP & Laravel](https://skiffly.dev/docs/guides/languages/php-laravel.md): Deploy PHP and Laravel apps on Skiffly with Railpack — Composer, the PHP version and extensions, FrankenPHP on `PORT`, `APP_KEY`, MySQL or Postgres, Redis, migrations, queues, the scheduler and storage. - [Bun](https://skiffly.dev/docs/guides/languages/bun.md): Deploy Bun apps on Skiffly with Railpack — how a `bun.lock` changes the build, `bun run start` versus `bun src/index.ts`, `Bun.serve` on `PORT`, Elysia and Hono, databases and the differences from the Node path. - [Docker](https://skiffly.dev/docs/guides/languages/docker.md): Deploy from a Dockerfile or a prebuilt image on Skiffly — when the Dockerfile is used, the build context and `dockerfilePath`, build args and BuildKit secrets, `PORT`, `CMD` versus the start command, health checks, users, volumes and the gVisor/Kata runtimes. - [Static sites](https://skiffly.dev/docs/guides/languages/static-sites.md): Deploy static sites and SPAs on Skiffly — plain HTML with a `Staticfile`, Vite, Astro, SvelteKit, Angular, Create React App, Next.js `output: "export"`, Hugo and Jekyll, the Caddy server Railpack uses, SPA fallbacks, headers and App Sleeping. - [Variables & references](https://skiffly.dev/docs/guides/variables.md): Service variables, shared variables, `${{Service.VAR}}` references between services, and the SKIFFLY_* built-ins every container gets. - [Networking](https://skiffly.dev/docs/guides/networking.md): Generated and custom domains with automatic TLS, private networking between services by name, and public TCP proxies for databases. - [Volumes & databases](https://skiffly.dev/docs/guides/volumes-databases.md): Persistent volumes for services, one-click Postgres, MySQL, Redis and MongoDB from templates, connecting with `skiffly connect`, and backups. - [Deployments](https://skiffly.dev/docs/guides/deployments.md): What happens between a push and a running container, how to read build and runtime logs, redeploy, roll back, cancel, and what each status means. - [Templates](https://skiffly.dev/docs/guides/templates.md): One-click services and stacks: 136 templates for databases, queues, dashboards, CMSs and framework starters, deployable from the dashboard, the CLI or `templateDeployV2`. - [Config as code](https://skiffly.dev/docs/guides/config-as-code.md): Describe a project in `.skiffly/skiffly.ts` with `@skiffly/config`, preview the diff with `skiffly config plan` and reconcile it with `skiffly config apply`. - [CLI](https://skiffly.dev/docs/guides/cli.md): Install the `skiffly` CLI, log in, link a directory and deploy. Commands follow the Railway CLI wherever Skiffly has an analog. - [MCP server](https://skiffly.dev/docs/guides/mcp.md): Give Claude Code, Cursor, Claude Desktop, Codex or any MCP client the ability to deploy, configure and debug apps on Skiffly — hosted with OAuth, or locally through the CLI. - [Public API](https://skiffly.dev/docs/guides/public-api.md): One GraphQL endpoint for everything the dashboard, the CLI and the MCP server do. Token types, rate limits, common operations and Railway compatibility. - [Billing](https://skiffly.dev/docs/guides/billing.md): Prepaid balance topped up with PayPal, card or crypto, a Free plan with no subscription, Hobby and Pro with usage included, per-resource rates, plan changes, spend limits and what happens when the balance runs out. - [Security](https://skiffly.dev/docs/guides/security.md): How tenant code is isolated, how secrets are stored, what the network allows, and how shell access and API tokens are controlled. ## Docs: tutorials - [Publish a site you built with AI (Lovable, Bolt, v0, Cursor, Claude Code)](https://skiffly.dev/docs/tutorials/publish-ai-built-site.md): Your AI tool built the app and it runs on localhost — this is the next step. Put it on the internet with an HTTPS address in about five minutes, then add your own domain, a database or a backend when you need them. - [From localhost to the internet in 5 minutes](https://skiffly.dev/docs/tutorials/localhost-to-internet.md): Your site works at http://localhost:3000 and you want a real link to send to people. What hosting is, why localhost only works on your computer, and the exact commands to put the project online with HTTPS. - [Put a React (Vite) or Next.js project online](https://skiffly.dev/docs/tutorials/deploy-react-vite-nextjs.md): Deploy a React app made with Vite, a Vue or Svelte app, or a Next.js project — static or with a server — from your computer or from GitHub, with environment variables, client-side routing and your own domain. - [Buy a domain and connect it to your site](https://skiffly.dev/docs/tutorials/connect-your-domain.md): How to choose and buy a domain name, where to buy it (including country domains like .com.mx, .com.ar or .uy), and the two DNS records that point it at your site on Skiffly — with HTTPS issued automatically. - [Deploy Next.js with Postgres](https://skiffly.dev/docs/tutorials/deploy-nextjs-postgres.md): A step-by-step tutorial: a Next.js app with Prisma and a Postgres database on Skiffly, from an empty project to a public URL with migrations, using the dashboard, the CLI or an MCP agent. - [Deploy Django with Postgres and Redis](https://skiffly.dev/docs/tutorials/deploy-django-postgres-redis.md): Step by step: a Django project with gunicorn, a Postgres database, Redis for cache and Celery, a worker service and a cron job on Skiffly — CLI, dashboard or MCP, with the expected result of every step. - [Self-host n8n](https://skiffly.dev/docs/tutorials/deploy-n8n.md): Deploy n8n with PostgreSQL on Skiffly from the template in a couple of minutes, then set the webhook URL, a custom domain, an encryption key you keep, backups, upgrades and resource sizing. - [Deploy a Telegram bot](https://skiffly.dev/docs/tutorials/deploy-telegram-bot.md): Run a Telegram bot on Skiffly as a worker service — long polling with grammY (Node) or aiogram (Python), no domain needed — then switch to webhooks with a generated domain, add Postgres for state and keep it from double-polling during deploys. - [Move an app off Heroku, step by step](https://skiffly.dev/docs/tutorials/migrate-from-heroku-step-by-step.md): A worked migration of a typical Heroku app (web + worker dynos, Heroku Postgres, Heroku Redis, Scheduler, config vars, a custom domain) to Skiffly with zero data loss and a controlled DNS cutover. - [A monorepo with config as code](https://skiffly.dev/docs/tutorials/config-as-code-monorepo.md): Describe a pnpm/Turborepo monorepo — a Next.js web app, a Node API, a worker and Postgres — in one `.skiffly/skiffly.ts`, apply it per environment, review changes with `skiffly config plan` in pull requests and deploy from GitHub Actions. ## Docs: migrate - [Migrating from Railway](https://skiffly.dev/docs/guides/migrate-from-railway.md): The concepts map one to one, most API documents run unchanged and the CLI commands have the same names. What to change, in order. - [Migrating from Heroku](https://skiffly.dev/docs/guides/migrate-from-heroku.md): Dynos become services, add-ons become templates with volumes, config vars become variables, the Procfile becomes a start command. A step-by-step move. ## Docs: reference - [GraphQL API reference](https://skiffly.dev/docs/reference/graphql.md): Endpoint, authentication headers and every root query and mutation of the Skiffly API. The full SDL is available by introspection. - [CLI commands](https://skiffly.dev/docs/reference/cli.md): Every `skiffly` command with its flags. Global target flags `-p/--project`, `-e/--environment`, `-s/--service` accept an id or a name. - [MCP tools](https://skiffly.dev/docs/reference/mcp-tools.md): The 41 tools of the Skiffly MCP server with their arguments. Service and environment arguments accept an id, slug or name; `environmentId` defaults to production. - [Deployment statuses](https://skiffly.dev/docs/reference/statuses.md): Every value of `DeploymentStatus`, what it means on Skiffly, what you can do in that state and how the dashboard, CLI and MCP show it. - [Plans & limits](https://skiffly.dev/docs/reference/plan-limits.md): What each plan includes, the hard limits per service and workspace, and the platform limits that apply to everyone. - [Environment variables](https://skiffly.dev/docs/reference/environment-variables.md): The `SKIFFLY_*` variables injected into every container, how they map to Railway's `RAILWAY_*`, and the variables the CLI and MCP server read. ## Optional - [Documentation in Spanish](https://skiffly.dev/es/docs) - [Documentation in Brazilian Portuguese](https://skiffly.dev/pt-BR/docs) - [Guides: publish a website for free, in Spanish](https://skiffly.dev/es/guides) and [in Brazilian Portuguese](https://skiffly.dev/pt-BR/guides): HTML, AI-built sites, school projects, common errors - [Terms](https://skiffly.dev/terms), [Privacy](https://skiffly.dev/privacy), [Acceptable use](https://skiffly.dev/aup), [Refunds](https://skiffly.dev/refunds)