---
title: "Deploy xprem"
description: "An open-source Go implementation of the Expo Updates protocol"
category: "Other"
url: https://railway.com/deploy/expo-open-ota
---

# Deploy xprem

An open-source Go implementation of the Expo Updates protocol

**[Deploy xprem on Railway](https://railway.com/template/expo-open-ota)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/expo-open-ota/manifest.json

- **Creator:** Axel Marciano's Projects
- **Category:** Other
- **Total deploys:** 66

## Template content

### Expo-Open-OTA https://github.com/axelmarciano/expo-open-ota/blob/main/docs/static/img/logo.png?raw=true

- **Image:** ghcr.io/mercuretechnologies/xprem
- **Health check:** /hc
- **Public domain:** Yes

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

## Buckets

- **Bucket**

## Documentation

# Deploy and Host xprem on Railway

xprem is an open-source, self-hosted server for over-the-air updates in Expo apps, implementing the official Expo Updates protocol. It brings a web dashboard, multi-app support, progressive rollouts, instant rollbacks and one-command publishing, and serves update files from your own storage bucket, optionally behind your own CDN.

## About Hosting xprem

This template deploys the update server in control plane mode together with a PostgreSQL database. On first boot the server runs its migrations, seeds your admin account from the `ADMIN_EMAIL` and `ADMIN_PASSWORD` variables, and the dashboard becomes available on your Railway domain. Secrets like the JWT secret and the database master key are generated automatically at deploy time. You connect a storage bucket (S3, Google Cloud Storage, Cloudflare R2, MinIO or DigitalOcean Spaces) for the update artifacts, then publish from your terminal or CI with the eoas CLI. The server is stateless, so it scales horizontally on Railway without extra configuration.

## Common Use Cases

- Cut OTA update costs: EAS Update pricing grows with your monthly active users, while a self-hosted server delivers unlimited updates to unlimited devices for the price of your infrastructure.
- Host every Expo app of your team or agency on a single server, each with its own branches, channels, API tokens and update history, managed from one dashboard.
- Keep update delivery on infrastructure you control for compliance and data-ownership requirements, with updates stored in your bucket and served through your own CDN and security policies.

## Dependencies for xprem Hosting

- PostgreSQL (included in this template), used by the control plane for apps, users, channels and rollouts
- An object storage bucket for update artifacts: AWS S3, Google Cloud Storage, Cloudflare R2, MinIO or DigitalOcean Spaces

### Deployment Dependencies

- [Documentation](https://mercure-technologies.gitbook.io/xprem)
- [Getting started in control plane mode](https://mercure-technologies.gitbook.io/xprem/controle-plane-mode/getting-started)
- [GitHub repository](https://github.com/mercuretechnologies/xprem)
- [eoas CLI on npm](https://www.npmjs.com/package/eoas)
- [Expo Updates protocol](https://docs.expo.dev/technical-specs/expo-updates-1/)

### Implementation Details

Once the server is deployed, wire your Expo project to it and ship your first update:

```bash
npx eoas init
npx eoas publish --branch production
```

Rollbacks, republishing and progressive rollouts (for example `--rollout-percentage 10`) are one command too, and everything is also manageable from the dashboard.

## Why Deploy xprem on Railway?


Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying xprem on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/expo-open-ota
