Deployment.sh

Cloud server management integrations for your clouds, git hosts and team tools

Deployment connects to the services you already pay for instead of replacing them. Nine cloud providers for servers, three git hosts plus any git URL for code, Slack and Discord for alerts, any S3-compatible bucket for backups and outgoing webhooks for everything else. Each integration uses credentials you create and can revoke on your side.

Two developers at a standing desk comparing server regions on a laptop with a world map sketched on a whiteboard behind

Why integrations decide whether a panel fits

A server panel that only works with one cloud or one git host forces a migration before you even start. Teams usually have servers in two or three providers, code in one git host and alerts in a chat tool. The value of a deployment platform comes from tying those together without moving anything.

Cloud providers

Connect a provider account with an API token, then create servers in your own account from the Deployment panel. Your provider bills you directly. Servers on any provider not listed here connect over SSH through vps management.

Hetzner Cloud

Create servers in every Hetzner location with x86 or ARM types, attach a Hetzner firewall and your SSH key. Use a project API token with read and write rights for the project you want Deployment to use.

DigitalOcean

Create Droplets in any region, with a cloud firewall and your SSH key added at creation. A personal access token with scoped write permissions for Droplets and firewalls is enough.

AWS

Launch EC2 instances in the region and subnet you choose, with a security group and key pair. Create an IAM user or role with a policy limited to the EC2 actions Deployment needs, published in the deployment platform docs.

Vultr

Create cloud compute and high frequency instances in any Vultr location with an API key restricted to the IP addresses Deployment connects from.

Linode

Create Linodes on Akamai's cloud and attach a cloud firewall, using a personal access token scoped to Linodes and firewalls.

Google Cloud

Create Compute Engine VMs and firewall rules in one project, using a service account key with the Compute Instance Admin role on that project only.

OVH Public Cloud

Create instances in your OVH Public Cloud project with an application key, secret and consumer key limited to that project.

UpCloud

Create cloud servers in all UpCloud zones with an API subaccount that has server permissions only.

Scaleway

Create instances in Paris, Amsterdam and Warsaw zones with an API key bound to one project.

Developer sketching branch lines on a window with a grease pencil in a cramped loft workspace at night, laptop and bike in the background

Git hosts

Deployment clones your code on your servers and listens for pushes. Read how releases are built on deploy from git.

  • GitHub, through a GitHub App installed on chosen repositories, or a deploy key per repository
  • GitLab, on gitlab.com or your own instance, with a project access token or a deploy key
  • Bitbucket Cloud, with an app password or an access token and a deploy key
  • Any git URL over SSH, such as Gitea, Forgejo or a bare repository, with a read-only deploy key

Chat and alert channels

Deploy results, failed health checks, uptime incidents and resource alerts go to the channels your team watches.

  • Slack, through an incoming webhook per channel, with separate channels per server or site if you want
  • Discord, through a channel webhook
  • Email to any address in your organization
  • Outgoing webhooks for PagerDuty, Opsgenie, Microsoft Teams or your own tools

S3-compatible backup storage

Backups go to a bucket you own on any S3-compatible service: AWS S3, Hetzner Object Storage, DigitalOcean Spaces, Backblaze B2, Wasabi, Cloudflare R2, Scaleway Object Storage, OVH Object Storage or a self-hosted MinIO. Provide an endpoint, bucket and access key with write rights to that bucket. Retention rules delete old copies, and restore pulls the archive back to the same or another server.

Outgoing webhooks

Every important event can be posted as signed JSON to an HTTPS endpoint of your choice: deploy started, succeeded, failed and rolled back, server created and provisioned, health check failed, uptime check down and recovered, backup completed and failed. Each request carries an HMAC signature header so your endpoint can verify it. The payload format is documented on the deployment api page.

json
{
  "event": "deployment.succeeded",
  "site": "api",
  "environment": "production",
  "commit": "9f2c1e7",
  "duration_seconds": 48
}

DNS providers for wildcard certificates

Wildcard Let's Encrypt certificates need DNS validation. Deployment supports DNS API tokens from Cloudflare, DigitalOcean, Hetzner DNS, AWS Route 53, Google Cloud DNS and OVH, used only to create and remove the validation record.

Which plan includes which integrations

Every integration on this page is in every plan. Plans differ in capacity: Starter at 49 USD a month (24 USD billed yearly) for 3 servers, Team at 199 USD a month (99 USD yearly) for 15, Agency at 499 USD a month (249 USD yearly) for 60, Enterprise at 1 499 USD a month (749 USD yearly) for 250 plus SSO. Compare them on PaaS pricing, and see how servers are created on cloud server management.

Do you store my cloud credentials?

Tokens are stored encrypted and used only for the actions listed above. You can rotate or revoke them in your provider console at any time.

My provider is not listed. Can I still use it?

Yes. Create the server in your provider's console, then connect it over SSH with one command. Only server creation from the panel needs a provider integration.

Can I send alerts to Microsoft Teams?

Yes, through an outgoing webhook pointed at a Teams workflow, or by email to the channel address.

Can I try Deployment before I pay?

Yes, with the free one-time demo on the home page. Plans start at 49 USD a month, or 24 USD a month billed yearly.

Connect the tools you already use

Link a cloud account, a repository and a Slack channel, and ship your first release.

Check what your repository needs first. Try the demo.