Commit Graph

4322 Commits

Author SHA1 Message Date
Furox
4b753b2180 refactor: centralize destination validation 2026-09-11 16:27:32 +03:00
Furox
79050dd970 refactor: keep issue 416 focused on destinations 2026-09-11 16:27:32 +03:00
Furox
6d68ceec1a fix: redact restore credentials from errors 2026-09-11 16:27:32 +03:00
github-actions[bot]
27140c93d2 fix: harden rclone environment and credential redaction 2026-09-11 16:27:32 +03:00
github-actions[bot]
c14cbcec71 fix: close remaining backup credential and FTPS bypasses 2026-09-11 16:27:32 +03:00
github-actions[bot]
450fbb2c14 fix: harden backup credential error paths and FTPS verification 2026-09-11 16:27:32 +03:00
github-actions[bot]
3fe0a01aeb fix: test backup destinations on selected server 2026-09-11 16:27:31 +03:00
github-actions[bot]
9b66004630 style: apply final issue 416 formatting 2026-09-11 16:27:31 +03:00
Furox
e753233b36 test: cover duplicate SFTP host-key override 2026-09-11 16:27:31 +03:00
github-actions[bot]
a945df2c64 style: apply audit formatting 2026-09-11 16:27:31 +03:00
Furox
7cf9338ee9 test: cover issue 416 path and credential safety 2026-09-11 16:27:31 +03:00
github-actions[bot]
42e6af64ba style: apply Biome formatting 2026-09-11 16:27:31 +03:00
Furox
54e133bcda fix: enforce destination ownership and redact restore errors 2026-09-11 16:27:31 +03:00
Furox
4cec078dc3 fix: mirror secure transfer validation in destination form 2026-09-11 16:27:31 +03:00
Furox
f27391fa4b fix: authorize destination connection test targets 2026-09-11 16:27:31 +03:00
Furox
d09e983459 test: cover FTPS ports and SFTP host verification 2026-09-11 16:27:31 +03:00
Furox
db7944ce9f test: pass FTPS flags as arrays 2026-09-11 16:27:31 +03:00
Furox
12b9f16d0e test: cover restore path injection and FTP TLS validation 2026-09-11 16:27:31 +03:00
github-actions[bot]
d1307e23b5 style: apply Biome fixes for issue 416 2026-09-11 16:27:31 +03:00
Furox
d6aef0367b test: cover FTP and SFTP credential redaction 2026-09-11 16:27:31 +03:00
Furox
a52768e8f0 test: cover non-S3 rclone destination routing 2026-09-11 16:27:31 +03:00
Furox
55dccaddfa feat: browse backup files across all destination types 2026-09-11 16:27:31 +03:00
Furox
c99d214e8d feat: add provider-aware backup destination UI 2026-09-11 16:27:31 +03:00
Furox
88b43d77f0 feat: expose Google Drive OneDrive FTP and SFTP destinations 2026-09-11 16:27:31 +03:00
Furox
7d2b8065e9 feat: test all backup destination types through rclone 2026-09-11 16:27:31 +03:00
Mauricio Siu
853ca33659
Merge pull request #5416 from Dokploy/fix/critical-next-rce-16.3.4
Some checks failed
Auto PR to main when version changes / create-pr (push) Has been cancelled
Build Docker images / build-and-push-cloud-image (push) Has been cancelled
Build Docker images / build-and-push-schedule-image (push) Has been cancelled
Build Docker images / build-and-push-server-image (push) Has been cancelled
Dokploy Docker Build / docker-amd (push) Has been cancelled
Dokploy Docker Build / docker-arm (push) Has been cancelled
autofix.ci / format (push) Has been cancelled
Dokploy Monitoring Build / docker-amd (push) Has been cancelled
Dokploy Monitoring Build / docker-arm (push) Has been cancelled
Dokploy Docker Build / combine-manifests (push) Has been cancelled
Dokploy Docker Build / generate-release (push) Has been cancelled
Dokploy Docker Build / sync-version (push) Has been cancelled
Dokploy Monitoring Build / combine-manifests (push) Has been cancelled
fix(deps): bump next to 16.3.4 to patch critical RCE advisories
2026-09-11 02:20:20 -06:00
EgerDev
45dcdfc5be test(compose): tighten models types and regression tests 2026-09-11 00:11:40 -07:00
EgerDev
29cdc815db feat(compose): support AI models in Compose specification 2026-09-10 20:28:28 -07:00
Narciso E. Núñez Arias
326908869d
Merge pull request #5358 from KingIronMan2011/patch-1
feat: added missing Railpack versions
2026-09-10 18:40:09 -04:00
Narciso
4cd4b83523 fix(deps): bump next to 16.3.4 to patch critical RCE advisories
GHSA-2xp9-vwfh-vxw4 and GHSA-p293-qw3h-jr36
2026-09-10 18:23:38 -04:00
Artur Spatari
e70c880612 test(vault): lock the precedence between two imports
Review flagged that multi-import collisions were untested. The order the code
implements is the documented one — Infisical: "If two imports carry a secret
with the same name, the value from the bottom-most import wins" — and the
response lists imports in that order, so sequential assignment matches it.

