175 Commits
Author SHA1 Message Date
Andras BacsaiandClaude Opus 5.5 2fbe9d2abe fix(proxy): notify once for each new Traefik patch version
Closes #9727

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:43:10 +01:00
Andras Bacsai 06c41f57d6 feat(notifications): throttle repeated scheduled job failures and disable failing tasks 2026-11-03 20:42:03 +01:00
Andras BacsaiandClaude Opus 5.5 1ff99b0dc8 fix(logs): start the log copy during the click so it works on iOS
Closes #9408

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:41:03 +01:00
Andras BacsaiandClaude Opus 5.5 5431d4954d fix(server): run the connection check Docker commands through SSH mux
Each new SSH connection opens a systemd-logind session. Some systemd
versions leak closed sessions until the host refuses logins at 8192.
The connection check now opens one new login (the probe), not three.

Closes #9148

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:40:21 +01:00
Andras BacsaiandClaude Opus 5.5 d6acd9a3c5 fix(docker): use the Ubuntu and Debian repositories in the Docker install fallback
Closes #9455

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:39:44 +01:00
Andras BacsaiandClaude Opus 5.5 fc027be248 fix(compose): warn when the Compose file is in a subdirectory of the base directory
Closes #9525

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:36:26 +01:00
Andras BacsaiandClaude Opus 5.5 a05fe524f8 fix(storage): confirm volume renames because the data stays in the old volume
Closes #8816

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:34:55 +01:00
Andras BacsaiandClaude Opus 5.5 e29dcf70d9 fix(service): mark parts that are no longer in the Compose file
Closes #9591

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:34:37 +01:00
Andras BacsaiandClaude Opus 5.5 d6405d5545 fix(deployment): remove the helper container before restarting it with the same name
Docker frees the name of a stopped --rm container in the background, so
the second helper docker run for build secrets could fail with a name
conflict. Remove the old helper with docker rm -f before the run.

Closes #9363

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:31:55 +01:00
Andras BacsaiandClaude Opus 5.5 e13652ee12 chore(changelog): remove scheduled task entries added by mistake
They belong to uncommitted work and come back with it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:31:37 +01:00
Andras BacsaiandClaude Opus 5.5 8c6774e17f fix(deploy): keep the helper Docker CLI on its buildx plugin
A build-time HOME or DOCKER_CONFIG variable moved the Docker CLI in the
helper away from /root/.docker/cli-plugins, so BuildKit builds failed with
"buildx component is missing or broken". Force DOCKER_CONFIG=/root/.docker
for the build command and for the helper when build secrets are passed.

Closes #9726

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:31:16 +01:00
Andras BacsaiandClaude Opus 5.5 52a78cdb0f fix(env): keep the trailing newline of multiline environment variables
Closes #9438

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:30:59 +01:00
Andras BacsaiandClaude Opus 5.5 71814b4541 fix(deployment): use one COOLIFY_BRANCH value for preview deployments
A preview deployment set COOLIFY_BRANCH in three places with three
values: the Compose shell variables used the application branch
(main), the Compose parser used pull/<id>/head, and other build packs
used the fetched refspec (pull/<id>/head:pr-<id>-coolify) or the
application branch. A variable that refers to ${COOLIFY_BRANCH} then
got a different value than the container. All paths now use
Application::coolifyBranch(), which gives pull/<id>/head for previews
and git_branch for production deployments.

Closes #9572

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:25:28 +01:00
Andras BacsaiandClaude Opus 5.5 d3ef4d1c57 fix(service): route the rybbit /api path to the backend
The Rybbit template had a proxy route only for the client, so the
/api requests of the browser got a 404 from the client and sign-up
and login failed. The backend now declares SERVICE_URL_RYBBIT_3001=/api
on the same host and keeps the /api prefix. The backend is listed
before the client, so SERVICE_URL_RYBBIT (used in BASE_URL) stays the
root URL.

Closes #9055

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 20:19:27 +01:00
Andras Bacsai f21acdc3e4 fix(notifications): notify when a resource stops unexpectedly
Status checks now queue a delayed check for each application, preview,
service part, or database that goes from up to exited. After 2 minutes
it sends the "Resource status changes" notification if the resource is
still stopped, no deployment runs, and Coolify did not stop it. Each
resource sends at most one notification in 15 minutes.

