Commit Graph
18479 Commits
Author SHA1 Message Date
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
Andras BacsaiandClaude Opus 5.5 6c650dd127 fix(api): document request bodies for shared env create and update endpoints
Closes #12395

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 14:33:29 +01:00
Andras BacsaiandClaude Opus 5.5 0b3ca79464 fix(scheduled-tasks): show disabled state in task and backup lists
Closes #12399

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 14:33:15 +01:00
Andras BacsaiandClaude Opus 5.5 be7a997541 fix(metrics): stop unreachable servers from blocking web workers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 14:31:26 +01:00
Andras BacsaiandClaude Opus 5.5 972ab7f6f4 fix(deployments): keep build secret values out of Compose runtime
Unset the helper's build secret variables before Compose pulls or starts
services, so containers get the runtime .env values. Give build secrets
the raw stored value instead of the quoted .env form.

Closes #12409

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 14:22:47 +01:00
Andras BacsaiandClaude Opus 5.5 b9ad48e104 fix(deployments): pass port-suffixed compose service URL variables
Docker Compose applications dropped the stored SERVICE_URL_<NAME>_<PORT> and SERVICE_FQDN_<NAME>_<PORT> variables and only generated the forms without a port, so compose references to them were blank. Generate the port-suffixed forms from the current domain for runtime and build-time, production and preview deployments.

