Commit graph

840 commits

Author SHA1 Message Date
rosslh
fd451346ec fix(update): use MapleDeploy CDN and registry artifacts 2026-09-11 12:55:43 -04:00
rosslh
345c7023a7 feat(branding): apply MapleDeploy UI branding 2026-09-11 11:33:19 -04:00
Andras Bacsai
fc9e61b7b4 feat(services): open resource settings in a modal with restart limits
Move service application and database settings into an embedded modal with a footer, subtitle helper, and Docker restart-count control. Accept max_restart_count on the service applications API, cap compose YAML collection aliases, and tighten status, backup, and database sidebar layouts.
2026-09-10 17:39:56 +02:00
Aditya Tripathi
e52390ec03 fix(team): resolve stored team on deletion and impersonation
Use resolveStoredTeam() instead of teams()->first() when picking the
next active team after a team deletion or when an admin switches into
a user's account, so a valid stored preference wins over an arbitrary
first team. DeleteTeam now returns null when the deletion leaves the
owner with multiple teams, deferring to the selection screen instead
of guessing. refreshSession also stops persisting current_team_id
while impersonating, so viewing another user's account no longer
overwrites their real last-active team.
2026-09-08 14:44:42 +02:00
Aditya Tripathi
f511921895 fix(teams): guard current_team_id clear against concurrent writes
Make clearStoredTeamIfMatches perform an atomic conditional UPDATE
so a concurrent team switch isn't clobbered, and call it for the
deleting owner in DeleteTeam so their stored team id doesn't point
at a deleted team. refreshSession now falls back to
resolveStoredTeam() instead of an arbitrary first team. Add a
return type to SelectTeam::render() and tests covering owner
deletion and concurrent-selection preservation.
2026-09-08 14:44:39 +02:00
Aditya Tripathi
2b92fb86b5 fix(teams): clear stale current_team_id when membership ends
Reset the user's persisted current_team_id when they are removed from
a team, when their team is deleted, or when refreshSession finds no
team left, so a dangling reference is never restored on next login.
2026-09-08 14:44:39 +02:00
Andras Bacsai
ba30c64d7d
fix(stripe): prevent duplicate subscription checkouts (#11666) 2026-09-07 20:25:06 +02:00
Andras Bacsai
a04c2ecb44 fix(docker): preserve restart policies when stopping containers 2026-09-04 16:38:24 +02:00
peaklabs-dev
89814743c8
fix(applications): TypeError when stopping an application 2026-09-04 15:45:55 +02:00
Andras Bacsai
053b030c42 fix: remove database restart limits and clear stale Traefik state
Drop restart-limit fields and enforcement from database resources, clear cached Traefik version data when proxies change, and show missing service environment variables from disabled deploy actions.
2026-09-04 15:42:26 +02:00
Andras Bacsai
e2e91fbb85
feat(domains): support per-domain internal port overrides (#11594) 2026-09-02 19:39:19 +02:00
Andras Bacsai
67b33c27a9
fix(applications): persist restart limit state for stopped containers (#11566) 2026-08-31 13:13:26 +02:00
Andras Bacsai
ac9b1c68c1 fix(server): allow sentinel startup migrations to finish 2026-08-27 19:38:01 +02:00
Andras Bacsai
1f412c7145 fix(auth): queue verification emails for cloud registrations
Add a high-priority job with retries and coverage confirming cloud registrations dispatch it.
2026-08-26 17:28:20 +02:00
Andras Bacsai
bf20c8b287 fix(auth): use Cloudflare client IP for authentication rate limits 2026-08-26 17:25:28 +02:00
peaklabs-dev
3842bc2442
fix(auth): rate limit by proxy-aware client ip instead of REMOTE_ADDR 2026-08-26 17:12:01 +02:00
Andras Bacsai
379abb2526
fix(docker): make cleanup commands idempotent (#11463) 2026-08-22 17:22:50 +02:00
Andras Bacsai
eb57a691ca feat(domains): add asynchronous DNS validation
Add queued DNS checks with polling, status indicators, and notifications for application and service domains. Improve volume backup target labels and names.
2026-08-21 21:22:04 +02:00
Andras Bacsai
7bbd91175f Revert "Merge branch 'next' into main"
This reverts commit 2598f3e4c8, reversing
changes made to 83f1a2e503.
2026-08-21 12:12:56 +02:00
github-actions[bot]
fc6f6fd0d4 Merge remote-tracking branch 'origin/main' into next 2026-08-20 09:10:52 +00:00
Andras Bacsai
38502e8205 fix(resources): preserve deletion when remote cleanup fails
Separate remote service cleanup from resource deletion and ensure database removal
completes despite cleanup errors. Update the disabled two-factor badge icon.
2026-08-20 11:10:14 +02:00
github-actions[bot]
cd1e595492 Merge remote-tracking branch 'origin/main' into next 2026-08-20 07:35:24 +00:00
Andras Bacsai
680071dca8 fix(teams): restrict deletion to owners and backfill team ownership 2026-08-20 09:32:32 +02:00
Andras Bacsai
81227670e6 Reapply "Merge origin/next into main"
This reverts commit 15359833d3.
2026-08-19 12:39:55 +02:00
Andras Bacsai
15359833d3 Revert "Merge origin/next into main"
This reverts commit 541d743907, reversing
changes made to bb1d3f13f2.
2026-08-19 12:33:16 +02:00
Andras Bacsai
541d743907 Merge origin/next into main 2026-08-19 12:30:09 +02:00
github-actions[bot]
1dc7baf7b5 Merge remote-tracking branch 'origin/main' into next 2026-08-18 20:42:25 +00:00
Andras Bacsai
b4f9c9b51d feat(development): add QEMU VM provisioning and server seeding
Add configurable development QEMU profiles, host setup, VM lifecycle management,
and commands to seed managed VMs as Coolify servers. Improve installation dialog
logs with responsive mobile presentation.
2026-08-18 21:14:29 +02:00
Andras Bacsai
f6467feeb3
Add support for apk package manager (on Alpine Linux) (#6189) 2026-08-18 16:46:02 +02:00
Andras Bacsai
96790e6531 feat(server): support Alpine package management and Docker setup
Add Alpine prerequisites, Docker CLI plugins, and OpenRC service handling while
falling back to sh for SSH commands on hosts without Bash.
2026-08-18 16:45:02 +02:00
Andras Bacsai
fe9e1e46f5 Merge remote-tracking branch 'origin/main' into next 2026-08-18 16:17:26 +02:00
Andras Bacsai
00b7861a8f
fix(services): avoid loading bind-mount file contents (#10960) 2026-08-18 14:05:15 +02:00
Andras Bacsai
288dc98ca7 fix: enforce remote output size limits 2026-08-18 14:03:33 +02:00
Andras Bacsai
253e59e731 Merge remote-tracking branch 'origin/next' into openid-auth-support 2026-08-18 14:03:09 +02:00
Andras Bacsai
ccd7c59abf Merge remote-tracking branch 'origin/next' into pr-10960-compose-settings-memory-crash 2026-08-18 13:58:16 +02:00
Andras Bacsai
d360da3270
fix(databases): chown SSL certs before container replacement (#11352) 2026-08-18 11:55:55 +02:00
Andras Bacsai
417f996ef5
fix(databases): redirect stdin for the SSL cert chown (#11315) 2026-08-18 10:46:24 +02:00
Andras Bacsai
17d9d1a370 feat(domains): add configurable HTTPS redirects for service apps 2026-08-18 09:08:18 +02:00
Andras Bacsai
5152698757
fix(deployments): advance queue after cancellations (#11330) 2026-08-17 16:27:00 +02:00
Dion VH
5872cc095c
fix(docker): docker cleanup correctly checks the coolify.managed label (#8831) 2026-08-17 12:07:12 +02:00
MarkosTech
20a627ffe6 fix(databases): redirect stdin for the SSL cert chown
Remote command lists are piped into `bash -se`, so the script sits on
stdin. `docker compose run` attaches stdin and eats the rest of it,
including the `docker compose up -d` that follows. The container is
removed and never recreated, and bash exits 0, so the deploy reports
success.

`-T` does not help, it does not detach stdin.

Affects MongoDB, MySQL, MariaDB and PostgreSQL when enable_ssl is set.
2026-08-16 13:20:20 +02:00
Andras Bacsai
76030a30d4 chore(v5): archive V5 implementation and remove runtime integration
Move V5 source, migrations, UI, scripts, and tests into documentation, then remove V5 routes, models, jobs, configuration, dependencies, and application hooks.
2026-08-15 19:13:30 +02:00
Andras Bacsai
1440d35750
fix(resources): preserve records sharing IDs across model types (#11300) 2026-08-15 18:43:20 +02:00
Andras Bacsai
2677e47138 fix(storage): split S3 endpoint input and persist stopped status
Persist exited status across application, database, service, and preview stop paths, and reuse the split host/port/path input for S3 endpoints with linked validation feedback.
2026-08-15 11:46:49 +02:00
Andras Bacsai
096a1f5f08
fix(database): set PostgreSQL SSL certificate ownership (#11286) 2026-08-14 20:44:05 +02:00
Andras Bacsai
18c4663e0f Merge remote-tracking branch 'origin/next' into pr-10960-compose-settings-memory-crash 2026-08-13 11:31:50 +02:00
Andras Bacsai
e79230cf37 fix(docker): replace deprecated stop flags with version-aware ones
Store each server's Docker version and build stop commands via
dockerStopCommand() so newer Docker uses --timeout instead of
deprecated --time/-t. Also show Docker version in server details.
2026-08-13 11:17:44 +02:00
Benoît de Biolley
47a14765e1
Install prerequisites and Docker on Alpine
InstallPrerequisites had no alpine branch and threw before Docker
install was ever reached. Enable the community repository (commented
out on some images) and install curl/wget/git/jq with apk.

The Docker install now also pulls docker-cli-compose, which
validateDockerCompose() requires, creates /etc/docker since Alpine's
docker package does not ship it, and enables/starts the OpenRC service.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GXciegHbJhXbGvVn7mwgbR
2026-08-11 18:09:16 +02:00
Benoît de Biolley
7ec1c939bf
Install docker on alpine 2026-08-11 18:09:15 +02:00
Benoît de Biolley
57401630a4
✏️ Fix copy-paste issue 2026-08-11 18:08:41 +02:00