Closes #9493
2026-11-03 20:18:50 +01:00
Andras BacsaiandClaude Opus 5.5 e20e652c00 fix(dns): check the closest Cloudflare wildcard for deeper domain names
Closes #12436

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 19:42:14 +01:00
Andras BacsaiandClaude Opus 5.5 d70801aaa1 fix(github): retry GitHub API reads on server and connection errors
Retry GET requests of githubApi() up to three times when GitHub answers
with a 5xx error or the connection fails. One 502 or one timeout on the
repository lookup before a deployment failed the deployment. Writes are
not retried, so a pull request comment is not posted two times. The
installation token request uses the same retry rule.

Closes #9785

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 19:42:04 +01:00
Andras Bacsai b7a2c75739 fix(github): check clock skew only from failed GitHub App responses
Stop calling /zen before each installation token request. A short
network problem to GitHub failed deployments with a cURL timeout on
/zen. assertGithubClockInSync now takes the failed response and reads
its Date header, so the "System time is out of sync" error still shows
when GitHub rejects the JWT.

Call it on failed JWT requests in the webhook installation check, the
permission job, the source connection test, and the server transfer
checklist. Remove the /zen fakes from the tests.
2026-11-03 19:29:45 +01:00
Andras BacsaiandClaude Opus 5.5 7f521e496d fix(s3): add a setting to skip TLS verification for S3 storages
S3 storages with a self-signed or private CA certificate failed with
"cURL error 60", because the Coolify container and the backup helper do
not use the CA certificates of the host. The new opt-in setting turns off
the certificate check in the PHP S3 clients and sets MC_INSECURE for mc.

Closes #9762

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:59:52 +01:00
Andras BacsaiandClaude Opus 5.5 a487d7c9d3 fix(service): prefix the litellm master key with sk- and add a salt key
Closes #10521

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:31:47 +01:00
Andras BacsaiandClaude Opus 5.5 dd8ea3dc93 fix(service): use postgres 16 in the outline template
New Outline versions run CREATE OR REPLACE TRIGGER in a migration,
which needs PostgreSQL 14 or later. On postgres:12-alpine the migration
failed and the Outline container restarted in a loop.

Closes #12345

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:31:28 +01:00
Andras BacsaiandClaude Opus 5.5 8f7d1be7a9 fix(service): limit supabase vector to the logs of its own stack
Closes #10324

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:30:43 +01:00
Andras BacsaiandClaude Opus 5.5 e9028e1338 fix(service): allow the redirect_to header in appflowy gotrue cors
AppFlowy Web runs on its own domain and sends a Redirect_to header to
/gotrue/magiclink on the admin domain. GoTrue does not allow that
header by default, so the CORS preflight failed and email sign-in
showed "Network error". Set GOTRUE_CORS_ALLOWED_HEADERS=redirect_to.

Closes #10545

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:29:35 +01:00
Andras BacsaiandClaude Opus 5.5 ccaa04ce33 fix(service): use postgresql in the bugsink template
The template used mysql:latest with binary logging on and no limit,
so the binary logs filled the disk and Bugsink stopped. Use
postgres:17-alpine and bugsink/bugsink:2, as the Bugsink Docker
Compose sample does. Existing services keep MySQL; the changelog
tells how to purge the logs and turn binary logging off.

Closes #10626

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:28:46 +01:00
Andras BacsaiandClaude Opus 5.5 83a5667387 fix(server): detach additional-destination apps instead of deleting them on server delete
Deleting a server with "Delete all resources" (UI) or ?force=true (API)
deleted every application that used the server, also applications that
use it only as an additional destination, for example after Promote.

Server delete now deletes only resources whose main destination is on
the server. Applications that use it only as an additional destination
lose their additional_destinations row for the server, and their
containers on it are stopped (best effort). The check for resources and
the transfer archive path use the same Server::primaryResources().
The delete confirmation lists the resources to delete and the
applications that keep running on another server.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:23:52 +01:00
Andras BacsaiandClaude Opus 5.5 b7defddc32 fix(dns): verify the Cloudflare origin and add records for clones and API-created resources
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:17:53 +01:00
Andras BacsaiandClaude Opus 5.5 7ec000ab86 fix(service): pin usesend template to v1.10.0
Use usesend/usesend:v1.10.0 instead of latest, so servers do not keep
an old cached image without the v1.10.0 security updates. The template
never used MinIO, so the RustFS change of v1.10.0 does not apply.

Closes #12443

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:14:45 +01:00
Andras BacsaiandClaude Opus 5.5 f057aaf2e6 fix(rollback): list the commit images of Docker Compose applications
Closes #12446

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:14:32 +01:00
Andras BacsaiandClaude Opus 5.5 9c6138fe18 fix(cleanup): stop loading deployment logs and unused backup executions
The stuck resources cleanup selected every column of every deployment,
including logs, and ran out of memory during app:init. Select only the
id and application_id. Also drop the unused executions property on the
backup pages and an unused execution loader.

