# 5050cloud > Railway's developer experience on servers you own. One command turns any Linux VM into a canvas of services with git deploys, databases, logs and rollbacks. Open source. ## Get started - [Quick start](https://5050cloud.com/docs/quick-start.md): Install 5050cloud on a Linux VM, open the console, deploy a GitHub repo and add Postgres in about five minutes. - [The basics](https://5050cloud.com/docs/basics.md): 5050cloud organises your apps into projects, environments, services and deployments, the same way Railway does, and runs them on hosts you own. - [Coming from Railway](https://5050cloud.com/docs/coming-from-railway.md): 5050cloud follows Railway names, variables and config files, so most projects move over unchanged; this page lists every difference in v0.1. - [Production checklist](https://5050cloud.com/docs/production-checklist.md): Work through this list before you put real traffic on a 5050cloud install. ## Guides - [Deploy from GitHub](https://5050cloud.com/docs/guides/deploy-from-github.md): Connect a GitHub repo to a service and 5050cloud builds and deploys every push to its branch. - [Deploy a Docker image](https://5050cloud.com/docs/guides/deploy-docker-image.md): Run any public or private Docker image as a service, with the same variables, domains and scaling as a built service. - [Deploy with the CLI](https://5050cloud.com/docs/guides/deploy-with-cli.md): `5050 up` uploads the current directory, builds it on your hosts and streams the logs until the deploy is live. - [Config as code](https://5050cloud.com/docs/guides/config-as-code.md): Keep a service's build and deploy settings in your repo with `railway.json`, `railway.toml`, `5050.yaml` or `5050.json`. - [Import from Railway](https://5050cloud.com/docs/guides/import-from-railway.md): Bring a whole Railway project over as staged changes: services, sources, settings, variables, domains, volumes and databases. - [Move a database from Railway](https://5050cloud.com/docs/guides/move-database-from-railway.md): Copy a database from Railway into a 5050cloud database service with one pipe through `5050 connect`. - [Import Docker Compose](https://5050cloud.com/docs/guides/import-docker-compose.md): Turn a `docker-compose.yml` into services on the canvas, staged for you to review before anything deploys. - [Templates and the Deploy on 5050cloud button](https://5050cloud.com/docs/guides/templates.md): Deploy ready-made apps such as n8n, Umami or Uptime Kuma in one click, and add a Deploy on 5050cloud button to your own README. - [Add Postgres, MySQL, Redis or MongoDB](https://5050cloud.com/docs/guides/databases.md): Add a database in one click; it gets a volume, generated credentials and the same variable names Railway uses. - [Variables and references](https://5050cloud.com/docs/guides/variables.md): Set environment variables per service, share them across an environment, and reference other services with `${{Service.VAR}}`. - [Staged changes and environment sync](https://5050cloud.com/docs/guides/staged-changes.md): Edits collect as staged changes that you review as a diff and apply together with one Deploy, and Sync copies changes between environments. - [Custom domains and HTTPS](https://5050cloud.com/docs/guides/custom-domains.md): Every service can have a generated domain and your own domains, each with an automatic Let's Encrypt certificate. - [Use all cores](https://5050cloud.com/docs/guides/use-all-cores.md): Run one process per vCPU in each replica so single-threaded runtimes like Node use every core of the host. - [Add a host](https://5050cloud.com/docs/guides/add-a-host.md): Join another Linux VM with one command to run more replicas, databases or builds, or to add a second public entry point. - [Replicas and zero-downtime deploys](https://5050cloud.com/docs/guides/replicas-zero-downtime.md): Run several replicas of a service across your hosts and deploy new versions without dropping requests. - [Health checks](https://5050cloud.com/docs/guides/health-checks.md): A health check tells 5050cloud when a new deployment is ready for traffic and when a running replica should be taken out of routes. - [Rollbacks](https://5050cloud.com/docs/guides/rollbacks.md): Roll back to an earlier deployment and get its exact image and the variables it ran with. - [Cron jobs](https://5050cloud.com/docs/guides/cron-jobs.md): Run a service on a schedule instead of keeping it running. - [Volumes](https://5050cloud.com/docs/guides/volumes.md): Give a service persistent storage that survives deploys and restarts. - [Backups and restore to a copy](https://5050cloud.com/docs/guides/backups.md): Back up databases and volumes to any S3-compatible bucket, and restore to a new copy at a point in time without touching the original. - [Database major upgrades](https://5050cloud.com/docs/guides/database-major-upgrades.md): Move a database to a new major version by restoring a dump into a copy, then promoting it. - [Monorepos and watch paths](https://5050cloud.com/docs/guides/monorepos.md): Deploy several services from one repo, each from its own directory, and build only the ones whose files changed. - [Pre-deploy migrations](https://5050cloud.com/docs/guides/pre-deploy.md): Run a command such as a database migration before each new version starts serving. - [Private networking](https://5050cloud.com/docs/guides/private-networking.md): Services in one environment reach each other by name over a private network that spans every host. - [Quarantined environments](https://5050cloud.com/docs/guides/quarantined-environments.md): Block outbound internet traffic from an environment, with an allowlist, while its private network keeps working. - [Monitors and alerts](https://5050cloud.com/docs/guides/monitors.md): Get an email or webhook when a service's CPU, memory, disk or error rate stays above a threshold. - [Email and notifications](https://5050cloud.com/docs/guides/email-notifications.md): Send password resets, invites and alerts by email, choose which events reach you, and receive signed webhooks. - [Members, roles and 2FA](https://5050cloud.com/docs/guides/members-roles-2fa.md): Invite people with a role, limit them per project, and require two-factor authentication. - [Upgrading and host maintenance](https://5050cloud.com/docs/guides/upgrading.md): Upgrade 5050cloud with one command that reverts itself if the new version is unhealthy, and take hosts out for OS work without downtime. - [Backing up the control plane](https://5050cloud.com/docs/guides/control-plane-backup.md): The control plane keeps all projects, settings and encrypted variables in one database that is snapshotted hourly and, with a bucket, streamed continuously. - [Rebuild the control host](https://5050cloud.com/docs/guides/rebuild-control-host.md): If the control host is lost, install on a new VM with `--restore` and the cluster comes back from your bucket. - [Rotate the master key](https://5050cloud.com/docs/guides/rotate-master-key.md): Replace the key that encrypts every secret in the control plane, for example after someone with host access leaves. - [Behind Cloudflare](https://5050cloud.com/docs/guides/behind-cloudflare.md): Proxy your domains through Cloudflare while 5050cloud keeps issuing certificates and sees real client IPs. - [Troubleshooting failed deploys](https://5050cloud.com/docs/guides/troubleshooting.md): Every failed or crashed deployment shows one sentence that names the cause; this page explains each one and what to do. ## Reference - [Install options](https://5050cloud.com/docs/reference/install-options.md): Every flag of the installer, each also readable from a `FIFTY_` environment variable. - [Service settings](https://5050cloud.com/docs/reference/service-settings.md): Every setting a service has, with its default and the Railway setting it matches. - [Config file schema](https://5050cloud.com/docs/reference/config-file.md): The fields `railway.json`, `railway.toml`, `5050.yaml` and `5050.json` accept, with what each one sets. - [Variables reference](https://5050cloud.com/docs/reference/variables.md): The variables 5050cloud provides to every replica, their Railway aliases, the reference syntax and the variables that change settings. - [Deployment statuses](https://5050cloud.com/docs/reference/deployment-statuses.md): The labels a deployment shows on the card, in the panel, in the CLI and in webhooks, and what each one means. - [Log filter syntax](https://5050cloud.com/docs/reference/log-filters.md): Filter deploy, build and HTTP logs in the console and with `5050 logs -f` using Railway's filter syntax. - [Templates](https://5050cloud.com/docs/reference/templates.md): The database and app templates that ship with 5050cloud v0.1. - [API](https://5050cloud.com/docs/reference/api.md): The 5050cloud REST API serves everything the console and the CLI do, with the same roles and audit log. - [Agent protocol](https://5050cloud.com/docs/reference/agent-protocol.md): Agents connect out to the control plane over one WebSocket and reconcile their host to the desired state they receive. - [Architecture](https://5050cloud.com/docs/reference/architecture.md): 5050cloud is a control plane, an agent on every host, and Caddy, a registry and BuildKit run as containers by the agent. - [Security model](https://5050cloud.com/docs/reference/security-model.md): How 5050cloud protects the console, the hosts, your secrets and your builds. - [Ports and firewall](https://5050cloud.com/docs/reference/ports-firewall.md): The ports 5050cloud needs open, and the firewall rules it manages on each host. - [Limits](https://5050cloud.com/docs/reference/limits.md): The numbers 5050cloud v0.1 is built and tested for. - [Honest limits](https://5050cloud.com/docs/reference/honest-limits.md): What 5050cloud v0.1 does not do, said plainly, with what to do about each one. ## Templates - [MongoDB](https://5050cloud.com/docs/databases/mongodb.md): Document database with daily compressed dumps. - [MySQL](https://5050cloud.com/docs/databases/mysql.md): The popular relational database. Backups are not supported yet. - [Postgres with pgvector](https://5050cloud.com/docs/databases/pgvector.md): Postgres with the pgvector extension for embeddings and similarity search. - [Postgres with PostGIS](https://5050cloud.com/docs/databases/postgis.md): Postgres with PostGIS for geographic data. - [Postgres](https://5050cloud.com/docs/databases/postgres.md): The open source relational database, with continuous backups and point-in-time restore. - [Redis](https://5050cloud.com/docs/databases/redis.md): In-memory key-value store with append-only persistence. - [Directus](https://5050cloud.com/docs/templates/directus.md): Headless CMS and data platform on Postgres, with Redis caching. - [Ghost](https://5050cloud.com/docs/templates/ghost.md): Publishing platform for blogs and newsletters, backed by MySQL. - [Gitea](https://5050cloud.com/docs/templates/gitea.md): Lightweight Git hosting with issues and pull requests, backed by Postgres. - [Meilisearch](https://5050cloud.com/docs/templates/meilisearch.md): Fast, typo-tolerant search engine with a simple API. - [Metabase](https://5050cloud.com/docs/templates/metabase.md): Business intelligence and dashboards, with its settings in Postgres. - [MinIO](https://5050cloud.com/docs/templates/minio.md): S3-compatible object storage with a web console. - [n8n](https://5050cloud.com/docs/templates/n8n.md): Workflow automation you host yourself, backed by Postgres. - [Plausible CE](https://5050cloud.com/docs/templates/plausible.md): Lightweight, cookie-free web analytics with Postgres and ClickHouse. - [Umami](https://5050cloud.com/docs/templates/umami.md): Simple, privacy-focused web analytics, backed by Postgres. - [Uptime Kuma](https://5050cloud.com/docs/templates/uptime-kuma.md): Self-hosted uptime monitoring with status pages. ## CLI - [CLI overview](https://5050cloud.com/docs/cli/overview.md): The `5050` CLI deploys, inspects and manages your services from a terminal or CI, and also answers to `railway`. - [Global options](https://5050cloud.com/docs/cli/global-options.md): Every `5050` command accepts the same options for picking a project, environment and service, for JSON output and for skipping prompts. - [The railway alias](https://5050cloud.com/docs/cli/railway-alias.md): The `5050` binary also answers to `railway`, so scripts and habits built on Railway's CLI keep working. - [5050 login](https://5050cloud.com/docs/cli/login.md): Log the CLI in to a 5050cloud console and store an API token. - [5050 logout](https://5050cloud.com/docs/cli/logout.md): Remove the stored token for the current console. - [5050 whoami](https://5050cloud.com/docs/cli/whoami.md): Print the user and console the CLI is logged in to. - [5050 init](https://5050cloud.com/docs/cli/init.md): Create a project and link this directory to it. - [5050 link](https://5050cloud.com/docs/cli/link.md): Link this directory to a project, environment and service. - [5050 unlink](https://5050cloud.com/docs/cli/unlink.md): Remove the link between this directory and a project. - [5050 status](https://5050cloud.com/docs/cli/status.md): Show the linked project, environment and service, with its status and URL. - [5050 list](https://5050cloud.com/docs/cli/list.md): List the projects you can see. - [5050 open](https://5050cloud.com/docs/cli/open.md): Open the project canvas in your browser. - [5050 up](https://5050cloud.com/docs/cli/up.md): Upload this directory and deploy it into the linked service, streaming the logs. - [5050 redeploy](https://5050cloud.com/docs/cli/redeploy.md): Redeploy the active deployment of the linked service. - [5050 restart](https://5050cloud.com/docs/cli/restart.md): Restart the active deployment's containers, one replica at a time. - [5050 down](https://5050cloud.com/docs/cli/down.md): Remove the active deployment of the linked service. - [5050 deploy](https://5050cloud.com/docs/cli/deploy.md): Add a template to the linked project and deploy it. - [5050 templates](https://5050cloud.com/docs/cli/templates.md): List or search the templates this install ships. - [5050 add](https://5050cloud.com/docs/cli/add.md): Add a service: a database, a GitHub repo, a Docker image or an empty service. - [5050 import](https://5050cloud.com/docs/cli/import.md): Import a Railway project, a Docker Compose file or Heroku variables. - [5050 logs](https://5050cloud.com/docs/cli/logs.md): Print deploy, build or HTTP logs, following them on a terminal. - [5050 variables](https://5050cloud.com/docs/cli/variables.md): List, set and delete the linked service's variables. - [5050 run](https://5050cloud.com/docs/cli/run.md): Run a local command with the service's resolved variables. - [5050 shell](https://5050cloud.com/docs/cli/shell.md): Open a local subshell with the service's variables loaded. - [5050 ssh](https://5050cloud.com/docs/cli/ssh.md): Open a shell inside a running replica. - [5050 connect](https://5050cloud.com/docs/cli/connect.md): Open psql, mysql, redis-cli or mongosh against a database through a local tunnel. - [5050 domain](https://5050cloud.com/docs/cli/domain.md): Generate a domain or add a custom domain for the linked service. - [5050 tcp-proxy](https://5050cloud.com/docs/cli/tcp-proxy.md): Expose a TCP port of the linked service on a public port. - [5050 environment](https://5050cloud.com/docs/cli/environment.md): Switch, create, sync and inspect environments. - [5050 service](https://5050cloud.com/docs/cli/service.md): Switch the linked service or change a service. - [5050 scale](https://5050cloud.com/docs/cli/scale.md): Set the number of replicas for the linked service. - [5050 volume](https://5050cloud.com/docs/cli/volume.md): List, add, delete or wipe the linked service's volume. - [5050 cron](https://5050cloud.com/docs/cli/cron.md): List cron runs of the linked service or start one now. - [5050 metrics](https://5050cloud.com/docs/cli/metrics.md): Print CPU, memory, network and HTTP summaries for the linked service. - [5050 usage](https://5050cloud.com/docs/cli/usage.md): Show resource usage for a period and what it would cost on Railway. - [5050 config](https://5050cloud.com/docs/cli/config.md): Export an environment's services and settings to a file. - [5050 host](https://5050cloud.com/docs/cli/host.md): Add, list, drain and maintain hosts. - [5050 upgrade](https://5050cloud.com/docs/cli/upgrade.md): Upgrade the install: the control plane first, then each agent. - [5050 alias](https://5050cloud.com/docs/cli/alias.md): Install or remove the `railway` symlink to this CLI. - [5050 completion](https://5050cloud.com/docs/cli/completion.md): Print a shell completion script. - [5050 version](https://5050cloud.com/docs/cli/version.md): Print the CLI version. ## Compare - [5050cloud and Railway](https://5050cloud.com/docs/compare/railway.md): Railway is a managed platform; 5050cloud brings its workflow to servers you run, with trade-offs in both directions. - [5050cloud and Coolify](https://5050cloud.com/docs/compare/coolify.md): Coolify is a popular self-hosted panel; 5050cloud differs in its Railway-style canvas, references between services and built-in multi-host load balancing. - [5050cloud and Dokploy](https://5050cloud.com/docs/compare/dokploy.md): Dokploy runs on Docker Swarm; 5050cloud runs its own agent on plain Docker with a WireGuard mesh and needs no external registry. - [5050cloud and Kamal](https://5050cloud.com/docs/compare/kamal.md): Kamal deploys containers from your laptop or CI over SSH; 5050cloud is a running platform with a console, databases and backups. - [5050cloud and Dokku](https://5050cloud.com/docs/compare/dokku.md): Dokku is a long-standing single-host Heroku-style tool driven by git push and a CLI; 5050cloud adds a web canvas and multi-host replicas. - [5050cloud and a plain VPS](https://5050cloud.com/docs/compare/vps.md): Running apps on a VPS by hand is cheapest in software but costs time; 5050cloud automates the parts that take it. ## Contribute - [Building from source](https://5050cloud.com/docs/contribute/build-from-source.md): Build the control plane, the agent, the CLI, the console and this site from a clone of the repo. - [The Makefile](https://5050cloud.com/docs/contribute/makefile.md): Every routine task in the repo is a `make` target; `make help` lists them. - [Writing a template](https://5050cloud.com/docs/contribute/writing-a-template.md): A template is a directory in `templates/` with a manifest that describes the services to create, their images, volumes, variables and inputs.