Commit Graph
2045 Commits
Author SHA1 Message Date
Andras Bacsai a39370dbb8 fix(postgresql): prevent init script path traversal 2026-10-29 18:01:43 +01:00
Andras Bacsai 6030d096bf fix(team): send working invitation links to users without a password
Re-inviting an email after its invitation expired, or re-inviting a user
who never set a password, sent a link that needs a login the user cannot
complete. Unused invited accounts now get a magic link again, and changing
another user's password no longer ends the current session.
2026-10-29 17:54:17 +01:00
Andras Bacsai b41ba87fff fix(application): reject Docker image names shared by building applications
Two applications that build the same Docker image name push the same
tags (commit SHA, latest, pr-<id>), so one can run the image of the
other. Deployments, the General form, and the API now reject such a
name for applications of the same team.

Closes #9834
2026-10-29 11:30:25 +01:00
Andras Bacsai 623d367a2a fix(env): keep preview variable order when sorting is disabled
Closes #9876
2026-10-29 11:18:02 +01:00
Andras BacsaiandClaude Opus 5.5 6f8cf50402 feat(env): show compose defaults for empty variables in developer view
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 11:15:46 +01:00
Andras BacsaiandClaude Opus 5.5 6e3ab703bf fix(application): show watch paths for deploy key applications
Closes #12373

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 11:09:16 +01:00
Andras Bacsai 103af830e5 feat(dashboard): sort projects and servers by clicking a column header 2026-10-29 11:05:39 +01:00
Andras Bacsai af28ba8bbc feat(tables): sort tables by clicking a column header 2026-10-29 10:53:54 +01:00
Andras BacsaiandClaude Opus 5.5 3607abf7eb fix(servers): load server manager servers in batches by id
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 23:59:34 +01:00
Andras BacsaiandClaude Opus 5.5 a12f62ed4f fix(dashboard): bound recent deployments query per application
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 23:58:59 +01:00
Andras BacsaiandClaude Opus 5.5 3d956c110c fix(servers): skip patch check results in bulk settings loads
ServerManagerJob and the Docker cleanup step of ScheduledJobManager
load the settings of every server with SELECT *. That reads the
patch_check_result JSON, which holds the full update list of each
server. With 12,709 rows, the scan took about 4 ms, but the full fetch
took 390-536 ms and 294 MB of PHP memory. Without the column it took
74 ms and 111 MB.

Add ServerSetting::withoutPatchCheckResult() and use it in both loops.
Queued jobs reload the full settings through SerializesModels.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 23:58:51 +01:00
Andras BacsaiandClaude Opus 5.5 c34f5f8e3b fix(servers): index active server lookups by private key
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 23:47:55 +01:00
Andras BacsaiandClaude Opus 5.5 55605f6516 fix(github-runners): select runner servers with a UNION of server ids
An OR of two correlated EXISTS subqueries made Postgres estimate a
per-server scan of the runner executions, so JIT compilation took most
of the time of the per-minute reconcile query. Select the server ids
from both runner tables with one UNION and index executions by status
and server.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 23:43:16 +01:00
Andras BacsaiandClaude Opus 5.5 7324b5ca7b fix(webhooks): filter manual webhook applications by repository in SQL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:54:34 +01:00
Andras BacsaiandClaude Opus 5.5 c23d3363f2 fix(deployments): load only commit details for the application heading
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:53:30 +01:00
Andras BacsaiandClaude Opus 5.5 68a08170e7 fix(docker): index interrupted cleanup lookup and process it in batches
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:53:10 +01:00
Andras BacsaiandClaude Opus 5.5 2616b4bba1 fix(deployments): index history ordering and skip payload columns in lists
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:44:28 +01:00
Andras Bacsai 57cdd92f7c fix(upgrade): count only scheduled jobs running on this host 2026-10-28 22:13:40 +01:00
Andras BacsaiandClaude Opus 5.5 24648d4b20 fix(docker-cleanup): skip broadcast for executions of deleted servers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:13:27 +01:00
Andras BacsaiandClaude Opus 5.5 bd9708d79b fix(compose): let the build interpolate required runtime-only variables
Closes #12363

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 14:16:22 +01:00
Andras BacsaiandClaude Opus 5.5 e7a46bd790 fix(mcp): show commands and configuration to read:sensitive tokens
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 14:16:22 +01:00
Andras BacsaiandClaude Opus 5.5 afe8fc05ea fix(healthcheck): keep the Dockerfile HEALTHCHECK of existing applications
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 14:16:22 +01:00
Andras BacsaiandClaude Opus 5.5 fd5efd0273 fix(http): stop retrying requests that timed out after they were sent
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 14:16:22 +01:00
Andras BacsaiandClaude Opus 5.5 597a878d80 fix(hetzner): validate over SSH when the Hetzner API call fails
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 14:16:22 +01:00
Andras BacsaiandClaude Opus 5.5 c4a7cd6d4a fix(ssh): reap orphaned ControlPersist mux masters
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 14:16:22 +01:00
Andras Bacsai 9aca61fbd6 fix(ssh): start mux masters with a command that exits
When another process held the control socket, `ssh -fN` disabled
multiplexing and stayed open as a plain connection forever. Each one
kept an sshd process on the server, which used up its memory.

Run `true` instead of -fN. ControlPersist moves a new master to the
background; a process that cannot become the master exits.
2026-10-28 12:10:27 +01:00
Andras Bacsai 2dcf8eeca3 fix(previews): keep production values for previews from before the upgrade
Public pull request previews no longer get production values, and no
preview falls back to production variables. Existing previews were
deployed with these values; for example, their databases were
initialized with the production password, so they broke on redeploy.

