Overview
Dokploy supports multiple Git providers to deploy applications directly from your source code repositories. Connect your Git provider once and deploy unlimited applications.Supported Providers
Dokploy integrates with:- GitHub - GitHub Cloud and GitHub Apps
- GitLab - GitLab Cloud and self-hosted GitLab instances
- Bitbucket - Bitbucket Cloud
- Gitea - Self-hosted Gitea instances
GitHub
Connect GitHub using GitHub Apps for secure, fine-grained access control.Configuration
string
required
Display name for this Git provider connection
string
Name of your GitHub App
number
GitHub App ID from your app settings
string
OAuth Client ID for the GitHub App
string
OAuth Client Secret for the GitHub App
string
Installation ID after installing the app to your account/organization
string
Private key for authenticating as the GitHub App
string
Webhook secret for securing webhook payloads
Creating a GitHub App
- Go to GitHub Settings > Developer settings > GitHub Apps
- Click “New GitHub App”
- Configure the app:
- Homepage URL:
https://your-dokploy-domain.com - Webhook URL:
https://your-dokploy-domain.com/api/github/webhook - Webhook secret: Generate a secure random string
- Homepage URL:
- Set permissions:
- Repository contents: Read
- Repository metadata: Read
- Deployments: Read & write
- Pull requests: Read & write (for preview deployments)
- Generate a private key and download it
- Install the app to your account/organization
Example Configuration
Fetching Branches
GitLab
Connect GitLab Cloud or self-hosted GitLab instances using OAuth.Configuration
string
required
Display name for this Git provider connection
string
default:"https://gitlab.com"
required
GitLab instance URL
string
Internal URL for GitLab if different from external URL (useful for Docker networking)
string
OAuth Application ID from GitLab
string
OAuth Application Secret from GitLab
string
OAuth redirect URI
string
GitLab group name to restrict repository access
string
OAuth access token (obtained after authentication)
string
OAuth refresh token for renewing access
number
Access token expiration timestamp (Unix epoch)
Creating a GitLab OAuth Application
- Go to GitLab Settings > Applications
- Create a new application:
- Name: Dokploy
- Redirect URI:
https://your-dokploy-domain.com/api/gitlab/callback - Scopes:
api,read_user,read_repository
- Save the Application ID and Secret
Example Configuration
Testing Connection
Bitbucket
Connect Bitbucket Cloud using App Passwords or API tokens.Configuration
string
required
Display name for this Git provider connection
string
Bitbucket username
string
Bitbucket account email
string
Bitbucket App PasswordCreate at: Bitbucket Settings > App passwords
string
Bitbucket API token (alternative to App Password)
string
Bitbucket workspace name
Creating a Bitbucket App Password
- Go to Bitbucket Settings > App passwords
- Create new app password with permissions:
- Repositories: Read, Write
- Webhooks: Read and write
- Pull requests: Read
- Copy the generated password (shown only once)
Example Configuration
Testing Connection
Gitea
Connect self-hosted Gitea instances using OAuth.Configuration
string
required
Display name for this Git provider connection
string
required
Gitea instance URL
string
Internal URL for Gitea if different from external URL
string
OAuth Client ID from Gitea
string
OAuth Client Secret from Gitea
string
OAuth redirect URI
string
OAuth access token (obtained after authentication)
string
OAuth refresh token for renewing access
number
Access token expiration timestamp (Unix epoch)
string
default:"repo,repo:status,read:user,read:org"
OAuth scopes
Creating a Gitea OAuth Application
- Go to Gitea Settings > Applications > OAuth2 Applications
- Create new OAuth2 application:
- Application Name: Dokploy
- Redirect URI:
https://your-dokploy-domain.com/api/gitea/callback
- Save the Client ID and Client Secret
Example Configuration
Managing Git Providers
List All Providers
Remove Provider
Provider Types
TheproviderType field indicates which Git service is configured:
Database Schema
Authorization
- Git providers are scoped to organizations
- Users can only access providers in their active organization
- Deleting an organization cascades to its Git providers
Best Practices
Security
- Rotate Tokens: Regularly rotate OAuth tokens and App Passwords
- Minimal Permissions: Grant only necessary permissions
- Separate Apps: Use different apps for development and production
- Audit Access: Review provider access regularly
Performance
- Internal URLs: Use internal URLs for faster Docker network communication
- Token Refresh: Implement automatic token refresh for OAuth providers
- Cache: Cache repository and branch lists when possible
Organization
- Naming: Use descriptive names (e.g., “GitHub Production”, “GitLab Dev”)
- Documentation: Document which apps use which providers
- Backup: Keep credentials backed up securely
Troubleshooting
Common Issues
Authentication Failed
Authentication Failed
- Verify OAuth credentials are correct
- Check token hasn’t expired
- Ensure redirect URI matches exactly
- Confirm required scopes are granted
Cannot Access Repositories
Cannot Access Repositories
- Verify Git provider has access to repositories
- Check group/workspace name is correct
- Ensure proper permissions are granted
- Confirm organization/workspace exists
Webhooks Not Working
Webhooks Not Working
- Verify webhook URL is accessible from Git provider
- Check webhook secret matches configuration
- Ensure webhook events are configured
- Review webhook delivery logs on Git provider