Repository navigation
chore(sync): integrate Dokploy canary through 53464e9 - #42
Merged
Merged
Conversation
…roviders via Vector
Template cards have a fixed height, and the header rendered every tag. Portabase has 27, which pushed the description and footer (Create button) out of the card. Show the first 6 tags plus a "+N" badge whose title lists the rest. Closes Dokploy#5660 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
feat(logs-and-metrics): ship container logs and metrics to external providers via Vector
fix(server): let members list servers in server pickers
…verflow fix(templates): cap visible tags so the Create button stays visible
Dependabots alerts fixes
…icate resolve logic
chore(deps): fix high-severity Dependabot alerts in emails lockfile
…ssions feat(permissions): add AI module to enterprise custom roles
…h-traversal fix(settings): confine Traefik file read/write to the Traefik config directory
Upstream migration 0197_logs_and_metrics collided with the fork's chain; regenerated as 0184_sloppy_solo (identical DDL). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ions Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
When the target exits before the source finishes writing, pipe() unpipes and pauses the source stdout, so its EOF is never consumed and the source child's close event never fires. pipeBetweenServers then hangs forever (reproduced 4/20 locally; the hosted remote-stream test timed out at 30s). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bl4ckBl1zZ
marked this pull request as ready for review
October 16, 2026 15:57
This was referenced Oct 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is this PR about?
This PR integrates Dokploy upstream
canarythrough53464e909(2026-10-16). The fork last synced at931f5c133in #41, so the range is931f5c133..53464e909: 30 commits across 7 upstream PRs.Upstream changes:
nodemailer6 → 10,esbuild0.20 → 0.25,ws8.21,toml4,adm-zip0.6,lodash4.18.1,drizzle-orm0.45.2 andinngest3.54. There are also about 20 new transitivepnpm.overrides(hono, axios, sharp, uuid, postcss, …).dokploy-vector(timberio/vector:0.58.0-alpine) anddokploy-cadvisor(ghcr.io/google/cadvisor:v0.60.6). The page is Settings → Logs & Metrics, guarded by the newtelemetryProviderpermission.adminProcedure/protectedProcedureto a newaipermission resource, which can be granted through custom roles. There is a newwithAnyPermissionprocedure helper.server.readget a minimal server list for pickers (fix(server): let members list servers in server pickers Dokploy/dokploy#5613).remote-stream.test.tsgets 30s timeouts, and the source stdout gets an error handler. This did not fix the underlying hang; see the fork fix below.Integration review
I resolved 7 conflicts by hand:
root.tsanddb/schema/index.tskeep the fork's Tailscale router/schema and add upstream's telemetry provider.services/server.tscombines the drizzle helpers both sides use (isNullfrom the fork,descandisNotNullfrom upstream).routers/server.tskeeps the fork'sgetWebServerSettingsimport next to upstream'shasPermission.hasValidLicenseimports inrouters/organization.tsandrouters/server.tsare dropped. Nothing in the merged code calls the function.enterprise-only-resources.test.tsstays deleted; upstream had modified it.access-control.ts, the "Enterprise-only" comment block stays removed. Upstream'saientry inenterpriseOnlyResourcesis kept: in the fork that set only lets owner/admin skip role resolution, with no license check, soaiworks on every install.hasValidLicense,isEnterpriseCloudandlicenseKeyin non-test code finds nothing.packages/server/src/lib/auth-cli.tsstill listsenableEnterpriseFeatures/isValidEnterpriseLicenseas better-auth CLI schema fields, but those lines were already onmainand this merge doesn't touch them.ghcr.io/bl4ckbl1zz/dokploy-monitoringimages are unchanged.0.43.0.CLAUDE.mdis updated:Fork fix:
pipeBetweenServershangThe first hosted test run failed
remote-stream.test.ts > pipeBetweenServers > reports a target failure with its stderrby timing out at 30s. That 30s timeout is upstream's new, longer one, so this was a hang rather than slowness.Root cause: when the target process exits before the source has finished writing, its stdin returns EPIPE.
pipe()then unpipes and pauses the source's stdout, so the source's EOF is never consumed. The child'scloseevent never fires, andfrom.exit, and with it the whole transfer, never resolves.A standalone reproduction of the local-process path hung in 4 of 20 runs. With the fix it hung in 0 of 60, across the original case plus delayed and large-payload variants.
The fix is commit
5a8f5ce0f, one line inpackages/server/src/utils/process/remoteStream.ts:to.stdin.on("unpipe", () => from.stdout.resume()). It applies to SSH channels as well as local processes. In production, a service transfer whose target command fails, for example a full disk or a bad path, would otherwise hang forever instead of reporting the error. This fix should go upstream.Behavior change for members
The AI endpoints members used to reach (
analyzeLogs,suggest,deploy,getEnabledProviders,getModels) now requireaipermissions, andmemberRolegetsai: []. Members lose the AI log analysis and compose suggestions until an owner grantsai.readthrough a custom role. Owners and admins are unaffected. This is upstream's intent, and it is consistent with the fork, since custom roles have no license gate.Migrations, dependencies, environment
Migrations: upstream's
0197_logs_and_metricscollided with the fork's chain, which ends at0183. I dropped it, restored the fork's_journal.json, and generated0184_sloppy_solo.sql. Its DDL is identical, statement for statement, to upstream's0197:TelemetryProviderTypeenumtelemetryProvidertable, with an FK to organization (cascade on delete)server.telemetryProviderIdsandwebServerSettings.telemetryProviderIds, bothtext[]defaulting to{}webServerSettings.vectorAgentOrganizationId, with an FK set to null on deleteIt is additive only, and the second generation run reported no drift.
Dependencies: the merged lockfile passes
pnpm install --frozen-lockfileas-is. The onlypackage.jsonchanges are upstream's bumps (listed above) plus@aws-sdk/client-cloudwatchand@aws-sdk/client-cloudwatch-logs.@types/nodemailer,@types/adm-zipand@types/shell-quotewere removed upstream.Environment: no new variables.
OpenAPI: regenerated, 640 → 650 endpoints.
Verification (local)
pnpm install --frozen-lockfile: pass, using the auto-merged lockfile with no regeneration0184matches upstream0197, and the second run reported no drift.generate:openapi: pass (650 endpoints)pnpm run format-and-lint: pass (0 errors)packages/server,apps/dokploy,apps/apiandapps/schedules: pass. This ran aspnpm run typecheck --checkers 2. With the default checker count, TypeScript 7 thrashed on this 8 GB machine and never finished.application.real.test.tsREAL deployment tests. They needdocker build/nixpacks build, and this machine has neither binary. These are infra-only failures, the same as in chore(sync): integrate Dokploy canary through 5df820a #38–chore(sync): integrate Dokploy canary through 931f5c1 #41; the hosted test job runs them.remote-stream.test.ts, with the fix below: 5/5 runs pass.BETTER_AUTH_SECRET(never printed or stored): pass, including the esbuild 0.25 server bundle.0184was not applied to a live Postgres; none is available on this machine.Hosted checks
On
5a8f5ce0f,pr-check (build),pr-check (test)andpr-check (typecheck)all pass. The hosted test job also runs the real Docker deployment tests that can't run locally.The first run, on
539c6b556before the fork fix, failed only theremote-streamhang described above. It was fixed rather than re-run.Risk / rollout / rollback
Risk is medium. The range contains a large dependency bump (including a major
nodemailerversion and theesbuildthat builds the server bundle), a new feature that deploys Swarm services, the AI permission change for members, and a one-line fork fix in the service-transfer pipe. Its only behavior change is that the transfer no longer hangs when the target exits non-zero.Rollout:
0184applied.nodemailer10 over SMTP.ai.readthrough a custom role.Logs & Metrics does nothing until a provider is configured. When one is, it deploys
dokploy-vector/dokploy-cadvisorand needs a Swarm manager.Rollback: roll back the application image. Migration
0184is additive, and the previous image ignores the new table and columns, so there is no need to reverse it.Checklist
canarybranch. (This branch is based on the fork'smainand integrates upstreamcanary.)Issues related (if applicable)
Not applicable for this upstream integration PR.
🤖 Generated with Claude Code