This is a community fork of Dokploy. We are not affiliated with or competing against the Dokploy project. This fork exists to make new features available faster.
Based on Dokploy v0.30.3 | Fork version v0.30.3-community.2
Everything in upstream Dokploy v0.30.3, plus 100+ community features and fixes that haven't landed upstream yet — each one ported 1:1 with credit to its original author — plus fork-only security hardening. When a fix exists as an open upstream PR or issue, we port it now instead of waiting for it to merge; when it merges upstream later, you lose nothing by switching back.
One command. Keeps every app, database, domain, and setting — the extra migrations are additive:
docker service update \
--image ghcr.io/devinosolutions/dokploy-community:v0.30.3-community.2 \
--with-registry-auth \
dokployGoing back to official is just as easy (our extra tables/columns are simply ignored):
docker service update --image dokploy/dokploy:v0.30.2 --with-registry-auth dokployThe image is public — no registry login required.
- New Networks page in the sidebar
- Create, delete, and manage Docker overlay networks
- Attach networks to any application or database service
- Per-resource network picker in the Advanced tab
Networks-small.mp4
- Manage Cloudflare credentials directly in Dokploy
- Publish apps through Cloudflare Tunnels — no exposed ports required
- Gate services behind Cloudflare Access for zero-trust authentication
- Wildcard domain support (
*.example.com), with an optional wildcard-restriction setting to control who can use it - Per-server default domain for auto-generated app domains — each server can hand out its own base domain
- Global response-compression toggle (Traefik compress middleware)
- Cross-service env references via
${{service.<name>.fqdn}} - Configurable MTU for isolated networks, explicit
HostIpon Traefik port bindings, and public-IP handling fortraefik.medomains behind private IPs - Custom certificate provider display and more reliable Traefik file-provider discovery
- Docker Compose preview deployments — the most-requested unbuilt feature in upstream Dokploy (#2028): a PR or MR spins up an isolated copy of your entire compose stack (own volumes, networks, and per-service preview domains), redeploys on update, and fully tears down on close
- GitLab merge-request previews via webhook (in addition to GitHub) — for both applications and compose stacks
- API-triggered previews — spin up a preview deployment programmatically
- Deterministic per-PR domains using a
${prNumber}template variable - Custom preview templates so previews match your production topology
- Duplicate-prevention for concurrent webhook events and labeled PRs (with a one-time cleanup of existing duplicates)
- Re-clone on rebuild so new pushes to a PR actually propagate
- Build previews on a dedicated
buildServerId, and don't block updates to existing previews when at the limit
- S3 encryption at rest via rclone crypt — encrypt backups with obscured passwords before they ever leave the box
- SFTP, FTP, and generic rclone backup destinations, plus user-defined S3 prefixes
- Safer restores: 3-section sequential
pg_restoreto avoid OID race conditions, MongoDB all-databases backup, restore-button gating when the target service is down, and unlimited volume-backup retention - Fixes for double-dumps, MongoDB gzip filename mismatches, replica-set preservation, and post-failure container restart
- AWS ECR registry support and pulling images with stored registry credentials
- Pre-deploy and post-deploy command hooks for applications
- Deploy a specific Docker image/tag on demand, and pull latest images on Compose deploy
- Injected
DOKPLOY_*environment variables and git commit hash/message as build args at deploy time - "Deploy with Fresh Volumes" for Compose, dynamic railpack version fetching, and smarter build-cache invalidation on env changes
- Container resource breakdown and swap usage in monitoring
- Remote-server stats via a server selector
- Container healthcheck status surfaced in the UI
- Attach to a running container to send input interactively
Beyond the ported features, this fork carries 7 direct security commits and 13 ported hardening fixes, including:
- Command-injection fixes for
customGitUrl, mount-permission inputs, and shell-less rcloneobscure - Secret redaction — private keys kept out of build-failure notifications and logged command errors; webhook URLs masked by default
- Permission gates — service-permission checks on template loading, org-scoped assigned-server access, custom-role listing behind
member:read, and validated admin invites - Webhook author authorization — GitLab MR previews authorize the MR author, not the webhook actor, closing a preview-deployment bypass
- Notifications — container crash-loop alerts, scheduled-job failure alerts, and real server names in threshold alerts
- Git providers & auth — GitHub/Google social login on self-hosted, self-hosted password reset, Codeberg preset, Gitea
write:repositoryscope, and several OAuth/redirect fixes - Organizations & teams — editable descriptions, bulk invitations, drag-and-drop logo upload, and project export to a portable JSON file
- Per-project icons — paste a URL or drag-and-drop an image onto any project; projects without one automatically show the favicon of their first working domain
- Reliability — clean exit on fatal startup errors instead of crash-looping, Podman idle-exec support, custom
template.tomlin git repos, and Docker/Ubuntu install-failure fixes - Longer login sessions — sessions last 30 days (sliding) instead of upstream's 3, configurable via
DOKPLOY_SESSION_DAYS - 15+ UI/UX fixes — deployments filtering and tab behavior, env-form edit stability, log-counter layout shift, responsive log pages, dark-theme icons, and new translations
Every item above is ported 1:1 and credited to its original upstream author. See the full release notes for the complete, per-PR credited list, migration details, and known caveats.
Concurrent deployments — previously a fork-only feature — shipped natively in upstream Dokploy v0.29.11, so this fork now uses the official implementation.
Manual preview builds + security hardening wave 5 — no migrations.
- Build a preview deployment from any open PR/MR with one click — a "Build Pull Request" button on applications and compose services lists open pull/merge requests (GitHub and GitLab) and builds a preview on demand, converging with webhook-triggered previews on the same deployment; the collaborator-permission requirement is enforced on the manual path too, so untrusted fork PRs can't be built onto your host (#199 by @ajnart)
- Unhardened legacy permission helpers removed — the package root exported pre-hardening duplicates of the access-check helpers (unused by shipped code, but a silent-downgrade trap for future imports); all deleted, the hardened implementations are now the only ones exported, and member allow-list writes verify organization ownership before persisting (#200)
Upstream v0.30.3 sync + security hardening waves 3 & 4 — one guarded migration (network.dockerId + server.terminal role backfill), upgrades in place.
- All ~37 fixes from upstream v0.30.3 (#198): new
server.terminalpermission decoupling terminal access from root SSH, network sync that detects delete/recreate by Docker ID, volume backups restart services after a failed backup,.env${VAR}interpolation preserved, multi-IP domain validation, monitoring chart label/unit fixes, tini as PID 1, Railpack remote installs with sudo, and more - Cross-organization authorization hardening, waves 3 & 4 (#196, #197) — service-level permission checks now verify organization ownership for every role across ~200 procedures (deploy/start/stop/logs/env for all eight service types) and all six project/service/environment access helpers; the AI provider router no longer leaks API keys across organizations; metrics endpoints are derived server-side from the organization-scoped server row instead of trusting a caller-supplied URL and token
Security hardening, swarm-deploy stability, and quieter, tougher backups — no migrations.
- Cross-organization authorization hardening — a sweep found tRPC procedures that accepted a
serverId(or registry id) from another organization and ran SSH/docker commands against it; 22 procedures across the settings, certificate, registry, destination and patch routers are now organization-scoped, and user-supplied rcloneadditionalFlagsare shell-quoted at the command builder so legacy rows can't smuggle shell syntax into backup commands (#191, #192) - Scheduled backups of stopped databases now skip quietly — a "backup everything" policy no longer produces an error storm for databases that are intentionally stopped; manual runs still report real failures, and an unreachable server never masks an outage (#193)
- MariaDB/MySQL dumps and restores survive the binary rename — newer MariaDB images renamed
mysqldump/mysqltomariadb-dump/mariadb; both backup and restore now pick whichever binary exists in the container (#193) - Backup failures finally say why — volume-backup and remote command errors now include the tail of the command's output (secrets redacted) instead of an empty message (#193)
- Rolling updates are robust to daemon clock skew — the deploy stability check now anchors task timestamps to the remote docker daemon's clock and ignores tasks from previous deployments (#188 by @lmichelin)
- Disk Usage works on remote servers — the dashboard's Disk Usage tab now passes the selected server instead of always querying the Dokploy host (#187 by @lmichelin)
Upstream v0.30.2 sync + a self-healing migration for anyone switching from official Dokploy.
- Switching from official Dokploy now works on any existing database — the migration runner used to silently skip this fork's older migrations when upgrading a database that had already run newer official migrations, which broke fork features (backup destinations, Cloudflare integration, project icons, …) with
column does not existerrors. A new fully idempotent catch-up migration recreates every fork table and column regardless of upgrade path (#189) — found and fixed within hours thanks to the fork's opt-out error reporting catching a real install's crash. - All fixes from upstream v0.30.1 and v0.30.2 (#190): stack deploys keep env-var quotes literal, preview redeploys are no longer blocked by the preview limit, project pages no longer over-fetch for members with limited permissions, terminal resize desync fixed, tags apply on project create, switch thumb alignment
Two community-contributed fixes — no migrations.
- GitLab merge-request previews now work for applications — the preview pipeline only knew how to clone GitHub repos, so GitLab application previews died at deploy time; the GitHub-only gates are now provider-aware (GitHub or GitLab), the MR branch is cloned with refreshed credentials, and early failures land in the deployment logs (#185 by @Knyntsje — first-time contributor!)
- Rolling updates no longer report false deployment failures — the post-deploy stability check could catch the outgoing container winding down and report "Container did not stay running"; task counts now only consider tasks Swarm intends to keep alive, while crash-loop detection still sees the full task history (#184 by @lmichelin)
Upstream v0.30.0 sync. Full merge of upstream Dokploy v0.30.0 (#186) — one guarded migration, upgrades in place.
- Overview dashboard — new org-wide Overview page with Services, Backups, Domains and Deployments tabs
- Secrets (vault providers) — store secrets in HashiCorp Vault, Infisical, AWS Secrets Manager, Doppler, Azure Key Vault, or Scaleway and reference them from service environments
- DNS providers — Cloudflare and AWS Route53 integration for managing DNS records from Dokploy
- Session management — owners can view and revoke sessions across the organization (supersedes this fork's earlier self-scoped sessions page)
- Docker dashboard expansion — Health diagnostics, Docker events (sortable, paginated), Images and Disk Usage tabs
- Organization improvements — default role for newly joining members, larger searchable organization selector
- Traefik 3.6.25, monitoring deployed as a swarm service, SCIM/SSO user linking fix, GitLab OAuth token fix, and TypeScript 7 across the codebase
- Fork fixes on top: mysql/mariadb restores strip
USE-statements (closes a restore bug found in our backup audit), ECR rollbacks use vault-resolved credentials, and compose.envfiles are no longer double-escaped - All fork features preserved: Backup Center (incl. destination encryption — upstream's new backup internals were adapted around it), Cloudflare Tunnel & Access, project icons, Sentry opt-out error reporting, 30-day sessions, preview deployments
Member project-access fix. One community-contributed fix — no migrations.
- Members with service-level permissions can now open their projects — the project and environment endpoints required explicit project-level access, so members granted access to individual services were redirected back to the dashboard; access is now granted through project, environment, or service permissions, with responses still filtered to only the services each member can see (#183 by @m41denx).
Build-server deployment status fix. One community-contributed fix — no migrations.
- Deployments no longer marked failed when using a separate build server — the post-deploy stability check polled the build server for a service that only runs on the app's runtime server, reporting successful deployments as failed (#181 by @lmichelin).
Upstream v0.29.14 sync. Full merge of upstream Dokploy v0.29.14 (#182) — one guarded migration, upgrades in place.
- Network management — upstream's network management landed and replaces this fork's earlier implementation: create/inspect/recreate Docker networks with driver, IPv4/IPv6, IPAM and MTU options, attach services to networks, and detach the default dokploy network per service. The fork adds role-permission gates on top.
- Passkey sign-in — register passkeys and sign in with them.
- GitHub Enterprise support — GitHub providers accept a custom base URL.
- Service icon management — pick icons for compose services.
- Misc fixes from upstream — single-label hostnames, real error-page status codes, dropdowns staying open on window blur, rollback env resolution, preview-deployment cleanup on app delete, and more.
- Upstream's new hotfix automation workflows are not enabled in this fork (releases here are manual).
Security fix & six upstream ports. Six 1:1 ports of upstream PRs — no new migrations. Upgrading is recommended for the command-injection fix.
- Security: command injection via compose service names — a crafted compose service name could reach a
dockererror message that was interpolated unquoted into anechoinside the generated build script, allowing shell command injection during builds. The error text is now shell-quoted before embedding (#178, upstream #4872 by @Siumauricio). - Preview deployments work with GitHub apps again — creating a preview deployment passed a redacted GitHub private key to authentication, so previews always failed with
NOT_FOUND; the provider credentials are now re-fetched unredacted (#179, upstream #4933 by @CyrilBIENNE). - Postgres 100-argument limit fix for schedules & volume backups — installs with many applications no longer crash schedule/volume-backup queries that hydrate app relations (#175, upstream #4931 by @Siumauricio).
- GitHub provider trigger type persists — the selected deploy trigger (push/tag) is saved correctly when editing a GitHub-provider application (#176, upstream #4937 by @narcisonunez).
- DNS check tooltip no longer flags CDNs as errors — domains behind a CDN/proxy show an informational message instead of a false-negative error (#177, upstream #4911 by @AbiRaditya).
- Template dialog keeps its state on tab switch — the create-from-template dialog no longer closes when switching browser tabs (#180, upstream #4906 by @zenojunior).
Migration reliability for official-Dokploy switchers, credential scrubbing & backup cleanup. A patch release on the v0.29.13 base — five fixes, no new migrations. Upgrading is recommended, especially if you switched to the fork from official Dokploy v0.29.13 or use S3 backups.
- Migration failures fixed for installs switching from official Dokploy v0.29.13 — installs that moved from official Dokploy v0.29.13 to the fork previously re-ran migration 0174 (the fork re-timestamps it), hit a
duplicate_columnerror, and rolled back the entire pending migration batch (0174–0192) — leaving every fork table and column silently missing. Migration 0174 now usesADD COLUMN IF NOT EXISTS, a fork-wide migration-idempotency audit plus a static lint test guards against recurrence, and migration failures now log loudly and report to Sentry instead of failing quietly (#172). - Credentials scrubbed from error reports — a failed backup command could previously embed live S3 credentials (e.g. rclone
--s3-access-key-id/--s3-secret-access-key) in an error message that then flowed into error reports. Credentials are now scrubbed fromExecErrormessages and from all error reports (a SentrybeforeSendscrubber) before anything leaves the process (#173). - Partial backup uploads are cleaned up on failure — when a backup fails mid-upload, the truncated partial object is now deleted from the destination, so it can't pollute buckets or evict good backups from retention. Failure diagnostics now distinguish "Backup failed" (a dump error, with the dump's stderr) from "Upload failed" (a destination error) (#174, inspired by upstream #4896).
- Cursor pointer on buttons — buttons now show a pointer cursor on hover (#170, upstream #4890 by @SteadEXE).
- Security-audit robustness — the server security audit no longer breaks when sshd/ufw config contains duplicate directives; the grep pipelines take the first match and strip carriage returns so the audit JSON stays valid (#171, upstream #4889 by @reikjarloekl).
Upstream v0.29.13 rebase + SMTP-without-auth, UI fixes & session diagnostics. The fork is now based on upstream Dokploy v0.29.13 — a large security-hardening release (shell-escaping of all user-influenced commands, WebSocket handler authorization, git/registry command-injection fixes, secret redaction in API responses, org-scoped custom AI provider presets, email verification for SSO). All fork features were re-verified on top, and the fork's backup-command credential redaction was widened to cover the new escaping format. One additive migration (0192).
- SMTP without authentication — email notifications now work with auth-less SMTP relays: username/password are optional and the auth block is omitted when blank (#165, upstream #4844 by @hbilal9; migration 0192).
- Org menu width fix — the organization dropdown is no longer clipped when the sidebar is collapsed (#166, upstream #4845 by @hbilal9; also landed upstream in v0.29.13).
- Compose "Reload" renamed to "Rebuild" — the button label now says what the action does (#167, upstream #4847 by @ANSUJKMEHER; also landed upstream in v0.29.13).
- Session-rejection diagnostics (fork original) — when a browser presents a session cookie that the server rejects, the server now logs a classified reason (token unknown / expired / signature mismatch) with only an 8-char token prefix, to make unexplained logouts diagnosable (#168).
Session management, log-stream hygiene & metrics dedupe fix. Three 1:1 ports of open upstream PRs — no migrations.
- Session management page — Settings → Sessions lists your active and expired sessions (device, IP, created/expires) with one-click revoke to force logout on another device; strictly self-scoped and session tokens never leave the server (#164, upstream #4841).
- Container log streams terminate on disconnect — closing a logs view now reliably kills the underlying
docker logs --followprocess (SIGTERM with SIGKILL escalation, local and SSH), and log commands are spawned argument-by-argument with in-process search filtering instead of concatenated shell strings (#163, upstream #4836). - Monitoring metrics dedupe fix — container metrics are deduplicated by swarm task suffix instead of name prefix, so distinct services sharing a name prefix (e.g.
app-x-mysqlandapp-x-redis) no longer lose metrics to each other (#162, upstream #4843).
Backup scale-safety, image restorability & navigation. Three changes — no migrations.
- Scheduled backup concurrency limit — scheduled database, compose, and volume backups now run through a per-server FIFO queue (
DOKPLOY_BACKUP_CONCURRENCY, default 4), so a policy firing many backups on one cron drains gradually instead of spawning them all at once; manual runs stay immediate (#160). - Image-restorability view on the Registry page — Settings → Registry now shows, for every application and compose service, whether its image is Re-pullable from a registry, In registry (source-built but pushed), or ⚠ Rebuild-only (exists only on the local daemon), with per-registry push counts (#161).
- Coverage deep-links + tab order — coverage rows link straight to each service's backups tab, and Coverage is now the Backup Center's first tab (#159).
Backup Center polish. Two refinements — no migrations.
- Instance tab manages web-server backups in place — the Instance tab now embeds the full Web Server Backups card (schedules, run/edit/delete, Restore Backup) instead of a read-only summary linking out (#158).
- Destinations show the storage prefix — coverage rows list each destination as "name · /prefix" so you can see where each backup lands at a glance (#158).
Backup Center tabs, search & activity feed. Community-requested UX pass — no migrations.
- Tabbed layout — the Backup Center is now organized like the Swarm page: Policies / Instance / Coverage / Activity tabs with
?tab=deep links, plus a "Viewing server" selector scoping Coverage and Activity (#157). - Coverage search — filter the coverage tree by project, environment, or service name, composing with the global facets (#157).
- Activity feed — recent backup and volume-backup runs org-wide with status, destination, policy-vs-manual source, timestamps, and the uploaded artifact path parsed from the run log (confirming the file landed in the bucket), with the full run log one click away; derived from existing run records, so it works retroactively (#157).
Backup verification, browsing & restore in the Backup Center. Coverage no longer just assumes — it can prove backups exist. No migrations.
- Browse the real bucket contents — every covered database/compose service gets a Browse-backups button; the dialog lazily lists the actual files under each backup's prefix (name, size, timestamp) with an "N in bucket" badge, and warns when a backup is configured but the bucket is empty (#156).
- Restore from the Backup Center — each listed file has a Restore action behind a double confirmation (destructive-action confirm, then type the database name), streaming live logs via the existing restore pipeline; hidden without the restore permission and enforced server-side (#156).
Global coverage filters. The Backup Center coverage filter is now three global facets instead of a per-project list — no migrations.
- Environments — multi-select over distinct environment names org-wide ("only production, everywhere" in one click); Service types — Databases group (with individual DB kinds), Applications, Compose; "Not covered only" toggle to jump straight to gaps. Facets AND together; the production-focused default view applies until any explicit facet replaces it (#155).
Backup Center coverage tree. UX overhaul of the Backup Center's coverage view — no migrations in this release.
- Coverage tree with rollup badges — the flat coverage table is now an expandable Project → Environment → Service tree; collapsed nodes show an orange "⚠ N not covered" count (green check when fully covered), and project rows reuse the project icons/favicons (#154).
- Environment filter with production-focused defaults — a /deployments-style filter shows production environments in full while non-production environments only surface databases and volume-bearing services by default; every environment can be toggled fully on or off, with "(N hidden)" hints (#154).
- Compose stacks expand into their containers — a Compose service now lazily expands to the containers parsed from its compose file, with database-image detection (Postgres/MySQL/MariaDB/Mongo/Redis-family) and per-volume coverage badges, so "a compose with a database inside" is obvious at a glance (#154).
Move services between servers, and organization-wide backup policies. Two headline features plus one additive migration (0191).
- Move a service to another server — move an Application, Compose, or database service to a different server in multi-server mode. The move runs a two-phase scan → execute flow with a downtime-safe, copy-based cutover: the source is stopped, its data is copied to the destination, and the service's
serverIdswitches only after a fully successful copy — on any failure the source is restarted and left untouched. No migration (#148, upstream #3713). - Backup policies + Backup Center — manage backups organization-wide instead of service by service. Define policies scoped to the whole org, specific projects, or specific environments (with a one-click "production environments" preset), covering database dumps and/or volume backups, each targeting one destination with its own cron schedule and retention. Services added later that match a policy's scope are auto-covered. A new Backup Center page lists every policy, shows an org-wide coverage table (what's backed up vs. not) and the instance backup, and coexists with any manual backups you already set up. Redis/applications/Compose are covered via volume backups. Adds additive migration 0191 (#153).
Four upstream fixes — safe auth-secret migration, domain clearing, and two editor/UI papercuts. No migrations in this release.
- Auth-secret migration no longer loses encrypted data — installs moving off the deprecated hardcoded
BETTER_AUTH_SECRETused to lose access to everything previously encrypted with the old key. The legacy-derived key is now kept as a decrypt-only fallback, so existing secrets stay readable while every new write uses your real secret (#151, upstream #4834). - Server domain can be cleared — clearing the panel's server domain now reverts to IP-only access instead of being rejected. The backend already removed the Traefik router on an empty host; the client-side schema was the only thing blocking it (#152, upstream #4825).
- Clickable icons in badges work again — interactive icons nested inside badges are once more clickable, rather than swallowing pointer events (#149, upstream #4827).
- YAML auto-indentation on Enter — the code editor now indents correctly when you press Enter inside YAML (#150, upstream #4828).
Project favicons, for real — and hardened. Project icons now resolve the actual favicon of a project's first working domain, and the resolver is locked down against SSRF and stored XSS.
- Real favicon resolution — projects without an explicit icon show their first working domain's favicon, including apps that declare it via a custom
<link rel="icon">path instead of the default/favicon.ico; icons now also render in the project switcher, not just cards and headers (#145). - SSRF hardening — every URL the resolver fetches, and every redirect hop, is re-validated as same-origin against the originally-requested org-managed host, pinning scheme + host + port so the fetch can't be pivoted to an internal service or another port on the same IP (#146, #147).
- Stored-XSS hardening —
image/svg+xmlfavicons are rejected (an SVG served with its real content-type can execute inline script), and the icon response carries a locked-downdefault-src 'none'; sandboxCSP plusnosniff(#147). - Private caching — the auth-gated icon response is now
private, so a shared cache can't serve one user's favicon to another.
Project icons & longer sessions. Projects can now carry an icon — upload an image or paste a URL, and projects without one automatically fall back to the favicon of their first working domain. Login sessions last 30 days (sliding) instead of 3, tunable via DOKPLOY_SESSION_DAYS. Also fixes a scheduled-task bug (caught by the new error reporting on day one) where schedules targeting a stopped container ran docker exec with an empty ID on every tick instead of failing with a clear message.
Backend error reporting (opt-out). The fork now reports unhandled backend errors — crashes and internal server errors, i.e. the stack trace, message, and fork version — to a Devino-hosted Sentry instance, so we catch regressions across installs without waiting on bug reports. No environment variables, secrets, deployment logs, request data, or personal information are ever sent, and the reporting server's hostname is stripped before the event leaves your machine. Opt out with DOKPLOY_DISABLE_SENTRY=true (or DO_NOT_TRACK=1) — see Error reporting & privacy.
Preview Deployments for Docker Compose — upstream Dokploy's most-requested unbuilt feature, now live for GitHub PRs and GitLab MRs. Isolated per-PR stack copies with per-service domains, automatic redeploy on update, and full teardown (volumes included) on close. One additive migration (0189) applies automatically on startup.
The previous release, v0.29.12-community.2, rolled up the full port train: 100+ upstream fixes and features ported 1:1 (native Cloudflare integration, AWS ECR, S3 backup encryption at rest, per-server default domains, remote-server monitoring stats, and more), plus the fork-side security hardening above.
On a clean Linux server with root access (same requirements as Dokploy):
curl -sSL https://dokploy-community.devino.ca/install.sh | shInstall a specific version:
export DOKPLOY_VERSION=v0.30.3-community.2
curl -sSL https://dokploy-community.devino.ca/install.sh | shUpdate an existing installation:
curl -sSL https://dokploy-community.devino.ca/install.sh | sh -s updateghcr.io/devinosolutions/dokploy-community:v0.30.3-community.2 # versioned (recommended)
ghcr.io/devinosolutions/dokploy-community:latest # latest release
ghcr.io/devinosolutions/dokploy-community:canary # latest build
The fork reports unhandled backend errors — crashes and internal server errors, i.e. the stack trace, error message, and fork version — to a Devino-hosted Sentry instance so we can catch regressions across installs without waiting on bug reports. No environment variables, secrets, deployment logs, request data, or personal information are ever sent, and the reporting server's hostname is stripped before the event leaves your machine.
Opting out is one environment variable on the dokploy service:
docker service update --env-add DOKPLOY_DISABLE_SENTRY=true dokployThe standard DO_NOT_TRACK=1 convention is also respected.
We follow the scheme v<upstream-version>-community.<release>:
| Upstream | Fork release | Tag |
|---|---|---|
| v0.29.11 | 1st release | v0.29.11-community.1 |
| v0.29.12 | 1st release | v0.29.12-community.1 |
| v0.29.12 | 2nd release | v0.29.12-community.2 |
| v0.29.12 | 3rd release | v0.29.12-community.3 |
| v0.29.12 | 4th release | v0.29.12-community.4 |
| v0.29.12 | 5th release | v0.29.12-community.5 |
| v0.29.12 | 6th release | v0.29.12-community.6 |
| v0.29.12 | 7th release | v0.29.12-community.7 |
| v0.29.12 | 8th release | v0.29.12-community.8 |
| v0.29.12 | 9th release | v0.29.12-community.9 |
| v0.29.12 | 10th release | v0.29.12-community.10 |
| v0.29.12 | 11th release | v0.29.12-community.11 |
| v0.29.12 | 12th release | v0.29.12-community.12 |
| v0.29.12 | 13th release | v0.29.12-community.13 |
| v0.29.12 | 14th release | v0.29.12-community.14 |
| v0.29.12 | 15th release | v0.29.12-community.15 |
| v0.29.13 | 1st release | v0.29.13-community.1 |
| v0.29.13 | 2nd release | v0.29.13-community.2 |
| v0.29.13 | 3rd release | v0.29.13-community.3 |
| v0.29.14 | 1st release | v0.29.14-community.1 |
| v0.29.14 | 2nd release | v0.29.14-community.2 |
| v0.29.14 | 3rd release | v0.29.14-community.3 |
| v0.30.0 | 1st release | v0.30.0-community.1 |
| v0.30.0 | 2nd release | v0.30.0-community.2 |
| v0.30.2 | 1st release | v0.30.2-community.1 |
| v0.30.2 | 2nd release | v0.30.2-community.2 |
| v0.30.3 | 1st release | v0.30.3-community.1 |
| v0.30.3 | 2nd release | v0.30.3-community.2 |
This fork tracks upstream Dokploy's canary branch. To contribute:
- Fork this repo
- Create a feature branch from
canary - Open a PR targeting
canary
For features that should go upstream, please also open a PR on the official Dokploy repo.
This fork carries the work of 100+ contributors — upstream Dokploy's authors plus the fork's own community. GitHub hides the contributors panel on fork homepages, but the full list is here:
- Dokploy — the original project by @siumauricio
- Every ported change credits its original upstream author — their work, ported and re-verified against the fork's networking and branding layer
- Community-maintained fork, stewarded by Devino Solutions
Same as upstream — Apache 2.0