Commit Graph
340 Commits
Author SHA1 Message Date
Andras BacsaiandClaude Opus 5.5 7c14c0098e feat(server-transfer): run instance migration as a background job (#12180)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 22:03:45 +02:00
Andras Bacsai 83384a7b95 Merge remote-tracking branch 'origin/release/v4.5' into automation/sync-main-to-release-v4.5 2026-10-12 22:30:41 +02:00
Andras Bacsai 200af07225 Merge remote-tracking branch 'origin/release/v4.5' into automation/sync-main-to-release-v4.5 2026-10-12 21:38:45 +02:00
Andras BacsaiandClaude Opus 5.5 b13ecb0542 chore(seeding): seed railpack examples from new repo layout
Move all git examples into ApplicationSeeder on railpack, using the
reorganized coollabsio/coolify-examples main branch, and drop the
separate Railpack Examples project. Add DEV_SEED_IP to set the IP for
seeded sslip.io domains (e.g. a Tailscale IP).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:26:19 +02:00
Andras Bacsai 5246427b03 fix(upgrade): remove disk space checks that block Coolify updates 2026-10-09 20:03:49 +02:00
Andras BacsaiandClaude Opus 5.5 376e7aab24 feat(upgrade): block upgrades when the disk is almost full
An upgrade pulls new images and recreates the Coolify containers. A full
disk during an upgrade can leave Coolify broken.

- Measure free space on the Docker root dir and /data/coolify of localhost;
  require 5 GB. An unknown value does not block.
- Manual upgrade: show the free and required space, with Run Docker cleanup,
  Check again, and a confirmed Upgrade anyway override.
- Automatic upgrade: skip it and notify the team (disk usage channels, at
  most once per 24 hours per server).
- upgrade.sh: stop before any change when the disk is low. A new 5th
  argument skips the check (used by the override).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 13:26:53 +02:00
Andras Bacsai e7025612b8 feat(hostinger): add cloud provider integration (#11176) 2026-10-07 13:14:04 +02:00
Andras BacsaiandClaude Opus 5.5 5e1e199ad4 chore(scripts): handle a missing coolify-realtime container in the backup restore VM script
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 16:01:25 +02:00
Andras Bacsai a14ef2d4ee chore(cdn): remove BunnyCDN sync and rename sync:bunny to sync:cdn
CDN files are synced through the coollabs-cdn GitHub repository only.
Remove the --bunny direct upload path, the BUNNY_API_KEY and
BUNNY_STORAGE_API_KEY settings, and rename the command to sync:cdn.
2026-10-02 11:36:04 +02:00
Andras BacsaiandClaude Opus 5.5 fd85b740f5 feat(github-runners): add ephemeral self-hosted runners on build servers (#12054)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 12:13:11 +02:00
Andras Bacsai e7465000b3 fix(api): key unauthenticated rate limits by Cloudflare client IP
Use auth_rate_limit_ip() rather than $request->ip() for the api, 5 and
feedback rate limiters. On cloud, each client behind Cloudflare now gets
its own bucket instead of sharing the proxy's bucket. Self-hosted
instances ignore the CF-Connecting-IP header.

Add feature tests for per-client sentinel push buckets on cloud and for
ignoring the header on self-hosted.

Add scripts/restore-backup-vm.sh, which restores an instance backup into
an offline KVM VM to test database migrations. Bump the v4 version in
other/nightly/versions.json to sha-1e9add3.
2026-09-29 13:06:44 +02:00
Andras Bacsai 65262e639e fix(installer): keep resource data ownership on reinstall and upgrade
install.sh ran chown -R 9999:root and chmod -R 700 on all of
/data/coolify on every run. This changed bind-mounted data of services,
applications, and databases, and reset the ownership that a non-root
SSH user needs.

Set owner and mode on /data/coolify and the resource directories only
when the installer creates them. Change only source, ssh, and images
recursively, because the coolify container uses them.

Also wait until the Docker daemon accepts connections after a restart,
because OpenRC returns before the daemon is ready.

Fixes #11945
2026-09-29 10:37:54 +02:00
Andras Bacsai 5f6fb5dcc2 feat(dev): run localhost dev server in a Lima VM on macOS
Add a Lima backend to scripts/dev. Auto mode picks it on macOS when
limactl (Lima >= 2.0) is installed, and COOLIFY_DEV_SERVER_BACKEND=lima
forces it. Lima VMs are named coolify-dev-<slot>-<profile>. Coolify
connects to them through Lima's forwarded SSH port on
host.docker.internal, and only guest ports 80/443 are forwarded to
the host.

dev:qemu:seed now takes --ip and --port options, so the seeded server
can use a forwarded SSH address instead of the profile IP.

Add tests for the Lima start flow and for seeding with an overridden
address, and document the macOS setup in AGENTS.md.
2026-09-28 09:45:29 +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 BacsaiandClaude Opus 5.5 338f1f837f feat(dev): run one isolated dev instance per git branch
Merge scripts/dev-instances into scripts/dev. Each branch gets its own
Compose project, container, volumes, port block, libvirt network, and
KVM VMs, so stop and start reuse the same data and worktrees do not
collide.

- Name instances after the branch; keep slots and APP_KEYs in the main
  checkout's .dev-instances/ so they survive worktree removal
- Reuse existing QEMU VMs instead of recreating them; add dev:qemu --fresh
- Give each instance an isolated libvirt network (10.221.<slot>.0/24)
  and VM names coolify-dev-<branch>--<profile>
- Publish per-instance browser ports and publish them with tailscale
  serve when APP_URL is a tailnet host
- Add urls, exec, logs, container, destroy, and teardown commands; run
  teardown from jean.json before Jean deletes a worktree
- Fix Reverb/terminal browser ports and the testing-host alias in the
  instance compose file
- Keep fresh worktree instances working: pre-create laravel.log, log the
  host dev:qemu call to stderr, and stop Vite from watching vendor/

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 11:55:49 +02:00
Andras Bacsai f35de6b3b2 feat(dev): support KVM-backed localhost development servers 2026-09-24 13:04:44 +02:00
Andras Bacsai 97b6203fe1 fix(reverb): route broadcasts through bundled server and validate health 2026-09-22 10:14:32 +02:00
Andras Bacsai e3ab63e7d8 fix(reverb): align ports, host validation, and dev instance tooling 2026-09-22 09:58:28 +02:00
Andras Bacsai 3ce4209a2f fix(reverb): separate public Soketi port from internal Reverb port
Use SOKETI_PORT for Docker host bindings, keep Reverb on port 6001 internally, and stop install/upgrade scripts from overwriting public websocket port overrides.
2026-09-21 21:46:26 +02:00
Andras Bacsai da91ef1578 Merge remote-tracking branch 'origin/next' into reverb-realtime-migration 2026-08-25 20:02:36 +02:00
Andras Bacsai 60eff6fb6e fix(docker): update helper CLI for registry pushes (#11461) 2026-08-22 12:53:20 +02:00
Andras Bacsai c3a86b054a fix(upgrade): persist target image before container recreation (#11401) 2026-08-19 12:18:05 +02:00
Andras Bacsai e3ff6bef07 Merge remote-tracking branch 'origin/next' into reverb-realtime-migration 2026-08-18 19:56:33 +02:00
Andras Bacsai a5dedc07cd feat(storage): persist local images and unify clipboard copying
Add a private images disk with persistent container mounts and installation/upgrade setup, while routing avatar and project icon storage through it. Reuse the copy button component for API tokens and support clipboard copying through the shared helper.
2026-08-17 16:19:41 +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 009b298520 chore(dev): replace Spin with docker compose for local dev
Drop Spin from docs and helper scripts; run the stack and container
exec via docker compose with docker-compose.yml and docker-compose.dev.yml.
Update firewall-delegation tests to match the new commands.
2026-08-13 09:09:05 +02:00
TehBrian 61a2b183d3 fix(installer): minor grammatical error (#9209) 2026-08-10 18:42:56 +02:00
Andras Bacsai f9caa5250d feat(servers): add cross-instance server migration (#11075) 2026-08-07 23:07:55 +02:00
Andras Bacsai 32f9b48406 fix(v5): defer production runtime activation
Remove Flux token provisioning and container role handling from production.
Restore private server IP support and document the activation checklist.
2026-07-19 16:47:29 +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 a4ab69df56 feat(v5): authorize creates, deep-link selection, list apps in v4
Restrict V5 application and resource-connection creation to team admins.
Resolve project, environment, and application from query params and keep
session selection in sync. Surface V5 apps on the v4 resource index and
count them for project/environment emptiness. Create the flux data dir
on install and upgrade.
2026-07-18 15:55:47 +02:00
Andras Bacsai 525ab50280 chore(install): remove obsolete realtime version output 2026-07-14 15:13:31 +02:00
Andras Bacsai f6d06fc95c Merge remote-tracking branch 'origin/next' into reverb-realtime-migration 2026-07-14 14:23:42 +02:00
Andras Bacsai 772093928f Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-11 10:06:49 +02:00
Andras Bacsai d3fbb32c52 feat(cdn): sync release metadata through BunnyCDN
Replace the legacy sync:bunny flags with an interactive CDN sync flow for service templates and release metadata. Serve official service templates from the Coollabs CDN, update version metadata, and remove obsolete helper scripts.
2026-07-10 14:29:11 +02:00
Andras Bacsai c9416abec6 Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-02 21:25:02 +02:00
Andras Bacsai cf6f5a2678 feat(registry): add configurable docker registry url (#9017) 2026-07-02 18:52:46 +02:00
Andras Bacsai e3e91b7741 feat(v5): sync server status and ingress access
Add Flux agent token issuing, open and revoke Caddy ingress firewall
rules, broadcast server-scoped application status updates, and update
the dashboard to show unreachable servers as unknown.
2026-06-22 11:56:26 +02:00
Andras Bacsai a42785189e fix(dev): cache bust mutable coold nightly assets 2026-06-21 18:15:47 +02:00
Andras Bacsai 6069ac0669 fix(dev): rely on default flux dev capabilities 2026-06-21 17:08:09 +02:00
Andras Bacsai 4938b65f20 refactor(v5): defer builder bootstrap support
Remove active builder flags from dev Lima sync, bootstrap commands,
and server capabilities while documenting the v5 control-plane and
host-agent boundaries.
2026-06-21 16:54:02 +02:00
Andras Bacsai 068a2979fd feat(v5): use bridged Lima hosts for coold dev
Add v5 architecture docs and update dev bootstrap, seeding, and tests to use bridged Lima .local hosts with a container-accessible SSH key.
2026-06-21 15:13:59 +02:00
Andras Bacsai ad0bcc8a4a feat(v5): add application ingress routing 2026-06-20 15:08:45 +02:00
Andras Bacsai 86156b6f7a feat(v5): add mesh app canvas 2026-06-20 09:23:16 +02:00
Andras Bacsai 24bbfe07c6 feat(v5): add server bootstrap job with realtime cluster broadcasting
- Add V5BootstrapServerJob: SSH into new servers, install coold/WireGuard,
  track bootstrap progress via last_bootstrap_action/status/output fields
- Add V5ClusterUpdated event: broadcasts full cluster+servers payload to
  team private channel on bootstrap state changes
- Add V5RealtimeTestEvent + RealtimeTest page for WebSocket connectivity testing
- Consolidate 3 dropped migrations into base cluster/server migrations:
  WireGuard config, builder CPU quota, status check fields, uuid
- Auto-generate uuid on V5Model create via Schema::hasColumn guard
- Expose currentTeam.id in Inertia shared props
- Add showCluster, realtimeTest, broadcastRealtimeTest controller endpoints
- Add dropdown-menu UI component
2026-06-19 11:44:42 +02:00
Andras Bacsai 3ae87334bd feat(v5): add WireGuard and coold/corrosion config to clusters/servers
Add WireGuard networking fields (interface, management pool, listen port),
container network pool, coold/corrosion versioning, and builder CPU quota
to clusters and servers via new migrations and model fillables.

Expose full cluster and server CRUD on the Clusters page with private key
selection, pending state tracking, and new form primitives (Field, Input,
Textarea). Add server status check fields and a lima test VM config for
development.
2026-06-19 07:23:45 +02:00
Andras Bacsai 295addb6b0 refactor(dev): replace v5:sync-dev-lima-servers with V5DevLimaSeeder
Switch Lima VM dev-environment sync from a custom Artisan command to a
database seeder. The seeder creates/updates the Development-Lima cluster
and its two servers idempotently, reading ssh_user from the
COOLIFY_CLI_SSH_USER env var (exposed via config('coold.dev_ssh_user')).

dev.sh now passes COOLIFY_CLI_SSH_USER and runs db:seed instead of
building per-server --server flag arrays.
2026-06-16 17:10:40 +02:00
Andras Bacsai 5c23b9aaa5 feat(dev): add example nginx connectivity commands
Add ping and firewall up/down helpers for example nginx dev VMs.
Remove the v5 home ready banner and coolify version controls, and render Flux status as a compact summary.
2026-06-16 16:47:10 +02:00
Andras Bacsai 1e038fecae feat(v5): add server clusters and CLI bootstrap
Create v5 cluster/server persistence, expose them on the home page,
and add a bootstrap endpoint backed by the coolify CLI. Add dev Lima
server sync support and update the dev script firewall flow.
2026-06-16 15:45:16 +02:00
Andras Bacsai c884aaaeea feat(v5): add coolify CLI version check 2026-06-16 13:57:42 +02:00