Senate

First Deployment

Deploy your first application to Senate step by step

First Deployment

This guide walks you through deploying your first application to Senate. By the end, you'll have a running service accessible via a URL.

Prerequisites

  • Senate installed and running (Getting Started)
  • A Docker image, Dockerfile, or Git repository with your application

Step 1: Create a Service

  1. Click on a machine in the Dashboard
  2. Click Add Service in the sidebar
  3. In the popup, enter a name for your service (e.g., my-app)
  4. Choose the service type: Docker or Docker Compose
  5. Click Create

Create service dialog

Step 2: Configure the Source

Senate supports multiple deployment sources:

Option A: Docker Image

The simplest option—use a pre-built image from Docker Hub or a private registry.

  1. Go to the Source tab
  2. Select Docker Image
  3. Enter the image name (e.g., nginx:latest or ghcr.io/your-org/your-app:v1)
  4. Click Save

Option B: Dockerfile

Build directly from a Dockerfile in your repository.

  1. Go to the Source tab
  2. Select Dockerfile
  3. Paste your Dockerfile content or connect a Git repository
  4. Click Save

Option C: Git Repository

Deploy directly from a Git repository containing a Dockerfile.

  1. Go to the Source tab
  2. Select Git Repository
  3. Enter your repository URL
  4. Configure authentication if needed:
    • SSH Key: For private repositories via SSH
    • Access Token: For HTTPS with personal access tokens
  5. Optionally specify a branch and Dockerfile path
  6. Click Save

Source configuration

Step 3: Deploy

  1. Click the Deploy button in the service header
  2. Watch the deployment progress in real-time
  3. View build logs in the Deployments tab

The deployment process:

  1. Pulling/Building: Downloads the image or builds from source
  2. Creating: Creates the new container
  3. Starting: Starts the container
  4. Health Check: Verifies the container is running (if configured)

Deployment progress

Step 4: Access Your Application

Once deployed, your application runs inside a Docker container. To make it accessible:

Internal Access

Your service is immediately available to other services on the same machine via Docker networking:

  • Hostname: {service-name}-{id}

External Access

To expose your service to the internet:

  1. Go to the Domains tab
  2. Click Add Domain
  3. Enter your domain (e.g., app.yourdomain.com)
  4. Senate automatically:
    • Configures the reverse proxy (Caddy)
    • Provisions an SSL certificate via Let's Encrypt
    • Routes traffic to your container

Domain configuration

Next Steps

Now that you have a running service, explore these features:

On this page