Previews that exist at the upgrade get keeps_production_values and
keep the earlier behavior. Previews created later do not. Server
transfer moves the flag.
2026-10-28 12:10:27 +01:00
Andras Bacsai 5dacaed9f2 fix(proxy): keep the application proxy labels of v4.5.0
The retry labels (Traefik retry middleware, Caddy lb_try_duration)
changed the labels of every application. On the first rolling update
after a settings save, the old and the new container defined the same
Traefik router differently, so Traefik dropped the route and returned
503 until the old container stopped.

Remove the retry labels from this release. The rolling update drain
wait stays.
2026-10-28 12:10:27 +01:00
Andras Bacsai ef57eea320 fix(backups): sign mc requests with S3v4 and retry failed S3 uploads 2026-10-28 10:35:46 +01:00
Andras BacsaiandClaude Opus 5.5 5145aa53dc fix(services): align service configuration form with role permissions (#12356)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 22:39:52 +01:00
Andras BacsaiandClaude Opus 5.5 eaabed5c4b fix: scope finish events of background tasks to their team (#12355)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 22:36:25 +01:00
Andras BacsaiandClaude Opus 5.5 fae2752346 fix(databases): show custom configuration only to admins (#12353)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 22:34:47 +01:00
Andras Bacsai e21be95392 Merge branch 'ghsa-v432-app-credentials-members' 2026-10-27 21:40:37 +01:00
Andras BacsaiandClaude Opus 5.5 9b9d1309d1 fix(api): allow write tokens to set manual webhook secrets
Webhook secrets are stored settings, so a token with the write ability can
set or change them, the same as GitHub App and GitLab App webhook secrets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 21:24:20 +01:00
Andras BacsaiandClaude Opus 5.5 eb030c6a22 fix(auth): limit application commands and configuration to admins and read:sensitive tokens
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 21:19:20 +01:00
Andras Bacsai d59899469c test(deployments): cover Docker-created bind dirs and sudo-less imports 2026-10-27 18:56:46 +01:00
Andras BacsaiandClaude Opus 5.5 56d0cf0e27 fix(servers): validate new cloud servers automatically when they are running
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:58:34 +01:00
Andras BacsaiandClaude Opus 5.5 28f44d3aa0 fix(hetzner): show out-of-stock server types as disabled in the server form
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:44:34 +01:00
Andras Bacsai 101444b8ca fix(log-drains): support Axiom edge domains and update Fluent Bit to 5.1
- Add an Axiom edge domain setting (default us-east-1) and use the /v1/ingest endpoint, so EU datasets work
- Remove the Highlight drain (service ended) and stop its running containers
- Update Fluent Bit from 2.0 to 5.1 and use the warn log level
- Restart running drains when the generated files change, with the new image pulled before the old container stops
- Show log drain validation errors under their fields

Closes #9898
2026-10-27 17:41:50 +01:00
Andras BacsaiandClaude Opus 5.5 18a85d37ba fix(hetzner): hide server types that are out of stock or deprecated in a location
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:35:22 +01:00
Andras Bacsai 1242353511 Merge remote-tracking branch 'origin/main' 2026-10-27 17:24:19 +01:00
Andras Bacsai bb1fada600 fix(clone): replace the clone suffix instead of adding one for each clone
Cloning a clone added another "-clone-<id>" to the name, so after about
seven clones the name was longer than 255 characters and the insert failed.

Closes #9976
2026-10-27 17:06:52 +01:00
Andras BacsaiandClaude Opus 5.5 1440ea83d3 fix(compose): keep port-suffixed SERVICE_URL and SERVICE_FQDN variables in sync with the domain
Closes #9877

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:04:07 +01:00
Andras BacsaiandClaude Opus 5.5 1082b598c4 fix(api): return logs of stopped containers like the UI
The log endpoints found containers with `docker ps -a`, then rejected
every container that was not running. Remove that check, so failed
deployments can be diagnosed through the API. Without service_name,
the application endpoint prefers a running container. The old error
stays when no container exists.

Closes #9972

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:03:52 +01:00
Andras Bacsai e78659dfed fix(api): preserve omitted env var values and flags on PATCH (#12240) 2026-10-27 17:00:56 +01:00
Andras Bacsai 69bc72a3b5 fix(analytics): fetch Sentinel dashboards of all servers concurrently
The analytics page fetched each server's dashboard bundle over SSH one
after another, so the skeleton stayed until every server answered. Start
all fetches at the same time and remember failures, so the page waits
only for the slowest server.

Closes #12347
2026-10-27 16:47:55 +01:00
Andras BacsaiandClaude Opus 5.5 ba58884565 fix(dev): stop GPU VM start while host processes use the GPU
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 16:38:21 +01:00
Andras BacsaiandClaude Opus 5.5 bb24acd957 fix(http): retry connection failures of idempotent requests for all HTTP calls
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 16:36:50 +01:00
Andras Bacsai 16c6de823b fix(cloud-providers): show why Hetzner, DigitalOcean, and Vultr API requests fail
Provider errors now return 502 with a safe message, the provider status, and
the provider error code instead of a bare 500. Hetzner no longer sends a create
request again after a 5xx, and a VPS that Coolify did not save is deleted.
2026-10-27 16:35:57 +01:00
Andras Bacsai f202ed5d83 Merge remote-tracking branch 'origin/main' 2026-10-27 16:27:28 +01:00