Deploy button
Add a Deploy to Simplifyd button to a GitHub README so anyone can run your project on Simplifyd Cloud.
A Deploy to Simplifyd button sends whoever clicks it to the dashboard with your repository's stack ready to deploy. They choose a workspace and project, fill in any settings you ask for, and the services are created for them.
Adding the button
- Add a
simplifyd.jsonto the root of your repository (see below). - Add this to your
README.md, with your repository's URL:
[](https://console.cloud.simplifyd.com/deploy?repo=https://github.com/OWNER/REPO)The repository must be public. To point at a branch, a tag, or a directory other than the root, use its GitHub URL:
| Link to | repo= |
|---|---|
| The default branch | https://github.com/OWNER/REPO |
| A tag or branch | https://github.com/OWNER/REPO/tree/v1.2.0 |
| A directory in it | https://github.com/OWNER/REPO/tree/main/deploy |
A branch whose name contains a / cannot be named this way. Link to a tag instead.
simplifyd.json
simplifyd.json describes your stack in the same form as a template: a list of services with their images, sizes, variables, public ports, files and storage.
{
"name": "Acme",
"description": "The Acme app and its database.",
"services": [
{
"key": "db",
"type": "postgres",
"postgres": { "storage_gb": 5 }
},
{
"key": "web",
"type": "docker",
"vcpus": 1,
"memory": 512,
"docker": { "image": "ghcr.io/acme/app", "tag": "1.4.0" },
"variables": [
{ "name": "DATABASE_URL", "value": "${{db.DATABASE_URL}}" },
{ "name": "SESSION_SECRET", "value": "${{secret(32)}}" },
{ "name": "STRIPE_KEY", "value": "", "description": "Your Stripe secret key." }
],
"ingress": [{ "port": 8080, "protocol": "HTTP" }],
"configs": [
{ "name": "nginx", "content": "@file:deploy/nginx.conf", "mount_path": "/etc/nginx/nginx.conf" }
]
}
]
}- Services can be
docker,postgresoremail. Each needs akey, which names the service and is how other services refer to it. - Images must be public, such as on GitHub Container Registry or Docker Hub. Registry credentials are refused. Simplifyd does not build your repository yet, so publish an image and name it here.
- Variables can reference other services, such as
${{db.DATABASE_URL}}, and generate secrets that are unique to each deploy, such as${{secret(32)}}. Every reference must name a variable that will exist. - Settings to ask for: leave a variable's
valueempty and the person deploying is asked for it, with yourdescriptionas help. Add"optional": trueif it can be left empty. - Files: a config's
contentcan be@file:and a path, relative tosimplifyd.json, to mount a file from the repository. nameis optional and defaults to the repository's name.
Unknown fields are an error, so a misspelt setting is reported rather than ignored.
What the person deploying sees
The deploy page shows your repository, every service it will create with its size, and the settings you ask for. Nothing is created until they click Deploy. Services are then created in the project they chose and start when they deploy them from the canvas.
If simplifyd.json changes between when they open the page and when they click Deploy, the deploy is refused and they are asked to review it again.
Never put a real secret in simplifyd.json: your repository is public. Leave the value empty so it is asked for, or generate it with ${{secret(32)}}.