62 Commits
Author SHA1 Message Date
Andras Bacsai f622213988 fix(git-source): follow same-origin redirects for Git provider APIs
Git source HTTP clients previously disabled redirects entirely, so API
calls for renamed repositories (e.g. GitHub 301 to /repositories/{id})
failed. Add SafeExternalUrl::sameOriginRedirectOptions() and use it in
the GitSource HTTP macro to follow up to five strict redirects that stay
on the same scheme, host and port.

A redirect to a different origin gets a RequestException, because the
DNS pin covers only the original host and port. This blocks SSRF via
redirects to metadata or attacker hosts. Authorization headers and the
original request method and body are kept on same-origin redirects.

Tests cover following same-host redirects, keeping POST on a redirect,
refusing cross-host/scheme/port redirects and the five-redirect cap.
2026-09-30 11:40:36 +02:00
Andras Bacsai d28bc91ff5 fix(scheduler): read fresh server state in each job and log scheduling decisions
Horizon workers kept Server::findCached() results between jobs, so scheduled
database backups used stale reachability and subscription state. A backup that
was skipped with the stale state counted as done for that day. Flush the
Server identity map before each queue job.

Add debug logs for the full path of a scheduled run, so a multi-node cloud
instance shows where a run is lost:
- manager start delay, gap since the previous start, host, pid, memory, and
  a warning when the start is later than the catch-up window
- skip logs with the server state that was used and the current database state
- occurrence enqueued, claimed, rejected, completed and failed, with host and
  the delay since the due time; a warning when the previous run is still open
- count of occurrences still open after 15 minutes on each manager run
- database backup runs that end without a backup
- server connection state changes with the checking node and the SSH error

Also keep publishing pending occurrences when one of them fails.
2026-09-28 16:15:00 +02:00
Andras BacsaiandClaude Opus 5.5 e17b15f5f1 fix(sources): allow private networks for self-hosted Git sources
Since GitHub App and GitLab API calls use the outbound URL guard,
GitHub Enterprise or GitLab on a private network failed with "Webhook
URL resolved to an unsafe IP address" unless an admin allow-listed it.

On self-hosted instances, Git source URLs and requests now allow
private (RFC 1918), CGNAT (100.64/10, Tailscale), and IPv6 unique local
addresses, plus internal hostnames such as .internal, .local, and
container names. Loopback, localhost, link-local (cloud metadata),
0.0.0.0, and other reserved targets stay blocked. Redirects stay off
and DNS stays pinned. Coolify Cloud and all other outbound URLs keep
the strict rules.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 23:52:01 +02:00
Andras Bacsai 554b79e8dd feat: add Traefik ACME cert UI and shared managed DNS record ownership
- Proxy: list and delete Traefik ACME certificates from the server proxy
  page via new TraefikAcmeService and Get/DeleteTraefikCertificate actions
- DNS: track ownership and cross-resource references for managed DNS
  records so records are only deleted when no longer referenced; release
  records asynchronously on resource deletion via ReleaseManagedDnsRecordsJob
  and ManagedDnsRecordCleanup; harden Cloudflare provider deletion results
- Databases: fail closed on start when prerequisites or the CA certificate
  are missing (DatabaseStartException, Server::ensureCaCertificate) and
  clean up stale start activities via ResourceStartActivity
- Webhooks: throttle repeated manual webhook signature failures for
  GitHub, GitLab, Gitea and Bitbucket
- Deployments: improve compose build-context handling and compose file
  load error reporting
- Install scripts: rework terminal UI output in install.sh (stable and
  nightly)
- Misc: settings sidebar accordion fixes, log drain toggle rollback,
  add Serverside to README sponsors