Added a case with two imports defining the same key. Reversing the merge order
in the client fails it, so the test pins the behaviour rather than restating
the implementation.

vault.test.ts: 58 passed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 10:32:09 +03:00
Artur Spatari
0c1dfe978c fix(vault): read Infisical secrets pulled in through an import
Fixes #5413. A secret brought into a folder with "Import Secrets" was reported
as not found. Two reasons, and the first is easy to miss:

The list endpoint takes the flag in **snake_case**. `includeImports` is
silently ignored — the request still returns 200, with `imports` present but
empty — so the imported secret looked like it simply did not exist. Measured
against app.infisical.com with a registered import (confirmed via
GET /api/v1/secret-imports):

  expandSecretReferences=true                        imports[] empty
  expandSecretReferences=true&includeImports=true    imports[] empty
  expandSecretReferences=true&include_imports=true   imports[] has the secret

Second, imported secrets never appear in `secrets` — they come back in a
separate `imports` array, one entry per source path, which the client did not
read at all.

Imported entries are merged before the folder's own, so a name defined in both
resolves to the local value, matching how Infisical resolves it.

Also measured, for whoever looks next: `/api/v4/secrets` returns imports with
no flag at all, and single-secret reads (`/raw/{name}`) never see an imported
key — 404 on v3, no such route on v4. So a folder listing is the only way to
reach them.

vault.test.ts: 57 passed. Reverting the fix fails the new merge test.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 10:26:52 +03:00
Mauricio Siu
38d157adc0 fix(compose): move Fresh Volumes into a Danger Zone with typed confirmation 2026-09-09 17:47:16 -06:00
Mauricio Siu
49b8214e5d feat(compose): add pull latest images on deploy toggle 2026-09-09 17:13:24 -06:00
Mauricio Siu
ec31739e0e
Merge pull request #5396 from Dokploy/feat/transfer-service-between-servers
Some checks are pending
Auto PR to main when version changes / create-pr (push) Waiting to run
Build Docker images / build-and-push-cloud-image (push) Waiting to run
Build Docker images / build-and-push-schedule-image (push) Waiting to run
Build Docker images / build-and-push-server-image (push) Waiting to run
Dokploy Docker Build / docker-amd (push) Waiting to run
Dokploy Docker Build / docker-arm (push) Waiting to run
Dokploy Docker Build / combine-manifests (push) Blocked by required conditions
Dokploy Docker Build / generate-release (push) Blocked by required conditions
Dokploy Docker Build / sync-version (push) Blocked by required conditions
autofix.ci / format (push) Waiting to run
Dokploy Monitoring Build / docker-amd (push) Waiting to run
Dokploy Monitoring Build / docker-arm (push) Waiting to run
Dokploy Monitoring Build / combine-manifests (push) Blocked by required conditions
Generate and Sync OpenAPI / Generate OpenAPI and commit to Dokploy repo (push) Waiting to run
feat: transfer services between servers
2026-09-09 13:21:27 -06:00
Narciso E. Núñez Arias
d5328703fa
Merge pull request #5407 from imrja8/fix-sso-flash 2026-09-09 13:15:29 -04:00
Yash Kumar
a6c1f3048f fix(ui): standardize settings layout widths to full width 2026-09-09 21:24:03 +05:30
Yash Kumar
9cae609a0a fix(auth): prefetch SSO state in SSR to prevent layout flash 2026-09-09 20:09:23 +05:30
Mauricio Siu
2c234d6e20 test(transfer): shrink pipe payload and set an explicit timeout so the suite does not time out in CI 2026-09-09 02:57:51 -06:00
Mauricio Siu
9dcdb53aa1 feat(transfer): move services between servers with their volumes, mounts and config
Adds a Transfer action on every service page that moves an application,
compose or database to another server without S3: volumes, bind mounts
and deployment logs are streamed through the panel (ssh2/spawn pipe),
file mounts and Traefik config are recreated on the target, the source
is cleaned up and the service is deployed on the target. Failures before
cleanup roll back to the source server.
2026-09-09 02:50:29 -06:00
Mauricio Siu
bda8124291
Merge pull request #5351 from Dokploy/fix/dependabot-critical-security-updates
Some checks are pending
Auto PR to main when version changes / create-pr (push) Waiting to run
Build Docker images / build-and-push-cloud-image (push) Waiting to run
Build Docker images / build-and-push-schedule-image (push) Waiting to run
Build Docker images / build-and-push-server-image (push) Waiting to run
Dokploy Docker Build / docker-amd (push) Waiting to run
Dokploy Docker Build / docker-arm (push) Waiting to run
Dokploy Docker Build / combine-manifests (push) Blocked by required conditions
Dokploy Docker Build / generate-release (push) Blocked by required conditions
Dokploy Docker Build / sync-version (push) Blocked by required conditions
autofix.ci / format (push) Waiting to run
Dokploy Monitoring Build / docker-amd (push) Waiting to run
Dokploy Monitoring Build / docker-arm (push) Waiting to run
Dokploy Monitoring Build / combine-manifests (push) Blocked by required conditions
Generate and Sync OpenAPI / Generate OpenAPI and commit to Dokploy repo (push) Waiting to run
fix: resolve 6 critical Dependabot alerts
2026-09-08 16:29:38 -06:00
Artur Spatari
5611662351 feat(vault): address an Infisical folder from the reference
An Infisical provider is pinned to one non-recursive `secretPath`, so reading
two folders means two providers, two machine identities and two sets of
credentials to rotate. This lets a reference name the folder instead:

    ${{vault.my-provider.external/sentry:SENTRY_DSN}}

