ASTRODOCK Install

Features · Secrets & config

Nothing sensitive in the repository.

Your app names the variables it needs. The values live on the platform and arrive at deploy — which matters more than ever when something else is writing the code.

app.json names, no values your platform encrypted at rest running app env vars declares injects

What that buys you

01

No .env to leak

There's no secrets file in the working tree, so there's none to commit by accident or paste into a chat window.

02

Safe to hand to an agent

Your agent writes the manifest and commits it. It contains variable names and nothing else, so the repository stays clean by construction.

03

Never half-configured

A missing required value stops the deploy before it starts and says which one. Your users don't meet a broken app.

Two kinds of variable

Yours and the platform's.

Everything the platform supplies carries a reserved prefix — the app's URL, the port to bind, the database connection string, and the addresses it needs for sign-in. Your own variables can't use that prefix, so there's never a question about where a value came from.

Which means an app can read its own address instead of being told, and can be moved to a different domain without touching a line.

The full variable list →
You declare STRIPE_SECRET_KEY · required · secret
The platform injects ASTRODOCK_DATABASE_URL
ASTRODOCK_APP_URL · ASTRODOCK_PORT
Missing a value Deploy blocked — STRIPE_SECRET_KEY has no value

The reserved set

What arrives without asking.

Present when the manifest asks for the matching resource. Your own variables may not use the reserved prefix, so the two can never be confused.

VariableWhenWhat it is
ASTRODOCK_PORTAlwaysThe port your server must bind
ASTRODOCK_APP_URLAlwaysYour app's public address
ASTRODOCK_DATABASE_URLdatabase ≠ nonePostgres connection string
ASTRODOCK_STORAGE_*storage ≠ noneEndpoint, bucket, keys
ASTRODOCK_AUTHORIZE_URLauth = platformWhere to send a browser to sign in