Skip to content

Regions

A region is a Railway datacenter. Services, Volumes, Postgres, MySQL, and Mongo take region as a Google-style code (us-west2, us-east4, …). Buckets use a shorter set (sjc, iad, ams, sin). A Project is not pinned to a region.

Omit region and Railway picks the default for that resource.

export default class Api extends Railway.Service<Api>()(
"Api",
{
project: Site,
main: import.meta.url,
region: "us-west2",
port: 3000,
},
Effect.gen(function* () {
return {
fetch: Effect.succeed(HttpServerResponse.text("hello")),
};
}),
) {}

Updating region on a Service is in place.

Postgres region is shared by the service instance and its Volume. Changing it replaces Postgres.

const db = yield* Railway.Postgres("Db", {
project: site,
region: "us-west2",
});

A Volume is created in one region. Changing region replaces the Volume. Attach it to a Service in the same region.

const data = yield* Railway.Volume("Data", {
project: site,
mountPath: "/data",
region: "us-west2",
});

Buckets speak S3. Their region codes are short:

const data = yield* Railway.Bucket("Data", {
project: site,
region: "sjc",
});

Default is sjc. Changing region replaces the Bucket.

Code Location
sjc San Jose, California (US)
iad Ashburn, Virginia (US)
ams Amsterdam, Netherlands
sin Singapore

Railway uses Google Cloud region names for compute. This list is what Railway published as of 2026. See Railway regions for the live set.

Code Location
us-west1 Oregon, USA
us-west2 California, USA
us-east4 Virginia, USA
europe-west4 Amsterdam, Netherlands
asia-southeast1 Singapore

Services pin region on the class. Volumes replace on region change. Postgres is a container + volume in one region. Buckets use sjc / iad / ams / sin.