Commit Graph
18211 Commits
Author SHA1 Message Date
Andras BacsaiandClaude Opus 5.5 e3ee4a99c5 fix(compose): create one service on repeated submits and reject compose without services
Closes #11078

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 00:14:46 +02:00
Andras BacsaiandClaude Opus 5.5 a836756e9b fix(backup): explain why a dump stopped without an error
Closes #11549

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 23:56:29 +02:00
Andras BacsaiandClaude Opus 5.5 35f6092127 fix(mcp): show only tools and actions the token can use in help and hints
Closes #12295

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 23:54:31 +02:00
Andras BacsaiandClaude Opus 5.5 3d4df5e06f fix(rollback): find the current image of containers with any name
The rollback image list inspected a container named after the bare
application UUID, so `current` was null for timestamped, prefixed, and
custom-named containers. Find the running production containers by their
owner labels instead.

Closes #12296

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 23:51:24 +02:00
Andras Bacsai f97398c83c fix(nginx): proxy realtime and terminal WebSockets on the dashboard port
A reverse proxy that forwards only port 8000 (for example Tailscale Serve or a Cloudflare Tunnel without path rules) sent /app/ and /terminal/ws to Laravel. Proxy them to Reverb (6001) and the terminal server (6002) in the container.

Closes #11707
2026-10-23 23:06:51 +02:00
Andras BacsaiandClaude Opus 5.5 1bebdffaff fix(deploy): keep the healthy new container when a rolling update fails late
Laravel runs failed() on a fresh copy of the job, so the in-memory
newVersionIsHealthy flag was always false there and a failure after the
old container stopped removed the only running container. Keep the flag
in the cache, keyed by the deployment UUID.

Closes #12253

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 23:03:33 +02:00
Andras BacsaiandClaude Opus 5.5 2a7faa1210 fix(docker-cleanup): skip scheduled cleanups while a deployment is running
Closes #12183

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:59:22 +02:00
Andras BacsaiandClaude Opus 5.5 e853f3d136 fix(service): recreate the Mosquitto password file on each start
Mosquitto 2.1 opens the file for `mosquitto_passwd -c` with O_EXCL, so
the template failed with "File exists" after `touch`. Delete the file
before `-c`, so each start writes a new file with only the current user.

Closes #11691

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:58:59 +02:00
Andras BacsaiandClaude Opus 5.5 19afd36084 fix(backup): keep privileges in PostgreSQL database backups
pg_dump ran with --no-acl --no-owner, so single-database backups lost
all GRANTs and a restored Supabase database did not work. The import
already skips owners and privileges unless "Keep owners and privileges"
is selected, so the backup now keeps them.

Closes #12244

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:35:45 +02:00
Andras BacsaiandClaude Opus 5.5 1e71561239 fix(backups): sign S3 uploads with the storage region
Closes #12264

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:28:48 +02:00
Andras Bacsai ab65fdccf9 fix(updates): report a failed manual update check instead of "No new version available"
Closes #12266
2026-10-23 22:27:07 +02:00
Andras BacsaiandClaude Opus 5.5 5131832cd8 fix(infisical): include imported secrets when fetching secrets
Closes #12267

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:26:32 +02:00
Andras BacsaiandClaude Opus 5.5 f72041c513 fix(metrics): even out chart density on long ranges
Sentinel keeps raw samples for the last 24-48 hours and one-minute
averages before that. LTTB buckets by point count, so 7-day and 30-day
charts gave most points to the raw part. Average those ranges per
minute before LTTB.

Closes #12281

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:26:24 +02:00
Andras Bacsai 6699b436e8 fix(metrics): detect Sentinel data mount as the root disk 2026-10-23 22:22:46 +02:00
Andras BacsaiandClaude Opus 5.5 283ce5cb1f fix(service): update reactive-resume template to v6
Drop chrome, minio, and redis, which v6 no longer uses. Switch to the
v6 variables (APP_URL, AUTH_SECRET, ENCRYPTION_SECRET, FLAG_*), store
uploads in a volume at /app/data, use Postgres 18, and check /api/health.

Closes #12282

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:22:32 +02:00
Andras BacsaiandClaude Opus 5.5 fdb77415a0 fix(api): scope database backup endpoints to the database type
Closes #12279

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:21:01 +02:00
Andras BacsaiandClaude Opus 5.5 f9649d753d fix(init): keep a detected public IP when the other family's lookup times out
Wait for each ifconfig.io lookup alone instead of through
Process::concurrently(), which throws on the first timeout and discards
the sibling result. Add --max-time 10 so a stalled lookup ends early.

