Commit Graph

740 Commits

Author SHA1 Message Date
Andras Bacsai
36573ecbf0 fix: use correct property declaration for withinTransaction
The parent Migration class defines $withinTransaction without a type
hint. Setting it without redeclaring (no "bool" type) avoids the PHP
8.4 error: "Type of Migration::$withinTransaction must not be defined"

This is the proper Laravel way to disable transactions for migrations
that need to run CREATE INDEX CONCURRENTLY in PostgreSQL.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:41:33 +02:00
Andras Bacsai
e256e765e7 fix: properly handle transaction for concurrent index operations
Instead of redefining the $withinTransaction property (which causes
a type error), we now manually commit the transaction before running
CREATE INDEX CONCURRENTLY and begin a new transaction afterward.

This ensures PostgreSQL can execute the concurrent index operations
while maintaining transaction safety for subsequent migrations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:39:40 +02:00
Andras Bacsai
9c2ef0aa21 fix(migration): disable transaction for concurrent index creation
PostgreSQL does not allow CREATE INDEX CONCURRENTLY to run inside a
transaction block. This migration now sets $withinTransaction = false
to allow the concurrent index creation to succeed.

Fixes the error: "CREATE INDEX CONCURRENTLY cannot run inside a
transaction block" when running migrations in dev environment.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:31:39 +02:00
Andras Bacsai
22ef6c8c9a fix: add missing server_patch_webhook_notifications field
Add the server_patch_webhook_notifications column to both
the create and populate migrations to match the model and
Livewire component expectations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 17:52:07 +02:00
Andras Bacsai
53d1ad48cd fix: populate webhook notification settings for existing teams
Add migration to create webhook notification settings records
for all existing teams. This fixes the "unauthorized" error when
accessing the webhook notifications page for teams that existed
before the webhook feature was added.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 17:47:26 +02:00
Andras Bacsai
27879377a0 feat: add custom webhook notification support
Add basic infrastructure for custom webhook notifications:
- Create webhook_notification_settings table with event toggles
- Add WebhookNotificationSettings model with encrypted URL
- Integrate webhook settings into Team model and HasNotificationSettings trait
- Create Livewire component and Blade view for webhook configuration
- Add webhook navigation route and UI

This provides the foundation for sending webhook notifications to custom HTTP/HTTPS endpoints when events occur in Coolify.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 15:37:00 +02:00
Andras Bacsai
f4e5c195fe refactor: replace direct SslCertificate queries with server relationship methods for consistency 2025-10-09 17:00:05 +02:00
Andras Bacsai
bf5c08d071 work work on hetzner integration 2025-10-09 16:54:13 +02:00
Andras Bacsai
704ddf2968 improved hetzner features 2025-10-09 12:53:57 +02:00
Andras Bacsai
215301fa8f basics of adding / removing hetzner servers 2025-10-09 10:41:29 +02:00
Andras Bacsai
c1bcc41546 init of cloud providers 2025-10-08 20:47:50 +02:00
Andras Bacsai
2c64136503 feat(backup): enhance backup job with S3 upload handling and notifications
- Introduced a new notification class, BackupSuccessWithS3Warning, to alert users when local backups succeed but S3 uploads fail.
- Updated DatabaseBackupJob to track local backup success and handle S3 upload errors, improving error reporting and user notifications.
- Modified ScheduledDatabaseBackupExecution model to include a new s3_uploaded boolean field for tracking S3 upload status.
- Adjusted views and validation logic to reflect changes in backup execution status and S3 handling.
- Added tests to ensure the new s3_uploaded column is correctly implemented and validated.
2025-10-07 15:02:23 +02:00
Darren Sisson
fb7af48b10
update bitnami to bitnamilegacy 2025-10-03 15:48:11 +01:00
Andras Bacsai
a03c1b3b4b refactor(dashboard): remove deployment loading logic and introduce DeploymentsIndicator component for better UI management 2025-09-30 11:43:30 +02:00
Andras Bacsai
bfd5e56cc8 feat(dev-seeders): add PersonalAccessTokenSeeder to create development API tokens 2025-09-26 09:03:24 +02:00
Andras Bacsai
3f71f7becf
Merge pull request #6628 from heavygee/fix/team-invitation-email-case-sensitivity
Fix team invitation email case sensitivity bug
2025-09-25 09:29:24 +02:00
Andras Bacsai
f33df13c4e feat(environment): replace is_buildtime_only with is_runtime and is_buildtime flags for environment variables, updating related logic and views 2025-09-18 18:14:54 +02:00
Andras Bacsai
c1bee32f09 feat(deployment): introduce 'use_build_secrets' setting for enhanced security during Docker builds and update related logic in deployment process
Some checks are pending
Staging Build / amd64 (push) Waiting to run
Staging Build / aarch64 (push) Waiting to run
Staging Build / merge-manifest (push) Blocked by required conditions
2025-09-17 10:34:38 +02:00
GitHub Actions
c1c149968e Fix team invitation email case sensitivity bug
- Add email normalization to TeamInvitation model using setEmailAttribute()
- Add HasFactory trait to Team model for testing support
- Create TeamFactory for testing
- Add tests to verify email normalization works correctly
- Fixes issue where mixed case emails in invitations would cause lookup failures
- Resolves #6291

