Kinds of stores
Postgres
A Postgres database with daily backups and restore to any moment of the last 7 days.
Redis
A Redis-compatible cache and queue (Valkey), kept on disk.
Files
An S3-compatible bucket for uploads and assets, billed by what it holds.
A store belongs to an org and runs in one region. Projects of the same org and region can connect to it. Postgres and Redis stores only accept connections from the apps of the projects connected to them. A Files bucket is guarded by its keys, which only connected projects get.
Find your stores
In the panel, click Storage in the sidebar. The page lists the org’s stores with their type, status, region, connected projects and how full they are. Use the tabs above the list to show one kind, or search, filter by Status, Group and Sort the list. Click a store to open its page. It has these tabs:Create a store
1
Open the dialog
On the Storage page, click Create store.
2
Pick a kind
Choose Postgres, Redis or Files.
3
Name it
Use 3 to 40 lowercase letters, digits or
-. The name must be unique in the org.4
Pick a region
The Region field only shows when there is more than one region. Otherwise the store goes to the default region. Only projects in the same region can connect to the store.
5
Pick a size
For Postgres and Redis, choose the Size. Files has no size.
6
Create it
Click Create store. The store’s page opens. It shows Provisioning until the store is ready.
Connect a store to a project
You can start from either side:- From the store: open its Projects tab and click Connect project.
- From the project: open the project’s Storage tab and click Connect store.
- Environments: Production, Preview or both. Both are ticked by default.
- Env var prefix (optional): a prefix for every env var name, for example
ANALYTICS_turnsDATABASE_URLintoANALYTICS_DATABASE_URL.
How the env vars reach your apps
- They are runtime env vars: your Ktor servers get them when they start. Builds don’t get them.
- They are always secret.
- They apply on the next deployment of each connected environment.
- If the project already sets a variable with the same name, the project’s own value wins. The panel shows a warning on the store’s Projects tab and on the project’s Storage tab.
- Two stores can’t give a project the same env var in the same environment. To connect a second Postgres store to a project, give one of the two connections a prefix.
The store’s Overview tab lists the names under Connection. Members with the Developer role can click Reveal values to see and copy them, and to get them as a
.env block.
Prefixes
A prefix is up to 32 uppercase letters, digits or_, and starts with a letter. It can’t start with ATOLL. The platform puts it in front of each name as it is, so end it with _: CACHE_ gives CACHE_REDIS_URL, CACHE gives CACHEREDIS_URL.
Previews
Change or disconnect
On the store’s Projects tab, click Change next to a project to pick other environments or another prefix. Click Disconnect to remove the connection. After you disconnect a project, a Postgres or Redis store no longer accepts new connections from its apps. The apps lose the env vars on their next deploy. The store and its data stay.Store status
The usage on the Overview tab is measured about once an hour.
Resize a store
Postgres and Redis stores can grow. Files stores have no size to change.1
Open the settings
Open the store’s Settings tab. The Capacity section shows the current size.
2
Pick a new size
Click Resize and pick a larger size. The dialog says what the resize does.
3
Resize
Click the dialog’s button, for example Resize to 10 GB disk. The store shows Resizing until it is done.
- The store must be Ready. While it resizes, it can’t be resized again or restored.
- Sizes only grow. You can’t make a store smaller again.
- The store is billed at the new size from then on.
- A Postgres store may restart once, a Redis store always does. See Postgres and Redis.
- On the free plan, stores keep the smallest size.
Rotate credentials
To replace a store’s password (Postgres, Redis) or keys (Files), for example after they leaked, open its Settings tab and click Rotate credentials under Access.Delete a store
Open the store’s Settings tab, click Delete store under Danger zone and type the store’s name to confirm. Every connected project is disconnected. Their apps lose the store’s env vars on their next deploy. A store also holds other things in place:- An org that has stores can’t be deleted. Delete its stores first.
- A project connected to stores can’t move to another region. Disconnect the stores first.
- Deleting a project disconnects it from its stores.
Roles
See Teams for how roles work.
Limits and plans
- An org can have up to 10 stores, on any plan.
- On the free plan, an org gets one store of each kind, at the smallest size: Postgres with 1 GB disk, Redis with 256 MB memory, and Files up to 1 GB. Add a payment method to switch to pay as you go for more and larger stores.
- On pay as you go, stores can have any size.
- When billing holds the org back (a used-up free amount, a reached spend limit, a failed payment or no payment method), its stores keep running. You can’t create or grow stores until that is resolved.
Billing
Stores are billed for disk only, on the Storage meter in GB-months, together with the storage of your deployments. Their CPU and memory aren’t billed.
The platform reports store usage every hour. See Billing for the free amount and the price.
Command line
Theatoll CLI has no storage commands. Use the panel to create, connect and manage stores.
On a self-hosted server, stores need Kubernetes. Without it, the Storage page says so. Operators set it up as described in Storage.