Closes #12275

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:20:46 +02:00
Andras BacsaiandClaude Opus 5.5 d37b7356e7 fix(install): quote root user credentials in the .env file
ROOT_USERNAME with a space (or a password with #, $ or quotes) was written
unquoted, so phpdotenv failed to parse .env and Coolify returned HTTP 500.

Closes #12276

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:20:31 +02:00
Andras BacsaiandClaude Opus 5.5 54c930d8dd fix(install): keep operator SSH keys that mention coolify
On a fresh install, install.sh removed every authorized_keys line that
contained "coolify", including unrelated operator keys such as one
commented "coolify-disposable". Remove only lines whose comment is
exactly "coolify", the comment of the installer's own key.

Closes #12278

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:20:05 +02:00
Andras BacsaiandClaude Opus 5.5 da462c9f9a fix(ai): remove stale Cursor docs rule and personal Codex Boost cwd
Closes #12274

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:19:43 +02:00
Andras BacsaiandClaude Opus 5.5 2a295d573b feat(ui): rework dashboard columns and polish the deploy canvas
- Dashboard: projects and servers fill the left, recent deployments sit in a
  fixed-width right column; cards stretch to fill rows; the server table shows
  live CPU and memory usage when metrics are on.
- Deploy canvas: purple accent in dark mode, the Steps panel floats over the
  canvas, and both canvases use the flask beta icon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:14:16 +02:00
Andras BacsaiandClaude Opus 5.5 9db8d55473 feat(canvas): let admins drag server zones on the servers and dashboard canvases
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:13:29 +02:00
Andras BacsaiandClaude Opus 5.5 9d82a76fc4 perf(metrics): fetch all Sentinel metric types in one SSH command
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:07:37 +02:00
Andras BacsaiandClaude Opus 5.5 adacb764f9 fix(ui): stop canvas top bar :has() rule from blocking chart pages
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:07:37 +02:00
Andras Bacsai 582399c382 feat(ui): add four-color custom theme dialog with presets and share code 2026-10-23 22:07:21 +02:00
Andras BacsaiandClaude Opus 5.5 9e0823becc fix(ui): give the terminal target picker a solid background so it stays readable
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:43:52 +02:00
Andras Bacsai ae492a2497 fix(ui): link user menu Appearance to its page so the menu fits short screens 2026-10-23 21:40:04 +02:00
Andras BacsaiandClaude Opus 5.5 c6fbeb84eb Merge branch 'fix/server-transfer-cloud-hardening' into main
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:25:28 +02:00
Andras BacsaiandClaude Opus 5.5 9e52c6a140 fix(server-transfer): accept legacy database port values and allow the kit VM network
- Do not check database port mappings in a bundle: the UI checks them
  only since March 2026, so older servers could not be transferred, and
  the values stay on the server owner's own host.
- The dev .env runs Cloud mode, where the import check refuses private
  addresses. reset.sh now allows the VM network of A on both instances.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:23:40 +02:00
Andras BacsaiandClaude Opus 5.5 cf9f254507 fix(server-transfer): close security holes in import, claim, and archives
Import:
- Check every uuid in a bundle against a strict id format before any
  write, and quote the SSH mux socket and key paths in local shell
  commands. A bundle uuid could run commands in the Coolify container.
- Validate bundle fqdns, git source URLs, paths, networks, cron
  expressions, and database ports; cap the number of items.
- Do not confirm that another team has a uuid.
- Refuse a project icon path with a uuid that is not a plain id.

Claim, finish, and migrate:
- Pass checklist step keys to wire:click with Js::from (stored XSS).
- Link only to https target server URLs.
- Validate target_instance_url in /transfer/complete; never prefill an
  unverified URL for a transfer back; scope the transfer-back token to
  write+deploy for 1 hour.
- Release on an owner marker only when it is newer than the own claim.
- Do not touch apps that only use the server as an additional
  destination when an archive is released or deleted.
- Give Sentinel a new token on claim.
- Add a checklist step to remove the previous instance's SSH key.
- Block a transfer while backups or scheduled tasks run.
- Authorize refreshMigration and PrivateKey checkConnection, clear
  tokens from Livewire state, hide migration log/error from members.

Archives:
- Refuse ip, user, port, private key, and Cloudflare tunnel changes.
- Throttle Enable management and require a free server slot for it and
  for a transfer back.
- Skip cloud provider calls.
- Re-read force_disabled before each SSH command, so running jobs stop.
- Probe the import check target at the resolved address only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:02:32 +02:00
Andras BacsaiandClaude Opus 5.5 7fa3110f0b feat(canvas): let admins drag project zones on the projects canvas
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 20:57:56 +02:00
Andras BacsaiandClaude Opus 5.5 c410f355e7 fix(ui): declutter domains toolbar with DNS menu and card header
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 20:28:02 +02:00
Andras BacsaiandClaude Opus 5.5 95a3a22fdf fix(server-transfer): harden import on Cloud and stop archives from using server slots
- Rate limit the import check probe and refuse private, loopback, and
  link-local targets on Cloud.
- Rate limit the SSH validation that an import starts, like other
  server validations.
- Count only managed servers for the server limit, the limit check job,
  and the subscription page. Archives of transferred servers are left out.
- Do not show the name of another team's archived server in the import check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 20:12:59 +02:00
Andras Bacsai 6022073519 fix(notifications): use instance URL in volume backup notification links
Volume backup notifications built links with route(), which uses APP_URL
in queue jobs and gave http://localhost links. Build them from base_url().

Closes #12285
2026-10-23 20:05:23 +02:00
Andras Bacsai 30d840f1c6 fix(theme): fall back to default color for invalid stored theme color
Closes #12287
2026-10-23 20:05:08 +02:00
Andras Bacsai 16222f3588 chore(release): bump version to 4.5.1 and refine search styling 2026-10-23 19:48:39 +02:00
Andras Bacsai c24022b015 chore(dev): add script to generate traffic analytics data 2026-10-23 19:48:21 +02:00
Andras Bacsai dcbad815fe fix(previews): keep compose preview data out of production pending changes
Closes #12284
2026-10-23 19:46:44 +02:00
Andras BacsaiandClaude Opus 5.5 cb561d3d9c fix(ui): match dark terminal box to card colors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 19:34:27 +02:00
Andras BacsaiandClaude Opus 5.5 9f017bf8a0 fix(ui): restore grid layout in card wells
The card rule gave wells display:flex, which overrode Tailwind grid
classes and collapsed the resource picker to one column. Share only
the color variables with wells.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 19:34:27 +02:00
Andras Bacsai b3bac27630 fix(ui): disable server menus that need a validated server 2026-10-23 19:32:03 +02:00
Andras BacsaiandClaude Opus 5.5 50243278fd fix(ui): show traffic analytics loading state on the button
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 19:31:57 +02:00
Andras BacsaiandClaude Opus 5.5 7de0e4cee8 fix(ui): quiet the dark sidebar and theme brand surfaces
- Make the dark sidebar a flat neutral #0d0d0d with neutral tiles, text,
  search, and account button; only the current item stays purple.
- Remove the resource row and spacer at the top of the main menu, so
  Dashboard sits under Search, and drop the unused nav context name.
- Route hard-coded brand purple, canvas, and card colors through tokens
  that the custom theme overrides, so sidebar, buttons, accents, cards,
  and tables follow the picked color.
- Paint page-level button and view-toggle tints over the canvas so the
  floating navigation dots do not show through.
- Document the new sidebar and token rules in DESIGN.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 19:15:32 +02:00
Andras BacsaiandClaude Opus 5.5 9a8b4eb53c fix(metrics): keep reachable servers online when Sentinel has no summary
Closes #12289

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 19:05:48 +02:00
Andras BacsaiandClaude Opus 5.5 ade4bae265 ci: remove temporary release image rebuild workflow
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 13:52:15 +02:00
Andras BacsaiandClaude Opus 5.5 5ca69705d6 ci: add temporary workflow to rebuild a published release image
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v4.5.0
2026-10-23 13:42:57 +02:00
Andras Bacsai b769ae193d fix(php): disable session upload progress 2026-10-23 13:33:51 +02:00
Andras Bacsai debde16c9d chore(versions): bump Coolify and helper release versions 2026-10-23 12:49:34 +02:00
Andras Bacsai 8b7434370e docs(traefik): link update instructions in alerts 2026-10-23 12:38:08 +02:00
Andras Bacsai 717a915485 fix(logs): show fullscreen logs above the sidebar and topbar 2026-10-23 12:34:20 +02:00