`<path>:<KEY>` mirrors the HashiCorp client in this directory, which already
documents that exact format. A relative path resolves against the provider's
`secretPath`, a leading slash is absolute, and a ref without a colon keeps its
current meaning — the whole ref is the secret name at the provider's own path.

A dot cannot be the separator here: Infisical accepts dots inside secret names
(`A.B.C` is a valid key), so `provider.a.b.C` cannot be split unambiguously
and would silently break anyone using such a name.

Refs are grouped by resolved path so each path is listed once, and the login
happens once per batch rather than once per path.

Tests cover the bare ref, relative and absolute paths, a provider at `/`,
grouping with a single login, the error naming the path, and a malformed ref.
2026-09-08 21:38:24 +03:00
Narciso E. Núñez Arias
887a457f15
Merge pull request #5374 from aspatari/fix/infisical-expand-secret-references
fix(vault): expand Infisical secret references when listing secrets
2026-09-08 14:08:52 -04:00
autofix-ci[bot]
df4e299545
[autofix.ci] apply automated fixes 2026-09-08 17:43:47 +00:00
Yash Kumar
be128d5a4a Merge remote-tracking branch 'upstream/canary' into fix/dns-upsert-preserve-existing-records
# Conflicts:
#	packages/server/src/utils/dns/infomaniak.ts
2026-09-08 22:54:00 +05:30
Narciso E. Núñez Arias
467c80a73d
Merge pull request #5356 from mitc-gjuge/feat/infomaniak-record-filter
perf(dns): filter Infomaniak records server-side when upserting
2026-09-08 13:13:43 -04:00
Yash Kumar
caca3c19ae Resolve merge conflicts in drizzle migrations 2026-09-08 17:06:17 +05:30
Yash Kumar
91db4e60c4 fix(dns): match record content in upsertRecord to prevent overwriting existing records
Previously, upsertRecord matched only by type and name, silently
overwriting any existing record of the same type/name with different
content. This caused data loss when users had multiple records of the
same type (e.g. multiple TXT records for SPF + site verification).

Now upsertRecord also checks the record content/target before deciding
to update. If the content differs, a new record is created alongside
the existing one instead of replacing it.

Affected providers: Cloudflare, Porkbun, Infomaniak, OVH.
Tests updated accordingly.
2026-09-08 16:59:16 +05:30
Mauricio Siu
67f6890fc8 fix(sso): trust admin-configured SSO providers for account linking
better-auth's account-linking guard requires either the IdP asserting
email_verified or the sso_provider row being domainVerified before it
will link an SSO login to an existing local user with the same email.
Entra ID never asserts email_verified (neither via its OIDC userinfo
endpoint nor via SAML attributes), and Dokploy never persisted
domainVerified at all, so linking was permanently impossible for any
Entra-backed provider (OIDC or SAML) regardless of the local user's
own emailVerified state.

Add the domainVerified column, defaulting to true — Dokploy already
scopes providers to an admin-configured domain and gates registration
behind enterprise/admin permissions, so that domain match (still
enforced by better-auth's validateEmailDomain check) is trust enough.

Fixes #5099
2026-09-08 03:17:02 -06:00
Mauricio Siu
988f5b64d6 feat(trial-banner): add trial banner component to display trial status in sidebar 2026-09-08 01:26:41 -06:00