- Add migrations and tests covering the above
2026-09-25 19:00:00 +02:00
Andras Bacsai d071a5df81 Improve Git source HTTP handling 2026-09-23 23:09:04 +02:00
Andras Bacsai ca5fcce39b Reapply "Merge branch 'next' into main"
This reverts commit 7bbd91175f.
2026-08-21 12:15:46 +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
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 253e59e731 Merge remote-tracking branch 'origin/next' into openid-auth-support 2026-08-18 14:03:09 +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 BacsaiandShadowArcanist 8ae56587d5 feat(ui): Shadow UI redesign, domain management, and DNS autoconfigure (#11119)
Co-authored-by: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com>
2026-08-03 23:11:54 +02:00
Mike Chong a26091de0a feat: self-hosted GitLab Apps OAuth integration
Adds self-hosted GitLab OAuth sources so Coolify can connect to a self-managed GitLab instance, list private repositories, clone over an OAuth token, and deploy (the GitLab counterpart to GitHub Apps).

Hardening: authenticated, one-time team-bound OAuth callback state; token redaction in deploy logs; custom host port/path kept in clone and ls-remote URLs; submodule OAuth auth; system-wide source selection. Covered by unit and feature tests.

cosigned by OpenAI Codex at M1 Max
2026-07-20 23:21:40 +02:00
Andras Bacsai d0247d3b09 feat(v5): gate V5 to development environments only
Introduce V5Feature and config so V5 routes, jobs, commands, morph maps,
and model queries run only when enabled. Move V5 migrations to
migrations-v5 (loaded only when enabled), remove Flux from production
Docker/install paths, and add isolation tests.
2026-07-19 11:44:12 +02:00
Andras Bacsai 6ae45684f9 feat(v5): add server reconciliation and canvas APIs
Split V5 dashboard behavior into domain controllers and policies,
add agent token rotation/revocation, status reconciliation jobs,
ingress firewall syncing, and canvas connection APIs.

Add migrations for V5 status tracking, server capabilities, resource
connection aliases, and revoked agent tokens.
2026-07-06 17:40:37 +02:00
Andras Bacsai c7c239aa18 Merge remote-tracking branch 'origin/next' into openid-auth-support 2026-06-15 11:54:54 +02:00
Andras Bacsai 61d2d17f52 feat(subscription): add Stripe action controls
Add subscription action handling and tests for cancel, resume, and refund flows while resolving StripeClient through the container.
2026-06-12 15:54:21 +02:00
Andras Bacsai e354840e5a feat(auth): add OIDC SSO and registration controls
Add OIDC discovery, JWKS validation, Socialite integration, OAuth identity linking, and configurable registration policy for password and SSO signups. Update related settings/profile UI and tests.
2026-06-04 13:59:08 +02:00
Andras Bacsai a764a07e7e revert: remove Cloudflare async tag attributes 2025-01-28 14:38:55 +01:00
Andras Bacsai 98a9985dce feat(vite): add Cloudflare async script and style tag attributes 2025-01-28 14:30:11 +01:00
Andras Bacsai dd897a11fd disable model strict mode 2025-01-16 21:07:12 +01:00
peaklabs-dev 43d526b773 fix: production password rule and cleanup code 2025-01-16 18:06:46 +01:00
peaklabs-dev 1a36e7b057 fix: add back letters to prod password requirement 2025-01-06 16:58:20 +01:00
peaklabs-dev c6be293064 refactor: AppServiceProvider
- Remove unused authentik stuff
- Move things to separate functions
- Configure commands for production
- Configure modals for better error handling
- Improve password security by not allowing compromised passwords.
- Rename some things to make it clearer.
- Sort imports
2025-01-06 16:58:20 +01:00
Andras Bacsai b6ea36f74e fix: socialite for azure and authentik 2024-12-13 12:13:01 +01:00
Andras Bacsai 7296f726a7 fix: add telescope only in dev mode 2024-11-02 12:09:33 +01:00
Jeremy Angele 6842904cb5 Remove deprecated fortify password policy and add a stricter one 2024-10-28 21:57:00 +01:00
Andras Bacsai 83549965ca Refactor instanceSettings() function for improved code readability 2024-10-01 10:37:40 +02:00
Andras Bacsai 0f55e83591 revert: instancesettings 2024-07-12 15:45:36 +02:00
Andras Bacsai 49d011574d refactor: Remove unnecessary code in AppServiceProvider.php 2024-07-12 13:34:48 +02:00
Andras Bacsai 046a358ae0 refactor: Update Dockerfile to set CI environment variable to true 2024-07-12 13:02:37 +02:00
Andras Bacsai d23f5af957 hmmm 2024-07-12 12:59:53 +02:00
Andras Bacsai 88f33be5b6 refactor: only get instanceSettings once from db 2024-07-12 12:51:55 +02:00
andrasbacsai d1a5f97f59 Fix styling 2024-06-19 06:59:46 +00:00
Thijmen d86274cc37 Fix styling 2024-06-10 20:43:34 +00:00
Andras Bacsai 601a1e128e fixes 2023-12-11 20:22:31 +01:00
Andras Bacsai d79da996d3 fix 2023-12-11 20:01:54 +01:00
Andras Bacsai 4f800f5331 hmm, why 2023-12-11 19:46:46 +01:00
Andras Bacsai 8a80dbd5d8 fix 2023-12-11 19:36:44 +01:00
Andras Bacsai f0ee26cd86 fix realtimePort 2023-12-11 19:11:29 +01:00
Andras Bacsai 2c40e93d3b wip: PAT by team 2023-10-18 18:02:09 +02:00
Andras Bacsai f2228cec7b testing php storm code cleanup and styling 2023-08-08 11:51:36 +02:00
Andras Bacsai d8adea734f basic license wip 2023-06-22 14:48:47 +02:00
Andras Bacsai 8dbe3cfe0c preview comments 2023-06-13 15:01:11 +02:00
Andras Bacsai 0f50d1accd updates 2023-05-30 15:52:17 +02:00
Andras Bacsai 4ddc65d0c5 remove code 2023-05-26 14:11:01 +02:00
Andras Bacsai 820e432f92 asd? 2023-05-26 14:05:58 +02:00
Andras Bacsai b85a0c4d09 hm 2023-05-26 12:35:39 +02:00
Andras Bacsai 1d2c4fc553 hmm 2023-05-26 12:34:15 +02:00
Andras Bacsai 0bd7d99dd9 hmm 2023-05-26 12:31:29 +02:00