Closes #12435

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:14:23 +01:00
Andras BacsaiandClaude Opus 5.5 bb6dfd147e fix(mcp): queue MCP deployments behind a deployment in progress
The MCP deploy tool and control start skipped the deployment queue, so
two rolling updates of one application could run at once and remove the
new container of each other. A rolling update now also removes only the
containers that ran before it started.

Closes #12442

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:12:58 +01:00
Andras BacsaiandClaude Opus 5.5 777362cd97 feat(proxy): mark unused Traefik certificates and delete them in one step
Traefik renews every certificate in acme.json, also when no route uses
its domain. The TLS certificates page now marks certificates that no
Traefik label, proxy config file, or resource domain on the server uses,
and a "Delete unused" button removes them in one write with one backup.

Closes #12447

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:12:40 +01:00
Andras BacsaiandClaude Opus 5.5 c94411fb92 fix(clone): do not copy preview records when an application is cloned
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:05:11 +01:00
Andras BacsaiandClaude Opus 5.5 688134a994 feat(backups): import backups from a dialog on the backups page
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:59:57 +01:00
Andras BacsaiandClaude Opus 5.5 6254f44f16 fix(metrics): show disk usage when Sentinel names the data disk by another mount
Use the only reported disk when no known root mount is reported, and stop
filtering disk history by mount names so Sentinel 1.1.4+ keeps that disk.

Closes #12448

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:53:15 +01:00
Andras BacsaiandClaude Opus 5.5 ed03a31b3a fix(server): keep ip and user as strings after save
Closes #12444

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:52:35 +01:00
Andras Bacsai d333f3f6e6 fix(stripe): end paid subscriptions that lost their Stripe subscription ID
Webhooks matched rows only by subscription ID, so a paid row without one
stayed active after the customer canceled. The deleted and updated events
now verify such a row, the verify job also finds canceled subscriptions,
and the invoice-failed job counts only invoices of the row's subscription.
cloud:sync-stripe-subscriptions reports these rows, and
cloud:fix-subscription --verify-all writes its CSV to a file and shows
details only with -v.
2026-11-03 17:34:49 +01:00
Andras BacsaiandClaude Opus 5.5 7e7f491749 fix(ui): open the unsaved bar for update channel and healthcheck type changes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:33:55 +01:00
Andras Bacsai cf1e0e70c5 feat(deployments): cancel superseded deployments when a newer one is queued 2026-11-03 14:31:52 +01:00
Andras BacsaiandClaude Opus 5.5 daf0e1a70c fix(dns): add the Cloudflare record when a domain is edited to a managed zone
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 14:19:43 +01:00
Andras Bacsai 37b4a8b4e7 fix(mcp): keep the deployment source on additional servers and audit MCP calls as MCP 2026-11-03 14:00:17 +01:00
Andras Bacsai b063a41624 fix(mcp): save MCP deployments as MCP, not as API deployments 2026-11-03 13:56:43 +01:00
Andras BacsaiandClaude Opus 5.5 c3a21eceeb fix(dns): replace unused Coolify records and show conflicts on automatic create
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 11:19:57 +01:00
peaklabs-dev 0becfba911 feat(release): bump coolify version to v4.6.0 2026-11-02 16:55:53 +01:00
peaklabs-dev a0b29739be docs: update CHANGELOG.md with fixes from main and the v4.6 changes
- add the fixes on main since v4.5.3, which ship with 4.6
2026-11-02 16:22:04 +01:00
peaklabs-dev df760f292a docs: add the streamline CDN version file changes to CHANGELOG.md 2026-11-02 00:07:20 +01:00
peaklabs-dev f68b271d96 docs: add the modernize coolify image changes to CHANGELOG.md 2026-11-02 00:06:48 +01:00
peaklabs-dev 3f7d9891a8 docs: add the harden workflows changes to CHANGELOG.md 2026-11-02 00:06:15 +01:00
peaklabs-dev d08dfcb22f docs: add the AGENTS.md changes to CHANGELOG.md 2026-11-02 00:05:26 +01:00
peaklabs-dev 48097c344b docs: add the removed files to CHANGELOG.md 2026-11-02 00:04:49 +01:00
peaklabs-dev 07f95ff081 docs: add the new release channel settings to CHANGELOG.md 2026-11-02 00:04:26 +01:00