Commit Graph
18782 Commits
Author SHA1 Message Date
peaklabs-dev cd975b49aa docs(release): merge next into main only on the day of the release 2026-11-09 00:23:22 +01:00
🏔️ Peak 91985acf42 build(image): remove the unused MinIO client from the coolify image (#12491) 2026-11-09 00:09:50 +01:00
Andras BacsaiandClaude Opus 5.5 3f51c251c0 fix(git): show the full Git error reason on a failed repository read
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 21:02:46 +01:00
Andras Bacsai 61b10664c4 refactor(security): remove published APP_KEY request blocking middleware
Drop the RejectPublishedAppKey middleware and its registration in the
HTTP kernel, so requests are no longer refused with a 503 when APP_KEY
or APP_PREVIOUS_KEYS matches a key shipped in the repository.

Rename PublishedAppKeyTest to DecryptWithoutClassesTest and keep only
the checks that Sentinel tokens and team channel payloads are decrypted
without unserializing objects.
2026-11-08 18:24:02 +01:00
Andras Bacsai c75e7078b7 fix(access): restrict preview changes, rollbacks, and repo URL updates
- Require the write permission and update policy to open a preview or
  change its pull request URL, git type, or docker tag via the API;
  deploy-only tokens can only redeploy an existing preview
- Reject rollbacks to commits that are neither a listed rollback image
  nor a successful production deployment (GetRollbackImages::allows)
- Validate git_repository with ValidGitRepositoryUrl when it changes on
  application update
- Add RejectPublishedAppKey global middleware
- Show a "still starting" message when the root setup window is pending
- Document the new 403 responses and constraints in the OpenAPI spec
- Add tests for the new checks
2026-11-08 17:26:34 +01:00
Andras Bacsai 3c588d482d fix(access): apply API token limits in more permission checks
- Use the limits of the API token in more permission checks.
- Show a clearer message when a token limit blocks a change.
- Describe API tokens with limits in SECURITY.md.
2026-11-08 15:53:02 +01:00
Andras BacsaiandClaude Opus 5.5 1d21a27812 refactor(image-scan): remove the instance switch and the vulnerability DB URL
Scanning is now controlled per server and per app. Each server downloads
the Grype database from its default source.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 15:49:05 +01:00
Andras Bacsai 3b64cbc379 fix(access): clearer credential message and backup S3 defaults
- Show a clear message when team-wide write access is needed to use
  team credentials.
- Reset the S3 selection on the backup page when a change is not allowed.
- Do not save database backups to S3 when the API request does not
  send save_s3, as the API documentation says.
2026-11-07 22:04:44 +01:00
Andras Bacsai 8011d0d6ab fix(access): check server and credential access for scoped members (#12488) 2026-11-07 18:59:17 +01:00
🏔️ Peak 29aa42b982 chore(docker): use the multi-platform Node.js image again (#12483) 2026-11-06 23:50:21 +01:00
Andras Bacsai eb5f238a45 fix(server): show the disabled server message on the localhost page
Closes #12475
2026-11-06 19:52:05 +01:00
Andras Bacsai f7ea962145 fix(server): enable disabled self-hosted servers again on validation
On self-hosted, a validation that connects now clears force_disabled. The unreachable cleanup skips the localhost server, and the server page explains why a server is disabled. Cloud and transferred servers stay disabled.

Closes #12475
2026-11-06 18:57:06 +01:00
Andras BacsaiandClaude Opus 5.5 5af4715b8a feat(ui): put the star button after the status in the top bar
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 18:29:43 +01:00
Andras BacsaiandClaude Opus 5.5 c648f4ec6a feat(ui): star servers and resources for quick access on the dashboard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 18:16:25 +01:00
Andras BacsaiandClaude Opus 5.5 cab5ae9903 feat(ui): show server usage on mobile in the dashboard server table
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 18:16:16 +01:00
Andras BacsaiandClaude Opus 5.5 1652a1d091 feat(ui): show the finish time of recent deployments on the dashboard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 17:46:54 +01:00
Andras Bacsai d640aa15f5 docs(changelog): add Orbit template, maintenance page, and port fix
Add changelog entries for the Orbit service template, moving
maintenance mode to its own page with a confirmed toggle, and no
longer warning about the port when a service domain has no port.
2026-11-06 15:24:55 +01:00
Andras BacsaiandClaude Opus 5.5 973cd8684a feat(ui): show the logo and name on the resource creation screen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:23:07 +01:00
Andras Bacsai abea0747ed feat(service): add Orbit template 2026-11-06 15:22:21 +01:00
Andras BacsaiandClaude Opus 5.5 17a9fa624e feat(ui): move maintenance mode to its own page with a confirmed toggle
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:20:41 +01:00
Andras BacsaiandClaude Opus 5.5 53e21abe97 fix(services): do not warn about the port when a domain has no port
An empty port routes to the required port, so it needs no confirmation.
The edit dialog shows the effective port, the warning buttons name the
ports, and domain conflicts ignore the container port.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:17:35 +01:00
Andras BacsaiandClaude Opus 5.5 b1a20fabd4 fix(ui): hide tooltips on close and dismiss buttons
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:12:41 +01:00
Andras BacsaiandClaude Opus 5.5 e614e680c0 docs(agents): document the changelog format
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:03:51 +01:00
Andras BacsaiandClaude Opus 5.5 9781921217 fix(dev): keep QEMU servers that still have resources on seed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:03:46 +01:00
Andras Bacsai 71d33863af docs(changelog): condense Unreleased breaking and security entries
Group the Unreleased breaking changes and security notes into short,
bolded summary bullets with combined PR links, replacing the long
per-change descriptions.
2026-11-06 14:53:24 +01:00
Andras Bacsai 54da974045 chore(upstream): bump Sentinel to 1.1.5 2026-11-06 14:50:35 +01:00
Andras Bacsai 757a049002 docs(changelog): add breaking changes and security notes to Unreleased
Document the breaking changes for queued webhook deployment cancellation,
cloud provider token API access, and the new Resend sender fields.

List the security changes: SSH host key pinning for servers and Git hosts,
Ed25519 key generation and key rotation, hardened SSH options, hidden
private keys, Sentinel token handling, terminal session expiry, SMTP and
DNS validation, stricter team access checks, audit event privacy, and
API rate limiting for failed requests.
2026-11-06 14:44:12 +01:00
033f0c84da v4.7 (#12478)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
Co-authored-by: Aditya Tripathi <aditya@climactic.co>
2026-11-06 14:25:02 +01:00
Andras Bacsai b7dc2e435b feat(database): default new Redis databases to the Valkey image
Change the standalone_redis image column default to
valkey/valkey:9-alpine. Existing databases keep their current image.
Update the API docs, OpenAPI specs and image helper text to name Valkey
as the default and redis:8 as the Redis example.

Also restyle the status badges and database image cards on the new
resource page.
2026-11-06 12:44:00 +01:00
Andras Bacsai 145569bea6 fix(db): bump Supabase and PostGIS default images
Supabase PostgreSQL 17.4.1.032 -> 17.11.0.018, PostGIS 17-3.5-alpine -> 18-3.7-alpine.
2026-11-06 12:39:53 +01:00
Andras BacsaiandClaude Opus 5.5 813bc72af4 fix(ui): shorten database descriptions on the new resource page
The PostgreSQL, MongoDB, and ClickHouse descriptions were cut off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 12:37:36 +01:00
Andras BacsaiandClaude Opus 5.5 52d7d88fd6 docs(api): document Valkey images for Redis databases
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 12:37:36 +01:00
Andras BacsaiandClaude Opus 5.5 41877198b3 feat(database): offer Valkey as an image of the Redis database type
When a user creates a Redis database, a new step asks for Redis 7.2
(default) or Valkey 9. Valkey uses the same binaries (redis-* symlinks),
config, and data format, so the Redis start action runs it unchanged.
The UI now names the type "Redis / Valkey" and shows a combined logo,
and global search accepts "new valkey".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 12:37:36 +01:00
Andras BacsaiandClaude Opus 5.5 878d77bd66 fix(database): make the Redis health check ping with the password
The check was [CMD-SHELL, redis-cli, ping], so Docker ran only redis-cli
and it always passed. redis-cli also exits 0 on NOAUTH and LOADING.
The check now pings with the server password and requires PONG. With a
custom redis.conf that sets its own requirepass, it requires PONG or NOAUTH.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 12:37:36 +01:00
Andras BacsaiandClaude Opus 5.5 5960814df5 fix(ui): match deploy canvas card border to resource tiles
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 12:24:59 +01:00
Andras BacsaiandClaude Opus 5.5 91d233be59 feat(ui): add list view to the new resource page
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 12:18:37 +01:00
Andras BacsaiandClaude Opus 5.5 106a6d7ac0 fix(env): resolve and redact server-scoped shared variables in compose
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 12:16:39 +01:00
Andras BacsaiandClaude Opus 5.5 00d0b4be1d fix(ui): add coolify.io ref to integration token provider links
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 11:28:15 +01:00
Andras BacsaiandClaude Opus 5.5 693cf0486d fix(ui): link secret manager token forms to their provider dashboards
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 11:22:49 +01:00
Andras BacsaiandClaude Opus 5.5 bd499de1fb feat(ui): add UI scale option to appearance settings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 11:18:33 +01:00
Andras Bacsai c8c639e3d6 fix(realtime): keep Reverb handshake under its size limit with large cookie headers
Raise the Reverb max request size and store the remembered list view
cookies unencrypted, so the WebSocket handshake no longer fails with 413
and live updates (like proxy restart logs) reach the browser.
2026-11-06 11:01:06 +01:00
Andras BacsaiandClaude Opus 5.5 b12c965fbe fix(ui): use bare status badges and show backup S3 storage as plain text
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 10:49:21 +01:00
Andras BacsaiandClaude Opus 5.5 ba966846e1 fix(ui): show relative start time with exact date tooltip in service backup executions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 10:39:28 +01:00
Andras BacsaiandClaude Opus 5.5 3115980c77 fix(ui): copy service backup path and show S3 badge only for runs stored in S3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 10:38:49 +01:00
Andras BacsaiandClaude Opus 5.5 7fbc5d7797 fix(ui): align service backup tables and sort executions by column
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 10:38:18 +01:00
Andras BacsaiandClaude Opus 5.5 70adcc2b0e feat(databases): use newer default images for standalone databases
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 09:46:01 +01:00
Andras BacsaiandClaude Opus 5.5 3379fa448a fix(audit): keep personal data and credentials out of audit events
Anonymize the audit events of a deleted user, store only the ID and
name of other users, and drop the metadata copy of actor_email.
Store URLs without query strings, registries without user info, and
the exception class instead of raw SSH errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 09:31:44 +01:00
Andras BacsaiandClaude Opus 5.5 b7d0e6be2a fix(audit): stop duplicate and empty audit rows
- Set env var version and compose parsing version while creating, so a create writes one row
- Record no rows for the auto-created preview copy of an env var
- Record env and application API updates only with the fields that really changed
- Store no change data for new env vars, and null for empty change data
- Store metadata team_id as an integer
- Drop the unused level and resource indexes of audit_events

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 23:49:17 +01:00
Andras Bacsai 13298591d8 fix(api): throttle API clients that keep failing and notify the token's team
- Return 429 after 30 failed (401/403/404) requests per minute for one
  token or IP, also for unknown API routes (API_FAILED_REQUEST_RATE_LIMIT)
- Notify the team once a day when a token reaches the limit
- Deduplicate ability_denied and scope_denied audit events for 5 minutes
2026-11-05 23:38:37 +01:00
Andras BacsaiandClaude Opus 5.5 0e01f2149c fix(sentinel): send Retry-After for unreachable servers and invalid tokens
- Send Retry-After: 300 when the server is not functional
- Send Retry-After: 3600 when the push token cannot be decrypted

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 23:36:35 +01:00