Commit Graph
18651 Commits
Author SHA1 Message Date
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
peaklabs-dev 19f82b6e07 Merge branch 'main' of https://github.com/coollabsio/coolify 2026-11-03 17:44:38 +01:00
peaklabs-dev c42222a881 refactor(scripts): move the manifest types to a variable
- rename kept_manifests to manifests_of_kept_tags
2026-11-03 17:41:57 +01:00
peaklabs-dev 75f0ad7459 feat(scripts): use the undocumented docker.io endpoint only for untagged manifests
- read the docker.io tags from the documented tags API
- check that docker.io still has a manifest before deleting it, docker.io also answers 202 to the deletion of a missing manifest
- count every manifest in --delete
2026-11-03 17:41:33 +01:00
peaklabs-dev ef88ea07da ci: disable the manifest cleanup after a failed run 2026-11-03 17:41:10 +01:00
peaklabs-dev 1a888610ad fix(scripts): delete the docker.io manifests deleted on ghcr.io
- a run can stop after the deletion on ghcr.io and before the one on docker.io, so every run deletes on docker.io the versions that ghcr.io deleted last
2026-11-03 17:41:10 +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
Andras Bacsai 1da3124e10 docs(readme): add Bragly to small sponsors 2026-11-03 10:56:37 +01:00
peaklabs-dev 82d89589a2 fix(scripts): delete a shared image after the last index that references it 2026-11-02 23:13:41 +01:00
peaklabs-dev 156f998745 docs(scripts): mark the Docker Hub manifests endpoint as undocumented 2026-11-02 23:06:52 +01:00
peaklabs-dev 6d9c027d1c fix(scripts): count the docker.io layers once where ghcr.io has the manifest
- mark the docker.io sizes with a ~, the manifests that only docker.io has still count their shared layers per image
2026-11-02 23:06:52 +01:00
peaklabs-dev 64d0015622 fix(scripts): delete the unreferenced images before the other indexes
- they came after every index, so the leftovers of earlier runs waited about 190 runs
- delete the oldest first on both registries instead of the manifests that only docker.io has first
2026-11-02 23:06:52 +01:00
peaklabs-dev 67b29ff24a feat(scripts): delete the unused untagged manifests on docker.io
- read every docker.io manifest from the Docker Hub API, tagged or not
- delete the images and attestations of an index right after the index
- show the docker.io sizes next to the ghcr.io ones
2026-11-02 21:58:39 +01:00
peaklabs-dev db1cf006d5 ci: upload the list of the manifests to delete in every run 2026-11-02 21:55:04 +01:00
peaklabs-dev 80574bc164 ci: run the nightly and main builds during working hours 2026-11-02 21:55:04 +01:00
peaklabs-dev fa128d86c9 feat(release): name the stable CDN pull request after its version
- push the stable channel to sync/stable-v<version> instead of a branch named after the time, a new sync of the same version updates its pull request
- close the open sync pull requests of older stable versions as superseded
- name the commit and the pull request after the version change, like the upstream check of peakimages/sqlite, with a note to squash merge it
2026-11-02 21:55:04 +01:00
peaklabs-dev 33c0f6e571 fix(release): sync the preview channel of the CDN before the stable one
- the stable channel opens a pull request and the preview channel pushes to main, both from a fresh clone of the CDN
- the stable pull request now branches off main after the preview push, so a release that moves both latest and preview no longer leaves it with a conflict in versions.json
2026-11-02 17:44:41 +01:00
peaklabs-dev 0becfba911 feat(release): bump coolify version to v4.6.0 v4.6.0 2026-11-02 16:55:53 +01:00
peaklabs-dev 2b4a4bff08 fix(release): name the local tags that differ from origin
- a local tag that differs from origin, such as a tag moved on origin before the tag protection rule, failed the fetch with "could not fetch origin" and no reason, as --quiet also hid the rejected tags
2026-11-02 16:50:05 +01:00
🏔️ Peak 697d559c7c v4.6 (#12401) 2026-11-02 16:27:22 +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 32574d76b1 Merge remote-tracking branch 'origin/main' into next 2026-11-02 16:12:51 +01:00
Andras BacsaiandClaude Opus 5.5 6ef29c64a1 fix(cdn): block releases sync before the current release is published
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 14:57:48 +01:00
Andras Bacsai 6977caaa9b fix(service): store the Compose default for bare variable references
Closes #12412
2026-11-02 14:55:44 +01:00
Andras BacsaiandClaude Opus 5.5 5cf1abc0fc fix(env): keep pre-upgrade values for legacy compose variables
Closes #12408

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 14:49:11 +01:00
Andras BacsaiandClaude Opus 5.5 bc855fdc68 fix(transfer): resolve IPv6-only server host names
The domain check of the transfer checklist resolved the server host name
with gethostbynamel(), which returns IPv4 only, so a domain that points to
an IPv6-only server was reported as pointing to another address. Resolve A
and AAAA records and compare normalized addresses. The Cloud SSH probe now
also resolves AAAA records when a host name has no A record.

Closes #12397

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 14:46:19 +01:00
Andras BacsaiandClaude Opus 5.5 8dea526098 Revert "fix(service): keep WordPress URLs in sync with the Coolify domain"
Do not overwrite the WordPress site address from the Coolify domain.
WordPress owns this setting; the docs now explain how to change it.

This reverts commit dce02411a.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 14:44:20 +01:00
Andras BacsaiandClaude Opus 5.5 1af7de8a85 fix(backups): pin a reachable IP for S3 uploads on IPv6-only servers
mc keeps one --resolve IP per host, and Coolify always pinned the IPv4
address of a dual-stack endpoint. On servers without IPv4, uploads failed
with "network is unreachable". A helper container on the upload network
now connects to each validated IP, IPv4 first, and the first IP that
connects is pinned. S3 restores are now pinned in the same way.

Closes #12397

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 14:38:49 +01:00
Andras BacsaiandClaude Opus 5.5 dce02411a0 fix(service): keep WordPress URLs in sync with the Coolify domain
Define WP_HOME and WP_SITEURL from SERVICE_URL_WORDPRESS in the MariaDB
and MySQL templates, so a domain change no longer makes the login
redirect to the domain used at install time.

Closes #12406

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 14:38:21 +01:00