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
Display name for this Git provider connection
Name of your GitHub App
GitHub App ID from your app settings
OAuth Client ID for the GitHub App
OAuth Client Secret for the GitHub App
Installation ID after installing the app to your account/organization
Private key for authenticating as the GitHub App
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
Display name for this Git provider connection
GitLab instance URL
Internal URL for GitLab if different from external URL (useful for Docker networking)
OAuth Application ID from GitLab
OAuth Application Secret from GitLab
OAuth redirect URI
GitLab group name to restrict repository access
OAuth access token (obtained after authentication)
OAuth refresh token for renewing access
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
Display name for this Git provider connection
Bitbucket username
Bitbucket account email
Bitbucket App PasswordCreate at: Bitbucket Settings > App passwords
Bitbucket API token (alternative to App Password)
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
Display name for this Git provider connection
Gitea instance URL
Internal URL for Gitea if different from external URL
OAuth Client ID from Gitea
OAuth Client Secret from Gitea
OAuth redirect URI
OAuth access token (obtained after authentication)
OAuth refresh token for renewing access
Access token expiration timestamp (Unix epoch)
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