Closes #12427

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 14:02:19 +01:00
Andras BacsaiandClaude Opus 5.5 dbd211486b fix(backups): let service databases choose the databases to back up
Closes #12432

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 13:59:53 +01:00
Andras Bacsai 33a6682791 fix(backups): keep non-deployment helper containers during cleanup
Closes #12431
2026-11-02 13:59:29 +01:00
Andras BacsaiandClaude Opus 5.5 31653c27d1 fix(clone): add Compose labels to cloned volumes
Closes #12429

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 13:59:22 +01:00
Andras BacsaiandClaude Opus 5.5 f2f89ccfae fix(canvas): add SQLite to database engines
Closes #12410

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 13:59:13 +01:00
Andras BacsaiandClaude Opus 5.5 51029aa8b9 fix(new-resource): accept a base directory without a leading slash
Closes #12428

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 13:58:15 +01:00
Andras Bacsai d8c1b926ca docs(readme): remove OpenElements from small sponsors 2026-11-02 09:25:38 +01:00
Andras Bacsai faf0b6fac4 fix(runners): preserve unsaved settings during Sysbox checks
Move Sysbox checks and installation into a lazy Livewire component so its requests do not reset the runner form's unsaved state. Update tests to cover the separate component.
2026-11-01 21:03:26 +01:00
Andras Bacsai 23eebbf2ad fix(servers): refresh provider status with server details action 2026-11-01 15:49:13 +01:00
Andras BacsaiandClaude Opus 5.5 868c0f06bf fix(api): require deploy ability for registry check and logout
Align the registry check and logout endpoints with the registry login endpoint.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:46:52 +01:00
Andras Bacsai 759fbe5b3c feat(deployments): show spinners for in-progress status 2026-11-01 14:50:14 +01:00
Andras Bacsai 8178fa16b2 fix(ui): use red style for unused key deletion 2026-11-01 14:32:34 +01:00
Andras Bacsai 690331e446 docs(readme): remove Context.dev from huge sponsors 2026-11-01 12:56:34 +01:00
Andras Bacsai 8af0606a32 docs(readme): add martiinii to small sponsors 2026-10-31 18:37:56 +01:00
🏔️ Peak 751ecb91c5 ci: add a workflow to cleanup unused manifests (#12362) 2026-10-30 23:19:46 +01:00
peaklabs-dev fb0210f582 feat(scripts): harden the requests of the manifest cleanup
- passes the Docker Hub login to curl on stdin, which keeps it out of the process list
- checks the format of version ids and digests before a delete
2026-10-30 23:00:56 +01:00
peaklabs-dev b001e80fc9 feat(scripts): delete only versions older than a day
- a build pushes its images before the index that tags them, a run in between would see them as unused
- a push while the run reads the pages of versions shows one version twice, the list keeps it once so the second delete does not stop the run
2026-10-30 22:53:11 +01:00
peaklabs-dev 0375750aed feat(scripts): show the ghcr.io sizes in brackets 2026-10-30 22:37:03 +01:00
peaklabs-dev 4b7b9bc145 ci: run the workflow as a dry run first
- a manually triggered first run in CI uploads the full list of manifests to delete
- a later pull request makes the workflow hourly again
2026-10-30 22:37:03 +01:00
peaklabs-dev 200042e16b feat(scripts): check twice the delete limit on docker.io
- ghcr.io lists deleted versions for 30 days, a HEAD on docker.io for each would reach thousands per run, which could trigger rate limits
- twice the delete limit covers the last two runs, and manifests only docker.io has sort first, so a copy docker.io refused is deleted within two runs
2026-10-30 22:35:49 +01:00
peaklabs-dev c5d380a4c6 feat(scripts): give each registry a column in the lists
- docker_hub is undefined for a manifest ghcr.io has, as a HEAD on docker.io for every one of them could trigger rate limits
2026-10-30 22:35:49 +01:00
peaklabs-dev 26f8c990a5 ci: delete unused manifests every hour
- with a run every hour and 200 deletions per run the about 35,000 unused manifests on ghcr.io and docker.io are deleted in about 7 days, then the schedule goes back to every 2 weeks or every month
- a run deletes 200 at most, as GitHub allows an account 500 requests per hour and the ghrc.io PAT is an account level PAT
2026-10-30 22:35:47 +01:00
peaklabs-dev 82f1f974f1 feat(scripts): add a script to delete unused manifests
- v3 and 4.0.0-beta.420.x do not follow semantic versioning, KEEP_TAG_EXCEPTIONS keeps them explicitly
2026-10-30 22:15:51 +01:00
Andras BacsaiandClaude Opus 5.5 a567a4b659 fix(analytics): key traffic tables so the pager works after lazy load
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 21:52:02 +01:00
Andras BacsaiandClaude Opus 5.5 e36c54c23c fix(logs): style lines by their declared level, not by error keywords
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 19:53:16 +01:00
Andras BacsaiandClaude Opus 5.5 a80f0c7ca8 fix(ui): name the deepest menu on the resource menu row
- Backup pages show Backup, and service sub-resources show their own
  name, because the row opens that menu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 17:23:49 +01:00
Andras BacsaiandClaude Opus 5.5 49346aeb29 fix(ui): restore the main menu row that reopens the resource menu
- On a resource page, the main menu starts with a row that shows the
  resource name and opens the deepest resource menu again.
- Pass the resource name to registerMainNavContext() again.
- Document the row in DESIGN.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 17:21:08 +01:00
Andras BacsaiandClaude Opus 5.5 b3ec26c3b1 fix(proxy): stop routing the Reverb HTTP API through the dashboard domain
The browser uses only the /app/{key} WebSocket. Laravel sends events to
Reverb over 127.0.0.1, so the generated Traefik and Caddy configs no longer
route /apps to port 6001, and the WebSocket rule only matches /app/.

Closes #12390

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 12:01:21 +01:00
Andras Bacsai 98b7de0ea7 fix(api): accept the same port mappings as the UI
Closes #12388
2026-10-30 11:43:13 +01:00
Andras BacsaiandClaude Opus 5.5 3e2fff0609 fix(deployments): stop the build server helper when a deployment is cancelled
Save build_server_id as soon as a build server is selected, so the cancel
cleanup finds the helper container on the build server. Let the final
helper stop run after a cancel.

Closes #12383

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:43:04 +01:00
Andras BacsaiandClaude Opus 5.5 4b541011c9 fix(api): hide locked values in resource and environment lists
Closes #12391

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:23:16 +01:00
Andras Bacsai 72c8209285 feat(subscription): email checkout reminders for expired sessions
Enable Stripe checkout recovery links and send rate-limited reminders to the
admin who started an unfinished subscription checkout.
2026-10-29 23:35:34 +01:00
Andras BacsaiandClaude Opus 5.5 0d398ced24 fix(servers): open patches page from the patches badge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 20:44:17 +01:00
Andras Bacsai 28c5af9b18 fix(avatar): change avatar URL when an existing avatar is replaced 2026-10-29 19:06:11 +01:00
Andras Bacsai 69bfb24ab2 feat(templates): add Hi.Events event management service (#12380) 2026-10-29 18:55:45 +01:00
Andras BacsaiandClaude Opus 5.5 f2ece40dd4 fix(terminal): fall back to usable shell for nologin and false (#12242)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 18:29:51 +01:00
Andras BacsaiandClaude Opus 5.5 7faa46bbd4 fix(upgrade): ignore whitespace around root user values before quoting
phpdotenv trims whitespace around an unquoted value, including the \r of
CRLF line endings. The repair quoted such values, which broke valid lines in
CRLF files and kept spaces that phpdotenv drops. Trim the value first and
quote it only when a space is still inside it.

Closes #12375

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 18:28:14 +01:00
Andras BacsaiandClaude Opus 5.5 43933ee6cc fix(upgrade): quote root user credentials with spaces in the .env file
Installers before 4.5.1 and manual edits could leave ROOT_USERNAME (or the
root email or password) with spaces and no quotes. The running container
ignores .env because its config is cached, so the next upgrade recreated it
and phpdotenv failed, which made every page return HTTP 500. The upgrade now
quotes these values before it restarts Coolify.

Closes #12375

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 18:25:50 +01:00
Andras BacsaiandClaude Opus 5.5 607daf80be feat(auth): show two-factor code as separate digit boxes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 18:17:18 +01:00
Andras Bacsai 96ed09f0cc fix(auth): clear forced password reset after a password reset
An invited user who set a password with Forgot password kept the forced
reset flag. A re-invite then replaced the password, and a revoked or
expired invitation deleted the account.
2026-10-29 18:16:00 +01:00
Andras Bacsai a39370dbb8 fix(postgresql): prevent init script path traversal 2026-10-29 18:01:43 +01:00