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
- Click on a machine in the Dashboard
- Click Add Service in the sidebar
- In the popup, enter a name for your service (e.g.,
my-app) - Choose the service type: Docker or Docker Compose
- Click Create

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.
- Go to the Source tab
- Select Docker Image
- Enter the image name (e.g.,
nginx:latestorghcr.io/your-org/your-app:v1) - Click Save
Option B: Dockerfile
Build directly from a Dockerfile in your repository.
- Go to the Source tab
- Select Dockerfile
- Paste your Dockerfile content or connect a Git repository
- Click Save
Option C: Git Repository
Deploy directly from a Git repository containing a Dockerfile.
- Go to the Source tab
- Select Git Repository
- Enter your repository URL
- Configure authentication if needed:
- SSH Key: For private repositories via SSH
- Access Token: For HTTPS with personal access tokens
- Optionally specify a branch and Dockerfile path
- Click Save

Step 3: Deploy
- Click the Deploy button in the service header
- Watch the deployment progress in real-time
- View build logs in the Deployments tab
The deployment process:
- Pulling/Building: Downloads the image or builds from source
- Creating: Creates the new container
- Starting: Starts the container
- Health Check: Verifies the container is running (if configured)

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:
- Go to the Domains tab
- Click Add Domain
- Enter your domain (e.g.,
app.yourdomain.com) - Senate automatically:
- Configures the reverse proxy (Caddy)
- Provisions an SSL certificate via Let's Encrypt
- Routes traffic to your container

Next Steps
Now that you have a running service, explore these features:
- Environment Variables - Configure secrets and settings
- Custom Domains - Set up SSL and custom domains
- Storage - Add persistent volumes
- Monitoring - View logs and metrics