Services and Sources

Deploy from Git, Docker images, Compose files or templates.

A service is the actual application container. ZenSailor supports several ways to get one running:

GitHub Integration

Deep GitHub integration. Select the branch and repository path that should deploy — Auto-Build with Cloud Native Buildpacks, an existing Dockerfile, or a docker-compose.yml from the repo, with push redeploys scoped to the selected branch.

Custom Git (SSH)

Connect to any Git provider (GitLab, Gitea, Bitbucket, …) with SSH keys — perfect for self-hosted git servers and private repos outside GitHub.

Template Library

160+ curated, maintained open-source applications — analytics, CMS, automation, media, security, backend platforms. Database engines use the dedicated Databases workflow below.

Docker Compose

Deploy complex stacks from a docker-compose.yml, pulled from a repo or pasted as raw YAML directly into the dashboard.

Docker Image

Deploy any public or private image from Docker Hub, GHCR or other registries — e.g. nginx:latest.

Databases

Provision 20 database and data-store engines from the same maintained catalogue. All receive durable storage and generated credentials; 5 also wire a collision-safe connection variable into the environment automatically.

From GitHub#

Connect an organization to GitHub once, then pick the repository, branch and build method when you create the service. Push events on the selected branch trigger a redeploy; deployments and build logs stream to the dashboard.

From a Docker image#

Point the service at an image reference (e.g. postgres:16-alpine). The image is pulled on the node, and updates happen when you redeploy with a new tag.

From a Compose file#

Compose stacks are deployable from a repository or pasted YAML. ZenSailor deep-merges per-service overrides on top of the file and translates volumes through the platform's persistence rules — see Compose Overrides and Persistence and Volumes.

Databases#

The Databases workflow provisions database engines with durable storage and generated credentials. The managed engines (PostgreSQL, MariaDB, MongoDB, Redis, TimescaleDB) additionally inject a connection variable like DATABASE_URL into the environment of the service you choose — scoped so each connection key is owned by one service per environment.