Railway
Railway runs each compose service as a service of its own, so there is no server to look after. In return, less of the security model holds, and the warehouse is Postgres.
What changes on Railway
Section titled “What changes on Railway”Railway attaches a volume to one service only, puts every service of a project on one private network, and has no depends_on (Railway’s compose guide). So:
- The warehouse is
postgres. DuckDB’s hand-off needs a volume shared by three containers, and Railway cannot share one. Switching is one setting. - anfra’s data source and Cerbos’s policies go into their images at
mb build, instead of onto a shared volume. - Secrets come through Railway’s variables, with the
envprovider. - Network separation is gone: every service can reach every other. The database roles, the per-container secrets, Cerbos, the api’s sign-in and the guarded fetcher still hold. The network rules, read-only root filesystems and dropped capabilities do not.
Choose Railway when you want no server more than you want the full security model.