dFlow
Integrations

Integration permissions and prerequisites

Checklist of provider scopes, IAM and Azure RBAC patterns, and Organisation roles before you connect Git, registries, backup storage, or cloud providers.

Use this page before you connect Git hosts, Docker registries, backup storage, Azure, or AWS. It complements provider guides (GitHub integration, GitLab integration, Git source integrations, Docker registry integration, Backup storage integration, Azure integration, AWS integration) with a single checklist.

dFlow Organisation and roles

RequirementWhy it matters
You belong to the correct OrganisationIntegrations are tenant-scoped; connecting under the wrong workspace breaks deploys for teammates.
Your dFlow role allows managing integrationsOwners and admins typically can; other roles may be read-only. See Roles and permissions under Security and Team Management in the sidebar and Tenant access model under Security and Team Management in the sidebar.
You follow secret hygieneDo not paste provider tokens into public tickets or Git. Prefer integration storage and secret() on Service variables. See Security best practices under Security and Team Management in the sidebar.

GitHub (GitHub App)

RequirementDetail
Install permission on user or org accountSuspended installs or org third-party app restrictions block access.
Repository allow-listOnly select repositories means you must update the install when you add repos.
Branch existsApp Services point at a real branch or tag.

GitLab (OAuth)

RequirementDetail
OAuth scopes on connectEnable api, read_user, and read_repository on the GitLab OAuth application (gitlab.com uses dFlow's shared app; self-hosted uses your BYO app).
Redirect URIMust match {dashboard-url}/api/webhook/providers/gitlab exactly (copy from the connect dialog).
Self-hosted reachabilityInstance URL must be HTTPS in production and reachable from the dFlow dashboard for OAuth and API calls; GitLab must reach dFlow for callbacks and push webhooks.
Encrypted credentialsSelf-hosted connections store your OAuth client ID and secret encrypted for token refresh.

GitLab, Bitbucket, Gitea, Azure DevOps (manual tokens)

RequirementDetail
Token still validExpired tokens cause clone failures; rotate before expiry.
ScopesFor GitLab manual deploys, use at least read_repository. For other hosts, start with read repository and read API where applicable; add write only if you push from dFlow.
HTTPS clone URLMatch the URL format the dFlow UI expects.
Bitbucket plan limitsWorkspace-level tokens may be unavailable on some plans; use repository tokens if required.

Docker registries

RequirementDetail
Read token or robot accountDeploy only needs pull; separate credentials if CI also pushes.
Correct registry hostdocker.io, ghcr.io, provider-specific host must match the image reference on the Docker Service.
Namespace accessToken must cover the repository or organisation that owns the image.

Backup storage (S3-compatible)

RequirementDetail
Bucket accessKeys need read, write, and delete on the bucket (and prefix) used for dumps.
Endpoint and regionBlank endpoint for AWS S3; custom S3 API endpoint for R2, B2, MinIO, and similar hosts.
Verified statusExternal backups on a database Service require a verified provider from Integrations → Backup Storage.
Separate from AWS EC2 keysBackup Storage credentials are not the same as AWS integration keys used for compute provisioning.

Azure

RequirementDetail
Microsoft sign-in with subscription accessOAuth connects the identity you choose at the Microsoft prompt. That identity must be able to read and create VMs, networking, and SSH keys in the target subscription or resource group.
Connected status in IntegrationsDisconnected accounts cannot provision workers or load Azure lists. Reconnect with Microsoft if tokens expire or roles change.
Resource group and regionPick or create a resource group in the region where you want the VM. Quotas and VM size availability vary by region.
Network path for onboardingBasic NSG mode opens required ports for SSH, Tailscale, monitoring, HTTP, and HTTPS. Custom NSGs must allow the same traffic if you use Advanced mode.
Machine types (optional)Saved templates need a dFlow gallery image in the region when you use custom images. See Azure integration.

AWS

RequirementDetail
IAM principal with required EC2 (and related) APIsUnder-scoped policies return AccessDenied during provisioning.
Access key activeDisabled or deleted keys fail signature validation.
Regional quotas and networkingEven with IAM correct, limits or Security groups can block success. Security groups under Security and Team Management in the sidebar

SSH and host access use SSH keys under Security and Team Management in the sidebar. If builds fail with git errors, fixing SSH on the server will not help; if SSH fails during server onboarding, Git tokens will not fix it. Use Compute and worker node issues under Troubleshooting in the sidebar for compute path problems.

Permission error patterns (quick reference)

Message or symptomLikely layer
401, 403, permission denied on cloneGit token, GitHub App installation, or repo allow-list
unauthorized on image pullRegistry token, wrong username, or expired credential
External backup failed or upload deniedBackup storage keys, endpoint, region, or bucket policy; provider not verified
AccessDenied on AWS APIIAM policy, SCP, or wrong account (EC2 integration, not backup bucket)
Azure lists empty or provision failsAzure RBAC on the signed-in identity, wrong subscription, or region quota
Azure account DisconnectedReconnect with Microsoft; check tenant conditional access or expired consent
Webhook never arrivesGit host app settings, org firewall, or branch filter

Deep fixes: Integration troubleshooting and Integration issues under Troubleshooting in the sidebar.

On this page