The bug occurred because:
1. User model normalizes emails to lowercase
2. TeamInvitation model did not normalize emails
3. When invitation was created with mixed case, it was stored as-is
4. User lookup failed due to case mismatch during invitation acceptance
5. This caused users to not be able to see teams they were invited to

This fix ensures both models normalize emails consistently.
2025-09-16 15:31:48 +01:00
Andras Bacsai
20ad2165e7 feat(environment): introduce 'is_buildtime_only' attribute to environment variables for improved build-time configuration
Some checks are pending
Staging Build / amd64 (push) Waiting to run
Staging Build / aarch64 (push) Waiting to run
Staging Build / merge-manifest (push) Blocked by required conditions
2025-09-11 17:38:16 +02:00
Andras Bacsai
5b3b4bbc43 refactor(environment): remove 'is_build_time' attribute from environment variable handling across the application to simplify configuration 2025-09-11 16:51:56 +02:00
Andras Bacsai
d9ebf3b142 refactor(webhook): remove Webhook model and related logic; add migrations to drop webhooks and kubernetes tables 2025-09-10 19:35:53 +02:00
Andras Bacsai
339118558c feat(settings): add option to restrict PR deployments to repository members and contributors 2025-09-05 14:30:51 +02:00
Andras Bacsai
a6fc39e798 feat(git-settings): add support for shallow cloning in application settings
- Introduced a new boolean setting `is_git_shallow_clone_enabled` to the application settings model.
- Updated the `Advanced` component to include a checkbox for enabling shallow cloning.
- Modified the `setGitImportSettings` and `generateGitImportCommands` methods to handle shallow clone logic.
- Created a migration to add the new setting to the database schema.
- Enhanced the deployment process to utilize shallow cloning for improved performance.
2025-08-21 10:16:57 +02:00
peaklabs-dev
e2fd1f4507
fix: disable env sorting by default
- this is a better default
2025-08-18 17:47:21 +02:00
Andras Bacsai
ee502b9f76 feat(email): implement email change request and verification process
- Added functionality for users to request an email change, including generating a verification code and setting an expiration time.
- Implemented methods in the User model to handle email change requests, code validation, and confirmation.
- Created a new job to update the user's email in Stripe after confirmation.
- Introduced rate limiting for email change requests and verification attempts to prevent abuse.
- Added a new notification for email change verification.
- Updated the profile component to manage email change requests and verification UI.
2025-08-18 14:54:08 +02:00
Andras Bacsai
0dada987a2 feat(backup): add disable local backup option and related logic for S3 uploads 2025-08-17 12:34:20 +02:00
Andras Bacsai
a2ef545b6b feat(changelog): implement automated changelog fetching from GitHub and enhance changelog read tracking 2025-08-12 10:07:11 +02:00
Andras Bacsai
0e7cc988a6 feat(user): add changelog read tracking and unread count method 2025-08-12 10:06:19 +02:00
🏔️ Peak
e5e1bdcd4d
fix(backups): large database backups are not working (#6217) 2025-07-18 15:47:14 +02:00
Andras Bacsai
13f10028db feat(previews): implement soft delete and cleanup for ApplicationPreview, enhancing resource management in DeleteResourceJob 2025-07-14 21:17:40 +02:00
Andras Bacsai
bfac07da3c feat(migrations): add optimized indexes to activity_log for improved query performance 2025-06-26 22:21:07 +02:00
Andras Bacsai
8abb8b2328 feat(settings): add sponsorship popup toggle and corresponding database migration 2025-06-25 15:18:39 +02:00
Hauke Schnau
1968d4d494
feat(auth): add Zitadel OAuth Provider (#5490) 2025-06-18 14:35:54 +02:00
Yassir Elmarissi
a77bd88258
feat(auth): Add Clerk OAuth Provider (#5553) 2025-06-18 14:29:46 +02:00
Yassir Elmarissi
4375f52c5d
feat(auth): Add Discord OAuth Provider (#5552) 2025-06-18 14:19:01 +02:00
Andras Bacsai
bd9f3d9a69 feat(seeder): conditionally dispatch StartProxy action based on proxy check result 2025-06-17 08:11:02 +02:00
Andras Bacsai
423cf8f67d fix(seeder): conditionally dispatch CheckAndStartSentinelJob based on server's sentinel status 2025-06-17 08:10:19 +02:00
Andras Bacsai
ad8b5bdcd3 feat(seeder): add CheckAndStartSentinelJob dispatch for each server in ProductionSeeder 2025-06-16 15:03:10 +02:00
Andras Bacsai
cde3c697a7 feat(seeder): dispatch StartProxy action for each server in ProductionSeeder 2025-06-16 14:51:54 +02:00
Andras Bacsai
e2df86f0f2 fix(migration): update default value handling for is_sentinel_enabled column in server_settings 2025-06-16 14:49:01 +02:00
Andras Bacsai
e8e7b3bc59 feat(migration): add is_sentinel_enabled column to server_settings with default true 2025-06-16 14:38:01 +02:00
Andras Bacsai
ddcb14500d refactor(proxy-status): refactored how the proxy status is handled on the UI and on the backend
feat(cloudflare): improved cloudflare tunnel automated installation
2025-06-06 14:47:54 +02:00
Andras Bacsai
46b4cfac68 feat(terminal-access): implement terminal access control for servers and containers, including UI updates and backend logic 2025-05-29 14:09:05 +02:00
Andras Bacsai
6ea6d2742b feat(server): implement server patch check notifications
- Added a new job, ServerPatchCheckJob, to handle server patch checks and notifications.
- Introduced a new notification class, ServerPatchCheck, for sending updates via email, Discord, Slack, Pushover, and Telegram.
- Updated notification settings models to include server patch notification options for email, Discord, Slack, Pushover, and Telegram.
- Created a migration to add server patch notification fields to the respective settings tables.
- Enhanced the UI to allow users to enable/disable server patch notifications across different channels.
2025-05-26 14:03:59 +02:00
Andras Bacsai
debfcb7028 feat(migration): add 'is_migrated' and 'custom_type' columns to service_applications and service_databases tables 2025-04-30 16:43:59 +02:00
Andras Bacsai
785eb09ea3 chore(seeder): update git branch from 'main' to 'v4.x' for multiple examples in ApplicationSeeder 2025-04-30 10:31:09 +02:00
Andras Bacsai
78ef80f800 refactor 2025-04-23 13:22:01 +02:00
Andras Bacsai
9e608f7ba5 refactor(http-basic-auth): rename 'http_basic_auth_enable' to 'http_basic_auth_enabled' across application files for consistency 2025-04-22 21:30:27 +02:00
Christopher Kaster
2634f516d5
feat: Add HTTP Basic Authentication 2025-04-17 14:14:32 +02:00
Andras Bacsai
eda1e1899f fix(migrations): make stripe_comment field nullable in subscriptions table 2025-04-14 10:30:43 +02:00
Andras Bacsai
68bd945b09 refactor(Application): rename network_aliases to custom_network_aliases across the application for clarity and consistency 2025-04-09 08:42:50 +02:00
Andras Bacsai
f8607ddf6a
Merge branch 'next' into docker-network-aliases 2025-04-08 13:27:59 +02:00
Andras Bacsai
52d612a56a refactor(migration): enhance local file volumes migration with logging 2025-04-01 08:49:07 +02:00
Andras Bacsai
fcfd00eebe feat(application): add SPA configuration and update Nginx generation logic 2025-03-31 15:10:50 +02:00
Andras Bacsai
c7591fde15 refactor(database): remove debug output from volume update process 2025-03-30 20:07:56 +02:00
Andras Bacsai
a8018ad2c4 refactor(database): improve decryption and deduplication of local file volumes 2025-03-30 18:04:09 +02:00
Andras Bacsai
b376d6df2a reverting: encrypting mount and fs_path 2025-03-29 22:16:12 +01:00
Andras Bacsai
637c3982d1 feat(database): disable MongoDB SSL by default in migration 2025-03-26 09:45:57 +01:00
Andras Bacsai
abc7dd65ca refactor(database): enhance encryption process for local file volumes 2025-03-25 13:39:30 +01:00
Andras Bacsai
26f4d37346 feat(notifications): add discord ping functionality and settings 2025-03-21 12:16:33 +01:00
Andras Bacsai
009cee1bbd
Merge branch 'next' into feat-db-ssl 2025-03-17 15:15:24 +01:00
Andras Bacsai
8ebbe396f4 fix(database): change default value of enable_ssl to false for multiple tables 2025-03-17 13:58:31 +01:00
Piotr Wójcik
0baeaa982b
Merge branch 'next' into docker-network-aliases 2025-03-16 14:50:26 +01:00
peaklabs-dev
ee93ccd8e7
fix(backups): retention settings
- If you set a low local backup retention, for example 2 backups for local backup retention and 10 backups for S3, then the S3 backups were never deleted, not even after 10 days. This was because we check the file paths based on the backup executions table, and as soon as a backup was deleted locally, the execution was removed, which meant after 10 days for s3 there where no backups older then 10 days just the 2 local backups which is just wrong. Now we only delete a backup execution if it has been removed from both locations.
- Also added a nice little UI element to see where your backup is available.
2025-03-14 15:28:12 +01:00
Andras Bacsai
1160b3312e fix(seeder): Update GitHub app name in GithubAppSeeder 2025-03-11 13:28:26 +01:00
Andras Bacsai
07cbec7ddc feat(billing): Add Stripe past due subscription status tracking 2025-03-01 12:43:12 +01:00
Andras Bacsai
9c4395e6de feat(database): Add index to scheduled database backup executions 2025-02-27 14:04:22 +01:00
Andras Bacsai
cd1fc649e3 feat(database): Add index to scheduled task executions for improved query performance 2025-02-27 13:54:10 +01:00
peaklabs-dev
225f24e650
chore: improve code quality suggested by code rabbit 2025-02-19 18:04:58 +01:00
peaklabs-dev
792b1b889f
faet(migration): Add SSL fields to database tables 2025-02-10 15:32:05 +01:00
peaklabs-dev
a539bfd765
fix(ssl): server id 2025-02-07 18:45:12 +01:00
peaklabs-dev
836006798f
fix(ssl): remove caCert even if it is a folder by accident 2025-02-07 18:28:58 +01:00
peaklabs-dev
35cd9573ab
fix(ssl): add mount path to DB to fix regeneration of certs 2025-02-07 18:11:26 +01:00
peaklabs-dev
d6a39f2ed3
fix(ssl): always create ca crt on disk even if it is already there 2025-02-04 16:57:40 +01:00
peaklabs-dev
3c62130e86
fix(ssl): improve SSL cert file mounts
- If SSL is disabled, delete the SSL crt and file mounts in the DB
- If SSL is disabled, delete the SSL folder
- If SSL is enabled, make sure the file mounts are added inside the helper
- remove old file mounts first to make sure the ssl crt content is always up to date and no duplicates are added
2025-02-04 16:34:24 +01:00
peaklabs-dev
fba95c3729
fix(migration): store subjectAlternativeNames as a json array in the db 2025-02-03 22:35:00 +01:00
peaklabs-dev
498bf04559
feat(migration): add CN and alternative names to DB 2025-02-03 22:05:32 +01:00
peaklabs-dev
a1e650e699
chore: rename ca crt folder to ssl 2025-02-03 21:42:28 +01:00
peaklabs-dev
4305ba5f06
fix(migration): ssl certificates table
- remove unique constraint
- add CA certificate boolean
- make sure that each certificate has a server_id so that we know which CA to use when renewing certificates
2025-02-02 14:56:26 +01:00
peaklabs-dev
7406ee67c2
chore(ssl): rename CA cert to coolify-ca.crt because of conflicts 2025-01-31 18:27:20 +01:00
peaklabs-dev
34216af497
fix(db): SSL certificates table and model
- server_id is a foreign id
- server_id must be unique as each server can only have 1 CA cert
- resource_id must be unique as each resource can only have 1 SSL cert
2025-01-31 12:35:34 +01:00
peaklabs-dev
503e1ffb67
feat(seeder): Call CA SSL seeder in prod and dev 2025-01-31 12:23:59 +01:00
peaklabs-dev
90a93ce7e0
feat(ssl): add a Coolify CA Certificate to all servers 2025-01-31 12:23:00 +01:00
peaklabs-dev
22c26cdf78
chore(migration): ssl cert and key should not be nullable 2025-01-30 19:52:49 +01:00
peaklabs-dev
b53d3d07d9
fix(ssl): make default ssl mode require not verify-full as it does not need a ca cert 2025-01-30 19:09:37 +01:00
peaklabs-dev
2ac9147532
chore(migration): remove unused columns 2025-01-30 14:16:52 +01:00
peaklabs-dev
edddbc8536
feat(migration): encrypt local file volumes content and paths 2025-01-30 13:54:00 +01:00
peaklabs-dev
214a7a089e
feat(migration): Add ssl setting to standalone_postgresqls table 2025-01-29 13:04:27 +01:00
peaklabs-dev
3f582a1ea4
feat(migration): Add ssl_certificates table and model 2025-01-29 13:03:13 +01:00
Andras Bacsai
085103708c fix(core): v1 parser versions trying to access application_id, while it is resourceable_id
fix(db): remove wrongly created, empty environmentvariables
2025-01-22 10:21:51 +01:00
peaklabs-dev
4197104026
fix(db): finished_at timestamps are not set for existing deployments 2025-01-21 14:02:29 +01:00
Andras Bacsai
ca2c66943c fix
Some checks are pending
Staging Build / amd64 (push) Waiting to run
Staging Build / aarch64 (push) Waiting to run
Staging Build / merge-manifest (push) Blocked by required conditions
2025-01-17 14:00:20 +01:00
Andras Bacsai
6e9960c010 revert revert so it will be good (say what?) 2025-01-17 13:44:37 +01:00
Andras Bacsai
56ae346b9d test 2025-01-17 13:22:04 +01:00
Andras Bacsai
d043fbfeb9 refactor: streamline ProductionSeeder by removing debug logs and unnecessary checks, while ensuring essential seeding operations remain intact 2025-01-17 12:33:03 +01:00
Andras Bacsai
10b3c6b107 fix: update ProductionSeeder to check for private key instead of server's private key 2025-01-17 12:24:31 +01:00
Andras Bacsai
d3a6576a06 fix: create the private key before the server in the prod seeder 2025-01-17 12:14:03 +01:00
Andras Bacsai
973429d2c4 add debug logs 2025-01-17 11:38:22 +01:00
Andras Bacsai
95ccf23e9d refactor: comment out RootUserSeeder call in ProductionSeeder for clarity 2025-01-17 11:19:45 +01:00