Compare commits

..

3299 Commits

Author SHA1 Message Date
Andras Bacsai
3c04815da4 chore: Update user for s6-setuidgid command in init-script/up 2024-09-12 21:33:33 +02:00
Andras Bacsai
b053cfeee2 chore: Update user for s6-setuidgid command in init-script/up 2024-09-12 21:28:55 +02:00
Andras Bacsai
930157b5db chore: Remove unnecessary SSH command execution time logging 2024-09-12 21:17:17 +02:00
Andras Bacsai
786b6f11b2 test 2024-09-12 21:16:08 +02:00
Andras Bacsai
0b33315991 Merge pull request #3410 from peaklabs-dev/desing-contributing.md
Feat: Redesigned contributing.md
2024-09-12 18:08:59 +02:00
Andras Bacsai
b6b9179bb3 Merge branch 'next' into desing-contributing.md 2024-09-12 18:08:35 +02:00
Andras Bacsai
9122983f22 Merge pull request #3411 from peaklabs-dev/fix-pr-build-gh-actions
Fix: PR Build GitHub Action
2024-09-12 18:07:59 +02:00
peaklabs-dev
ccdcea665d Update pr-build.yml 2024-09-12 17:09:00 +02:00
peaklabs-dev
7b5aa78557 Update pr-build.yml 2024-09-12 17:03:04 +02:00
Andras Bacsai
e38b29d833 chore: Update release version to 4.0.0-beta.336 2024-09-12 15:04:24 +02:00
peaklabs-dev
d4679a8be1 Merge branch 'coollabsio:main' into desing-contributing.md 2024-09-12 13:03:39 +02:00
Andras Bacsai
7ac45aa706 Merge pull request #3406 from coollabsio/next
v4.0.0-beta.335
2024-09-12 12:43:32 +02:00
Andras Bacsai
8862b50c98 chore: Remove unnecessary SSH command execution time logging 2024-09-12 12:42:47 +02:00
Andras Bacsai
b5a56892fd chore: Remove unnecessary null check for proxy_type in generate_default_proxy_configuration 2024-09-12 12:39:34 +02:00
Andras Bacsai
664a990c60 chore: Update listeners and proxy settings in server form and new server components 2024-09-12 12:34:09 +02:00
Andras Bacsai
16e472da19 chore: Update constants.ssh.mux_enabled in remoteProcess.php 2024-09-12 12:16:20 +02:00
Andras Bacsai
7dd0588bfe Merge pull request #3405 from peaklabs-dev/fix-ssh-multiplexing-docker-desktop-windows
Fix: SSH-Multiplexing on docker desktop for windows
2024-09-12 12:14:39 +02:00
Andras Bacsai
a95ebb4d56 Merge branch 'next' into fix-ssh-multiplexing-docker-desktop-windows 2024-09-12 12:14:24 +02:00
Andras Bacsai
75f266fa9f fix: cloudflare tunnel with new multiplexing feature 2024-09-12 12:07:50 +02:00
Andras Bacsai
90fd0ebf12 chore: Update release version to 4.0.0-beta.335 2024-09-12 10:51:14 +02:00
peaklabs-dev
4aeb8ff02b Fix: SSH Multiplexing on docker desktop on Windows 2024-09-12 10:40:06 +02:00
Andras Bacsai
8bc22e185b Merge pull request #3404 from coollabsio/next
fixes for 334
2024-09-12 10:34:51 +02:00
Andras Bacsai
5244ef60bd chore: Update 'key' value of gitlab in Service.php to use environment variable 2024-09-12 10:29:45 +02:00
Andras Bacsai
f3748fc294 update lock file 2024-09-12 10:25:46 +02:00
Andras Bacsai
03d419e591 chore: Remove itsgoingd/clockwork from require-dev in composer.json 2024-09-12 10:20:55 +02:00
Andras Bacsai
9e90daf414 Merge pull request #3393 from coollabsio/next
v4.0.0-beta.334
2024-09-12 10:12:01 +02:00
Andras Bacsai
420f1df998 Merge pull request #3391 from peaklabs-dev/install-clokwork
Feat: Install Clockwork
2024-09-12 10:03:03 +02:00
Andras Bacsai
f672a08afb chore: Add minio/mc command to Dockerfile 2024-09-12 09:56:48 +02:00
Andras Bacsai
67d44713e7 Merge pull request #3399 from dimaaan21/next
fix: keydb. add `:` delimiter for connection string
2024-09-12 09:49:56 +02:00
Andras Bacsai
0b950f444a Merge pull request #3396 from peaklabs-dev/add-release.md
Feat: Add RELEASE.md
2024-09-12 09:46:44 +02:00
Andras Bacsai
8712af7379 fix: move mc command to coolify image from helper 2024-09-12 09:42:28 +02:00
Dmitry
72c08e4496 fix: keydb. add : delimiter for connection string 2024-09-11 22:44:35 +03:00
Andras Bacsai
1a40bebaae chore: Update permissions in pr-build.yml and version numbers 2024-09-11 15:47:54 +02:00
peaklabs-dev
25f5060333 move clockwork to dev only 2024-09-11 15:25:51 +02:00
peaklabs-dev
6e48c94c6e Install Clockwork 2024-09-11 15:10:25 +02:00
peaklabs-dev
410b55cf03 Update CONTRIBUTING.md 2024-09-11 14:39:24 +02:00
peaklabs-dev
0881d001d6 Update CONTRIBUTING.md 2024-09-11 14:34:37 +02:00
peaklabs-dev
483b4f8eb7 Update CONTRIBUTING.md 2024-09-11 14:31:35 +02:00
Andras Bacsai
c9a52c552b Merge pull request #3389 from coollabsio/next
v4.0.0-beta.333
2024-09-11 14:26:58 +02:00
Andras Bacsai
72f0118506 chore: Add reminder to backup .env file during installation script 2024-09-11 14:26:10 +02:00
Andras Bacsai
bc13ad6b82 chore: Copy .env file to backup location during installation script 2024-09-11 14:25:40 +02:00
Andras Bacsai
b145691e1e chore: Add reminder to backup .env file before running install script again 2024-09-11 14:25:16 +02:00
Andras Bacsai
5d476e3924 chore: Update server check job middleware to use server ID instead of UUID 2024-09-11 14:23:19 +02:00
peaklabs-dev
3f3bf075fa Update RELEASE.md 2024-09-11 14:18:10 +02:00
peaklabs-dev
6498e5b6f0 Update RELEASE.md 2024-09-11 14:16:25 +02:00
peaklabs-dev
a3caad239c Feat: release.md file 2024-09-11 14:09:15 +02:00
Andras Bacsai
577927a20b Merge pull request #3386 from coollabsio/fix-#3343
fix: Disable mux_enabled during server validation
2024-09-11 10:23:33 +02:00
Andras Bacsai
409d5ef60e Merge pull request #3379 from peaklabs-dev/fix-#3343
Fix: Onboarding fails if SSH server uses other port than 22 and other onboarding improvements
2024-09-11 10:22:32 +02:00
Andras Bacsai
f1a1deff26 fix: Disable mux_enabled during server validation 2024-09-11 10:21:18 +02:00
Andras Bacsai
9d42a7f146 Merge pull request #3384 from fizikiukas/patch-1
Update Hostinger link in README
2024-09-11 08:50:46 +02:00
Valentinas Čirba
826b64d056 Update README.md 2024-09-11 07:57:16 +03:00
peaklabs-dev
2c9491d81c Fix: Do not change localhost server name on revalidation 2024-09-10 17:43:16 +02:00
peaklabs-dev
d378bb94be Fix: remote servers with port and user 2024-09-10 17:29:53 +02:00
peaklabs-dev
d74cfd09ce Fixes 2024-09-10 17:18:00 +02:00
peaklabs-dev
91c845732e fix set custom port or user during boarding 2024-09-10 16:55:34 +02:00
peaklabs-dev
83698ac8f2 Merge branch 'coollabsio:main' into fix-#3343 2024-09-10 16:35:23 +02:00
Andras Bacsai
f718604ac4 chore: Update .env file with new values 2024-09-10 14:58:26 +02:00
Andras Bacsai
3e188bf947 chore: Copy .env file to .env-{DATE} if it exists 2024-09-10 14:54:22 +02:00
Andras Bacsai
f70160a17c chore: Update version numbers to 4.0.0-beta.333 2024-09-10 14:52:47 +02:00
Andras Bacsai
5722d1a220 Merge pull request #3352 from KalvadTech/alpine_support
Implement support for Alpine Linux
2024-09-10 14:52:25 +02:00
Andras Bacsai
bae9ea79de Merge pull request #3366 from coollabsio/next
v4.0.0-beta.332
2024-09-10 14:41:41 +02:00
peaklabs-dev
f3845ce30a New onboarding error UI and advanced menu 2024-09-10 13:55:58 +02:00
Andras Bacsai
d57c9d8aa0 feat: add elixir finetunes to the deployment job 2024-09-10 12:44:16 +02:00
Andras Bacsai
c7c2924990 fix: Update remoteProcess.php to handle null values in logItem properties 2024-09-10 12:05:10 +02:00
Andras Bacsai
aa30e83f4a fix: delete older versions of the helper image other than the latest one 2024-09-10 11:33:52 +02:00
Andras Bacsai
77455cd444 fix: scp through cloudflare 2024-09-10 10:19:13 +02:00
Andras Bacsai
2777fbc0ec fix: Remove debug statement in shared.php 2024-09-10 08:52:25 +02:00
Andras Bacsai
2c929b300a feat: Expose project description in API response 2024-09-10 08:49:25 +02:00
Andras Bacsai
27ad4441ee formatting 2024-09-10 08:49:20 +02:00
Andras Bacsai
63729c7bbf Merge pull request #3373 from mattstein/api-project-description
feat: Expose project description in API response
2024-09-10 08:49:08 +02:00
Andras Bacsai
1e68444f10 Merge pull request #3374 from Vahor/host-network
fix: don't add `networks` key if `network_mode` is used
2024-09-10 08:42:17 +02:00
Andras Bacsai
f8dfe643f4 chore: Update appwrite.yaml to include OpenSSL key variable assignment 2024-09-10 08:37:57 +02:00
Vahor
66cf6df4b3 skip docker network creation 2024-09-09 23:46:29 +02:00
Vahor
29acc4ee25 fix: don't add networks key if network_mode is used 2024-09-09 23:30:47 +02:00
Matt Stein
f73983e3dd Include project’s description in API response. 2024-09-09 09:44:43 -07:00
Matt Stein
44d417c07e Fix user-facing string case. 2024-09-09 09:38:40 -07:00
Andras Bacsai
1d72f76072 fix: appwrite template + parser 2024-09-09 15:04:51 +02:00
Andras Bacsai
c2f7e85022 Merge pull request #3364 from peaklabs-dev/improve-persist-ssh-sessions
Feat: Implement SSH multiplexing to reduce the number of SSH authentications in remote processes
2024-09-09 11:23:24 +02:00
Andras Bacsai
9e6486fa66 Merge pull request #3367 from peaklabs-dev/default-timezone
Fix: Set a default server timezone
2024-09-09 11:20:10 +02:00
peaklabs-dev
28bcd0023c remove cache 2024-09-09 10:33:57 +02:00
Andras Bacsai
84093afaf6 refactor: Improve environment variable handling in shared.php 2024-09-09 10:16:12 +02:00
Andras Bacsai
40347744e0 chore: Set timeout for ServerCheckJob to 60 seconds 2024-09-09 09:08:43 +02:00
Andras Bacsai
060988d923 fix: reenable overlapping servercheckjob 2024-09-09 09:05:40 +02:00
Andras Bacsai
b093c9757c Merge branch 'next' into improve-persist-ssh-sessions 2024-09-09 08:30:04 +02:00
Loïc Tosser
25976a4870 Merge branch 'next' into alpine_support 2024-09-09 08:48:36 +04:00
peaklabs-dev
4f9e1a3e5e Feat: Cleanup stale multiplexing connections 2024-09-08 19:37:00 +02:00
peaklabs-dev
c8218e6901 Fix: Enabel mux 2024-09-08 19:15:37 +02:00
peaklabs-dev
cc10d08a7c Feat: Implement SSH Multiplexing 2024-09-08 18:13:00 +02:00
peaklabs-dev
e5a980d544 Merge pull request #3361 from coollabsio/main
merge main into next
2024-09-08 15:33:59 +02:00
peaklabs-dev
59c7f2cb56 Fix: Set a default server timezone 2024-09-08 15:24:27 +02:00
Andras Bacsai
d2a306dab9 refactor: Skip returning volume if driver type is cifs or nfs 2024-09-08 13:53:20 +02:00
Andras Bacsai
681a745fc7 chore: Update coolify-helper.yml to include "next" branch in push trigger 2024-09-08 13:09:14 +02:00
Andras Bacsai
abb6655fef chore: Update versions.json to version 1.0.1 2024-09-08 12:42:46 +02:00
Andras Bacsai
aa586a5677 chore: Update docker cleanup schedule to run daily at midnight 2024-09-08 12:40:53 +02:00
Andras Bacsai
87ee3c511c chore: Update docker image pruning command to exclude managed images 2024-09-08 12:38:22 +02:00
Andras Bacsai
a17daf96be chore: Add coolify.managed=true label to Docker image builds 2024-09-08 12:38:16 +02:00
Andras Bacsai
a419496066 testing label 2024-09-08 12:35:11 +02:00
Andras Bacsai
c668d2d1ff chore: Update DATABASE_URL in plunk.yaml to use plunk database 2024-09-07 20:59:51 +02:00
Andras Bacsai
4611332a8f newparser parser parsing parser parse 2024-09-07 20:57:56 +02:00
Andras Bacsai
8b3eed5895 chore: Update version to 4.0.0-beta.332 2024-09-07 20:56:56 +02:00
Andras Bacsai
9861ad4045 refactor: Update cleanup schedule to run daily at midnight 2024-09-07 20:56:52 +02:00
Andras Bacsai
5fb560dbbf chore: Update versions.json and sentry.php to 4.0.0-beta.332 2024-09-07 20:56:26 +02:00
Andras Bacsai
435c0baa87 Merge pull request #3350 from coollabsio/next
v4.0.0-beta.331
2024-09-07 14:14:26 +02:00
Andras Bacsai
bb1454d255 Merge pull request #3353 from coollabsio/fix-helper-pull-s3-backup
Fix: Pull helper image if not available otherwise s3 backup upload fails
2024-09-07 14:11:24 +02:00
peaklabs-dev
a882d3c713 code cleanup 2024-09-07 12:25:50 +02:00
peaklabs-dev
6010b3209d remove duplicated code 2024-09-07 12:23:15 +02:00
peaklabs-dev
504133232a Improve logic, made it simpler 2024-09-07 12:19:40 +02:00
peaklabs-dev
d816863d31 Fix: Pull helper image if not available otherwise s3 backup upload fails 2024-09-07 11:48:20 +02:00
Loïc Tosser
6b475cc1bf refactor: Improve handling of environment variable merging in upgrade script 2024-09-07 11:00:42 +04:00
Loïc Tosser
5ef2d476a4 Implementing support for Alpine Linux 2024-09-07 10:35:26 +04:00
ayntk-ai
3eb909d3bc Update version to 4.0.0-beta.331 2024-09-06 20:29:02 +02:00
ayntk-ai
a102e812cf fix: Plunk NEXT_PUBLIC_API_URI 2024-09-06 20:25:51 +02:00
Andras Bacsai
254611dda8 Merge pull request #3348 from coollabsio/next
fix fix fix friday fix
2024-09-06 16:55:54 +02:00
Andras Bacsai
d8f9e5910f refactor: Improve handling of server timezones in scheduled backups and tasks 2024-09-06 16:52:46 +02:00
Andras Bacsai
68d4a30eb0 refactor: Improve handling of server timezones in scheduled backups and tasks 2024-09-06 16:51:15 +02:00
Andras Bacsai
5c05ea4463 Merge pull request #3347 from coollabsio/next
refactor: Improve handling of server timezones in scheduled backups
2024-09-06 16:42:54 +02:00
Andras Bacsai
a2dac9394a refactor: Improve handling of server timezones in scheduled backups and tasks 2024-09-06 16:42:12 +02:00
Andras Bacsai
7fabeec08d Merge pull request #3316 from coollabsio/next
v4.0.0-beta.330
2024-09-06 14:53:39 +02:00
Andras Bacsai
a9228b110e chore: Update coolify version to 4.0.0-beta.331 2024-09-06 14:33:30 +02:00
Andras Bacsai
148c7d212c update install scripts to pull the latest helper version during installation 2024-09-06 14:33:06 +02:00
Andras Bacsai
98154549cf chore: Update Ray configuration and Dockerfile 2024-09-06 12:06:35 +02:00
Andras Bacsai
3d4f02afde Merge pull request #3326 from grantmagdanz/fix-chatwoot-config
Bug fix: Update chatwoot service name to fix issues with reverse proxy
2024-09-06 12:06:51 +02:00
Andras Bacsai
b57e2960f2 fix: parser 2024-09-06 12:05:22 +02:00
Andras Bacsai
110fac944d chore: Expose port 3000 in browserless.yaml template 2024-09-06 12:05:14 +02:00
Andras Bacsai
518ba3502d Merge pull request #3338 from coollabsio/add-missing-api-endpoints-for-service-envs
Add missing api endpoints for service envs
2024-09-06 10:52:04 +02:00
Andras Bacsai
676cee9e3e Merge pull request #3331 from galer7/add-missing-api-endpoints-for-service-envs
Add API endpoints for service environment variables
2024-09-06 10:51:10 +02:00
Andras Bacsai
ec7b18556e Update services controller to include new service envs commands 2024-09-06 10:48:47 +02:00
Andras Bacsai
8d2b280b03 chore: Add middleware for updating environment variables by UUID in api.php routes 2024-09-06 10:48:25 +02:00
Andras Bacsai
ba0e29aaf4 chore: Update Ray configuration and Dockerfile 2024-09-06 10:21:23 +02:00
Andras Bacsai
fccd31009c chore: Enable Ray by default and update Dockerfile with latest versions of PACK and NIXPACKS 2024-09-06 10:21:02 +02:00
Andras Bacsai
34e213202a chore: Disable Ray by default 2024-09-06 10:20:35 +02:00
Andras Bacsai
e7ab43c018 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-09-06 10:13:05 +02:00
Andras Bacsai
0c87a8f4ec chore: Update Dockerfile with latest versions of PACK and NIXPACKS 2024-09-06 10:13:02 +02:00
Andras Bacsai
54e69de2af docs: Update Plunk documentation link in compose/plunk.yaml 2024-09-06 10:12:59 +02:00
Andras Bacsai
545613b554 Merge branch 'main' into next 2024-09-06 10:04:37 +02:00
Andras Bacsai
5c7b9473f8 feat: Refactor shared.php to improve environment variable handling 2024-09-06 10:03:09 +02:00
Andras Bacsai
a32e53c5a3 feat: Update Docker Compose file with DB_URL environment variable 2024-09-06 10:02:44 +02:00
Andras Bacsai
b44f4e49e8 chore: Update server form layout and settings 2024-09-06 08:46:27 +02:00
Andras Bacsai
321b8559e0 feat: Update server_settings table to force docker cleanup 2024-09-06 08:46:24 +02:00
Gabriel Galer
69794f4ca8 Update api.php routes to include middleware for updating environment variables by UUID 2024-09-06 08:31:32 +03:00
Gabriel Galer
4e1663e9db Fix bulk rename problems in api.php 2024-09-06 00:10:40 +03:00
Gabriel Galer
2e5ed5969d Update services controller to include new service envs commands 2024-09-05 23:58:52 +03:00
Gabriel Galer
ab055e0692 Update api.php routes 2024-09-05 23:58:52 +03:00
Gabriel Galer
6c2717ad08 Update openapi spec 2024-09-05 23:58:52 +03:00
Andras Bacsai
3ac52af673 Update coolify-helper.yml 2024-09-05 23:58:52 +03:00
Andras Bacsai
22d99dec52 Update coolify-helper.yml 2024-09-05 23:58:52 +03:00
ayntk-ai
6a654e31bd Update service-templates.json 2024-09-05 20:52:49 +02:00
ayntk-ai
d07cf59460 Fix: Plunk svg 2024-09-05 20:51:36 +02:00
peaklabs-dev
90e435d392 Merge pull request #3201 from FranckKe/add_plunk_template
feat: add Plunk template
2024-09-05 20:39:04 +02:00
Grant Magdanz
dfadadda10 Update chatwoot service name to fix issues with reverse proxy 2024-09-05 11:08:01 -07:00
ayntk-ai
0a7c7036f1 Update service-templates.json 2024-09-05 18:57:56 +02:00
peaklabs-dev
9215054d72 Merge pull request #3148 from Skeyelab/adding-browserless-template
feat: adding Browserless template
2024-09-05 18:39:18 +02:00
Andras Bacsai
22de8a7d2b chore: Ignore unnecessary files in production build workflow 2024-09-05 14:54:47 +02:00
Andras Bacsai
6f5b92d322 Update coolify-helper.yml 2024-09-05 14:53:49 +02:00
Andras Bacsai
9ef44f9ffb Update coolify-helper.yml 2024-09-05 14:53:10 +02:00
Andras Bacsai
5a604b2fc4 Update versions.json 2024-09-05 14:51:49 +02:00
Andras Bacsai
65b8d3c6d4 Merge pull request #3320 from coollabsio/update_helper_image
chore: Update coolify-helper.yml to get version from versions.json
2024-09-05 14:50:03 +02:00
Andras Bacsai
e05e0da058 chore: Update coolify-helper.yml to get version from versions.json 2024-09-05 14:42:27 +02:00
Andras Bacsai
e4854aaa1b Refactor muxFilename method to use UUID instead of IP, port, and user 2024-09-05 14:41:04 +02:00
Andras Bacsai
2531574a9a Merge pull request #3256 from Vahor/add-server-name
Add server name in execute command container options
2024-09-05 11:47:21 +02:00
Andras Bacsai
3aa31f3da6 fix: Update helper image pulling logic to only pull if the version is newer 2024-09-05 11:44:33 +02:00
Andras Bacsai
645337b09c Merge pull request #3264 from Vahor/install-log-drain-spam
fix: don't check logDrain installation if it's not enabled
2024-09-05 11:40:22 +02:00
Andras Bacsai
bd3220ad73 Merge pull request #3283 from TimKochDev/fix-deployments-typo
fix: Deployment running for - without "ago"
2024-09-05 11:34:04 +02:00
Andras Bacsai
6528bc5766 chore: Update UI for displaying deployment status in deployment list 2024-09-05 11:25:01 +02:00
Andras Bacsai
93af54ef84 chore: Update UI for displaying deployment status in deployment list 2024-09-05 11:23:59 +02:00
Andras Bacsai
08b9c79298 fix: Handle project not found error in environment_details API endpoint 2024-09-05 11:18:00 +02:00
Andras Bacsai
22bd305e8f chore: Update UI for displaying no executions found in scheduled task list 2024-09-05 11:15:56 +02:00
Andras Bacsai
dbad08f4dd Merge pull request #3288 from julienbeugras/fix-project-create-api-docs
Fix project create api docs
2024-09-05 11:16:05 +02:00
Andras Bacsai
b5232f3d32 Merge pull request #3300 from Vahor/remove-reverse-scheduled
fix: recent executions in wrong order in scheduled-task list ui
2024-09-05 11:07:48 +02:00
Andras Bacsai
58234ef65e Merge pull request #3301 from mattstein/main
Improve language in scheduled task container name helper
2024-09-05 11:06:11 +02:00
Andras Bacsai
d211362ab3 improvement: only pull helper image if the version is newer than the one 2024-09-05 11:04:58 +02:00
Andras Bacsai
629316d68a chore: Update GitHub workflow to use jq container for version extraction 2024-09-05 10:49:00 +02:00
Andras Bacsai
05084cb69c chore: Update GitHub workflow to use jq container for version extraction 2024-09-05 10:45:46 +02:00
Andras Bacsai
401c410adb Merge pull request #3302 from mahansky/deployment-logs-improvements
deployment log improvements
2024-09-05 10:29:10 +02:00
Andras Bacsai
4888f4c405 refactor: upgrade process of Coolify 2024-09-05 10:15:22 +02:00
Andras Bacsai
b241f17eee Merge pull request #3312 from Vahor/pull-coolify-only-on-updates
fix: pull coolify image only when the app needs to be updated
2024-09-05 10:07:50 +02:00
Andras Bacsai
bc22ec63e6 chore: Update GitHub workflow to use versions.json instead of version.json 2024-09-05 10:03:26 +02:00
Andras Bacsai
458a461388 chore: Update GitHub workflow to use versions.json instead of version.json 2024-09-05 10:02:22 +02:00
Andras Bacsai
a725ff0a75 chore: Update GitHub workflow to use versions.json instead of version.json 2024-09-05 09:51:02 +02:00
Andras Bacsai
a8fd7db9a8 Update version.json to versions.json in GitHub workflow 2024-09-05 09:44:48 +02:00
Andras Bacsai
fbb7568786 chore: Cleanup stucked resources and scheduled backups 2024-09-05 09:41:29 +02:00
Andras Bacsai
fae175039a chore: Update version.json to versions.json in GitHub workflow 2024-09-05 09:30:36 +02:00
Andras Bacsai
9196571737 test versioned helper image 2024-09-05 09:29:18 +02:00
Vahor
0dad77af33 save versions.json during CheckForUpdatesJob 2024-09-04 21:25:45 +02:00
Nathan
f43298a610 Merge branch 'next' into pull-coolify-only-on-updates 2024-09-04 19:43:16 +02:00
Vahor
02f950edc7 fix: pull coolify image only when the app needs to be updated 2024-09-04 19:38:13 +02:00
Andras Bacsai
817a72e753 chore: Update sponsor links in README.md 2024-09-04 16:55:29 +02:00
Andras Bacsai
9c2f4ec04e Update version to 4.0.0-beta.330 2024-09-04 16:55:25 +02:00
Andras Bacsai
3f34df251e Merge pull request #3310 from coollabsio/next
v4.0.0-beta.329
2024-09-04 14:35:34 +02:00
Andras Bacsai
bfeaae9caa fix: env variable in value parsed 2024-09-04 14:33:16 +02:00
Andras Bacsai
ba90a52344 Update version to 4.0.0-beta.329 2024-09-04 14:10:19 +02:00
Andras Bacsai
a3a61dbe55 refactor: Update Docker Compose location handling in PublicGitRepository 2024-09-04 14:09:55 +02:00
Andras Bacsai
5799e6d8b0 fix: logical volumes could be overwritten with new path 2024-09-04 14:09:52 +02:00
mahansky
3b533c7d06 fix same commands different batch 2024-09-04 13:57:03 +02:00
Andras Bacsai
b2944f11db Merge pull request #3308 from coollabsio/next
v4.0.0-beta.328
2024-09-04 13:38:19 +02:00
Andras Bacsai
25e2b812cb fix: Convert environment variables to one format in shared.php 2024-09-04 13:37:15 +02:00
Andras Bacsai
59383d3678 Update README.md 2024-09-04 13:04:09 +02:00
Andras Bacsai
7b2d09f9d1 Update README.md 2024-09-04 12:44:22 +02:00
Andras Bacsai
d30faf7bc4 refactor: Update background color of sponsor section in README.md 2024-09-04 12:30:53 +02:00
Andras Bacsai
b9d3f9da62 chore: Update Coolify version to 4.0.0-beta.328 2024-09-04 12:30:02 +02:00
Andras Bacsai
86ee9c09ce feat: Add new logos for GlueOps, Ubicloud, Juxtdigital, Saasykit, and Massivegrid 2024-09-04 12:28:57 +02:00
Andras Bacsai
4f32b48d29 Merge pull request #3306 from coollabsio/next
v4.0.0-beta.327
2024-09-04 11:40:40 +02:00
Andras Bacsai
04ce622465 refactor: Update build_args property type in ApplicationDeploymentJob 2024-09-04 11:34:31 +02:00
Andras Bacsai
ed7817906a feat: Add new logos for GlueOps, Ubicloud, Juxtdigital, Saasykit, and Massivegrid 2024-09-04 11:06:30 +02:00
Andras Bacsai
e0748ee240 chore: Update Coolify version to 4.0.0-beta.327 2024-09-04 10:09:14 +02:00
Andras Bacsai
25480fe624 fix: openapi endpoint urls 2024-09-04 10:09:10 +02:00
mahansky
b0039885eb use computed property 2024-09-04 03:39:50 +02:00
Vahor
cadb12986c fix: wrong executions order 2024-09-03 21:10:44 +02:00
mahansky
63a07e7649 deployment log improvements 2024-09-03 20:09:42 +02:00
Andras Bacsai
37915234ad Merge pull request #3299 from coollabsio/next
chore: Add cd command to change directory before removing .env file
2024-09-03 17:28:05 +02:00
Andras Bacsai
eaabf94cd7 chore: Add cd command to change directory before removing .env file 2024-09-03 17:27:22 +02:00
Andras Bacsai
3badbafd89 Merge pull request #3298 from coollabsio/next
v4.0.0-beta.326
2024-09-03 17:13:26 +02:00
Andras Bacsai
7b041f3f22 refactor: Improve handling of COOLIFY_URL in shared.php 2024-09-03 17:13:13 +02:00
Andras Bacsai
8150b6fdaf fix: check if array is associative or not 2024-09-03 17:04:56 +02:00
Andras Bacsai
8d9a7f0b3c chore: Update Coolify version to 4.0.0-beta.326 2024-09-03 11:48:06 +02:00
Andras Bacsai
a7d67e44ca fix: copy large compose files through scp (not ssh) 2024-09-03 11:47:30 +02:00
Matt Stein
08a80876f9 Fix language in helper messages. 2024-09-02 19:43:16 -07:00
root
ae4c889fa2 Fix API documentation for project creation endpoint 2024-09-02 11:05:58 +02:00
Andras Bacsai
eb6add358a Merge pull request #3287 from coollabsio/next
v4.0.0-beta.325
2024-09-02 10:59:16 +02:00
Andras Bacsai
dfd5cc9cef fix: log drain only for Applications 2024-09-02 10:57:03 +02:00
Andras Bacsai
a2ab23529f chore: Update Coolify version to 4.0.0-beta.325 2024-09-02 10:56:48 +02:00
Andras Bacsai
62de2b88e6 Merge pull request #3286 from coollabsio/next
chore: Update Coolify version to 4.0.0-beta.324
2024-09-02 10:31:06 +02:00
Andras Bacsai
b67f363a1b chore: Update Coolify version to 4.0.0-beta.324 2024-09-02 10:30:24 +02:00
Andras Bacsai
12a3aa6356 Merge pull request #3285 from coollabsio/next
Fixing infrastructure files
2024-09-02 10:30:21 +02:00
Andras Bacsai
f8d6ce2730 Update memory limit to 128MB in horizon configuration 2024-09-02 10:22:10 +02:00
Andras Bacsai
4169d727fd fix: infra files 2024-09-02 09:53:09 +02:00
Tim Koch
f072823f00 fix: Deployment running for - without "ago" 2024-09-01 22:01:05 +02:00
Andras Bacsai
c6df243623 chore: Update Coolify version to 4.0.0-beta.324 and fix file paths in upgrade script 2024-08-31 00:01:34 +02:00
Andras Bacsai
59c95c483a Merge pull request #3265 from coollabsio/dependabot/npm_and_yarn/micromatch-4.0.8
chore(deps): bump micromatch from 4.0.5 to 4.0.8
2024-08-30 21:27:19 +02:00
Andras Bacsai
887f21acdd Merge branch 'next' into dependabot/npm_and_yarn/micromatch-4.0.8 2024-08-30 21:27:07 +02:00
Andras Bacsai
d2aeed9aff chore: Update axios npm dependency to version 1.7.5 2024-08-30 21:26:51 +02:00
dependabot[bot]
2fc4e98062 chore(deps): bump micromatch from 4.0.5 to 4.0.8
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.5 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-30 19:26:24 +00:00
Andras Bacsai
ad3ed10345 chore: Update php packages 2024-08-30 21:25:05 +02:00
Andras Bacsai
eebb99ca22 chore: Update memory limit to 64MB in horizon configuration 2024-08-30 21:24:09 +02:00
Vahor
bf475e538c don't check logDrain installation if it's not enabled 2024-08-30 17:29:25 +02:00
Andras Bacsai
90267a96c1 Merge pull request #3263 from coollabsio/next
revert infra things
2024-08-30 15:10:16 +02:00
Andras Bacsai
5f0a8bc4f2 revert infra things 2024-08-30 13:31:52 +02:00
Andras Bacsai
eee5539765 Merge pull request #3058 from coollabsio/next
v4.0.0-beta.324
2024-08-30 12:04:04 +02:00
Andras Bacsai
14fc067057 fix: let's wait for healthy container during installation and wait an extra 20 seconds (for migrations) 2024-08-30 11:56:34 +02:00
Vahor
fe477ba325 add server name in execute command container options 2024-08-29 22:46:00 +02:00
Andras Bacsai
278c8c6ec6 Merge pull request #3236 from pkellner/main
Update button label from "Developer view" to "Developer view (require…
2024-08-29 15:50:50 +02:00
Andras Bacsai
5e4eb7dead feat: add coolify build env variables to building phase 2024-08-29 15:49:22 +02:00
Andras Bacsai
301a3596e8 refactor: Update environment variable handling in StartClickhouse.php and ApplicationDeploymentJob.php 2024-08-29 15:11:54 +02:00
Andras Bacsai
0df1163718 Merge pull request #3237 from Vahor/env-vars
feat: new coolify env vars to containers and expose them to log drain
2024-08-29 14:37:10 +02:00
Andras Bacsai
e7b050a4da Merge branch 'next' into env-vars 2024-08-29 14:35:04 +02:00
Andras Bacsai
b64a126c89 Merge pull request #3244 from agorgl/patch-1
fix: setup script doesn't work on rhel based images with some curl variant already installed
2024-08-29 14:28:14 +02:00
Andras Bacsai
2e55b55e2c Merge pull request #3248 from nahuhh/settings
settings: typo
2024-08-29 14:26:36 +02:00
Andras Bacsai
8b5f4a597c chore: Update version to 1.3.4 in install.sh and 1.0.6 in upgrade.sh 2024-08-29 14:23:17 +02:00
Andras Bacsai
065e1b588b refactor: Remove unnecessary code for creating coolify network in upgrade.sh 2024-08-29 14:22:58 +02:00
Andras Bacsai
9cdff0393f refactor: Update SELF_HOSTED environment variable in docker-compose.prod.yml 2024-08-29 13:50:19 +02:00
Andras Bacsai
c588cef5be refactor: Update .env file path in install.sh script 2024-08-29 13:49:59 +02:00
Andras Bacsai
2d4385c273 Merge pull request #3015 from peaklabs-dev/fix-installation
Improvement: New CONTRIBUTING.md and some cleanup of the installation files
2024-08-29 13:35:05 +02:00
Andras Bacsai
020256b9b5 refactor: Remove commented out code for getIptables() in Dashboard.php 2024-08-29 13:28:02 +02:00
ayntk-ai
162cdf6f28 PR section 2024-08-29 13:12:34 +02:00
Andras Bacsai
d586aa0377 fix: service ui sync bug 2024-08-29 13:00:43 +02:00
Andras Bacsai
e0bac2499d fix: revert a few lines 2024-08-29 13:00:35 +02:00
Andras Bacsai
4a64374bb3 fix: preview fqdn generation 2024-08-29 12:50:04 +02:00
Andras Bacsai
cfc6518157 refactor: Update parse method in Advanced, All, ApplicationPreview, General, and ApplicationDeploymentJob classes 2024-08-29 12:39:37 +02:00
Andras Bacsai
b8a37d897e fix: Fix directory and file mount headings in file-storage.blade.php 2024-08-29 12:03:23 +02:00
Andras Bacsai
d27b1766e6 feat: Add Code Server environment variables to Service model 2024-08-29 10:44:16 +02:00
nahuhh
d25b6d6ea6 settings: typo 2024-08-28 22:44:23 +00:00
Andras Bacsai
5525c02c7f fix: delete preview deployments + cleanup stucked
fix: parser
2024-08-28 22:05:49 +02:00
Loukas Agorgianitis
39804a7b20 fix: setup script doesn't work on rhel based images with some curl variant already installed 2024-08-28 19:26:46 +03:00
Andras Bacsai
be8a8bf2ee fix: parser
feat: new coolify envs for fqdn and urls
2024-08-28 18:12:00 +02:00
Andras Bacsai
43f2f1ef2b fix: if compose file has more that 6 components, force stop
fix: parser
2024-08-28 15:45:11 +02:00
Vahor
f6d649307c test add_coolif_default_environment_variables 2024-08-28 13:30:59 +02:00
Vahor
b51065a003 add generate_fluentd_configuration() method in shared 2024-08-28 13:00:33 +02:00
Andras Bacsai
954d82207d MORE PARSERS 2024-08-27 21:48:25 +02:00
Vahor
0cf595e552 remove unused tag 2024-08-27 20:52:51 +02:00
Vahor
c87732b065 revert format 2024-08-27 20:47:17 +02:00
Vahor
2d9c583af3 add env vars on old compose parser 2024-08-27 19:36:22 +02:00
Vahor
7103dccc72 add env vars for compose base apps 2024-08-27 19:09:04 +02:00
Vahor
a245d16e05 add env vars for db services 😢 2024-08-27 18:57:02 +02:00
Vahor
eb22155dcc send new vars to logdrain 2024-08-27 18:41:33 +02:00
Vahor
49a53236b0 add env vars 2024-08-27 18:41:19 +02:00
pkellner
1a0a115fc1 Update button label from "Developer view" to "Developer view (required to set variables at build time).
Without this, there is no way for the browser user to know that these environmental variables ARE NOT available at build time. For newby-ish dev's that a subtle difference that is only manifested because of the way docker builds happen.
2024-08-27 09:23:04 -07:00
Andras Bacsai
d8d821e7a9 parser parser 2024-08-27 16:02:52 +02:00
ayntk-ai
8d9314347f updated WSL and windows links 2024-08-27 10:57:45 +02:00
ayntk-ai
ed2e5f59f9 added DB migration note to contributing file 2024-08-26 22:36:26 +02:00
ayntk-ai
d7c685af1f updated dev env 2024-08-26 22:31:19 +02:00
ayntk-ai
2398afc74f improve spin up more 2024-08-26 22:08:21 +02:00
ayntk-ai
b4e41a2a9e improve windows install 2024-08-26 21:59:58 +02:00
ayntk-ai
0425a47f69 fix discord chanel 2024-08-26 21:39:40 +02:00
ayntk-ai
c9663c4108 finalize and cleanup contributing.md 2024-08-26 21:38:20 +02:00
ayntk-ai
19881aa83a remove lines 2024-08-26 15:46:15 +02:00
ayntk-ai
3c413ff5c9 change heading levels 2024-08-26 15:44:30 +02:00
Andras Bacsai
a03dc8ea5e refactor: Remove unused PullCoolifyImageJob from schedule 2024-08-26 15:39:02 +02:00
Andras Bacsai
182ddeefcb refactor: Remove unused server timezone seeder and related code 2024-08-26 15:36:22 +02:00
Andras Bacsai
3ec8556c5f Merge pull request #3227 from coollabsio/set-server-timzone-setting
Set server timzone setting
2024-08-26 15:28:00 +02:00
Andras Bacsai
5bfddfbb95 Merge pull request #3063 from peaklabs-dev/set-server-timzone-setting
Feat: Add server timezone dropdown
2024-08-26 15:27:20 +02:00
Andras Bacsai
68169f75d1 refactor: Remove unused server timezone seeder and related code 2024-08-26 15:26:08 +02:00
ayntk-ai
8d24e93a16 remove duplicated lines 2024-08-26 15:10:10 +02:00
ayntk-ai
cd73a9a94e add lines to make it more redeable 2024-08-26 15:07:17 +02:00
ayntk-ai
cda66dadef line 2024-08-26 15:02:41 +02:00
ayntk-ai
ca3268ce56 add separators 2024-08-26 14:57:28 +02:00
ayntk-ai
9776e14e93 add telescope 2024-08-26 14:55:03 +02:00
ayntk-ai
73e14e37ac new Contributing guide 2024-08-26 14:35:51 +02:00
Andras Bacsai
b8ff0540e2 Merge branch 'next' into set-server-timzone-setting 2024-08-26 13:21:21 +02:00
Andras Bacsai
3d73c98779 fix: docker cleanup job 2024-08-26 12:23:03 +02:00
Andras Bacsai
4d7877ce1d refactor: Update Docker Compose parsing function to convert service variables to key-value pairs 2024-08-26 12:21:40 +02:00
Andras Bacsai
36b434efb2 Merge pull request #2989 from tiagomiguel29/set-default-message-queue-type-twenty
fix: Added default message queue type to twenty template
2024-08-26 12:21:28 +02:00
Andras Bacsai
e52f762cf9 Merge pull request #3042 from peaklabs-dev/auto-cleanup-improvements
Feat: Cron input for docker cleanup job and docker cleanup improvements
2024-08-26 11:17:33 +02:00
Andras Bacsai
d748d8b7c6 Merge branch 'next' into auto-cleanup-improvements 2024-08-26 11:13:40 +02:00
Andras Bacsai
1a9e1bcc88 Merge pull request #3092 from mj-dcb/patch-1
feat: add a helper to livewire.settings to clarify the HTTPS feature
2024-08-26 10:56:47 +02:00
Andras Bacsai
040115d6b1 Merge pull request #3113 from djsisson/preview-build-env-var
fix bug in preview build env vars
2024-08-26 10:55:36 +02:00
Andras Bacsai
7fd06a49db refactor: Update Docker Compose parsing function to convert service variables to key-value pairs 2024-08-26 10:51:01 +02:00
Andras Bacsai
bfc538b6ed Merge pull request #3118 from peaklabs-dev/fix-project-selection
Fix: Preselect environment when coming form the project screen
2024-08-26 10:46:05 +02:00
Andras Bacsai
cb39544808 refactor: Remove unnecessary code in DatabaseBackupJob and BackupExecutions 2024-08-26 10:32:05 +02:00
Andras Bacsai
1a232b9b10 Merge pull request #3186 from valentinschabschneider/main
feat: order scheduled task executions
2024-08-26 10:30:44 +02:00
Andras Bacsai
e9720dc5e0 refactor: Update database service name from mariadb to mysql 2024-08-26 10:26:54 +02:00
Andras Bacsai
b1317a0bf6 Merge pull request #3190 from peaklabs-dev/fix-mysql-version
Fix: WordPress and ClassicPress with MySQL have no ARM images
2024-08-26 10:18:34 +02:00
Andras Bacsai
d0ce31c9e0 Merge pull request #3215 from bohdan-shulha/patch-1
Avoid crash if the team is not set
2024-08-26 09:46:28 +02:00
Bohdan Shulha
f98805c68b Avoid crash if the team is not set 2024-08-24 13:04:33 +02:00
Andras Bacsai
7d78e0171d refactor: Convert service variables to key-value pairs in parseDockerComposeFile function 2024-08-24 11:00:27 +02:00
Andras Bacsai
fe89269b4b rename parser functions 2024-08-23 20:57:22 +02:00
Andras Bacsai
2a9a2dd7c4 fix 2024-08-23 20:55:32 +02:00
Andras Bacsai
eece96e717 revert parser to the default for now 2024-08-23 20:54:38 +02:00
Andras Bacsai
b12f768c56 fix: numberoflines should be number 2024-08-23 20:42:58 +02:00
Andras Bacsai
dfa30bbb7f more tests 2024-08-23 17:37:15 +02:00
Andras Bacsai
9d5556aea2 test: more tests 2024-08-23 17:33:06 +02:00
Andras Bacsai
ba4315fabb turn telescope off by defautl 2024-08-23 17:33:00 +02:00
Andras Bacsai
355352417e add telescope for debugging 2024-08-23 16:53:13 +02:00
Andras Bacsai
6fbdfee3e7 refactor: Update dockerComposeParser to use YAML data from $yaml instead of $compose 2024-08-23 14:31:16 +02:00
Andras Bacsai
af1b479d73 fix: parser
ui: storage layout changed
2024-08-23 14:21:12 +02:00
Andras Bacsai
0f9076562f fix: parser parser 2024-08-23 11:32:58 +02:00
Franck Kerbiriou
a26bc65137 Add Plunk template 2024-08-22 22:42:56 +02:00
Andrin
79a120cd85 Update CONTRIBUTION.md 2024-08-22 17:25:13 +02:00
Andras Bacsai
5394223f6b fix:new parser only in dev 2024-08-22 16:50:29 +02:00
Andras Bacsai
1e24ab9146 fix: parser parser parser 2024-08-22 15:05:04 +02:00
ayntk-ai
0243ddd52b fix classicpress 2024-08-22 12:09:12 +02:00
ayntk-ai
d2eb7046e8 fix mysql version 2024-08-22 12:05:42 +02:00
Andras Bacsai
cf505fa500 Add new logo for Breakcold 2024-08-22 11:49:41 +02:00
Andras Bacsai
62d63037e2 refactor: Add null check for docker_compose_raw in parseCompose() 2024-08-22 11:46:11 +02:00
Andras Bacsai
df03b950eb feat: Add new logos for jobscollider and hostinger 2024-08-22 09:53:56 +02:00
Andras Bacsai
ecb2c3b7b8 chore: new compose parser with tests 2024-08-21 20:32:02 +02:00
Valentin Schabschneider
9462915c83 feat: order scheduled task executions 2024-08-21 14:53:53 +00:00
Andras Bacsai
578db6cc9c refactor: Remove unnecessary environment variable checks in parseDockerComposeFile() 2024-08-21 16:23:45 +02:00
Andras Bacsai
7d7cdf41f7 fix: storages with preserved git repository 2024-08-21 14:31:17 +02:00
Andras Bacsai
3f9f197282 fix: docker cleanup job 2024-08-21 10:50:05 +02:00
Eric Dahl
b73db2d725 Update browserless.yaml 2024-08-20 19:17:00 -04:00
Eric Dahl
8168b564ea adding browserless service 2024-08-20 19:09:05 -04:00
Andras Bacsai
8dc26a18d8 refactor: Remove unnecessary network cleanup in Init.php 2024-08-19 10:41:48 +02:00
ayntk-ai
7d4261b71a new design for execution log 2024-08-19 00:14:09 +02:00
ayntk-ai
0337c4e79d Fix submit method naming 2024-08-18 23:27:24 +02:00
ayntk-ai
012c23586d rename to docker cleanup and and feedback implementation 2024-08-18 23:16:59 +02:00
ayntk-ai
5d32bd250b Fix cleanup Docker according to feedback 2024-08-18 22:41:06 +02:00
ayntk-ai
4ab13ecf00 revert wrong branch :) 2024-08-18 22:08:37 +02:00
ayntk-ai
c813373d21 fix validation if null, empty or undefined 2024-08-18 21:00:30 +02:00
ayntk-ai
abd2aefd6c remove duplicated validation 2024-08-18 20:55:54 +02:00
ayntk-ai
ef40b79a5f fix project selection 2024-08-18 20:44:15 +02:00
Darren Sisson
f3df26ea9a fix bug in preview build env vars 2024-08-17 22:05:10 +01:00
ayntk-ai
bf6404ab24 remove 3 lines, as this is not needed anymore 2024-08-16 23:03:23 +02:00
ayntk-ai
a0689ca5fc fix cron issues for UI and applications 2024-08-16 22:05:38 +02:00
ayntk-ai
9ab03e52a3 remove ray 2024-08-16 22:03:43 +02:00
ayntk-ai
48734e53d0 formatting 2024-08-16 21:22:06 +02:00
ayntk-ai
80b90b3a2c fix UI of cron jobs 2024-08-16 21:21:37 +02:00
ayntk-ai
7a001cea3b formatting 2024-08-16 21:07:10 +02:00
ayntk-ai
62ecc45f21 Feat: recent backups UI 2024-08-16 21:06:36 +02:00
ayntk-ai
789adc77fd fix DB server 2024-08-16 19:29:44 +02:00
ayntk-ai
4af7b8f451 made function private again and remove unused code 2024-08-16 18:02:14 +02:00
ayntk-ai
165275cb68 formatting 2024-08-16 18:01:55 +02:00
ayntk-ai
f366854671 formatting 2024-08-16 17:53:45 +02:00
ayntk-ai
a981b49502 fixed database seeder, remove dependency on form.php 2024-08-16 17:43:14 +02:00
ayntk-ai
74bf4629d6 added helpers to the timezone switcher 2024-08-16 17:42:26 +02:00
ayntk-ai
3e3b92638b Add: server timezone seeder 2024-08-16 17:09:53 +02:00
ayntk-ai
00f20c708f remove mount default timezone 2024-08-16 17:09:30 +02:00
ayntk-ai
6242243ced get timezone and server correctly for UI 2024-08-16 16:18:57 +02:00
ayntk-ai
fda6c03505 get server correctly for scheduled tasks 2024-08-16 16:18:33 +02:00
ayntk-ai
7b4182352d UI executions with TZ 2024-08-16 16:02:25 +02:00
ayntk-ai
4a476586df remove old DB migration 2024-08-16 16:02:07 +02:00
ayntk-ai
883a52afe9 show cron execution with timezone 2024-08-16 16:01:57 +02:00
ayntk-ai
dab5f0fe09 add logic 2024-08-16 16:01:41 +02:00
ayntk-ai
d906bb2381 new DB migration for instance timezone 2024-08-16 16:00:30 +02:00
ayntk-ai
1e711de52a UI for Instance timezone 2024-08-16 15:58:33 +02:00
Andras Bacsai
d2eaf4f2e3 feat: Able to select different postgres database 2024-08-16 15:33:55 +02:00
ayntk-ai
e3b9884247 UI fix 2024-08-16 14:45:40 +02:00
Andras Bacsai
f106e6e37b feat: add custom docker container options to all databases 2024-08-16 13:56:47 +02:00
ayntk-ai
ea4b085dbe add server timezone to every schedule 2024-08-16 13:04:44 +02:00
ayntk-ai
1892ce4e12 Feat: cron jobs are executed based on the server timezone 2024-08-16 12:58:19 +02:00
Andras Bacsai
c15740aa57 feat: add shm-size for custom docker commands 2024-08-16 12:24:42 +02:00
Andras Bacsai
2227858f58 refactor: Load environment variables based on resource type in sortEnvironmentVariables() 2024-08-16 12:23:31 +02:00
Andras Bacsai
eaefb3a6fb fix: backup of password protected postgresql database 2024-08-16 11:53:27 +02:00
Andras Bacsai
0c98958f72 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-08-16 11:36:23 +02:00
Andras Bacsai
9ec7d748df refactor: Improve storage mount forms in add.blade.php 2024-08-16 11:36:21 +02:00
Andras Bacsai
0139c4e404 Merge pull request #3100 from LEstradioto/fix-unique-constraint-error-on-dev-env
fix unique constraint error on dev env
2024-08-16 10:44:14 +02:00
Luan Estradioto
ac468f616b fix unique constraint error on dev env 2024-08-15 21:05:00 -03:00
Jay
0e844533de Update index.blade.php
This PR adds a helper text to the instance domain name to clarify the use of enabling it
2024-08-15 17:09:22 +02:00
Andras Bacsai
fcfbba4dc6 fix: canceling deployment on build server 2024-08-15 14:05:17 +02:00
ayntk-ai
a478ebef2e remove result var 2024-08-15 13:37:52 +02:00
ayntk-ai
f281e92954 remove ray 2024-08-15 13:36:17 +02:00
Andras Bacsai
1069e33601 refactor: Add conditional check for volumes in generate_compose_file() 2024-08-15 13:32:44 +02:00
ayntk-ai
39b132f7e9 verification compares to destination timezone 2024-08-15 13:30:08 +02:00
ayntk-ai
a1915e40f7 new timezone validation and conversion to check 2024-08-15 13:25:30 +02:00
ayntk-ai
a51b306c08 support all coolify supported os and improve symbolic link creation 2024-08-15 13:13:52 +02:00
Andras Bacsai
29192a79d0 fix: application patch request instant_deploy 2024-08-15 12:49:50 +02:00
Andras Bacsai
c7a79514cc refactor: Improve saving of custom internal name in Advanced.php 2024-08-15 12:13:39 +02:00
Andras Bacsai
4b744bc88a fix: pr build names in case custom name is used 2024-08-15 12:13:29 +02:00
ayntk-ai
1376846077 fix: timezone not updated when systemd is missing 2024-08-15 12:04:06 +02:00
Andras Bacsai
9864d380a3 fix: sync fqdn change on the UI 2024-08-15 11:23:44 +02:00
ayntk-ai
ef6cfd47c3 add check if timezone was actually changed 2024-08-15 00:51:45 +02:00
ayntk-ai
f0b9bd2cf2 set default time zone and remove success message 2024-08-15 00:31:23 +02:00
ayntk-ai
44f319460f remove unnecessary validation and fix safe to DB 2024-08-14 23:29:33 +02:00
ayntk-ai
99f2d4d711 Feat: actually update timezone on the server 2024-08-14 23:18:55 +02:00
ayntk-ai
777913923f fix faulty DB migration and remove default, server is the default 2024-08-14 23:00:39 +02:00
ayntk-ai
dab0cc8cbd fix form input 2024-08-14 23:00:13 +02:00
ayntk-ai
f1f6dea04f updated cron validation for the case of null, return false 2024-08-14 21:54:46 +02:00
ayntk-ai
f93fe75de9 new fields in server setttings 2024-08-14 21:54:28 +02:00
ayntk-ai
a4f80fd260 required server settings and make sure cron is a string 2024-08-14 21:54:01 +02:00
ayntk-ai
8aa161d530 remove unnecessary cron 2024-08-14 21:53:03 +02:00
ayntk-ai
53bcf81af5 fix get corn job correctly form server settings 2024-08-14 21:52:12 +02:00
Andras Bacsai
a5f526a6c8 refactor: Remove unnecessary admin user email and password in budibase.yaml 2024-08-14 21:14:41 +02:00
Andras Bacsai
f90316b050 Merge pull request #3062 from peaklabs-dev/fix-#3022
Fix: Environment variables are not saving and sorting is not working properly in some cases
2024-08-14 21:13:23 +02:00
Andras Bacsai
9e380ac942 Merge pull request #3069 from jonathan-reisdorf/main
fix: server status when there are multiple servers
2024-08-14 21:08:07 +02:00
Andras Bacsai
dcb9bec3c2 refactor: Remove unnecessary server status check in destination view 2024-08-14 21:07:24 +02:00
Andras Bacsai
0a02317248 Merge branch 'next' into main 2024-08-14 21:00:56 +02:00
Andras Bacsai
8867ecbaee update service-template 2024-08-14 20:55:49 +02:00
Andras Bacsai
7adb38e64e fixes 2024-08-14 20:55:33 +02:00
Andras Bacsai
dea5e5f6e2 Merge pull request #3068 from LEstradioto/fix-docker-empty-compose-network
fix: docker compose destination network
2024-08-14 20:52:59 +02:00
Andras Bacsai
7059b94051 Merge pull request #3082 from OhThatMatt/budibase-template
feat: Added Budibase template
2024-08-14 20:48:00 +02:00
Andras Bacsai
e70c2431ab Merge pull request #3080 from OhThatMatt/windmill-template
feat: Added Windmill template
2024-08-14 20:46:54 +02:00
Andras Bacsai
f01f09a79d Merge pull request #3077 from busybox11/next
scripts/install: Use apt-get instead of apt
2024-08-14 20:45:51 +02:00
ayntk-ai
4d12447715 order column added to track order of env in the UI 2024-08-14 20:35:08 +02:00
Matt
4a89d61a59 Improve healthcheck 2024-08-14 19:33:33 +04:00
Matt
12c9691bb4 feat: Added Budibase template 2024-08-14 17:44:11 +04:00
ayntk-ai
1b6c0aef93 formatting 2024-08-14 14:20:53 +02:00
ayntk-ai
c9fc8fa687 added code blocks around domains 2024-08-14 14:20:18 +02:00
ayntk-ai
adf7a4422a added another clarification for mac users 2024-08-14 14:18:50 +02:00
ayntk-ai
0286d639fb set custom ray port 2024-08-14 14:11:06 +02:00
Matt
460b992994 feat: Added Windmill template 2024-08-14 15:00:22 +04:00
Andras Bacsai
0acc8b1414 Merge pull request #3059 from djsisson/patch-1
Update Supabase Compose to Newest Images
2024-08-14 11:12:08 +02:00
Andras Bacsai
529dc0f7b0 revert the last commit lol 2024-08-14 10:47:06 +02:00
Andras Bacsai
14937970e2 fix: connect compose apps to the right predefined network 2024-08-14 10:45:44 +02:00
busybox
14db362d63 scripts/install: Use apt-get instead of apt
Fixes "WARNING: apt does not have a stable CLI interface. Use with caution in scripts."
2024-08-14 02:14:16 +02:00
Andras Bacsai
ea3e4f3188 fix: database custom environment variables 2024-08-13 14:25:24 +02:00
Andras Bacsai
094499e1a3 refactor: Update OpenApi command to generate documentation 2024-08-13 13:27:50 +02:00
Andras Bacsai
de34150451 fix: all mongo v4 backups should use the different backup command 2024-08-13 13:08:22 +02:00
Andras Bacsai
992d8b780c refactor: parseServiceVolumes 2024-08-13 12:43:17 +02:00
Andras Bacsai
06013e77e4 fix: if volumes + file mounts are defined, should merge them together in the compose file 2024-08-13 12:32:39 +02:00
Andras Bacsai
da6dea7f13 refactor: Remove debug statement in parseDockerComposeFile function 2024-08-13 11:15:32 +02:00
Jonathan Reisdorf
096e366547 fix: server status when there are multiple servers 2024-08-13 10:57:59 +02:00
Luan Estradioto
80aeb096c9 fix: docker compose destination network 2024-08-12 23:44:25 -03:00
ayntk-ai
77044d51c7 added missing heading and UI fix 2024-08-12 23:12:54 +02:00
ayntk-ai
fbde257166 fix disable/enable environment variabel sorting 2024-08-12 23:00:08 +02:00
ayntk-ai
a15f4d86de added timezone update logic 2024-08-12 18:40:32 +02:00
ayntk-ai
228b885946 UI timezone settings with search 2024-08-12 18:14:15 +02:00
ayntk-ai
ba136d43fa DB migration 2024-08-12 18:13:47 +02:00
ayntk-ai
555dc1a9b5 add dropdown without content 2024-08-12 17:36:46 +02:00
Andras Bacsai
0e54ed1343 feat: preserve git repository with advanced file storages 2024-08-12 16:06:24 +02:00
ayntk-ai
e28289ce1e cleanup all.php 2024-08-12 14:46:30 +02:00
ayntk-ai
122491808c fix env deletion and sorting of locked envs 2024-08-12 14:44:18 +02:00
ayntk-ai
1d7c833b7c fix sort alphabetically 2024-08-12 14:13:03 +02:00
ayntk-ai
93444ea872 fix manual safe button and few simplifications 2024-08-12 14:06:00 +02:00
ayntk-ai
c5aba34a6f new submit logic 2024-08-12 13:23:36 +02:00
ayntk-ai
d13c321c3d new submit metode 2024-08-12 13:23:09 +02:00
ayntk-ai
f6cb39732a merge env save button 2024-08-12 13:14:38 +02:00
ayntk-ai
365f957b8a remove duplicated sentinel pull job 2024-08-12 12:43:06 +02:00
ayntk-ai
b85b5e67bb UI form update 2024-08-12 12:42:38 +02:00
ayntk-ai
4eaee6f474 new DB migration 2024-08-12 12:42:29 +02:00
ayntk-ai
a5db3b85fa cron logic 2024-08-12 12:42:15 +02:00
Andras Bacsai
f87e6bcfc6 refactor: Update RabbitMQ configuration to use environment variable for port 2024-08-12 12:37:39 +02:00
Darren Sisson
991c215a10 Update supabase.yaml
Update Supabase Compose to current image versions
2024-08-12 10:48:59 +01:00
Andras Bacsai
e068581862 refactor: Refresh application to get latest database changes 2024-08-12 11:35:30 +02:00
Andras Bacsai
4904b33a0f refactor: Update event listeners in Show components 2024-08-12 11:35:26 +02:00
Andras Bacsai
0d994aa2c3 Merge pull request #2939 from Kaotic/next
Templates: chaskiq, rabbitmq
2024-08-12 11:18:55 +02:00
Andras Bacsai
0e5cd3de9b chore: Update version to 4.0.0-beta.324 2024-08-12 10:43:47 +02:00
ayntk-ai
b738e5c000 add DB migration 2024-08-10 00:13:17 +02:00
ayntk-ai
27a15138b7 Feat UI form 2024-08-10 00:12:53 +02:00
ayntk-ai
adc3346f7b cleanup docker improvements 2024-08-09 23:27:39 +02:00
ayntk-ai
4e0e064725 Merge branch 'coollabsio:main' into fix-installation 2024-08-08 15:40:50 +02:00
Andras Bacsai
69fc4c7f52 Merge pull request #3031 from coollabsio/next
v4.0.0-beta.323
2024-08-08 14:37:40 +02:00
Andras Bacsai
2e06acf653 servercheckjob should not overlap 2024-08-08 14:02:21 +02:00
Andras Bacsai
d635799b80 chore: Update version to 4.0.0-beta.323 2024-08-08 14:02:07 +02:00
Andras Bacsai
0590456b62 Merge pull request #3029 from coollabsio/next
v4.0.0-beta.322
2024-08-08 13:34:18 +02:00
Andras Bacsai
e2726d9dfb fix: manual update process 2024-08-08 13:32:15 +02:00
Andras Bacsai
2be92a1d29 chore: Update version to 4.0.0-beta.322 2024-08-08 13:20:38 +02:00
Andras Bacsai
d75ed0b208 refactor: Import ProxyTypes enum and use TRAEFIK instead of TRAEFIK_V2 2024-08-08 13:20:24 +02:00
Andras Bacsai
8fa1fcf96e refactor: Update Server model getContainers method to use collect() for containers and containerReplicates 2024-08-08 13:20:10 +02:00
Andras Bacsai
f089185c39 Merge pull request #3027 from coollabsio/next
v4.0.0-beta.321
2024-08-08 12:52:33 +02:00
Andras Bacsai
fa28e952de refactor: Update cron expressions and add helper text for scheduled tasks 2024-08-08 12:50:49 +02:00
Andras Bacsai
c2e431d631 refactor: Update StandalonePostgresql database initialization and backup handling 2024-08-08 12:44:47 +02:00
Andras Bacsai
6fb88ed479 fix: scheduledbackup not found 2024-08-08 12:19:27 +02:00
Andras Bacsai
58c6d066f2 chore: Update version to 4.0.0-beta.321 2024-08-08 12:19:14 +02:00
ayntk-ai
1280d1721f Merge branch 'coollabsio:main' into fix-installation 2024-08-08 11:51:48 +02:00
Andras Bacsai
671b22e964 Merge pull request #2941 from coollabsio/next
v4.0.0-beta.320
2024-08-08 11:27:29 +02:00
Andras Bacsai
777bff6553 refactor: Update Traefik labels on init and cleanup unnecessary dynamic proxy configuration 2024-08-08 11:15:33 +02:00
Andras Bacsai
d3b3c2f7fd fix: Add missing middleware for server check job 2024-08-08 10:28:34 +02:00
ayntk-ai
6ca49eb1ac fix database name to coolify instead of coolify-db 2024-08-07 21:23:07 +02:00
ayntk-ai
bfd79c5270 updated contributing docs 2024-08-07 21:11:23 +02:00
ayntk-ai
bacd2531b5 Final fix to make DB Migrations work 2024-08-07 21:02:53 +02:00
Andras Bacsai
0b000919cf feat: able to generate only the required labels for resources 2024-08-07 18:27:50 +02:00
Andras Bacsai
92f90d4e52 Merge pull request #2863 from lorenzomigliorero/feat/labels-by-proxy-type
Generate labels by proxy type
2024-08-07 18:06:51 +02:00
Andras Bacsai
59702c6dbc refactor: Update ProxyTypes enum values to use TRAEFIK instead of TRAEFIK_V2 2024-08-07 17:52:51 +02:00
Andras Bacsai
13e8d3c17c fix: update Traefik labels on init 2024-08-07 17:52:43 +02:00
Andras Bacsai
5d384b1149 feat: Support map fields in Directus 2024-08-07 17:43:41 +02:00
Andras Bacsai
7b31955409 Merge pull request #2906 from Loque-/Loque--patch-1
Support map fields in Directus
2024-08-07 17:43:03 +02:00
ayntk-ai
cf09290b51 fix db host 2024-08-07 15:42:53 +02:00
ayntk-ai
78998110d7 coolify-db and remove some env 2024-08-07 15:17:54 +02:00
ayntk-ai
1564e3c371 formating 2024-08-07 15:06:24 +02:00
ayntk-ai
ddf0ff8f25 cleanup instalation 2024-08-07 14:59:42 +02:00
ayntk-ai
4336acc16e fix database migration bug in dev env 2024-08-07 14:59:29 +02:00
Andras Bacsai
efb4049966 feat: Improve homepage service template 2024-08-07 12:58:36 +02:00
Andras Bacsai
6da359bc60 fix: empty string content should be saved as a file 2024-08-07 12:58:32 +02:00
Andras Bacsai
f5f3c77d9e Merge pull request #3010 from Telokis/improvate-homepage-template
feat: Improve homepage service template
2024-08-07 12:17:46 +02:00
Andras Bacsai
dc5c324f9c feat: Update Upgrade component to check for latest version of Coolify 2024-08-07 12:16:06 +02:00
Andras Bacsai
d283be4917 disable php code styling for now 2024-08-07 12:12:09 +02:00
Andras Bacsai
f0278bc33d fix: show latest version on manual update view 2024-08-07 12:10:31 +02:00
Andras Bacsai
052565f4e8 Merge pull request #3011 from stooit/feat/enhance-services-api
Return applications & databases in service API.
2024-08-07 12:02:18 +02:00
Andras Bacsai
64146a46fc chore: Update UpdateCoolifyJob to dispatch CheckForUpdatesJob synchronously 2024-08-07 11:58:53 +02:00
Andras Bacsai
5a82395bb7 feat: Update auto update and update check frequencies in settings 2024-08-07 11:55:16 +02:00
Andras Bacsai
d3085e1ade feat: Add manual update check functionality to settings page 2024-08-07 11:42:55 +02:00
Andras Bacsai
af41ed26ba chore: Update UpdateCoolifyJob timeout to 10 minutes 2024-08-07 11:10:02 +02:00
Andras Bacsai
961ba49d89 fix: Handle null and empty disk usage in DockerCleanupJob 2024-08-07 10:54:22 +02:00
Andras Bacsai
a2150f2f7d refactor: Remove unused code and optimize CheckForUpdatesJob 2024-08-07 10:50:12 +02:00
Andras Bacsai
46b549ab8d chore: Update workflows to include PR build and merge manifest steps 2024-08-07 10:02:01 +02:00
Andras Bacsai
e4c3d61b76 fixes 2024-08-07 09:50:29 +02:00
Andras Bacsai
869f0878c2 fix (cloud): cloud instance should get latest servics on update (all servers) 2024-08-07 09:50:12 +02:00
Stuart Rowlands
dfb6d4da3d Return applications & databases in service API. 2024-08-07 17:20:55 +10:00
Telokis
5d4a379e8d Improve homepage service template 2024-08-07 01:06:54 +02:00
Andras Bacsai
73a265107a Merge branch 'next' of github.com:coollabsio/coolify into next 2024-08-06 14:38:41 +02:00
Andras Bacsai
b77171d2f2 fix: settings view
feat: add separate views for settings
2024-08-06 14:36:56 +02:00
andrasbacsai
8b817dad87 Fix styling 2024-08-06 12:04:23 +00:00
Andras Bacsai
c4436aadfa Merge pull request #3000 from ayntk-ai/update-settings-improvements
Feat: Updated Check Frequency and Auto Update Frequency settings
2024-08-06 14:03:41 +02:00
Andras Bacsai
c9a7af0ffa chore: Update navbar and configuration to improve service status check functionality 2024-08-06 14:02:24 +02:00
Andras Bacsai
c648e0dff9 chore: Update navbar to include service status check 2024-08-06 13:50:32 +02:00
Andras Bacsai
e897eb2999 fix: Stop resources gracefully 2024-08-06 13:27:06 +02:00
Andras Bacsai
35e62a3003 chore: Update server form to use password input for IP Address/Domain field 2024-08-06 13:18:57 +02:00
Andras Bacsai
b66c511160 refactor: Update timeout for graceful_shutdown_container in ApplicationDeploymentJob 2024-08-06 13:07:32 +02:00
Andras Bacsai
a866bf437d Merge branch 'next' of github.com:coollabsio/coolify into next 2024-08-06 13:07:03 +02:00
Andras Bacsai
a4f107e191 fix: graceful shutdown 2024-08-06 13:05:34 +02:00
andrasbacsai
f22d7741a3 Fix styling 2024-08-06 10:13:34 +00:00
Andras Bacsai
f4d64e121c Merge pull request #2969 from alexzvn/feat/graceful-shutdown
feat: add graceful shutdown
2024-08-06 12:13:00 +02:00
Andras Bacsai
818d5e1159 fix: minecraft server template fixed 2024-08-06 12:10:29 +02:00
ayntk-ai
7eacdf23f9 fix database migration 2024-08-06 12:00:34 +02:00
ayntk-ai
0459baa55e Update Kernel.php 2024-08-06 11:48:43 +02:00
ayntk-ai
a426c00a03 should work :) 2024-08-06 11:47:48 +02:00
ayntk-ai
fd36e143e0 final conflict hopfully :) 2024-08-06 11:46:26 +02:00
ayntk-ai
2243a3304b remove duplicates 2024-08-06 11:43:55 +02:00
ayntk-ai
bb23141138 add backup line twice 2024-08-06 11:42:01 +02:00
ayntk-ai
5f1e1c0ac4 fix another conflict 2024-08-06 11:41:24 +02:00
Andras Bacsai
ef8be5f133 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-08-06 11:40:16 +02:00
Andras Bacsai
f205c0ab9e Merge pull request #2981 from kunumigab/main
Added minecraft-server (java) as template
2024-08-06 11:40:30 +02:00
ayntk-ai
c4cf116e6e more fixes 2024-08-06 11:38:30 +02:00
ayntk-ai
f7b1aaca92 fix fix 2024-08-06 11:35:22 +02:00
Andras Bacsai
0ce41d2c1c chore: Update registration view to display a notice for first user that it will be an admin 2024-08-06 11:34:51 +02:00
ayntk-ai
d9edb1c72f fix 2024-08-06 11:32:37 +02:00
ayntk-ai
93322dc3cf updated helper text 2024-08-06 11:29:02 +02:00
Andras Bacsai
22f04e4708 refactor: Remove unnecessary debug statement in ApplicationDeploymentJob 2024-08-06 11:27:10 +02:00
ayntk-ai
d9a079c289 fix conflict in kernel.php 2024-08-06 11:25:57 +02:00
Andras Bacsai
f4690bf15a Merge pull request #2958 from filiabel/formbricks-template-update
chore: update Formbricks template with additional env variables
2024-08-06 11:25:46 +02:00
Andras Bacsai
a81faa68b8 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-08-06 11:16:55 +02:00
Andras Bacsai
4b388b463d Merge pull request #2960 from J-o-n-a-t-h-a-n-M-u-e-l-l-e-r/fix-plausible-totp-key
Fixes Plausible TOTP key by changing it from BASE64 to REALBASE64_32
2024-08-06 11:16:58 +02:00
Andras Bacsai
3c98b558f6 fix: do not use port exposes on docker compose buildpacks 2024-08-06 11:16:49 +02:00
Andras Bacsai
e3c7c615c6 refactor: Cleanup unnecessary dynamic proxy configuration in Init command 2024-08-06 10:53:13 +02:00
Andras Bacsai
74e8a4a703 refactor: Simplify log drain installation and stop log drain if necessary 2024-08-06 10:52:47 +02:00
Andras Bacsai
c5de1a25c3 refactor: Remove unnecessary debug statement in ServerCheckJob 2024-08-06 09:45:48 +02:00
ayntk-ai
d4cb7e25dc renamed database migration file 2024-08-05 21:04:47 +02:00
ayntk-ai
50ede5cab9 remove comments and remove duplicated scheduling 2024-08-05 20:57:27 +02:00
ayntk-ai
b64d4881cb made helper more clear 2024-08-05 20:33:20 +02:00
ayntk-ai
4dfec6771c added defaults, remove duplicated cron validation 2024-08-05 20:31:06 +02:00
Andras Bacsai
92ebc3f0c6 refactor 2024-08-05 20:08:37 +02:00
Andras Bacsai
3e0821e471 refactor 2024-08-05 20:07:08 +02:00
ayntk-ai
38976dac12 fixes and check for valid cron expressions 2024-08-05 20:05:38 +02:00
Andras Bacsai
ea5101c814 fix: file storages (dir/file mount) handled properly 2024-08-05 20:00:57 +02:00
Andras Bacsai
8133a8b770 fix: dir mounts should have proper dirs 2024-08-05 18:38:13 +02:00
Andras Bacsai
3269ca3eb8 chore: Add comment explaining the purpose of disconnecting the network in cleanup_unused_network_from_coolify_proxy() 2024-08-05 18:27:54 +02:00
Andras Bacsai
012d660886 fix: remove network if it is only connected to coolify proxy itself 2024-08-05 18:16:29 +02:00
Andras Bacsai
ddb4b4d215 refactor: Simplify log drain installation in ServerCheckJob 2024-08-05 16:45:30 +02:00
Andras Bacsai
2725a93bfd fix: only run logdrain if necessary 2024-08-05 16:44:50 +02:00
ayntk-ai
27e82f0bde implement logic, jobs and add DB migrate 2024-08-05 16:31:41 +02:00
Andras Bacsai
5755965b4f chore: add pull_request image builds to GH actions 2024-08-05 16:09:49 +02:00
Andras Bacsai
e4b92bb660 feat: new server checking job
feat: show if the server  has problems on ui
2024-08-05 15:48:15 +02:00
Andras Bacsai
bc48b42ff1 refactor: Remove unused code for checking server status in Heading.php 2024-08-05 15:02:33 +02:00
Andras Bacsai
94b2d67a6e refactor: Update livewire polling interval in heading.blade.php 2024-08-05 15:02:23 +02:00
ayntk-ai
7d6a895449 Updated Configuration Settings 2024-08-05 14:44:20 +02:00
Andras Bacsai
39e3ea9f07 fix: async remote command 2024-08-05 13:51:34 +02:00
Andras Bacsai
465b254813 fix: if usagebefore cannot be determined, cleanup docker with force 2024-08-05 13:45:53 +02:00
Andras Bacsai
e2bc3f4841 refactor: Remove commented out code for cleaning up networks in CleanupDocker.php 2024-08-05 13:45:33 +02:00
Andras Bacsai
b38a651a08 feat: coolify init should cleanup stuck networks in proxy 2024-08-05 13:45:24 +02:00
Andras Bacsai
76c39a987c fix: service_url should not have a trailing slash 2024-08-05 13:42:51 +02:00
Andras Bacsai
1d8c496906 feat: delete team in cloud without subscription 2024-08-05 12:03:36 +02:00
Andras Bacsai
820693ac22 fix: plausible template 2024-08-05 11:50:52 +02:00
Andras Bacsai
d7b45a6dd2 fix: remove lazy load from scheduled tasks 2024-08-05 11:30:48 +02:00
Gabriel Peralta
cb2fc68dde Update minecraft.yaml 2024-08-03 21:13:42 -04:00
Tiago Miguel
2e1e1cd8b3 Merge branch 'next' into set-default-message-queue-type-twenty 2024-08-02 13:06:21 +01:00
Tiago Miguel
5184426ad0 Added default message queue type 2024-08-01 23:52:24 +01:00
Andras Bacsai
e6e48c5812 fix: only append docker network if service/app is running 2024-08-01 13:47:58 +02:00
Andras Bacsai
fd855847ff refactor: Adjust keep_days in CleanupDatabase.php based on environment 2024-08-01 09:07:54 +02:00
Andras Bacsai
35dbced3c5 refactor: Update CleanupDatabase.php to adjust keep_days based on environment 2024-08-01 08:52:58 +02:00
Andras Bacsai
e8b2d8bf03 chore: Update version to 4.0.0-beta.320 2024-08-01 08:52:13 +02:00
Gabriel Peralta
9887d5eedd Added minecraft-server (java) as template 2024-07-31 00:50:13 -04:00
Alexzvn
1feb8488a3 cleanup 2024-07-29 08:09:27 +00:00
Alexzvn
342ef4d367 add graceful shutdown 2024-07-29 07:57:13 +00:00
Andras Bacsai
85d080a042 update servicetemplates 2024-07-26 20:32:29 +02:00
Andras Bacsai
69c48a511e Merge branch 'main' into next 2024-07-26 20:31:48 +02:00
Andras Bacsai
10b9c4bcfa Merge pull request #2961 from coollabsio/fixservicesenvparse
v4.0.0-beta.319
2024-07-26 20:28:43 +02:00
Andras Bacsai
38d914076e fix: update env on ui 2024-07-26 20:17:40 +02:00
Andras Bacsai
102dd6bfb1 fix: activity type invalid 2024-07-26 20:07:39 +02:00
Andras Bacsai
04379b76f2 chore: collect/create/update volumes in parseDockerComposeFile function 2024-07-26 20:04:41 +02:00
Andras Bacsai
d6fb54f3c3 fix: service env variables 2024-07-26 20:01:23 +02:00
Andras Bacsai
1d419c6ab8 fix: service env parsing 2024-07-26 20:00:37 +02:00
Andras Bacsai
8a4e958663 fix: parse docker composer 2024-07-26 19:58:52 +02:00
Andras Bacsai
b04f7686fd update servicetemplates 2024-07-26 19:54:29 +02:00
Andras Bacsai
5aabdefaa7 quickfix: service env parsing 2024-07-26 19:53:40 +02:00
Jonathan Müller
a2e439686d Fixes Plausible TOTP key by changing it from BASE64 to REALBASE64_32 2024-07-26 16:30:36 +00:00
Filip Gornitzka Abelson
219b21767b chore: update formbricks template 2024-07-26 17:27:20 +02:00
Andras Bacsai
281c6e39a5 fix: members of root team should not see instance admin stuff 2024-07-26 14:54:24 +02:00
Axel Kaotic
4069631ae1 [FIX] Template: rabbitmq 2024-07-26 14:40:28 +02:00
Kaotic
6a19a34d65 Merge branch 'coollabsio:next' into next 2024-07-26 14:38:39 +02:00
Andras Bacsai
95548b9d9b enhance: Add required CRON_SECRET to Formbricks template 2024-07-26 14:05:48 +02:00
Andras Bacsai
2ed1529b95 Merge pull request #2954 from LaurenceJJones/formbricks_env_var_required
enhance: Formbricks template add required CRON_SECRET
2024-07-26 14:05:34 +02:00
Laurence Jones
85f037702a Update formbricks.yaml 2024-07-26 13:03:28 +01:00
Laurence Jones
2caa91d772 enhance: Formbricks template add required CRON_SECRET
formbricks/formbricks#2874

A new required env var has been added, using special magic to generate a random password as the value to abstract away from user.
2024-07-26 12:25:12 +01:00
Andras Bacsai
d7350fad76 fix: several shared environment variables in one value, parsed correctly 2024-07-26 13:22:44 +02:00
Andras Bacsai
dcfb716711 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-07-26 11:58:43 +02:00
Andras Bacsai
0e0c81c32b fix: update SERVICE_FQDN/URL env variables when you change the domain 2024-07-26 11:58:40 +02:00
Andras Bacsai
802cab4a70 fix: domain update on services on the UI 2024-07-26 11:58:14 +02:00
Andras Bacsai
2c0b40ac8c fix: by default volumes that we cannot determine if they are directories or files are treated as directories 2024-07-26 11:57:49 +02:00
Andras Bacsai
001e8493ae Merge pull request #2946 from vitalybaev/fixes-link-to-feature-requests
Fixes link to feature requests in GitHub's issue template
2024-07-26 10:01:30 +02:00
Vitaly Baev
e9256152e8 Fixes link to feature requests in GitHub's issue template 2024-07-26 00:06:12 +02:00
Andras Bacsai
25410cb31a workaround for null bytes 2024-07-25 21:51:53 +02:00
Andras Bacsai
3dedf5548f feat: new server check job 2024-07-25 20:30:22 +02:00
Andras Bacsai
2d2bb23708 Merge pull request #2879 from lorenzomigliorero/fix/bitbucket-repository-url
fix: bitbucket repos url
2024-07-25 14:23:58 +02:00
Andras Bacsai
6afc0b6303 fix: gitlab logo 2024-07-25 14:17:26 +02:00
Andras Bacsai
f558f01ffd fix: gitlab service 2024-07-25 14:14:00 +02:00
Andras Bacsai
47fa955e71 Merge pull request #2638 from GunniBusch/main
[TEMPLATE] Add GitLab template
2024-07-25 13:49:40 +02:00
andrasbacsai
96c4f5b8da Fix styling 2024-07-25 11:31:59 +00:00
Andras Bacsai
6a4aa492c0 fix: random generated uuid will be full length (not 7 characters) 2024-07-25 13:31:01 +02:00
Andras Bacsai
debd2a3433 fix: link in task failed job notifications 2024-07-25 13:30:38 +02:00
Andras Bacsai
192bc0f13b fix: handle array env vars 2024-07-25 12:38:31 +02:00
Andras Bacsai
8756141f1d fix: remove pull always when uploading backup to s3 2024-07-25 12:11:47 +02:00
Andras Bacsai
b97abc600e chore: remove commented out code for docker image pruning 2024-07-25 12:00:14 +02:00
Andras Bacsai
4b29636b42 fix: api -> application patch endpoint 2024-07-25 11:53:57 +02:00
Andras Bacsai
321c51f8ed feat: check custom internal name through server's applications. 2024-07-25 11:30:31 +02:00
Andras Bacsai
69d8f706cf fix: raw compose deployment .env not found 2024-07-25 11:07:32 +02:00
Andras Bacsai
98f67c5c6c feat: update Caddy button label in proxy.blade.php 2024-07-25 11:07:18 +02:00
Axel Kaotic
27adf864ed [+] Template: chaskiq 2024-07-25 03:15:03 +02:00
Andras Bacsai
1cf8d0b886 chore: update version numbers to 4.0.0-beta.319 2024-07-24 21:12:22 +02:00
andrasbacsai
613830e6a6 Fix styling 2024-07-24 19:11:12 +00:00
Andras Bacsai
2ea146333e fix: uuid in api docs type 2024-07-24 21:10:32 +02:00
andrasbacsai
f76d45b826 Fix styling 2024-07-24 12:27:21 +00:00
Andras Bacsai
6cc86a3c82 Merge pull request #2881 from coollabsio/next
v4.0.0-beta.318
2024-07-24 14:26:39 +02:00
Andras Bacsai
f1e5b61970 feat: update API endpoint summaries 2024-07-23 14:36:44 +02:00
Andras Bacsai
65380646f7 feat: add branddev logo to README.md 2024-07-23 14:23:58 +02:00
Andras Bacsai
189a8347ed feat: add server api endpoints 2024-07-23 14:20:53 +02:00
Andras Bacsai
e96e8f6fec feat: add patch request to projects 2024-07-23 11:48:38 +02:00
Andras Bacsai
38299ab507 feat: create/delete project endpoints 2024-07-23 11:36:05 +02:00
Andras Bacsai
f134171855 fix: restart proxy does not work + status indicator on the UI 2024-07-23 11:11:54 +02:00
Andras Bacsai
320204d854 fix: directory will be created by default for compose host mounts 2024-07-22 15:10:07 +02:00
Andras Bacsai
b68199a482 fix: Fix issue with deployment start command in ApplicationDeploymentJob 2024-07-22 15:09:50 +02:00
Andras Bacsai
6f4436fd5e fix: plane service images 2024-07-22 14:32:58 +02:00
Andras Bacsai
0d8cc19698 fix: deleting application should delete preview deployments 2024-07-22 14:13:56 +02:00
Andras Bacsai
a3a1ff69e1 fix: preview deployments should be stopped properly via gh webhook 2024-07-22 13:06:03 +02:00
Andras Bacsai
5df7e23aa4 chore: Update resource-limits.blade.php with improved input field helpers 2024-07-22 11:33:25 +02:00
Andras Bacsai
35d9691b3f chore: Update APP_BASE_URL to use SERVICE_FQDN_PLANE 2024-07-22 11:16:50 +02:00
Andras Bacsai
465f649641 Merge pull request #2903 from MrAlexand0r/bugfix/2860_plane_images
#2860 - [PLANE] Fixed image uploads not working
2024-07-22 10:30:49 +02:00
Andras Bacsai
d909e7d802 update service template 2024-07-22 10:02:28 +02:00
Andras Bacsai
06db6b8502 Merge branch 'main' into next 2024-07-22 10:02:03 +02:00
Andras Bacsai
12261b9082 chore: Remove commented out code for sending internal notification 2024-07-22 09:50:49 +02:00
Andras Bacsai
583ec432e8 Merge branch 'next' into bugfix/2860_plane_images 2024-07-22 09:43:16 +02:00
Andras Bacsai
8ffbccf7db fix: create file storage even if content is empty 2024-07-22 09:18:15 +02:00
Toby Brancher
097ca209bc Support map fields in Directus
To support the map fields in Directus with Postgres you need the Postgis extension installed, with docker we can just change the image to use the equivalent alpine postgis image, source latest stable alpine from here (perhaps there is a better ref to use than one with a specific version number?): https://registry.hub.docker.com/r/postgis/postgis/

If you are already running Directus without postgis, and would like to make use of the mapping fields after updating the docker compose file you will need to go to `execute command`, select the postgres container and run the following command filling in the appropriate env vars;

`psql -U ${SERVICE_USER_POSTGRESQL} -d ${POSTGRESQL_DATABASE} -c "CREATE EXTENSION postgis;"`
2024-07-21 23:39:22 +01:00
Alexander G.
439fe43a04 #2860 - plane service: fixed image uploads not working because credentials were unset 2024-07-21 15:54:42 +02:00
Andras Bacsai
7fd9a799b5 Update BUG_REPORT.yml 2024-07-20 14:17:51 +02:00
Andras Bacsai
7459ab22d1 remove file 2024-07-20 13:17:09 +02:00
Andras Bacsai
133a68f3eb update suapbase 2024-07-20 12:31:05 +02:00
Andras Bacsai
3224110583 fix: supabase 2024-07-20 12:30:32 +02:00
Andras Bacsai
810488b115 fix: volume detection (dir or file) is fixed 2024-07-19 17:06:30 +02:00
Andras Bacsai
b2276147ad chore: Disable health check by default 2024-07-19 15:40:44 +02:00
Andras Bacsai
6c1293c63e chore: Update helper message with link to documentation 2024-07-19 15:40:36 +02:00
Andras Bacsai
526d675272 refactor: Disable health check for Rust applications during deployment 2024-07-19 15:40:33 +02:00
Andras Bacsai
14b2442d40 chore: Update version to 4.0.0-beta.318 2024-07-19 15:04:18 +02:00
Andras Bacsai
d6d194d414 Merge pull request #2880 from coollabsio/next
v4.0.0-beta.317
2024-07-19 14:57:29 +02:00
Andras Bacsai
0e99f97855 oops 2024-07-19 14:56:18 +02:00
Andras Bacsai
14dc933219 fix: missing input for api endpoint 2024-07-19 14:40:01 +02:00
Andras Bacsai
9497f123b4 revert: advanced dropdown 2024-07-19 14:38:47 +02:00
Andras Bacsai
6feb439d0a chore: Update version to 4.0.0-beta.317 2024-07-19 14:34:21 +02:00
Andras Bacsai
e4ca5ee5f5 chore: Update Traefik image version to v2.11 2024-07-19 14:34:19 +02:00
Andras Bacsai
f21c12f39b Merge pull request #2856 from coollabsio/next
v4.0.0-beta.316
2024-07-19 13:45:51 +02:00
Andras Bacsai
6c1e50a914 fix: backup downloads 2024-07-19 13:45:04 +02:00
Lorenzo Migliorero
2dbba366b7 fix: bitbucket repository url 2024-07-19 13:41:01 +02:00
Andras Bacsai
da064def7a update service-templates 2024-07-19 10:06:26 +02:00
Andras Bacsai
3af3fa5773 refactor: Update DockerCleanupJob to use server settings for force cleanup 2024-07-19 09:59:09 +02:00
Andras Bacsai
005bd55fb2 refactor: Update DockerCleanupJob to use server settings for force cleanup 2024-07-18 15:12:52 +02:00
Andras Bacsai
82a5b4c55d refactor: server status job and docker cleanup job 2024-07-18 14:43:21 +02:00
Andras Bacsai
b8e95b2099 feat: force cleanup server 2024-07-18 14:38:56 +02:00
Andras Bacsai
8ea50dc029 refactor: Update DockerCleanupJob to handle nullable usageBefore property 2024-07-18 14:28:33 +02:00
Andras Bacsai
ec191af874 chore: Handle JSON parsing errors in format_docker_command_output_to_json 2024-07-18 14:23:15 +02:00
Andras Bacsai
d98c742aff chore: update general page of apps 2024-07-18 14:20:22 +02:00
Andras Bacsai
2529496594 feat: preserve git repository 2024-07-18 13:14:07 +02:00
Andras Bacsai
1b6114036a chore: Update checkbox labels in general.blade.php 2024-07-18 12:40:17 +02:00
Andras Bacsai
b33fb6c39a chore: Update width of container in general.blade.php 2024-07-18 12:39:49 +02:00
Andras Bacsai
0a6826af58 remove ray 2024-07-18 12:32:33 +02:00
Andras Bacsai
1c7034ff78 fix: if git limit reached, ignore it and continue with a default selection 2024-07-18 12:30:45 +02:00
Andras Bacsai
7e11698c55 chore: Update repository form with simplified URL input field 2024-07-18 12:13:23 +02:00
Andras Bacsai
1c4eb31d59 fix: handle custom_internal_name check in ApplicationDeploymentJob.php 2024-07-18 12:10:59 +02:00
Andras Bacsai
b4b6a4294a chore: Update bug report template
Update the bug report template to include a checkbox for indicating whether the user is using the cloud version of Coolify.
2024-07-18 12:07:44 +02:00
Andras Bacsai
4c031a7c05 fix: handle / in preselecting branches 2024-07-18 12:03:48 +02:00
Lorenzo Migliorero
1b4a8aa58f Merge branch 'feat/labels-by-proxy-type' of github.com:lorenzomigliorero/coolify into feat/labels-by-proxy-type 2024-07-18 11:42:52 +02:00
Lorenzo Migliorero
be6d74a6a3 style: linting 2024-07-18 11:42:41 +02:00
Andras Bacsai
997a262b6c Merge pull request #2840 from Pjort/next
Update supabase.yaml
2024-07-18 10:38:36 +02:00
Lorenzo Migliorero
5aae65f62f Merge branch 'next' into feat/labels-by-proxy-type 2024-07-17 21:21:09 +02:00
Lorenzo Migliorero
3be06ced92 feat: labels by proxy type 2024-07-17 21:06:56 +02:00
Andras Bacsai
c0e88df3e8 feat: add readonly labels 2024-07-17 14:52:40 +02:00
Andras Bacsai
85e1cbad53 chore: Update version to 4.0.0-beta.316 2024-07-17 09:17:02 +02:00
Andras Bacsai
c37398af72 Merge pull request #2853 from coollabsio/next
v4.0.0-beta.315
2024-07-17 08:45:33 +02:00
Andras Bacsai
19cfe4e514 fix: new docker compose parsing 2024-07-17 08:09:33 +02:00
Andras Bacsai
23a1b1925f fix: tag deployments 2024-07-17 07:59:12 +02:00
Andras Bacsai
1fb8d1e14c revert: pull policy 2024-07-17 07:59:06 +02:00
Andras Bacsai
804c70b575 chore: Update version to 4.0.0-beta.315 2024-07-17 07:58:45 +02:00
Pjort
548c4a4c64 Update supabase.yaml
Fixes problem related to emails sent for invite and forgotten password, that then doesn't actually use the external URL instead uses the hardcoded: http://supabase-kong:8000
2024-07-15 17:47:35 +02:00
Andras Bacsai
2978042162 Merge pull request #2835 from coollabsio/next
v4.0.0-beta.314
2024-07-15 16:42:04 +02:00
Andras Bacsai
4225ec7060 feat: Improve error handling in loadComposeFile method 2024-07-15 16:39:40 +02:00
Andras Bacsai
893339fc8e refactor: Update Docker Compose build command to include --pull flag 2024-07-15 16:39:28 +02:00
Andras Bacsai
356e7b57d2 improvement: add basedir + compose file in new compose based apps 2024-07-15 16:39:22 +02:00
Andras Bacsai
4ee1f1a507 fix: improve github source creation 2024-07-15 15:33:46 +02:00
Andras Bacsai
7d64df60cd fix: drupal 2024-07-15 13:59:33 +02:00
Andras Bacsai
eb3a4ca157 Merge pull request #2463 from emircanerkul/main
Add drupal-with-postgresql service template
2024-07-15 13:51:43 +02:00
Andras Bacsai
a7b5157fa6 fix: docmost template 2024-07-15 12:58:29 +02:00
Andras Bacsai
793e6d19eb Merge pull request #2747 from alfinauzikri/main
[TEMPLATE] Add Docmost Template
2024-07-15 12:54:36 +02:00
Andras Bacsai
674fa4d09c fix: vikunja 2024-07-15 12:51:04 +02:00
Andras Bacsai
0089e86dd1 refactor: Remove unused code and fix storage form layout 2024-07-15 12:23:06 +02:00
Andras Bacsai
e1d802b507 Merge pull request #2817 from luckydonald/patch-2
[TEMPLATE] fix vikunja, add postgres variant.
2024-07-15 12:18:21 +02:00
Andras Bacsai
9927b71af9 fix: plane service template 2024-07-15 12:13:34 +02:00
Andras Bacsai
b1c0f105ab fix: update docker compose pull command with --policy always 2024-07-15 12:13:21 +02:00
Andras Bacsai
35cae1d4dc Merge pull request #2831 from MrAlexand0r/main
[Feature] #2354 - Add Plane Service
2024-07-15 11:48:53 +02:00
Andras Bacsai
3dab3365e2 fix service-templates 2024-07-15 11:40:12 +02:00
Andras Bacsai
1bdc7c87ba Delete templates/service-templates.json 2024-07-15 11:34:40 +02:00
Andras Bacsai
cab8ad0ca0 Merge pull request #2826 from truemiller/patch-1
Fix typo in "Is Literal?" checkbox in Environment Variables
2024-07-15 11:32:08 +02:00
Andras Bacsai
43409f3ff0 fix: add validation for missing docker compose file 2024-07-15 11:31:18 +02:00
Andras Bacsai
a5dd4cab52 fix: update minio hc in services 2024-07-15 11:31:13 +02:00
Andras Bacsai
a815240f4e Merge pull request #2827 from Megumiso/fix-placement-constraints
fix placement constraints were ignored
2024-07-15 11:18:27 +02:00
Andras Bacsai
2a44e7c5bd Merge pull request #2829 from mateusfmello/fix-minio-healthcheck
fix(MinIO): error in healthcheck command
2024-07-15 11:14:55 +02:00
Andras Bacsai
28c7e439b1 fix: service domains and envs are properly updated 2024-07-15 10:55:04 +02:00
Andras Bacsai
4396c786b4 refactor: Update version numbers to 4.0.0-beta.314 2024-07-15 10:54:50 +02:00
Alexander Gratzl
b67bb8595f removed health checks none 2024-07-14 00:36:14 +02:00
Mateus Fernandes
bec47487dd fix(MinIO): new command healthcheck
MinIO container were not available, as they do not contain the CURL or WGET commands, but MinIO has its own verification command:
https://github.com/minio/minio/issues/18389
2024-07-13 12:33:54 -03:00
Mateus Fernandes
b110d0c12b fix(reactive-resume): new healthcheck command for MinIO
MinIO container were not available, as they do not contain the CURL or WGET commands, but MinIO has its own verification command:
https://github.com/minio/minio/issues/18389
2024-07-13 12:33:12 -03:00
Alexander G
ae425475b4 #2354 added healthchecks for the services 2024-07-13 10:41:04 +02:00
Megumiso
dc6aee44b3 changed variable name for better readability 2024-07-13 13:26:51 +09:00
Megumiso
4ffea311e8 placement constraints is now working 2024-07-13 13:15:17 +09:00
Alexander
77a6a6e46a Merge branch 'main' of https://github.com/coollabsio/coolify
# Conflicts:
#	templates/service-templates.json
2024-07-13 01:08:17 +02:00
Alexander
2278ba31e7 #2354 WIP plane feature 2024-07-13 00:38:41 +02:00
Josh Miller
aaeec3d340 fix: env is_literal helper text typo 2024-07-12 19:00:20 +01:00
Josh Miller
2cbe530b7e fix: typo in is_literal helper 2024-07-12 18:59:06 +01:00
Andras Bacsai
6ada6d145c Merge pull request #2821 from coollabsio/next
v4.0.0-beta.313
2024-07-12 15:46:08 +02:00
Andras Bacsai
0f55e83591 revert: instancesettings 2024-07-12 15:45:36 +02:00
Andras Bacsai
4017ea7b65 Merge pull request #2819 from coollabsio/next
v4.0.0-beta.312
2024-07-12 15:06:15 +02:00
Andras Bacsai
a85066c644 fix: disable sentinel until a few bugs are fixed 2024-07-12 15:05:12 +02:00
Andras Bacsai
b08d38f339 refactor: Update version numbers to 4.0.0-beta.312 2024-07-12 14:54:54 +02:00
Andras Bacsai
d4f4632461 Merge pull request #2812 from coollabsio/next
v4.0.0-beta.311
2024-07-12 14:15:15 +02:00
Andras Bacsai
666aa041f4 refactor: Update metrics.blade.php to improve alert message clarity 2024-07-12 14:12:44 +02:00
Andras Bacsai
1c565fd502 refactor: Add lazy loading to tags in Livewire configuration view 2024-07-12 14:00:39 +02:00
Luckydonald
7de2b8cbd7 Create vikunja-with-postgres.yaml
to have a db variant.
2024-07-12 13:58:14 +02:00
Luckydonald
852e906736 Update vikunja.yaml, follow recommended docker-compose. 2024-07-12 13:55:37 +02:00
Andras Bacsai
5778466947 refactor: Update Webhooks.php to use nullable type for webhook URLs 2024-07-12 13:54:12 +02:00
Andras Bacsai
7006239b0d refactor: Update Livewire configuration views 2024-07-12 13:40:11 +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
20a3f4b200 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-07-12 12:53:09 +02:00
Andras Bacsai
73acda833e feat: Enable legacy model binding in Livewire configuration 2024-07-12 12:53:07 +02:00
andrasbacsai
fa895db76e Fix styling 2024-07-12 10:53:07 +00:00
Andras Bacsai
88f33be5b6 refactor: only get instanceSettings once from db 2024-07-12 12:51:55 +02:00
Andras Bacsai
21612cccf7 refactor: tags view 2024-07-12 12:51:13 +02:00
Andras Bacsai
39a7332343 refactored: webhooks view 2024-07-12 11:52:32 +02:00
Andras Bacsai
21825876fb fix: service status changed event 2024-07-12 11:27:08 +02:00
Andras Bacsai
aaee887d3e fix: respect top-level configs and secrets 2024-07-12 11:21:22 +02:00
Andras Bacsai
cb44373eff chore: Bump version to 4.0.0-beta.311 2024-07-12 11:20:44 +02:00
Andras Bacsai
4e6ea4f584 Merge pull request #2809 from coollabsio/next
Another hoopsy
2024-07-12 10:39:05 +02:00
Andras Bacsai
62a93d3e51 feat: Add new logo for Latitude 2024-07-12 10:38:16 +02:00
Andras Bacsai
f60c281e80 Merge pull request #2808 from coollabsio/next
Forgot to commit, oopsy
2024-07-12 10:36:37 +02:00
Andras Bacsai
43c40cdb09 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-07-12 10:35:52 +02:00
Andras Bacsai
c851262d81 refactor: Reset default labels when docker_compose_domains is modified 2024-07-12 10:35:50 +02:00
Andras Bacsai
91783ccc3e Merge pull request #2805 from coollabsio/next
v4.0.0-beta.310
2024-07-12 10:35:47 +02:00
Andras Bacsai
6ba3d5f86e Merge pull request #2737 from DerrikMilligan/patch-1
fix: Add arch as supported os
2024-07-12 10:00:48 +02:00
Andras Bacsai
a9a20755a9 Merge pull request #2799 from janbiasi/template-twenty-update-env
[TEMPLATE] feat: add security and storage access key env to twenty template
2024-07-12 10:00:29 +02:00
Andras Bacsai
d2693c1ac8 chore: Add new logo for Latitude 2024-07-12 09:39:06 +02:00
Jan Biasi
aaa6f434a9 feat: add security and storage access key env to twenty template 2024-07-12 09:23:51 +02:00
Andras Bacsai
314a3ac83f chore: update composer dependencies 2024-07-12 09:05:31 +02:00
Andras Bacsai
36e177479e chore: update version to 4.0.0-beta.310 2024-07-12 09:05:25 +02:00
Andras Bacsai
cbeebed6c9 Merge pull request #2798 from coollabsio/next
v4.0.0-beta.309
2024-07-11 14:12:58 +02:00
Andras Bacsai
4b905dbfad fix: update redirect URL in unauthenticated exception handler 2024-07-11 14:12:28 +02:00
Andras Bacsai
6072e7efc7 Merge pull request #2797 from coollabsio/next
refactor: comment out unused code for network cleanup
2024-07-11 13:04:36 +02:00
Andras Bacsai
19097c6692 refactor: comment out unused code for network cleanup 2024-07-11 13:04:01 +02:00
Andras Bacsai
d37f63c63c Merge pull request #2789 from coollabsio/next
v4.0.0-beta.308
2024-07-11 13:01:13 +02:00
Andras Bacsai
574bafd950 fix: cleanup parameter 2024-07-11 12:50:12 +02:00
Andras Bacsai
2b805f869a fix/feat: better volume cleanups 2024-07-11 12:38:54 +02:00
Andras Bacsai
36c4be1d17 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-07-11 11:30:23 +02:00
Andras Bacsai
f2d82e16d6 fix: remove volumes as well 2024-07-11 11:30:20 +02:00
andrasbacsai
c6658e1ac7 Fix styling 2024-07-11 09:20:09 +00:00
Andras Bacsai
22a7d85e58 Merge pull request #2760 from KobyW/next
fix: prevent instance fqdn persisting to other servers dynamic proxy config
2024-07-11 11:19:29 +02:00
Andras Bacsai
b3421b47b6 Merge pull request #2762 from Xiloe/gitea-pr-preview
fix: Gitea PR preview not working as intended
2024-07-11 11:17:35 +02:00
Andras Bacsai
b5247f77ec Merge pull request #2795 from alexzvn/feat/display-rollback-interval
feat: display time interval for rollback images
2024-07-11 11:16:05 +02:00
Andras Bacsai
e63e806572 fix: always set project name during app deployments 2024-07-11 11:14:20 +02:00
Andras Bacsai
62b84add36 feat: compose parser v2 2024-07-11 10:55:15 +02:00
Andras Bacsai
858ae1266f chore: Update storage.blade.php view for livewire project service 2024-07-11 10:55:04 +02:00
Andras Bacsai
3ae990aa40 fix: api 2024-07-11 10:17:20 +02:00
Andras Bacsai
deb4b16ae1 feat: cleanup unused docker networks from proxy 2024-07-11 10:17:15 +02:00
Andras Bacsai
b37dc4c73e fix: remove networks when deleting a docker compose based app 2024-07-11 10:16:56 +02:00
Andras Bacsai
6b08100819 chore: Refactor checkIfDomainIsAlreadyUsed function 2024-07-11 10:02:35 +02:00
Alexzvn
2c45e7146b feat: display time interval for rollback images 2024-07-11 02:56:31 +00:00
Andras Bacsai
7c4a722d72 refactor: Add force parameter to StartProxy handle method 2024-07-10 15:53:56 +02:00
Andras Bacsai
f4bccefaba chore: Update livewire/livewire dependency to version 3.4.9 2024-07-10 15:53:52 +02:00
Andras Bacsai
491bb93e95 fix: do not overwrite hardcoded variables if they rely on another variable 2024-07-10 15:53:46 +02:00
Andras Bacsai
f35700c9ee chore: Update Plausible docker compose template to Plausible 2.1.0 2024-07-10 14:02:05 +02:00
Andras Bacsai
bd26aca3d9 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-07-10 13:58:56 +02:00
Andras Bacsai
71d24773b6 chore: Update Plausible docker compose template to Plausible 2.1.0 2024-07-10 13:58:53 +02:00
Andras Bacsai
781bd29f40 Merge pull request #2689 from mtctonyhkhk2010/add-traditional-chinese-translation
Add Traditional Chinese translation
2024-07-10 13:30:31 +02:00
Andras Bacsai
fd4dd1edfa Merge pull request #2688 from ari-party/next
Multiple CSS changes
2024-07-10 13:29:04 +02:00
Andras Bacsai
d2db26cb5e Merge pull request #2575 from Nsbx/patch-1
Update reactive-resume.yaml
2024-07-10 13:25:55 +02:00
Andras Bacsai
01977839f7 Merge branch 'next' into patch-1 2024-07-10 13:25:42 +02:00
Andras Bacsai
0116892b6b Merge pull request #2774 from OlegWock/fix-gitea-installations
Update volumes for Gitea with DB templates
2024-07-10 13:24:55 +02:00
Andras Bacsai
4d88873524 Merge pull request #2779 from Lukyrouge3/patch-1
Fixing supabase service
2024-07-10 13:19:45 +02:00
Andras Bacsai
8e46c0186d Merge pull request #2785 from saeedesmaili/patch-1
Update Plausible docker compose template to Plausible 2.1.0
2024-07-10 13:18:13 +02:00
Andras Bacsai
1b0e589aab update packages 2024-07-10 13:10:21 +02:00
Saeed Esmaili
02ba149e26 Update to community-edition:v2.1.1 2024-07-10 11:53:49 +02:00
Saeed Esmaili
2981aa876c Update plausible.yaml to plausible v2.1.0 2024-07-10 11:43:35 +02:00
Andras Bacsai
82057e1f50 Merge pull request #2681 from coollabsio/next
v4.0.0-beta.307
2024-07-10 11:20:04 +02:00
Andras Bacsai
4ce36631e0 Refactor deployment API response structure 2024-07-10 11:15:43 +02:00
Andras Bacsai
995324d6b3 chore: Refactor shared.php helper functions 2024-07-10 11:09:29 +02:00
Andras Bacsai
c61ad9cd95 feat: Add schema for uuid property in app update response 2024-07-10 10:30:11 +02:00
Andras Bacsai
26f4bcc77e fix: return data of app update 2024-07-10 10:29:52 +02:00
Andras Bacsai
c2b2d06e47 fix: remove own app from domain checks 2024-07-10 10:29:19 +02:00
Torrenté Florian
cbcc7f6d88 Update supabase.yaml
Based on solution here:
https://github.com/coollabsio/coolify/issues/2696
Tested and working !
2024-07-10 00:10:17 +02:00
Andras Bacsai
d05e23264b fix: database input validators 2024-07-09 15:23:53 +02:00
Andras Bacsai
db9faed184 update openapi.yaml 2024-07-09 14:12:52 +02:00
Andras Bacsai
e7feac848a descriptions 2024-07-09 14:12:36 +02:00
Andras Bacsai
33b965d9db chore: more details 2024-07-09 13:59:54 +02:00
Andras Bacsai
6c33bd9c72 openapi services 2024-07-09 13:30:13 +02:00
Andras Bacsai
c72fd2fc9d openapi databases 2024-07-09 13:19:21 +02:00
OlegWock
906a3dc9b4 Update volumes for Gitea with DB templates 2024-07-09 11:36:24 +02:00
Andras Bacsai
2d3a6a4528 openapi work work 2024-07-09 10:45:10 +02:00
Tom Ferriere
01abc26316 removed redundant if statement 2024-07-07 10:45:44 +02:00
Xiloe
2dfe43fc3c Fix styling 2024-07-07 08:02:36 +00:00
Tom Ferriere
f71861300a fix: gitea pr previews 2024-07-07 10:01:11 +02:00
Koby Wood
52d7841334 fix: prevent instance fqdn persisting to other servers dynamic proxy configs
fixes: 2650
2024-07-06 19:33:42 -04:00
Andras Bacsai
9c821e2480 init openapi generator 2024-07-06 14:34:15 +02:00
Andras Bacsai
f8f0aa171c dev command updated 2024-07-06 14:33:59 +02:00
Andras Bacsai
38d9999814 refactor: Simplify code for retrieving subscription in Stripe webhook 2024-07-06 13:47:43 +02:00
Andras Bacsai
920305432b feat: Improve internal notification message for early fraud warning webhook 2024-07-05 20:31:19 +02:00
Andras Bacsai
42fb8ab379 feat: early fraud warning webhook 2024-07-05 20:25:53 +02:00
Andras Bacsai
88ab385100 test openapi 2024-07-05 16:08:01 +02:00
Andras Bacsai
479a3540ec remove tag name uniqueness 2024-07-05 14:04:52 +02:00
Andras Bacsai
47f5a0de81 fix: Add validation for webhook endpoint selection 2024-07-05 13:35:57 +02:00
Andras Bacsai
311c118834 fix: Add newline character to private key before saving 2024-07-05 13:35:51 +02:00
Alfin Auzikri
0c40c0d795 Add files via upload 2024-07-04 23:38:52 +07:00
Alfin Auzikri
25f0a8f0b7 Create docmost.yaml 2024-07-04 23:38:16 +07:00
Andras Bacsai
f58a1a9ecf feat: Rename CloudCleanupSubs to CloudCleanupSubscriptions 2024-07-04 14:28:01 +02:00
Andras Bacsai
efa2ae5177 api api api api 2024-07-04 13:45:06 +02:00
Andras Bacsai
5e55c799ec api api api 2024-07-03 17:10:00 +02:00
Andras Bacsai
46e61cb409 fix: yaml everywhere 2024-07-03 16:27:28 +02:00
Andras Bacsai
b24a489c77 fix: api updates 2024-07-03 13:13:38 +02:00
Derrik Milligan
65a618d019 Add arch as supported os
Update `SUPPORTED_OS` to include the id `arch`. The install script supports `arch` but you can't proceed with a server install because `arch` isn't a `SUPPORTED_OS`
2024-07-02 12:02:38 -06:00
Andras Bacsai
4459c9f73d feat: api api api api api api 2024-07-02 16:12:04 +02:00
Andras Bacsai
3c13f1ff61 feat: restart database
feat: public dbs stay public after restart
feat: patch database conf
2024-07-02 13:39:44 +02:00
Andras Bacsai
c39d6dd407 feat: token permissions
feat: handle sensitive data
feat: handle read-only data
2024-07-02 12:15:58 +02:00
Andras Bacsai
1249b1ece9 fix: custom container name will be the container name, not just internal network name 2024-07-02 10:02:43 +02:00
Andras Bacsai
da6f2da3d0 feat: lots of api endpoints 2024-07-01 16:26:50 +02:00
Andras Bacsai
dbc235d84a fix: check domain on new app via api 2024-07-01 11:39:10 +02:00
Andras Bacsai
b86924bc0e feat: private gh deployments through api 2024-06-30 11:30:31 +02:00
Andras Bacsai
0fb8cf4241 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-28 15:05:39 +02:00
Andras Bacsai
30b7e831c0 feat: new app API endpoint 2024-06-28 15:05:37 +02:00
Andras Bacsai
f1b4ebcde2 Merge pull request #2706 from therumbler/patch-3
fix minor typo in backup.blade.php
2024-06-28 12:35:32 +02:00
andrasbacsai
e3c4ebb121 Fix styling 2024-06-28 10:04:28 +00:00
Andras Bacsai
2dd17cfac5 fix: force cleanup on busy servers 2024-06-28 12:03:38 +02:00
Andras Bacsai
93d04ef426 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-28 11:00:05 +02:00
Andras Bacsai
70bfd4dd8a fix: show keydbs/dragonflies/clickhouses 2024-06-28 11:00:02 +02:00
Benjamin Rumble
ca917d9d21 fix minor typo in backup.blade.php
~add as a database~ -> add a database
2024-06-27 11:30:28 -04:00
Andras Bacsai
be633f0560 fix: only run cloud clean on cloud + remove root team 2024-06-27 15:07:41 +02:00
Andras Bacsai
613e980267 fix: cleanup subs in cloud 2024-06-27 12:48:37 +02:00
Andras Bacsai
4fb37054df feat: Update server settings metrics history days to 7 2024-06-26 13:59:41 +02:00
Andras Bacsai
07508df8fd fix: remove both option for api endpoints. it just makes things complicated 2024-06-26 13:57:04 +02:00
Andras Bacsai
2a52fb5872 feat: bulk env update api endpoint 2024-06-26 13:32:36 +02:00
Andras Bacsai
f45b3cab55 feat: more API endpoints 2024-06-26 13:00:36 +02:00
Andras Bacsai
eb76d63117 extend application put api 2024-06-25 21:22:23 +02:00
Andras Bacsai
0964c7a338 remove unnecessary things from application table 2024-06-25 21:22:14 +02:00
Bruce Mak
7af151d44e add Traditional Chinese translation 2024-06-26 00:05:52 +08:00
Astrid
7028391e57 remove unused li element? 2024-06-25 17:21:23 +02:00
Astrid
cbae0845e7 h2 instead of h3 as element is child of h2 2024-06-25 17:10:06 +02:00
Astrid
0e512962c6 padding same as other tabs
from: ![from](https://astrid.email/u/chrome_3IcAbmCNKW.png)
to: ![to](https://astrid.email/u/chrome_8Cz5rx30wn.png)
2024-06-25 17:09:44 +02:00
Astrid
ac694b855b change gap of proxy buttons
from: ![from](https://astrid.email/u/chrome_ducsHvMI4w.png)
to: ![to](https://astrid.email/u/chrome_L4ncORPQtD.png)
2024-06-25 17:01:32 +02:00
Astrid
490d45e788 server settings css changes
from: ![from](https://astrid.email/u/chrome_REEIhjc2Yp.png)
to: ![to](https://astrid.email/u/chrome_J5XwGaOs84.png)
2024-06-25 17:01:17 +02:00
Astrid
b0863eb5ea remove h4 padding on server proxy settings
from: ![from](https://astrid.email/u/chrome_9wK3HTTy12.png)
to: ![to](https://astrid.email/u/chrome_7m5jXr1aWH.png)
2024-06-25 17:01:17 +02:00
Andras Bacsai
ee199ed038 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-25 15:05:53 +02:00
Andras Bacsai
41268fa20b api: able to update application 2024-06-25 15:05:51 +02:00
andrasbacsai
7474896368 Fix styling 2024-06-25 12:30:37 +00:00
Andras Bacsai
54c4296a25 chore: Update Monaco Editor for Docker Compose and Proxy Configuration 2024-06-25 14:29:51 +02:00
Andras Bacsai
116f5afe3c chore: Refactor ServerStatusJob constructor formatting 2024-06-25 14:29:47 +02:00
Andras Bacsai
c015c8f45d service: glances 2024-06-25 14:21:25 +02:00
Andras Bacsai
fe26b3d759 chore: Update version to 4.0.0-beta.307 2024-06-25 14:20:21 +02:00
Andras Bacsai
afee2d8ca8 Merge pull request #2541 from leocabeza/next
feat: add glances service to templates
2024-06-25 14:20:02 +02:00
Andras Bacsai
e9158b7305 Merge pull request #2678 from coollabsio/next
v4.0.0-beta.306
2024-06-25 14:04:44 +02:00
Andras Bacsai
0f5690db85 fix: run container commands on high priority 2024-06-25 13:59:39 +02:00
Andras Bacsai
3ebb35a5cd fix: remove lemon + paddle things 2024-06-25 13:54:58 +02:00
Andras Bacsai
f557cd0933 fix: load js locally 2024-06-25 13:54:44 +02:00
Andras Bacsai
063aa702b1 chore: Add log1x/laravel-webfonts package 2024-06-25 13:44:46 +02:00
Andras Bacsai
4f1070083a chore: Update version to 4.0.0-beta.306 2024-06-25 13:36:02 +02:00
Andras Bacsai
5e625f71c5 feat: local fonts 2024-06-25 13:35:58 +02:00
Andras Bacsai
cc36a0ecd1 Merge pull request #2677 from coollabsio/next
v4.0.0-beta.305
2024-06-25 12:53:11 +02:00
Andras Bacsai
a849c25672 improve: update process 2024-06-25 12:48:56 +02:00
Andras Bacsai
8b95b93c72 refactor: Add is_build_time property to nixpacks_php_fallback_path and nixpacks_php_root_dir 2024-06-25 12:43:16 +02:00
Andras Bacsai
3d9557bc50 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-25 10:52:52 +02:00
Andras Bacsai
01f2f56be6 refactor: Improve formatting and readability of source.blade.php 2024-06-25 10:52:50 +02:00
andrasbacsai
e658ed993a Fix styling 2024-06-25 08:52:24 +00:00
Andras Bacsai
58fc897ea5 fix: run user commands on high prio queue 2024-06-25 10:51:32 +02:00
Andras Bacsai
f8c5a35b56 chore: Update version to 4.0.0-beta.305 2024-06-25 10:37:45 +02:00
Andras Bacsai
2c92cc40e1 refactor: Update code to use str() instead of Str::of() for string manipulation 2024-06-25 10:37:10 +02:00
Andras Bacsai
1266810c4d fix: better parsign performance for huge compose files
fix: env parsing
2024-06-25 10:34:56 +02:00
Andras Bacsai
1de8657a56 refactor: Update stack-form.blade.php to include wire:target attribute for submit button 2024-06-25 10:18:21 +02:00
Leonardo Cabeza
408c24c700 Merge remote-tracking branch 'upstream/next' into next 2024-06-24 17:54:12 -05:00
Andras Bacsai
3a1e5f7f0c Merge pull request #2675 from coollabsio/next
v4.0.0-beta.304
2024-06-24 23:49:16 +02:00
Andras Bacsai
8d85976ac0 revert savecomposeconfig 2024-06-24 23:47:55 +02:00
Andras Bacsai
fe7eaa594f Merge pull request #2672 from coollabsio/next
v4.0.0-beta.303
2024-06-24 22:47:53 +02:00
Andras Bacsai
5500a1edb3 refactor: Remove commented out code in Service model's saveComposeConfigs method 2024-06-24 22:46:19 +02:00
Andras Bacsai
eb27e34972 chore: Update version to 4.0.0-beta.303 2024-06-24 22:46:16 +02:00
Andras Bacsai
8335c299b8 Merge pull request #2670 from coollabsio/next
fix fix fix
2024-06-24 21:00:03 +02:00
Andras Bacsai
feadc60b14 refactor: Improve handling of default environment in Service model's saveComposeConfigs method 2024-06-24 20:59:24 +02:00
Andras Bacsai
b59799dc2b refactor: Add default environment to Service model's saveComposeConfigs method 2024-06-24 20:58:54 +02:00
Andras Bacsai
f0b2f6eb00 Merge pull request #2669 from coollabsio/next
v4.0.0-beta.302
2024-06-24 20:56:48 +02:00
Andras Bacsai
c3fb126a0a refactor: Update Service model's saveComposeConfigs method 2024-06-24 20:55:12 +02:00
Andras Bacsai
f6708f6e47 chore: Update version to 4.0.0-beta.302 2024-06-24 20:54:53 +02:00
Andras Bacsai
d48b5a9079 Merge pull request #2664 from coollabsio/next
Refactor default_environment method to handle projects with 0 environ…
2024-06-24 18:42:21 +02:00
Andras Bacsai
99354f0d7d Refactor default_environment method to handle projects with 0 environments 2024-06-24 18:41:44 +02:00
Andras Bacsai
0fa8552aa3 Merge pull request #2663 from coollabsio/next
v4.0.0-beta.301
2024-06-24 18:35:18 +02:00
Andras Bacsai
4869c388b2 Merge pull request #2659 from kubatron117/cs-lang
CS localization
2024-06-24 18:34:54 +02:00
Andras Bacsai
2adade0927 Merge pull request #2661 from ari-party/main
Small CSS change
2024-06-24 18:34:28 +02:00
Andras Bacsai
87b7337d9e fix: projects with 0 envs 2024-06-24 18:33:01 +02:00
Andras Bacsai
351c9c1ad3 chore: Update version to 4.0.0-beta.301 2024-06-24 18:31:15 +02:00
kubatron 117
7759fe2cdf Add czech localization 2024-06-24 17:24:08 +02:00
Astrid
5d2651afc1 Add margin top to button 2024-06-24 17:20:56 +02:00
Andras Bacsai
ce3b2de5e7 Merge pull request #2656 from coollabsio/next
v4.0.0-beta.300
2024-06-24 15:40:01 +02:00
Andras Bacsai
1782f59a96 fix: MB is % lol 2024-06-24 15:38:37 +02:00
Andras Bacsai
3612096b56 Merge pull request #2655 from coollabsio/next
v4.0.0-beta.299
2024-06-24 15:22:31 +02:00
Andras Bacsai
97aa6139ea fix: get envs before sortby 2024-06-24 15:20:52 +02:00
Andras Bacsai
e5d915a7a9 chore: Move server delete component to the bottom of the page 2024-06-24 14:55:25 +02:00
Andras Bacsai
5bc31c305c chore: Update version to 4.0.0-beta.299 2024-06-24 14:48:18 +02:00
Andras Bacsai
8c7590a249 fix: remove zoom from modals 2024-06-24 14:47:55 +02:00
Andras Bacsai
d54d524cef Update blacksmith logo size in README.md 2024-06-24 14:47:46 +02:00
Andras Bacsai
a3d3ada500 fix: app deployment should be in high queue 2024-06-24 14:47:39 +02:00
Andras Bacsai
ca43d197f9 Merge pull request #2469 from coollabsio/next
v4.0.0-beta.298
2024-06-24 12:14:20 +02:00
Andras Bacsai
73692a0c73 fix: remove cloud stripe notifications 2024-06-24 11:52:12 +02:00
Andras Bacsai
50191221b9 feat: Update statusnook logo filename in compose template 2024-06-24 11:52:03 +02:00
Andras Bacsai
61236b45fb Merge pull request #2624 from goksan/statusnook-template
Statusnook template
2024-06-24 11:46:31 +02:00
Andras Bacsai
837545f4e7 Merge pull request #2625 from LEstradioto/fix-stripprefix-http
fix: stripprefix middleware correctly labeled to http
2024-06-24 11:44:02 +02:00
Andras Bacsai
31810477b2 Merge branch 'next' into fix-stripprefix-http 2024-06-24 11:42:35 +02:00
Andras Bacsai
4c652b5818 Merge pull request #2629 from Thijmen/instance-name
Ability to give a name to an instance
2024-06-24 11:23:41 +02:00
Andras Bacsai
5201818f52 fix: monaco editor
fix: apex charts
2024-06-24 11:21:39 +02:00
Thijmen Stavenuiter
7e9e333d24 Refactor code 2024-06-24 09:17:16 +00:00
Thijmen Stavenuiter
ab3b72bd1f Only set name if it is actually set in the settings 2024-06-24 09:16:47 +00:00
Andras Bacsai
f2c8a6bac5 Merge pull request #2644 from MMTE/feat/monaco-editor
[Improvement]: Add code editor to the Dockerfile and Docker Composer UI
2024-06-24 10:17:41 +02:00
Andras Bacsai
758fab9976 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-24 09:57:42 +02:00
Andras Bacsai
3c2b985769 feat: Add blacksmith logo to donations section 2024-06-24 09:57:39 +02:00
Leon Adomaitis
53032469e7 added smtp config 2024-06-23 21:43:14 +02:00
Mahdi Taleghani
73bc07c7fb Merge branch 'next' into feat/monaco-editor 2024-06-23 22:50:25 +03:30
MMTE
8298aa7124 replace monaco-editor with simple textarea as example in Dockerfile and Docker-Compose syntax 2024-06-23 22:21:28 +03:30
MMTE
92049cba92 add monaco-editor as option to textarea component 2024-06-23 22:13:50 +03:30
MMTE
83d8963051 add MonacoEditor Component 2024-06-23 22:03:22 +03:30
Andras Bacsai
bedcf6c058 chore: Update latest release version badge in README.md 2024-06-23 17:58:01 +02:00
Andras Bacsai
f8b7c17efd chore: Update README.md with latest release version badge 2024-06-23 17:55:07 +02:00
Andras Bacsai
76ba365325 fix: slash in env names
ui: placement of env switcher
2024-06-23 17:47:58 +02:00
Leon Adomaitis
768e27d68c Add metadata 2024-06-23 04:12:03 +02:00
Leon Adomaitis
691ae04ca9 Add gitlab.svg 2024-06-23 04:02:46 +02:00
Leon Adomaitis
6585db1f9c Merge branch 'next' into main 2024-06-23 03:56:50 +02:00
Leon Adomaitis
42aa2d0088 add first outline of the gitlab compose file 2024-06-23 03:52:29 +02:00
Andras Bacsai
a3255f3ab0 fix: refresh deployable compose without reload 2024-06-22 13:33:22 +02:00
Andras Bacsai
44af75613f fix: update compose environment with UI defined variables 2024-06-22 13:33:13 +02:00
Andras Bacsai
df53e8beda refactor: Update docker-compose generation to use multi-line literal block 2024-06-22 13:32:45 +02:00
Andras Bacsai
003f97af24 fix: you can now add env variable from ui to services 2024-06-22 12:55:26 +02:00
Thijmen
c897aaafa7 Fix styling 2024-06-22 08:41:55 +00:00
Thijmen Stavenuiter
76a0659335 Improved name creation 2024-06-22 10:41:15 +02:00
Thijmen Stavenuiter
4acdd8df12 Add null check 2024-06-22 10:30:52 +02:00
Thijmen
cdabdb4558 Fix styling 2024-06-22 08:23:50 +00:00
Thijmen Stavenuiter
f43fc1e376 Linting 2024-06-22 10:23:02 +02:00
Thijmen Stavenuiter
70cd5d364c Add ability to give a name to an instance 2024-06-22 10:22:57 +02:00
LEstradioto
62aa807d0f Fix styling 2024-06-21 20:09:54 +00:00
Luan Estradioto
5f3fed3c8f fix: stripprefix middleware correctly labeled to http 2024-06-21 16:59:59 -03:00
Goksan Kadir
f95e879a58 statusnook template 2024-06-21 20:49:38 +01:00
Andras Bacsai
34508a2fd1 feat: Add API endpoint to update application by UUID 2024-06-21 21:35:02 +02:00
Andras Bacsai
cd85094113 feat: more api endpoints 2024-06-21 16:46:13 +02:00
Andras Bacsai
72033279c2 update servicetemplates 2024-06-21 15:11:40 +02:00
Andras Bacsai
9919224226 Merge pull request #2602 from ryseek/anon_key_fix
fix: Supabase realtime service health check gets 403
2024-06-21 15:11:22 +02:00
Andras Bacsai
c6a1eac586 Merge pull request #2597 from addvanced/bugfix/oauth-login-creates-user
fix: OAuth Login creates new user and ignores "Registration Allowed"-setting
2024-06-21 15:09:39 +02:00
Andras Bacsai
b657aa33fa update servicetemplates 2024-06-21 15:07:10 +02:00
Andras Bacsai
834562190e Merge pull request #2613 from martonsz/fix-authentik-pg-healthcheck
Fix healthcheck for Postgres in Authentic service
2024-06-21 15:06:35 +02:00
Andras Bacsai
453b28baf7 fix: make server charts one livewire component with one interval selector 2024-06-21 14:49:13 +02:00
Andras Bacsai
28522418ff refactor: Update gitCommitLink method to handle null values in source.html_url 2024-06-21 14:39:22 +02:00
Andras Bacsai
18bab41605 feat: preselect server and destination if only one found 2024-06-21 14:35:05 +02:00
Andras Bacsai
c17079e045 refactor: Update dashboard.blade.php to use project's default environment for redirection 2024-06-21 14:34:54 +02:00
Andras Bacsai
f5cea7d9e3 refactor: Update profile index view to display 2FA QR code in a centered container 2024-06-21 13:56:07 +02:00
Andras Bacsai
c5083ea897 feat: preselect prod or first env when selecting a project
feat: quickly switch between environments
2024-06-21 13:54:13 +02:00
Andras Bacsai
f607aa1233 feat: Add metrics warning for servers without Sentinel enabled 2024-06-21 11:20:35 +02:00
Andras Bacsai
db39458295 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-21 09:52:57 +02:00
Andras Bacsai
3d75e0773f chore: Add Treive logo to donations section 2024-06-21 09:52:54 +02:00
Márton Szücs
bdcb467208 Fix healthcheck for Postgres in Authentic compose stack
Postgres would never get in healthy state because the environment variable SERVICE_USER_POSTGRESQL was never set inside the container.
Using POSTGRES_USER container env instead which receives the value from SERVICE_USER_POSTGRESQL.

Also adding the condition "service_healthy" for the depends_on. This will make the Authentic containers to wait for Postgres and Redis to be healthy before starting.
2024-06-20 19:45:06 +02:00
andrasbacsai
575a789d1d Fix styling 2024-06-20 12:52:57 +00:00
Andras Bacsai
fcb3d71cb4 feat: add high priority queue 2024-06-20 14:52:12 +02:00
Andras Bacsai
93c890ce41 refactor: Update Project/Show component to sort environments by created_at 2024-06-20 14:24:07 +02:00
Andras Bacsai
2421f7c35c refactor: Update Application model to include getDomainsByUuid method 2024-06-20 14:07:24 +02:00
Andras Bacsai
44920944db Merge pull request #2595 from samirimtiaz1996/main
add endpoints for filtering applications by domain and managing conta…
2024-06-20 14:07:01 +02:00
Andras Bacsai
1b135be3c5 Merge branch 'next' into main 2024-06-20 14:04:51 +02:00
Andras Bacsai
fff7ec9ba7 refactor: remove commented code for docker container removal 2024-06-20 13:54:15 +02:00
Andras Bacsai
0468f255e7 fix: static build with new nixpacks build process 2024-06-20 13:48:49 +02:00
Andras Bacsai
5da5158b14 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-20 13:30:20 +02:00
Andras Bacsai
6493ce3fe0 refactor: update container name assignment in Application model 2024-06-20 13:30:17 +02:00
andrasbacsai
078772495a Fix styling 2024-06-20 11:17:53 +00:00
Andras Bacsai
c81ad5cd03 feat: container metrics 2024-06-20 13:17:06 +02:00
Andras Bacsai
439bee1203 refactor: update shared.php to use correct key for retrieving sentinel version 2024-06-20 10:50:49 +02:00
Andras Bacsai
0eccbf64f4 remove sentinel from coolify versions 2024-06-20 10:44:31 +02:00
Ruslan Suleimanov
5232ce6e52 use the right key 2024-06-19 20:54:52 +02:00
Andras Bacsai
ada278d8da Merge pull request #2591 from coollabsio/dependabot/npm_and_yarn/braces-3.0.3
chore(deps): bump braces from 3.0.2 to 3.0.3
2024-06-19 16:21:55 +02:00
Andras Bacsai
24d5fef20f Merge pull request #2593 from victorlap/allow-changing-repository
Allow changing git repository
2024-06-19 16:20:53 +02:00
Andras Bacsai
b7fd1b9f4c Merge pull request #2553 from alexzvn/main
fix: application custom labels reset after saving
2024-06-19 16:14:07 +02:00
Andras Bacsai
b16cd1ec5c Merge pull request #2519 from notjulian/main
chore: add Italian translations
2024-06-19 16:13:04 +02:00
Andras Bacsai
278ec88dd0 Merge pull request #2481 from toohard2explain/add-german-translation
chore: add German translations
2024-06-19 16:12:34 +02:00
Andras Bacsai
b91699f317 Merge pull request #2409 from eltociear/add-japanese
Add Japanese language support
2024-06-19 16:12:00 +02:00
Andras Bacsai
105ed56dfc Merge pull request #2437 from ndbiaw/next
chore: add Vietnamese translate
2024-06-19 16:11:05 +02:00
Andras Bacsai
f9267a96ed Merge pull request #2424 from alwalxed/main
🌐 Add Arabic Language Support
2024-06-19 16:10:37 +02:00
Andras Bacsai
1135f45dc9 Merge pull request #2441 from florianguigue/main
🇫🇷 Add french translations
2024-06-19 16:10:15 +02:00
Andras Bacsai
b74a75f4c6 Merge pull request #2460 from muhammedaksam/main
chore: add Turkish translations
2024-06-19 16:09:50 +02:00
Andras Bacsai
8a787f48b3 Merge pull request #2456 from lopesboa/chore/add-pt-translation
chore: add Portuguese translation
2024-06-19 16:09:28 +02:00
Andras Bacsai
e956642982 chore: Update Spanish translation for failed authentication messages 2024-06-19 16:09:00 +02:00
Andras Bacsai
d3d08168de Merge pull request #2408 from buttercubz/es-translation
Add spanish language support
2024-06-19 16:08:01 +02:00
Andras Bacsai
919f56a292 Merge branch 'next' into es-translation 2024-06-19 16:07:06 +02:00
Kenneth Thomsen
b5be17c2d2 Fixed OAuth signin bug, ignoring the 'Allow Registration'-setting and registers a new user, even when the setting is disabled 2024-06-19 13:36:00 +02:00
Andras Bacsai
5221aa0ab7 chore: Update sentinel version to 0.0.9 2024-06-19 13:29:01 +02:00
Andras Bacsai
49ad8b7cc1 loadign charts 2024-06-19 10:37:01 +02:00
Andras Bacsai
fa99cbce4a do not load charts on mount 2024-06-19 10:33:34 +02:00
Andras Bacsai
07e55b2636 chore: Update chart styling and loading text 2024-06-19 09:42:44 +02:00
Andras Bacsai
d8984c42b5 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-19 09:30:58 +02:00
Andras Bacsai
36f251e710 fix: charts 2024-06-19 09:30:56 +02:00
samirimtiaz1996
f3beacdc3f Fix styling 2024-06-19 07:07:49 +00:00
samirimtiaz1996
e023be1f25 Update api.php 2024-06-19 13:07:13 +06:00
andrasbacsai
d1a5f97f59 Fix styling 2024-06-19 06:59:46 +00:00
Andras Bacsai
a43de75b42 fix: metrics parsing 2024-06-19 08:58:57 +02:00
samirimtiaz1996
5530f7263f Update Domains.php 2024-06-19 01:35:33 +06:00
samirimtiaz1996
d688244664 add endpoints for filtering applications by domain and managing container labels
- Add /api/v1/domains?uuid={application_uuid} endpoint (GET) to filter applications by domains for a given project UUID
- Add /api/v1/domains endpoint (PUT) to update domains and regenerate container labels
- Add /api/v1/domains endpoint (DELETE) to delete domains and regenerate container labels
2024-06-19 00:59:39 +06:00
Andras Bacsai
c8155c8a32 chore: Update sentinel version to 0.0.8 2024-06-18 16:52:05 +02:00
andrasbacsai
ce15f8f1dd Fix styling 2024-06-18 14:43:18 +00:00
Andras Bacsai
23ed697b98 feat: sentinel + charts 2024-06-18 16:42:42 +02:00
Victor Lap
55854653b0 Allow changing git repository 2024-06-18 16:36:46 +02:00
Andras Bacsai
83983bbb32 fix: remove sentinel variable
fix: metrics are disabled by default
2024-06-18 13:01:23 +02:00
Andras Bacsai
768c917a0e chore: Update service template URL in constants.php 2024-06-18 12:55:37 +02:00
dependabot[bot]
039df94b86 chore(deps): bump braces from 3.0.2 to 3.0.3
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 10:53:27 +00:00
Andras Bacsai
f46cb7a670 chore: Update tailwindcss and vue versions in package.json 2024-06-18 12:52:17 +02:00
Andras Bacsai
9d05276f94 remove: unnecessary notification 2024-06-18 12:47:55 +02:00
andrasbacsai
dc4916dc19 Fix styling 2024-06-17 12:22:17 +00:00
Andras Bacsai
1d0a1ab16a feat: charts 2024-06-17 14:21:27 +02:00
Andras Bacsai
1ae6106782 refactor: Update README.md with new logos and fix styling 2024-06-17 10:20:02 +02:00
Nicolas Bondoux
2f87deb10b Update reactive-resume.yaml 2024-06-16 21:54:53 +02:00
Nicolas Bondoux
65253ca54e Update reactive-resume.yaml 2024-06-16 21:51:00 +02:00
Alexzvn
af38d0cc07 fix: application custom labels reset after saving 2024-06-15 00:01:58 +00:00
Andras Bacsai
5ec2cbdf19 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-14 14:48:14 +02:00
Andras Bacsai
f6f44d8e8f fix: show commit message on webhooks + prs 2024-06-14 14:48:12 +02:00
andrasbacsai
2b6fc16637 Fix styling 2024-06-14 12:24:28 +00:00
Andras Bacsai
e0a2e3bd0c Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-14 14:23:42 +02:00
Andras Bacsai
1ecd0307ed feat: COOLIFY_CONTAINER_NAME predefined variable 2024-06-14 14:23:40 +02:00
andrasbacsai
f10f3456d7 Fix styling 2024-06-14 12:10:40 +00:00
Andras Bacsai
b17be37aee fix: db proxy status shown better in the UI 2024-06-14 14:09:56 +02:00
Muhammed Mustafa Akşam
ddbef494e3 Merge branch 'next' into main 2024-06-14 12:48:18 +03:00
Andras Bacsai
49d91c498e refactor: Update image sizes and add new logos to README.md 2024-06-14 09:50:16 +02:00
Leonardo Cabeza
7cc4a21383 fix: image logo 2024-06-13 20:46:13 -05:00
Leonardo Cabeza
af464c2af7 add: glances service 2024-06-13 20:39:37 -05:00
Muhammed Mustafa Akşam
ef1d06b8dc Merge branch 'next' into main 2024-06-13 20:57:33 +03:00
Andras Bacsai
f1562ccfd5 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-13 14:48:26 +02:00
Andras Bacsai
bfe2fb6da8 refactor: Update Docker build commands for better performance and flexibility 2024-06-13 14:48:23 +02:00
Muhammed Mustafa Akşam
6f23f6352d Merge branch 'next' into main 2024-06-13 15:18:17 +03:00
Levi
a47816f45d Update lang/de.json
Co-authored-by: Marco <59606979+marcomaiermm@users.noreply.github.com>
2024-06-13 13:56:27 +02:00
Levi
30ac392af4 Update lang/de.json
Co-authored-by: Marco <59606979+marcomaiermm@users.noreply.github.com>
2024-06-13 13:56:19 +02:00
Andras Bacsai
e4ee149085 refactor: Remove debug code for saving environment variables 2024-06-13 13:37:19 +02:00
andrasbacsai
a521d8549a Fix styling 2024-06-13 11:15:09 +00:00
Andras Bacsai
566faba6e3 fix: handle laravel deployment better 2024-06-13 13:14:24 +02:00
Andras Bacsai
e4e9de0a53 refactor: Update text color for stderr output in deployment show view 2024-06-13 12:51:55 +02:00
Andras Bacsai
07ae971ae1 feat: Add Tigris logo to other/logos directory 2024-06-13 12:29:57 +02:00
Andras Bacsai
4f5102b2dc Merge pull request #2494 from rishikesh2003/fix/add-zorin-os-type
fixadd zorin as a os type
2024-06-13 12:28:19 +02:00
Andras Bacsai
04d1915121 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-13 12:25:13 +02:00
Andras Bacsai
c35f6e926d refactor: update text color for stderr output in deployment show view 2024-06-13 12:25:10 +02:00
andrasbacsai
dffcee6cf1 Fix styling 2024-06-13 10:03:36 +00:00
Andras Bacsai
7485c1240b feat: nixpacks now could reach local dbs internally 2024-06-13 12:02:52 +02:00
Andras Bacsai
95d3ebdc2d fix: in services should edit compose file for volumes and envs 2024-06-13 10:18:35 +02:00
Julian
6bb565ee67 Create it.json
chore: add Italian translations
2024-06-13 08:30:41 +01:00
Rishikesh S
19b38074a5 add zorin as a os type 2024-06-12 19:04:00 +05:30
Levi
25649f578d Create de.json 2024-06-12 13:33:06 +02:00
Andras Bacsai
7a63a17b66 feat: add supaguide logo to donations section 2024-06-12 12:30:59 +02:00
Andras Bacsai
3424cb1f29 Merge pull request #2474 from arthurauffray/patch-1
Simple README changes
2024-06-12 12:29:56 +02:00
andrasbacsai
5c8277ea1d Fix styling 2024-06-12 10:28:52 +00:00
Andras Bacsai
9e3ffea22c Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-12 12:28:11 +02:00
Andras Bacsai
9592076d45 fix: do no truncate repositories wtih domain (git) in it 2024-06-12 12:28:09 +02:00
andrasbacsai
2e01665340 Fix styling 2024-06-12 10:21:47 +00:00
Andras Bacsai
bba0ef522c Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-12 12:21:01 +02:00
Andras Bacsai
019cdd2b3a fix: compose generator 2024-06-12 12:20:58 +02:00
andrasbacsai
ce24352974 Fix styling 2024-06-12 10:05:54 +00:00
Andras Bacsai
407b8de2b1 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-12 12:05:11 +02:00
Andras Bacsai
f332a73122 feat: cancelling a deployment will check if new could be started. 2024-06-12 12:05:08 +02:00
andrasbacsai
2335abac91 Fix styling 2024-06-12 09:35:55 +00:00
Andras Bacsai
5cf6804615 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-12 11:35:10 +02:00
Andras Bacsai
58b04b5fc8 fix: bitbucket link 2024-06-12 11:35:07 +02:00
andrasbacsai
c58f468dc9 Fix styling 2024-06-12 09:31:14 +00:00
Andras Bacsai
e922bc207a chore: Update dependencies and remove unused code 2024-06-12 11:30:25 +02:00
arthur
784cfb8fba Updates to README: grammar, sentence structure, URL formats
- Correct grammar mistakes
- Updated URL markdown formatting to be uniform throughout (hidden protocol before URL on coolify.io domain)
- Converted plain text links to markdown URLs
2024-06-12 21:04:12 +12:00
Andras Bacsai
b53bb44e42 chore: switch to database sessions from redis 2024-06-12 09:56:13 +02:00
Emircan ERKUL
e7e85456ea Drupal svg logo 2024-06-12 06:54:59 +03:00
Emircan ERKUL
440baf6009 Create drupal-with-postgresql.yaml 2024-06-12 06:50:50 +03:00
Muhammed Mustafa Akşam
1876e80094 chore: add Turkish translations 2024-06-11 22:46:02 +03:00
Andras Bacsai
d20b3a5b8b Merge pull request #2458 from scflode/scflode-typos
Fix some double negation typos
2024-06-11 19:11:13 +02:00
Andras Bacsai
6d9454b351 chore: Update version numbers to 4.0.0-beta.298 2024-06-11 19:05:37 +02:00
Flo Schuessel
a138bb61bc Update logs.blade.php 2024-06-11 17:35:26 +02:00
lopesboa
85d313a791 chore: add portuguese traslation 2024-06-11 12:21:03 -03:00
Andras Bacsai
de7380fb0c Merge pull request #2423 from coollabsio/next
v4.0.0-beta.297
2024-06-11 13:28:49 +02:00
Andras Bacsai
35bf4a111c Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-11 13:17:17 +02:00
Andras Bacsai
d5be00d29d chore: Add ApplicationDeploymentJob and pint.json 2024-06-11 13:17:15 +02:00
andrasbacsai
e63710dfb4 Fix styling 2024-06-11 11:13:36 +00:00
Andras Bacsai
8b95b3c1bf fix: just restart 2024-06-11 13:12:53 +02:00
Andras Bacsai
b8ec3f5704 Merge pull request #2412 from Dogacel/patch-1
fix: show proper error message on installation if OS is not supported for "archarm" / Orange Pi OS
2024-06-11 12:38:34 +02:00
andrasbacsai
5dc79159b4 Fix styling 2024-06-11 10:38:24 +00:00
Andras Bacsai
5368c49e68 Merge branch 'next' into patch-1 2024-06-11 12:38:22 +02:00
Andras Bacsai
8731d0416b chore: Add isAnyDeploymentInprogress function to check if any deployments are in progress 2024-06-11 12:37:39 +02:00
Andras Bacsai
d05151466c Merge pull request #2415 from tuarrep/patch-2
Fix Application `isDeploymentInprogress` method
2024-06-11 12:25:21 +02:00
Andras Bacsai
367a373904 feat: Update homepage.yaml with environment variables and volumes 2024-06-11 12:19:30 +02:00
Andras Bacsai
533587ce4e Merge pull request #2416 from cksidharthan/feat/add-homepage
Feat/add homepage
2024-06-11 12:14:33 +02:00
Andras Bacsai
db0ddee9f4 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-11 11:59:10 +02:00
Andras Bacsai
d5bad67e17 feat: Add logos for new sponsors
Added logos for new sponsors: Hetzner, Logto, BC Direct, QuantCDN, and Arcjet.
2024-06-11 11:59:08 +02:00
Andras Bacsai
9e4c8c52d2 Merge pull request #2434 from dotfrag/fix/install-script-arch
fix: install.sh do not reinstall packages on arch
2024-06-11 11:39:50 +02:00
Andras Bacsai
8ca84ee6f4 Merge pull request #2440 from holasoyender/next
fix: Setup script doesnt link to the correct source code file
2024-06-11 11:38:38 +02:00
Andras Bacsai
5ebbd769e8 Merge pull request #2438 from Thijmen/php-codestyle
Add PHP Codestyles
2024-06-11 11:37:17 +02:00
andrasbacsai
47051127af Fix styling 2024-06-11 09:36:42 +00:00
Andras Bacsai
7ad2e1ca05 Merge branch 'next' into php-codestyle 2024-06-11 11:36:07 +02:00
Andras Bacsai
7345ccbbee feat: easily redirect between www-and-non-www domains 2024-06-11 11:32:08 +02:00
Flow
e282686f97 Add french translation 2024-06-11 01:35:26 +02:00
holasoyender
5524f80ea3 fix: Setup script doesnt link to the correct source code file 2024-06-10 23:36:57 +02:00
Thijmen
d86274cc37 Fix styling 2024-06-10 20:43:34 +00:00
Thijmen Stavenuiter
41fb6a1fc9 Set on push 2024-06-10 22:42:56 +02:00
Thijmen Stavenuiter
8e9842df14 Add workflow (thanks to https://github.com/spatie/package-skeleton-laravel/blob/main/.github/workflows/fix-php-code-style-issues.yml) 2024-06-10 22:38:39 +02:00
Ling
f4904047b5 chore: add Vietnamese translate 2024-06-11 03:36:11 +07:00
Thijmen Stavenuiter
4083f4db9f Add laravel/pint as dev dependency 2024-06-10 22:31:56 +02:00
Andras Bacsai
a125c0032b chore: Remove commented out code for docker container removal 2024-06-10 21:57:44 +02:00
Andras Bacsai
2e4fd1530c fix: multiline build args 2024-06-10 21:57:13 +02:00
dotfrag
be08a2650c fix: install.sh do not reinstall packages on arch 2024-06-10 22:17:31 +03:00
Andras Bacsai
e08dc777df show errors in install script 2024-06-10 13:54:19 +02:00
Andras Bacsai
239f7fb35d chore: Update logo file path in logto.yaml 2024-06-10 13:03:09 +02:00
Andras Bacsai
1cb8354aca Merge pull request #2400 from Idorobots/fix-firefly-mariadb-healthcheck
Fix firefly mariadb healthcheck preventing app startup.
2024-06-10 13:02:53 +02:00
Andras Bacsai
2465b4ffd7 chore: Update logo file path in logto.yaml 2024-06-10 13:01:55 +02:00
Andras Bacsai
4f73ea0879 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-10 13:01:41 +02:00
Andras Bacsai
f4eb17f616 Merge pull request #2394 from Idorobots/fix-install-on-manjaro-arm
Adds support for installing on ARM-based Manjaro distributions.
2024-06-10 13:01:43 +02:00
Andras Bacsai
b5ce738ba2 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-10 12:58:29 +02:00
Andras Bacsai
3155d4afdb Merge pull request #2386 from Yarmeli/fix-logto-healthcheck
Fix postgres health check throwing fatal errors
2024-06-10 12:58:22 +02:00
Andras Bacsai
f444696b84 chore: Update page title in resource index view 2024-06-10 12:57:03 +02:00
Andras Bacsai
bdde9b063c Merge pull request #2381 from webdevcody/persist-name-on-failed-submit-2
Persist Registration Name & Email on password validation errors
2024-06-10 12:52:00 +02:00
Andras Bacsai
ef98bd107f Merge branch 'next' into persist-name-on-failed-submit-2 2024-06-10 12:51:14 +02:00
Andras Bacsai
dfb259d822 Merge pull request #2380 from OG-Jons/refactor/remove-duplications-from-resource-overview
refactor: replaces duplications in code with a single function
2024-06-10 12:50:05 +02:00
Andras Bacsai
13c34fd26d Merge branch 'next' into refactor/remove-duplications-from-resource-overview 2024-06-10 12:48:33 +02:00
systematicRealm
665cd454ef 🌐 ADD: Arabic Language Support 2024-06-10 13:23:18 +03:00
Andras Bacsai
b3bde5782a Update version to 4.0.0-beta.297 2024-06-10 12:10:28 +02:00
Andras Bacsai
cc8f09f05e Merge pull request #2422 from coollabsio/next
v4.0.0-beta.296
2024-06-10 12:09:53 +02:00
Andras Bacsai
2beda08717 Refactor CheckLogDrainContainerJob handle method 2024-06-10 11:56:42 +02:00
Andras Bacsai
b455d153ae Update version to 4.0.0-beta.296 2024-06-10 11:56:39 +02:00
Andras Bacsai
5fddf01820 Merge pull request #2355 from coollabsio/next
v4.0.0-beta.295
2024-06-10 11:04:39 +02:00
Andras Bacsai
c80434141d fix: gitlab merge request should close PR 2024-06-10 10:42:52 +02:00
Sidharthan
82e7348cf2 feat: add homepage template 2024-06-09 21:39:36 +00:00
Andras Bacsai
d1128c7a1e fix: multiline variable should be literal + should be multiline in bash with \ 2024-06-09 22:37:23 +02:00
Nicolas Perraut
5674879e23 Fix Application isDeploymentInprogress method 2024-06-09 22:12:13 +02:00
Andras Bacsai
aae81313a6 Refactor TelegramChannel to handle additional notification types 2024-06-09 21:44:13 +02:00
Andras Bacsai
4667f96b40 feat: db proxy logs 2024-06-09 21:33:17 +02:00
Doğaç Eldenk
d6c2c7ef02 Merge branch 'next' into patch-1 2024-06-09 13:21:28 -05:00
Doğaç Eldenk
2af1ccd8b2 fix error message not appearing in Orange OS 2024-06-09 13:19:59 -05:00
Ikko Eltociear Ashimine
55e2e29696 Add Japanese language support 2024-06-10 02:50:10 +09:00
buttercubz
b60f8df17a feat: spanish translation 2024-06-09 12:14:55 -04:00
Andras Bacsai
28c320ae97 chore: Update install.sh script to version 1.3.2 and handle Linux Mint as Ubuntu 2024-06-09 15:52:23 +02:00
Kajetan Rzepecki
00ed54799f Fix Firefly III MariaDB health check. 2024-06-09 13:14:07 +02:00
Kajetan Rzepecki
fae77231a5 Allow installing on ARM-based Manjaro distribution
Manjaro ARM lists `manjaro-arm` as the OS type, so the install.sh script would fail early without any message indicating a problem.
2024-06-08 18:23:13 +02:00
Yarmeli
2083941361 Fix postgres health check throwing fatal errors 2024-06-08 15:31:59 +01:00
Cody Seibert
5ec517e3bc more clean up 2024-06-07 22:05:42 -04:00
Cody Seibert
780a3b1827 simplify registration form 2024-06-07 22:02:01 -04:00
Cody Seibert
61aa086cb5 also adding id to fix field level validations 2024-06-07 21:38:49 -04:00
Cody Seibert
0a08f9d3f8 adding logic to show the previous submitted name and email when registration fails validation 2024-06-07 21:19:09 -04:00
OG-Jons
c3de13e0d8 refactor: replaces duplications in code with a single function 2024-06-08 00:00:33 +02:00
Andras Bacsai
45017efe00 rename migration 2024-06-07 18:16:42 +02:00
Andras Bacsai
a20290cac8 wip: new services based git apps 2024-06-07 17:21:46 +02:00
Andras Bacsai
31e02a154c refactor: Improve handling of Docker volumes in parseDockerComposeFile function 2024-06-07 17:06:27 +02:00
Andras Bacsai
023ee5db99 fix: Set default name for Docker volumes if it is null 2024-06-07 16:55:08 +02:00
Andras Bacsai
05d2e15ab5 update service-templates 2024-06-07 12:28:42 +02:00
Andras Bacsai
7d6590c60a Merge pull request #2347 from tikotzky/patch-1
Add GLITCHTIP_DOMAIN to glitchtip worker service
2024-06-07 12:28:21 +02:00
Andras Bacsai
3152ce183b Merge pull request #2374 from coollabsio/revert-2365-fix-navbar-scroll
Revert "Enhancement: Preserve scroll position in navbar to improve UX"
2024-06-07 12:25:37 +02:00
Andras Bacsai
d9f1a7c4d0 Revert "Enhancement: Preserve scroll position in navbar to improve UX" 2024-06-07 12:25:05 +02:00
Andras Bacsai
952aed3c49 Merge pull request #2365 from avila-gabriel/fix-navbar-scroll
Enhancement: Preserve scroll position in navbar to improve UX
2024-06-07 11:05:55 +02:00
Andras Bacsai
ab3c433450 Merge pull request #2352 from Geczy/patch-2
fix: supabase service, newest versions
2024-06-07 11:04:50 +02:00
Andras Bacsai
2b5e4a34d4 Merge pull request #2364 from TheLazyLemur/main
Add support  to install.sh for PopOS
2024-06-07 11:04:02 +02:00
Andras Bacsai
35cea852ca feat: add titles 2024-06-07 11:01:10 +02:00
Andras Bacsai
88581c8983 Update BUG_REPORT.yml 2024-06-07 10:28:43 +02:00
Andras Bacsai
a7a9aab189 feat: Add bounty program link to bug report template 2024-06-07 10:28:01 +02:00
Andras Bacsai
370c9b63cf fix: post deployment command could fail, but won't make the deployment fail anymore
feat: better error for post deployment command
2024-06-06 15:13:21 +02:00
Andras Bacsai
7cb08849de refactor: Improve pre and post deployment command inputs 2024-06-06 15:11:17 +02:00
Andras Bacsai
7f052163e3 fix: comment id should be string
fix: do not wait for GH response, stop preview before
2024-06-06 12:50:38 +02:00
Andras Bacsai
277d939033 services: rocketchat 2024-06-06 11:39:23 +02:00
Andras Bacsai
26fbdcfab0 Merge pull request #2344 from LEstradioto/feat--add-rocketchat-template
feat: add rocketchat template
2024-06-06 11:37:50 +02:00
Andras Bacsai
6d63ba9d4d chore: Update supported OS list with almalinux 2024-06-06 11:36:51 +02:00
Andras Bacsai
8963f4fd62 refactor: Initialize null properties in Github Change component 2024-06-06 11:10:16 +02:00
Andras Bacsai
463021a9f3 refactor: Remove unused variables and improve code readability 2024-06-06 11:09:27 +02:00
Andras Bacsai
f71a8e9fef fix: sort backup executions 2024-06-06 10:46:19 +02:00
Dan Rousseau
2dd5be1b4e chore: Update install.sh to support PopOS 2024-06-06 09:48:02 +02:00
Gabriel Avila
608838045f Preserve scroll position in navbar after livewire update 2024-06-06 04:14:53 -03:00
Andras Bacsai
899d506faa disable internal notifications on the cloud 2024-06-05 15:34:25 +02:00
Andras Bacsai
21b3e3ea05 refactor: Update deployment previews heading to "Deployments" 2024-06-05 15:32:56 +02:00
Andras Bacsai
a68951541c fix: handle previously defined compose previews 2024-06-05 15:29:00 +02:00
Andras Bacsai
7fd0deedb1 feat: able to add several domains to compose based previews 2024-06-05 15:14:44 +02:00
Andras Bacsai
e9e12ad843 feat: able to change database passwords on the UI. It won't sync to the database. 2024-06-05 11:44:25 +02:00
Andras Bacsai
4fd3185d12 fix: backup executions view 2024-06-05 11:44:10 +02:00
Andras Bacsai
f5ccebfd41 early return 2024-06-05 11:21:02 +02:00
Andras Bacsai
294721eef9 fix: autoupdate process 2024-06-04 21:57:00 +02:00
Andras Bacsai
8af509992d fix: custom docker compose commands, add project dir if needed 2024-06-04 21:26:49 +02:00
Matt
11fccb8e89 fix: supabase service, newest versions 2024-06-04 07:58:40 -05:00
Andras Bacsai
1e126dd2c3 refactor: Update save_environment_variables method to use application's environment_variables instead of environment_variables_preview 2024-06-04 12:59:45 +02:00
Andras Bacsai
cfe2f889a4 refactor: Append utm_source parameter to documentation URL 2024-06-04 12:59:35 +02:00
Andras Bacsai
1bd76b0e07 chore: Update version numbers to 4.0.0-beta.295 2024-06-04 12:23:43 +02:00
Andras Bacsai
6d8c935cc7 Merge pull request #2330 from coollabsio/next
v4.0.0-beta.294
2024-06-04 11:30:11 +02:00
Andras Bacsai
7144cee0f6 chore: Update Dockerfile with latest versions of Docker, Docker Compose, Docker Buildx, Pack, and Nixpacks 2024-06-04 11:27:50 +02:00
Andras Bacsai
f75a8d56f2 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-06-04 11:25:55 +02:00
Andras Bacsai
2f321bcfd9 refactor: Update save_environment_variables method to use application's environment_variables instead of environment_variables_preview 2024-06-04 11:25:53 +02:00
Andras Bacsai
a157f4f17b refactor: Remove commented out code for clearing Ray logs 2024-06-04 11:25:46 +02:00
Andras Bacsai
7723c623d5 fix: check env in args for compose based apps 2024-06-04 11:25:40 +02:00
Luan Estradioto
bc3bb78916 add rocketchat template 2024-06-03 18:12:47 -03:00
Mordy Tikotzky
0ebf5e49fb Add GLITCHTIP_DOMAIN to glitchtip worker service
Without it set on the worker emails send via the worker point to localhost instead of the correct domain.
2024-06-03 15:01:52 -04:00
Andras Bacsai
c340921fbb refactor 2024-06-03 19:12:49 +02:00
Andras Bacsai
30e26b101c Merge pull request #2343 from hamedyosefian/main
Create fa.json
2024-06-03 18:47:17 +02:00
hamedyosefian
1b17cab663 Create fa.json 2024-06-02 20:55:06 +03:30
Andras Bacsai
ab039adf97 remove new deploymentjob 2024-05-31 14:07:09 +02:00
Andras Bacsai
62fe10df31 fix: only ignore volumes with driver_opts 2024-05-31 14:04:17 +02:00
Andras Bacsai
2004a751dd Merge pull request #2199 from ivangsm/sonarqube-template
update sonarqube template
2024-05-31 13:02:32 +02:00
Andras Bacsai
ace127acf4 refactor: Improve display of deployment time in index.blade.php 2024-05-31 13:01:44 +02:00
Andras Bacsai
82c5497a06 Merge pull request #2278 from EstebX/wrong-time-during-a-failed-deployment
fix: wrong time during a failed deployment
2024-05-31 12:57:37 +02:00
Andras Bacsai
dbb7989027 Merge branch 'next' into wrong-time-during-a-failed-deployment 2024-05-31 12:56:20 +02:00
Andras Bacsai
103f677a93 Update StackForm to sort fields by name 2024-05-31 12:55:14 +02:00
Andras Bacsai
cb6bf78595 feat: Add port configuration for Vaultwarden service 2024-05-31 12:54:16 +02:00
Andras Bacsai
62334ddef7 Merge pull request #2293 from iamEvanYT/vaultwarden-fix
Fix Vaultwarden + Add Configs
2024-05-31 12:44:16 +02:00
Andras Bacsai
778f67f2e4 refactor: Update slogan in shlink.yaml 2024-05-31 12:28:56 +02:00
Andras Bacsai
48737f8e60 refactor: Update Docker Compose parsing for services 2024-05-31 12:28:49 +02:00
Andras Bacsai
94de62e503 refactor: Improve Docker Compose parsing for services 2024-05-31 12:09:11 +02:00
Andras Bacsai
0445052898 refactor: Add log entry when starting new application deployment 2024-05-31 12:07:42 +02:00
Andras Bacsai
ccde90ea91 refactor: Update form layout in invite-link.blade.php 2024-05-31 11:20:36 +02:00
Andras Bacsai
ed94355019 default dark mode 2024-05-31 11:20:31 +02:00
Andras Bacsai
02fcd1b5fc refactor: Remove unnecessary form class in profile index.blade.php 2024-05-31 11:14:07 +02:00
Andras Bacsai
ca934e7cdf fix: allow invitations via email 2024-05-31 11:03:43 +02:00
Andras Bacsai
0ddd5f0a79 refactor: Remove unnecessary port appending in updateCompose function 2024-05-31 10:55:08 +02:00
Andras Bacsai
099d6801b7 fix: logto service 2024-05-31 10:55:02 +02:00
Andras Bacsai
62293926ec Merge pull request #2327 from iamEvanYT/service-fqdn-fix
fix: SERVICE_FQDN appending source port
2024-05-31 10:46:37 +02:00
Andras Bacsai
c96daad12c refactor: Improve Docker Compose parsing for services 2024-05-31 10:34:07 +02:00
Andras Bacsai
9cc3be152f fix: compose issues 2024-05-31 10:21:38 +02:00
Andras Bacsai
f841c0d4ba refactor: Update storage form inputs in show.blade.php 2024-05-31 09:59:39 +02:00
Andras Bacsai
3cd1d8135e chore: Update Dockerfile to install vim 2024-05-31 09:41:40 +02:00
Andras Bacsai
86474d9f90 fix: parse docker version better 2024-05-31 09:41:34 +02:00
Andras Bacsai
9bf87a3033 chore: Add Lightspeed.run as a sponsor 2024-05-31 08:45:17 +02:00
iamEvan
71e32520cf fix: SERVICE_FQDN has source port in it 2024-05-30 20:05:44 +01:00
Andras Bacsai
e3e938c8eb refactor: Remove unnecessary logging statements from UpdateCoolify 2024-05-30 20:32:07 +02:00
Andras Bacsai
03aa440424 chore: Update version numbers to 4.0.0-beta.294 2024-05-30 20:31:47 +02:00
Andras Bacsai
85ca38be90 Merge pull request #2325 from coollabsio/next
v4.0.0-beta.293
2024-05-30 20:08:37 +02:00
Andras Bacsai
7c9790dff0 chore: Improve upgrade.blade.php with clearer instructions and formatting 2024-05-30 20:07:42 +02:00
Andras Bacsai
40a71a11cb chore: Add upgrade guide link to upgrade.blade.php 2024-05-30 20:07:06 +02:00
Andras Bacsai
46a500f5e5 async update process 2024-05-30 20:02:11 +02:00
Andras Bacsai
2d1d03bf8e chore: Update version numbers to 4.0.0-beta.293 2024-05-30 20:02:03 +02:00
Andras Bacsai
1092d00c7a Merge pull request #2324 from coollabsio/next
v4.0.0-beta.292
2024-05-30 19:46:11 +02:00
Andras Bacsai
cd58e0d01e fixes 2024-05-30 19:45:36 +02:00
Andras Bacsai
30a9783348 feat: Add manual update option to UpdateCoolify handle method 2024-05-30 19:38:33 +02:00
Andras Bacsai
c839cf50af fix: spamming :D 2024-05-30 19:35:44 +02:00
Andras Bacsai
f8d607b06f chore: Update version numbers to 4.0.0-beta.292 2024-05-30 19:35:38 +02:00
Andras Bacsai
cfadeb07b1 Merge pull request #2317 from coollabsio/next
v4.0.0-beta.291
2024-05-30 13:06:30 +02:00
Andras Bacsai
072850be0b Refactor ApplicationDeploymentJob.php to remove unnecessary code and improve code structure 2024-05-30 13:02:01 +02:00
Andras Bacsai
71d120bc4e fix: fine-tune cdn pulls 2024-05-30 12:56:29 +02:00
Andras Bacsai
68d3cea528 fix: multiple server deployments
feat: custom preview deployment fqdn
ui: improvements here and there
2024-05-30 12:28:29 +02:00
Andras Bacsai
07e801f44d refactor: Remove unnecessary debug statements and improve code structure in RunRemoteProcess.php and ApplicationDeploymentJob.php 2024-05-30 10:14:48 +02:00
Andras Bacsai
ee5c694aa2 fix: compose previews does have env variables 2024-05-30 10:14:43 +02:00
Andras Bacsai
efa5eb1770 chore: Update version numbers to 4.0.0-beta.291 2024-05-30 10:14:29 +02:00
Andras Bacsai
42e37246f3 Merge pull request #2311 from coollabsio/next
v4.0.0-beta.290
2024-05-29 19:18:39 +02:00
Andras Bacsai
dabb08ff4a refactor: Remove unnecessary debug statement in ApplicationDeploymentJob.php 2024-05-29 18:51:38 +02:00
Andras Bacsai
66b0e04cc6 fix: able to redeploy dockerfile based apps without cache 2024-05-29 18:22:19 +02:00
Andras Bacsai
74824b7737 fix: compose load with non-root user 2024-05-29 18:01:10 +02:00
Andras Bacsai
df2bcdb854 refactor new deployment job 2024-05-29 15:28:03 +02:00
Andras Bacsai
a8e9ee2e95 Refactor ApplicationDeploymentJob.php to remove logo and improve code structure 2024-05-29 15:18:02 +02:00
Andras Bacsai
5093697b27 refactor: Improve code structure in ApplicationDeploymentJob.php 2024-05-29 15:17:39 +02:00
Andras Bacsai
5bacd63805 chore: Update version numbers to 4.0.0-beta.290 2024-05-29 15:16:24 +02:00
Andras Bacsai
1d5932e63f revert 2024-05-29 15:15:03 +02:00
Andras Bacsai
022762c0c9 refactor: applicationdeploymentjob 2024-05-29 15:11:17 +02:00
Esteban Ecallard
e16bd194a3 fix: removal of the failed deployment condition, addition of since started instead of finished time 2024-05-29 12:35:32 +00:00
Esteban Ecallard
a3765c19e3 feat: if the time seems too long it remains at 0s 2024-05-29 12:32:47 +00:00
Andras Bacsai
a845d92d88 Merge pull request #2305 from coollabsio/next
v4.0.0-beta.289
2024-05-29 12:11:10 +02:00
Andras Bacsai
668c9e5a64 refactor: Update destination.blade.php to add group class for better styling 2024-05-29 11:17:55 +02:00
Andras Bacsai
aaa06f4120 fix: build server dirs not created on main server 2024-05-29 11:17:16 +02:00
Andras Bacsai
e26f4ce707 chore: Update deployment index.blade.php script for better performance 2024-05-29 11:13:22 +02:00
Andras Bacsai
a8c3a2d991 Refactor git commands in ApplicationDeploymentJob.php 2024-05-29 10:43:57 +02:00
Andras Bacsai
6d52cef73a chore: Update modal styles for better user experience 2024-05-29 10:43:49 +02:00
Andras Bacsai
edacfcdec7 Update status component links to open in a new tab 2024-05-29 10:02:01 +02:00
Andras Bacsai
683872ef4e test zoom 2024-05-29 10:00:15 +02:00
Andras Bacsai
7a299ba1f9 chore: Update laravel/socialite to version v5.14.0 and livewire/livewire to version 3.4.9 2024-05-29 09:48:49 +02:00
Andras Bacsai
f5eaedfc72 just to create a bug report for livewire 2024-05-29 09:09:22 +02:00
Andras Bacsai
11b6afbe09 chore: rename docker dirs 2024-05-29 08:44:57 +02:00
Andras Bacsai
cd7340915b feat: Add PHP memory limit environment variable to docker-compose.prod.yml 2024-05-28 20:22:18 +02:00
Andras Bacsai
b38bb3df5d chore: Remove unnecessary wire:navigate attribute in breadcrumbs.blade.php 2024-05-28 19:58:51 +02:00
Andras Bacsai
1f7725ada3 chore: Fix formatting issue in deployment index.blade.php file 2024-05-28 19:00:59 +02:00
Andras Bacsai
622095ebc4 fix: throw exception 2024-05-28 15:11:25 +02:00
Andras Bacsai
397b7fefe3 fix: test new upgrade process? 2024-05-28 15:05:18 +02:00
Andras Bacsai
10d38b709b fix: add missing team model 2024-05-28 14:49:03 +02:00
Andras Bacsai
98985690f0 fix: publish horizon 2024-05-28 14:44:09 +02:00
Andras Bacsai
f50c483c64 fix: sync upgrade process 2024-05-28 14:44:03 +02:00
Andras Bacsai
a15eca137d chore: update for version 289 2024-05-28 14:38:44 +02:00
Evan
ba4be02e75 Merge branch 'next' into vaultwarden-fix 2024-05-28 12:39:54 +01:00
iamEvan
d4f6a86a57 Remove SMTP Env Variables 2024-05-28 12:39:40 +01:00
Andras Bacsai
6a058372bb Merge pull request #2303 from coollabsio/next
v4.0.0-beta.288
2024-05-28 13:07:55 +02:00
Andras Bacsai
e6cce350bd fix: volume adding 2024-05-28 13:07:07 +02:00
iamEvan
7c0c1e6cf8 Add Real IP support for Reverse Proxies 2024-05-28 01:12:59 +01:00
iamEvan
39f787b7db fix: sort by defined order + fixed typo 2024-05-27 23:41:42 +01:00
iamEvan
424437446d Added Push Notification Variables 2024-05-27 23:40:35 +01:00
Andras Bacsai
60a1859d89 Update README.md 2024-05-27 15:33:16 +02:00
Andras Bacsai
ad5c1639e8 fix: do not allow service storage mount point modifications 2024-05-27 15:11:00 +02:00
Andras Bacsai
92828b22fa chore: Update Sentry release version to 4.0.0-beta.288 2024-05-27 15:10:41 +02:00
Andras Bacsai
e470096e4e Merge pull request #2297 from coollabsio/next
v4.0.0-beta.287
2024-05-27 14:26:45 +02:00
Andras Bacsai
3c41608ee9 turn off docker engien restart for now 2024-05-27 14:16:10 +02:00
Andras Bacsai
035e145cd1 feat: add more persistent storage types 2024-05-27 14:14:44 +02:00
Andras Bacsai
2f621279c2 chore: Add null checks for team in Stripe webhook 2024-05-27 14:14:31 +02:00
Andras Bacsai
c30185c6ae feat: Handle incomplete expired subscriptions in Stripe webhook 2024-05-27 12:03:48 +02:00
Evan
908c74eb27 Merge branch 'next' into vaultwarden-fix 2024-05-27 17:45:00 +08:00
Andras Bacsai
10c17fc9a9 chore: Add Thompson Edolo as a sponsor 2024-05-27 10:29:51 +02:00
Andras Bacsai
a6a0cb928a fix: force load services from cdn on reload list 2024-05-27 10:27:18 +02:00
Andras Bacsai
8bca988520 chore: Update Sentry release version to 4.0.0-beta.287 2024-05-27 10:27:04 +02:00
Andras Bacsai
0af0af8d8a Merge pull request #2266 from coollabsio/next
v4.0.0-beta.286
2024-05-27 10:17:11 +02:00
Evan
97da13c3c4 Merge branch 'coollabsio:main' into vaultwarden-fix 2024-05-27 16:04:02 +08:00
iamEvan
7134b46cdc Fix Vaultwarden + Add Configs 2024-05-27 08:51:32 +01:00
Andras Bacsai
aecdf7a3d3 revert composer lock 2024-05-27 09:29:17 +02:00
Andras Bacsai
37e37d1998 fix: sentry 2024-05-24 17:37:51 +02:00
Andras Bacsai
6103a8590d fix: sentry error 2024-05-24 17:29:38 +02:00
Andras Bacsai
ba62dadc00 fix: sentry 2024-05-24 17:28:05 +02:00
Andras Bacsai
26073b82fd fix: sentry 2024-05-24 17:26:05 +02:00
Andras Bacsai
9b73bca79d fix: sentry error + livewire downgrade 2024-05-24 17:20:20 +02:00
Andras Bacsai
0a0bb0ca13 fix: sentry 2024-05-24 17:06:26 +02:00
Andras Bacsai
652df47c5c fix: sentry issue 2024-05-24 17:05:18 +02:00
Andras Bacsai
9248be2177 refactor: Update docker network creation in ApplicationDeploymentJob 2024-05-24 14:44:02 +02:00
Andras Bacsai
b3800fc42e init policies 2024-05-24 14:15:16 +02:00
Andras Bacsai
15f304736f fix livewire bug 2024-05-24 13:55:04 +02:00
Andras Bacsai
21cdf59065 fix chatwoot 2024-05-24 13:54:57 +02:00
Andras Bacsai
e3693afb75 Merge pull request #2283 from odraude7/main
Add chatwoot template
2024-05-24 13:11:25 +02:00
Andras Bacsai
009a753585 package updates 2024-05-24 12:31:28 +02:00
Andras Bacsai
5c72541044 fix: improve build server functionalities 2024-05-24 12:01:04 +02:00
Andras Bacsai
a01e604443 feat: add container logs in case the container does not start healthy 2024-05-24 11:50:31 +02:00
Andras Bacsai
52b339d0b8 refactor: Add isBuildServer method to Server model 2024-05-24 11:50:16 +02:00
Andras Bacsai
579ed5b9c0 fix: build server should not have a proxy 2024-05-24 11:17:23 +02:00
Andras Bacsai
63e64b8bcc refactor: Remove redundant heading in backup settings page 2024-05-24 09:35:36 +02:00
Andras Bacsai
64f8583975 fix: root team able to download backups 2024-05-24 09:33:09 +02:00
Eduardo Neves
75e8064044 Add chatwoot template 2024-05-23 17:25:55 -03:00
Andras Bacsai
6f3e38e392 refactor: Add Huly services to compose file 2024-05-23 15:21:29 +02:00
Andras Bacsai
cb4d244f19 refactor: Update edit-domain form in project service view 2024-05-23 15:21:24 +02:00
Esteban Ecallard
de3b8a10a0 Update index.blade.php 2024-05-23 15:20:28 +02:00
Esteban Ecallard
8feece702c fix: wrong time during a failed deployment 2024-05-23 15:15:18 +02:00
Andras Bacsai
900308afec fix: better way to add curl/wget to nixpacks 2024-05-23 14:28:11 +02:00
Andras Bacsai
b47925a319 fix: bitbucket commits link 2024-05-23 14:28:03 +02:00
Andras Bacsai
853325d9fd fix: pre and post deployment commands 2024-05-23 13:30:37 +02:00
Andras Bacsai
494be37715 remove comment 2024-05-23 13:08:57 +02:00
Andras Bacsai
d35cb5d072 fix: add wget to nixpacks builds 2024-05-23 13:08:46 +02:00
Andras Bacsai
df9ec711c5 fix: JSON_UNESCAPED_UNICODE 2024-05-23 11:58:54 +02:00
Andras Bacsai
d9d0837024 fix: disable unreachable/revived notifications for now 2024-05-23 11:32:45 +02:00
Andras Bacsai
086138fbd9 fix: disable containerStopped job for now 2024-05-23 11:31:52 +02:00
Andras Bacsai
bdbd4b57b7 refactor 2024-05-23 11:30:39 +02:00
Andras Bacsai
5475448af5 feat: gitea manual webhooks 2024-05-23 11:30:18 +02:00
Andras Bacsai
c3da3f11d9 fix: Update error message for invalid token to mention invalid signature 2024-05-23 11:30:08 +02:00
Andras Bacsai
244c81587c fix: templates 2024-05-23 11:13:06 +02:00
Andras Bacsai
a3877a2cb1 feat: exclude_from_hc magic 2024-05-23 11:12:53 +02:00
Andras Bacsai
206df82d63 fix: Do not pull templates in dev 2024-05-23 11:12:37 +02:00
Andras Bacsai
54e1e7684d chore: Remove unnecessary content from Docker Compose file 2024-05-23 08:50:15 +02:00
Andras Bacsai
27eef36677 Merge pull request #2216 from theh2so4/main
Templates
2024-05-23 08:32:27 +02:00
Andras Bacsai
d91953e70b add service-templates 2024-05-23 08:31:55 +02:00
Andras Bacsai
bbc5a49054 Delete templates/service-templates.json 2024-05-23 08:28:48 +02:00
Andras Bacsai
f89fe9fbab Update templates/compose/glance.yaml
Co-authored-by: Jonas <mrlordalfred@gmail.com>
2024-05-23 08:28:28 +02:00
Andras Bacsai
0c042bfe50 Merge pull request #2272 from samuelteixeiras/patch-1
Add `--ignore-existing` to minio-createbucket
2024-05-23 08:27:16 +02:00
Samuel Teixeira
1a7894b15e Update supabase.yaml
Add `--ignore-existing` into bucket creation to avoid the service be unhealthy.
2024-05-23 03:55:13 +01:00
Andras Bacsai
543f983e41 fix: ghost subdir 2024-05-22 21:10:37 +02:00
Andras Bacsai
97e7e473b8 Update proxy headings in server view 2024-05-22 21:10:26 +02:00
Andras Bacsai
79c30f7a94 Fix issue with starting proxy 2024-05-22 21:09:53 +02:00
Andras Bacsai
cccf86d388 feat: if proxy stopped manually, it won't start back again 2024-05-22 20:42:08 +02:00
Andras Bacsai
c102c23831 Refactor database restart button in service configuration view 2024-05-22 19:09:58 +02:00
Andras Bacsai
80ada9c90a fix: add subpath for services 2024-05-22 15:45:30 +02:00
Andras Bacsai
6c3b4070ba chore: Refactor container name logic in GetContainersStatus.php and ForcePasswordReset.php 2024-05-22 14:44:11 +02:00
Andras Bacsai
4b287b758d feat: Improve Docker Engine start logic in ServerStatusJob 2024-05-22 14:25:27 +02:00
Andras Bacsai
b6d129a5c1 fix: show first 20 users only in admin view 2024-05-22 14:23:55 +02:00
Andras Bacsai
4d08147647 chore: Change pre and post deployment command length in applications table 2024-05-22 12:41:22 +02:00
Andras Bacsai
ace7c17f2b fix: Check proxy functionality before removing unnecessary coolify.yaml file and checking Docker Engine 2024-05-22 12:20:36 +02:00
Andras Bacsai
10f3d8aa0f fix: use local versions + service templates and query them every 10 minutes 2024-05-22 09:23:17 +02:00
Andras Bacsai
3237ca0d97 Update version numbers to 4.0.0-beta.286 2024-05-22 09:22:56 +02:00
Andras Bacsai
5682ab9570 Merge pull request #2261 from coollabsio/next
v4.0.0-beta.285
2024-05-21 17:47:04 +02:00
Andras Bacsai
a3d73634e7 feat: scheduled task failed notification 2024-05-21 15:36:26 +02:00
Andras Bacsai
98b6aec203 feat: admin view for deleting users 2024-05-21 14:29:06 +02:00
Andras Bacsai
7feb788ed3 fix: show it docker compose has syntax errors 2024-05-21 12:02:04 +02:00
Andras Bacsai
bea490081b ui: responsive here and there 2024-05-21 11:23:53 +02:00
Andras Bacsai
7adc3ca003 feat: Add SerpAPI as a Github Sponsor 2024-05-21 11:20:12 +02:00
Andras Bacsai
f8cbc63ab0 fix: optimize new resource creation 2024-05-21 10:17:32 +02:00
Andras Bacsai
418590fb35 Update version numbers to 4.0.0-beta.285 2024-05-21 10:16:31 +02:00
Andras Bacsai
56144482f1 Merge pull request #2244 from coollabsio/next
v4.0.0-beta.284
2024-05-19 20:56:17 +02:00
Andras Bacsai
59f681e6af revert: hc return code check 2024-05-19 20:54:16 +02:00
Andras Bacsai
d3296f5180 feat: add hc logs to healthchecks 2024-05-18 18:48:33 +02:00
Andras Bacsai
c6fff0aa13 Update version numbers to 4.0.0-beta.284 2024-05-17 18:54:21 +02:00
Andras Bacsai
41e0c42282 Remove warning message about only supporting root user login via SSH in the future 2024-05-17 18:54:11 +02:00
Andras Bacsai
ede2274816 Merge pull request #2234 from coollabsio/next
v4.0.0-beta.283
2024-05-17 15:34:00 +02:00
Andras Bacsai
ead672afb2 fix: PR deployments have good predefined envs 2024-05-17 15:30:27 +02:00
Andras Bacsai
73bc7b045e feat: Add pull_request_id filter to get_last_successful_deployment method in Application model 2024-05-17 15:28:54 +02:00
Andras Bacsai
3281502c25 feat: Update healthcheck test in StartMongodb action 2024-05-17 14:35:37 +02:00
Andras Bacsai
ca35e536db chore: Update version to 4.0.0-beta.283 2024-05-17 14:35:31 +02:00
Andras Bacsai
bb8e0eb7bf Merge pull request #2232 from coollabsio/next
quickfixes
2024-05-17 13:44:12 +02:00
Andras Bacsai
bb451ac3b5 Refactor BackupExecutions.php to use optional chaining for deleting failed backup executions 2024-05-17 13:43:36 +02:00
Andras Bacsai
b0b7842f9c Refactor BackupEdit component to handle null s3_storage_id 2024-05-17 13:43:21 +02:00
Andras Bacsai
aad661cb65 Merge pull request #2231 from coollabsio/next
v4.0.0-beta.282
2024-05-17 13:41:33 +02:00
Andras Bacsai
ed9b63520d Refactor gitCommitLink method in Application model 2024-05-17 13:40:28 +02:00
TheH2SO4
0d89d4d0d3 Glance
[+] Releasing Glance template.
2024-05-17 13:27:23 +02:00
Andras Bacsai
5de1246827 Merge pull request #2230 from coollabsio/next
v4.0.0-beta.281
2024-05-17 12:45:26 +02:00
Andras Bacsai
edc3b014cd fix: telegram group chat notifications 2024-05-17 12:09:22 +02:00
Andras Bacsai
fec98f45ce feat: Improve sorting of environment variables in the All component 2024-05-17 11:40:32 +02:00
Andras Bacsai
94810d5066 fix: use rc in hc 2024-05-17 11:39:26 +02:00
Andras Bacsai
431cc796d8 feat: sort envs alphabetically and creation date 2024-05-17 11:10:57 +02:00
Andras Bacsai
e9d2dbcc92 Refactor Upgrade.php and add isDev condition for upgrade availability 2024-05-17 10:12:17 +02:00
Andras Bacsai
7a618ef89c feat: Add lastDeploymentInfo and lastDeploymentLink props to breadcrumbs and status components 2024-05-17 10:12:13 +02:00
Andras Bacsai
5b56249d12 Refactor gitCommitLink method in Application model 2024-05-17 10:12:05 +02:00
Andras Bacsai
e2ba5abe76 fix: hc from localhost to 127.0.0.1 2024-05-17 10:11:55 +02:00
Andras Bacsai
70a4b7c863 feat: new manual update process + remove next_channel 2024-05-17 09:52:19 +02:00
Andras Bacsai
10fde1b1ef feat: shows the latest deployment commit + message on status 2024-05-17 08:53:25 +02:00
Andras Bacsai
6131746180 Add all_servers property to Kernel class for better code organization 2024-05-16 21:36:01 +02:00
Andras Bacsai
bf953bf1b5 Update version numbers 2024-05-16 21:35:57 +02:00
Andras Bacsai
d81da10dfa Merge pull request #2225 from coollabsio/next
v4.0.0-beta.280
2024-05-16 17:25:36 +02:00
Andras Bacsai
ed9cdc1ab7 Fix issue with parsing services in ScheduledTask/All.php 2024-05-16 17:24:57 +02:00
Andras Bacsai
9f506eb83a fix: commit message length 2024-05-16 17:22:32 +02:00
Andras Bacsai
36e8c52b01 Update version numbers to 4.0.0-beta.280 2024-05-16 17:21:53 +02:00
Andras Bacsai
e6d1233bfe Merge pull request #2220 from coollabsio/next
v4.0.0-beta.279
2024-05-16 13:34:33 +02:00
Andras Bacsai
6847459022 chore: Limit commit message length to 50 characters in ApplicationDeploymentJob 2024-05-16 13:33:35 +02:00
TheH2SO4
285623a02b MediaWiki
[!] Fix image
2024-05-16 11:48:51 +02:00
Andras Bacsai
fbf64f8037 Refactor ApplicationDeploymentJob to conditionally notify team on DeploymentSuccess 2024-05-16 11:25:58 +02:00
Andras Bacsai
2b74ca2746 Refactor scheduling of container status and log drain checks 2024-05-16 11:23:31 +02:00
Andras Bacsai
b106a82308 chore: Update version numbers to 4.0.0-beta.279 2024-05-16 11:23:26 +02:00
TheH2SO4
d71a0ddd66 MediaWiki
[+] MediaWiki (SQLite)
2024-05-16 11:11:12 +02:00
Andras Bacsai
5700f2f78a Merge pull request #2205 from coollabsio/next
v4.0.0-beta.278
2024-05-16 10:20:00 +02:00
Andras Bacsai
c5ca6abb90 Refactor sleep duration in check_resources method 2024-05-16 10:08:13 +02:00
Andras Bacsai
6826b6e1f8 Refactor container status and log drain checks scheduling 2024-05-16 10:08:00 +02:00
Andras Bacsai
27c4fa2fcf Refactor boarding index.blade.php for improved code structure and readability 2024-05-16 10:05:28 +02:00
Andras Bacsai
6ef1aff991 Refactor scheduling of container status and log drain checks 2024-05-16 09:56:38 +02:00
Andras Bacsai
57a026a7a1 Refactor modal input button title for dynamic configuration navbar 2024-05-16 09:39:29 +02:00
Andras Bacsai
cfc785358e Refactor README.md to add new sponsor logos 2024-05-16 09:11:52 +02:00
TheH2SO4
c2d2b3f3b2 Docuseal
[+] Fix
2024-05-15 22:54:46 +02:00
TheH2SO4
4aa153fcf1 Docuseal
[!] Docuseal (SQLite) fix compose encode
2024-05-15 22:27:56 +02:00
TheH2SO4
824f63a3ad Docuseal
[+] Docuseal (SQLite)
[+] Docuseal (Postgres)
2024-05-15 22:25:58 +02:00
Andras Bacsai
2446dc6950 feat: toggle label escaping mechanism 2024-05-15 17:52:14 +02:00
Andras Bacsai
f98405188d Refactor shared.php to escape dollar signs in service labels 2024-05-15 15:45:56 +02:00
Andras Bacsai
a5cf24773c Refactor pricing-plans.blade.php for improved code structure and readability 2024-05-15 14:43:11 +02:00
Andras Bacsai
01c1e4f8cb chore: Update Docker and Docker Compose versions in Dockerfiles 2024-05-15 14:32:10 +02:00
Andras Bacsai
0759fb6436 chore: Update DOCKER_VERSION to 26.0 in install.sh script 2024-05-15 14:32:01 +02:00
Andras Bacsai
ed5188069b Refactor destination/all.blade.php for improved code structure and readability 2024-05-15 14:10:44 +02:00
Andras Bacsai
aa0a9bde76 Refactor storage create form for better usability and validation 2024-05-15 14:10:03 +02:00
Andras Bacsai
56a450a936 Refactor commit_message column length to 50 characters 2024-05-15 12:35:28 +02:00
Andras Bacsai
1e01106b94 chore: Remove unnecessary code for saving commit message 2024-05-15 11:53:28 +02:00
Andras Bacsai
b9a755d6d3 chore: Update ServerLimitCheckJob.php to handle missing serverLimit value 2024-05-15 11:44:42 +02:00
Andras Bacsai
1d9d6c899d Refactor User model role() method to use data_get() for better readability 2024-05-15 11:41:11 +02:00
Andras Bacsai
444dffb458 chore: Refactor GitHub app selection UI in project creation form 2024-05-15 11:34:59 +02:00
Andras Bacsai
3f1b7192ff feat: save commit message and better view on deployments 2024-05-15 11:31:03 +02:00
Andras Bacsai
b992b19c66 feat: adding new COOLIFY_ variables 2024-05-15 11:30:35 +02:00
Andras Bacsai
e341121f61 chore: Refactor deployment index.blade.php for improved readability and rollback handling 2024-05-15 10:47:57 +02:00
Andras Bacsai
cd3e2963b3 Refactor gitCommitLink method to handle different git repository formats 2024-05-15 10:45:08 +02:00
Andras Bacsai
346faf1d07 chore: Refactor applications.php to remove unused imports and improve code readability 2024-05-15 10:45:01 +02:00
Andras Bacsai
1e09b2bbd8 fix: use commit hash on webhooks 2024-05-15 10:44:45 +02:00
Andras Bacsai
0ffba45517 chore: Update twenty CRM template with environment variables and dependencies 2024-05-15 09:46:31 +02:00
Andras Bacsai
32ff346154 chore: Refactor Service.php to handle missing admin user in extraFields() method 2024-05-15 09:46:28 +02:00
Andras Bacsai
0008f44255 Merge pull request #2098 from jonkristian/main
Added twenty crm template
2024-05-15 09:11:04 +02:00
Andras Bacsai
a3c519a061 Merge pull request #2183 from Lxcasx/main
Correct repository links in source view for git SSH URLs
2024-05-15 09:08:22 +02:00
Andras Bacsai
5b8a923cb5 Merge pull request #2206 from maurobender/fix_schduled_tasks_executing_using_host_environment
Fix scheduled tasks being executed using host environment variables
2024-05-15 08:58:50 +02:00
Andras Bacsai
576cbc0b90 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-05-14 15:40:47 +02:00
Andras Bacsai
e95e2cf152 feat: Add AdminRemoveUser command to remove users from the database 2024-05-14 15:40:45 +02:00
Andras Bacsai
317dc10af4 fix: improve scheduled task adding/removing 2024-05-14 15:19:28 +02:00
Andras Bacsai
f06065337c chore: Handle invalid cron strings in Kernel.php 2024-05-14 15:18:59 +02:00
Mauro E. Bender
cc870ca302 Fix scheduled tasks being executed using host environment variables 2024-05-14 14:29:27 +02:00
Andras Bacsai
80f5506b18 Merge pull request #2204 from TorstenDittmann/fix-compose-dependencies-on-previews
fix: docker compose dependencies for pr previews
2024-05-14 13:41:39 +02:00
Torsten Dittmann
5321a75272 fix: properly populating dependencies 2024-05-14 13:33:29 +02:00
Andras Bacsai
b70a78b7aa chore: Remove debug logging statements in Kernel.php 2024-05-14 13:04:17 +02:00
Andras Bacsai
5ad08791ea chore: Skip scheduled tasks if application or service is not running 2024-05-14 12:52:01 +02:00
Andras Bacsai
9dc3ec0bf8 chore: Refactor scheduled task view to improve code readability and maintainability 2024-05-14 12:45:21 +02:00
Andras Bacsai
69dd9d0cac chore: Update hover behavior and cursor style in scheduled task executions view 2024-05-14 12:45:17 +02:00
Torsten Dittmann
24f923e88e fix: docker compose dependencies for pr previews 2024-05-14 12:19:33 +02:00
Andras Bacsai
b5552a216d fix: only allow push and mr gitlab events 2024-05-14 11:55:20 +02:00
Iván Salazar
f3fe4433ae update sonarqube template 2024-05-13 21:33:36 -06:00
Lucas Heinschke
1988c617a0 Correct repository links in source view for git SSH URLs 2024-05-10 16:28:14 +02:00
Andras Bacsai
5e531d6f96 fix: only show realtime error on non-cloud instances 2024-05-10 12:50:39 +02:00
Andras Bacsai
1fb7e97700 Fix error handling in GetContainersStatus.php and increase length of stripe_comment field in migrations 2024-05-10 12:10:47 +02:00
Andras Bacsai
64d27156f5 chore: Update version numbers to 4.0.0-beta.278 2024-05-10 12:10:35 +02:00
Andras Bacsai
b528a0f4ec Merge pull request #2164 from coollabsio/next
v4.0.0-beta.277
2024-05-10 10:50:40 +02:00
Andras Bacsai
7f265a6692 Merge pull request #2178 from wutangpaul/main
Fix silent failing of install script on manjaro, make it behave as arch
2024-05-10 10:01:25 +02:00
Andras Bacsai
55e00e35c1 Merge pull request #2175 from chz/fix/2174
Fix: Resource Operations page: incorrect color for server and project name
2024-05-10 09:59:18 +02:00
Andras Bacsai
d94e1ba55b ui: fix a few boxes here and there 2024-05-10 09:56:39 +02:00
Andras Bacsai
00e7167174 Merge pull request #2173 from maurobender/fix_one_shot_commands_executing_using_host_environment
Fix one-shot commands for a specific container being executed using host environment variables
2024-05-10 09:45:54 +02:00
Andras Bacsai
9d7b69fc0e Merge pull request #2159 from snekROmonoro/patch-1
"Inprogress" -> "In progress"
2024-05-10 09:43:59 +02:00
Andras Bacsai
db9a68e9c9 make sentinel enabled env var 2024-05-10 09:21:19 +02:00
Andras Bacsai
b5d9d6e268 chore: Comment out server sentinel check in ServerStatusJob 2024-05-10 09:12:19 +02:00
Andras Bacsai
5ff0c563ec disable sentinel for now 2024-05-10 08:42:17 +02:00
Paul McClean
e2131523ec Force manjaro to be arch 2024-05-10 00:30:31 +01:00
Andras Bacsai
1f5f51e3e5 Refactor metrics retrieval and update chart visualization 2024-05-09 15:44:32 +02:00
Andras Bacsai
1bb0d54dce Update image pull schedule to every five minutes 2024-05-09 15:27:14 +02:00
Andras Bacsai
094bb37049 Update sentinel version to 0.0.4 2024-05-09 15:26:39 +02:00
Andras Bacsai
58601db5ef feat: init metrics 2024-05-09 13:25:18 +02:00
Andras Bacsai
b5bef98a9b chore: Update permissions on metrics and logs directories 2024-05-09 12:35:49 +02:00
Andras Bacsai
1026f1efa5 refactor: add SCHEDULER environment variable to StartSentinel.php 2024-05-09 12:30:51 +02:00
Andras Bacsai
0c673fb524 chore: update sentinel version to 0.0.2 in versions.json 2024-05-09 12:23:01 +02:00
Andras Bacsai
7ee2c9478d chore: add metrics and logs directories to installation script 2024-05-09 12:22:54 +02:00
Andras Bacsai
4b51f8251b fix: change permissions on newly created dirs 2024-05-09 12:22:49 +02:00
Andras Bacsai
e91a64b1cc Refactor GetContainersStatus.php for improved readability and maintainability 2024-05-09 12:10:06 +02:00
Chingiz Mammadov
8920762fc5 fix: Color for resource operation server and project name 2024-05-09 01:48:44 +04:00
Andras Bacsai
ba40f93386 do not use sentinel for container details for now 2024-05-08 20:59:58 +02:00
Andras Bacsai
781bf52a8e Refactor PullSentinelImageJob.php to only start Sentinel if local version is outdated 2024-05-08 19:32:13 +02:00
Mauro E. Bender
cca1a9832e Fix one-shot commands for a specific container being executed using host environment variables 2024-05-08 19:20:21 +02:00
Andras Bacsai
1a152a5597 feat: pull new sentinel image and restart container 2024-05-08 19:19:32 +02:00
Andras Bacsai
76a5290351 Refactor StartSentinel.php for improved readability and maintainability 2024-05-08 15:29:59 +02:00
Andras Bacsai
829e17ef2b Refactor GetContainersStatus.php for improved readability and maintainability 2024-05-08 15:19:12 +02:00
Andras Bacsai
bc5d3bea14 Refactor GetContainersStatus.php for improved readability and maintainability 2024-05-08 15:04:13 +02:00
Andras Bacsai
edf2a2e68d Refactor ContainerStatusJob.php for improved readability and maintainability 2024-05-08 14:53:48 +02:00
Andras Bacsai
5df443a016 Refactor StartSentinel.php for improved readability and maintainability 2024-05-08 14:48:04 +02:00
Andras Bacsai
f6396f2e74 fix: turn off hc for dockerimage/docker base deployments by default
fix: loading github app
2024-05-08 14:42:45 +02:00
Andras Bacsai
c618e58a11 feat: start Sentinel on servers. 2024-05-08 14:22:35 +02:00
Andras Bacsai
2ea27acdde add cloud scripts 2024-05-08 12:29:36 +02:00
Andras Bacsai
331cad276e chore: Refactor ApplicationDeploymentJob.php for improved readability and maintainability 2024-05-08 10:36:38 +02:00
Andras Bacsai
b74eab8377 ui: fix tag view 2024-05-08 10:36:30 +02:00
Andras Bacsai
fb80318553 Refactor docker-compose files to remove version numbers 2024-05-08 09:23:36 +02:00
Andras Bacsai
3eb4aed867 chore: Refactor GetContainersStatus.php for improved readability and maintainability 2024-05-08 09:23:32 +02:00
Andras Bacsai
f6f959a897 feat: experimental sentinel 2024-05-07 15:41:50 +02:00
Andras Bacsai
2b422a542a fix: empty db conf
feat: add listen_addresses to postgresql if its missing in the custom conf
2024-05-07 12:35:24 +02:00
Andras Bacsai
d0e9d58a43 chore: Add Listmonk service template and logo 2024-05-07 10:22:02 +02:00
Andras Bacsai
8a1933b9b2 chore: remove docker compose versions 2024-05-07 09:43:51 +02:00
Andras Bacsai
96a587f343 Update version to 4.0.0-beta.277 2024-05-07 09:43:41 +02:00
snekROmonoro
2bb6a71874 "Inprogress" -> "In progress" 2024-05-06 15:42:01 +02:00
Andras Bacsai
94acd12f1c Merge pull request #2158 from coollabsio/next
v4.0.0-beta.276
2024-05-06 14:34:30 +02:00
Andras Bacsai
5e44a61068 chore: Improve menu item styling and spacing in project index and show views 2024-05-06 14:33:45 +02:00
Andras Bacsai
a54f0ed94d chore: Improve menu item styling and spacing in service configuration and index views 2024-05-06 14:30:50 +02:00
Andras Bacsai
662c6f3cc2 chore: Improve menu item styling and spacing in service configuration and index views 2024-05-06 14:28:16 +02:00
Andras Bacsai
d93c635a0a Update version to 4.0.0-beta.276 2024-05-06 14:28:13 +02:00
Andras Bacsai
17b73aaf91 Merge pull request #2155 from coollabsio/next
v4.0.0-beta.275
2024-05-06 14:03:15 +02:00
Andras Bacsai
c194911458 revert 2024-05-06 14:01:07 +02:00
Andras Bacsai
92e99e3fb4 chore: dark mode should be the default 2024-05-06 14:00:20 +02:00
Andras Bacsai
848e6102a1 fix css here and there 2024-05-06 13:58:19 +02:00
Andras Bacsai
ef37bf9b1a Merge branch 'next' of github.com:coollabsio/coolify into next 2024-05-06 13:31:13 +02:00
Andras Bacsai
eb41e023c7 feat: Add lazy loading for images in General.php and improve Docker Compose file handling in Application.php 2024-05-06 13:03:55 +02:00
Andras Bacsai
6b4987bf39 fix: confirmation for custom labels 2024-05-06 12:52:06 +02:00
Andras Bacsai
d46ff76887 feat: Add container name to network aliases in ApplicationDeploymentJob 2024-05-06 12:47:49 +02:00
Andras Bacsai
d53a9e672c fix: Comment out internal notification in email_verify method 2024-05-06 12:39:47 +02:00
Andras Bacsai
80ef99a24b Merge branch 'next' of github.com:coollabsio/coolify into next 2024-05-06 12:33:24 +02:00
Andras Bacsai
6062a1f8c7 chore: Update DNS server validation helper text 2024-05-06 12:33:22 +02:00
Andras Bacsai
d974bd9a07 Merge pull request #2120 from bitsnaps/gitpod
fixt: env file example
2024-05-06 12:31:43 +02:00
Andras Bacsai
fb8c9566d5 Merge pull request #2148 from SIPC/Add-Chinese-Simplified
Add Chinese Simplified lang
2024-05-06 12:31:24 +02:00
Andras Bacsai
7431bd69e9 Merge pull request #2149 from SIPC/fix-install.sh-error
fix: install.sh error
2024-05-06 12:31:06 +02:00
Andras Bacsai
5d7f393e94 Merge pull request #2139 from eltociear/patch-3
fix: typo in tags.blade.php
2024-05-06 12:29:59 +02:00
Andras Bacsai
ef25d100e1 Merge pull request #2138 from chikof/patch-1
Change of wording
2024-05-06 12:29:45 +02:00
Andras Bacsai
17f82c8972 Merge pull request #2137 from LucianoLaratelli/main
Don't append '.git' for sr.ht repositories
2024-05-06 12:29:13 +02:00
Andras Bacsai
05c937743c feat: custom internal container names
fix: add warning if hc fails with dockerfile/dockerimage based deployments
2024-05-06 11:45:22 +02:00
Andras Bacsai
bf2e7ff130 chore: update version to 4.0.0-beta.275 2024-05-06 11:44:27 +02:00
Francesco Bruno
1b30ee606f improved responsivness in case the service/app/database is deployed 2024-05-05 18:14:14 +00:00
Francesco Bruno
3235907266 Refactor settings page layout for better responsiveness 2024-05-05 17:18:48 +00:00
Francesco Bruno
99c7e417d6 Global setting's input text uses flex wrap for better spacing on small screens 2024-05-05 17:17:54 +00:00
Francesco Bruno
d81906d348 assing a min height to navbar list 2024-05-05 17:09:22 +00:00
Francesco Bruno
296872d2e4 database configuration input boxes use wrap in small screens 2024-05-05 17:04:59 +00:00
Francesco Bruno
7cd02b4916 moved width class on parent 2024-05-05 16:58:55 +00:00
Francesco Bruno
0e217f48be Improved input text spacing with small screens 2024-05-05 16:58:12 +00:00
Francesco Bruno
61fdf4b6c7 use muni-item-active for submenus for services and database 2024-05-05 16:41:15 +00:00
Francesco Bruno
91dbf1f01a navbar changed in order top move as first element the button for start/redeploy 2024-05-05 16:33:52 +00:00
Francesco Bruno
d52aac76c0 Changed the breadcrumbs for let it using flex-wrap 2024-05-05 15:55:58 +00:00
Francesco Bruno
6102e441d6 In small screen the submenu is moved up, under the navbar-main 2024-05-05 15:23:25 +00:00
sipc.ink
1a5fec39c0 fix: install.sh error 2024-05-05 21:11:44 +08:00
sipc.ink
efa5091b98 Create zh-cn.json 2024-05-05 21:07:49 +08:00
Ikko Eltociear Ashimine
be4386658a fix: typo in tags.blade.php
seperated -> separated
2024-05-04 01:23:31 +09:00
Francesco Bruno
0cddce7a37 Changed the navbar-main class to utilize overflow-x-scroll, preventing the page from overflowing entirely. 2024-05-03 14:51:08 +00:00
Francesco Bruno
a86d13632e Format foar a correct tailwind positioning of classes and eliminated usless spaces. 2024-05-03 14:49:41 +00:00
Chiko
d71682a3f7 Change of wording 2024-05-03 15:06:06 +01:00
Luciano Laratelli
c901ace21a don't append '.git' for sr.ht repositories 2024-05-03 09:31:05 -04:00
Andras Bacsai
418398a870 Merge pull request #2133 from coollabsio/next
Fix server status check in ServerStatusJob.php
2024-05-03 13:46:06 +02:00
Andras Bacsai
baca57062e Fix server status check in ServerStatusJob.php 2024-05-03 13:45:42 +02:00
Andras Bacsai
52df8e6e8b Fix server status check in ServerStatusJob.php 2024-05-03 13:43:54 +02:00
Andras Bacsai
b51747378a Merge pull request #2132 from coollabsio/next
v4.0.0-beta.274
2024-05-03 13:35:26 +02:00
Andras Bacsai
424a6b0428 revert server checking fn 2024-05-03 13:31:35 +02:00
Jon Kristian Nilsen
4549223d6d Storage type should be exposed. Fixed healthcheck test. 2024-05-03 12:56:49 +02:00
Jon Kristian Nilsen
91dd3468d5 Storage type should be exposed. Fixed healthcheck test. 2024-05-03 12:55:05 +02:00
Andras Bacsai
83a3871d43 Merge pull request #2129 from coollabsio/next
v4.0.0-beta.273
2024-05-03 11:42:46 +02:00
Andras Bacsai
8b6023c45a Refactor searchComponent function to use optional chaining and add id attribute in index.blade.php 2024-05-03 11:37:45 +02:00
Andras Bacsai
a401d4e760 Refactor searchComponent function to use optional chaining in index.blade.php 2024-05-03 11:34:45 +02:00
Andras Bacsai
a8520f6593 Refactor server form to dispatch 'proxyStatusUpdated' event when server is unreachable 2024-05-03 11:26:06 +02:00
Andras Bacsai
9a95d207cf fix: add port even if traefik is used 2024-05-03 11:26:00 +02:00
Andras Bacsai
c75d779f85 Fix server form to dispatch 'proxyStatusUpdated' event when server is unreachable 2024-05-03 11:20:42 +02:00
Andras Bacsai
b8f2066408 Merge pull request #2117 from RayBB/vikunja-template
add vikunja service template
2024-05-03 11:18:03 +02:00
Andras Bacsai
cc48b6cd96 Merge pull request #2101 from Geczy/patch-1
Update supabase service yaml to newest fixes
2024-05-03 11:15:59 +02:00
Andras Bacsai
b36c735445 Refactor service-templates.json to update formbricks image origin 2024-05-03 11:14:30 +02:00
Andras Bacsai
5f0f26a3ac Merge pull request #2103 from seu1a/next
fix: formbricks image origin
2024-05-03 11:14:01 +02:00
Andras Bacsai
6b81eaa65d Fix server form to dispatch 'proxyStatusUpdated' event when server is reachable 2024-05-03 10:54:46 +02:00
Andras Bacsai
644f15e80d Refactor server navbar and proxy components 2024-05-03 10:54:44 +02:00
Andras Bacsai
a8ddf4c2df Add unreachable notification when server is unreachable in Server.php 2024-05-03 10:49:12 +02:00
Andras Bacsai
3f9833117e Refactor Server.php to remove unnecessary coolify.yaml from cloud hosted servers 2024-05-03 10:32:04 +02:00
Andras Bacsai
6140d0c849 Refactor ServerStatusJob.php to remove coolify.yaml from cloud hosted servers 2024-05-03 10:31:25 +02:00
Andras Bacsai
f4cb7cea21 fix: better server vlaidation
fix: remove unnecessary coolify.yaml from cloud hosted servers
2024-05-03 10:22:28 +02:00
Andras Bacsai
140ec1f90f Update private key link styling in index.blade.php 2024-05-03 09:43:32 +02:00
Andras Bacsai
31d7220785 Update pricing plan details and add pay-as-you-go option 2024-05-03 09:38:04 +02:00
Andras Bacsai
38e1d36684 Update pricing plan details in pricing-plans.blade.php 2024-05-03 09:36:30 +02:00
Andras Bacsai
6397655f7d Update pricing plan details and add pay-as-you-go option 2024-05-03 09:35:09 +02:00
Ibrahim H
692047e4c8 fixt: env file 2024-05-02 19:11:46 +01:00
Matt
821bfe68c1 Merge branch 'next' into patch-1 2024-05-02 10:53:24 -05:00
Matt
596eaa7590 fix realtime 2024-05-02 10:52:55 -05:00
RayBB
08fd0f0fa9 add vikunja service template 2024-05-02 17:10:44 +02:00
Andras Bacsai
77c925ce4b Merge branch 'main' into next 2024-05-02 15:09:17 +02:00
Andras Bacsai
3338352b41 Merge pull request #2115 from coollabsio/andrasbacsai-patch-1
Update service-templates.json
2024-05-02 15:08:53 +02:00
Andras Bacsai
e3aa4143c7 Update service-templates.json 2024-05-02 15:08:37 +02:00
Andras Bacsai
0a93808076 Update Gitea volume path in gitea.yaml 2024-05-02 15:06:40 +02:00
Andras Bacsai
0cc21f9b99 Update subscription page title to "Subscriptions" 2024-05-02 14:27:11 +02:00
Andras Bacsai
d3543ea291 Update pricing plan details in pricing-plans.blade.php 2024-05-02 14:26:31 +02:00
Andras Bacsai
e824f7a28c Update version numbers to 4.0.0-beta.273 2024-05-02 14:26:27 +02:00
Andras Bacsai
56be0744f0 Merge pull request #2100 from coollabsio/next
v4.0.0-beta.272
2024-05-02 13:20:14 +02:00
Andras Bacsai
d874c71e0b Update pricing plan details in pricing-plans.blade.php 2024-05-02 13:01:10 +02:00
이슬아
487177af87 Merge branch 'next' into next 2024-05-02 19:33:39 +09:00
Andras Bacsai
0452a4e1ac feat: the final pricing plan, pay-as-you-go 2024-05-02 12:27:04 +02:00
Andras Bacsai
959a03214a fix: mongo 4.0 db backup 2024-05-02 11:45:53 +02:00
Andras Bacsai
fe22dfc531 fix: get logs with non-root user 2024-05-02 11:06:12 +02:00
Andras Bacsai
139e258664 ui: update resource operations view 2024-05-02 09:49:10 +02:00
Andras Bacsai
d1ab14966b fix: able to update source path for predefined volumes 2024-05-02 09:28:29 +02:00
이슬아
40ff3c731e Merge branch 'next' into next 2024-05-02 16:25:26 +09:00
Andras Bacsai
75d77a3648 fix: make s3 name and endpoint required 2024-05-02 09:21:54 +02:00
이슬아
921da7242d fix: formbricks image origin 2024-05-01 10:44:58 +09:00
Matt
67c9937e67 Merge branch 'next' into patch-1 2024-04-30 13:43:08 -05:00
Matt
bdcb3af6fa Update supabase.yaml 2024-04-30 13:41:08 -05:00
Andras Bacsai
17e81ab6bd Refactor setNotificationChannels method in DeploymentSuccess.php 2024-04-30 15:06:53 +02:00
Andras Bacsai
70e1ec2cd2 Add backoff property to SendMessageToDiscordJob.php 2024-04-30 15:06:49 +02:00
Andras Bacsai
c6a7fd405b Update version numbers to 4.0.0-beta.272 2024-04-30 15:00:57 +02:00
Andras Bacsai
4f0d1704c4 Merge pull request #2097 from coollabsio/next
v4.0.0-beta.271
2024-04-30 11:28:06 +02:00
Andras Bacsai
a966a5097e Merge pull request #2071 from iamEvanYT/mongodb-restore
feat: restore mongodb backup data
2024-04-30 11:21:25 +02:00
Andras Bacsai
080db4d462 Remove dispatch('configurationChanged') from check_status method in Heading.php 2024-04-30 11:20:57 +02:00
Andras Bacsai
4af766162e Fix repository URL handling in PublicGitRepository.php 2024-04-30 11:11:06 +02:00
Andras Bacsai
57d67bc4a8 Fix repository URL handling in PublicGitRepository.php and public-git-repository.blade.php 2024-04-29 13:43:45 +02:00
Andras Bacsai
16278f36ec fix: parse HEALTHCHECK from dockerfile 2024-04-29 13:33:28 +02:00
Jon Kristian Nilsen
9cb981f068 Added twenty crm template + logo. 2024-04-29 13:29:42 +02:00
Andras Bacsai
05c6d67cab fix: respect start period and chekc interval for hc 2024-04-29 12:55:38 +02:00
Andras Bacsai
0c516843d8 Update health check validation rules in HealthChecks.php 2024-04-29 12:55:10 +02:00
Andras Bacsai
d400ac57d5 disable hc by default for some build packs 2024-04-29 12:54:58 +02:00
Andras Bacsai
2644efd9f7 Update input.blade.php and health-checks.blade.php 2024-04-29 12:54:36 +02:00
Andras Bacsai
11baa97ef6 Refactor services.php file to improve variable replacement logic 2024-04-29 12:04:32 +02:00
Andras Bacsai
c36636bd2d Add dispatch('refreshEnvs') to loadComposeFile method 2024-04-29 11:59:19 +02:00
Andras Bacsai
6bb05a6780 refactor backup download 2024-04-29 11:31:50 +02:00
Andras Bacsai
360f5db2cf add private key description 2024-04-29 11:06:06 +02:00
Andras Bacsai
bbbeacee4d Update popup-small.blade.php and configuration-checker.blade.php 2024-04-29 11:05:53 +02:00
Andras Bacsai
94ad56fc96 Add generate_unique_uuid parameter to fqdnLabelsForTraefik function 2024-04-29 10:49:50 +02:00
Andras Bacsai
3df80f2653 fix: autoupdate 2024-04-29 09:57:46 +02:00
Andras Bacsai
bb6c9cf49e fix: backups 2024-04-29 09:38:45 +02:00
Andras Bacsai
ae12222687 Update version to 4.0.0-beta.271 2024-04-29 09:30:18 +02:00
Andras Bacsai
094dfde048 Merge pull request #2090 from coollabsio/next
v4.0.0-beta.270
2024-04-28 11:21:00 +02:00
Andras Bacsai
714b887274 Fix database_name() method to return null instead of "???" 2024-04-28 11:18:37 +02:00
Andras Bacsai
8cfa88eff8 Merge pull request #2084 from iamEvanYT/backup-fix
fix: MongoDB backups failing
2024-04-28 11:18:15 +02:00
Andras Bacsai
3976b57100 fix: mongo db backup 2024-04-28 11:17:20 +02:00
iamEvan
bbcf484f7f Fix MongoDB Backups failing! 2024-04-27 11:22:58 +01:00
Andras Bacsai
249f35f948 Merge pull request #2078 from coollabsio/next
v4.0.0-beta.269
2024-04-26 21:12:57 +02:00
Andras Bacsai
b71f1a79c8 revert: variable parsing 2024-04-26 21:11:40 +02:00
Evan
e4aa3d310f Merge branch 'next' into mongodb-restore 2024-04-26 16:42:40 +02:00
Andras Bacsai
99f57269fb Update version to 4.0.0-beta.269 2024-04-26 15:38:04 +02:00
Andras Bacsai
93def3a557 Merge pull request #2076 from coollabsio/next
v4.0.0-beta.268
2024-04-26 15:19:38 +02:00
Andras Bacsai
a04674d93d Merge pull request #2006 from grahamhealy20/add-mono-font-to-textarea
Text areas use monospaced fonts with spellcheck disabled by default
2024-04-26 15:16:59 +02:00
Andras Bacsai
539cc187a8 Merge pull request #2033 from jere-co/update-service-docs-url
fix: Update service contribution docs URL
2024-04-26 15:15:23 +02:00
Andras Bacsai
fcdd975751 Merge pull request #2028 from duarteocarmo/fix-domains-message
Fix domains example
2024-04-26 15:13:41 +02:00
Andras Bacsai
8a4c2bf208 shared variables are more visible now on the ui 2024-04-26 14:59:03 +02:00
Andras Bacsai
50c5d533b0 Fix condition for displaying environment variable in show.blade.php 2024-04-26 14:13:32 +02:00
Andras Bacsai
f952553c76 fix: move s3 storages to separate view 2024-04-26 14:09:54 +02:00
Andras Bacsai
9a9be466f7 Refactor replaceVariables function in services.php to use a more concise syntax 2024-04-26 13:49:38 +02:00
Andras Bacsai
bbad029aa1 Update version to 4.0.0-beta.268 2024-04-26 12:59:54 +02:00
Andras Bacsai
eb748554c5 Fix environment variable generation in ApplicationDeploymentJob.php and Application.php 2024-04-26 12:59:51 +02:00
Andras Bacsai
c8b494e909 Add Odoo service and template files 2024-04-26 12:05:56 +02:00
Andras Bacsai
bd7fd725f6 Merge pull request #2068 from coollabsio/next
v4.0.0-beta.267
2024-04-26 10:37:47 +02:00
Andras Bacsai
3e0440ba53 feat: initial datalist 2024-04-26 10:33:55 +02:00
Andras Bacsai
83a29f8d85 Refactor parseDockerComposeFile function in shared.php to escape service labels with escapeDollarSign 2024-04-26 09:32:47 +02:00
iamEvan
8551e6e74a opps... wrong commit 2024-04-25 22:47:47 +01:00
iamEvan
3582cb3f46 fix mongodb imports 2024-04-25 22:44:55 +01:00
iamEvan
23de13b82c mac dev docker-compose 2024-04-25 22:44:46 +01:00
Evan
93acd4f18f Merge branch 'coollabsio:main' into mongodb-restore 2024-04-25 23:02:37 +02:00
Andras Bacsai
96883dabe3 fix tags + ui 2024-04-25 15:04:49 +02:00
Andras Bacsai
da521020f6 Fix styling issues and add new badge class in app.css 2024-04-25 14:51:25 +02:00
Andras Bacsai
ac78738061 Fix styling issues in index.blade.php 2024-04-25 14:32:37 +02:00
Andras Bacsai
b78ca71c0f Fix disabling of environment variables starting with SERVICE_FQDN or SERVICE_URL in Show.php 2024-04-25 14:29:23 +02:00
Andras Bacsai
cd7272d00a Fix environment variable generation in ApplicationDeploymentJob.php 2024-04-25 14:15:44 +02:00
Andras Bacsai
cd7489c569 Update version.php to 4.0.0-beta.267 2024-04-25 14:12:43 +02:00
Andras Bacsai
1f3f369df0 Merge branch 'main' into next 2024-04-25 13:55:57 +02:00
Andras Bacsai
911e29f2ea fix: refresh public ips on start 2024-04-25 13:52:52 +02:00
Andras Bacsai
d7b359e432 Fix cleanup of stuck resources in CleanupStuckedResources.php 2024-04-25 13:44:36 +02:00
Andras Bacsai
0b2c92cbe5 able to change storage name and path 2024-04-25 13:37:45 +02:00
Andras Bacsai
f626d964c5 Fix environment variable generation in ApplicationDeploymentJob.php 2024-04-25 13:25:35 +02:00
Andras Bacsai
b0e0b38549 Merge pull request #2037 from stefankommm/fix-branch-name
Fix: Encapsulated branch name when cloning branch
2024-04-25 13:16:06 +02:00
Andras Bacsai
94af4b2c7b Add pull request template with instructions to use 'next' branch as destination 2024-04-25 13:15:29 +02:00
Andras Bacsai
0b235e146f Fix readonly attribute in source.blade.php 2024-04-25 13:10:54 +02:00
Andras Bacsai
40f3301324 Fix remove dropzone script async attribute 2024-04-25 13:10:50 +02:00
Andras Bacsai
4fe90e59a8 Fix formatting issue in select.blade.php 2024-04-25 13:01:40 +02:00
Andras Bacsai
b28611ed08 Fix typo in create-scheduled-backup.blade.php 2024-04-25 12:59:25 +02:00
Andras Bacsai
672ad22e4f fix: n8n template 2024-04-25 12:32:35 +02:00
Andras Bacsai
c17bd5ec3a fix: able to select server when creating new destination 2024-04-25 12:14:02 +02:00
Andras Bacsai
2770755f9d feat: add db name to backup notifications 2024-04-25 12:09:46 +02:00
Andras Bacsai
ee69cdbf7b fix: 500 error on edge case 2024-04-25 12:09:36 +02:00
Andras Bacsai
a72a25640f fix: do no able to delete gh app without deleting resources 2024-04-25 11:53:06 +02:00
Andras Bacsai
e86f8ddd09 fix: caddy network issue
feat: connect compose based apps to predefined network
2024-04-25 11:49:34 +02:00
Andras Bacsai
66bdb39f1a Update version numbers to 4.0.0-beta.267 2024-04-24 18:03:20 +02:00
Graham Healy
aa368c3a63 Merge branch 'next' into add-mono-font-to-textarea 2024-04-24 16:20:23 +01:00
Andras Bacsai
b499a2ab87 Merge pull request #2027 from coollabsio/next
v4.0.0-beta.266
2024-04-24 14:35:04 +02:00
Andras Bacsai
49e4482947 Fix issue with logging environment variables in ApplicationDeploymentJob.php 2024-04-24 14:34:03 +02:00
Andras Bacsai
6e7e4250e6 Fix issue with logging environment variables in ApplicationDeploymentJob.php 2024-04-24 14:33:20 +02:00
Andras Bacsai
5a8ea15c4f Fix issue with saving environment variables in ApplicationDeploymentJob.php 2024-04-24 14:32:34 +02:00
Marek Štefanko
f9aa029e8e Added " " to encapsulate branch name when cloning 2024-04-20 00:10:50 +02:00
Jere Salonen
6653e379b3 feat: Update service contribution docs URL
Updated the URL in the service contribution docs to point to the correct
knowledge base page for adding a new service.
2024-04-19 09:57:46 +02:00
Duarte OC
930a611374 Fix domains example 2024-04-18 18:20:51 +02:00
Andras Bacsai
51e918be6d Fix issue with pulling helper image in Kernel.php and ApplicationDeploymentJob.php 2024-04-18 14:01:35 +02:00
Andras Bacsai
b0170eea8f Update version numbers to 4.0.0-beta.266 2024-04-18 14:01:29 +02:00
Andras Bacsai
144b34ca2e Merge pull request #2025 from coollabsio/next
v4.0.0-beta.265
2024-04-18 13:54:23 +02:00
Andras Bacsai
676c022e41 fix: .env saved to deployment server, not to build server 2024-04-18 13:53:10 +02:00
Andras Bacsai
7c0b98bb70 Fix sorting issue in save_environment_variables() function 2024-04-18 12:37:06 +02:00
Andras Bacsai
7779713392 Fix issue with user validation in Server.php 2024-04-18 11:48:10 +02:00
Andras Bacsai
5e1396025c Fix issue with saving environment variables in ApplicationDeploymentJob.php 2024-04-18 11:41:58 +02:00
Andras Bacsai
d09c88f71c Fix formatting issue in deployment show.blade.php 2024-04-18 11:14:26 +02:00
Andras Bacsai
7980f21b1b Update version numbers to 4.0.0-beta.265 2024-04-18 11:14:23 +02:00
Andras Bacsai
3843994a05 Merge pull request #2022 from coollabsio/next
v4.0.0-beta.264
2024-04-18 06:58:01 +02:00
Andras Bacsai
a1b08ca037 revert .env changes 2024-04-18 06:55:47 +02:00
Andras Bacsai
144cdd11ec Update version numbers to 4.0.0-beta.264 2024-04-18 06:55:40 +02:00
Andras Bacsai
b6531cdb10 Merge pull request #2016 from coollabsio/next
v4.0.0-beta.262
2024-04-17 18:50:54 +02:00
Andras Bacsai
0eef4a5fa1 Fix DNS validation issue and check domain usage 2024-04-17 18:49:31 +02:00
Andras Bacsai
42baaf8f2d Update version numbers to 4.0.0-beta.263 2024-04-17 18:49:25 +02:00
Andras Bacsai
08d9dff8eb Merge pull request #2014 from coollabsio/next
v4.0.0-beta.262
2024-04-17 16:47:14 +02:00
Andras Bacsai
01b3aab9bc fix: $ in labels escaped 2024-04-17 16:46:12 +02:00
Andras Bacsai
fde34ef178 version++ 2024-04-17 16:46:00 +02:00
Andras Bacsai
5195abec94 Update slogans in appsmith.yaml, appwrite.yaml, babybuddy.yaml, and budge.yaml 2024-04-17 15:48:14 +02:00
Andras Bacsai
aa79acd09e Merge pull request #2012 from coollabsio/next
v4.0.0-beta.261
2024-04-17 15:34:44 +02:00
Andras Bacsai
67011ccd72 fix: base64 encode .env 2024-04-17 15:34:31 +02:00
Andras Bacsai
e2cd7fe17e fix: rollback feature 2024-04-17 15:30:08 +02:00
Andras Bacsai
4c0624f489 fix: remove lazy loading until bug figured out 2024-04-17 15:16:08 +02:00
Andras Bacsai
8c033250b1 Update version numbers to 4.0.0-beta.261 2024-04-17 14:27:53 +02:00
Andras Bacsai
05b5a6fddf Update healthcheck URLs to use 127.0.0.1 instead of localhost 2024-04-17 14:27:51 +02:00
Andras Bacsai
df5bde7b8e Merge pull request #2008 from coollabsio/next
v4.0.0-beta.260
2024-04-17 12:52:09 +02:00
Andras Bacsai
ca5f52c48c Add Tolgee service to compose file and service templates 2024-04-17 12:48:11 +02:00
Andras Bacsai
3656adf059 Add Tolgee authentication fields to Service.php 2024-04-17 12:48:04 +02:00
Andras Bacsai
4381792b05 Refactor variable name display in stack-form.blade.php 2024-04-17 12:48:01 +02:00
Andras Bacsai
0a3c20b08a Fix issue with sorting environment variables in StackForm.php 2024-04-17 12:47:57 +02:00
Andras Bacsai
4ab3f41665 Remove debug statement in remoteProcess.php 2024-04-17 12:47:45 +02:00
=
c75ce9cbba Removing extra whitespace 2024-04-17 11:14:29 +01:00
Andras Bacsai
10356a4376 Fix issue with sorting environment variables in ApplicationDeploymentJob.php 2024-04-17 12:13:44 +02:00
=
4fb4e19e99 Using corrrect ternary pattern to generate textarea spellcheck attribute 2024-04-17 11:12:15 +01:00
Andras Bacsai
98c2056f53 Fix issue with saving environment variables and update version numbers 2024-04-17 12:08:35 +02:00
Andras Bacsai
74e8ae4d79 Merge pull request #1982 from coollabsio/next
v4.0.0-beta.259
2024-04-17 11:43:10 +02:00
Andras Bacsai
6b890cf3b3 Update user input label and add experimental note in by-ip.blade.php 2024-04-17 11:41:46 +02:00
Andras Bacsai
d62b471afe Refactor dispatch event names to use snake_case in General.php, FileStorage.php, Storage.php, All.php, and Show.php 2024-04-17 11:32:35 +02:00
Andras Bacsai
b97240963e Fix issue with saving environment variables in ApplicationDeploymentJob.php 2024-04-17 11:23:54 +02:00
Andras Bacsai
55ed0f2374 fix: remove temporary cloudflared config 2024-04-17 11:22:43 +02:00
Andras Bacsai
2c1b3d5790 Update Supabase Studio image version in supabase.yaml 2024-04-17 11:13:23 +02:00
Andras Bacsai
9c3b757578 fix: respect .env file (for default values) 2024-04-17 11:13:20 +02:00
Andras Bacsai
bc04ad96b5 Refactor Redis connection URLs in StandaloneDragonfly.php 2024-04-17 10:54:55 +02:00
Andras Bacsai
35b07a9c18 Refactor code to add sudo prefix for certain commands in multiple files 2024-04-17 10:49:34 +02:00
Andras Bacsai
17955fc419 Refactor error message styling in deployment show.blade.php 2024-04-17 10:49:30 +02:00
Andras Bacsai
ac98f5862a Refactor environment variable helper text in blade files 2024-04-17 10:49:24 +02:00
Andras Bacsai
63758c6679 Remove debug statement in ExecuteRemoteCommand trait 2024-04-16 21:30:28 +02:00
Andras Bacsai
7c765c47e6 Refactor user input in by-ip.blade.php 2024-04-16 21:30:10 +02:00
Andras Bacsai
58523b0000 Refactor code to add sudo prefix for certain commands 2024-04-16 21:22:57 +02:00
Andras Bacsai
41f4b36593 wip: non-root 2024-04-16 20:57:54 +02:00
=
379212b8fe Making text areas use monospaced font and disabling spellcheck by default 2024-04-16 17:29:09 +01:00
Andras Bacsai
a04c7831b1 wip: non-root user for remote servers 2024-04-16 15:42:38 +02:00
Andras Bacsai
1aec16a240 Refactor healthcheck configurations in Docker Compose files 2024-04-16 14:08:11 +02:00
Andras Bacsai
498626748d Update Supabase images to latest versions 2024-04-16 13:18:55 +02:00
Andras Bacsai
f24ec97607 Refactor ActivityMonitor component to fix max height option 2024-04-16 13:18:50 +02:00
Andras Bacsai
f0ad260eab Refactor ActivityMonitor component to add max height option 2024-04-16 13:14:09 +02:00
Andras Bacsai
92ee2be021 Merge pull request #1832 from estubmo/main
Upgrade Appwrite service template to 1.5
2024-04-16 12:56:54 +02:00
Andras Bacsai
02e4528f3e add and fix a lot of services 2024-04-16 12:42:12 +02:00
Andras Bacsai
f871353acc Refactor modal-input.blade.php and navbar.blade.php to improve code readability and maintainability 2024-04-16 12:41:44 +02:00
Andras Bacsai
faa1120e14 Refactor Show.php and docker.php to improve code readability and maintainability 2024-04-16 12:41:33 +02:00
Andras Bacsai
8a8000c80a Add Unleash service configuration to Service model 2024-04-16 12:41:28 +02:00
Andras Bacsai
8164610105 Refactor EditDomain.php and shared.php to improve DockerCompose parsing logic 2024-04-16 12:41:21 +02:00
Andras Bacsai
3935a3c885 Refactor ActivityMonitor component to add fullHeight option 2024-04-16 12:41:13 +02:00
Andras Bacsai
15ec39bc56 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-04-16 12:24:57 +02:00
Andras Bacsai
5dd2b4c439 Merge pull request #1990 from Dinip/add-unleash-as-a-service
Add Unleash as a service
2024-04-16 12:24:52 +02:00
Andras Bacsai
1ee05dda4b Merge branch 'next' of github.com:coollabsio/coolify into next 2024-04-16 11:59:01 +02:00
Andras Bacsai
5a86588cb5 Merge pull request #1950 from AmruthPillai/main
Add Reactive Resume as a Service
2024-04-16 11:58:54 +02:00
Andras Bacsai
af3269b362 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-04-16 11:47:22 +02:00
Andras Bacsai
a7a4baa06e Merge pull request #1925 from amerkestijn/main
Added ActivePieces as a service
2024-04-16 11:47:14 +02:00
Andras Bacsai
9a497b9bba Merge branch 'next' of github.com:coollabsio/coolify into next 2024-04-16 11:03:00 +02:00
Andras Bacsai
d2a1c449da Merge pull request #1907 from hades200082/services/logto
Added logto.io compose
2024-04-16 11:02:48 +02:00
Andras Bacsai
504524ea56 Refactor stop button in heading.blade.php to use modal confirmation component 2024-04-16 10:54:28 +02:00
Andras Bacsai
51e22b406c Merge branch 'next' of github.com:coollabsio/coolify into next 2024-04-16 10:51:49 +02:00
Andras Bacsai
1ec81482cc Merge pull request #1900 from iamEvanYT/cloudflared
Added Cloudflared as a Service
2024-04-16 10:51:40 +02:00
Andras Bacsai
fd610414fd Update UI styles in resource-view.blade.php, docker-image.blade.php, select.blade.php, and public-git-repository.blade.php 2024-04-16 10:50:28 +02:00
Andras Bacsai
1802d5d5da Add service_type field to Create.php and EditCompose.php 2024-04-16 10:44:23 +02:00
Andras Bacsai
e7e6c76b4e Refactor stop button in heading.blade.php to use modal confirmation component 2024-04-16 10:16:28 +02:00
Andras Bacsai
84c7bd63f5 Merge branch 'next' of github.com:coollabsio/coolify into next 2024-04-16 10:12:29 +02:00
Andras Bacsai
f7187bb798 Merge pull request #1899 from kunumigab/main
Added Classicpress as a service
2024-04-16 10:12:20 +02:00
Andras Bacsai
00db5b69ab Update UI styles in resource-view.blade.php, docker-image.blade.php, select.blade.php, and public-git-repository.blade.php 2024-04-16 10:10:08 +02:00
Andras Bacsai
b16109ca56 Fix repository URL handling in PublicGitRepository.php 2024-04-16 10:09:59 +02:00
Andras Bacsai
a00b5aa136 Update .button styles in app.css 2024-04-16 10:09:56 +02:00
Andras Bacsai
0e43e5d295 Refactor General.php to update application fqdn handling 2024-04-16 09:43:42 +02:00
Andras Bacsai
9f1e2d6192 Update stack-form.blade.php to fix conditional check for fields count 2024-04-16 09:23:31 +02:00
Andras Bacsai
52c794a259 Sort containers when loading and mounting in Logs.php 2024-04-16 09:19:30 +02:00
Andras Bacsai
fcf4c5f328 Merge pull request #1828 from hades200082/services/authentik
Added Authentik identity server as a service
2024-04-16 09:07:13 +02:00
Andras Bacsai
85b33a60b3 feat: can edit file/dir volumes from ui in compose based apps 2024-04-15 19:47:17 +02:00
Andras Bacsai
c99bb4cfd7 Refactor StackForm and parseDockerComposeFile 2024-04-15 16:54:03 +02:00
Andras Bacsai
5b0a942b42 fix: make sure that confs when checking if it is changed sorted 2024-04-15 15:45:50 +02:00
Andras Bacsai
d94c9e522c Update SUPABASE_PUBLIC_URL environment variable in supabase.yaml 2024-04-15 15:25:56 +02:00
Andras Bacsai
8fab15abd3 Fix conditional check for existing tags in tags.blade.php 2024-04-15 15:25:54 +02:00
Andras Bacsai
7717304549 Merge pull request #1987 from Nicell/font-weights
Add missing font weights
2024-04-15 14:47:00 +02:00
Andras Bacsai
b3f1cc3edd Fix unnecessary debug statement in LocalFileVolume.php 2024-04-15 14:46:38 +02:00
Andras Bacsai
16f9c727f2 feat: lazy load stuffs + tell user if compose based deployments have missing envs 2024-04-15 14:23:25 +02:00
Andras Bacsai
007ba5fce9 Update advanced options ui 2024-04-15 13:44:31 +02:00
Andras Bacsai
5b36f07493 feat: literal env variables 2024-04-15 12:46:22 +02:00
Andras Bacsai
cbd2580736 Fix SSH command generation in remoteProcess.php 2024-04-15 11:46:23 +02:00
Andras Bacsai
fe872a59ca fix: helper image only pulled if required, not every 10 mins 2024-04-15 11:11:58 +02:00
iamEvan
c4dfd99a8c init commit 2024-04-14 21:31:55 +01:00
Dinip
5a34fe4704 Add unleash service without database 2024-04-14 16:30:29 +01:00
Dinip
2fc3dcce7e Add unleash as a service 2024-04-14 16:21:30 +01:00
Nick Winans
1a932fb749 Add missing font weights 2024-04-14 01:03:58 +02:00
Andras Bacsai
f8a2ee9a8d Update GitHub app styling in project creation form 2024-04-13 21:14:50 +02:00
Andras Bacsai
a972d456ba Update maintenance driver and store in app.php 2024-04-13 21:09:20 +02:00
Andras Bacsai
e9f4c9e687 Update text color in 503 error page 2024-04-13 21:04:38 +02:00
Andras Bacsai
58f7cdc15e Merge pull request #1983 from Emahhh/main
Added a suggestion on an error popup
2024-04-13 16:24:38 +02:00
Andras Bacsai
3f9b0643ee fix: check each required binaries one-by-one 2024-04-13 16:23:44 +02:00
Andras Bacsai
24bd4da94b Update horizon.php and docker-compose.prod.yml 2024-04-13 15:16:57 +02:00
Andras Bacsai
a18b4ffd0f Add allow_promotion_codes option to subscribeStripe method 2024-04-13 14:57:11 +02:00
Eirik Mo
c9e032e350 Update appwrite.yaml 2024-04-13 08:04:49 +02:00
Emanuele B
e1679ad433 Added a suggestion on an error popup 2024-04-13 00:03:36 +02:00
Andras Bacsai
933e395945 feat: dynamic mux time 2024-04-12 23:50:23 +02:00
Andras Bacsai
1f64a00bbf Update version numbers to 4.0.0-beta.259 2024-04-12 23:50:16 +02:00
Andras Bacsai
7eebc0c3a5 Fix bug in login functionality 2024-04-12 23:35:03 +02:00
Andras Bacsai
a2c9dabd77 Ignore service-templates.json in production build workflow 2024-04-12 23:34:44 +02:00
Andras Bacsai
6187c826b4 Merge pull request #1863 from hamanuha/main
Supabase Fixes: Default database name
2024-04-12 23:33:30 +02:00
Andras Bacsai
b8987963b3 Merge pull request #1973 from w3cj/fix-supabase-template
fix #1966: update supabase template
2024-04-12 23:32:24 +02:00
Andras Bacsai
dc7f56b7aa Merge pull request #1980 from coollabsio/next
v4.0.0-beta.258
2024-04-12 23:14:31 +02:00
Andras Bacsai
2295ddddee Merge pull request #1979 from w3cj/fix-livewire-snapshot-missing
fix #1975: add wire:key to edit-domain
2024-04-12 23:13:31 +02:00
Andras Bacsai
3328d20b2d Refactor domain editing in service configuration view 2024-04-12 23:13:17 +02:00
Andras Bacsai
d444211c68 Update version numbers and fix domain editing 2024-04-12 23:12:15 +02:00
w3cj
2de8cd1d6f fix #1975: add wire:key to edit-domain 2024-04-12 14:49:26 -06:00
Andras Bacsai
115813ac44 Merge pull request #1977 from coollabsio/next
v4.0.0-beta.257
2024-04-12 21:49:02 +02:00
Andras Bacsai
7c0e8d9421 Refactor pricing plans component and update button styles 2024-04-12 21:45:36 +02:00
Andras Bacsai
1c349cf55c Merge pull request #1972 from w3cj/allow-tab-in-textarea
bug: fix allowTab logic
2024-04-12 21:43:05 +02:00
Andras Bacsai
7b4d8a8f05 wip: new pricing 2024-04-12 15:48:56 +02:00
w3cj
6e7e2de490 bug: use 2 space instead of tab 2024-04-12 07:23:48 -06:00
w3cj
0168ef55f0 fix #1966: update supabase template 2024-04-12 07:07:20 -06:00
w3cj
0a9a92ee7d bug: fix allowTab logic 2024-04-12 06:36:23 -06:00
Andras Bacsai
3bfac7ef3b Merge pull request #1962 from coollabsio/next
v4.0.0-beta.256
2024-04-12 14:31:49 +02:00
Andras Bacsai
1581e0e439 Merge pull request #1971 from w3cj/allow-tab-in-textarea
feat: allow tab in textarea
2024-04-12 14:14:57 +02:00
Andras Bacsai
6773848874 Add dispatch call to check_status method in Heading.php 2024-04-12 14:12:06 +02:00
Andras Bacsai
3e9219173c Refactor deployment logic in ApplicationDeploymentJob.php 2024-04-12 14:03:29 +02:00
w3cj
d46a565e6c feat: allow tab in textarea 2024-04-12 05:33:56 -06:00
Andras Bacsai
6267804d38 fix: redeploy if image not found in restart only mode 2024-04-12 13:24:42 +02:00
Andras Bacsai
25c4d282ce Update delete configuration label in danger.blade.php 2024-04-12 13:19:47 +02:00
Andras Bacsai
45281360d5 fix: service config hash update 2024-04-12 13:15:24 +02:00
Andras Bacsai
7a32b8d1d2 feat: configuration checker for all resources 2024-04-12 12:44:49 +02:00
Andras Bacsai
7b0018b661 Add new popup-small component and update general.blade.php 2024-04-12 11:11:55 +02:00
Andras Bacsai
9032879e20 feat: able to delete configuration from server 2024-04-12 10:54:25 +02:00
Andras Bacsai
8b668cf8b7 Refactor deployment logic in ApplicationDeploymentJob.php 2024-04-12 10:54:09 +02:00
Andras Bacsai
3323533fd0 Update Dropzone library version and add async attribute to script tag in import.blade.php 2024-04-12 10:48:43 +02:00
Andras Bacsai
50e96baea1 Refactor Livewire project new select blade template 2024-04-12 10:28:40 +02:00
Andras Bacsai
2ac92df9d3 Refactor Livewire project new select blade template 2024-04-12 09:46:52 +02:00
Andras Bacsai
63e64cea60 Fix is_multiline default value in EnvironmentVariable.php 2024-04-12 09:34:56 +02:00
Andras Bacsai
0267c76de2 Update password reset views and fix layout in ForcePasswordReset.php and reset-password.blade.php 2024-04-12 09:26:07 +02:00
Andras Bacsai
2382a10bba Refactor environment variable saving logic in ApplicationDeploymentJob.php and escapeEnvVariables function in docker.php 2024-04-12 09:26:04 +02:00
Andras Bacsai
a8db40e99a feat: edit domains easier for compose 2024-04-11 15:42:37 +02:00
Andras Bacsai
8553fffffe Update startup commands for Horizon and Scheduler Worker services 2024-04-11 15:07:41 +02:00
Andras Bacsai
d9d38a27ff Fix empty ray() function call in StartClickhouse.php 2024-04-11 13:46:34 +02:00
Andras Bacsai
1e7a5562ab Update Clickhouse database credentials and variables 2024-04-11 13:45:02 +02:00
Andras Bacsai
e71032a8fc Fix variable assignment in Import.php and ApplicationDeploymentJob.php 2024-04-11 13:20:46 +02:00
Andras Bacsai
484a3dbe5c Add scheduled task to clear uploads every two minutes 2024-04-11 12:56:24 +02:00
Andras Bacsai
9c7f40e4fe feat: upload large backups 2024-04-11 12:13:11 +02:00
Andras Bacsai
f35b7ab6f4 Update labels for database accessibility in blade files 2024-04-11 08:55:11 +02:00
Andras Bacsai
a38dd3d5c8 Merge pull request #1964 from therumbler/patch-1
Changed wording to make more sense
2024-04-11 08:36:24 +02:00
Benjamin Rumble
00ad35fc3e Changed wording to make more sense
Previous wording is incorrect English
2024-04-10 17:57:20 -04:00
Andras Bacsai
0d78b44c80 Fix formatting in deployment show.blade.php file 2024-04-10 21:15:23 +02:00
Andras Bacsai
fb614637a9 Fix download_file function in backup-executions.blade.php 2024-04-10 21:12:50 +02:00
Andras Bacsai
d0482d66c2 Refactor code for displaying command output in deployment show view 2024-04-10 21:11:41 +02:00
Andras Bacsai
ef178dfd24 Remove unnecessary steps in GitHub App selection and repository selection 2024-04-10 21:02:30 +02:00
Andras Bacsai
6cdc6e0780 Refactor download.backup route to use authentication middleware in web.php 2024-04-10 15:34:22 +02:00
Andras Bacsai
c961e6d9c7 Add authentication middleware to download.backup route in web.php 2024-04-10 15:29:45 +02:00
Andras Bacsai
c6844ff47a Add keydb, dragonfly and clickhouse 2024-04-10 15:00:46 +02:00
Andras Bacsai
605a630411 Update download_file method name in backup-executions.blade.php 2024-04-10 14:36:57 +02:00
Andras Bacsai
2b75cf1508 Update sponsor logos in README.md 2024-04-10 08:57:44 +02:00
Andras Bacsai
007054301b Update version numbers to 4.0.0-beta.256 2024-04-10 08:57:42 +02:00
Andras Bacsai
cf01d32237 Merge pull request #1960 from coollabsio/next
v4.0.0-beta.255
2024-04-10 08:36:45 +02:00
Andras Bacsai
5ec553f68d Reset default labels when application FQDN is updated 2024-04-10 08:21:06 +02:00
Andras Bacsai
d95e5a169d Update version numbers to 4.0.0-beta.255 2024-04-10 08:17:31 +02:00
Andras Bacsai
8debefddad Merge pull request #1955 from coollabsio/next
v4.0.0-beta.254
2024-04-09 13:17:02 +02:00
Andras Bacsai
bd25860ccf Add check for enabled tasks in scheduled tasks loop 2024-04-09 13:03:06 +02:00
Andras Bacsai
b21cb5c0e9 Update job schedules to run every two minutes instead of every minute 2024-04-09 13:02:22 +02:00
Andras Bacsai
ff79a2d3f4 Commented out ray() function call in remoteProcess.php 2024-04-09 13:02:16 +02:00
Andras Bacsai
9ae3743a58 Update job schedules and version numbers 2024-04-09 12:48:58 +02:00
Andras Bacsai
ffcdbcc802 Merge branch 'main' into next 2024-04-09 12:28:43 +02:00
Andras Bacsai
3ff78a3a47 Update version to 1.3.1 in install.sh 2024-04-09 12:28:11 +02:00
Andras Bacsai
4d78ac4789 Remove unnecessary sed command in install.sh script 2024-04-09 12:28:05 +02:00
Andras Bacsai
be24f2d520 Create SECURITY.md 2024-04-09 12:27:35 +02:00
Andras Bacsai
ff7fccb6a2 Merge pull request #1954 from coollabsio/next
v4.0.0-beta.253
2024-04-09 12:22:32 +02:00
Andras Bacsai
ee5a2b3c38 Add migration to make custom docker commands longer 2024-04-09 11:58:14 +02:00
Andras Bacsai
72b9001447 Fix error message in generate_github_installation_token function 2024-04-09 11:54:15 +02:00
Andras Bacsai
353245bb7d fix: hashed random delimeter in ssh commands + make sure to remove the delimeter from the command 2024-04-09 11:48:57 +02:00
Andras Bacsai
f9411bf0ed Remove debug statement in generateGitImportCommands function 2024-04-09 11:48:26 +02:00
Andras Bacsai
0eedbd2aa1 Update version numbers to 4.0.0-beta.253 2024-04-09 11:09:16 +02:00
Andras Bacsai
5e36c37838 Add coolify database and handle exceptions 2024-04-09 11:09:13 +02:00
Andras Bacsai
35c76c8e2a Merge pull request #1946 from coollabsio/next
v4.0.0-beta.252
2024-04-09 09:28:29 +02:00
Andras Bacsai
90ad46b7c5 Update SUPPORTED_OS with new OS: amzn 2024-04-09 09:25:55 +02:00
Andras Bacsai
1c06e1e2a4 Update version numbers to 4.0.0-beta.252 2024-04-09 09:03:53 +02:00
Andras Bacsai
15d2c0e436 Update font style for logs in deployment show view 2024-04-09 08:46:06 +02:00
Andras Bacsai
9984aea42f Add ContainerStatusJob to Revived notification 2024-04-09 08:46:03 +02:00
Andras Bacsai
a9cc5cc351 Fix server functionality check and cleanup SSH keys 2024-04-09 08:46:00 +02:00
Andras Bacsai
a6cbabfba5 Add server connection validation in CheckProxy.php 2024-04-09 08:45:37 +02:00
Amruth Pillai
c3da3499d8 Add "Reactive Resume" to Self-Hostable Services 2024-04-08 16:45:26 +02:00
Andras Bacsai
1ef85242ec update supabase 2024-04-08 15:16:52 +02:00
Andras Bacsai
ffe75b0856 Merge pull request #1943 from gionatamettifogo/main
Update supabase.yaml - JWT_SERCET -> should be JWT_SECRET
2024-04-08 15:16:15 +02:00
Andras Bacsai
25e3c4fcdc feat: add amazon linux 2023 2024-04-08 14:33:07 +02:00
Andras Bacsai
a922497f5d Merge branch 'next' of github.com:coollabsio/coolify into next 2024-04-08 14:09:40 +02:00
Andras Bacsai
acb100908b Merge pull request #1895 from moinulmoin/refactor/ui
fix: unintended left padding on sidebar
2024-04-08 14:09:14 +02:00
Andras Bacsai
7fa2cbc746 Merge branch 'main' into refactor/ui 2024-04-08 14:08:16 +02:00
Andras Bacsai
b36491af8e Update Stirling PDF healthcheck 2024-04-08 14:07:18 +02:00
Andras Bacsai
ea4fe81cb2 fix: git submodule update 2024-04-08 14:07:07 +02:00
Andras Bacsai
2191f1b826 Refactor source.blade.php layout 2024-04-08 14:06:40 +02:00
Andras Bacsai
08f6367752 Fix conditional statement in getServiceTemplates function 2024-04-08 14:06:31 +02:00
Andras Bacsai
e1b09f4844 Merge pull request #1913 from loganspark/application-update-submodules-after-git-checkout
feat(application): update submodules after git checkout
2024-04-08 13:43:43 +02:00
Andras Bacsai
884c46b054 Merge branch 'main' into application-update-submodules-after-git-checkout 2024-04-08 13:40:16 +02:00
Andras Bacsai
d1cde123dc Merge pull request #1933 from gionatamettifogo/patch-1
Update stirling-pdf.yaml
2024-04-08 13:32:55 +02:00
Andras Bacsai
5eaded7e3a Update package-lock.json and package.json with latest versions of dependencies 2024-04-08 13:23:44 +02:00
Andras Bacsai
4ae4e88800 Update instance update process 2024-04-08 13:04:38 +02:00
Andras Bacsai
85fb27a631 Refactor project links and add click event handlers 2024-04-08 13:04:33 +02:00
Andras Bacsai
8bf0561009 Refactor code for domain usage and validation 2024-04-08 12:15:44 +02:00
Andras Bacsai
ddfded048c fix: how to update docker-compose, environment variables and fqdns 2024-04-08 11:17:00 +02:00
Andras Bacsai
a2e889587e Refactor environment variable sorting by key 2024-04-08 11:16:42 +02:00
Andras Bacsai
b63aaad645 Update warning message for multiple domains in ServiceApplicationView.php 2024-04-08 11:16:25 +02:00
Andras Bacsai
2c41b5d4fb Fix null pointer exception in Index.php 2024-04-08 11:16:20 +02:00
Andras Bacsai
34aa4c6412 fix: storage layout 2024-04-08 09:51:14 +02:00
Andras Bacsai
82372ea252 Refactor upgrade method in Upgrade.php 2024-04-08 09:36:24 +02:00
Andras Bacsai
1f4440bcf9 Refactor image name generation in ApplicationDeploymentJob.php 2024-04-08 09:36:21 +02:00
Andras Bacsai
31fcff4afc Update OAuth button width in login page 2024-04-08 09:16:16 +02:00
Gionata Mettifogo
082f17f940 Update supabase.yaml - JWT_SERCET -> should be JWT_SECRET
There is a spelling error in supabase.yml that prevents the auth component from working. 

JWT_SERCET -> should be JWT_SECRET
2024-04-07 11:56:46 +02:00
Andras Bacsai
aa2ac3865c Merge pull request #1938 from coollabsio/next
v4.0.0-beta.251
2024-04-05 18:50:18 +02:00
Andras Bacsai
db8ffe50ac fix: isMember 2024-04-05 18:47:07 +02:00
Andras Bacsai
8fe658bacc fix: members cannot manage subscriptions 2024-04-05 18:34:33 +02:00
Andras Bacsai
c71d5e2dfb Merge pull request #1936 from coollabsio/next
v4.0.0-beta.250
2024-04-05 16:50:08 +02:00
Andras Bacsai
36c31dcd67 Add role-based authorization for updating teams 2024-04-05 16:48:06 +02:00
Andras Bacsai
c223408c3c Add updatedApplicationFqdn method to ServiceApplicationView 2024-04-05 15:59:59 +02:00
Andras Bacsai
3cdccb49ef Fix deploy button alignment in destination.blade.php 2024-04-05 15:42:31 +02:00
Andras Bacsai
0844645a8b version++ 2024-04-05 15:33:33 +02:00
Andras Bacsai
30bfad455c ui: multiple server view 2024-04-05 15:33:29 +02:00
Andras Bacsai
d84fdc3cd5 fix: make sure if envs are changed, rebuild is needed 2024-04-05 15:33:19 +02:00
Andras Bacsai
2b64b9de63 fix: do not rebuild dockerfile based apps twice 2024-04-05 15:33:11 +02:00
Gionata Mettifogo
cdb3d863db Update stirling-pdf.yaml
The service works fine now but shows up as Running (unhealthy). Adding a check on its main page on port 8080 makes it healthy.
2024-04-04 08:38:53 +02:00
Andras Bacsai
74e3524e92 Merge pull request #1917 from coollabsio/next
v4.0.0-beta.249
2024-04-03 15:16:09 +02:00
Andras Bacsai
d31f75d1ec Refactor form inputs and labels 2024-04-03 15:10:21 +02:00
Andras Bacsai
0b34207148 Update form input attributes for login and two-factor-challenge pages 2024-04-03 15:02:11 +02:00
Andras Bacsai
3c2beded68 Refactor login.blade.php layout and add registration and OAuth options 2024-04-03 14:52:01 +02:00
Andras Bacsai
f33fdb3bfd Refactor code and comment out unused imports and code blocks 2024-04-03 14:32:23 +02:00
Andras Bacsai
96a0f29f19 Refactor webhook handling logic and add file change validation 2024-04-03 14:14:13 +02:00
Andras Bacsai
49b3a75a8b Refactor manual webhook response payload 2024-04-03 14:14:06 +02:00
Andras Bacsai
f13fc737f1 Refactor manual webhook handling and add watch path check 2024-04-03 14:08:42 +02:00
Andras Bacsai
b7121c5000 Refactor deployment logic and add watch path check 2024-04-03 14:05:35 +02:00
Andras Bacsai
22a1d3882e feat: able to make rsa/ed ssh keys 2024-04-03 13:45:49 +02:00
Andras Bacsai
82f74e2264 Refactor status component styles 2024-04-03 13:04:21 +02:00
Andras Bacsai
3dd5699cde Update button styles and add helper text 2024-04-03 13:03:13 +02:00
Eirik Mo
4d8553f959 Merge branch 'next' into main 2024-04-02 22:10:52 +02:00
Eirik Mo
eee1534da7 feat: upgrade Appwrite service template to 1.5 2024-04-02 22:09:39 +02:00
Andras Bacsai
a198bfc5c0 Refactor deployment logic in Github webhook controller 2024-04-02 21:25:09 +02:00
Eirik Mo
38c20f5737 Merge branch 'main' of https://github.com/estubmo/coolify 2024-04-02 21:07:50 +02:00
Andras Bacsai
132807b55d fix: always rebuild Dockerfile / dockerimage buildpacks 2024-04-02 20:50:35 +02:00
Andras Bacsai
735081af50 fix: new github app creation 2024-04-02 20:50:12 +02:00
Andras Bacsai
31651aeaab ui: light buttons 2024-04-02 20:35:44 +02:00
Andras Bacsai
7f4230d026 Remove unnecessary code and comments 2024-04-02 15:40:52 +02:00
Andras Bacsai
6333d3fd13 Fix image environment variable bug 2024-04-02 15:40:25 +02:00
Andras Bacsai
fd9dae6e4b Refactor EnvironmentVariable creation logic 2024-04-02 15:40:19 +02:00
Andras Bacsai
db5d7857c8 fix: warning if you use multiple domains for a service 2024-04-02 15:15:43 +02:00
Andras Bacsai
0f4eab3cf2 Fix error handling in loadUnmanagedContainers method 2024-04-02 15:01:50 +02:00
Andras Bacsai
75b9f4fcbf Add search functionality and display active/inactive subscribers in Admin Dashboard 2024-04-02 15:00:01 +02:00
Andras Bacsai
b9b58b8985 Merge branch 'main' into next 2024-04-02 12:35:38 +02:00
Andras Bacsai
64b8aa1c01 Update README.md 2024-04-02 12:33:09 +02:00
Andras Bacsai
6b21dc132d Refactor subscription active check for Stripe 2024-04-01 09:40:39 +02:00
amerkestijn
ba85c5159d Added the ActivePieces service 2024-03-31 18:44:20 +02:00
amerkestijn
0388c5d5bc Added the ActivePieces service 2024-03-31 18:39:44 +02:00
Andras Bacsai
7aca4930db fix: unfunctional server should see resources 2024-03-31 18:38:26 +02:00
Evan
3714c80adb Update cloudflared.yaml 2024-03-31 05:53:09 +08:00
Andras Bacsai
7a92ecfa30 fix: async public key loading 2024-03-30 18:58:41 +01:00
Andras Bacsai
171f6f4608 fix: trial users subscription page 2024-03-30 00:23:48 +01:00
Andras Bacsai
d569c8d31f fix: search services 2024-03-28 15:18:05 +01:00
Andras Bacsai
51d716253f feat: watch paths 2024-03-28 15:05:12 +01:00
Andras Bacsai
971b17b364 ui fixes 2024-03-28 12:30:06 +01:00
Darek Wróbel
9616d858cf feat(application): update submodules after git checkout 2024-03-28 09:53:09 +01:00
Andras Bacsai
db5ff7f16d Update CSS and Blade file 2024-03-28 09:25:42 +01:00
Andras Bacsai
5db045f392 Refactor deployment index.blade.php to add flex-col class 2024-03-28 09:20:21 +01:00
Andras Bacsai
42c143d19e ui: backup executions 2024-03-28 09:01:40 +01:00
Andras Bacsai
7c1948ebd9 Merge pull request #1911 from coollabsio/next
v4.0.0-beta.248
2024-03-27 21:25:08 +01:00
Andras Bacsai
9cd15645a2 Update Cloudflare tunnel configuration form 2024-03-27 21:11:28 +01:00
Andras Bacsai
c0a4a5c2f5 Add SSH domain field and save server IP in ConfigureCloudflareTunnels.php 2024-03-27 21:09:42 +01:00
Andras Bacsai
518004afbc fix: ui for cftunnels 2024-03-27 18:54:42 +01:00
Andras Bacsai
833a4b9367 Update dynamic configuration setup and version number 2024-03-27 18:41:19 +01:00
Andras Bacsai
6aa82724b4 Merge pull request #1908 from coollabsio/next
v4.0.0-beta.247
2024-03-27 18:26:44 +01:00
Andras Bacsai
cfbee40ecd Add checkbox for Cloudflare Tunnel 2024-03-27 18:26:17 +01:00
Andras Bacsai
79d589c7a9 wip: automatic cloudflare tunnels 2024-03-27 18:24:24 +01:00
Lee Conlin
735c1a23ea Added logto.io compose 2024-03-27 17:17:45 +00:00
Andras Bacsai
6b82fc3011 version++ 2024-03-27 15:12:59 +01:00
Andras Bacsai
d921456036 Merge pull request #1903 from coollabsio/next
v4.0.0-beta.246
2024-03-27 14:55:41 +01:00
Andras Bacsai
6cc93250b8 fix: uis 2024-03-27 14:51:58 +01:00
Andras Bacsai
39082541ff fix: duplicated generated fqdns are now working 2024-03-27 14:51:43 +01:00
Andras Bacsai
8cff40fdd4 fix: disabled inputs are not trucated 2024-03-27 14:51:20 +01:00
Andras Bacsai
a777db1234 fix: async service loads 2024-03-27 14:50:56 +01:00
Andras Bacsai
3fca169096 feat: change page width 2024-03-27 12:45:53 +01:00
Andras Bacsai
58b451f616 Update GitHub Actions versions 2024-03-27 11:59:01 +01:00
Andras Bacsai
f9b82f711f Update platform tags in development-build.yml 2024-03-27 11:48:04 +01:00
Andras Bacsai
d92b5db320 Refactor forgot password page layout 2024-03-27 11:41:14 +01:00
Andras Bacsai
a164e4bf3a Update Docker build configurations for arm64-v8 architecture 2024-03-27 11:38:21 +01:00
Andras Bacsai
be3cbd9e21 Refactor email settings message in email.blade.php 2024-03-27 11:37:09 +01:00
Andras Bacsai
43fed96af1 fix: autoupdater 2024-03-27 11:35:57 +01:00
Andras Bacsai
3d3d31ef29 fix: name/from address required for resend 2024-03-27 11:28:12 +01:00
Andras Bacsai
d51e70bcaa temporary disable containerrestarted for tcp proxies 2024-03-27 11:13:40 +01:00
Andras Bacsai
32f4c6c982 Update documentation links 2024-03-27 11:07:29 +01:00
Andras Bacsai
8f47761200 ui: fix log outputs 2024-03-27 10:54:17 +01:00
iamEvan
88cfc96bd3 Cloudflared Service 2024-03-26 20:34:21 +00:00
Gabriel Peralta
11f389289d Added Classicpress as a service
Wordpress alternative without block editor (Gutenberg), Useful for small sites & lightweight blogs.

PR includes 3 version's with or without database, also logo.svg
2024-03-26 13:58:52 -04:00
Andras Bacsai
342ebecef2 Remove unnecessary version entry for "coolify" main branch 2024-03-26 14:19:25 +01:00
Andras Bacsai
220a8fe2cc Update container and version configurations 2024-03-26 14:18:33 +01:00
Moinul Moin
d9389c91ee Merge branch 'coollabsio:main' into refactor/ui 2024-03-26 19:05:04 +06:00
Andras Bacsai
480cb00098 Merge pull request #1893 from coollabsio/next
v4.0.0-beta.245
2024-03-26 13:58:02 +01:00
Andras Bacsai
07ed550dc2 fix: PR deployments should not be distributed to 2 servers 2024-03-26 13:56:30 +01:00
Andras Bacsai
6045870398 fix: scheduled backup for other service databases (supabase) 2024-03-26 13:50:44 +01:00
Andras Bacsai
2bf102cdf1 fix: multline env in dev mode 2024-03-26 13:36:06 +01:00
Andras Bacsai
889a5b2bce ui: fix 2024-03-26 13:35:55 +01:00
Andras Bacsai
df964a094b Remove commented out code for delayed jobs in Kernel.php 2024-03-26 13:27:06 +01:00
Andras Bacsai
e395d4ecee Update version description in bug report template 2024-03-26 13:26:00 +01:00
Andras Bacsai
d077e0c83c fix: realtime connection check 2024-03-26 13:25:10 +01:00
Andras Bacsai
d931241edc fix: update resources view 2024-03-26 12:51:42 +01:00
Moinul Moin
647376ab3f fix: unintended left padding on sidebar 2024-03-26 11:49:52 +00:00
Andras Bacsai
64a9a72457 fix: ui for tags 2024-03-26 11:52:45 +01:00
Andras Bacsai
a8417aca16 cloud: run cleanup every day 2024-03-26 11:17:48 +01:00
Andras Bacsai
b7b2ecad59 Merge pull request #1888 from coollabsio/next
v4.0.0-beta.244
2024-03-26 10:52:24 +01:00
Andras Bacsai
dcaa2f4168 Refactor error pages 2024-03-26 10:44:52 +01:00
Andras Bacsai
7c7f54d224 Refactor modal input component transitions 2024-03-26 10:29:19 +01:00
Andras Bacsai
b942f8c726 ui ui ui 2024-03-26 10:24:53 +01:00
Andras Bacsai
f661f23ee5 Update background color and text color in app.css 2024-03-25 19:16:39 +01:00
Andras Bacsai
5a631df2a2 uiuiuiui 2024-03-25 19:07:59 +01:00
Andras Bacsai
fc9bb7dac6 Delete user and send email snippets 2024-03-25 16:52:34 +01:00
Andras Bacsai
0a82dc2e8e Remove unused Livewire components 2024-03-25 16:45:34 +01:00
Andras Bacsai
c5eff85c28 Update version numbers and fix UI styling 2024-03-25 16:42:41 +01:00
Andras Bacsai
d1627276a6 Merge pull request #1887 from coollabsio/next
v4.0.0-beta.243
2024-03-25 14:54:35 +01:00
Andras Bacsai
2be2a2621e Update conditional statements in app.blade.php and navbar.blade.php 2024-03-25 14:44:31 +01:00
Andras Bacsai
995c303f27 Refactor Livewire/Boarding/Index.php and resources/views/livewire/boarding/index.blade.php 2024-03-25 14:34:11 +01:00
Andras Bacsai
9c03525369 Remove commented out code in two-factor-challenge.blade.php 2024-03-25 14:29:11 +01:00
Andras Bacsai
afe0673fd1 Commented out x-version component in confirm-password and forgot-password views 2024-03-25 14:24:09 +01:00
Andras Bacsai
37333f7fbe fix: two factor 2024-03-25 14:23:32 +01:00
Andras Bacsai
c9160cabc5 Update version numbers and fix layout in subscription views 2024-03-25 14:09:13 +01:00
Andras Bacsai
9e289d5e97 Merge pull request #1866 from coollabsio/next
v4.0.0-beta.242
2024-03-25 13:52:06 +01:00
Andras Bacsai
901a580e11 Update service-templates.json with new compose configuration 2024-03-25 13:48:03 +01:00
Andras Bacsai
d196292551 Merge pull request #1878 from aruator/patch-1
Update pocketbase.yaml
2024-03-25 13:47:41 +01:00
Andras Bacsai
8d856b0ec6 Merge pull request #1883 from procchio6/fix/oauth
Fix azure oauth not recognizing tenant ID
2024-03-25 13:45:45 +01:00
Andras Bacsai
90fad52760 Update Sentry DSN in config file 2024-03-25 13:40:46 +01:00
Andras Bacsai
2817875461 Temporary disable cdn services list 2024-03-25 13:28:39 +01:00
Andras Bacsai
bcbdee1dcc Refactor Docker-related code and add conditional rendering 2024-03-25 13:10:05 +01:00
Andras Bacsai
3de4f2805a Commented out the changeTheme button in the navbar 2024-03-25 12:47:40 +01:00
Andras Bacsai
995197cad9 Update button label and server retrieval logic***
***Refactor email settings form***
***Update project index view layout
2024-03-25 12:47:10 +01:00
Andras Bacsai
89cc4d1df4 Update database URL label to include IP and PORT (public) 2024-03-25 12:36:04 +01:00
Andras Bacsai
61f3b3592f fix: restart service db proxies 2024-03-25 12:35:31 +01:00
Andras Bacsai
8cb6f67a60 fix: make sure service db proxy restarted 2024-03-25 12:17:52 +01:00
Andras Bacsai
7c580f898c fix: public service database 2024-03-25 12:13:43 +01:00
Andras Bacsai
9ad6ce5851 ui ui ui ui 2024-03-25 11:33:38 +01:00
Andras Bacsai
a66090b594 ui + package updates 2024-03-25 10:41:44 +01:00
Andras Bacsai
d992a3f7d7 Update package dependencies 2024-03-25 09:13:38 +01:00
Andras Bacsai
b418a78e2e ui ui ui (pig) 2024-03-24 16:00:25 +01:00
Pat Rocchio
cae9ae51ad Fix azure oauth not recognizing tenant ID
Co-authored-by: Suraj Kumar <srjkmr1024@gmail.com>
Co-authored-by: Michael Castanieto <mcastanieto@gmail.com>
Co-authored-by: Mike Kim <m.kim4247@gmail.com>
2024-03-22 15:22:27 -04:00
Andras Bacsai
04c92ec4bd Update modal input behavior and limit-reached layout 2024-03-22 17:02:09 +01:00
Andras Bacsai
54834891fb Update styles and classes in blade files 2024-03-22 16:52:20 +01:00
Andras Bacsai
c9e2f4244d Fix route names and styling in blade files 2024-03-22 14:47:36 +01:00
Andras Bacsai
503b86ac13 Update navbar styling and fix subtitle padding 2024-03-22 13:47:54 +01:00
Andras Bacsai
ec051eba38 Delete unused notification components and update notification navbar 2024-03-22 13:25:43 +01:00
Andras Bacsai
2f50f64ecf Update input component and toast position 2024-03-22 13:09:02 +01:00
Andras Bacsai
66fe124dd1 Update CSS styles and fix SVG icons 2024-03-22 12:47:19 +01:00
Andras Bacsai
87e56c2f66 Update border color to dark mode 2024-03-22 12:06:16 +01:00
Andras Bacsai
f044b0292c Refactor invitation link handling in invitations.blade.php 2024-03-22 12:03:59 +01:00
Andras Bacsai
ee1d4cd45d Update popup.blade.php styling 2024-03-22 11:46:59 +01:00
Andras Bacsai
b25f83e096 Refactor Docker creation in Destination Show.php 2024-03-22 11:34:33 +01:00
Andras Bacsai
8b7e1e4169 Refactor code and update UI components 2024-03-22 11:34:15 +01:00
Andras Bacsai
ca9a2cb13a fix: compose env has SERVICE, but not defined for Coolify 2024-03-21 15:36:37 +01:00
Andras Bacsai
93af92743c Refactor modal confirmation layout 2024-03-21 15:00:14 +01:00
Andras Bacsai
0ebef3792d Refactor resource table layout in change.blade.php 2024-03-21 14:49:13 +01:00
Andras Bacsai
7a3bb14653 Refactor password validation and update button label 2024-03-21 14:46:34 +01:00
Andras Bacsai
fbc0a39a1c Refactor navbar links to use "Sponsor us" instead of "Help us" 2024-03-21 14:32:09 +01:00
Andras Bacsai
473bad24b7 ux ux ux ux ui ui ui ui 2024-03-21 14:30:35 +01:00
aruator
313d968985 Update pocketbase.yaml
add a volume mount to persist pocketbase hooks
2024-03-21 12:59:12 +01:00
Andras Bacsai
b5775ff9d2 ui ui ui ui ui ui ux ux ux ux ux ux 2024-03-21 12:44:32 +01:00
Eirik Mo
553c1eacfc Merge branch 'coollabsio:main' into main 2024-03-21 09:39:22 +01:00
Andras Bacsai
8f66a41c09 Remove unnecessary button code in upgrade.blade.php 2024-03-21 08:41:23 +01:00
Andras Bacsai
6721471c63 Update PHP image versions in Dockerfiles 2024-03-20 20:30:46 +01:00
Andras Bacsai
638421de40 Update release version to 4.0.0-beta.242 2024-03-20 16:43:19 +01:00
Andras Bacsai
7bc5338cb3 Merge branch 'main' into next 2024-03-20 16:42:55 +01:00
Andras Bacsai
07c9db9b54 fix: shared env variable parsing 2024-03-20 16:41:10 +01:00
Andras Bacsai
fafc4fb71e Update UI elements and text content 2024-03-20 15:46:59 +01:00
Andras Bacsai
6b49d32102 Merge pull request #1833 from procchio6/feature/oauth
Add oauth support
2024-03-20 14:00:06 +01:00
Andras Bacsai
3a391aa3cb Merge branch 'next' into feature/oauth 2024-03-20 13:59:56 +01:00
Andras Bacsai
42019321e3 Merge branch 'feature' into feature/oauth 2024-03-20 13:58:31 +01:00
Andras Bacsai
b61860b3ab ui: redesign 2024-03-20 12:54:06 +01:00
Andras Bacsai
91950e1891 ui: redesign 2024-03-19 15:37:16 +01:00
Manuel
0032d3cf6c Fix db_name quotes 2024-03-19 11:58:46 +01:00
Andras Bacsai
42715bba50 fix: volumes for prs 2024-03-19 11:48:25 +01:00
Andras Bacsai
0aacad655d Refactor previews.blade.php to improve code readability 2024-03-19 11:05:02 +01:00
Manuel
bd81cc1cc4 Use db name parameter for jwt sql 2024-03-19 10:35:50 +01:00
Andras Bacsai
289480c954 feat: able to run scheduler/horizon programatically 2024-03-19 10:24:23 +01:00
Andras Bacsai
3da7746629 update packages in helper container 2024-03-19 10:24:09 +01:00
Andras Bacsai
8d48051a8d Update Node.js version in Dockerfile 2024-03-19 10:22:35 +01:00
Andras Bacsai
ec16c0f0f4 update cloudflared version 2024-03-19 10:21:40 +01:00
Manuel
bc36fcb722 Supabase Fixes: Default database name 2024-03-18 20:23:50 +01:00
Andras Bacsai
19d19112d9 Add healthcheck for Umami service and update service-templates.json 2024-03-18 15:40:25 +01:00
Andras Bacsai
d9f1c2a406 Merge pull request #1861 from coollabsio/next
v4.0.0-beta.240
2024-03-18 15:21:41 +01:00
Andras Bacsai
ef2be40478 Refactor dashboard view to remove unnecessary code and improve readability 2024-03-18 14:35:46 +01:00
Andras Bacsai
8e2ee5e5e4 fix: dashboard view if no project found 2024-03-18 14:32:49 +01:00
Andras Bacsai
c3da2bfade Update Supabase port to 8000 2024-03-18 14:00:26 +01:00
Andras Bacsai
bbd6780971 Add port configuration for Supabase service 2024-03-18 13:03:56 +01:00
Andras Bacsai
0a6dab1f24 fix: raw compose deployment 2024-03-18 12:40:58 +01:00
Andras Bacsai
faa9a982a9 fix: multiline input 2024-03-18 12:28:53 +01:00
Andras Bacsai
de8bb8a951 fix: custom ip address should turn off rolling update 2024-03-18 12:18:11 +01:00
Andras Bacsai
b766eef5ef fix: consistent container name 2024-03-18 12:13:08 +01:00
Andras Bacsai
a185787044 fix: 0 in env value 2024-03-18 11:49:26 +01:00
Andras Bacsai
76f7cd08ee fix: only escape envs after v239+ 2024-03-18 11:36:36 +01:00
Andras Bacsai
460451bcce Update function to handle edge cases 2024-03-18 11:09:16 +01:00
Andras Bacsai
71edb68995 Update GOTRUE_SITE_URL environment variable 2024-03-18 11:09:00 +01:00
Andras Bacsai
e188482247 Merge pull request #1842 from estubmo/supabase
Supabase Fixes - Edge Functions and Email Redirect
2024-03-18 11:08:37 +01:00
Andras Bacsai
047d320665 Merge branch 'next' into supabase 2024-03-18 11:08:28 +01:00
Andras Bacsai
5c4d9a85be Merge pull request #1845 from hamanuha/patch-1
Supabase: Fixes for Realtime
2024-03-18 11:06:43 +01:00
Andras Bacsai
56c08056d2 Merge pull request #1858 from Omikorin/patch-1
fix: empty get logs number of lines
2024-03-18 11:05:20 +01:00
Andras Bacsai
b39ac73cd8 fix: server stopped, service page not reachable 2024-03-18 08:53:44 +01:00
Michał Korczak
c9054e7d8c fix: empty get logs number of lines 2024-03-17 18:27:01 +01:00
Andras Bacsai
adf5c9bd46 Refactor environment variable handling in ApplicationDeploymentJob.php 2024-03-15 22:16:22 +01:00
Andras Bacsai
3ea3674407 fix: multiline env variables 2024-03-15 22:02:37 +01:00
Andras Bacsai
657c7d8cff Refactor form components
Update Input and Textarea components to use nullable type declarations and remove unused imports.
2024-03-15 20:40:50 +01:00
Manuel
350e32326f Fix app name of realtime for logging 2024-03-15 13:25:49 +01:00
Manuel
1894573c2f Change service name directly 2024-03-15 09:19:30 +01:00
Manuel
73f889ac9f Fix realtime container name and env var 2024-03-15 07:11:05 +01:00
Andras Bacsai
a336dae84c fix: $ in env variable
feat: multiline envs
2024-03-14 23:00:06 +01:00
Andras Bacsai
467c826c04 Merge pull request #1843 from coollabsio/next
v4.0.0-beta.239
2024-03-14 21:23:36 +01:00
Andras Bacsai
a4c164a57e fix: duplicate dockerfile 2024-03-14 21:19:37 +01:00
Eirik Mo
11cd553949 Merge branch 'next' into main 2024-03-14 19:21:20 +01:00
Eirik Mo
8c0c22a925 Merge branch 'main' into supabase 2024-03-14 19:21:02 +01:00
Eirik Mo
c8d528ffc4 fix: supabase edge functions
fix: GOTRUE_SITE_URL should be SERVICE_SITE_URL for correct redirects
fix: DB_AFTER_CONNECT_QUERY value will be incorrecly resolved if it's inside quotes
chore: update image versions
2024-03-14 19:18:07 +01:00
Andras Bacsai
bb7b1f9e0c Merge pull request #1841 from coollabsio/next
v4.0.0-beta.238
2024-03-14 19:16:35 +01:00
Andras Bacsai
f994f83ce1 revert validateCompose until further investigation 2024-03-14 19:15:30 +01:00
Andras Bacsai
2af083b2e5 Merge pull request #1816 from coollabsio/next
4.0.0-beta.237
2024-03-14 10:34:34 +01:00
Andras Bacsai
de4d0961da Add Sleep class and refactor container name in generate_compose_file() 2024-03-14 10:10:03 +01:00
Andras Bacsai
c8d48ccbff fix: docker compose validation 2024-03-14 09:21:48 +01:00
Andras Bacsai
695d3b82b5 Add toast timeout functionality 2024-03-14 09:10:32 +01:00
Andras Bacsai
965625ad01 fix: create initial files async 2024-03-13 18:26:30 +01:00
Andras Bacsai
379733938c Update environment variable description 2024-03-13 15:07:43 +01:00
Andras Bacsai
3198999746 Fix null check for memory swappiness and CPU shares 2024-03-13 15:00:29 +01:00
Andras Bacsai
1f03499fc5 feat: show resources on source page 2024-03-13 14:55:44 +01:00
Andras Bacsai
a53d888747 Add pre-deployment and post-deployment commands 2024-03-13 14:41:31 +01:00
Andras Bacsai
62905f084f Merge pull request #1723 from stooit/feat/post-deploy-command
Adds basic support for pre/post-deployment commands.
2024-03-13 14:34:44 +01:00
Andras Bacsai
ba7ee4fba7 Remove Penpot environment file and update preselect branch URL 2024-03-13 14:34:19 +01:00
Andras Bacsai
6cb3df9350 rename boarding to onboarding 2024-03-13 12:11:37 +01:00
Andras Bacsai
5c1c71c625 Merge pull request #1825 from hades200082/main
Added Penpot service
2024-03-13 12:11:13 +01:00
Andras Bacsai
7fd0cfc85f Merge pull request #1831 from mmbytesolutions/next
ui: visual feedback when container is unhealthy
2024-03-13 12:04:59 +01:00
Andras Bacsai
efad3b1284 Merge pull request #1823 from fabiangigler/patch-1
improve onboarding messages
2024-03-13 12:04:15 +01:00
Andras Bacsai
a06de9682c Add default 404 redirect for Caddy proxy 2024-03-13 11:25:34 +01:00
Andras Bacsai
0d4ad05c1c Add custom_healthcheck_found flag to ApplicationDeploymentJob 2024-03-13 10:50:05 +01:00
Andras Bacsai
aef088a9d2 fix: consider custom healthchecks in dockerfile 2024-03-13 10:44:15 +01:00
Andras Bacsai
e8f3aa681e fix: failed deployments should send failed email/notification 2024-03-13 10:24:45 +01:00
Andras Bacsai
42293fb11a feat: reset password 2024-03-13 10:10:53 +01:00
Andras Bacsai
65e0eb5205 Refactor dynamic configurations and update textarea rows 2024-03-13 09:32:42 +01:00
Andras Bacsai
2f1a7f8f40 Update service environment variables 2024-03-13 09:27:42 +01:00
Andras Bacsai
73e9410264 Add port configuration for services 2024-03-12 20:03:11 +01:00
Andras Bacsai
c835c02bf2 Update port numbers for services 2024-03-12 19:09:08 +01:00
Andras Bacsai
336d44a5cc Refactor fqdnLabelsForCaddy function to handle serviceLabels parameter 2024-03-12 19:08:52 +01:00
Andras Bacsai
7027931095 Add port configuration for services 2024-03-12 17:47:32 +01:00
Andras Bacsai
87b56d538d Add Grafana service configuration and update service templates 2024-03-12 17:43:00 +01:00
Andras Bacsai
0519ce2001 Fix reloadCaddy() method call in addDynamicConfiguration() 2024-03-12 17:36:32 +01:00
Andras Bacsai
d4d0330f70 Fix reloadCaddy() method call in delete() function 2024-03-12 17:35:53 +01:00
Andras Bacsai
25ae54cab7 fix: service ports for services + caddy 2024-03-12 15:09:24 +01:00
Andras Bacsai
a67576b447 Update reverse proxy configuration in docker.php 2024-03-12 13:01:15 +01:00
Andras Bacsai
4d181eef8e Refactor proxy type retrieval in Server and Proxy classes 2024-03-12 12:45:55 +01:00
Andras Bacsai
1835a91467 fix: proxy switch 2024-03-12 12:30:40 +01:00
Andras Bacsai
bcc61b0d8b Add reverse proxy configuration for coolify-realtime 2024-03-12 11:34:57 +01:00
Andras Bacsai
f8055e7976 fix: /realtime endpoint 2024-03-12 11:32:40 +01:00
Andras Bacsai
2509406d1c fix: startproxy event
fix: add data to async remove processes
2024-03-12 11:22:02 +01:00
Andras Bacsai
b3d15f91e4 Remove skip(10) from activity_log and webhooks cleanup 2024-03-12 10:58:31 +01:00
Andras Bacsai
85c36df2a3 Refactor database cleanup queries to keep the last 10 entries 2024-03-12 10:58:28 +01:00
Andras Bacsai
6ef79f5213 Refactor database cleanup command to include dry-run mode 2024-03-12 10:57:07 +01:00
Andras Bacsai
b576014d07 fix: reload caddy issue 2024-03-12 10:42:56 +01:00
Pat Rocchio
1f37318f79 Add oauth support
- Support azure, bitbucket, github, gitlab, google providers
- Add authentication page to settings

Co-authored-by: Suraj Kumar <srjkmr1024@gmail.com>
Co-authored-by: Michael Castanieto <mcastanieto@gmail.com>
Co-authored-by: Mike Kim <m.kim4247@gmail.com>
2024-03-11 17:29:57 -04:00
Andras Bacsai
6950966b06 Commented out reloadCaddy() calls in DynamicConfigurationNavbar.php, NewDynamicConfiguration.php, and Server.php 2024-03-11 20:39:41 +01:00
Andras Bacsai
8eacf67725 Remove unnecessary code in StartProxy.php 2024-03-11 20:25:35 +01:00
Andras Bacsai
52120e7a38 Add dynamic proxy configuration setup in StartProxy.php and update proxyPath() in Server.php 2024-03-11 20:17:37 +01:00
Eirik Mo
45a3f82c8d feat: upgrade Appwrite service template to 1.5 2024-03-11 17:57:45 +01:00
Andras Bacsai
1490828069 feat: dynamic configuration for caddy 2024-03-11 17:31:28 +01:00
Andras Bacsai
9bdad6bb67 feat caddy dynamic configurations 2024-03-11 17:17:34 +01:00
Andras Bacsai
f24063cfea Add CADDY_DOCKER_POLLING_INTERVAL environment variable 2024-03-11 15:36:45 +01:00
Andras Bacsai
1defed27a0 Refactor compose file generation and add link to documentation 2024-03-11 15:19:04 +01:00
Andras Bacsai
34d6a12d95 feat: experimental caddy support 2024-03-11 15:08:05 +01:00
Andras Bacsai
5d3de967f0 fix: fqdn null in case docker compose bp 2024-03-11 09:42:16 +01:00
Andras Bacsai
8b73f9da17 fix: deploy api messages 2024-03-11 09:42:02 +01:00
Mr. Mendez
820099622e visual feedback when container is unhealthy 2024-03-10 18:14:53 +00:00
Lee Conlin
e9c9a51b8d Added Authentik identity server as a service 2024-03-09 21:50:56 +00:00
Lee Conlin
366d39a7a3 Added some default env values for penpot 2024-03-09 00:21:47 +00:00
Lee Conlin
853a14c6b8 Added PenPot service template 2024-03-09 00:21:35 +00:00
Fabian Gigler
15ca68f7e1 improve onboarding messages 2024-03-08 18:44:42 +01:00
Andras Bacsai
8b9548a463 Refactor resource mapping in resources() method 2024-03-08 15:16:58 +01:00
Andras Bacsai
6688120aee Update team-by-id-members API documentation link 2024-03-07 15:46:27 +01:00
Andras Bacsai
93e4e723fa Add documentation links to error responses in Team controller 2024-03-07 15:45:49 +01:00
Andras Bacsai
8b74e50c50 Add two-factor authentication fields to hidden array in User model 2024-03-07 13:05:04 +01:00
Andras Bacsai
129a644781 ui: make notifications separate view
fix: popup if no notifications are set
2024-03-07 12:58:04 +01:00
Andras Bacsai
bbfbd4a105 Refactor domain handling in API controller 2024-03-07 12:36:49 +01:00
Andras Bacsai
9d31d990fc Update error message for missing resources 2024-03-07 12:35:38 +01:00
Andras Bacsai
c7f15c42fa feat: add deployments api 2024-03-07 12:27:23 +01:00
Andras Bacsai
515d401746 feat: add deployment details to deploy endpoint 2024-03-07 12:22:18 +01:00
Andras Bacsai
2a03b452d3 feat: team api endpoint 2024-03-07 12:01:21 +01:00
Andras Bacsai
7aa8c765f6 Refactor domain IP handling in Domains controller 2024-03-07 11:49:15 +01:00
Andras Bacsai
038f65aae6 Add InstanceSettings model and update IP handling in domains controller 2024-03-07 11:42:16 +01:00
Andras Bacsai
db24828a5a Refactor resource retrieval in API controller 2024-03-07 11:37:56 +01:00
Andras Bacsai
c7693d0ec3 feat: resources api endpoint 2024-03-07 11:35:00 +01:00
Andras Bacsai
5e2afd4b4d Refactor domain grouping in domains API controller 2024-03-07 11:25:15 +01:00
Andras Bacsai
7a21312daf feat: domains api endpoint 2024-03-07 11:14:03 +01:00
Andras Bacsai
051a1405e7 Refactor backup execution and cleanup functionality 2024-03-07 10:27:21 +01:00
Andras Bacsai
a6669ed876 Update version and add check for Docker installed via snap 2024-03-07 09:59:19 +01:00
Andras Bacsai
f1b00436aa Update link target in stack-form.blade.php 2024-03-07 09:56:09 +01:00
Andras Bacsai
e699103d3e Update application names and base directories 2024-03-06 15:34:21 +01:00
Andras Bacsai
ba9cb88ca3 Update slogans and healthcheck command in next-image-transformation.yaml and service-templates.json 2024-03-06 10:58:08 +01:00
Andras Bacsai
365850d922 Update version numbers + add next-image-transformation service 2024-03-06 10:57:39 +01:00
Andras Bacsai
46ed17c99e Merge pull request #1812 from coollabsio/next
v4.0.0-beta.236
2024-03-05 16:25:08 +01:00
Andras Bacsai
fadff798a7 Update server installation method 2024-03-05 16:23:46 +01:00
Andras Bacsai
81512bb3b7 Update server and version configurations 2024-03-05 15:47:43 +01:00
Andras Bacsai
3dd00dd91a Merge pull request #1811 from coollabsio/next
v4.0.0-beta.235
2024-03-05 10:29:41 +01:00
Andras Bacsai
fd97c5085b Update devDependencies in package.json 2024-03-05 10:26:32 +01:00
Andras Bacsai
fa6a249fb4 Update Docker installation for AlmaLinux 2024-03-05 10:24:02 +01:00
Andras Bacsai
0aa9b1735b Update currentState in selectExistingServer method 2024-03-05 10:07:28 +01:00
Andras Bacsai
6027bee3b8 Refactor repository selection logic in GithubPrivateRepository.php 2024-03-05 09:58:02 +01:00
Andras Bacsai
4d72787c83 fix: sort repositories by name 2024-03-05 09:40:38 +01:00
Andras Bacsai
c6740cfea0 fix: make sure to show some buttons 2024-03-05 09:37:35 +01:00
Andras Bacsai
9c1d585c43 Fix condition to return current team if user has teams 2024-03-05 09:22:38 +01:00
Andras Bacsai
863acf988e Fix selected repository ID assignment in loadRepositories method 2024-03-05 09:21:12 +01:00
Andras Bacsai
a6b3beafbb Fix issue with loading repositories in GithubPrivateRepository.php 2024-03-05 09:20:50 +01:00
Andras Bacsai
2ffc3f497b fix: should note delete personal teams 2024-03-05 09:19:15 +01:00
Andras Bacsai
f3a279be26 revert delayed jobs 2024-03-05 08:49:11 +01:00
Andras Bacsai
9ad6631747 Update version numbers 2024-03-04 14:32:17 +01:00
Andras Bacsai
0131f5e341 Merge pull request #1807 from coollabsio/next
v4.0.0-beta.234
2024-03-04 13:40:42 +01:00
Andras Bacsai
b5ab9a8da6 Add custom docker run options for application 2024-03-04 13:39:34 +01:00
Andras Bacsai
57fa2709da Add font preloading and DNS prefetching 2024-03-04 13:34:20 +01:00
Andras Bacsai
96c6a198d7 Fix base64 encoding for TOTP_VAULT_KEY 2024-03-04 12:50:56 +01:00
Andras Bacsai
d106d4bd4e Refactor generateEnvValue function to use base64 encoding for certain cases 2024-03-04 12:46:37 +01:00
Andras Bacsai
53cd3091f7 Add Directus service fields to extraFields method 2024-03-04 12:46:33 +01:00
Andras Bacsai
f1e7b870aa Add TOTP_VAULT_KEY environment variable to Plausible service 2024-03-04 12:30:32 +01:00
Andras Bacsai
99fe076b5a Add scheduled task for database cleanup if not in cloud environment 2024-03-04 12:17:33 +01:00
Andras Bacsai
65fcaa17d9 Update exception in PreventRequestsDuringMaintenance middleware and version numbers 2024-03-04 11:41:02 +01:00
Andras Bacsai
89c6563e00 Merge pull request #1806 from coollabsio/next
v4.0.0-beta.233
2024-03-04 11:18:56 +01:00
Andras Bacsai
76b0bef32e Update slogan and logo for changedetection service 2024-03-04 11:17:05 +01:00
Andras Bacsai
c20aa0b256 Refactor method names to use camel case 2024-03-04 11:01:14 +01:00
Andras Bacsai
b4908cfcb4 Merge pull request #1804 from RayBB/change-detection
add changedetection.io template
2024-03-04 10:47:54 +01:00
Andras Bacsai
4fb5b04d27 Update proxy configuration layout 2024-03-04 10:46:53 +01:00
Andras Bacsai
8385bbb0a0 feat: gzip enabled & stipprefix setting
refactor: code
2024-03-04 10:46:13 +01:00
Andras Bacsai
cee6b54033 Add proxy start functionality when selecting a proxy type 2024-03-04 10:42:54 +01:00
Andras Bacsai
0dd591a5ff fix: raw compose make dirs
fix: raw compose add coolify labels
2024-03-04 10:13:40 +01:00
Andras Bacsai
62278126e4 fixes 2024-03-04 09:12:23 +01:00
Andras Bacsai
0aa85a3701 fix: service status updated 2024-03-04 08:57:18 +01:00
Andras Bacsai
0e1ba64836 fix: sentry error 2024-03-04 08:51:24 +01:00
Andras Bacsai
f7e1ce8656 fix: env value generation 2024-03-04 08:49:53 +01:00
RayBB
5030c14dc2 add changedetection.io template 2024-03-03 23:42:33 +01:00
Andras Bacsai
1333cd1d84 Merge pull request #1799 from coollabsio/next
v4.0.0-beta.232
2024-03-02 16:04:06 +01:00
Andras Bacsai
112c259d27 Refactor destinations method in Server model 2024-03-02 15:58:02 +01:00
Andras Bacsai
130d1e1756 Update DockerCleanupJob and version numbers 2024-03-02 15:18:49 +01:00
Andras Bacsai
a7df9fa625 Merge pull request #1798 from coollabsio/next
v4.0.0-beta.231
2024-03-02 15:04:48 +01:00
Andras Bacsai
9064aedc89 Fix server reference in ExecuteContainerCommand.php 2024-03-02 15:02:55 +01:00
Andras Bacsai
fda5d23d32 feat: logs and execute commands with several servers 2024-03-02 14:55:39 +01:00
Andras Bacsai
60be51dbe0 Update pull_request_id comparison in ApplicationDeploymentJob.php and update version numbers 2024-03-02 13:22:05 +01:00
Andras Bacsai
e9f451339f Merge pull request #1796 from coollabsio/next
fix: unmanaged containers method
2024-03-01 19:14:18 +01:00
Andras Bacsai
4d8ffd05a9 Refactor unmanagedContainers property in Resources.php and add conditional return in loadUnmanagedContainers() method 2024-03-01 19:13:22 +01:00
Andras Bacsai
b630105572 Merge pull request #1795 from coollabsio/next
v4.0.0-beta.230
2024-03-01 19:09:09 +01:00
Andras Bacsai
9fa71f847f Refactor notification channels based on cloud environment 2024-03-01 19:08:00 +01:00
Andras Bacsai
f70a9c6974 Fix notification channels in ApplicationDeploymentJob and DeploymentSuccess 2024-03-01 19:07:21 +01:00
Andras Bacsai
a4d173c733 Fix unmanagedContainers type declaration 2024-03-01 19:00:45 +01:00
Andras Bacsai
2eb7712e09 fix: remove success application deployment job
wip: daily backup status
2024-03-01 18:24:14 +01:00
Andras Bacsai
54923b7640 feat: collect webhooks during maintenance 2024-03-01 14:04:29 +01:00
Andras Bacsai
bb927505fe Merge pull request #1793 from coollabsio/next
v4.0.0-beta.229
2024-03-01 11:47:14 +01:00
Andras Bacsai
5e66e314d2 Update version numbers to 4.0.0-beta.229 2024-03-01 11:44:01 +01:00
Andras Bacsai
6fe791c1f1 fix: pull request deployments + build servers 2024-03-01 11:43:42 +01:00
Andras Bacsai
860c537f81 Add server limit override for development environment 2024-03-01 11:41:28 +01:00
Andras Bacsai
a352e4cbf7 fix: public prs should not be commented 2024-03-01 11:41:22 +01:00
Andras Bacsai
5322d446bd fix: service container status updates 2024-03-01 10:36:32 +01:00
Andras Bacsai
604ab0afd8 Add autofocus to search input field 2024-03-01 10:06:59 +01:00
Andras Bacsai
3d87a88d3d Merge pull request #1790 from coollabsio/next
v4.0.0-beta.228
2024-03-01 09:32:19 +01:00
Andras Bacsai
10f9e22a8e fix: do not show n/a networsk 2024-03-01 09:28:14 +01:00
Andras Bacsai
8edda0cdda fix: load unmanaged async 2024-03-01 09:25:27 +01:00
Andras Bacsai
21047afc02 Add new sponsor image 2024-03-01 09:19:23 +01:00
Andras Bacsai
2e9793ffb2 Refactor code for improved performance and readability 2024-02-29 09:21:02 +01:00
Andras Bacsai
fcd100df39 Fix typos and grammatical errors in email templates and form view 2024-02-29 09:16:02 +01:00
Andras Bacsai
dfd564a3a4 Add Supabase logo and update environment variable in compose file 2024-02-29 09:15:06 +01:00
Andras Bacsai
a43c916009 Refactor code and add new fields for Kong service 2024-02-28 13:48:39 +01:00
Andras Bacsai
c8332ca9bf fix: resource tab not loading if server is not reachable 2024-02-28 09:51:45 +01:00
Andras Bacsai
e98170f921 Update Github Sponsors to $40+ 2024-02-28 09:38:59 +01:00
Andras Bacsai
b8f25406cd Refactor code to improve performance and readability 2024-02-27 15:44:19 +01:00
Andras Bacsai
76dcc12b13 Update version numbers to 4.0.0-beta.228 2024-02-27 15:13:30 +01:00
Andras Bacsai
baa2228c9b Merge pull request #1786 from coollabsio/next
v4.0.0-beta.226
2024-02-27 09:10:31 +01:00
Andras Bacsai
5275ae8e9c Refactor getLogs method and update view template 2024-02-27 09:08:15 +01:00
Andras Bacsai
c71e1e107e Refactor getLogs method and update get-logs.blade.php view 2024-02-27 09:05:28 +01:00
Andras Bacsai
8ab72c7e10 feat: preview deployment logs 2024-02-27 09:01:19 +01:00
Andras Bacsai
a8970df91b Update class names in controllers 2024-02-27 08:03:42 +01:00
Andras Bacsai
2468251f56 Merge pull request #1783 from coollabsio/next
v4.0.0-beta.226
2024-02-26 14:31:16 +01:00
Andras Bacsai
6e74f3e40e Merge pull request #1779 from Rei-x/next
Fix import to mysql and mariadb
2024-02-26 14:30:35 +01:00
Andras Bacsai
407f84a4bb Refactor Dockerfile location handling in ApplicationDeploymentJob.php 2024-02-26 14:28:02 +01:00
Andras Bacsai
91632f0adb fix: custom dockerfile location always checked 2024-02-26 14:26:19 +01:00
Andras Bacsai
af3c575d84 fix: server disabled 2024-02-26 14:22:24 +01:00
Andras Bacsai
bf1475441d Update service stop message and fix sidebar alignment 2024-02-26 12:38:15 +01:00
Andras Bacsai
9268f9db1d Refactor user switching logic and update UI 2024-02-26 11:48:35 +01:00
Andras Bacsai
600c43827a Update server check and version numbers 2024-02-26 11:25:38 +01:00
Andras Bacsai
74092ea95b Merge pull request #1776 from coollabsio/next
4.0.0-beta.225
2024-02-26 11:08:53 +01:00
Andras Bacsai
b67abe58e8 Remove commented out code in ServerStatusJob.php 2024-02-26 10:34:44 +01:00
Andras Bacsai
678647f39a fix: force enable/disable server in case ultimate package quantity decreases 2024-02-26 10:25:21 +01:00
Andras Bacsai
453956172b Refactor show.blade.php to improve code readability 2024-02-26 09:32:28 +01:00
Andras Bacsai
b550c32f9b Add whitespace-pre-line class to font-mono in deployment show blade file 2024-02-26 09:09:01 +01:00
Andras Bacsai
f6b886adbc revert delayed jobs for now 2024-02-26 08:52:46 +01:00
Andras Bacsai
9642453052 fix: firefly service 2024-02-26 08:52:17 +01:00
Andras Bacsai
64fca99c26 feat: server disabled by overflow 2024-02-25 23:34:01 +01:00
Andras Bacsai
c7da43f50d feat: add static ipv4 ipv6 support 2024-02-25 23:13:27 +01:00
Rei
6efa2dd9ba fix: import to mysql and mariadb 2024-02-25 22:15:48 +01:00
Andras Bacsai
5e980c5fe0 Update pricing plans layout and text 2024-02-25 22:14:20 +01:00
Andras Bacsai
c8c7a415ea Add new Livewire component and update subscription actions 2024-02-25 22:08:44 +01:00
Andras Bacsai
c3cfb8d23b Refactor getRecepients method and fix serverLimitReached method in Team model 2024-02-25 18:22:24 +01:00
Andras Bacsai
1b055f0316 Refactor subscription pricing and update server limit 2024-02-25 14:00:35 +01:00
Andras Bacsai
1fcbf0b363 Update pricing plans display and button text 2024-02-23 22:14:24 +01:00
Andras Bacsai
61dbc81765 feat: delay container/server jobs 2024-02-23 21:51:43 +01:00
Andras Bacsai
b8b76dfa40 Refactor CleanupQueue to CleanupDatabase 2024-02-23 21:05:48 +01:00
Andras Bacsai
297b314904 feat: custom server limit 2024-02-23 15:45:53 +01:00
Andras Bacsai
55dd1ab0a1 Update cleanup script and version numbers 2024-02-23 14:39:52 +01:00
Andras Bacsai
8c803f1c4b Merge pull request #1775 from coollabsio/next
v4.0.0-beta.224
2024-02-23 13:57:11 +01:00
Andras Bacsai
3b942049a2 Refactor subscription handling logic in middleware and model 2024-02-23 13:50:48 +01:00
Andras Bacsai
f78fd212bb fix: subscription / plan switch, etc 2024-02-23 12:59:14 +01:00
Andras Bacsai
f931ebece8 feat: make user owner
fix: ownership check
2024-02-23 12:34:36 +01:00
Andras Bacsai
ea0a9763bf Update navbar icons 2024-02-23 11:23:14 +01:00
Andras Bacsai
b59e47dcf9 fix: stripe invoice paid webhook
fix: prepare customer initiated tier change
fix: separate view for subscriptions
2024-02-23 11:21:14 +01:00
Andras Bacsai
ce09ef8848 Merge pull request #1774 from steveworley/fix/ux-hamburger-extra-menu-options
Fix: Change + icon to hamburger.
2024-02-23 10:18:38 +01:00
Andras Bacsai
188727daba Update version numbers 2024-02-23 10:14:32 +01:00
Andras Bacsai
1150633fef fix: unknown image of service until it is uploaded 2024-02-23 10:14:13 +01:00
Andras Bacsai
62ae845f4b fix: complex service status
service: firefly III
2024-02-23 10:09:42 +01:00
Steve Worley
0757fd741e Fix: Change + icon to hamburger. 2024-02-23 09:21:11 +10:00
Andras Bacsai
a07fa8ccd2 Merge pull request #1773 from coollabsio/next
v4.0.0-beta.223
2024-02-22 15:23:27 +01:00
Andras Bacsai
c77f32e696 fix: statuses 2024-02-22 15:15:16 +01:00
Andras Bacsai
4391771416 Merge pull request #1768 from coollabsio/next
v4.0.0-beta.222
2024-02-22 14:56:55 +01:00
Andras Bacsai
01ab820459 Fix error message formatting in handleError function 2024-02-22 14:56:41 +01:00
Andras Bacsai
c7218f2856 Update success messages 2024-02-22 14:53:42 +01:00
Andras Bacsai
592221b4bf fix: server validation 2024-02-22 14:46:11 +01:00
Andras Bacsai
836458ad85 fix: no coolify.yaml found 2024-02-22 14:45:56 +01:00
Andras Bacsai
7233c86f3d fix: use latest image if nothing is specified 2024-02-22 14:45:41 +01:00
Andras Bacsai
154b1b05e4 feat: able to add dynamic configurations from proxy dashboard 2024-02-22 13:29:28 +01:00
Andras Bacsai
4d88638d4d Update proxy configuration in bootstrap/helpers/proxy.php 2024-02-22 12:00:16 +01:00
Andras Bacsai
9403986643 Merge pull request #1767 from iamEvanYT/fix-stuck-connections
fix: connections being stuck and not processed until proxy restarts
2024-02-22 11:59:52 +01:00
Andras Bacsai
ad48610b2f Merge pull request #1770 from piscis/patch-2
fix: Avoid breaking the tile layout with long fqdn output
2024-02-22 11:54:25 +01:00
Andras Bacsai
63487cf3ec feat: minversion for services 2024-02-22 11:53:25 +01:00
Andras Bacsai
4ae2087c2e fix: server validation 2024-02-22 11:28:45 +01:00
Andras Bacsai
5179129a6b fix: complex container status
feat: able to change primary server
feat: links inside the logs
2024-02-22 10:57:05 +01:00
Andras Bacsai
6a00d8c88c Refactor loadData method in Destination.php 2024-02-22 09:38:09 +01:00
Andras Bacsai
50f43f9396 Update resource view to set type as 'public' 2024-02-22 09:38:03 +01:00
Alex
6f205f8931 Force browser to break all words on line end for fqdn output
Force the browser to break long lines for the fqdn output instead of overflowing the tile
2024-02-21 19:16:09 +01:00
Andras Bacsai
3776ffa49b disable administration gh permission for now 2024-02-21 14:42:38 +01:00
Andras Bacsai
318b5beac1 Update select.blade.php with responsive styling 2024-02-21 14:40:48 +01:00
Andras Bacsai
344c5d6d12 Update service configurations 2024-02-21 14:30:32 +01:00
Andras Bacsai
4d319a8caa Update service and shared helper files 2024-02-21 12:22:32 +01:00
Andras Bacsai
74b24a0690 Add file permission change for LocalFileVolume.php and add service_name parameter to fqdnLabelsForTraefik() function 2024-02-21 11:21:11 +01:00
Andras Bacsai
1ca0464957 fix: permission change updates from webhook 2024-02-20 20:17:04 +01:00
Andras Bacsai
f7ebc8a88c feat: save github app permission locally 2024-02-20 18:14:47 +01:00
Andras Bacsai
a102099ac1 icons 2024-02-20 17:08:16 +01:00
Andras Bacsai
59ac22aa05 Update redis.svg icon 2024-02-20 15:45:30 +01:00
Andras Bacsai
cd7244b3d7 Add logos for various services 2024-02-20 15:42:30 +01:00
Andras Bacsai
f81b676abe ui: updates 2024-02-20 15:07:12 +01:00
iamEvan
234b154053 fix: connections being stuck and not processed until proxy restarts 2024-02-20 17:16:43 +08:00
Andras Bacsai
a1d09ad574 Update version numbers to 4.0.0-beta.222 2024-02-19 13:39:05 +01:00
Andras Bacsai
b983b23e7e Merge pull request #1766 from coollabsio/next
v4.0.0-beta.221
2024-02-19 13:29:58 +01:00
Andras Bacsai
0b81e77a94 fix: database status 2024-02-19 13:28:14 +01:00
Andras Bacsai
b8cf314bfe fix: submodule cloning 2024-02-19 13:22:09 +01:00
Andras Bacsai
4a3338e59c Update version numbers 2024-02-19 10:44:52 +01:00
Andras Bacsai
5b8538c0f4 Merge pull request #1763 from coollabsio/next
v4.0.0-beta.220
2024-02-19 09:53:54 +01:00
Andras Bacsai
88d6320d08 Re-enable docker container removal in ApplicationDeploymentJob 2024-02-19 09:51:39 +01:00
Andras Bacsai
651c9c2c9b Merge pull request #1756 from victor-teles/fix/log-drain-parsers
fix: fluent bit parsers.conf indentation level
2024-02-19 09:22:36 +01:00
Andras Bacsai
8dd45cd388 Merge pull request #1757 from victor-teles/fix/revalidate-server-button
fix(server): revalidate server button not showing in server's page
2024-02-19 09:21:50 +01:00
Andras Bacsai
126ac354d5 fix: empty build variables 2024-02-19 09:19:50 +01:00
Victor
024769c402 fix(server): revalidate server button not showing in server's page 2024-02-17 12:43:49 -03:00
Victor
5acf141669 fix: fluent bit ident level 2024-02-17 12:25:48 -03:00
Andras Bacsai
92e3e8ab7b Merge branch 'main' into next 2024-02-17 16:17:01 +01:00
Andras Bacsai
187a29c666 Update README.md 2024-02-17 16:16:42 +01:00
Andras Bacsai
4c24631795 Add coolify.managed flag to proxy configuration 2024-02-16 23:17:29 +01:00
Andras Bacsai
7d6bd10cca Add Docker container management methods and update Livewire component 2024-02-16 23:09:35 +01:00
Andras Bacsai
f8c86769a7 fix: resources 2024-02-16 22:15:18 +01:00
Andras Bacsai
e0b0dda382 Remove unused code for displaying server resources 2024-02-16 22:04:26 +01:00
Andras Bacsai
b8708f086e feat: initial api endpoints
feat: server resources are now looks better
2024-02-16 21:56:38 +01:00
Andras Bacsai
3539e4dce9 Update Docker installation error messages 2024-02-16 09:06:28 +01:00
Andras Bacsai
5fdadcf557 fix: add openbsd ssh server check 2024-02-16 09:04:32 +01:00
Andras Bacsai
acb3f01f79 Merge pull request #1752 from ahmedrowaihi/main
👌 IMPORVE(SCRIPT/INSTALL): Support Archlinux
2024-02-16 09:03:51 +01:00
Andras Bacsai
83becdb19d fix: only show redeployment required if status is not exited 2024-02-16 08:34:30 +01:00
=
e3e8fe7895 👌 IMPORVE(SCRIPT/INSTALL): Support Archlinux 2024-02-16 01:56:16 +03:00
Andras Bacsai
6ddff8fae1 Merge pull request #1748 from coollabsio/next
v4.0.0-beta.219
2024-02-15 21:33:50 +01:00
Andras Bacsai
f5cb2dbdcf Fix condition in removeServer method 2024-02-15 21:25:43 +01:00
Andras Bacsai
fe19769d82 fix: do not add the same server twice 2024-02-15 21:22:59 +01:00
Andras Bacsai
45e404b15b feat: disable gzip compression on service applications 2024-02-15 20:44:01 +01:00
Andras Bacsai
5bdaa68368 Add docker-registry service template and update service-templates.json 2024-02-15 15:39:27 +01:00
Andras Bacsai
d903a377bf Update validation and configuration titles 2024-02-15 14:14:11 +01:00
Andras Bacsai
8e7745f4c1 Remove unnecessary debug statement in Server.php 2024-02-15 13:54:18 +01:00
Andras Bacsai
a9ea6330d9 feat: revalidate server 2024-02-15 13:52:54 +01:00
Andras Bacsai
bfb0260550 fix: use ls / command instead ls 2024-02-15 13:52:42 +01:00
Andras Bacsai
bba1cb3832 fix: ec2 does not have uptime command lol
version++
2024-02-15 13:44:40 +01:00
Andras Bacsai
29ad2144b7 Merge pull request #1747 from coollabsio/next
v4.0.0-beta.218
2024-02-15 12:59:51 +01:00
Andras Bacsai
38d367e709 fix: padding left on input boxes 2024-02-15 12:59:25 +01:00
Andras Bacsai
0e81ff970f Merge pull request #1746 from coollabsio/next
v4.0.0-beta.217
2024-02-15 12:54:38 +01:00
Andras Bacsai
00feef40a3 Fix image tag in docker-compose.prod.yml 2024-02-15 12:29:30 +01:00
Andras Bacsai
dfba593072 feat: magic for traefik redirectregex in services 2024-02-15 12:08:48 +01:00
Andras Bacsai
c770c8d988 Add warning icon for configuration not applied 2024-02-15 12:04:52 +01:00
Andras Bacsai
0f071031a9 Refactor application FQDN handling 2024-02-15 12:01:59 +01:00
Andras Bacsai
99efa857f4 feat: add metabase
feat: consistent container names
fix: for services, you only need to add basicauth label, others are added by coolify
fix: label uuids are not randomly generated all the time
fix: changing force https will change the labels
2024-02-15 11:55:43 +01:00
Andras Bacsai
80035395ff Update version numbers + do not cleanup queue on cloud 2024-02-14 15:31:43 +01:00
Andras Bacsai
d3490e1c95 Merge pull request #1743 from coollabsio/next
v4.0.0-beta.216
2024-02-14 15:21:13 +01:00
Andras Bacsai
dab13c92eb Update disk_usage property type in ServerStatusJob 2024-02-14 15:21:03 +01:00
Andras Bacsai
1f18542960 fix: cleanup scheduled tasks 2024-02-14 15:14:06 +01:00
Andras Bacsai
8f21ea9367 Merge pull request #1727 from lxix/fix-scheduled-tasks
fix: Scheduled Tasks won't execute after deleting resource with scheduled task
2024-02-14 15:02:09 +01:00
Andras Bacsai
73e64d9052 fix: file volume creation
fix: network_mode host compose
2024-02-14 15:00:24 +01:00
Andras Bacsai
6cdd87da41 Update Directus image version to 10 2024-02-14 14:59:38 +01:00
Andras Bacsai
2a5d49f9b3 Merge pull request #1731 from notskamr/patch-1
Update directus-with-postgresql.yaml - Version bump
2024-02-14 14:58:43 +01:00
Andras Bacsai
cc7ba9eb9f Merge pull request #1734 from Geczy/fix-mg
fix: only add 'networks' key if 'network_mode' is absent
2024-02-14 14:31:48 +01:00
Andras Bacsai
c4cc42c8d5 Update version and release numbers 2024-02-14 10:35:44 +01:00
Andras Bacsai
2d0838b112 Merge pull request #1742 from coollabsio/next
v4.0.0-beta.215
2024-02-14 10:32:48 +01:00
Andras Bacsai
07b94a8e48 Update filebrowser.yaml and service-templates.json 2024-02-14 10:31:05 +01:00
Andras Bacsai
4b08abc144 Save storage on initial creation 2024-02-14 10:21:53 +01:00
Andras Bacsai
93e4fc2f32 Update filebrowser image and volume bindings 2024-02-14 10:14:14 +01:00
Andras Bacsai
6dd86eec30 Fix directory creation issue in LocalFileVolume.php and parseDockerComposeFile() 2024-02-14 10:13:49 +01:00
Andras Bacsai
a7ab5d55d3 Add syncthing data volumes and update syncthing service template 2024-02-14 10:00:27 +01:00
Andras Bacsai
689547463c Merge pull request #1712 from RayBB/syncthing-template
add Syncthing template
2024-02-14 09:50:50 +01:00
Andras Bacsai
8a0046c571 update packages + fix tests 2024-02-14 09:21:25 +01:00
Andras Bacsai
fb3991321a Update Coolify version and Sentry configuration 2024-02-14 08:53:13 +01:00
Andras Bacsai
ca6543a919 Merge pull request #1741 from coollabsio/next
v4.0.0-beta.214
2024-02-14 08:44:42 +01:00
Andras Bacsai
364a6aa3a2 fix: boolean docker options 2024-02-14 08:42:47 +01:00
Andras Bacsai
82b0667277 Update version numbers 2024-02-12 12:56:04 +01:00
Andras Bacsai
74c126c731 Merge pull request #1729 from coollabsio/next
v4.0.0-beta.213
2024-02-12 11:56:40 +01:00
Andras Bacsai
d87a0fe74f Refactor authentication check in Index.php 2024-02-12 11:53:28 +01:00
Andras Bacsai
9a858f628d Merge pull request #1732 from fipnooone/fix/previews-flex-wrap
Flex-wrap deployment previews
2024-02-12 11:50:41 +01:00
Andras Bacsai
fed01fa9d2 Fix subscription retrieval and handle missing subscriptions 2024-02-12 11:48:28 +01:00
Andras Bacsai
e1468da36a feat: add proxy start to server validation
fix: boarding flow updated
2024-02-12 11:46:36 +01:00
Andras Bacsai
ddfc1440cd fix: menu 2024-02-12 10:05:45 +01:00
Andras Bacsai
5fc46384e6 Refactor status component to exclude parentheses in status message 2024-02-11 18:08:36 +01:00
Andras Bacsai
48d9df1e43 Add conditional display of deployment server name in previews.blade.php 2024-02-11 17:29:14 +01:00
Andras Bacsai
6b62d91f82 Update service_name parameter to stack_service_uuid in index.blade.php 2024-02-11 17:24:20 +01:00
Matt
e6ca8cd167 fix: only add 'networks' key if 'network_mode' is absent 2024-02-11 09:22:09 -06:00
Andras Bacsai
059748ad3b fix: get service stack as uuid, not name 2024-02-11 15:44:02 +01:00
Andras Bacsai
a334f998a2 Add Bitnami Docker images for MariaDB, MongoDB, MySQL, PostgreSQL, and Redis 2024-02-11 15:40:02 +01:00
Andras Bacsai
53a5ccef31 fix: add docker compose check during server validation 2024-02-11 15:32:58 +01:00
Andras Bacsai
9eea73cefb Update Docker command in InstallLogDrain.php 2024-02-11 14:35:07 +01:00
Andras Bacsai
b210e1f243 fix: lock logdrain configuration when one of them are enabled 2024-02-11 14:31:21 +01:00
fipnooone
ef3202101c fix: flex wrap deployment previews 2024-02-10 13:40:35 +07:00
Varun Sahni
22d5159d16 Update directus-with-postgresql.yaml 2024-02-09 23:19:19 +05:30
Barnabás Schósz
1cbd30bd9e Fix Scheduled Tasks won't execute after deleting resource with scheduled task 2024-02-09 17:36:47 +01:00
Andras Bacsai
ad54358de7 Refactor resource index.blade.php file 2024-02-09 13:57:37 +01:00
Andras Bacsai
3689b58b92 Add success message for cleanup_queue 2024-02-09 13:51:31 +01:00
Andras Bacsai
5a4180a750 Update navbar dropdown menu styling 2024-02-09 13:50:19 +01:00
Andras Bacsai
047922b13a fix: new menu ui 2024-02-09 13:48:40 +01:00
Andras Bacsai
798d747164 add Docker run command parse test 2024-02-09 13:38:17 +01:00
Andras Bacsai
29676ffb22 Update Teams link in navbar.blade.php 2024-02-09 08:42:39 +01:00
Andras Bacsai
8a50b063d4 fix: user proper image_tag, if set 2024-02-08 15:22:07 +01:00
Andras Bacsai
3d2444ab2e Update version 4 to 4.0.0-beta.213 2024-02-08 14:54:30 +01:00
Andras Bacsai
7c395edab4 Fix conditional statement in navbar.blade.php 2024-02-08 14:06:43 +01:00
Andras Bacsai
7e7f322e21 Refactor admin authentication and routing***
***Add redirect for non-cloud users and instance admins without admin token.***

***Always include admin route, regardless of cloud status.
2024-02-08 14:01:16 +01:00
Andras Bacsai
9350fb4b97 Fix access control in Admin Index and hide Admin link in navbar 2024-02-08 13:54:16 +01:00
Andras Bacsai
59c3cc6ce1 Refactor admin authentication logic in Index component 2024-02-08 13:46:43 +01:00
Andras Bacsai
d7001937ac Fix access control in Admin Index and Navbar components 2024-02-08 13:40:26 +01:00
Andras Bacsai
3fe58ec66b Fix isInstanceAdmin function call in Index.php 2024-02-08 13:33:51 +01:00
Andras Bacsai
ed12f73483 Update admin authentication and version numbers 2024-02-08 13:33:34 +01:00
Andras Bacsai
6914280fb1 Merge pull request #1722 from coollabsio/next
v4.0.0-beta.212
2024-02-08 13:20:47 +01:00
Andras Bacsai
3dd5546369 Update destination.blade.php with server configurations 2024-02-08 13:19:11 +01:00
Andras Bacsai
576bff1af9 Remove exception and update server check in StopService 2024-02-08 13:17:08 +01:00
Andras Bacsai
3c4243d854 fix: go to prod env from dashboard if there is no other envs defined 2024-02-08 13:12:23 +01:00
Andras Bacsai
23d121d67a fix: make sure resources are deleted in async mode 2024-02-08 13:10:29 +01:00
Andras Bacsai
548304765c feat: cleanup queue 2024-02-08 12:47:00 +01:00
Andras Bacsai
037ba3ff79 Fix cleanup of halted deployments 2024-02-08 12:37:56 +01:00
Andras Bacsai
48b4c17391 Refactor init command to use full-cleanup option 2024-02-08 12:36:33 +01:00
Andras Bacsai
6acc0e6025 Add dynamic timeout for deployments 2024-02-08 12:34:01 +01:00
Andras Bacsai
43d7f746e4 Refactor destination.blade.php to include server and network information 2024-02-08 11:59:01 +01:00
Andras Bacsai
146fee14e5 Refactor destination.blade.php: Update server selection UI 2024-02-08 11:50:40 +01:00
Andras Bacsai
bde7fb2acb Fix user authentication condition in Index component 2024-02-08 11:46:23 +01:00
Andras Bacsai
08a729dc7b Add admin dashboard route and view 2024-02-08 11:45:19 +01:00
Andras Bacsai
7554de5993 Refactor app:init command and update cleanup options 2024-02-08 11:05:31 +01:00
Stuart Rowlands
0538c2f478 Added pre-deployment support. 2024-02-08 20:02:30 +10:00
Stuart Rowlands
77a0179822 Added basic support for post-deployment commands. 2024-02-08 19:27:43 +10:00
Andras Bacsai
3d7295fec3 fix: new menu on navbar 2024-02-08 09:08:21 +01:00
Andras Bacsai
fd814abd8a Update version numbers to 4.0.0-beta.212 2024-02-07 20:44:17 +01:00
Andras Bacsai
4c38a59995 Merge branch 'main' into next 2024-02-07 20:35:35 +01:00
Andras Bacsai
642a6e3203 Merge pull request #1721 from coollabsio/quick-fix
Update database/service start commands
2024-02-07 20:34:58 +01:00
Andras Bacsai
9edbc15828 Update database start commands 2024-02-07 20:34:13 +01:00
Andras Bacsai
43eb2fb00b new navbar 2024-02-07 15:31:03 +01:00
Andras Bacsai
9a899deeb8 Fix DNS validation and error handling 2024-02-07 14:59:33 +01:00
Andras Bacsai
9e1a7d5d9a feat: multi deployments 2024-02-07 14:55:06 +01:00
Andras Bacsai
5bdbab7276 ui: specific about newrelic logdrains 2024-02-07 09:04:35 +01:00
Andras Bacsai
13bceb934f Refactor Application model and migration 2024-02-06 17:37:07 +01:00
Andras Bacsai
78b194cb16 Refactor application status update logic and add complex_status column 2024-02-06 15:42:31 +01:00
Andras Bacsai
3616fc8ca9 Refactor code and add additional destinations 2024-02-06 15:05:11 +01:00
Andras Bacsai
10e307f92b Refactor help button in navbar and boarding layout 2024-02-06 11:50:03 +01:00
Andras Bacsai
01f027ac1b Update version numbers to 4.0.0-beta.211 2024-02-06 11:41:49 +01:00
Andras Bacsai
dadc7aaf08 Merge pull request #1718 from coollabsio/next
v4.0.0-beta.210
2024-02-06 11:41:17 +01:00
Andras Bacsai
b96807d34c fix: feedback from self-hosted envs to discord 2024-02-06 11:36:20 +01:00
Andras Bacsai
45b736bb01 fix: stripe webhooks 2024-02-06 11:11:26 +01:00
Andras Bacsai
3d873a79a0 Merge pull request #1715 from coollabsio/next
fix: deploy issue with tag deployment
2024-02-06 07:21:33 +01:00
Andras Bacsai
6869c582ff Update retrieval of applications and services in Deploy controller 2024-02-06 07:21:06 +01:00
Andras Bacsai
9b9e5e939c Fix resource not found error and improve mass deployment process 2024-02-06 07:19:11 +01:00
Andras Bacsai
f626c15ecc Update version numbers + fix deploy issue 2024-02-06 07:12:09 +01:00
Andras Bacsai
8df1fe2e60 Merge pull request #1714 from coollabsio/next
Refactor database and service start commands
2024-02-05 20:58:16 +01:00
Andras Bacsai
fd2a533057 Refactor database and service start commands 2024-02-05 20:57:40 +01:00
Andras Bacsai
0a6401f990 Merge pull request #1713 from coollabsio/next
v4.0.0-beta.208
2024-02-05 20:24:44 +01:00
Andras Bacsai
1326fcb345 Add count checks for MySQL and MariaDB in isEmpty() method 2024-02-05 20:15:02 +01:00
Andras Bacsai
8b8e534598 Update version numbers to 4.0.0-beta.208 2024-02-05 19:53:14 +01:00
Andras Bacsai
0b518a3b76 Refactor code to load tags for environment applications and databases 2024-02-05 19:52:06 +01:00
RayBB
f357f40fc7 add syncthing template 2024-02-05 16:45:46 +01:00
Andras Bacsai
93fb14884e Merge pull request #1711 from coollabsio/next
Refactor server validation and installation logic
2024-02-05 15:13:56 +01:00
Andras Bacsai
26ccc4afb4 Refactor server validation and installation logic 2024-02-05 15:13:39 +01:00
Andras Bacsai
5fda1bb932 Merge pull request #1710 from coollabsio/next
v4.0.0-beta.207
2024-02-05 14:57:21 +01:00
Andras Bacsai
409ba8a1bb Refactor application deployment logic 2024-02-05 14:47:06 +01:00
Andras Bacsai
49f5240ff8 fix: better server validation and installation process
fix: add destination to queue deployment
feat: force start deployment
2024-02-05 14:40:54 +01:00
Andras Bacsai
0c3ed3d393 Update BunnyCDN sync and version numbers 2024-02-05 10:17:40 +01:00
Andras Bacsai
6e3dc474f2 Merge pull request #1702 from coollabsio/next
v4.0.0-beta.206
2024-02-05 10:06:59 +01:00
Andras Bacsai
d3eb87561e Fix styling issue in tag links 2024-02-05 10:00:53 +01:00
Andras Bacsai
8b58c8f856 Add tags to show and index views 2024-02-05 09:51:44 +01:00
Andras Bacsai
8c60ef5bd6 Update link in error message to the correct documentation 2024-02-04 17:00:13 +01:00
Andras Bacsai
1d59383c78 feat: clone to env 2024-02-04 16:54:12 +01:00
Andras Bacsai
60f590454d Update application deployment status in job handling 2024-02-04 14:40:23 +01:00
Andras Bacsai
dcb61a553e Merge pull request #1706 from piscis/patch-1
fix: Wrap tags and avoid horizontal overflow
2024-02-04 14:39:55 +01:00
Andras Bacsai
e06e31642f Refactor modal component and add new functionality 2024-02-04 14:07:08 +01:00
Andras Bacsai
9dfce48380 Add private_keys array initialization and define additional private properties 2024-02-04 13:50:24 +01:00
Andras Bacsai
8eed87e2f7 Update main class with mx-auto 2024-02-04 13:50:16 +01:00
Alex
d56d4eb8fc fix: Wrap tags and avoid horizontal overflow 2024-02-04 13:15:39 +01:00
Andras Bacsai
fd32cd04ab Refactor invoice payment failure handling in webhooks.php 2024-02-04 12:23:00 +01:00
Andras Bacsai
1d3b7ffd3b Refactor tags functionality and improve user experience 2024-02-03 12:44:18 +01:00
Andras Bacsai
0b5baf60a5 fix: tags 2024-02-03 12:39:07 +01:00
Andras Bacsai
bc31df6fb2 Update version numbers to 4.0.0-beta.206 2024-02-02 14:52:24 +01:00
Andras Bacsai
818399bc23 Merge pull request #1700 from coollabsio/next
v4.0.0-beta.205
2024-02-02 12:41:46 +01:00
Andras Bacsai
e7fdff0f69 feat: tags
ui: improvements
2024-02-02 11:50:28 +01:00
Andras Bacsai
6312c0ba84 feat: tags and tag deploy webhooks 2024-02-01 15:38:12 +01:00
Andras Bacsai
44efe0b5e1 Update versions and fix code formatting 2024-02-01 11:59:20 +01:00
Andras Bacsai
de7d584648 Merge pull request #1694 from coollabsio/next
v4.0.0-beta.204
2024-02-01 10:54:27 +01:00
Andras Bacsai
b9f12d2586 fix: duplicate domain check 2024-02-01 10:53:05 +01:00
Andras Bacsai
c76e8bb0de fix: migrate to new modal 2024-01-31 16:14:12 +01:00
Andras Bacsai
3b655f8e3f Update filebrowser image tag to use filebrowser/filebrowser:s6 2024-01-31 15:16:06 +01:00
Andras Bacsai
2b9df41444 fix: create dynamic directory 2024-01-31 15:04:08 +01:00
Andras Bacsai
628fec6904 fix: sentry error 2024-01-31 14:22:48 +01:00
Andras Bacsai
f36135cbfc fix: sentry 2024-01-31 14:20:57 +01:00
Andras Bacsai
75fe005055 fix: sentry error 2024-01-31 14:19:45 +01:00
Andras Bacsai
8ff7aeb78b ui: new modal component 2024-01-31 14:18:59 +01:00
Andras Bacsai
f1a9e28d5a fix: sentry 2024-01-31 14:18:51 +01:00
Andras Bacsai
843cd90ee5 Update exception type in generate_github_installation_token function 2024-01-31 13:47:16 +01:00
Andras Bacsai
1cbfd03912 fix: sentry fix 2024-01-31 13:46:40 +01:00
Andras Bacsai
ce60a39dc5 Throw RuntimeException instead of Exception when no resource is found in ScheduledTaskJob 2024-01-31 13:45:58 +01:00
Andras Bacsai
f1e4395a83 Refactor shared variable type validation 2024-01-31 13:43:23 +01:00
Andras Bacsai
52fd7ad571 fix: not able to use other shared envs 2024-01-31 13:40:15 +01:00
Andras Bacsai
5f797ec0ae Update version and release numbers 2024-01-31 10:28:18 +01:00
Andras Bacsai
21e77bf0c1 Merge pull request #1691 from coollabsio/next
v4.0.0-beta.203
2024-01-31 10:02:04 +01:00
Andras Bacsai
0686e48e89 fix: service deletion 2024-01-31 09:58:41 +01:00
Andras Bacsai
1cef233db2 fix: regenerate labels on application clone 2024-01-31 09:03:54 +01:00
Andras Bacsai
907e52572c fix: validate server navbar upated 2024-01-31 08:56:49 +01:00
Andras Bacsai
795c8abf64 Refactor service and resource deletion logic 2024-01-30 17:38:07 +01:00
Andras Bacsai
cc641d8cba revert 2024-01-30 17:16:52 +01:00
Andras Bacsai
d4668ef44a refactor 2024-01-30 14:12:40 +01:00
Andras Bacsai
e8b539c3bd Refactor CleanupUnreachableServers command to update server IP address 2024-01-30 10:53:12 +01:00
Andras Bacsai
6555f0b50c Fix unreachable server cleanup and enable daily schedule 2024-01-30 10:52:57 +01:00
Andras Bacsai
bb05058dda feat: cleanup unreachable servers 2024-01-30 10:50:54 +01:00
Andras Bacsai
9667cd4a7a fix: handle duplicate error instead of sql error
fix: set fqdns to null if you delete an app or a serviceapp
fix: make stucked resources a separate command
2024-01-30 09:48:51 +01:00
Andras Bacsai
3ae9501814 fix: dns validation + duplicated fqdns 2024-01-30 09:22:34 +01:00
Andras Bacsai
73d0948734 fix: service deletion fix 2024-01-30 08:26:33 +01:00
Andras Bacsai
c3e2a741ea Update version numbers 2024-01-29 20:35:35 +01:00
Andras Bacsai
4792146f1d Merge pull request #1687 from coollabsio/next
v4.0.0-beta.202
2024-01-29 16:37:39 +01:00
Andras Bacsai
09b9305aa3 Refactor git_clone_command in generateGitImportCommands function 2024-01-29 16:33:06 +01:00
Andras Bacsai
ff7d0d442d Update button text in private key create view 2024-01-29 16:33:01 +01:00
Andras Bacsai
9a127bdc80 Refactor webhook handling logic to remove duplicate code and improve readability 2024-01-29 16:31:10 +01:00
Andras Bacsai
919e88afb4 Refactor docker run options to compose format 2024-01-29 16:21:23 +01:00
Andras Bacsai
1d1ec20cb7 Update version numbers 2024-01-29 16:13:04 +01:00
Andras Bacsai
5c29ecdf10 feat: add initial support for custom docker run commands 2024-01-29 16:07:00 +01:00
Andras Bacsai
9e09c449cf fix: service deletion function 2024-01-29 16:03:45 +01:00
Andras Bacsai
09bcd693f5 Merge pull request #1683 from coollabsio/next
v4.0.0-beta.201
2024-01-29 14:04:30 +01:00
Andras Bacsai
0c15e45419 Update WordPress database configuration 2024-01-29 14:03:59 +01:00
Andras Bacsai
31cbf552a2 Merge pull request #1677 from mraf/wordpress-template
fix: add env variables for wordpress template without database
2024-01-29 13:58:31 +01:00
Andras Bacsai
f7853ee174 Refactor deployments_per_server variable and update dashboard view
This commit refactors the `deployments_per_server` variable in the `Dashboard` class to remove the type hint and updates the corresponding view file to handle the changes. The `deployments_per_server` variable is now grouped by `server_name` and converted to an array. This improves the organization and readability of the code.
2024-01-29 13:26:50 +01:00
Andras Bacsai
de3a7b6eca Add previous page functionality to deployment index
This commit adds the functionality to navigate to the previous page in the deployment index. It includes changes to the `Index.php` and `index.blade.php` files.
2024-01-29 13:06:26 +01:00
Andras Bacsai
b56c7c34cb fix: unhealthy deployments should be failed 2024-01-29 12:51:20 +01:00
Andras Bacsai
49845f3da7 fix: webhooks for multiple apps 2024-01-29 11:23:04 +01:00
Andras Bacsai
987409bae4 fix: bitbucket manual deployments 2024-01-29 10:43:18 +01:00
Andras Bacsai
07d8461f96 Fix URL encoding in deployment and status notifications 2024-01-29 08:49:05 +01:00
Andras Bacsai
f255a71434 Merge pull request #1673 from Niki2k1/feat/bitbucket-manual-webhook
feat: added manual webhook support for bitbucket
2024-01-29 08:38:05 +01:00
Andras Bacsai
2a2818ac0d Merge pull request #1680 from iamEvanYT/discord-deployment-url-fix
fix: encode project name in discord webhook notifications
2024-01-29 08:32:57 +01:00
Andras Bacsai
fd3cdc2c7d Update deployment status border color 2024-01-29 08:32:04 +01:00
Andras Bacsai
84c3f832ae Add missing closing div tag in dashboard.blade.php 2024-01-29 08:30:00 +01:00
Andras Bacsai
70c28fceeb fix: change env variable length 2024-01-29 08:24:21 +01:00
iamEvan
f2c4f83f5a Fix 2024-01-27 20:33:22 +00:00
iamEvan
c8dd6f07ac Encode Project Name 2024-01-27 20:22:27 +00:00
Andras Bacsai
561e424a7d feat: dashboard live deployment view 2024-01-27 18:44:40 +01:00
Andras Bacsai
c46d38907e fix: queue 2024-01-27 17:18:13 +01:00
Andras Bacsai
5c334bbac6 feat: add PR comments 2024-01-26 18:46:50 +01:00
Andras Bacsai
9628072b0c Update dependencies in package.json and mix-manifest.json 2024-01-26 11:36:44 +01:00
Andras Bacsai
39ecff9f90 Update version numbers 2024-01-26 11:34:18 +01:00
Andras Bacsai
d1daec060a Merge pull request #1675 from coollabsio/next
v4.0.0-beta.200
2024-01-26 11:25:32 +01:00
Andras Bacsai
fb5bea7f91 Update Docker actions versions 2024-01-26 11:23:49 +01:00
Andras Bacsai
efc3ea6e40 Update Docker actions versions 2024-01-26 11:20:27 +01:00
Andras Bacsai
ecefb9e1f5 Update vite version to 4.5.2 2024-01-26 11:15:35 +01:00
Andras Bacsai
a4dea2009a Remove unused imports and routes 2024-01-26 11:13:02 +01:00
Andras Bacsai
829e41f93f Delete TeamSharedVariablesIndexTest.php 2024-01-26 11:12:07 +01:00
Andras Bacsai
e7e3adc7fb Fix condition for checking localhost key in ProductionSeeder.php 2024-01-26 11:11:41 +01:00
Andras Bacsai
a993fef235 Update Docker build command 2024-01-26 10:56:22 +01:00
Andras Bacsai
81df71416c Update Docker images and add pull_policy 2024-01-26 10:52:58 +01:00
Andras Bacsai
40af7aa025 Update Docker build command to include latest tag 2024-01-26 10:46:46 +01:00
Andras Bacsai
050155328b Update toast.blade.php to use x-html instead of x-text 2024-01-26 10:37:53 +01:00
Andras Bacsai
376c081bed Add .env file as read-only volume 2024-01-26 10:37:33 +01:00
Andras Bacsai
9f5e1fa9e3 Update docker-compose.windows.yml file 2024-01-26 10:34:48 +01:00
Andras Bacsai
7d139fd33b Add environment file for Windows Docker Desktop 2024-01-26 10:31:37 +01:00
Andras Bacsai
b75a2857a0 Update environment variables and Docker image for Windows Docker Desktop 2024-01-26 10:24:42 +01:00
Andras Bacsai
ab6c1ddc20 Update docker-compose.windows.yml with bind mount for .env file 2024-01-26 10:16:44 +01:00
Andras Bacsai
dc0b0980a9 Update coolify image and environment variables 2024-01-26 09:57:59 +01:00
Andras Bacsai
788d1711db Refactor SSH command generation in remoteProcess.php 2024-01-26 09:36:08 +01:00
Andras Bacsai
d92dc4c5e6 Update testing-host image and remove unnecessary build configuration 2024-01-26 09:03:59 +01:00
Andras Bacsai
4bf34aea62 Add Coolify Testing Host workflow 2024-01-26 08:59:32 +01:00
Andras Bacsai
7e9a54ce67 Fix SSH command generation and disable mux in validateConnection() 2024-01-26 08:54:56 +01:00
Andras Bacsai
f8c19e1fb3 Update contact links in error and subscription views 2024-01-26 08:39:54 +01:00
Andras Bacsai
27c1bda09b Update button labels in create forms 2024-01-25 16:02:31 +01:00
Andras Bacsai
1af7ffcdc4 Refactor input field for port number 2024-01-25 15:58:58 +01:00
Andras Bacsai
39647367a5 Add build pack selection and update related fields 2024-01-25 15:57:04 +01:00
Andras Bacsai
ae4b263810 Update GitHub App registration button 2024-01-25 15:26:23 +01:00
Andras Bacsai
8901bb5df8 Refactor deployment cancellation and queue management 2024-01-25 13:45:17 +01:00
mraf
053aa25d2c fix: add env variables for wordpress template without database 2024-01-25 12:27:41 +01:00
Andras Bacsai
7a7157c155 fix: deployment queue
fix: cancel deployment
ui: changed to simpler toaster
2024-01-25 11:57:47 +01:00
Andras Bacsai
0c5e8600bd Update build pack settings and port values 2024-01-25 08:59:11 +01:00
Andras Bacsai
048e153025 Remove unnecessary condition in setDestination method 2024-01-25 08:57:16 +01:00
Andras Bacsai
e7cafe6850 fix: restrict concurrent deployments per server 2024-01-25 08:36:47 +01:00
Andras Bacsai
1385a86084 Refactor team() method and update references to team() in get_real_environment_variables() method 2024-01-24 15:56:43 +01:00
Andras Bacsai
348923ae02 Refactor realValue() method to include resource lookup 2024-01-24 15:54:55 +01:00
Andras Bacsai
7d754558b0 Fix branch selection and handle missing service 2024-01-24 12:26:14 +01:00
Andras Bacsai
744609e7e9 fix sentry errors 2024-01-24 12:10:03 +01:00
Andras Bacsai
9bd05b65a3 Update build pack and make GithubApp nullable 2024-01-24 12:07:58 +01:00
Andras Bacsai
d42934f258 fix: sentry error 2024-01-24 11:57:51 +01:00
Andras Bacsai
ff752e2411 feat: able to deploy multiple resources with webhook 2024-01-24 11:49:40 +01:00
Andras Bacsai
4120fba9a8 Update default concurrent_builds value to 2 2024-01-24 11:48:00 +01:00
Andras Bacsai
6ecb9c21ce cloud: send notification email if payment 2024-01-24 11:28:01 +01:00
Andras Bacsai
01f7b07fa3 feat: concurrent builds / server 2024-01-24 11:12:23 +01:00
Niklas Lausch
54d8cb9027 feat: added manual webhook support for bitbucket 2024-01-24 10:56:24 +01:00
Andras Bacsai
238337fecb Add new shared variable and update variable usage 2024-01-23 20:26:45 +01:00
Andras Bacsai
7a51acbf8d add slide-over component 2024-01-23 19:01:17 +01:00
Andras Bacsai
fb478c79b3 feat: shared environments 2024-01-23 17:13:23 +01:00
Andras Bacsai
abcc004953 feat: clone any resource 2024-01-22 16:08:18 +01:00
Andras Bacsai
2edf71a0dd feat: move resources between projects / environments 2024-01-22 15:12:38 +01:00
Andras Bacsai
cbec39099a Refactor Git section in advanced.blade.php 2024-01-22 14:13:40 +01:00
Andras Bacsai
dba5499182 Update version numbers + update glitchtip 2024-01-22 12:00:44 +01:00
Andras Bacsai
2fdf52929c Merge pull request #1670 from coollabsio/next
v4.0.0-beta.199
2024-01-22 11:02:30 +01:00
Andras Bacsai
8128dfc061 Update resource limits helper links 2024-01-22 10:47:47 +01:00
Andras Bacsai
2b394d6fea fix: show container on logs/executecontainer command views
fix: exclude containers with restart: no from hc
feat: add compose to predefined docker network
service: add glitchtip
2024-01-21 14:30:03 +01:00
Andras Bacsai
964ded1d0b fix: redis custom conf 2024-01-21 12:06:51 +01:00
Andras Bacsai
838c3830d6 Merge pull request #1664 from coollabsio/next
v4.0.0-beta.198
2024-01-18 15:06:12 +01:00
Andras Bacsai
2db93bd9b9 Add echo statement for queue cleanup and update cleanup message 2024-01-18 14:56:12 +01:00
Andras Bacsai
2f82dedd4f Add call to 'cleanup:queue' command in Init.php and remove 'cleanup:queue' command from Kernel.php 2024-01-18 14:49:47 +01:00
Andras Bacsai
8106602d15 Add CleanupQueue command to clean up Redis queue keys 2024-01-18 14:47:17 +01:00
Andras Bacsai
3d0bf6b472 Update resource name in notification messages 2024-01-18 14:03:51 +01:00
Andras Bacsai
ba7a7e9695 Update server and version configurations 2024-01-18 13:33:57 +01:00
Andras Bacsai
dd0ad04384 Merge pull request #1662 from coollabsio/next
Do not report server is not ready
2024-01-18 12:45:05 +01:00
Andras Bacsai
910a1f43a9 Do not report server is not ready 2024-01-18 12:44:20 +01:00
Andras Bacsai
e2f959ce4c Merge pull request #1659 from coollabsio/next
v4.0.0-beta.197
2024-01-18 12:14:50 +01:00
Andras Bacsai
68fe886fb0 Add restart functionality to proxy deployment 2024-01-18 12:14:11 +01:00
Andras Bacsai
4631c73809 Update general.blade.php with build server option and network section 2024-01-18 12:05:48 +01:00
Andras Bacsai
77558b37da refactor build server 2024-01-18 11:40:13 +01:00
Andras Bacsai
e060409a76 fix: links 2024-01-18 11:24:07 +01:00
Andras Bacsai
af01bc3e77 fix: service deletion bug! 2024-01-17 15:48:01 +01:00
Andras Bacsai
1e158badfc Update button text in by-ip.blade.php 2024-01-17 15:41:38 +01:00
Andras Bacsai
c620bb58ed Add build pack selection and show/hide static site options 2024-01-17 15:41:32 +01:00
Andras Bacsai
8a91395472 Update server model to use 'coolify' instead of 'coolify-overlay' for the name field 2024-01-17 14:11:46 +01:00
Andras Bacsai
c5f3398b73 Update build server and swarm support messages 2024-01-17 14:06:41 +01:00
Andras Bacsai
3878527de8 Update server unreachable notifications to include automatic revival 2024-01-17 14:02:54 +01:00
Andras Bacsai
4abcb2d5b9 Update notification labels in Discord and Telegram settings 2024-01-17 12:23:58 +01:00
Andras Bacsai
a635e51486 fix: server status job 2024-01-17 11:52:56 +01:00
Andras Bacsai
b6ce2e9122 typo 2024-01-17 11:39:45 +01:00
Andras Bacsai
8c60dd5523 typo 2024-01-17 11:21:47 +01:00
Andras Bacsai
94e2d951c4 Revert commented out code and execute remote command to remove Docker container 2024-01-16 15:45:54 +01:00
Andras Bacsai
381e24bea5 fix: git pull command for deploy key based previews 2024-01-16 15:45:19 +01:00
Andras Bacsai
2b1e35980f empty nixpacks type result in error 2024-01-16 15:26:44 +01:00
Andras Bacsai
a42c8da344 fix: proxy ui view
feat: build server 🌮
2024-01-16 15:19:14 +01:00
Andras Bacsai
7a0e415ecf fix: checkbox click 2024-01-16 12:28:59 +01:00
Andras Bacsai
d721f4809a fix ui 2024-01-16 12:20:40 +01:00
Andras Bacsai
22431eee9a fix: change proxy view 2024-01-16 11:32:56 +01:00
Andras Bacsai
c058c0a766 Update release version to 4.0.0-beta.197 2024-01-16 08:38:39 +01:00
Andras Bacsai
1724c0d3ff Merge pull request #1658 from coollabsio/next
v4.0.0-beta.196
2024-01-15 20:22:57 +01:00
Andras Bacsai
0b8f48230f Remove unnecessary echo statements in Server.php 2024-01-15 20:22:13 +01:00
Andras Bacsai
e8d84b7067 Update server and version configurations 2024-01-15 19:57:29 +01:00
Andras Bacsai
5236bbc757 Merge pull request #1655 from coollabsio/next
v4.0.0-beta.195
2024-01-15 14:30:43 +01:00
Andras Bacsai
094e1d1bba Fix condition for merge_request actions in webhooks.php 2024-01-15 14:29:54 +01:00
Andras Bacsai
68b25523d6 Fix action condition in merge_request webhook handler 2024-01-15 14:27:45 +01:00
Andras Bacsai
bdc478d5f5 Update daisyui version in package.json and package-lock.json 2024-01-15 13:46:38 +01:00
Andras Bacsai
002472d7c6 Update version numbers and dependencies 2024-01-15 13:40:32 +01:00
Andras Bacsai
0d65bf62b9 Merge pull request #1654 from coollabsio/next
v4.0.0-beta.194
2024-01-15 13:24:01 +01:00
Andras Bacsai
01c7e76071 only add gzip + https redirect once 2024-01-15 13:23:28 +01:00
Andras Bacsai
884ae0efb0 Merge pull request #1653 from coollabsio/next
v4.0.0-beta.193
2024-01-15 13:03:40 +01:00
Andras Bacsai
8e7040bf7c Update Docker Compose commands to include SOURCE_COMMIT environment variable 2024-01-15 12:59:21 +01:00
Andras Bacsai
059e6a88eb Replace comma with pipe in customLabels 2024-01-15 12:30:49 +01:00
Andras Bacsai
9947158f7e fix gzip compression 2024-01-15 12:12:34 +01:00
Andras Bacsai
61aa9e8766 Merge pull request #1651 from coollabsio/next
v4.0.0-beta.192
2024-01-15 11:53:34 +01:00
Andras Bacsai
75813a289c check domains againts cloudflare ip range 2024-01-15 11:37:26 +01:00
Andras Bacsai
af11d8cf3d Merge pull request #1650 from coollabsio/next
v4.0.0-beta.191
2024-01-15 11:06:15 +01:00
Andras Bacsai
48990db699 Add link to documentation for further help 2024-01-15 11:00:09 +01:00
Andras Bacsai
da71353bfa Update application and proxy configuration 2024-01-15 10:49:39 +01:00
Andras Bacsai
0f5559bc61 fix: service stack view 2024-01-15 10:19:37 +01:00
Andras Bacsai
1afb509c33 add domain validation + custom dns servers
add new guides / docs
2024-01-15 10:03:15 +01:00
Andras Bacsai
bccca6e874 add docs to server validation 2024-01-15 09:03:46 +01:00
Andras Bacsai
083dc15053 Update version and add OpenSSH server detection and PermitRootLogin check 2024-01-15 08:40:46 +01:00
Andras Bacsai
1b6d376472 refactor: compose file and install script 2024-01-12 21:26:51 +01:00
Andras Bacsai
891deee05a Update version numbers to 4.0.0-beta.191 2024-01-12 15:42:05 +01:00
Andras Bacsai
5ffbba908b Refactor healthcheck test in StartPostgresql.php 2024-01-12 15:41:49 +01:00
Andras Bacsai
f762959c9f Refactor select.blade.php file 2024-01-12 15:41:46 +01:00
Andras Bacsai
90a5a23fd9 Fix initial username placeholder in PostgreSQL database view 2024-01-12 15:41:43 +01:00
Andras Bacsai
94e87141ff Merge pull request #1639 from coollabsio/next
Fix resource limits for CPU set
2024-01-12 14:37:34 +01:00
Andras Bacsai
fceaf3e94b Fix resource limits for CPU set 2024-01-12 14:30:25 +01:00
Andras Bacsai
3be554cb55 Merge pull request #1638 from coollabsio/next
v4.0.0-beta.190
2024-01-12 14:20:13 +01:00
Andras Bacsai
27b18fbedf Refactor database and application start scripts 2024-01-12 14:15:15 +01:00
Andras Bacsai
5e7c6906b3 fix: cpuset limits was determined in a way that apps only used 1 CPU max, ehh, sorry. 2024-01-12 13:47:01 +01:00
Andras Bacsai
d05ffe32a3 Merge pull request #1630 from coollabsio/next
v4.0.0-beta.189
2024-01-12 12:51:00 +01:00
Andras Bacsai
f1298d1db4 do not send notification of scheduled task failed 2024-01-12 12:44:08 +01:00
Andras Bacsai
408738e08d Add service status to Index.php and update resource display in index.blade.php 2024-01-12 11:31:51 +01:00
Andras Bacsai
8d04fbdb74 feat: search between resources 2024-01-12 11:25:20 +01:00
Andras Bacsai
dccb31d17e fix: service deletion command 2024-01-12 09:11:36 +01:00
Andras Bacsai
f61210287e Update release version to 4.0.0-beta.189 2024-01-12 08:56:59 +01:00
Andras Bacsai
18ad7220f0 10 mins server check -> 5 mins 2024-01-12 08:49:03 +01:00
Andras Bacsai
79e0df1d43 fix: cleanup docker stuffs before upgrading 2024-01-12 08:45:24 +01:00
Andras Bacsai
a2f53085e5 fix: preview deployments with nixpacks 2024-01-12 08:38:08 +01:00
Andras Bacsai
c5782252ea Merge branch 'fix' into next 2024-01-11 19:00:13 +01:00
Andras Bacsai
bf3d88facd Merge pull request #1632 from coollabsio/fix
v4.0.0-beta.188
2024-01-11 18:59:23 +01:00
Andras Bacsai
e45b0bf715 Update version numbers to 4.0.0-beta.188 2024-01-11 18:55:20 +01:00
Andras Bacsai
9db6c12eea fix missing a end tag 2024-01-11 18:54:55 +01:00
Andras Bacsai
3a391b69e8 fix: restart should not update config hash 2024-01-11 14:34:48 +01:00
Andras Bacsai
cc1fb83c79 cleanup 2024-01-11 14:25:55 +01:00
Andras Bacsai
efa5dd28f1 fix: load profile and set envs on remote cmd 2024-01-11 14:25:42 +01:00
Andras Bacsai
f1eddae379 cleanup 2024-01-11 14:24:54 +01:00
Andras Bacsai
34febe670d fix: load profile on remote commands 2024-01-11 14:13:43 +01:00
Andras Bacsai
3137131a1a Merge pull request #1628 from coollabsio/next
v4.0.0-beta.187
2024-01-11 12:57:01 +01:00
Andras Bacsai
1b6546d26c fix: nixpacks envs
fix: append logs
2024-01-11 12:56:02 +01:00
Andras Bacsai
b9f820cef4 fix: save cmd output propely (merge) 2024-01-11 12:33:28 +01:00
Andras Bacsai
d8639f58d7 Merge pull request #1625 from coollabsio/next
v4.0.0-beta.186
2024-01-11 11:56:00 +01:00
Andras Bacsai
cf9be9355f fix: upload limit on ui 2024-01-11 11:55:17 +01:00
Andras Bacsai
e36bb11ba8 fix: undead endpoint 2024-01-11 11:34:05 +01:00
Andras Bacsai
190beb3d3f fix: escape build envs properly for nixpacks + docker build 2024-01-11 11:32:32 +01:00
Andras Bacsai
890a6925d1 fix: email verification / forgot password 2024-01-11 08:52:30 +01:00
Andras Bacsai
d03b8420f8 Merge pull request #1627 from coollabsio/fix
fix: Email verification and forgot-password
2024-01-11 08:47:05 +01:00
Andras Bacsai
cbd3c880c3 Add email verification and password reset functionality 2024-01-11 07:16:28 +01:00
Andras Bacsai
6b24001876 feat: import backups 2024-01-10 15:42:54 +01:00
Andras Bacsai
6bb45430c9 fix: submit error on postgresql 2024-01-10 14:41:05 +01:00
Andras Bacsai
bc6b4ed850 Merge branch 'stooit-feat/db-import' into next 2024-01-10 14:37:30 +01:00
Andras Bacsai
8a63ef5da9 Merge branch 'feat/db-import' of github.com:stooit/coolify into stooit-feat/db-import 2024-01-10 14:36:59 +01:00
Andras Bacsai
e324866a27 Refactor database configuration layout 2024-01-10 14:34:04 +01:00
Andras Bacsai
0e5f733657 Add import tab to database configuration view 2024-01-10 14:33:21 +01:00
Andras Bacsai
c5932ed337 smaller ui fixes 2024-01-10 12:41:29 +01:00
Andras Bacsai
ef428f844f fix: do not include thegameplan.json into build image 2024-01-10 12:26:27 +01:00
Andras Bacsai
eb8b752a6e Merge pull request #1607 from stooit/feat/scheduled-tasks-cron
feat: Scheduled tasks (cron)
2024-01-10 12:08:47 +01:00
Andras Bacsai
ce0b38035c Merge branch 'next' into feat/scheduled-tasks-cron 2024-01-10 12:03:48 +01:00
Andras Bacsai
562a8f1fac Merge pull request #1614 from RayBB/fix-typos
fix typos
2024-01-10 11:56:29 +01:00
Andras Bacsai
68f1621757 Merge branch 'main' into fix-typos 2024-01-10 11:55:33 +01:00
Andras Bacsai
e3087573bb Merge pull request #1618 from Illyism/patch-1
Update README.md
2024-01-10 11:52:52 +01:00
Andras Bacsai
7869f223a3 Update version numbers to 4.0.0-beta.186 2024-01-10 11:52:39 +01:00
Andras Bacsai
0e99f27108 Merge pull request #1621 from coollabsio/next
v4.0.0-beta.185
2024-01-10 11:09:41 +01:00
Andras Bacsai
f445a8c312 fix: update navbar on build_pack change 2024-01-10 11:07:53 +01:00
Andras Bacsai
845fc191d4 Remove ray debug statement in updatedApplicationBuildPack method 2024-01-10 11:00:11 +01:00
Andras Bacsai
95d0d72e0d Fix application build pack logic 2024-01-10 11:00:06 +01:00
Andras Bacsai
76f695036c fix: static buildpack should set port 80 2024-01-10 10:58:31 +01:00
Andras Bacsai
225bf06736 Update version numbers and remove unused files 2024-01-10 10:50:07 +01:00
Andras Bacsai
3a287ae974 Update Dockerfile to use serversideup/php:8.2-fpm-nginx image 2024-01-10 09:25:04 +01:00
Andras Bacsai
e5c61b9f9f Merge pull request #1620 from coollabsio/next
fix: fix php-pgsql version to 8.2
2024-01-09 19:05:46 +01:00
Andras Bacsai
32bc876dfc fix: php pgsql to 8.2 2024-01-09 19:04:12 +01:00
Andras Bacsai
c9b3d2a43d Update PHP version in Dockerfiles 2024-01-09 15:23:37 +01:00
Andras Bacsai
f343210e7c hmm 2024-01-09 15:22:06 +01:00
Andras Bacsai
4a42bff0dc Update version numbers to 4.0.0-beta.185 2024-01-09 15:18:33 +01:00
Andras Bacsai
36931b5b18 Merge pull request #1612 from coollabsio/next
v4.0.0-beta.184
2024-01-09 14:58:01 +01:00
Andras Bacsai
3b080abada remove rays 2024-01-09 14:48:26 +01:00
Andras Bacsai
7feba4bbaa fix: remove traefik debug in dev mode 2024-01-09 14:27:55 +01:00
Andras Bacsai
eef8c756df fix: settings menu 2024-01-09 14:27:42 +01:00
Andras Bacsai
9ed30cb0dc Remove unnecessary proxy configurations 2024-01-09 13:13:55 +01:00
Andras Bacsai
6bc43bd999 fix: sort and rename (unique part) of labels 2024-01-09 13:00:07 +01:00
Andras Bacsai
e7683ee9a5 fix: service labels without ports (unknown ports) 2024-01-09 12:49:03 +01:00
Andras Bacsai
ee71aeaa36 fix: use ip for sslip in dev if remote server is used 2024-01-09 12:48:46 +01:00
Andras Bacsai
404c664500 fix: traefik labels 2024-01-09 12:29:45 +01:00
Andras Bacsai
aa80392b46 small fix 2024-01-09 12:25:50 +01:00
Andras Bacsai
c9509ef658 fix: show framework based notification in build logs 2024-01-09 12:19:39 +01:00
Andras Bacsai
31e08a24c9 fix: healthy status 2024-01-09 08:42:37 +01:00
Ilias Ism
14b32e30cd Update README.md 2024-01-08 23:47:11 +01:00
Raymond Berger
5aaad66fe5 fix data naming conflict 2024-01-08 21:59:26 +01:00
Andras Bacsai
b6745c691b fix: queue retry
fix: nixpacks builds
2024-01-08 16:33:34 +01:00
Ray Berger
5ee29c6072 fix typos 2024-01-07 22:32:54 +00:00
Andras Bacsai
b69584fe26 Merge branch 'main' into next 2024-01-07 16:25:13 +01:00
Andras Bacsai
4c3907c296 refactor routes 2024-01-07 16:23:41 +01:00
Andras Bacsai
bf44b4b949 version++ 2024-01-07 13:34:47 +01:00
Andras Bacsai
bee7a2357b Merge pull request #1608 from RayBB/patch-1
fix small typo
2024-01-07 13:34:11 +01:00
Andras Bacsai
98704fc3c2 Merge pull request #1605 from coollabsio/next
v4.0.0-beta.183
2024-01-06 11:39:51 +01:00
Andras Bacsai
e286e78ddc fix: database env variables 2024-01-06 11:38:12 +01:00
Stuart Rowlands
557e1407d0 Added database import feature. 2024-01-06 15:24:57 +10:00
Raymond Berger
3c99f24b5a fix small typo 2024-01-05 15:10:30 +01:00
Stuart Rowlands
512197021b Minor cleanup. 2024-01-05 15:26:51 +10:00
Stuart Rowlands
e233ec05b5 Merge branch 'main' into feat/scheduled-tasks-cron 2024-01-05 15:08:20 +10:00
Stuart Rowlands
d0e3a20a65 Merge branch 'main' of github.com:stooit/coolify 2024-01-05 15:08:06 +10:00
Stuart Rowlands
e2e6813632 Functional scheduled executions.
Display last executions.
Support for Services.
2024-01-05 15:06:36 +10:00
Andras Bacsai
963c519c38 feat: add www-non-www redirects to traefik 2024-01-04 14:14:40 +01:00
Andras Bacsai
d04513d817 Merge pull request #1603 from coollabsio/next
v4.0.0-beta.181
2024-01-04 13:08:18 +01:00
Andras Bacsai
64a7f27e37 fix: file storage save 2024-01-04 13:03:46 +01:00
Andras Bacsai
65652142b2 Merge pull request #1599 from coollabsio/next
v4.0.0-beta.181
2024-01-03 21:26:44 +01:00
Andras Bacsai
7691319c59 Refactor Dockerfile copying logic in ApplicationDeploymentJob.php 2024-01-03 21:15:58 +01:00
Andras Bacsai
206bd50d00 Update nixpacks build command in ApplicationDeploymentJob.php 2024-01-03 21:14:02 +01:00
Andras Bacsai
6159783a73 fix: nixpacks buildpack 2024-01-03 21:03:46 +01:00
Andras Bacsai
ed5f831c86 Merge pull request #1598 from coollabsio/next
v4.0.0-beta.180
2024-01-03 13:42:29 +01:00
Andras Bacsai
65be83e75d fix: only add restart policy if its empty (compose) 2024-01-03 13:37:14 +01:00
Andras Bacsai
25a471b045 Update Dockerfile with new versions of PACK and NIXPACKS 2024-01-03 13:29:23 +01:00
Andras Bacsai
60c7a29aa8 fix: nixpacks cache 2024-01-03 13:20:24 +01:00
Andras Bacsai
11ab6669a0 Merge pull request #1597 from coollabsio/next
v4.0.0-beta.179
2024-01-02 21:13:34 +01:00
Andras Bacsai
53965ab8ed fix: set deployment failed if new container is not healthy 2024-01-02 21:07:16 +01:00
Andras Bacsai
ea271ca079 fix: delete serviceApps & serviceDatabases
fix: cleanup trashed data
2024-01-02 21:03:51 +01:00
Andras Bacsai
f16d0f650f Merge pull request #1596 from coollabsio/next
v4.0.0-beta.178
2024-01-02 17:23:11 +01:00
Andras Bacsai
cb80341a78 Fix customLabels assignment when proxyType is TRAEFIK_V2 2024-01-02 17:22:44 +01:00
Andras Bacsai
83d96c8d11 Refactor custom labels handling in General.php and update Docker Compose Content label in general.blade.php 2024-01-02 17:14:52 +01:00
Andras Bacsai
a8ca57d095 Update link in helper message in general.blade.php 2024-01-02 16:47:05 +01:00
Andras Bacsai
2d936a4b22 add compose link 2024-01-02 16:46:08 +01:00
Andras Bacsai
0653eb8511 set custom labels on every app 2024-01-02 16:44:41 +01:00
Andras Bacsai
cc64132627 Update README.md 2024-01-02 14:06:08 +01:00
Andras Bacsai
e0391e5abd Merge pull request #1594 from coollabsio/next
v4.0.0-beta.177
2024-01-02 13:58:30 +01:00
Andras Bacsai
025135bd2a feat: raw docker compose deployments 2024-01-02 13:55:35 +01:00
Andras Bacsai
5e5873a08d fix: duplicate compose variable 2024-01-02 11:46:02 +01:00
Andras Bacsai
14652c2878 Update sponsor logos and links 2024-01-02 07:31:54 +01:00
Stuart Rowlands
9bbe9567c7 Start scheduled task job execution. 2024-01-01 18:23:58 -08:00
Stuart Rowlands
7913a639b5 Complete add/edit/delete for scheduled tasks.
Refactor views.
2024-01-01 18:23:29 -08:00
Stuart Rowlands
adecf328fc WIP start of scheduled tasks. 2024-01-01 10:33:16 -08:00
Andras Bacsai
a7ef5c456d Merge pull request #1592 from coollabsio/next
v4.0.0-beta.176
2023-12-31 10:52:15 +01:00
Andras Bacsai
117f1d4155 fix: horizon 2023-12-30 15:30:57 +01:00
Andras Bacsai
075f3ce930 remove unnecessary queue 2023-12-30 15:29:26 +01:00
Andras Bacsai
d5b3e88fc4 Merge pull request #1576 from coollabsio/next
v4.0.0-beta.175
2023-12-30 15:00:05 +01:00
Andras Bacsai
ba55e0c1bb feat: add environment description + able to change name 2023-12-30 14:47:26 +01:00
Andras Bacsai
54671354f0 fix: deploy key + docker compose 2023-12-30 14:20:02 +01:00
Andras Bacsai
a2c7e8d455 Merge pull request #1566 from stooit/fix/deploy-key-docker-compose
fix: Resolves deployment of docker compose applications when using a deploy key
2023-12-30 13:27:25 +01:00
Andras Bacsai
32dbdf5204 Fix redirect route in DecideWhatToDoWithUser middleware 2023-12-28 22:26:21 +01:00
Andras Bacsai
019887739c fix: wrong env variable parsing 2023-12-28 17:53:47 +01:00
Andras Bacsai
5596e41f2b fix: sub 2023-12-28 13:43:03 +01:00
Andras Bacsai
6a73a00a1f Merge pull request #1575 from coollabsio/next
v4.0.0-beta.174
2023-12-27 23:09:14 +01:00
Andras Bacsai
4121c9dd8b fix 2023-12-27 23:07:39 +01:00
Andras Bacsai
e4781dc129 fix: restore falsely deleted coolify-db-backup 2023-12-27 23:06:22 +01:00
Andras Bacsai
1c90f46f2a Merge pull request #1572 from coollabsio/next
v4.0.0-beta.173
2023-12-27 17:44:07 +01:00
Andras Bacsai
e78d851c85 fix: button title 2023-12-27 17:14:18 +01:00
Andras Bacsai
52d05005ed fix: deploy instead of restart in case swarm is used 2023-12-27 17:12:09 +01:00
Andras Bacsai
f03aa57758 fix: routing, switch back to old one 2023-12-27 16:45:01 +01:00
Andras Bacsai
8c20c833ba fix: add source commit to final envs 2023-12-27 13:06:59 +01:00
Andras Bacsai
2fe6766b7f fix: cpu limit to float from int 2023-12-27 13:01:57 +01:00
Stuart Rowlands
d9599da4a8 Fix git clone command for deploy key + docker compose. 2023-12-21 11:16:03 -08:00
Andras Bacsai
3f453ba7c0 Merge branch 'main' into next 2023-12-21 14:09:13 +01:00
Andras Bacsai
bd02c3055a update readme 2023-12-21 14:08:39 +01:00
andrasbacsai
7ea7d85d15 Deploying to main from @ coollabsio/coolify@d38350c282 🚀 2023-12-21 12:58:10 +00:00
Andras Bacsai
d38350c282 update 2023-12-21 13:57:52 +01:00
andrasbacsai
a83c70004c Deploying to main from @ coollabsio/coolify@49e1404a2c 🚀 2023-12-21 12:56:00 +00:00
Andras Bacsai
49e1404a2c test gh auto sponsor update 2023-12-21 13:55:40 +01:00
Andras Bacsai
76f23e7dbf do not check server ready on server status job 2023-12-21 10:43:39 +01:00
Andras Bacsai
ad8653f54d Merge pull request #1564 from coollabsio/next
v4.0.0-beta.172
2023-12-21 10:35:40 +01:00
Andras Bacsai
8939d77051 fix 2023-12-21 10:28:02 +01:00
Andras Bacsai
37be4a1796 fix 2023-12-21 10:00:41 +01:00
Andras Bacsai
e4c923e358 fix 2023-12-21 09:57:39 +01:00
Andras Bacsai
62ca3ffaa5 fix 2023-12-21 09:55:16 +01:00
Andras Bacsai
9af3ce4be5 fail job instead of runtime exception 2023-12-21 09:49:18 +01:00
Andras Bacsai
fe143ef8a5 Merge pull request #1563 from coollabsio/next
v4.0.0-beta.171
2023-12-21 09:35:43 +01:00
Andras Bacsai
5fb5845e90 redirect false on some urls 2023-12-21 09:33:11 +01:00
Andras Bacsai
794cfbd8eb execute handle on containerstatusjob 2023-12-21 09:28:47 +01:00
Andras Bacsai
29ee9915f3 fix: check proxy after mount on server view
fix: change realtime console log
version++
2023-12-21 09:28:39 +01:00
Andras Bacsai
331d485213 Merge pull request #1562 from coollabsio/next
v4.0.0-beta.170
2023-12-21 08:49:22 +01:00
Andras Bacsai
665e3761c4 fix: stay tuned 2023-12-21 08:48:53 +01:00
Andras Bacsai
ac19f0e34f enable docker image swarms 2023-12-21 08:46:48 +01:00
Andras Bacsai
d7cfa0578f Comment out handle() method call in
ContainerStatusJob constructor
2023-12-20 20:01:45 +01:00
Andras Bacsai
694169bb84 fix: why?! 2023-12-20 18:09:01 +01:00
Andras Bacsai
ab853cac87 Merge pull request #1560 from coollabsio/next
v4.0.0-beta.169
2023-12-20 16:21:06 +01:00
Andras Bacsai
51db2f797d fix: storage error on dbs 2023-12-20 16:19:48 +01:00
Andras Bacsai
0c90d3d0a1 fix: docker compose apps env rewritten 2023-12-20 16:15:13 +01:00
Andras Bacsai
51efe23690 Merge pull request #1559 from coollabsio/next
disable db + service deployments swarm
2023-12-20 14:46:12 +01:00
Andras Bacsai
e3ee84105c disable db + service deployments swarm 2023-12-20 14:45:47 +01:00
Andras Bacsai
6cbd61ac6c Merge pull request #1558 from coollabsio/next
fix: get swarm service logs
2023-12-20 14:25:53 +01:00
Andras Bacsai
638d0c8c99 fix: get swarm service logs 2023-12-20 14:11:50 +01:00
Andras Bacsai
aecc81fe9d Merge pull request #1557 from coollabsio/next
v4.0.0-beta.166
2023-12-20 13:21:45 +01:00
Andras Bacsai
c9a1437870 Fix handle method in ServerStatusJob 2023-12-20 12:33:58 +01:00
Andras Bacsai
66b41b3d4c Update ServerStatusJob middleware and uniqueId()
method
2023-12-20 12:33:21 +01:00
Andras Bacsai
c41cfe2a2f Fix server status check and cleanup logic 2023-12-20 12:32:46 +01:00
Andras Bacsai
5f2ad56529 Update container and server status job 2023-12-20 12:25:14 +01:00
Andras Bacsai
cd842bc1b2 Update number of tries in ContainerStatusJob 2023-12-20 12:13:34 +01:00
Andras Bacsai
27b6aad53a fix 2023-12-20 11:59:53 +01:00
Andras Bacsai
64b58b7661 hm 2023-12-20 11:59:06 +01:00
Andras Bacsai
94960d96a9 add max horizon processes 2023-12-20 11:47:51 +01:00
Andras Bacsai
2549244f97 hm 2023-12-20 11:44:46 +01:00
Andras Bacsai
5bfffce33b hm 2023-12-20 11:37:04 +01:00
Andras Bacsai
3a4f19f368 version++ 2023-12-20 11:22:10 +01:00
Andras Bacsai
50e17ed932 fix: server ready 2023-12-20 11:21:17 +01:00
Andras Bacsai
a8fcd7aee4 Merge pull request #1556 from coollabsio/next
small UI fixes
2023-12-20 10:31:59 +01:00
Andras Bacsai
87036cc49b link 2023-12-20 10:27:39 +01:00
Andras Bacsai
e48842c6ec fix: swarm support ui 2023-12-20 10:19:21 +01:00
Andras Bacsai
b9e405c497 Merge pull request #1555 from coollabsio/next
v4.0.0-beta.165
2023-12-19 21:01:40 +01:00
Andras Bacsai
f75effe022 fix 2023-12-19 15:44:41 +01:00
Andras Bacsai
a745f568f3 gh actions update 2023-12-19 15:44:01 +01:00
Andras Bacsai
e2e3ad0358 get branchname gh actions 2023-12-19 15:41:53 +01:00
Andras Bacsai
ba769f5fb7 fix 2023-12-19 15:36:59 +01:00
Andras Bacsai
0126286731 fix: server update schedule 2023-12-19 15:16:08 +01:00
Andras Bacsai
7952202435 fix: do not autovalidate server on mount 2023-12-19 14:19:23 +01:00
Andras Bacsai
798acb8ee5 add swarm server grouping
fixes for swarm
2023-12-19 13:47:12 +01:00
Andras Bacsai
ef595dd4c2 fix: server not found 2023-12-19 12:24:43 +01:00
Andras Bacsai
70c662daf8 disable swarm for the next release 2023-12-18 17:13:22 +01:00
Andras Bacsai
8ae385b9f9 fix: add alpha to swarm 2023-12-18 14:34:04 +01:00
Andras Bacsai
802a0f7684 fix: do not push dockerimage 2023-12-18 14:17:48 +01:00
Andras Bacsai
62c38c9859 wip: swarm 2023-12-18 14:01:25 +01:00
Andras Bacsai
27c36bec83 feat: custom docker compose commands 2023-12-17 20:56:12 +01:00
Andras Bacsai
c6b8eabe10 wip: swarm 2023-12-15 15:48:01 +01:00
Andras Bacsai
967fca9eca version ++ 2023-12-15 15:17:49 +01:00
Andras Bacsai
40a239ddda Merge pull request #1550 from coollabsio/next
refactor: gitlab manual webhooks
2023-12-15 14:19:49 +01:00
Andras Bacsai
99d07981cf fix 2023-12-15 14:19:29 +01:00
Andras Bacsai
b3ee6b7144 fix: add debug output to gitlab webhooks 2023-12-15 14:17:53 +01:00
Andras Bacsai
468ad7d904 fix: no action in webhooks 2023-12-15 14:09:14 +01:00
Andras Bacsai
f1aa97e374 Merge pull request #1548 from coollabsio/next
fix: compose domains & links
2023-12-15 11:01:03 +01:00
Andras Bacsai
3b6d3343c7 fix: domains for compose bp 2023-12-15 11:00:51 +01:00
Andras Bacsai
ab2f9f073f Merge pull request #1546 from stooit/fix/docker-compose-multidomain
fix: Multiple domain links in docker compose applications.
2023-12-15 10:39:01 +01:00
Andras Bacsai
67131152cc fix: reset domains on compose file change 2023-12-15 10:37:45 +01:00
Andras Bacsai
3bda289428 fix: ui for adding new destination 2023-12-15 10:24:02 +01:00
Andras Bacsai
fadfa0ad8e Merge pull request #1547 from coollabsio/next
fix: server checking status
2023-12-15 10:01:58 +01:00
Andras Bacsai
11a957c6c9 fix: server checking status 2023-12-15 10:01:14 +01:00
Stuart Rowlands
b46de99af9 Fixes multi-domain links in docker compose applications. 2023-12-14 18:16:17 -08:00
Andras Bacsai
03420076c9 Merge pull request #1545 from coollabsio/next
v4.0.0-beta.163
2023-12-14 15:41:16 +01:00
Andras Bacsai
549446abdf fix: handle other types of generated values 2023-12-14 15:34:05 +01:00
Andras Bacsai
06ab2145ca fix: improve server status check times 2023-12-14 15:33:46 +01:00
Andras Bacsai
5d088e530e version++ 2023-12-14 15:33:34 +01:00
Andras Bacsai
123e6eddd7 fix: only check server status in container status job 2023-12-14 15:33:25 +01:00
Andras Bacsai
2c17e431ac Merge pull request #1544 from coollabsio/next
fix: backup executions view
2023-12-14 15:01:35 +01:00
Andras Bacsai
fe6073ba7d fix: backup executions view 2023-12-14 15:01:19 +01:00
Andras Bacsai
8a9ad04744 Merge pull request #1540 from coollabsio/next
v4.0.0-beta.162
2023-12-14 14:58:30 +01:00
Andras Bacsai
75d1ec4f42 feat: pull latest images for services 2023-12-14 14:50:38 +01:00
Andras Bacsai
a0abde8652 ui: add image name to service stack + better options visibility 2023-12-14 14:24:54 +01:00
Andras Bacsai
db13dd9304 fix: revert random container job delay 2023-12-13 15:40:57 +01:00
Andras Bacsai
638bcf9732 update 2023-12-13 15:34:33 +01:00
Andras Bacsai
b06b465ffa fix: add catch all route 2023-12-13 15:29:45 +01:00
Andras Bacsai
02c8b9f471 fix: password reset / invitation link requests 2023-12-13 15:22:37 +01:00
Andras Bacsai
1ff1664b6c fix: copy invitation 2023-12-13 14:44:11 +01:00
Andras Bacsai
52d84c5e9e refactor: clone project 2023-12-13 14:22:23 +01:00
Andras Bacsai
e0289e2949 feat: randomly sleep between executions 2023-12-13 12:35:56 +01:00
Andras Bacsai
ff8d8371ad fix: check queued deployments as well 2023-12-13 12:13:20 +01:00
Andras Bacsai
69343f974a soft delete models 2023-12-13 12:08:12 +01:00
Andras Bacsai
2dc175be63 fix: null notify 2023-12-13 12:01:27 +01:00
Andras Bacsai
d93bf97919 cleanup on start 2023-12-13 12:01:21 +01:00
Andras Bacsai
4ea8916d53 fix: update Coolify script 2023-12-13 11:55:08 +01:00
Andras Bacsai
f7fca69a23 update sentry key 2023-12-13 11:53:50 +01:00
Andras Bacsai
f954ee15c3 fix: init script echos 2023-12-13 11:53:01 +01:00
Andras Bacsai
3c54e01d87 improve more 2023-12-13 11:35:53 +01:00
Andras Bacsai
00d708610d improve local dev + contribution guide 2023-12-13 11:12:53 +01:00
Andras Bacsai
f3b04c1ef9 refactor: custom labels 2023-12-13 09:23:27 +01:00
Andras Bacsai
6b751f965b Merge pull request #1539 from coollabsio/next
v4.0.0-beta.161
2023-12-12 16:47:56 +01:00
Andras Bacsai
d3c9894479 fix: labels 2023-12-12 16:45:46 +01:00
Andras Bacsai
f68aace445 fix: non-ascii chars in labels 2023-12-12 16:34:05 +01:00
Andras Bacsai
f042c70b3c fix: labelling 2023-12-12 15:48:51 +01:00
Andras Bacsai
2116d79aad Merge pull request #1538 from coollabsio/next
v4.0.0-beta.160
2023-12-12 14:32:24 +01:00
Andras Bacsai
4bc63e283c fix: service env variable ovewritten if it has a default value 2023-12-12 14:28:11 +01:00
Andras Bacsai
d5804f99c2 Merge pull request #1537 from coollabsio/next
v4.0.0-beta.159
2023-12-12 13:25:40 +01:00
Andras Bacsai
dfc353ce54 fix: ignore if dynamic config could not be set 2023-12-12 13:20:26 +01:00
Andras Bacsai
8f65ddb754 Merge pull request #1536 from coollabsio/next
v4.0.0-beta.158
2023-12-12 12:41:46 +01:00
Andras Bacsai
29e750f0b2 hmm 2023-12-12 12:31:29 +01:00
Andras Bacsai
b24661b876 fix 2023-12-12 12:13:14 +01:00
Andras Bacsai
bbbd605f32 fix: comma in traefik custom labels 2023-12-12 12:10:46 +01:00
Andras Bacsai
ff13cb4e26 fix: init 2023-12-12 12:01:53 +01:00
Andras Bacsai
5cb572b6a5 fix: run init command after production seeder 2023-12-12 11:54:10 +01:00
Andras Bacsai
d8b97e06cf wip: fix for comma in labels 2023-12-11 23:34:18 +01:00
Andras Bacsai
becb4df950 Merge pull request #1535 from coollabsio/next
fix: is autoupdate not null
2023-12-11 23:27:12 +01:00
Andras Bacsai
20dc2b47fe fix: is autoupdate not null 2023-12-11 23:26:49 +01:00
Andras Bacsai
67df166c20 Merge pull request #1534 from coollabsio/next
v4.0.0-beta.157
2023-12-11 23:20:05 +01:00
Andras Bacsai
87c3d0048c fix 2023-12-11 21:43:53 +01:00
Andras Bacsai
1c71ac78e2 fix 2023-12-11 21:35:09 +01:00
Andras Bacsai
41181cac12 asdasdasd time to sleep 2023-12-11 21:30:13 +01:00
Andras Bacsai
41b6df0e6e fix 2023-12-11 21:26:21 +01:00
Andras Bacsai
4f3f98be0a fix 2023-12-11 21:26:18 +01:00
Andras Bacsai
7a97a4b69c fixes 2023-12-11 21:23:33 +01:00
Andras Bacsai
6ae87466ca fix: only allow to modify in .env file if AUTOUPDATE is set 2023-12-11 21:19:45 +01:00
Andras Bacsai
5159d47159 fix install script 2023-12-11 21:07:40 +01:00
Andras Bacsai
0138d04080 Merge pull request #1525 from American-Cloud/main
fix: Install script
2023-12-11 20:57:35 +01:00
Andras Bacsai
c803768e5f set autoupdate 2023-12-11 20:55:58 +01:00
Andras Bacsai
60c8e0d625 feat: disable autoupdate 2023-12-11 20:40:05 +01:00
Andras Bacsai
dd99ad0af8 fix fox 2023-12-11 20:29:40 +01:00
Andras Bacsai
24a1f02af5 version++ 2023-12-11 20:27:49 +01:00
Andras Bacsai
601a1e128e fixes 2023-12-11 20:22:31 +01:00
Andras Bacsai
ccb9769e67 finally works? 2023-12-11 20:13:41 +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
a19a58338c debug on 2023-12-11 19:39:27 +01:00
Andras Bacsai
8a80dbd5d8 fix 2023-12-11 19:36:44 +01:00
Andras Bacsai
ec5cca7b3e feat: autoupdate env during seed 2023-12-11 19:34:23 +01:00
Andras Bacsai
ce721c1764 fix 2023-12-11 19:30:37 +01:00
Andras Bacsai
f4d7c4f942 update 2023-12-11 19:25:35 +01:00
Andras Bacsai
40716550ec fix 2023-12-11 19:16:17 +01:00
Andras Bacsai
f0ee26cd86 fix realtimePort 2023-12-11 19:11:29 +01:00
Andras Bacsai
423dfc6280 fix 2023-12-11 19:02:06 +01:00
Andras Bacsai
6d9a66ff1b fix: websocket 2023-12-11 18:48:00 +01:00
Andras Bacsai
17c8872130 fix: realtime connection?! 2023-12-11 18:06:29 +01:00
Andras Bacsai
3ffa2b6b8d fix: add ipv6 2023-12-11 16:34:36 +01:00
Andras Bacsai
35134f2327 fix: pusher host 2023-12-11 16:32:41 +01:00
Andras Bacsai
8ed4b540e1 Merge pull request #1533 from coollabsio/next
v4.0.0-.beta.156
2023-12-11 15:24:15 +01:00
Andras Bacsai
47202a7951 fix: db status check 2023-12-11 15:23:41 +01:00
Andras Bacsai
fe6e76ad0d fix 2023-12-11 15:09:36 +01:00
Andras Bacsai
e9920f05f5 fix: proxy logs 2023-12-11 15:08:40 +01:00
Andras Bacsai
57a39f12bb version++ 2023-12-11 14:56:11 +01:00
Andras Bacsai
ba85e3bc8b Merge pull request #1532 from coollabsio/next
v4.0.0-beta.155
2023-12-11 14:47:59 +01:00
Andras Bacsai
1fd12832ca refactor: application status changed realtime 2023-12-11 13:43:16 +01:00
Andras Bacsai
a8807b8d09 Merge pull request #1530 from stooit/feat/docker-compose-prebuild
feat: Build images prior to rollout in docker compose buildpack.
2023-12-11 13:03:59 +01:00
Andras Bacsai
dbc55233cb fix: add new destination 2023-12-11 13:02:29 +01:00
Andras Bacsai
af6d94c0d8 fix: realtime check 2023-12-11 12:40:56 +01:00
Andras Bacsai
e022492770 fix: realtime connection popup could be disabled 2023-12-11 12:03:32 +01:00
Andras Bacsai
5e03979f9c no cleanup 2023-12-11 11:29:59 +01:00
Andras Bacsai
956416b522 refactor: service logs are now on one page 2023-12-11 11:27:41 +01:00
Andras Bacsai
2846e049fa fix: ui 2023-12-11 10:29:03 +01:00
Andras Bacsai
3ffd3fc819 fix: channels
feat: database backup is realtime now
2023-12-11 10:23:10 +01:00
Andras Bacsai
63dff5961e fix 2023-12-11 09:41:31 +01:00
Andras Bacsai
4b024017ad fix: live mode for github webhooks 2023-12-11 09:36:21 +01:00
Andras Bacsai
720bb8c478 fix: database ui is realtime based 2023-12-11 09:02:53 +01:00
Andras Bacsai
771dc30b81 fix: do not send telegram noti on intent payment failed 2023-12-11 08:32:42 +01:00
Andras Bacsai
6f97af096d Merge pull request #1526 from stooit/feat/application-run-command
fix: Escape container commands
2023-12-11 08:23:29 +01:00
Andras Bacsai
3d28669cad fix: boarding view 2023-12-10 15:57:46 +01:00
Stuart Rowlands
efe043ec9d Build images prior to rollout. 2023-12-09 19:14:06 -08:00
Andras Bacsai
6bb79e10bc fix: double ws connection 2023-12-08 22:51:42 +01:00
Andras Bacsai
ba2e4c06f1 fix 2023-12-08 21:37:20 +01:00
Andras Bacsai
1bfb9637ba hmm 2023-12-08 21:12:22 +01:00
Stuart Rowlands
d7e9821582 Resolve merge conflicts. 2023-12-08 12:07:27 -08:00
Stuart Rowlands
08585f7e9a Merge branch 'next' into feat/application-run-command 2023-12-08 12:06:09 -08:00
Andras Bacsai
3eedb43b66 fix 2023-12-08 21:04:27 +01:00
Andras Bacsai
26aca6a4c0 remove polling 2023-12-08 20:13:17 +01:00
Andras Bacsai
3cbf8c281d remove polling 2023-12-08 20:12:54 +01:00
Andras Bacsai
d931d57373 fix github change 2023-12-08 19:57:55 +01:00
Andras Bacsai
4e680deb93 fix: service deletion job 2023-12-08 18:32:08 +01:00
Andras Bacsai
6a6275d4fa revert 2023-12-08 17:08:02 +01:00
Andras Bacsai
efd9087b74 fix buildpack form 2023-12-08 15:27:11 +01:00
Andras Bacsai
6882ce8d0f fix: service start + event 2023-12-08 15:12:08 +01:00
Andras Bacsai
eccd41217f fix network name 2023-12-08 15:07:50 +01:00
Andras Bacsai
538de9bd81 rename soketi container to realtime 2023-12-08 14:57:11 +01:00
Andras Bacsai
a249ee1b1f fix: live event 2023-12-08 13:55:55 +01:00
Andras Bacsai
828fec9448 fix: do not create duplicated networks 2023-12-08 13:24:28 +01:00
Andras Bacsai
205995cabe stop status event 2023-12-08 13:07:42 +01:00
Andras Bacsai
4071e096bc hmm 2023-12-08 12:48:21 +01:00
Andras Bacsai
14bac0f0d7 hmm 2023-12-08 12:40:32 +01:00
Andras Bacsai
69c124032c fix 2023-12-08 12:23:12 +01:00
Andras Bacsai
b55bd298f2 fix: service navbar using new realtime events 2023-12-08 12:12:44 +01:00
Andras Bacsai
86c2415210 ui fix 2023-12-08 09:15:32 +01:00
Andras Bacsai
82f3d54bc3 ui fixes 2023-12-08 00:16:22 +01:00
Andras Bacsai
a6e76dfabc custom progress bar colro 2023-12-07 23:31:03 +01:00
Jason Hollis
c1f6bf41f5 fix: Install script parse version
* Allow version to be passed with v or V at the beginning of
      version.  This allows users to pass along the actual github tagged
      version as it is listed on github.
    * Linting updates
2023-12-07 16:58:17 -05:00
Andras Bacsai
f934dfef33 wip livewire migration 2023-12-07 22:56:55 +01:00
Stuart Rowlands
19c66c6628 Escape command in ExecuteContainerCommand. 2023-12-07 11:05:52 -08:00
Stuart Rowlands
d7d948caf6 Merge branch 'main' into feat/application-run-command 2023-12-07 10:48:19 -08:00
Stuart Rowlands
1b34337fe8 Wrap command run to support quotes & chaining. 2023-12-07 10:45:11 -08:00
Andras Bacsai
718603e37e wip: migrate to livewire 3 2023-12-07 19:06:32 +01:00
Jason Hollis
9df0a2e545 fix: Better handling of errors with install script 2023-12-07 12:08:43 -05:00
Andras Bacsai
7ffebd71f3 Merge pull request #1518 from coollabsio/next
v4.0.0-beta.154
2023-12-07 14:04:03 +01:00
Andras Bacsai
2f286a6595 fix: container selection 2023-12-07 13:48:23 +01:00
Andras Bacsai
13701f6030 ui: env vars 2023-12-07 13:31:06 +01:00
Andras Bacsai
91f224ddea Merge pull request #1461 from DanHulton/feature/better_env_vars
Friendlier env vars page.
2023-12-07 13:29:41 +01:00
Andras Bacsai
8cffae10b2 rename things 2023-12-07 13:28:11 +01:00
Andras Bacsai
1158b2f4db feat: execute command in container 2023-12-07 13:07:16 +01:00
Andras Bacsai
f542bcf428 Merge pull request #1524 from stooit/feat/application-run-command
Add support for command execution in containers.
2023-12-07 11:29:32 +01:00
Stuart Rowlands
22178df8ae Add support for command execution in containers. 2023-12-06 15:42:14 -08:00
Andras Bacsai
acfe1daf9b fix: switching to static build 2023-12-06 21:32:23 +01:00
Andras Bacsai
fb3f71881f fix: use hc port 80 in case of static build 2023-12-06 21:09:41 +01:00
Andras Bacsai
0f7546a4dc add error message if realtime service is not reachable 2023-12-06 18:10:49 +01:00
Andras Bacsai
6ccafacc87 very important commit 2023-12-06 17:02:27 +01:00
Andras Bacsai
852c2df12e mono 2023-12-06 17:02:07 +01:00
Andras Bacsai
4c752951ab asd 2023-12-06 17:00:05 +01:00
Andras Bacsai
f32191b889 fix modal 2023-12-06 16:59:52 +01:00
Andras Bacsai
31251ef6cb nothing to see here 2023-12-06 16:38:46 +01:00
Andras Bacsai
e9365aa09b update js 2023-12-06 16:34:34 +01:00
Andras Bacsai
e5c860319f modal fix 2023-12-06 16:32:40 +01:00
Andras Bacsai
ceedd5225f modal fix? 2023-12-06 15:50:13 +01:00
Andras Bacsai
61efdfb7c1 revert 2023-12-06 15:30:04 +01:00
Andras Bacsai
fcef5d902e hmm 2023-12-06 15:04:07 +01:00
Andras Bacsai
2073b8949b lets see now 2023-12-06 14:57:03 +01:00
Andras Bacsai
5c59a752e3 test modal closing problem 2023-12-06 14:47:29 +01:00
Andras Bacsai
caf6e3a23e fix 2023-12-06 14:23:18 +01:00
Andras Bacsai
8eb1c4da46 fix prod compose 2023-12-06 14:22:19 +01:00
Andras Bacsai
bab2f391ed fix 2023-12-06 14:21:30 +01:00
Andras Bacsai
131c6df82a fix 2023-12-06 14:11:02 +01:00
Andras Bacsai
9f44d0c47a test 2023-12-06 13:50:27 +01:00
Andras Bacsai
dff7ed5b7b fix: bind volumes for compose bp 2023-12-06 13:45:43 +01:00
Andras Bacsai
54b6472f3b update packages 2023-12-06 13:32:20 +01:00
Andras Bacsai
04a36e5c90 update packages 2023-12-06 13:29:10 +01:00
Andras Bacsai
b2f851272b updates 2023-12-06 12:57:50 +01:00
Andras Bacsai
778915599f fix 2023-12-06 12:28:05 +01:00
Andras Bacsai
a6f9527157 fix 2023-12-06 12:20:20 +01:00
Andras Bacsai
db976709c7 add local js for pusher/echo 2023-12-06 10:32:49 +01:00
Andras Bacsai
7e4947ba07 setup test event 2023-12-06 10:25:23 +01:00
Andras Bacsai
e2578a7dd0 fix: deploy the right compose file 2023-12-06 09:36:11 +01:00
Andras Bacsai
7d028b15f5 wip 2023-12-05 15:26:05 +01:00
Andras Bacsai
d240bfda8b wip 2023-12-05 15:20:47 +01:00
Andras Bacsai
d59ec2548a wip 2023-12-05 15:19:54 +01:00
Andras Bacsai
e0cefc787a fix: add hc for soketi 2023-12-05 15:15:01 +01:00
Andras Bacsai
0496198d0f wip 2023-12-05 15:09:46 +01:00
Andras Bacsai
cbf7f1fa41 wip 2023-12-05 14:56:00 +01:00
Andras Bacsai
66587d864a wip 2023-12-05 14:52:19 +01:00
Andras Bacsai
b106705c8d wip 2023-12-05 14:18:44 +01:00
Andras Bacsai
5cc22a8271 wip: 🌮 2023-12-05 13:56:11 +01:00
Andras Bacsai
cd22863a8c wip 2023-12-05 12:31:07 +01:00
Andras Bacsai
118a02f70d wip 2023-12-05 12:18:23 +01:00
Andras Bacsai
862177d61a wip 2023-12-05 12:16:48 +01:00
Andras Bacsai
41280aa780 wip 2023-12-05 12:13:57 +01:00
Andras Bacsai
3a987c8a6e wip 2023-12-05 11:47:40 +01:00
Andras Bacsai
29ca461a9a wip 2023-12-05 11:35:05 +01:00
Andras Bacsai
d48b72c160 wip 2023-12-05 11:24:23 +01:00
Andras Bacsai
ce49f26c53 wip 2023-12-05 11:17:52 +01:00
Andras Bacsai
02989678be revert a few more things 2023-12-04 21:48:10 +01:00
Andras Bacsai
810b55163c revert: wip 2023-12-04 21:37:30 +01:00
Andras Bacsai
ac13ba0957 wip 2023-12-04 21:13:46 +01:00
Andras Bacsai
a3e088199f wip 2023-12-04 21:06:02 +01:00
Andras Bacsai
42ee4ca032 wip: broadcast 2023-12-04 20:47:32 +01:00
Andras Bacsai
17deff4d86 wip 2023-12-04 15:42:08 +01:00
Andras Bacsai
8b6323b906 refactor applicationdeploymentjob 2023-12-04 15:08:24 +01:00
Andras Bacsai
a696b5271a Update release version to 4.0.0-beta.154 2023-12-04 12:13:21 +01:00
Andras Bacsai
31959f26d4 Merge pull request #1517 from coollabsio/next
v4.0.0-beta.153
2023-12-04 11:42:21 +01:00
Andras Bacsai
45d2f80f69 fix: missing docker image thing 2023-12-04 11:41:44 +01:00
Andras Bacsai
53975fcf61 Merge pull request #1516 from coollabsio/next
v4.0.0-beta.152
2023-12-04 11:26:17 +01:00
Andras Bacsai
76296c1f19 fix: prevent autorefresh of proxy status 2023-12-04 11:25:24 +01:00
Andras Bacsai
c25baf69e1 fix: workdir issue for basedir
fix: remove / mount on helpers image
2023-12-04 11:20:50 +01:00
Andras Bacsai
f952512615 fix: add cf tunnel to boarding server view 2023-12-04 09:29:55 +01:00
Andras Bacsai
c6557eada8 service: meilisearch 2023-12-03 12:16:33 +01:00
Andras Bacsai
2c2d74c0d6 Update release version to 4.0.0-beta.152 2023-12-01 22:16:48 +01:00
Andras Bacsai
028a2eb275 Fix Docker compose build command and remove debug statements 2023-12-01 22:16:27 +01:00
Andras Bacsai
ce7fad5bef Merge pull request #1511 from coollabsio/next
fix: use official install script with rancher (one will work for sure)
2023-12-01 14:02:30 +01:00
Andras Bacsai
cd7852e4f9 fix: use official install script with rancher (one will work for sure) 2023-12-01 14:02:11 +01:00
Andras Bacsai
7b022a2482 Merge pull request #1510 from coollabsio/next
v4.0.0-beta.151
2023-12-01 13:03:42 +01:00
Andras Bacsai
12d9b6538b Fix environment variable parsing in Docker Compose file 2023-12-01 12:34:23 +01:00
Andras Bacsai
335788c2d6 fix: default value do not overwrite existing env value 2023-12-01 12:14:23 +01:00
Andras Bacsai
2352e4a71d Fix directory creation inApplicationDeploymentJob.php 2023-12-01 12:13:55 +01:00
Andras Bacsai
dc03179bd1 feat: auto-restart tcp proxies for databases 2023-12-01 11:37:00 +01:00
Andras Bacsai
cc72f416e8 feat: custom log drain endpoints 2023-12-01 11:13:58 +01:00
Andras Bacsai
3b67d0a8de feat: save timestamp configuration for logs 2023-12-01 10:34:30 +01:00
Andras Bacsai
0135ba7e89 Delete docker-compose.prod.standalone.yml 2023-11-30 13:38:52 +01:00
Andras Bacsai
a28a28cd23 Add docker-compose.prod.standalone.yml
configuration file
2023-11-30 13:17:43 +01:00
Andras Bacsai
b52680a2d8 Fix dispatch_sync issue in ContainerStatusJob 2023-11-30 12:55:31 +01:00
Andras Bacsai
0670e6c1d6 fix: server view for link() 2023-11-30 12:21:53 +01:00
Andras Bacsai
c3882b75c1 Update release version to 4.0.0-beta.151 2023-11-30 12:21:42 +01:00
Andras Bacsai
64b6f86a36 Update PostgreSQL image version to 16-alpine for services 2023-11-30 12:21:21 +01:00
Andras Bacsai
b9efc22253 Merge pull request #1504 from coollabsio/next
v4.0.0-beta.150 - quick fix
2023-11-29 18:44:25 +01:00
Andras Bacsai
e3d9eb0154 Add hidden flag to docker compose command 2023-11-29 18:43:02 +01:00
Andras Bacsai
66f3967479 Merge pull request #1503 from coollabsio/next
v4.0.0-beta.150
2023-11-29 18:41:41 +01:00
Andras Bacsai
c54439e84c fix: dockercompose save ./ volumes under /data/coolify 2023-11-29 18:40:41 +01:00
Andras Bacsai
db4a4c74fc Merge pull request #1502 from coollabsio/next
v4.0.0-beta.149
2023-11-29 17:05:28 +01:00
Andras Bacsai
5c7ef80219 Fix container retrieval in CheckLogDrainContainerJob and ContainerStatusJob 2023-11-29 17:03:04 +01:00
Andras Bacsai
243d1c06fc cloud: disable trial 2023-11-29 16:34:31 +01:00
Andras Bacsai
ef25f7d800 Update Sentry DSN 2023-11-29 16:21:03 +01:00
Andras Bacsai
45640ffdb1 Update version numbers to 4.0.0-beta.149 2023-11-29 16:19:40 +01:00
Andras Bacsai
378291b209 Merge pull request #1501 from coollabsio/next
Commented out cleanup_ssh() function
2023-11-29 15:23:21 +01:00
Andras Bacsai
3583e552f1 Commented out cleanup_ssh() function 2023-11-29 15:23:03 +01:00
Andras Bacsai
d7dfeaf988 Merge pull request #1496 from coollabsio/next
v4.0.0-beta.148
2023-11-29 15:17:39 +01:00
Andras Bacsai
7fe5eca661 Add precheck for containers 2023-11-29 15:13:03 +01:00
Andras Bacsai
0dff57e69f Add cleanup option to app:init command 2023-11-29 15:03:21 +01:00
Andras Bacsai
f4803ad58b wip: swarm
fix: gitcompose deployments
2023-11-29 14:59:06 +01:00
Andras Bacsai
2d7bbbe300 wip: swarm 2023-11-29 10:06:52 +01:00
Andras Bacsai
928b68043b wip: swarm 2023-11-28 20:49:38 +01:00
Andras Bacsai
b21add0210 Update Swarm cluster label to Swarm Manager 2023-11-28 20:09:00 +01:00
Andras Bacsai
c41ffd6bfb wip: swarm 2023-11-28 18:42:09 +01:00
Andras Bacsai
b4874c7df3 wip: swarm 2023-11-28 18:31:04 +01:00
Andras Bacsai
c505a6ce9c wip 2023-11-28 15:49:24 +01:00
Andras Bacsai
706e4b13ee fix: sentry issue 2023-11-28 14:27:38 +01:00
Andras Bacsai
4af471ee31 fix: no container servers 2023-11-28 14:26:35 +01:00
Andras Bacsai
87062e4e22 Refactor application deployment job 2023-11-28 14:23:59 +01:00
Andras Bacsai
500ba0fab8 fix: do not remove deployment in case compose based failed 2023-11-28 14:08:42 +01:00
Andras Bacsai
1c72c127d5 Remove unused imports and fix import statement 2023-11-28 14:05:55 +01:00
Andras Bacsai
69bb4ae5ee Update release version to 4.0.0-beta.148 2023-11-28 13:40:33 +01:00
Andras Bacsai
5f8b8bd730 Merge pull request #1480 from coollabsio/next
v4.0.0-beta.147
2023-11-28 13:39:34 +01:00
Andras Bacsai
44f6d93639 Update installation script to include curl and wget 2023-11-28 13:28:15 +01:00
Andras Bacsai
e35b8a0f96 Add Stringable interface to validateOS method 2023-11-28 13:21:32 +01:00
Andras Bacsai
b26e23e7c3 Fix validateOS() return type 2023-11-28 13:17:59 +01:00
Andras Bacsai
e6f7e32037 Add SUPPORTED_OS constant based on /etc/os-release 2023-11-28 13:12:42 +01:00
Andras Bacsai
1c386db41d Update Docker installation command and add support for SLES 2023-11-28 13:12:25 +01:00
Andras Bacsai
085b655d9f Update version to 1.1.0 and add support for Redhat and Sles based operating systems 2023-11-28 13:02:12 +01:00
Andras Bacsai
2788fcf4e1 Add Docker Compose based applications and preview deployments to proxy on restart 2023-11-28 12:48:55 +01:00
Andras Bacsai
d058e04213 Add fqdn attribute to InstanceSettings model 2023-11-28 12:11:03 +01:00
Andras Bacsai
066f171163 Add Docker Compose file for Formbricks service 2023-11-28 12:05:14 +01:00
Andras Bacsai
2001be07d0 refactor: env variable generator 2023-11-28 12:05:04 +01:00
Andras Bacsai
39552cc42f fix: double default password length 2023-11-28 12:04:21 +01:00
Andras Bacsai
7f5d7e0eb0 Refactor application submit method to handle dockercompose build pack 2023-11-28 11:10:48 +01:00
Andras Bacsai
0eda49b104 fix: pull request build variables 2023-11-28 11:10:42 +01:00
Andras Bacsai
636995d0e4 Refactor server delete view 2023-11-28 10:55:24 +01:00
Andras Bacsai
4c0623f022 Refactor server delete view to display defined resources as links 2023-11-28 10:54:46 +01:00
Andras Bacsai
3e2e1080f5 nothing to see here 2023-11-28 10:46:00 +01:00
Andras Bacsai
3f866a07d8 Fix docker compose PR location default value 2023-11-28 10:11:53 +01:00
Andras Bacsai
23571ae104 wip 2023-11-27 15:50:22 +01:00
Andras Bacsai
c1710c8f7b moar fixes 2023-11-27 15:25:15 +01:00
Andras Bacsai
d4d2cc71a0 fix: lots of regarding git + docker compose deployments 2023-11-27 14:28:21 +01:00
Andras Bacsai
8d86d53292 fix: new logging for deployment jobs
fix: git based docker compose files
2023-11-27 11:54:55 +01:00
Andras Bacsai
fae97e4dee Fix network connection issues in Server and Service models 2023-11-27 09:58:31 +01:00
Andras Bacsai
8d0c3abf2e Refactor server delete view to display defined
resources
2023-11-27 09:42:23 +01:00
Andras Bacsai
d396f649df fix: show defined resources in server tab, so you will know what you need to delete before you can delete the server. 2023-11-27 09:39:43 +01:00
Andras Bacsai
ec21155c9e Update rules for field validation in StackForm.php 2023-11-24 21:38:39 +01:00
Andras Bacsai
58111f53b9 test wire:ignore 2023-11-24 21:35:01 +01:00
Andras Bacsai
2cbe1e8489 Add SMTP mail transport option to Ghost compose
file
2023-11-24 21:23:48 +01:00
Andras Bacsai
10e5a58b9e Add extra fields for MinIO, Weblate, and Ghost services 2023-11-24 21:04:15 +01:00
Andras Bacsai
6f886e8b6f Update Ghost configuration with mail options 2023-11-24 21:03:59 +01:00
Andras Bacsai
f96a91eb31 wip: compose based apps 2023-11-24 15:48:23 +01:00
Andras Bacsai
65a1961722 Add environment variables for Horizon balance 2023-11-24 10:12:37 +01:00
Andras Bacsai
c5a932ab88 Add environment variables for GitHub
authentication and email configuration
2023-11-24 08:38:49 +01:00
Andras Bacsai
d1e10dacc0 wip 2023-11-23 21:02:30 +01:00
Andras Bacsai
96327af838 Update log-drains.blade.php and add
trigger-with-external-database.yaml and
service-templates.json
2023-11-23 12:44:08 +01:00
Andras Bacsai
1cb6d594d0 Fix service loading issue in project select page 2023-11-23 11:49:49 +01:00
Andras Bacsai
16261fc36e Remove unnecessary code and update services list
loading
2023-11-23 11:40:29 +01:00
Andras Bacsai
cff694b0c4 Update Weblate configuration 2023-11-23 11:35:19 +01:00
Andras Bacsai
97fd56b9e4 Update number of servers in pricing plans 2023-11-23 10:57:11 +01:00
Andras Bacsai
72cfa3e7b0 Update server limits using environment variables 2023-11-23 10:51:57 +01:00
Andras Bacsai
3cf41e1e23 Update server basic value 2023-11-23 10:47:25 +01:00
Andras Bacsai
2a7a63a672 Add trigger.dev service 2023-11-23 09:05:22 +01:00
Andras Bacsai
7fb9e672cf Fix server execution method parameter name 2023-11-22 20:56:25 +01:00
Andras Bacsai
9012f6b953 Fix GitHub App retrieval in webhooks.php 2023-11-22 16:40:49 +01:00
Andras Bacsai
407eba8b76 Fix DockerCleanupJob exception message 2023-11-22 16:39:16 +01:00
Andras Bacsai
68f6ab5796 wip 2023-11-22 15:18:49 +01:00
Andras Bacsai
3dd36a2271 Fix container status handling and notifications 2023-11-22 15:18:37 +01:00
Andras Bacsai
7f69eb3c2e Merge pull request #1479 from coollabsio/next
v4.0.0-beta.146 - quick fix before release
2023-11-22 14:27:04 +01:00
Andras Bacsai
6ccbf911b2 Fix condition for pushing to Docker registry 2023-11-22 14:25:55 +01:00
Andras Bacsai
5c77cec68f Merge pull request #1478 from coollabsio/next
v4.0.0-beta.146
2023-11-22 14:22:10 +01:00
Andras Bacsai
25a0489f7f Fix log drain issue in advanced and service application 2023-11-22 14:21:03 +01:00
Andras Bacsai
5e27b88bef Add new console commands for root email change, root password reset, and service deletion 2023-11-22 13:21:25 +01:00
Andras Bacsai
ec98afe707 Merge pull request #1474 from coollabsio/next
v4.0.0-beta.145
2023-11-22 08:45:00 +01:00
Andras Bacsai
ce26127705 wip: new deployment jobs 2023-11-21 22:17:35 +01:00
Andras Bacsai
ef7fc1b260 Refactor code and update destination component 2023-11-21 15:31:46 +01:00
Andras Bacsai
f58e6766e1 Update Docker Engine version check 2023-11-21 13:06:05 +01:00
Andras Bacsai
4a21102983 fix: server adding process 2023-11-21 12:07:06 +01:00
Andras Bacsai
e78b6758d8 feat: add docker engine support install script to rhel based systems 2023-11-21 11:39:19 +01:00
Andras Bacsai
16eb7f4fb4 Add tracing option to Sentry configuration 2023-11-21 09:01:52 +01:00
Andras Bacsai
4974ce6eda Update release version to 4.0.0-beta.145 2023-11-21 08:41:43 +01:00
Andras Bacsai
6cdba17aca Update token retrieval in reset-password.blade.php 2023-11-20 15:16:23 +01:00
Andras Bacsai
30f8e8f232 fix: handle different label formats in services 2023-11-20 15:01:35 +01:00
Andras Bacsai
608f0b7840 Refactor Docker image name generation and push to
registry
2023-11-20 14:23:11 +01:00
Andras Bacsai
d0366c4054 Update Docker Registry link in general.blade.php 2023-11-20 13:58:31 +01:00
Andras Bacsai
f88e3c5b29 feat: push locally built image to docker registry
ui: fixes here and there
2023-11-20 13:49:10 +01:00
Andras Bacsai
e33fec0e1a Refactor checkbox component and update GPU
settings helper links
2023-11-20 11:37:09 +01:00
Andras Bacsai
912b0a263e feat: gpu enabled containers
feat: move advanced settings to different view
2023-11-20 11:35:31 +01:00
Andras Bacsai
8f963adbd4 fix: only report nonruntime errors 2023-11-20 10:32:06 +01:00
Andras Bacsai
8f2c24d7e9 fix: reset password 2023-11-18 17:50:44 +01:00
Andras Bacsai
9f3dbc3cbb Merge pull request #1469 from coollabsio/next
v4.0.0-beta.144
2023-11-17 21:28:18 +01:00
Andras Bacsai
8a9ee84925 Fix log drain container notification bug 2023-11-17 21:24:22 +01:00
Andras Bacsai
689480003a feat: log drainer container check 2023-11-17 21:16:25 +01:00
Andras Bacsai
3b20eee909 feat: enable/disable log drain by service 2023-11-17 20:08:21 +01:00
Andras Bacsai
e8cadc176b Merge pull request #1468 from coollabsio/next
v4.0.0-beta.143
2023-11-17 15:21:29 +01:00
Andras Bacsai
b0c96e64c9 Fix server unreachable notification count 2023-11-17 15:18:08 +01:00
Andras Bacsai
9ce3b43e09 Add Team model and merge servers with own servers 2023-11-17 15:11:29 +01:00
Andras Bacsai
4c2b3df861 Update server runtime and comments 2023-11-17 14:56:39 +01:00
Andras Bacsai
467471f54a Fix server readiness check in ContainerStatusJob and ServerStatusJob 2023-11-17 14:46:04 +01:00
Andras Bacsai
60171093c5 Update version to 4.0.0-beta.143 2023-11-17 14:43:57 +01:00
Andras Bacsai
38f2a2dac7 Merge pull request #1467 from coollabsio/next
v4.0.0-beta.142
2023-11-17 14:32:32 +01:00
Andras Bacsai
307ee52ac0 wtf 2023-11-17 14:29:37 +01:00
Andras Bacsai
b66c9835b7 Fix server status check and add new job 2023-11-17 14:22:05 +01:00
Andras Bacsai
d38d50dca2 Fix server readiness check and update version
number
2023-11-17 14:14:13 +01:00
Andras Bacsai
40023be4ea Merge pull request #1466 from coollabsio/next
Quick fix version
2023-11-17 14:02:00 +01:00
Andras Bacsai
48d7c6e76f Fix config version key 2023-11-17 13:59:45 +01:00
Andras Bacsai
debacfe2f7 Merge pull request #1465 from coollabsio/next
v4.0.0-beta.141
2023-11-17 13:54:20 +01:00
Andras Bacsai
d430813230 Update versions and add server readiness check 2023-11-17 13:53:56 +01:00
Andras Bacsai
e30c37b041 Merge pull request #1464 from coollabsio/next
v4.0.0-beta.140
2023-11-17 13:25:03 +01:00
Andras Bacsai
8c73068cc7 Refactor server filtering logic in Kernel.php 2023-11-17 13:11:46 +01:00
Andras Bacsai
2c4e69ad50 Fix server readiness check in ContainerStatusJob
and ServerStatusJob
2023-11-17 13:04:51 +01:00
Andras Bacsai
5ae08d009e Add skipServer() method to Server model 2023-11-17 12:47:15 +01:00
Andras Bacsai
673b944647 Fix IP address validation in server forms 2023-11-17 12:38:47 +01:00
Andras Bacsai
16281248ac Refactor Dockerfile deployment logic and server
validation
2023-11-17 12:22:45 +01:00
Andras Bacsai
8670b41671 fix: do not allow to enter local ip addresses 2023-11-17 11:56:14 +01:00
Andras Bacsai
9c69044da5 Merge pull request #1463 from coollabsio/next
v4.0.0-beta.139
2023-11-17 11:35:48 +01:00
Andras Bacsai
ebc4ab9af5 Remove unnecessary ray() statement 2023-11-17 11:33:46 +01:00
Andras Bacsai
57738198ad Add fluentd logging configuration for database & services 2023-11-17 11:32:52 +01:00
Andras Bacsai
b8252b85b0 Refactor logging configuration in ApplicationDeploymentJob.php 2023-11-17 11:13:16 +01:00
Andras Bacsai
479c2743bd Update Fluent Bit configuration file 2023-11-17 10:50:02 +01:00
Andras Bacsai
81e6482d7a Remove commented out code and fix indentation 2023-11-17 10:21:42 +01:00
Andras Bacsai
88c5d87084 Add log drain settings for New Relic,Highlight.io, and Axiom 2023-11-17 10:21:19 +01:00
Dan Hulton
ccb972dcb9 Show row-based env var display at lg, not xl. Add border for col-based env var display. 2023-11-16 21:49:51 -05:00
Andras Bacsai
6c7e091e1b feat: log drain (wip) 2023-11-17 00:37:09 +01:00
Andras Bacsai
91e3d33c0b Add cleanup of stucked helper containers on servers 2023-11-16 20:48:25 +01:00
Andras Bacsai
aa00389824 Remove redundant sentence about cloud version in
README.md
2023-11-16 17:43:20 +01:00
Andras Bacsai
b4e54ab3e3 Improve Cloud version features and reduce
maintenance
2023-11-16 17:42:25 +01:00
Andras Bacsai
8f3c5d4bd3 Add donation link and update version numbers 2023-11-16 17:40:49 +01:00
Andras Bacsai
26668c71a1 Merge pull request #1460 from coollabsio/next
v4.0.0-beta.138
2023-11-16 15:28:48 +01:00
Andras Bacsai
bd7637c696 Add healthcheck URL to deployment job and update
version to beta.138
2023-11-16 15:23:07 +01:00
Andras Bacsai
cff54f48a3 Merge pull request #1459 from coollabsio/next
v4.0.0-beta.137
2023-11-16 14:39:48 +01:00
Andras Bacsai
5c0f239f62 Update server readiness check runtime to 1 minute 2023-11-16 14:36:43 +01:00
Andras Bacsai
d56c28c8d9 Remove unused notifications from
ContainerStatusJob
2023-11-16 14:29:23 +01:00
Andras Bacsai
2b666ff121 Refactor server and docker cleanup jobs 2023-11-16 14:29:01 +01:00
Andras Bacsai
fb42c43953 Add isLocalhost method to Server model and
conditionally show Cloudflare Tunnel checkbox in
server form view
2023-11-16 14:28:26 +01:00
Andras Bacsai
81437e6822 Fix high disk usage notification bug in
ServerStatusJob.php and HighDiskUsage.php
2023-11-16 13:49:08 +01:00
Andras Bacsai
2fe429fe92 Comment out logging configuration in
ApplicationDeploymentJob.php
2023-11-16 13:32:07 +01:00
Andras Bacsai
4f0b214042 Add timeout to ApplicationDeploymentJob 2023-11-16 13:27:51 +01:00
Andras Bacsai
c866213f34 fix: when to pull image 2023-11-16 13:22:12 +01:00
Andras Bacsai
7cec6330cf Update server status check and notifications 2023-11-16 11:53:37 +01:00
Andras Bacsai
f5de21a343 Add OTLP exporter and host metrics receiver
configuration to config.yaml.
2023-11-16 11:16:41 +01:00
Andras Bacsai
ecbfc4d790 Add Fluent Bit and New Relic configurations 2023-11-15 15:45:37 +01:00
Andras Bacsai
55ff00e028 Add logging configuration to compose file 2023-11-15 15:19:31 +01:00
Andras Bacsai
a0fc2bbb85 Merge pull request #1457 from coollabsio/next
v4.0.0-beta.136
2023-11-15 10:55:39 +01:00
Andras Bacsai
51a704b22a Remove middleware and uniqueId methods from
DockerCleanupJob
2023-11-15 10:37:55 +01:00
Andras Bacsai
6d49678842 Remove unnecessary echo and add alive message 2023-11-15 10:37:02 +01:00
Andras Bacsai
0459b3a115 Add init-script to prod-ssu Docker container 2023-11-15 10:31:48 +01:00
Andras Bacsai
82592c8222 Add alive request to Init command 2023-11-15 10:26:31 +01:00
Andras Bacsai
25bf8895e2 Add InstanceSettings to Init command 2023-11-15 10:20:48 +01:00
Andras Bacsai
f4f7bdf7d5 Update dependencies and add new feature 2023-11-15 10:18:41 +01:00
Andras Bacsai
c008564aa3 Merge pull request #1456 from coollabsio/next
v4.0.0-beta.135
2023-11-15 09:40:33 +01:00
Andras Bacsai
b825d98b2d Refactor storage connection handling and project
initialization
2023-11-15 09:34:27 +01:00
Andras Bacsai
1f711d9281 Update version and fix webhook generation 2023-11-15 09:15:49 +01:00
Andras Bacsai
1de850f640 Merge pull request #1453 from coollabsio/next
v4.0.0-beta.134
2023-11-14 19:31:24 +01:00
Andras Bacsai
f176247b02 Update application deployment and version numbers 2023-11-14 19:29:59 +01:00
Andras Bacsai
3f3a1283df Merge pull request #1452 from coollabsio/next
v4.0.0-beta.133
2023-11-14 15:07:15 +01:00
Andras Bacsai
087bfcad08 Update server model and version configurations 2023-11-14 15:06:03 +01:00
Andras Bacsai
efd2899ae3 Merge pull request #1450 from coollabsio/next
v4.0.0-beta.132
2023-11-14 14:22:17 +01:00
Andras Bacsai
e4b2195932 Fix manual Git webhook generation 2023-11-14 14:14:21 +01:00
Andras Bacsai
0590ed7b2e Update webhooks configuration and application search. 2023-11-14 14:07:48 +01:00
Andras Bacsai
3a3c9448a4 Add gitWebhook method to Application model and fix
Dockerfile input display
2023-11-14 14:07:42 +01:00
Andras Bacsai
36d65ad5a8 Fix Dockerfile location in deployment job 2023-11-14 14:07:33 +01:00
Andras Bacsai
8db66952e8 Add manual Git webhooks and migration files 2023-11-14 13:26:14 +01:00
Andras Bacsai
45fa88ca4d Add error handling for missing email settings in
EmailChannel.php
2023-11-14 11:04:45 +01:00
Andras Bacsai
84b74f0b57 Update version numbers to 4.0.0-beta.132 2023-11-14 10:59:02 +01:00
Andras Bacsai
423cf62d92 Add support for dynamic docker-compose file name
in ApplicationDeploymentJob.php
2023-11-14 08:52:17 +01:00
Andras Bacsai
c4d9deabef Add debugging statement to report exceptions in
development environment
2023-11-13 21:17:17 +01:00
Andras Bacsai
776b1cb68d Add unauthenticated method to handle
authentication exceptions
2023-11-13 21:16:48 +01:00
Andras Bacsai
fc3025398e Merge pull request #1447 from coollabsio/next
v4.0.0-beta.131
2023-11-13 19:35:43 +01:00
Andras Bacsai
457c16c4dc remove ray 2023-11-13 19:26:11 +01:00
Andras Bacsai
ccf63c67e8 fix: mariadb backups 2023-11-13 19:25:18 +01:00
Andras Bacsai
945157b30c Merge pull request #1446 from coollabsio/next
v4.0.0-beta.130
2023-11-13 17:09:10 +01:00
Andras Bacsai
13798392be fix: generate service fields 2023-11-13 17:06:43 +01:00
Andras Bacsai
0d05b0a3d6 Merge pull request #1445 from coollabsio/next
v4.0.0-beta.129
2023-11-13 16:48:18 +01:00
Andras Bacsai
e0d2f88d99 fix: fqdn for minio 2023-11-13 16:45:54 +01:00
Andras Bacsai
e260bfae02 Merge pull request #1443 from coollabsio/next
v4.0.0-beta.128
2023-11-13 15:49:51 +01:00
Andras Bacsai
5abd4a6d78 Update version and fix MINIO_BROWSER_REDIRECT_URL
and MINIO_SERVER_URL
2023-11-13 15:49:23 +01:00
Andras Bacsai
9dff1e5631 Merge pull request #1442 from coollabsio/next
v4.0.0-beta.127
2023-11-13 15:42:28 +01:00
Andras Bacsai
02332ade1b Fix URLs and remove unnecessary command in
ApplicationDeploymentJob.php
2023-11-13 15:41:49 +01:00
Andras Bacsai
486de58d5b Update database start commands 2023-11-13 15:27:33 +01:00
Andras Bacsai
606aeb2b61 Merge pull request #1441 from coollabsio/next
v4.0.0-beta.126
2023-11-13 15:21:45 +01:00
Andras Bacsai
3fc264560c Update dependencies and fix minor bugs. 2023-11-13 15:19:49 +01:00
Andras Bacsai
3dd9182281 Add sponsorship notification and disable option,
update dependencies
2023-11-13 14:44:54 +01:00
Andras Bacsai
c838ff7198 Update version numbers to 4.0.0-beta.126 2023-11-13 13:38:50 +01:00
1283 changed files with 80041 additions and 19186 deletions

View File

@@ -1,16 +1,38 @@
APP_NAME=Coolify-localhost
APP_ID=development
# Coolify Configuration
APP_ENV=local
APP_NAME="Coolify Development"
APP_ID=development
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
APP_PORT=8000
MUX_ENABLED=false
APP_DEBUG=true
SSH_MUX_ENABLED=false
# PostgreSQL Database Configuration
DB_DATABASE=coolify
DB_USERNAME=coolify
DB_PASSWORD=password
DB_HOST=host.docker.internal
DB_PORT=5432
# Ray Configuration
# Set to true to enable Ray
RAY_ENABLED=false
# Set custom ray port
RAY_PORT=
# Clockwork Configuration
CLOCKWORK_ENABLED=false
CLOCKWORK_QUEUE_COLLECT=true
# Enable Laravel Telescope for debugging
TELESCOPE_ENABLED=false
# Selenium Driver URL for Dusk
DUSK_DRIVER_URL=http://selenium:4444
## For Andras only
# To purge cache
# Special Keys for Andras
# For cache purging
BUNNY_API_KEY=
# To upload assets
# For asset uploads
BUNNY_STORAGE_API_KEY=

View File

@@ -1,6 +1,16 @@
# Coolify Configuration
APP_ID=
APP_NAME=Coolify
APP_KEY=
# PostgreSQL Database Configuration
DB_USERNAME=coolify
DB_PASSWORD=
# Redis Configuration
REDIS_PASSWORD=
# Pusher Configuration
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=

View File

@@ -0,0 +1,12 @@
IS_WINDOWS_DOCKER_DESKTOP=true
APP_ID=coolify-windows-docker-desktop
APP_NAME=Coolify
APP_KEY=base64:ssTlCmrIE/q7whnKMvT6DwURikg69COzGsAwFVROm80=
DB_PASSWORD=coolify
REDIS_PASSWORD=coolify
PUSHER_APP_ID=coolify
PUSHER_APP_KEY=coolify
PUSHER_APP_SECRET=coolify

View File

@@ -1,17 +1,28 @@
name: Bug report
description: Create a new bug report
title: '[Bug]: '
description: "Create a new bug report."
title: "[Bug]: "
body:
- type: markdown
attributes:
value: >-
# 💎 Bounty program (with
[algora.io](https://console.algora.io/org/coollabsio/bounties/new))
If you would like to prioritize the issue resolution, you can add bounty
to this issue.
Click [here](https://console.algora.io/org/coollabsio/bounties/new) to
get started.
- type: textarea
attributes:
label: Description
description: A clear and concise description of the problem
validations:
required: true
- type: textarea
attributes:
label: Minimal Reproduction (if possible, example repository)
description: Please provide a step by step guide to reproduce the issue
description: Please provide a step by step guide to reproduce the issue.
validations:
required: true
- type: textarea
@@ -21,6 +32,15 @@ body:
- type: input
attributes:
label: Version
description: Coolify's version (see bottom left corner).
description: Coolify's version (see top of your screen).
validations:
required: true
- type: checkboxes
attributes:
label: Cloud?
description: "Are you using the cloud version of Coolify?"
options:
- label: 'Yes'
required: false
- label: 'No'
required: false

View File

@@ -4,5 +4,5 @@ contact_links:
url: https://coollabs.io/discord
about: Reach out to us on Discord.
- name: 🙋‍♂️ Feature Requests
url: https://github.com/coollabsio/coolify/discussions/categories/feature-requests-ideas
url: https://github.com/coollabsio/coolify/discussions/categories/new-features
about: All feature requests will be discussed here.

1
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1 @@
> Always use `next` branch as destination branch for PRs, not `main`

View File

@@ -18,44 +18,56 @@ jobs:
contents: read
packages: write
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Login to ghcr.io
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Get Version
id: version
run: |
echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app ghcr.io/jqlang/jq:latest '.coolify.helper.version' versions.json)"|xargs >> $GITHUB_OUTPUT
- name: Build image and push to registry
uses: docker/build-push-action@v3
uses: docker/build-push-action@v5
with:
no-cache: true
context: .
file: docker/coolify-helper/Dockerfile
platforms: linux/amd64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:next
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next
labels: |
coolify.managed=true
aarch64:
runs-on: [ self-hosted, arm64 ]
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Login to ghcr.io
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Get Version
id: version
run: |
echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app ghcr.io/jqlang/jq:latest '.coolify.helper.version' versions.json)"|xargs >> $GITHUB_OUTPUT
- name: Build image and push to registry
uses: docker/build-push-action@v3
uses: docker/build-push-action@v5
with:
no-cache: true
context: .
file: docker/coolify-helper/Dockerfile
platforms: linux/aarch64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:next-aarch64
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-aarch64
labels: |
coolify.managed=true
merge-manifest:
runs-on: ubuntu-latest
permissions:
@@ -64,21 +76,26 @@ jobs:
needs: [ amd64, aarch64 ]
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
- name: Login to ghcr.io
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Get Version
id: version
run: |
echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app ghcr.io/jqlang/jq:latest '.coolify.helper.version' versions.json)"|xargs >> $GITHUB_OUTPUT
- name: Create & publish manifest
run: |
docker buildx imagetools create --append ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:next-aarch64 --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:next
docker buildx imagetools create --append ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-aarch64 --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:next
- uses: sarisia/actions-status-discord@v1
if: always()
with:
webhook: ${{ secrets.DISCORD_WEBHOOK_DEV_RELEASE_CHANNEL }}

View File

@@ -2,7 +2,7 @@ name: Coolify Helper Image (v4)
on:
push:
branches: [ "main" ]
branches: [ "main", "next" ]
paths:
- .github/workflows/coolify-helper.yml
- docker/coolify-helper/Dockerfile
@@ -18,44 +18,56 @@ jobs:
contents: read
packages: write
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Login to ghcr.io
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Get Version
id: version
run: |
echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app ghcr.io/jqlang/jq:latest '.coolify.helper.version' versions.json)"|xargs >> $GITHUB_OUTPUT
- name: Build image and push to registry
uses: docker/build-push-action@v3
uses: docker/build-push-action@v5
with:
no-cache: true
context: .
file: docker/coolify-helper/Dockerfile
platforms: linux/amd64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}
labels: |
coolify.managed=true
aarch64:
runs-on: [ self-hosted, arm64 ]
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Login to ghcr.io
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Get Version
id: version
run: |
echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app ghcr.io/jqlang/jq:latest '.coolify.helper.version' versions.json)"|xargs >> $GITHUB_OUTPUT
- name: Build image and push to registry
uses: docker/build-push-action@v3
uses: docker/build-push-action@v5
with:
no-cache: true
context: .
file: docker/coolify-helper/Dockerfile
platforms: linux/aarch64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-aarch64
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-aarch64
labels: |
coolify.managed=true
merge-manifest:
runs-on: ubuntu-latest
permissions:
@@ -64,20 +76,24 @@ jobs:
needs: [ amd64, aarch64 ]
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
- name: Login to ghcr.io
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Get Version
id: version
run: |
echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app ghcr.io/jqlang/jq:latest '.coolify.helper.version' versions.json)"|xargs >> $GITHUB_OUTPUT
- name: Create & publish manifest
run: |
docker buildx imagetools create --append ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-aarch64 --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
docker buildx imagetools create --append ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-aarch64 --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }} --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
- uses: sarisia/actions-status-discord@v1
if: always()
with:

View File

@@ -0,0 +1,84 @@
name: Coolify Testing Host (v4-non-prod)
on:
push:
branches: [ "main", "next" ]
paths:
- .github/workflows/coolify-testing-host.yml
- docker/testing-host/Dockerfile
env:
REGISTRY: ghcr.io
IMAGE_NAME: "coollabsio/coolify-testing-host"
jobs:
amd64:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Login to ghcr.io
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build image and push to registry
uses: docker/build-push-action@v5
with:
no-cache: true
context: .
file: docker/testing-host/Dockerfile
platforms: linux/amd64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
aarch64:
runs-on: [ self-hosted, arm64 ]
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Login to ghcr.io
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build image and push to registry
uses: docker/build-push-action@v5
with:
no-cache: true
context: .
file: docker/testing-host/Dockerfile
platforms: linux/aarch64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-aarch64
merge-manifest:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
needs: [ amd64, aarch64 ]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to ghcr.io
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create & publish manifest
run: |
docker buildx imagetools create --append ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-aarch64 --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
- uses: sarisia/actions-status-discord@v1
if: always()
with:
webhook: ${{ secrets.DISCORD_WEBHOOK_DEV_RELEASE_CHANNEL }}

View File

@@ -2,7 +2,7 @@ name: Development Build (v4)
on:
push:
branches: ["next"]
branches-ignore: ["main", "v3"]
paths-ignore:
- .github/workflows/coolify-helper.yml
- docker/coolify-helper/Dockerfile
@@ -15,65 +15,65 @@ jobs:
amd64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Login to ghcr.io
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build image and push to registry
uses: docker/build-push-action@v4
uses: docker/build-push-action@v5
with:
context: .
file: docker/prod-ssu/Dockerfile
file: docker/prod/Dockerfile
platforms: linux/amd64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:next
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}
aarch64:
runs-on: [self-hosted, arm64]
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v3
- name: Login to ghcr.io
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build image and push to registry
uses: docker/build-push-action@v3
with:
context: .
file: docker/prod-ssu/Dockerfile
platforms: linux/aarch64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:next-aarch64
runs-on: [self-hosted, arm64]
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Login to ghcr.io
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build image and push to registry
uses: docker/build-push-action@v5
with:
context: .
file: docker/prod/Dockerfile
platforms: linux/aarch64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}-aarch64
merge-manifest:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
needs: [amd64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to ghcr.io
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create & publish manifest
run: |
docker buildx imagetools create --append ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:next-aarch64 --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:next
- uses: sarisia/actions-status-discord@v1
if: always()
with:
webhook: ${{ secrets.DISCORD_WEBHOOK_DEV_RELEASE_CHANNEL }}
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
needs: [amd64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to ghcr.io
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create & publish manifest
run: |
docker buildx imagetools create --append ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}-aarch64 --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}
- uses: sarisia/actions-status-discord@v1
if: always()
with:
webhook: ${{ secrets.DISCORD_WEBHOOK_DEV_RELEASE_CHANNEL }}

View File

@@ -14,7 +14,7 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Cache Docker layers
uses: actions/cache@v2
with:

View File

@@ -0,0 +1,25 @@
name: Fix PHP code style issues
on: [push]
permissions:
contents: write
jobs:
php-code-styling:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Fix PHP code style issues
uses: aglipanci/laravel-pint-action@2.4
- name: Commit changes
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Fix styling

93
.github/workflows/pr-build.yml vendored Normal file
View File

@@ -0,0 +1,93 @@
name: PR Build (v4)
on:
pull_request:
types:
- opened
branches-ignore: ["main", "v3"]
paths-ignore:
- .github/workflows/coolify-helper.yml
- docker/coolify-helper/Dockerfile
env:
REGISTRY: ghcr.io
IMAGE_NAME: "coollabsio/coolify"
jobs:
amd64:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
attestations: write
id-token: write
actions: write
steps:
- uses: actions/checkout@v4
- name: Login to ghcr.io
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build image and push to registry
uses: docker/build-push-action@v5
with:
context: .
file: docker/prod/Dockerfile
platforms: linux/amd64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.event.number }}
aarch64:
runs-on: [self-hosted, arm64]
permissions:
contents: read
packages: write
attestations: write
id-token: write
actions: write
steps:
- uses: actions/checkout@v4
- name: Login to ghcr.io
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build image and push to registry
uses: docker/build-push-action@v5
with:
context: .
file: docker/prod/Dockerfile
platforms: linux/aarch64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.event.number }}-aarch64
merge-manifest:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
attestations: write
id-token: write
actions: write
needs: [amd64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to ghcr.io
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create & publish manifest
run: |
docker buildx imagetools create --append ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.event.number }}-aarch64 --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.event.number }}
- uses: sarisia/actions-status-discord@v1
if: always()
with:
webhook: ${{ secrets.DISCORD_WEBHOOK_DEV_RELEASE_CHANNEL }}

View File

@@ -3,6 +3,10 @@ name: Production Build (v4)
on:
push:
branches: ["main"]
paths-ignore:
- .github/workflows/coolify-helper.yml
- docker/coolify-helper/Dockerfile
- templates/service-templates.json
env:
REGISTRY: ghcr.io
@@ -12,9 +16,9 @@ jobs:
amd64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Login to ghcr.io
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
@@ -24,19 +28,19 @@ jobs:
run: |
echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getVersion.php)"|xargs >> $GITHUB_OUTPUT
- name: Build image and push to registry
uses: docker/build-push-action@v4
uses: docker/build-push-action@v5
with:
context: .
file: docker/prod-ssu/Dockerfile
file: docker/prod/Dockerfile
platforms: linux/amd64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}
aarch64:
runs-on: [self-hosted, arm64]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Login to ghcr.io
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
@@ -46,10 +50,10 @@ jobs:
run: |
echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getVersion.php)"|xargs >> $GITHUB_OUTPUT
- name: Build image and push to registry
uses: docker/build-push-action@v4
uses: docker/build-push-action@v5
with:
context: .
file: docker/prod-ssu/Dockerfile
file: docker/prod/Dockerfile
platforms: linux/aarch64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-aarch64
@@ -61,13 +65,13 @@ jobs:
needs: [amd64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
- name: Login to ghcr.io
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
@@ -78,7 +82,7 @@ jobs:
echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getVersion.php)"|xargs >> $GITHUB_OUTPUT
- name: Create & publish manifest
run: |
docker buildx imagetools create --append ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-aarch64 --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}
docker buildx imagetools create --append ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-aarch64 --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }} --tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
- uses: sarisia/actions-status-discord@v1
if: always()
with:

View File

@@ -3,7 +3,7 @@ tasks:
# Fix because of https://github.com/gitpod-io/gitpod/issues/16614
before: sudo curl -o /usr/local/bin/docker-compose -fsSL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-$(uname -m)
init: |
cp .env.example .env &&
cp .env.development.example .env &&
sed -i "s#APP_URL=http://localhost#APP_URL=$(gp url 8000)#g" .env
sed -i "s#USERID=#USERID=33333#g" .env
sed -i "s#GROUPID=#GROUPID=33333#g" .env
@@ -20,7 +20,7 @@ tasks:
echo "Waiting for Sail environment to boot up."
gp sync-await spin-is-ready
./vendor/bin/spin exec vite npm install
./vendor/bin/spin exec vite npm run dev
./vendor/bin/spin exec vite npm run dev -- --host
- name: Laravel Queue Worker, listening to code changes
command: |

View File

@@ -1,22 +0,0 @@
<?php
use App\Models\User;
$email = 'test@example.com';
$user = User::whereEmail($email)->first();
$teams = $user->teams;
foreach ($teams as $team) {
$servers = $team->servers;
if ($servers->count() > 0) {
foreach ($servers as $server) {
dump($server);
$server->delete();
}
}
dump($team);
$team->delete();
}
if ($user) {
dump($user);
$user->delete();
}

View File

@@ -1,28 +0,0 @@
<?php
/**
* @label Send Email
* @description Send email to all users
*/
use App\Models\User;
use Illuminate\Support\Facades\Mail;
set_transanctional_email_settings();
$users = User::whereEmail('test@example.com');
foreach ($users as $user) {
Mail::send([], [], function ($message) use ($user) {
$message
->to($user->email)
->subject("Testing")
->text(
<<<EOF
Hello,
Welcome to Coolify Cloud.
Here is your user id: $user->id
EOF
);
});
}

207
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,207 @@
# Contributing to Coolify
> "First, thanks for considering contributing to my project. It really means a lot!" - [@andrasbacsai](https://github.com/andrasbacsai)
You can ask for guidance anytime on our [Discord server](https://coollabs.io/discord) in the `#contribute` channel.
## Table of Contents
1. [Setup Development Environment](#1-setup-development-environment)
2. [Verify Installation](#2-verify-installation-optional)
3. [Fork and Setup Local Repository](#3-fork-and-setup-local-repository)
4. [Set up Environment Variables](#4-set-up-environment-variables)
5. [Start Coolify](#5-start-coolify)
6. [Start Development](#6-start-development)
7. [Development Notes](#7-development-notes)
8. [Create a Pull Request](#8-create-a-pull-request)
9. [Additional Contribution Guidelines](#additional-contribution-guidelines)
## 1. Setup Development Environment
Follow the steps below for your operating system:
<details>
<summary><strong>Windows</strong></summary>
1. Install `docker-ce`, Docker Desktop (or similar):
- Docker CE (recommended):
- Install Windows Subsystem for Linux v2 (WSL2) by following this guide: [Install WSL](https://learn.microsoft.com/en-us/windows/wsl/install)
- After installing WSL2, install Docker CE for your Linux distribution by following this guide: [Install Docker Engine](https://docs.docker.com/engine/install/)
- Make sure to choose the appropriate Linux distribution (e.g., Ubuntu) when following the Docker installation guide
- Install Docker Desktop (easier):
- Download and install [Docker Desktop for Windows](https://docs.docker.com/desktop/install/windows-install/)
- Ensure WSL2 backend is enabled in Docker Desktop settings
2. Install Spin:
- Follow the instructions to install Spin on Windows from the [Spin documentation](https://serversideup.net/open-source/spin/docs/installation/install-windows#download-and-install-spin-into-wsl2)
</details>
<details>
<summary><strong>MacOS</strong></summary>
1. Install Orbstack, Docker Desktop (or similar):
- Orbstack (recommended, as it is a faster and lighter alternative to Docker Desktop):
- Download and install [Orbstack](https://docs.orbstack.dev/quick-start#installation)
- Docker Desktop:
- Download and install [Docker Desktop for Mac](https://docs.docker.com/desktop/install/mac-install/)
2. Install Spin:
- Follow the instructions to install Spin on MacOS from the [Spin documentation](https://serversideup.net/open-source/spin/docs/installation/install-macos/#download-and-install-spin)
</details>
<details>
<summary><strong>Linux</strong></summary>
1. Install Docker Engine, Docker Desktop (or similar):
- Docker Engine (recommended, as there is no VM overhead):
- Follow the official [Docker Engine installation guide](https://docs.docker.com/engine/install/) for your Linux distribution
- Docker Desktop:
- If you want a GUI, you can use [Docker Desktop for Linux](https://docs.docker.com/desktop/install/linux-install/)
2. Install Spin:
- Follow the instructions to install Spin on Linux from the [Spin documentation](https://serversideup.net/open-source/spin/docs/installation/install-linux#configure-docker-permissions)
</details>
## 2. Verify Installation (Optional)
After installing Docker (or Orbstack) and Spin, verify the installation:
1. Open a terminal or command prompt
2. Run the following commands:
```bash
docker --version
spin --version
```
You should see version information for both Docker and Spin.
## 3. Fork and Setup Local Repository
1. Fork the [Coolify](https://github.com/coollabsio/coolify) repository to your GitHub account.
2. Install a code editor on your machine (choose one):
| Editor | Platform | Download Link |
|--------|----------|---------------|
| Visual Studio Code (recommended free) | Windows/macOS/Linux | [Download](https://code.visualstudio.com/download) |
| Cursor (recommended but paid) | Windows/macOS/Linux | [Download](https://www.cursor.com/) |
| Zed (very fast) | macOS/Linux | [Download](https://zed.dev/download) |
3. Clone the Coolify Repository from your fork to your local machine
- Use `git clone` in the command line, or
- Use GitHub Desktop (recommended):
- Download and install from [https://desktop.github.com/](https://desktop.github.com/)
- Open GitHub Desktop and login with your GitHub account
- Click on `File` -> `Clone Repository` select `github.com` as the repository location, then select your forked Coolify repository, choose the local path and then click `Clone`
4. Open the cloned Coolify Repository in your chosen code editor.
## 4. Set up Environment Variables
1. In the Code Editor, locate the `.env.development.example` file in the root directory of your local Coolify repository.
2. Duplicate the `.env.development.example` file and rename the copy to `.env`.
3. Open the new `.env` file and review its contents. Adjust any environment variables as needed for your development setup.
4. If you encounter errors during database migrations, update the database connection settings in your `.env` file. Use the IP address or hostname of your PostgreSQL database container. You can find this information by running `docker ps` after executing `spin up`.
5. Save the changes to your `.env` file.
## 5. Start Coolify
1. Open a terminal in the local Coolify directory.
2. Run the following command in the terminal (leave that terminal open):
```bash
spin up
```
> [!NOTE]
> You may see some errors, but don't worry; this is expected.
3. If you encounter permission errors, especially on macOS, use:
```bash
sudo spin up
```
> [!NOTE]
> If you change environment variables afterwards or anything seems broken, press Ctrl + C to stop the process and run `spin up` again.
## 6. Start Development
1. Access your Coolify instance:
- URL: `http://localhost:8000`
- Login: `test@example.com`
- Password: `password`
2. Additional development tools:
| Tool | URL | Note |
|------|-----|------|
| Laravel Horizon (scheduler) | `http://localhost:8000/horizon` | Only accessible when logged in as root user |
| Mailpit (email catcher) | `http://localhost:8025` | |
| Telescope (debugging tool) | `http://localhost:8000/telescope` | Disabled by default |
> [!NOTE]
> To enable Telescope, add the following to your `.env` file:
> ```env
> TELESCOPE_ENABLED=true
> ```
## 7. Development Notes
When working on Coolify, keep the following in mind:
1. **Database Migrations**: After switching branches or making changes to the database structure, always run migrations:
```bash
docker exec -it coolify php artisan migrate
```
2. **Resetting Development Setup**: To reset your development setup to a clean database with default values:
```bash
docker exec -it coolify php artisan migrate:fresh --seed
```
3. **Troubleshooting**: If you encounter unexpected behavior, ensure your database is up-to-date with the latest migrations and if possible reset the development setup to eliminate any environment-specific issues.
> [!IMPORTANT]
> Forgetting to migrate the database can cause problems, so make it a habit to run migrations after pulling changes or switching branches.
## 8. Create a Pull Request
1. After making changes or adding a new service:
- Commit your changes to your forked repository.
- Push the changes to your GitHub account.
2. Creating the Pull Request (PR):
- Navigate to the main Coolify repository on GitHub.
- Click the "Pull requests" tab.
- Click the green "New pull request" button.
- Choose your fork and branch as the compare branch.
- Click "Create pull request".
3. Filling out the PR details:
- Give your PR a descriptive title.
- In the description, explain the changes you've made.
- Reference any related issues by using keywords like "Fixes #123" or "Closes #456".
> [!IMPORTANT]
> Always set the base branch for your PR to the `next` branch of the Coolify repository, not the `main` branch.
4. Submit your PR:
- Review your changes one last time.
- Click "Create pull request" to submit.
> [!NOTE]
> Make sure your PR is out of draft mode as soon as it's ready for review. PRs that are in draft mode for a long time may be closed by maintainers.
After submission, maintainers will review your PR and may request changes or provide feedback.
## Additional Contribution Guidelines
### Contributing a New Service
To add a new service to Coolify, please refer to our documentation:
[Adding a New Service](https://coolify.io/docs/knowledge-base/contribute/service)
### Contributing to Documentation
To contribute to the Coolify documentation, please refer to this guide:
[Contributing to the Coolify Documentation](https://github.com/coollabsio/documentation-coolify/blob/main/CONTRIBUTING.md)

View File

@@ -1,37 +0,0 @@
# Contributing
> "First, thanks for considering to contribute to my project.
It really means a lot!" - [@andrasbacsai](https://github.com/andrasbacsai)
You can ask for guidance anytime on our
[Discord server](https://coollabs.io/discord) in the `#contribution` channel.
## Code Contribution
### 1) Setup your development environment
- You need to have Docker Engine (or equivalent) [installed](https://docs.docker.com/engine/install/) on your system.
- For better DX, install [Spin](https://serversideup.net/open-source/spin/).
### 2) Set your environment variables
- Copy [.env.development.example](./.env.development.example) to .env.
## 3) Start & setup Coolify
- Run `spin up` - You can notice that errors will be thrown. Don't worry.
- If you see weird permission errors, especially on Mac, run `sudo spin up` instead.
- Run `./scripts/run setup:dev` - This will generate a secret key for you, delete any existing database layouts, migrate database to the new layout, and seed your database.
### 4) Start development
You can login your Coolify instance at `localhost:8000` with `test@example.com` and `password`.
Your horizon (Laravel scheduler): `localhost:8000/horizon` - Only reachable if you logged in with root user.
Mails are caught by Mailpit: `localhost:8025`
## New Service Contribution
Check out the docs [here](https://coolify.io/docs/how-to-add-a-service).

152
README.md
View File

@@ -1,72 +1,95 @@
![Latest Release Version](https://img.shields.io/badge/dynamic/json?labelColor=grey&color=6366f1&label=Latest_released_version&url=https%3A%2F%2Fcdn.coollabs.io%2Fcoolify%2Fversions.json&query=coolify.v4.version&style=for-the-badge
)
[![Bounty Issues](https://img.shields.io/static/v1?labelColor=grey&color=6366f1&label=Algora&message=%F0%9F%92%8E+Bounty+issues&style=for-the-badge)](https://console.algora.io/org/coollabsio/bounties/new)
# About the Project
Coolify is an open-source & self-hostable alternative to Heroku / Netlify / Vercel / etc.
It helps you to manage your servers, applications, databases on your own hardware, all you need is SSH connection. You can manage VPS, Bare Metal, Raspberry PI's anything.
It helps you manage your servers, applications, and databases on your own hardware; you only need an SSH connection. You can manage VPS, Bare Metal, Raspberry PIs, and anything else.
Imagine if you could have the ease of a cloud but with your own servers. That is **Coolify**.
Imagine having the ease of a cloud but with your own servers. That is **Coolify**.
No vendor lock-in, which means that all the configuration for your applications/databases/etc are saved to your server. So if you decide to stop using Coolify (oh nooo), you could still manage your running resources. You just lose the automations and all the magic. 🪄️
No vendor lock-in, which means that all the configurations for your applications/databases/etc are saved to your server. So, if you decide to stop using Coolify (oh nooo), you could still manage your running resources. You lose the automations and all the magic. 🪄️
For more information, take a look at our landing page [here](https://coolify.io).
> If you are looking for previous (v3) version, it is [here](https://github.com/coollabsio/coolify/tree/v3).
# Cloud
If you do not want to self-host Coolify, there is a paid cloud version available: https://app.coolify.io
You can easily attach your own servers, get all the automations, free email notifications, etc.
For more information & pricing, take a look at our landing page [here](https://coolify.io).
# Beta
The latest version (v4) is still in beta. That does not mean it is unstable. All the features that are available are stable enough be usable in real-life.
There are hundreds of people using it for managing their client's applications, freelancers, hobbyists, businesses.
For more information, take a look at our landing page at [coolify.io](https://coolify.io).
# Installation
```bash
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
```
You can find the installation script source [here](./scripts/install.sh).
You can find the installation script [here](./scripts/install.sh).
# Support
## Support
Contact us at [coolify.io/docs/contact](https://coolify.io/docs/contact).
Contact us [here](https://coolify.io/docs/contact).
# Donations
To stay completely free and open-source, with no feature behind the paywall and evolve the project, we need your help. If you like Coolify, please consider donating to help us fund the project's future development.
## Recognitions
[coolify.io/sponsorships](https://coolify.io/sponsorships)
<p>
<a href="https://news.ycombinator.com/item?id=26624341">
<img
style="width: 250px; height: 54px;" width="250" height="54"
alt="Featured on Hacker News"
src="https://hackernews-badge.vercel.app/api?id=26624341"
/>
</a>
</p>
Thank you so much!
<a href="https://www.producthunt.com/posts/coolify?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-coolify" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=338273&theme=light" alt="Coolify - An&#0032;open&#0045;source&#0032;&#0038;&#0032;self&#0045;hostable&#0032;Heroku&#0044;&#0032;Netlify&#0032;alternative | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
Special thanks to our biggest sponsors!
<a href="https://trendshift.io/repositories/634" target="_blank"><img src="https://trendshift.io/api/badge/repositories/634" alt="coollabsio%2Fcoolify | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
### Special Sponsors
## 💰 Financial Contributors
![image](https://github.com/user-attachments/assets/c95a07df-7c5a-4e77-a35a-81f25fcbece1)
Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/coollabsio/contribute)]
* [CCCareers](https://cccareers.org/) - A career development platform connecting coding bootcamp graduates with job opportunities in the tech industry.
* [Hetzner](http://htznr.li/CoolifyXHetzner) - A German web hosting company offering affordable dedicated servers, cloud services, and web hosting solutions.
* [Logto](https://logto.io/?ref=coolify) - An open-source authentication and authorization solution for building secure login systems and managing user identities.
* [BC Direct](https://bc.direct/?ref=coolify.io) - A digital marketing agency specializing in e-commerce solutions and online business growth strategies.
* [QuantCDN](https://www.quantcdn.io/?ref=coolify.io) - A content delivery network (CDN) optimizing website performance through global content distribution.
* [Arcjet](https://arcjet.com/?ref=coolify.io) - A cloud-based platform providing real-time protection against API abuse and bot attacks.
* [SupaGuide](https://supa.guide/?ref=coolify.io) - A comprehensive resource hub offering guides and tutorials for web development using Supabase.
* [Tigris](https://tigrisdata.com/?ref=coolify.io) - A fully managed serverless object storage service compatible with Amazon S3 API. Offers high performance, scalability, and built-in search capabilities for efficient data management.
* [Fractal Networks](https://fractalnetworks.co/?ref=coolify.io) - A decentralized network infrastructure company focusing on secure and private communication solutions.
* [Advin](https://coolify.ad.vin/?ref=coolify.io) - A digital advertising agency specializing in programmatic advertising and data-driven marketing strategies.
* [Treive](https://trieve.ai/?ref=coolify.io) - An AI-powered search and discovery platform for enhancing information retrieval in large datasets.
* [Blacksmith](https://blacksmith.sh/?ref=coolify.io) - A cloud-native platform for automating infrastructure provisioning and management across multiple cloud providers.
* [Latitude](https://latitude.sh/?ref=coolify.io) - A cloud computing platform offering bare metal servers and cloud instances for developers and businesses.
* [Brand Dev](https://brand.dev/?ref=coolify.io) - A web development agency specializing in creating custom digital experiences and brand identities.
* [Jobscollider](https://jobscollider.com/remote-jobs?ref=coolify.io) - A job search platform connecting professionals with remote work opportunities across various industries.
* [Hostinger](https://www.hostinger.com/vps/coolify-hosting?ref=coolify.io) - A web hosting provider offering affordable hosting solutions, domain registration, and website building tools.
* [Glueops](https://www.glueops.dev/?ref=coolify.io) - A DevOps consulting company providing infrastructure automation and cloud optimization services.
* [Ubicloud](https://ubicloud.com/?ref=coolify.io) - An open-source alternative to hyperscale cloud providers, offering high-performance cloud computing services.
* [Juxtdigital](https://juxtdigital.dev/?ref=coolify.io) - A digital agency offering web development, design, and digital marketing services for businesses.
* [Saasykit](https://saasykit.com/?ref=coolify.io) - A Laravel-based boilerplate providing essential components and features for building SaaS applications quickly.
* [Massivegrid](https://massivegrid.com/?ref=coolify.io) - A cloud hosting provider offering scalable infrastructure solutions for businesses of all sizes.
### Organizations
Special thanks to our biggest sponsors, [CCCareers](https://cccareers.org/) and [Appwrite](https://appwrite.io)!
<a href="https://cccareers.org/" target="_blank"><img src="./other/logos/ccc-logo.webp" alt="appwrite logo" width="200"/></a>
<a href="https://appwrite.io" target="_blank"><img src="./other/logos/appwrite.svg" alt="appwrite logo" width="200"/></a>
Support this project with your organization. Your logo will show up here with a link to your website.
## Github Sponsors ($40+)
<a href="https://serpapi.com/?ref=coolify.io"><img width="60px" alt="SerpAPI" src="https://github.com/serpapi.png"/></a>
<a href="https://typebot.io/?ref=coolify.io"><img src="https://pbs.twimg.com/profile_images/1509194008366657543/9I-C7uWT_400x400.jpg" width="60px" alt="typebot"/></a>
<a href="https://www.runpod.io/?ref=coolify.io">
<svg style="width:60px;height:60px;background:#fff;" xmlns="http://www.w3.org/2000/svg" version="1.0" viewBox="0 0 200 200"><g><path d="M74.5 51.1c-25.4 14.9-27 16-29.6 20.2-1.8 3-1.9 5.3-1.9 32.3 0 21.7.3 29.4 1.3 30.6 1.9 2.5 46.7 27.9 48.5 27.6 1.5-.3 1.7-3.1 2-27.7.2-21.9 0-27.8-1.1-29.5-.8-1.2-9.9-6.8-20.2-12.6-10.3-5.8-19.4-11.5-20.2-12.7-1.8-2.6-.9-5.9 1.8-7.4 1.6-.8 6.3 0 21.8 4C87.8 78.7 98 81 99.6 81c4.4 0 49.9-25.9 49.9-28.4 0-1.6-3.4-2.8-24-8.2-13.2-3.5-25.1-6.3-26.5-6.3-1.4.1-12.4 5.9-24.5 13z"></path><path d="m137.2 68.1-3.3 2.1 6.3 3.7c3.5 2 6.3 4.3 6.3 5.1 0 .9-8 6.1-19.4 12.6-10.6 6-20 11.9-20.7 12.9-1.2 1.6-1.4 7.2-1.2 29.4.3 24.8.5 27.6 2 27.9 1.8.3 46.6-25.1 48.6-27.6.9-1.2 1.2-8.8 1.2-30.2s-.3-29-1.2-30.2c-1.6-1.9-12.1-7.8-13.9-7.8-.8 0-2.9 1-4.7 2.1z"></path></g></svg></a>
<a href="https://lightspeed.run/?ref=coolify.io"><img src="https://github.com/lightspeedrun.png" width="60px" alt="Lightspeed.run"/></a>
<a href="https://www.flint.sh/en/home?ref=coolify.io"> <img src="https://github.com/Flint-company.png" width="60px" alt="FlintCompany"/></a>
<a href="https://americancloud.com/?ref=coolify.io"><img src="https://github.com/American-Cloud.png" width="60px" alt="American Cloud"/></a>
<a href="https://cryptojobslist.com/?ref=coolify.io"><img src="https://github.com/cryptojobslist.png" width="60px" alt="CryptoJobsList" /></a>
<a href="https://codext.link/coolify-io?ref=coolify.io"><img src="./other/logos/codext.jpg" width="60px" alt="Codext" /></a>
<a href="https://x.com/mrsmith9ja?ref=coolify.io"><img width="60px" alt="Thompson Edolo" src="https://github.com/verygreenboi.png"/></a>
<a href="https://www.uxwizz.com/?ref=coolify.io"><img width="60px" alt="UXWizz" src="https://github.com/UXWizz.png"/></a>
<a href="https://github.com/Flowko"><img src="https://barrad.me/_ipx/f_webp&s_300x300/younes.jpg" width="60px" alt="Younes Barrad" /></a>
<a href="https://github.com/automazeio"><img src="https://github.com/automazeio.png" width="60px" alt="Automaze" /></a>
<a href="https://github.com/corentinclichy"><img src="https://github.com/corentinclichy.png" width="60px" alt="Corentin Clichy" /></a>
<a href="https://github.com/Niki2k1"><img src="https://github.com/Niki2k1.png" width="60px" alt="Niklas Lausch" /></a>
<a href="https://github.com/pixelinfinito"><img src="https://github.com/pixelinfinito.png" width="60px" alt="Pixel Infinito" /></a>
<a href="https://github.com/whitesidest"><img src="https://avatars.githubusercontent.com/u/12365916?s=52&v=4" width="60px" alt="Tyler Whitesides" /></a>
<a href="https://github.com/aniftyco"><img src="https://github.com/aniftyco.png" width="60px" alt="NiftyCo" /></a>
<a href="https://github.com/iujlaki"><img src="https://github.com/iujlaki.png" width="60px" alt="Imre Ujlaki" /></a>
<a href="https://il.ly"><img src="https://github.com/Illyism.png" width="60px" alt="Ilias Ism" /></a>
<a href="https://www.breakcold.com/?utm_source=coolify.io"><img src="https://github.com/breakcold.png" width="60px" alt="Breakcold" /></a>
<a href="https://github.com/urtho"><img src="https://github.com/urtho.png" width="60px" alt="Paweł Pierścionek" /></a>
<a href="https://github.com/monocursive"><img src="https://github.com/monocursive.png" width="60px" alt="Michael Mazurczak" /></a>
<a href="https://formbricks.com/?utm_source=coolify.io"><img src="https://github.com/formbricks.png" width="60px" alt="Formbricks" /></a>
<a href="https://x.com/adithsuhas17?utm_source=coolify.io"><img src="https://github.com/adith-suhas-sv.png" width="60px" alt="Adith Suhas" /></a>
## Organizations
<a href="https://opencollective.com/coollabsio/organization/0/website"><img src="https://opencollective.com/coollabsio/organization/0/avatar.svg"></a>
<a href="https://opencollective.com/coollabsio/organization/1/website"><img src="https://opencollective.com/coollabsio/organization/1/avatar.svg"></a>
<a href="https://opencollective.com/coollabsio/organization/2/website"><img src="https://opencollective.com/coollabsio/organization/2/avatar.svg"></a>
@@ -78,10 +101,47 @@ Support this project with your organization. Your logo will show up here with a
<a href="https://opencollective.com/coollabsio/organization/8/website"><img src="https://opencollective.com/coollabsio/organization/8/avatar.svg"></a>
<a href="https://opencollective.com/coollabsio/organization/9/website"><img src="https://opencollective.com/coollabsio/organization/9/avatar.svg"></a>
### Individuals
## Individuals
<a href="https://opencollective.com/coollabsio"><img src="https://opencollective.com/coollabsio/individuals.svg?width=890"></a>
## Star History
# Cloud
If you do not want to self-host Coolify, there is a paid cloud version available: [app.coolify.io](https://app.coolify.io)
For more information & pricing, take a look at our landing page [coolify.io](https://coolify.io).
## Why should I use the Cloud version?
The recommended way to use Coolify is to have one server for Coolify and one (or more) for the resources you are deploying. A server is around 4-5$/month.
By subscribing to the cloud version, you get the Coolify server for the same price, but with:
- High-availability
- Free email notifications
- Better support
- Less maintenance for you
# Recognitions
<p>
<a href="https://news.ycombinator.com/item?id=26624341">
<img
style="width: 250px; height: 54px;" width="250" height="54"
alt="Featured on Hacker News"
src="https://hackernews-badge.vercel.app/api?id=26624341"
/>
</a>
</p>
<a href="https://www.producthunt.com/posts/coolify?ref=badge-featured&utm_medium=badge&utm_souce=badge-coolify" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=338273&theme=light" alt="Coolify - An&#0032;open&#0045;source&#0032;&#0038;&#0032;self&#0045;hostable&#0032;Heroku&#0044;&#0032;Netlify&#0032;alternative | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
<a href="https://trendshift.io/repositories/634" target="_blank"><img src="https://trendshift.io/api/badge/repositories/634" alt="coollabsio%2Fcoolify | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
# Repo Activity
![Alt](https://repobeats.axiom.co/api/embed/eab1c8066f9c59d0ad37b76c23ebb5ccac4278ae.svg "Repobeats analytics image")
# Star History
[![Star History Chart](https://api.star-history.com/svg?repos=coollabsio/coolify&type=Date)](https://star-history.com/#coollabsio/coolify&Date)

45
RELEASE.md Normal file
View File

@@ -0,0 +1,45 @@
# Coolify Release Guide
This guide outlines the release process for Coolify, intended for developers and those interested in understanding how releases are managed and deployed.
## Release Process
1. **Development on `next` or separate branches**
- Changes, fixes and new features are developed on the `next` or even separate branches.
2. **Merging to `main`**
- Once changes are ready, they are merged from `next` into the `main` branch.
3. **Building the release**
- After merging to `main`, a new release is built.
- Note: A push to `main` does not automatically mean a new version is released.
4. **Creating a GitHub release**
- A new release is created on GitHub with the new version details.
5. **Updating the CDN**
- The final step is updating the version information on the CDN:
[https://cdn.coollabs.io/coolify/versions.json](https://cdn.coollabs.io/coolify/versions.json)
> [!NOTE]
> The CDN update may not occur immediately after the GitHub release. It can happen hours or even days later due to additional testing, stability checks, or potential hotfixes.
## Version Availability
It's important to understand that a new version released on GitHub may not immediately become available for users to update (through manual or auto-update).
> [!IMPORTANT]
> If you see a new release on GitHub but haven't received the update, it's likely because the CDN hasn't been updated yet. This is intentional and ensures stability and allows for hotfixes before the new version is officially released.
## Manually Update to Specific Versions
> [!CAUTION]
> Updating to unreleased versions is not recommended and may cause issues. Use at your own risk!
To update your Coolify instance to a specific (unreleased) version, use the following command:
```bash
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash -s <version>
```
-> Replace `<version>` with the version you want to update to (for example `4.0.0-beta.332`).

16
SECURITY.md Normal file
View File

@@ -0,0 +1,16 @@
# Security Policy
## Supported Versions
Use this section to tell people about which versions of your project are
currently being supported with security updates.
| Version | Supported |
| ------- | ------------------ |
| > 4 | :white_check_mark: |
| 3 | :x: |
## Reporting a Vulnerability
If you have any vulnerability please report at hi@coollabs.io

View File

@@ -0,0 +1,16 @@
<?php
namespace App\Actions\Application;
use App\Models\Application;
use Lorisleiva\Actions\Concerns\AsAction;
class LoadComposeFile
{
use AsAction;
public function handle(Application $application)
{
$application->loadComposeFile();
}
}

View File

@@ -8,22 +8,45 @@ use Lorisleiva\Actions\Concerns\AsAction;
class StopApplication
{
use AsAction;
public function handle(Application $application)
public function handle(Application $application, bool $previewDeployments = false)
{
$server = $application->destination->server;
$containers = getCurrentApplicationContainerStatus($server, $application->id, 0);
if ($containers->count() > 0) {
foreach ($containers as $container) {
$containerName = data_get($container, 'Names');
if ($containerName) {
instant_remote_process(
["docker rm -f {$containerName}"],
$server
);
if ($application->destination->server->isSwarm()) {
instant_remote_process(["docker stack rm {$application->uuid}"], $application->destination->server);
return;
}
$servers = collect([]);
$servers->push($application->destination->server);
$application->additional_servers->map(function ($server) use ($servers) {
$servers->push($server);
});
foreach ($servers as $server) {
if (! $server->isFunctional()) {
return 'Server is not functional';
}
if ($previewDeployments) {
$containers = getCurrentApplicationContainerStatus($server, $application->id, includePullrequests: true);
} else {
$containers = getCurrentApplicationContainerStatus($server, $application->id, 0);
}
if ($containers->count() > 0) {
foreach ($containers as $container) {
$containerName = data_get($container, 'Names');
if ($containerName) {
instant_remote_process(command: ["docker stop --time=30 $containerName"], server: $server, throwError: false);
instant_remote_process(command: ["docker rm $containerName"], server: $server, throwError: false);
instant_remote_process(command: ["docker rm -f {$containerName}"], server: $server, throwError: false);
}
}
}
// TODO: make notification for application
// $application->environment->project->team->notify(new StatusChanged($application));
if ($application->build_pack === 'dockercompose') {
// remove network
$uuid = $application->uuid;
instant_remote_process(["docker network disconnect {$uuid} coolify-proxy"], $server, false);
instant_remote_process(["docker network rm {$uuid}"], $server, false);
}
}
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace App\Actions\Application;
use App\Models\Application;
use App\Models\Server;
use Lorisleiva\Actions\Concerns\AsAction;
class StopApplicationOneServer
{
use AsAction;
public function handle(Application $application, Server $server)
{
if ($application->destination->server->isSwarm()) {
return;
}
if (! $server->isFunctional()) {
return 'Server is not functional';
}
try {
$containers = getCurrentApplicationContainerStatus($server, $application->id, 0);
if ($containers->count() > 0) {
foreach ($containers as $container) {
$containerName = data_get($container, 'Names');
if ($containerName) {
instant_remote_process(
["docker rm -f {$containerName}"],
$server
);
}
}
}
} catch (\Exception $e) {
ray($e->getMessage());
return $e->getMessage();
}
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Actions\CoolifyTask;
use App\Data\CoolifyTaskArgs;
use App\Enums\ActivityTypes;
use App\Jobs\CoolifyTask;
use Spatie\Activitylog\Models\Activity;
@@ -14,6 +15,7 @@ use Spatie\Activitylog\Models\Activity;
class PrepareCoolifyTask
{
protected Activity $activity;
protected CoolifyTaskArgs $remoteProcessArgs;
public function __construct(CoolifyTaskArgs $remoteProcessArgs)
@@ -28,20 +30,31 @@ class PrepareCoolifyTask
->withProperties($properties)
->performedOn($remoteProcessArgs->model)
->event($remoteProcessArgs->type)
->log("[]");
->log('[]');
} else {
$this->activity = activity()
->withProperties($remoteProcessArgs->toArray())
->event($remoteProcessArgs->type)
->log("[]");
->log('[]');
}
}
public function __invoke(): Activity
{
$job = new CoolifyTask($this->activity, ignore_errors: $this->remoteProcessArgs->ignore_errors);
dispatch($job);
$job = new CoolifyTask(
activity: $this->activity,
ignore_errors: $this->remoteProcessArgs->ignore_errors,
call_event_on_finish: $this->remoteProcessArgs->call_event_on_finish,
call_event_data: $this->remoteProcessArgs->call_event_data,
);
if ($this->remoteProcessArgs->type === ActivityTypes::COMMAND->value) {
ray('Dispatching a high priority job');
dispatch($job)->onQueue('high');
} else {
dispatch($job);
}
$this->activity->refresh();
return $this->activity;
}
}

View File

@@ -17,34 +17,37 @@ class RunRemoteProcess
public bool $hide_from_output;
public bool $is_finished;
public bool $ignore_errors;
public $call_event_on_finish = null;
public $call_event_data = null;
protected $time_start;
protected $current_time;
protected $last_write_at = 0;
protected $throttle_interval_ms = 500;
protected $throttle_interval_ms = 200;
protected int $counter = 1;
/**
* Create a new job instance.
*/
public function __construct(Activity $activity, bool $hide_from_output = false, bool $is_finished = false, bool $ignore_errors = false)
public function __construct(Activity $activity, bool $hide_from_output = false, bool $ignore_errors = false, $call_event_on_finish = null, $call_event_data = null)
{
if ($activity->getExtraProperty('type') !== ActivityTypes::INLINE->value) {
if ($activity->getExtraProperty('type') !== ActivityTypes::INLINE->value && $activity->getExtraProperty('type') !== ActivityTypes::COMMAND->value) {
throw new \RuntimeException('Incompatible Activity to run a remote command.');
}
$this->activity = $activity;
$this->hide_from_output = $hide_from_output;
$this->is_finished = $is_finished;
$this->ignore_errors = $ignore_errors;
$this->call_event_on_finish = $call_event_on_finish;
$this->call_event_data = $call_event_data;
}
public static function decodeOutput(?Activity $activity = null): string
@@ -57,7 +60,7 @@ class RunRemoteProcess
$decoded = json_decode(
data_get($activity, 'description'),
associative: true,
flags: JSON_THROW_ON_ERROR
flags: JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE
);
} catch (\JsonException $exception) {
return '';
@@ -66,7 +69,7 @@ class RunRemoteProcess
return collect($decoded)
->sortBy(fn ($i) => $i['order'])
->map(fn ($i) => $i['output'])
->implode("");
->implode('');
}
public function __invoke(): ProcessResult
@@ -74,17 +77,29 @@ class RunRemoteProcess
$this->time_start = hrtime(true);
$status = ProcessStatus::IN_PROGRESS;
$processResult = Process::forever()->run($this->getCommand(), $this->handleOutput(...));
$timeout = config('constants.ssh.command_timeout');
$process = Process::timeout($timeout)->start($this->getCommand(), $this->handleOutput(...));
$this->activity->properties = $this->activity->properties->merge([
'process_id' => $process->id(),
]);
$processResult = $process->wait();
// $processResult = Process::timeout($timeout)->run($this->getCommand(), $this->handleOutput(...));
if ($this->activity->properties->get('status') === ProcessStatus::ERROR->value) {
$status = ProcessStatus::ERROR;
} else {
if (($processResult->exitCode() == 0 && $this->is_finished) || $this->activity->properties->get('status') === ProcessStatus::FINISHED->value) {
if ($processResult->exitCode() == 0) {
$status = ProcessStatus::FINISHED;
}
if ($processResult->exitCode() != 0 && !$this->ignore_errors) {
if ($processResult->exitCode() != 0 && ! $this->ignore_errors) {
$status = ProcessStatus::ERROR;
}
// if (($processResult->exitCode() == 0 && $this->is_finished) || $this->activity->properties->get('status') === ProcessStatus::FINISHED->value) {
// $status = ProcessStatus::FINISHED;
// }
// if ($processResult->exitCode() != 0 && !$this->ignore_errors) {
// $status = ProcessStatus::ERROR;
// }
}
$this->activity->properties = $this->activity->properties->merge([
@@ -94,9 +109,24 @@ class RunRemoteProcess
'status' => $status->value,
]);
$this->activity->save();
if ($processResult->exitCode() != 0 && !$this->ignore_errors) {
if ($processResult->exitCode() != 0 && ! $this->ignore_errors) {
throw new \RuntimeException($processResult->errorOutput(), $processResult->exitCode());
}
if ($this->call_event_on_finish) {
try {
if ($this->call_event_data) {
event(resolve("App\\Events\\$this->call_event_on_finish", [
'data' => $this->call_event_data,
]));
} else {
event(resolve("App\\Events\\$this->call_event_on_finish", [
'userId' => $this->activity->causer_id,
]));
}
} catch (\Throwable $e) {
ray($e);
}
}
return $processResult;
}
@@ -117,7 +147,6 @@ class RunRemoteProcess
}
$this->current_time = $this->elapsedTime();
$this->activity->description = $this->encodeOutput($type, $output);
if ($this->isAfterLastThrottle()) {
// Let's write to database.
DB::transaction(function () {
@@ -136,8 +165,7 @@ class RunRemoteProcess
public function encodeOutput($type, $output)
{
$outputStack = json_decode($this->activity->description, associative: true, flags: JSON_THROW_ON_ERROR);
$outputStack = json_decode($this->activity->description, associative: true, flags: JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE);
$outputStack[] = [
'type' => $type,
'output' => $output,
@@ -146,15 +174,16 @@ class RunRemoteProcess
'order' => $this->getLatestCounter(),
];
return json_encode($outputStack, flags: JSON_THROW_ON_ERROR);
return json_encode($outputStack, flags: JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE);
}
protected function getLatestCounter(): int
{
$description = json_decode($this->activity->description, associative: true, flags: JSON_THROW_ON_ERROR);
$description = json_decode($this->activity->description, associative: true, flags: JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE);
if ($description === null || count($description) === 0) {
return 1;
}
return end($description)['order'] + 1;
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Actions\Database;
use App\Models\StandaloneClickhouse;
use App\Models\StandaloneDragonfly;
use App\Models\StandaloneKeydb;
use App\Models\StandaloneMariadb;
use App\Models\StandaloneMongodb;
use App\Models\StandaloneMysql;
use App\Models\StandalonePostgresql;
use App\Models\StandaloneRedis;
use Lorisleiva\Actions\Concerns\AsAction;
class RestartDatabase
{
use AsAction;
public function handle(StandaloneRedis|StandalonePostgresql|StandaloneMongodb|StandaloneMysql|StandaloneMariadb|StandaloneKeydb|StandaloneDragonfly|StandaloneClickhouse $database)
{
$server = $database->destination->server;
if (! $server->isFunctional()) {
return 'Server is not functional';
}
StopDatabase::run($database);
return StartDatabase::run($database);
}
}

View File

@@ -0,0 +1,167 @@
<?php
namespace App\Actions\Database;
use App\Models\StandaloneClickhouse;
use Lorisleiva\Actions\Concerns\AsAction;
use Symfony\Component\Yaml\Yaml;
class StartClickhouse
{
use AsAction;
public StandaloneClickhouse $database;
public array $commands = [];
public string $configuration_dir;
public function handle(StandaloneClickhouse $database)
{
$this->database = $database;
$container_name = $this->database->uuid;
$this->configuration_dir = database_configuration_dir().'/'.$container_name;
$this->commands = [
"echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
];
$persistent_storages = $this->generate_local_persistent_volumes();
$persistent_file_volumes = $this->database->fileStorages()->get();
$volume_names = $this->generate_local_persistent_volumes_only_volume_names();
$environment_variables = $this->generate_environment_variables();
$docker_compose = [
'services' => [
$container_name => [
'image' => $this->database->image,
'container_name' => $container_name,
'environment' => $environment_variables,
'restart' => RESTART_MODE,
'networks' => [
$this->database->destination->network,
],
'ulimits' => [
'nofile' => [
'soft' => 262144,
'hard' => 262144,
],
],
'labels' => [
'coolify.managed' => 'true',
],
'healthcheck' => [
'test' => "clickhouse-client --password {$this->database->clickhouse_admin_password} --query 'SELECT 1'",
'interval' => '5s',
'timeout' => '5s',
'retries' => 10,
'start_period' => '5s',
],
'mem_limit' => $this->database->limits_memory,
'memswap_limit' => $this->database->limits_memory_swap,
'mem_swappiness' => $this->database->limits_memory_swappiness,
'mem_reservation' => $this->database->limits_memory_reservation,
'cpus' => (float) $this->database->limits_cpus,
'cpu_shares' => $this->database->limits_cpu_shares,
],
],
'networks' => [
$this->database->destination->network => [
'external' => true,
'name' => $this->database->destination->network,
'attachable' => true,
],
],
];
if (! is_null($this->database->limits_cpuset)) {
data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset);
}
if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) {
$docker_compose['services'][$container_name]['logging'] = generate_fluentd_configuration();
}
if (count($this->database->ports_mappings_array) > 0) {
$docker_compose['services'][$container_name]['ports'] = $this->database->ports_mappings_array;
}
if (count($persistent_storages) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_storages;
}
if (count($persistent_file_volumes) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_file_volumes->map(function ($item) {
return "$item->fs_path:$item->mount_path";
})->toArray();
}
if (count($volume_names) > 0) {
$docker_compose['volumes'] = $volume_names;
}
// Add custom docker run options
$docker_run_options = convert_docker_run_to_compose($this->database->custom_docker_run_options);
$docker_compose = generate_custom_docker_run_options_for_databases($docker_run_options, $docker_compose, $container_name, $this->database->destination->network);
$docker_compose = Yaml::dump($docker_compose, 10);
$docker_compose_base64 = base64_encode($docker_compose);
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d | tee $this->configuration_dir/docker-compose.yml > /dev/null";
$readme = generate_readme_file($this->database->name, now());
$this->commands[] = "echo '{$readme}' > $this->configuration_dir/README.md";
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
$this->commands[] = "echo 'Database started.'";
return remote_process($this->commands, $database->destination->server, callEventOnFinish: 'DatabaseStatusChanged');
}
private function generate_local_persistent_volumes()
{
$local_persistent_volumes = [];
foreach ($this->database->persistentStorages as $persistentStorage) {
if ($persistentStorage->host_path !== '' && $persistentStorage->host_path !== null) {
$local_persistent_volumes[] = $persistentStorage->host_path.':'.$persistentStorage->mount_path;
} else {
$volume_name = $persistentStorage->name;
$local_persistent_volumes[] = $volume_name.':'.$persistentStorage->mount_path;
}
}
return $local_persistent_volumes;
}
private function generate_local_persistent_volumes_only_volume_names()
{
$local_persistent_volumes_names = [];
foreach ($this->database->persistentStorages as $persistentStorage) {
if ($persistentStorage->host_path) {
continue;
}
$name = $persistentStorage->name;
$local_persistent_volumes_names[$name] = [
'name' => $name,
'external' => false,
];
}
return $local_persistent_volumes_names;
}
private function generate_environment_variables()
{
$environment_variables = collect();
foreach ($this->database->runtime_environment_variables as $env) {
$environment_variables->push("$env->key=$env->real_value");
}
if ($environment_variables->filter(fn ($env) => str($env)->contains('CLICKHOUSE_ADMIN_USER'))->isEmpty()) {
$environment_variables->push("CLICKHOUSE_ADMIN_USER={$this->database->clickhouse_admin_user}");
}
if ($environment_variables->filter(fn ($env) => str($env)->contains('CLICKHOUSE_ADMIN_PASSWORD'))->isEmpty()) {
$environment_variables->push("CLICKHOUSE_ADMIN_PASSWORD={$this->database->clickhouse_admin_password}");
}
add_coolify_default_environment_variables($this->database, $environment_variables, $environment_variables);
return $environment_variables->all();
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace App\Actions\Database;
use App\Models\StandaloneClickhouse;
use App\Models\StandaloneDragonfly;
use App\Models\StandaloneKeydb;
use App\Models\StandaloneMariadb;
use App\Models\StandaloneMongodb;
use App\Models\StandaloneMysql;
use App\Models\StandalonePostgresql;
use App\Models\StandaloneRedis;
use Lorisleiva\Actions\Concerns\AsAction;
class StartDatabase
{
use AsAction;
public function handle(StandaloneRedis|StandalonePostgresql|StandaloneMongodb|StandaloneMysql|StandaloneMariadb|StandaloneKeydb|StandaloneDragonfly|StandaloneClickhouse $database)
{
$server = $database->destination->server;
if (! $server->isFunctional()) {
return 'Server is not functional';
}
switch ($database->getMorphClass()) {
case 'App\Models\StandalonePostgresql':
$activity = StartPostgresql::run($database);
break;
case 'App\Models\StandaloneRedis':
$activity = StartRedis::run($database);
break;
case 'App\Models\StandaloneMongodb':
$activity = StartMongodb::run($database);
break;
case 'App\Models\StandaloneMysql':
$activity = StartMysql::run($database);
break;
case 'App\Models\StandaloneMariadb':
$activity = StartMariadb::run($database);
break;
case 'App\Models\StandaloneKeydb':
$activity = StartKeydb::run($database);
break;
case 'App\Models\StandaloneDragonfly':
$activity = StartDragonfly::run($database);
break;
case 'App\Models\StandaloneClickhouse':
$activity = StartClickhouse::run($database);
break;
}
if ($database->is_public && $database->public_port) {
StartDatabaseProxy::dispatch($database);
}
return $activity;
}
}

View File

@@ -3,6 +3,9 @@
namespace App\Actions\Database;
use App\Models\ServiceDatabase;
use App\Models\StandaloneClickhouse;
use App\Models\StandaloneDragonfly;
use App\Models\StandaloneKeydb;
use App\Models\StandaloneMariadb;
use App\Models\StandaloneMongodb;
use App\Models\StandaloneMysql;
@@ -15,7 +18,7 @@ class StartDatabaseProxy
{
use AsAction;
public function handle(StandaloneRedis|StandalonePostgresql|StandaloneMongodb|StandaloneMysql|StandaloneMariadb|ServiceDatabase $database)
public function handle(StandaloneRedis|StandalonePostgresql|StandaloneMongodb|StandaloneMysql|StandaloneMariadb|StandaloneKeydb|StandaloneDragonfly|StandaloneClickhouse|ServiceDatabase $database)
{
$internalPort = null;
$type = $database->getMorphClass();
@@ -25,7 +28,8 @@ class StartDatabaseProxy
$proxyContainerName = "{$database->uuid}-proxy";
if ($database->getMorphClass() === 'App\Models\ServiceDatabase') {
$databaseType = $database->databaseType();
$network = data_get($database, 'service.destination.network');
// $connectPredefined = data_get($database, 'service.connect_to_docker_network');
$network = $database->service->uuid;
$server = data_get($database, 'service.destination.server');
$proxyContainerName = "{$database->service->uuid}-proxy";
switch ($databaseType) {
@@ -49,18 +53,36 @@ class StartDatabaseProxy
$type = 'App\Models\StandaloneRedis';
$containerName = "redis-{$database->service->uuid}";
break;
case 'standalone-keydb':
$type = 'App\Models\StandaloneKeydb';
$containerName = "keydb-{$database->service->uuid}";
break;
case 'standalone-dragonfly':
$type = 'App\Models\StandaloneDragonfly';
$containerName = "dragonfly-{$database->service->uuid}";
break;
case 'standalone-clickhouse':
$type = 'App\Models\StandaloneClickhouse';
$containerName = "clickhouse-{$database->service->uuid}";
break;
}
}
if ($type === 'App\Models\StandaloneRedis') {
$internalPort = 6379;
} else if ($type === 'App\Models\StandalonePostgresql') {
} elseif ($type === 'App\Models\StandalonePostgresql') {
$internalPort = 5432;
} else if ($type === 'App\Models\StandaloneMongodb') {
} elseif ($type === 'App\Models\StandaloneMongodb') {
$internalPort = 27017;
} else if ($type === 'App\Models\StandaloneMysql') {
} elseif ($type === 'App\Models\StandaloneMysql') {
$internalPort = 3306;
} else if ($type === 'App\Models\StandaloneMariadb') {
} elseif ($type === 'App\Models\StandaloneMariadb') {
$internalPort = 3306;
} elseif ($type === 'App\Models\StandaloneKeydb') {
$internalPort = 6379;
} elseif ($type === 'App\Models\StandaloneDragonfly') {
$internalPort = 6379;
} elseif ($type === 'App\Models\StandaloneClickhouse') {
$internalPort = 9000;
}
$configuration_dir = database_proxy_dir($database->uuid);
$nginxconf = <<<EOF
@@ -79,20 +101,19 @@ class StartDatabaseProxy
}
}
EOF;
$dockerfile = <<< EOF
$dockerfile = <<< 'EOF'
FROM nginx:stable-alpine
COPY nginx.conf /etc/nginx/nginx.conf
EOF;
$docker_compose = [
'version' => '3.8',
'services' => [
$proxyContainerName => [
'build' => [
'context' => $configuration_dir,
'dockerfile' => 'Dockerfile',
],
'image' => "nginx:stable-alpine",
'image' => 'nginx:stable-alpine',
'container_name' => $proxyContainerName,
'restart' => RESTART_MODE,
'ports' => [
@@ -109,26 +130,28 @@ class StartDatabaseProxy
'interval' => '5s',
'timeout' => '5s',
'retries' => 3,
'start_period' => '1s'
'start_period' => '1s',
],
]
],
],
'networks' => [
$network => [
'external' => true,
'name' => $network,
'attachable' => true,
]
]
],
],
];
$dockercompose_base64 = base64_encode(Yaml::dump($docker_compose, 4, 2));
$nginxconf_base64 = base64_encode($nginxconf);
$dockerfile_base64 = base64_encode($dockerfile);
instant_remote_process(["docker rm -f $proxyContainerName"], $server, false);
instant_remote_process([
"mkdir -p $configuration_dir",
"echo '{$dockerfile_base64}' | base64 -d > $configuration_dir/Dockerfile",
"echo '{$nginxconf_base64}' | base64 -d > $configuration_dir/nginx.conf",
"echo '{$dockercompose_base64}' | base64 -d > $configuration_dir/docker-compose.yaml",
"echo '{$dockerfile_base64}' | base64 -d | tee $configuration_dir/Dockerfile > /dev/null",
"echo '{$nginxconf_base64}' | base64 -d | tee $configuration_dir/nginx.conf > /dev/null",
"echo '{$dockercompose_base64}' | base64 -d | tee $configuration_dir/docker-compose.yaml > /dev/null",
"docker compose --project-directory {$configuration_dir} pull",
"docker compose --project-directory {$configuration_dir} up --build -d",
], $server);
}

View File

@@ -0,0 +1,161 @@
<?php
namespace App\Actions\Database;
use App\Models\StandaloneDragonfly;
use Lorisleiva\Actions\Concerns\AsAction;
use Symfony\Component\Yaml\Yaml;
class StartDragonfly
{
use AsAction;
public StandaloneDragonfly $database;
public array $commands = [];
public string $configuration_dir;
public function handle(StandaloneDragonfly $database)
{
$this->database = $database;
$startCommand = "dragonfly --requirepass {$this->database->dragonfly_password}";
$container_name = $this->database->uuid;
$this->configuration_dir = database_configuration_dir() . '/' . $container_name;
$this->commands = [
"echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
];
$persistent_storages = $this->generate_local_persistent_volumes();
$persistent_file_volumes = $this->database->fileStorages()->get();
$volume_names = $this->generate_local_persistent_volumes_only_volume_names();
$environment_variables = $this->generate_environment_variables();
$docker_compose = [
'services' => [
$container_name => [
'image' => $this->database->image,
'command' => $startCommand,
'container_name' => $container_name,
'environment' => $environment_variables,
'restart' => RESTART_MODE,
'networks' => [
$this->database->destination->network,
],
'ulimits' => [
'memlock' => '-1',
],
'labels' => [
'coolify.managed' => 'true',
],
'healthcheck' => [
'test' => "redis-cli -a {$this->database->dragonfly_password} ping",
'interval' => '5s',
'timeout' => '5s',
'retries' => 10,
'start_period' => '5s',
],
'mem_limit' => $this->database->limits_memory,
'memswap_limit' => $this->database->limits_memory_swap,
'mem_swappiness' => $this->database->limits_memory_swappiness,
'mem_reservation' => $this->database->limits_memory_reservation,
'cpus' => (float) $this->database->limits_cpus,
'cpu_shares' => $this->database->limits_cpu_shares,
],
],
'networks' => [
$this->database->destination->network => [
'external' => true,
'name' => $this->database->destination->network,
'attachable' => true,
],
],
];
if (!is_null($this->database->limits_cpuset)) {
data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset);
}
if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) {
$docker_compose['services'][$container_name]['logging'] = generate_fluentd_configuration();
}
if (count($this->database->ports_mappings_array) > 0) {
$docker_compose['services'][$container_name]['ports'] = $this->database->ports_mappings_array;
}
if (count($persistent_storages) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_storages;
}
if (count($persistent_file_volumes) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_file_volumes->map(function ($item) {
return "$item->fs_path:$item->mount_path";
})->toArray();
}
if (count($volume_names) > 0) {
$docker_compose['volumes'] = $volume_names;
}
// Add custom docker run options
$docker_run_options = convert_docker_run_to_compose($this->database->custom_docker_run_options);
$docker_compose = generate_custom_docker_run_options_for_databases($docker_run_options, $docker_compose, $container_name, $this->database->destination->network);
$docker_compose = Yaml::dump($docker_compose, 10);
$docker_compose_base64 = base64_encode($docker_compose);
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d | tee $this->configuration_dir/docker-compose.yml > /dev/null";
$readme = generate_readme_file($this->database->name, now());
$this->commands[] = "echo '{$readme}' > $this->configuration_dir/README.md";
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
$this->commands[] = "echo 'Database started.'";
return remote_process($this->commands, $database->destination->server, callEventOnFinish: 'DatabaseStatusChanged');
}
private function generate_local_persistent_volumes()
{
$local_persistent_volumes = [];
foreach ($this->database->persistentStorages as $persistentStorage) {
if ($persistentStorage->host_path !== '' && $persistentStorage->host_path !== null) {
$local_persistent_volumes[] = $persistentStorage->host_path . ':' . $persistentStorage->mount_path;
} else {
$volume_name = $persistentStorage->name;
$local_persistent_volumes[] = $volume_name . ':' . $persistentStorage->mount_path;
}
}
return $local_persistent_volumes;
}
private function generate_local_persistent_volumes_only_volume_names()
{
$local_persistent_volumes_names = [];
foreach ($this->database->persistentStorages as $persistentStorage) {
if ($persistentStorage->host_path) {
continue;
}
$name = $persistentStorage->name;
$local_persistent_volumes_names[$name] = [
'name' => $name,
'external' => false,
];
}
return $local_persistent_volumes_names;
}
private function generate_environment_variables()
{
$environment_variables = collect();
foreach ($this->database->runtime_environment_variables as $env) {
$environment_variables->push("$env->key=$env->real_value");
}
if ($environment_variables->filter(fn($env) => str($env)->contains('REDIS_PASSWORD'))->isEmpty()) {
$environment_variables->push("REDIS_PASSWORD={$this->database->dragonfly_password}");
}
return $environment_variables->all();
}
}

View File

@@ -0,0 +1,182 @@
<?php
namespace App\Actions\Database;
use App\Models\StandaloneKeydb;
use Illuminate\Support\Facades\Storage;
use Lorisleiva\Actions\Concerns\AsAction;
use Symfony\Component\Yaml\Yaml;
class StartKeydb
{
use AsAction;
public StandaloneKeydb $database;
public array $commands = [];
public string $configuration_dir;
public function handle(StandaloneKeydb $database)
{
$this->database = $database;
$startCommand = "keydb-server --requirepass {$this->database->keydb_password} --appendonly yes";
$container_name = $this->database->uuid;
$this->configuration_dir = database_configuration_dir() . '/' . $container_name;
$this->commands = [
"echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
];
$persistent_storages = $this->generate_local_persistent_volumes();
$persistent_file_volumes = $this->database->fileStorages()->get();
$volume_names = $this->generate_local_persistent_volumes_only_volume_names();
$environment_variables = $this->generate_environment_variables();
$this->add_custom_keydb();
$docker_compose = [
'services' => [
$container_name => [
'image' => $this->database->image,
'command' => $startCommand,
'container_name' => $container_name,
'environment' => $environment_variables,
'restart' => RESTART_MODE,
'networks' => [
$this->database->destination->network,
],
'labels' => [
'coolify.managed' => 'true',
],
'healthcheck' => [
'test' => "keydb-cli --pass {$this->database->keydb_password} ping",
'interval' => '5s',
'timeout' => '5s',
'retries' => 10,
'start_period' => '5s',
],
'mem_limit' => $this->database->limits_memory,
'memswap_limit' => $this->database->limits_memory_swap,
'mem_swappiness' => $this->database->limits_memory_swappiness,
'mem_reservation' => $this->database->limits_memory_reservation,
'cpus' => (float) $this->database->limits_cpus,
'cpu_shares' => $this->database->limits_cpu_shares,
],
],
'networks' => [
$this->database->destination->network => [
'external' => true,
'name' => $this->database->destination->network,
'attachable' => true,
],
],
];
if (!is_null($this->database->limits_cpuset)) {
data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset);
}
if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) {
$docker_compose['services'][$container_name]['logging'] = generate_fluentd_configuration();
}
if (count($this->database->ports_mappings_array) > 0) {
$docker_compose['services'][$container_name]['ports'] = $this->database->ports_mappings_array;
}
if (count($persistent_storages) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_storages;
}
if (count($persistent_file_volumes) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_file_volumes->map(function ($item) {
return "$item->fs_path:$item->mount_path";
})->toArray();
}
if (count($volume_names) > 0) {
$docker_compose['volumes'] = $volume_names;
}
if (!is_null($this->database->keydb_conf) || !empty($this->database->keydb_conf)) {
$docker_compose['services'][$container_name]['volumes'][] = [
'type' => 'bind',
'source' => $this->configuration_dir . '/keydb.conf',
'target' => '/etc/keydb/keydb.conf',
'read_only' => true,
];
$docker_compose['services'][$container_name]['command'] = "keydb-server /etc/keydb/keydb.conf --requirepass {$this->database->keydb_password} --appendonly yes";
}
// Add custom docker run options
$docker_run_options = convert_docker_run_to_compose($this->database->custom_docker_run_options);
$docker_compose = generate_custom_docker_run_options_for_databases($docker_run_options, $docker_compose, $container_name, $this->database->destination->network);
$docker_compose = Yaml::dump($docker_compose, 10);
$docker_compose_base64 = base64_encode($docker_compose);
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d | tee $this->configuration_dir/docker-compose.yml > /dev/null";
$readme = generate_readme_file($this->database->name, now());
$this->commands[] = "echo '{$readme}' > $this->configuration_dir/README.md";
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
$this->commands[] = "echo 'Database started.'";
return remote_process($this->commands, $database->destination->server, callEventOnFinish: 'DatabaseStatusChanged');
}
private function generate_local_persistent_volumes()
{
$local_persistent_volumes = [];
foreach ($this->database->persistentStorages as $persistentStorage) {
if ($persistentStorage->host_path !== '' && $persistentStorage->host_path !== null) {
$local_persistent_volumes[] = $persistentStorage->host_path . ':' . $persistentStorage->mount_path;
} else {
$volume_name = $persistentStorage->name;
$local_persistent_volumes[] = $volume_name . ':' . $persistentStorage->mount_path;
}
}
return $local_persistent_volumes;
}
private function generate_local_persistent_volumes_only_volume_names()
{
$local_persistent_volumes_names = [];
foreach ($this->database->persistentStorages as $persistentStorage) {
if ($persistentStorage->host_path) {
continue;
}
$name = $persistentStorage->name;
$local_persistent_volumes_names[$name] = [
'name' => $name,
'external' => false,
];
}
return $local_persistent_volumes_names;
}
private function generate_environment_variables()
{
$environment_variables = collect();
foreach ($this->database->runtime_environment_variables as $env) {
$environment_variables->push("$env->key=$env->real_value");
}
if ($environment_variables->filter(fn($env) => str($env)->contains('REDIS_PASSWORD'))->isEmpty()) {
$environment_variables->push("REDIS_PASSWORD={$this->database->keydb_password}");
}
add_coolify_default_environment_variables($this->database, $environment_variables, $environment_variables);
return $environment_variables->all();
}
private function add_custom_keydb()
{
if (is_null($this->database->keydb_conf) || empty($this->database->keydb_conf)) {
return;
}
$filename = 'keydb.conf';
Storage::disk('local')->put("tmp/keydb.conf_{$this->database->uuid}", $this->database->keydb_conf);
$path = Storage::path("tmp/keydb.conf_{$this->database->uuid}");
instant_scp($path, "{$this->configuration_dir}/{$filename}", $this->database->destination->server);
Storage::disk('local')->delete("tmp/keydb.conf_{$this->database->uuid}");
}
}

View File

@@ -3,16 +3,17 @@
namespace App\Actions\Database;
use App\Models\StandaloneMariadb;
use Illuminate\Support\Str;
use Symfony\Component\Yaml\Yaml;
use Lorisleiva\Actions\Concerns\AsAction;
use Symfony\Component\Yaml\Yaml;
class StartMariadb
{
use AsAction;
public StandaloneMariadb $database;
public array $commands = [];
public string $configuration_dir;
public function handle(StandaloneMariadb $database)
@@ -23,16 +24,16 @@ class StartMariadb
$this->configuration_dir = database_configuration_dir() . '/' . $container_name;
$this->commands = [
"echo '####### Starting {$database->name}.'",
"echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
];
$persistent_storages = $this->generate_local_persistent_volumes();
$persistent_file_volumes = $this->database->fileStorages()->get();
$volume_names = $this->generate_local_persistent_volumes_only_volume_names();
$environment_variables = $this->generate_environment_variables();
$this->add_custom_mysql();
$docker_compose = [
'version' => '3.8',
'services' => [
$container_name => [
'image' => $this->database->image,
@@ -46,39 +47,49 @@ class StartMariadb
'coolify.managed' => 'true',
],
'healthcheck' => [
'test' => ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"],
'test' => ['CMD', 'healthcheck.sh', '--connect', '--innodb_initialized'],
'interval' => '5s',
'timeout' => '5s',
'retries' => 10,
'start_period' => '5s'
'start_period' => '5s',
],
'mem_limit' => $this->database->limits_memory,
'memswap_limit' => $this->database->limits_memory_swap,
'mem_swappiness' => $this->database->limits_memory_swappiness,
'mem_reservation' => $this->database->limits_memory_reservation,
'cpus' => (int) $this->database->limits_cpus,
'cpuset' => $this->database->limits_cpuset,
'cpus' => (float) $this->database->limits_cpus,
'cpu_shares' => $this->database->limits_cpu_shares,
]
],
],
'networks' => [
$this->database->destination->network => [
'external' => true,
'name' => $this->database->destination->network,
'attachable' => true,
]
]
],
],
];
if (!is_null($this->database->limits_cpuset)) {
data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset);
}
if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) {
$docker_compose['services'][$container_name]['logging'] = generate_fluentd_configuration();
}
if (count($this->database->ports_mappings_array) > 0) {
$docker_compose['services'][$container_name]['ports'] = $this->database->ports_mappings_array;
}
if (count($persistent_storages) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_storages;
}
if (count($persistent_file_volumes) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_file_volumes->map(function ($item) {
return "$item->fs_path:$item->mount_path";
})->toArray();
}
if (count($volume_names) > 0) {
$docker_compose['volumes'] = $volume_names;
}
if (!is_null($this->database->mariadb_conf)) {
if (!is_null($this->database->mariadb_conf) || !empty($this->database->mariadb_conf)) {
$docker_compose['services'][$container_name]['volumes'][] = [
'type' => 'bind',
'source' => $this->configuration_dir . '/custom-config.cnf',
@@ -86,23 +97,36 @@ class StartMariadb
'read_only' => true,
];
}
// Add custom docker run options
$docker_run_options = convert_docker_run_to_compose($this->database->custom_docker_run_options);
$docker_compose = generate_custom_docker_run_options_for_databases($docker_run_options, $docker_compose, $container_name, $this->database->destination->network);
$docker_compose = Yaml::dump($docker_compose, 10);
$docker_compose_base64 = base64_encode($docker_compose);
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d > $this->configuration_dir/docker-compose.yml";
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d | tee $this->configuration_dir/docker-compose.yml > /dev/null";
$readme = generate_readme_file($this->database->name, now());
$this->commands[] = "echo '{$readme}' > $this->configuration_dir/README.md";
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
$this->commands[] = "echo '####### {$database->name} started.'";
return remote_process($this->commands, $database->destination->server);
$this->commands[] = "echo 'Database started.'";
return remote_process($this->commands, $database->destination->server, callEventOnFinish: 'DatabaseStatusChanged');
}
private function generate_local_persistent_volumes()
{
$local_persistent_volumes = [];
foreach ($this->database->persistentStorages as $persistentStorage) {
$volume_name = $persistentStorage->host_path ?? $persistentStorage->name;
$local_persistent_volumes[] = $volume_name . ':' . $persistentStorage->mount_path;
if ($persistentStorage->host_path !== '' && $persistentStorage->host_path !== null) {
$local_persistent_volumes[] = $persistentStorage->host_path . ':' . $persistentStorage->mount_path;
} else {
$volume_name = $persistentStorage->name;
$local_persistent_volumes[] = $volume_name . ':' . $persistentStorage->mount_path;
}
}
return $local_persistent_volumes;
}
@@ -119,6 +143,7 @@ class StartMariadb
'external' => false,
];
}
return $local_persistent_volumes_names;
}
@@ -126,33 +151,37 @@ class StartMariadb
{
$environment_variables = collect();
foreach ($this->database->runtime_environment_variables as $env) {
$environment_variables->push("$env->key=$env->value");
$environment_variables->push("$env->key=$env->real_value");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('MARIADB_ROOT_PASSWORD'))->isEmpty()) {
if ($environment_variables->filter(fn($env) => str($env)->contains('MARIADB_ROOT_PASSWORD'))->isEmpty()) {
$environment_variables->push("MARIADB_ROOT_PASSWORD={$this->database->mariadb_root_password}");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('MARIADB_DATABASE'))->isEmpty()) {
if ($environment_variables->filter(fn($env) => str($env)->contains('MARIADB_DATABASE'))->isEmpty()) {
$environment_variables->push("MARIADB_DATABASE={$this->database->mariadb_database}");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('MARIADB_USER'))->isEmpty()) {
if ($environment_variables->filter(fn($env) => str($env)->contains('MARIADB_USER'))->isEmpty()) {
$environment_variables->push("MARIADB_USER={$this->database->mariadb_user}");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('MARIADB_PASSWORD'))->isEmpty()) {
if ($environment_variables->filter(fn($env) => str($env)->contains('MARIADB_PASSWORD'))->isEmpty()) {
$environment_variables->push("MARIADB_PASSWORD={$this->database->mariadb_password}");
}
add_coolify_default_environment_variables($this->database, $environment_variables, $environment_variables);
return $environment_variables->all();
}
private function add_custom_mysql()
{
if (is_null($this->database->mariadb_conf)) {
if (is_null($this->database->mariadb_conf) || empty($this->database->mariadb_conf)) {
return;
}
$filename = 'custom-config.cnf';
$content = $this->database->mariadb_conf;
$content_base64 = base64_encode($content);
$this->commands[] = "echo '{$content_base64}' | base64 -d > $this->configuration_dir/{$filename}";
$this->commands[] = "echo '{$content_base64}' | base64 -d | tee $this->configuration_dir/{$filename} > /dev/null";
}
}

View File

@@ -3,39 +3,40 @@
namespace App\Actions\Database;
use App\Models\StandaloneMongodb;
use Illuminate\Support\Str;
use Symfony\Component\Yaml\Yaml;
use Lorisleiva\Actions\Concerns\AsAction;
use Symfony\Component\Yaml\Yaml;
class StartMongodb
{
use AsAction;
public StandaloneMongodb $database;
public array $commands = [];
public string $configuration_dir;
public function handle(StandaloneMongodb $database)
{
$this->database = $database;
$startCommand = "mongod";
$startCommand = 'mongod';
$container_name = $this->database->uuid;
$this->configuration_dir = database_configuration_dir() . '/' . $container_name;
$this->commands = [
"echo '####### Starting {$database->name}.'",
"echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
];
$persistent_storages = $this->generate_local_persistent_volumes();
$persistent_file_volumes = $this->database->fileStorages()->get();
$volume_names = $this->generate_local_persistent_volumes_only_volume_names();
$environment_variables = $this->generate_environment_variables();
$this->add_custom_mongo_conf();
$docker_compose = [
'version' => '3.8',
'services' => [
$container_name => [
'image' => $this->database->image,
@@ -51,48 +52,59 @@ class StartMongodb
],
'healthcheck' => [
'test' => [
'CMD-SHELL',
'mongosh --eval "printjson(db.runCommand(\"ping\"))"'
'CMD',
'echo',
'ok',
],
'interval' => '5s',
'timeout' => '5s',
'retries' => 10,
'start_period' => '5s'
'start_period' => '5s',
],
'mem_limit' => $this->database->limits_memory,
'memswap_limit' => $this->database->limits_memory_swap,
'mem_swappiness' => $this->database->limits_memory_swappiness,
'mem_reservation' => $this->database->limits_memory_reservation,
'cpus' => (int) $this->database->limits_cpus,
'cpuset' => $this->database->limits_cpuset,
'cpus' => (float) $this->database->limits_cpus,
'cpu_shares' => $this->database->limits_cpu_shares,
]
],
],
'networks' => [
$this->database->destination->network => [
'external' => true,
'name' => $this->database->destination->network,
'attachable' => true,
]
]
],
],
];
if (!is_null($this->database->limits_cpuset)) {
data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset);
}
if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) {
$docker_compose['services'][$container_name]['logging'] = generate_fluentd_configuration();
}
if (count($this->database->ports_mappings_array) > 0) {
$docker_compose['services'][$container_name]['ports'] = $this->database->ports_mappings_array;
}
if (count($persistent_storages) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_storages;
}
if (count($persistent_file_volumes) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_file_volumes->map(function ($item) {
return "$item->fs_path:$item->mount_path";
})->toArray();
}
if (count($volume_names) > 0) {
$docker_compose['volumes'] = $volume_names;
}
if (!is_null($this->database->mongo_conf)) {
if (!is_null($this->database->mongo_conf) || !empty($this->database->mongo_conf)) {
$docker_compose['services'][$container_name]['volumes'][] = [
'type' => 'bind',
'source' => $this->configuration_dir . '/mongod.conf',
'target' => '/etc/mongo/mongod.conf',
'read_only' => true,
];
$docker_compose['services'][$container_name]['command'] = $startCommand . ' --config /etc/mongo/mongod.conf';
$docker_compose['services'][$container_name]['command'] = $startCommand . ' --config /etc/mongo/mongod.conf';
}
$this->add_default_database();
$docker_compose['services'][$container_name]['volumes'][] = [
@@ -102,23 +114,35 @@ class StartMongodb
'read_only' => true,
];
// Add custom docker run options
$docker_run_options = convert_docker_run_to_compose($this->database->custom_docker_run_options);
$docker_compose = generate_custom_docker_run_options_for_databases($docker_run_options, $docker_compose, $container_name, $this->database->destination->network);
$docker_compose = Yaml::dump($docker_compose, 10);
$docker_compose_base64 = base64_encode($docker_compose);
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d > $this->configuration_dir/docker-compose.yml";
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d | tee $this->configuration_dir/docker-compose.yml > /dev/null";
$readme = generate_readme_file($this->database->name, now());
$this->commands[] = "echo '{$readme}' > $this->configuration_dir/README.md";
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
$this->commands[] = "echo '####### {$database->name} started.'";
return remote_process($this->commands, $database->destination->server);
$this->commands[] = "echo 'Database started.'";
return remote_process($this->commands, $database->destination->server, callEventOnFinish: 'DatabaseStatusChanged');
}
private function generate_local_persistent_volumes()
{
$local_persistent_volumes = [];
foreach ($this->database->persistentStorages as $persistentStorage) {
$volume_name = $persistentStorage->host_path ?? $persistentStorage->name;
$local_persistent_volumes[] = $volume_name . ':' . $persistentStorage->mount_path;
if ($persistentStorage->host_path !== '' && $persistentStorage->host_path !== null) {
$local_persistent_volumes[] = $persistentStorage->host_path . ':' . $persistentStorage->mount_path;
} else {
$volume_name = $persistentStorage->name;
$local_persistent_volumes[] = $volume_name . ':' . $persistentStorage->mount_path;
}
}
return $local_persistent_volumes;
}
@@ -135,6 +159,7 @@ class StartMongodb
'external' => false,
];
}
return $local_persistent_volumes_names;
}
@@ -142,37 +167,42 @@ class StartMongodb
{
$environment_variables = collect();
foreach ($this->database->runtime_environment_variables as $env) {
$environment_variables->push("$env->key=$env->value");
$environment_variables->push("$env->key=$env->real_value");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('MONGO_INITDB_ROOT_USERNAME'))->isEmpty()) {
if ($environment_variables->filter(fn($env) => str($env)->contains('MONGO_INITDB_ROOT_USERNAME'))->isEmpty()) {
$environment_variables->push("MONGO_INITDB_ROOT_USERNAME={$this->database->mongo_initdb_root_username}");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('MONGO_INITDB_ROOT_PASSWORD'))->isEmpty()) {
if ($environment_variables->filter(fn($env) => str($env)->contains('MONGO_INITDB_ROOT_PASSWORD'))->isEmpty()) {
$environment_variables->push("MONGO_INITDB_ROOT_PASSWORD={$this->database->mongo_initdb_root_password}");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('MONGO_INITDB_DATABASE'))->isEmpty()) {
if ($environment_variables->filter(fn($env) => str($env)->contains('MONGO_INITDB_DATABASE'))->isEmpty()) {
$environment_variables->push("MONGO_INITDB_DATABASE={$this->database->mongo_initdb_database}");
}
add_coolify_default_environment_variables($this->database, $environment_variables, $environment_variables);
return $environment_variables->all();
}
private function add_custom_mongo_conf()
{
if (is_null($this->database->mongo_conf)) {
if (is_null($this->database->mongo_conf) || empty($this->database->mongo_conf)) {
return;
}
$filename = 'mongod.conf';
$content = $this->database->mongo_conf;
$content_base64 = base64_encode($content);
$this->commands[] = "echo '{$content_base64}' | base64 -d > $this->configuration_dir/{$filename}";
$this->commands[] = "echo '{$content_base64}' | base64 -d | tee $this->configuration_dir/{$filename} > /dev/null";
}
private function add_default_database()
{
$content = "db = db.getSiblingDB(\"{$this->database->mongo_initdb_database}\");db.createCollection('init_collection');db.createUser({user: \"{$this->database->mongo_initdb_root_username}\", pwd: \"{$this->database->mongo_initdb_root_password}\",roles: [{role:\"readWrite\",db:\"{$this->database->mongo_initdb_database}\"}]});";
$content_base64 = base64_encode($content);
$this->commands[] = "mkdir -p $this->configuration_dir/docker-entrypoint-initdb.d";
$this->commands[] = "echo '{$content_base64}' | base64 -d > $this->configuration_dir/docker-entrypoint-initdb.d/01-default-database.js";
$this->commands[] = "echo '{$content_base64}' | base64 -d | tee $this->configuration_dir/docker-entrypoint-initdb.d/01-default-database.js > /dev/null";
}
}

View File

@@ -3,16 +3,17 @@
namespace App\Actions\Database;
use App\Models\StandaloneMysql;
use Illuminate\Support\Str;
use Symfony\Component\Yaml\Yaml;
use Lorisleiva\Actions\Concerns\AsAction;
use Symfony\Component\Yaml\Yaml;
class StartMysql
{
use AsAction;
public StandaloneMysql $database;
public array $commands = [];
public string $configuration_dir;
public function handle(StandaloneMysql $database)
@@ -23,16 +24,16 @@ class StartMysql
$this->configuration_dir = database_configuration_dir() . '/' . $container_name;
$this->commands = [
"echo '####### Starting {$database->name}.'",
"echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
];
$persistent_storages = $this->generate_local_persistent_volumes();
$persistent_file_volumes = $this->database->fileStorages()->get();
$volume_names = $this->generate_local_persistent_volumes_only_volume_names();
$environment_variables = $this->generate_environment_variables();
$this->add_custom_mysql();
$docker_compose = [
'version' => '3.8',
'services' => [
$container_name => [
'image' => $this->database->image,
@@ -46,39 +47,49 @@ class StartMysql
'coolify.managed' => 'true',
],
'healthcheck' => [
'test' => ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p{$this->database->mysql_root_password}"],
'test' => ['CMD', 'mysqladmin', 'ping', '-h', 'localhost', '-u', 'root', "-p{$this->database->mysql_root_password}"],
'interval' => '5s',
'timeout' => '5s',
'retries' => 10,
'start_period' => '5s'
'start_period' => '5s',
],
'mem_limit' => $this->database->limits_memory,
'memswap_limit' => $this->database->limits_memory_swap,
'mem_swappiness' => $this->database->limits_memory_swappiness,
'mem_reservation' => $this->database->limits_memory_reservation,
'cpus' => (int) $this->database->limits_cpus,
'cpuset' => $this->database->limits_cpuset,
'cpus' => (float) $this->database->limits_cpus,
'cpu_shares' => $this->database->limits_cpu_shares,
]
],
],
'networks' => [
$this->database->destination->network => [
'external' => true,
'name' => $this->database->destination->network,
'attachable' => true,
]
]
],
],
];
if (!is_null($this->database->limits_cpuset)) {
data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset);
}
if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) {
$docker_compose['services'][$container_name]['logging'] = generate_fluentd_configuration();
}
if (count($this->database->ports_mappings_array) > 0) {
$docker_compose['services'][$container_name]['ports'] = $this->database->ports_mappings_array;
}
if (count($persistent_storages) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_storages;
}
if (count($persistent_file_volumes) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_file_volumes->map(function ($item) {
return "$item->fs_path:$item->mount_path";
})->toArray();
}
if (count($volume_names) > 0) {
$docker_compose['volumes'] = $volume_names;
}
if (!is_null($this->database->mysql_conf)) {
if (!is_null($this->database->mysql_conf) || !empty($this->database->mysql_conf)) {
$docker_compose['services'][$container_name]['volumes'][] = [
'type' => 'bind',
'source' => $this->configuration_dir . '/custom-config.cnf',
@@ -86,23 +97,36 @@ class StartMysql
'read_only' => true,
];
}
// Add custom docker run options
$docker_run_options = convert_docker_run_to_compose($this->database->custom_docker_run_options);
$docker_compose = generate_custom_docker_run_options_for_databases($docker_run_options, $docker_compose, $container_name, $this->database->destination->network);
$docker_compose = Yaml::dump($docker_compose, 10);
$docker_compose_base64 = base64_encode($docker_compose);
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d > $this->configuration_dir/docker-compose.yml";
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d | tee $this->configuration_dir/docker-compose.yml > /dev/null";
$readme = generate_readme_file($this->database->name, now());
$this->commands[] = "echo '{$readme}' > $this->configuration_dir/README.md";
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
$this->commands[] = "echo '####### {$database->name} started.'";
return remote_process($this->commands, $database->destination->server);
$this->commands[] = "echo 'Database started.'";
return remote_process($this->commands, $database->destination->server, callEventOnFinish: 'DatabaseStatusChanged');
}
private function generate_local_persistent_volumes()
{
$local_persistent_volumes = [];
foreach ($this->database->persistentStorages as $persistentStorage) {
$volume_name = $persistentStorage->host_path ?? $persistentStorage->name;
$local_persistent_volumes[] = $volume_name . ':' . $persistentStorage->mount_path;
if ($persistentStorage->host_path !== '' && $persistentStorage->host_path !== null) {
$local_persistent_volumes[] = $persistentStorage->host_path . ':' . $persistentStorage->mount_path;
} else {
$volume_name = $persistentStorage->name;
$local_persistent_volumes[] = $volume_name . ':' . $persistentStorage->mount_path;
}
}
return $local_persistent_volumes;
}
@@ -119,6 +143,7 @@ class StartMysql
'external' => false,
];
}
return $local_persistent_volumes_names;
}
@@ -126,33 +151,37 @@ class StartMysql
{
$environment_variables = collect();
foreach ($this->database->runtime_environment_variables as $env) {
$environment_variables->push("$env->key=$env->value");
$environment_variables->push("$env->key=$env->real_value");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('MYSQL_ROOT_PASSWORD'))->isEmpty()) {
if ($environment_variables->filter(fn($env) => str($env)->contains('MYSQL_ROOT_PASSWORD'))->isEmpty()) {
$environment_variables->push("MYSQL_ROOT_PASSWORD={$this->database->mysql_root_password}");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('MYSQL_DATABASE'))->isEmpty()) {
if ($environment_variables->filter(fn($env) => str($env)->contains('MYSQL_DATABASE'))->isEmpty()) {
$environment_variables->push("MYSQL_DATABASE={$this->database->mysql_database}");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('MYSQL_USER'))->isEmpty()) {
if ($environment_variables->filter(fn($env) => str($env)->contains('MYSQL_USER'))->isEmpty()) {
$environment_variables->push("MYSQL_USER={$this->database->mysql_user}");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('MYSQL_PASSWORD'))->isEmpty()) {
if ($environment_variables->filter(fn($env) => str($env)->contains('MYSQL_PASSWORD'))->isEmpty()) {
$environment_variables->push("MYSQL_PASSWORD={$this->database->mysql_password}");
}
add_coolify_default_environment_variables($this->database, $environment_variables, $environment_variables);
return $environment_variables->all();
}
private function add_custom_mysql()
{
if (is_null($this->database->mysql_conf)) {
if (is_null($this->database->mysql_conf) || empty($this->database->mysql_conf)) {
return;
}
$filename = 'custom-config.cnf';
$content = $this->database->mysql_conf;
$content_base64 = base64_encode($content);
$this->commands[] = "echo '{$content_base64}' | base64 -d > $this->configuration_dir/{$filename}";
$this->commands[] = "echo '{$content_base64}' | base64 -d | tee $this->configuration_dir/{$filename} > /dev/null";
}
}

View File

@@ -3,39 +3,42 @@
namespace App\Actions\Database;
use App\Models\StandalonePostgresql;
use Illuminate\Support\Str;
use Symfony\Component\Yaml\Yaml;
use Lorisleiva\Actions\Concerns\AsAction;
use Symfony\Component\Yaml\Yaml;
class StartPostgresql
{
use AsAction;
public StandalonePostgresql $database;
public array $commands = [];
public array $init_scripts = [];
public string $configuration_dir;
public function handle(StandalonePostgresql $database)
{
$this->database = $database;
$container_name = $this->database->uuid;
$this->configuration_dir = database_configuration_dir() . '/' . $container_name;
$this->configuration_dir = database_configuration_dir().'/'.$container_name;
$this->commands = [
"echo '####### Starting {$database->name}.'",
"echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
"mkdir -p $this->configuration_dir/docker-entrypoint-initdb.d/"
"mkdir -p $this->configuration_dir/docker-entrypoint-initdb.d/",
];
$persistent_storages = $this->generate_local_persistent_volumes();
$persistent_file_volumes = $this->database->fileStorages()->get();
$volume_names = $this->generate_local_persistent_volumes_only_volume_names();
$environment_variables = $this->generate_environment_variables();
$this->generate_init_scripts();
$this->add_custom_conf();
$docker_compose = [
'version' => '3.8',
'services' => [
$container_name => [
'image' => $this->database->image,
@@ -51,40 +54,46 @@ class StartPostgresql
'healthcheck' => [
'test' => [
'CMD-SHELL',
'pg_isready',
'-d',
$this->database->postgres_db,
'-U',
$this->database->postgres_user,
"psql -U {$this->database->postgres_user} -d {$this->database->postgres_db} -c 'SELECT 1' || exit 1",
],
'interval' => '5s',
'timeout' => '5s',
'retries' => 10,
'start_period' => '5s'
'start_period' => '5s',
],
'mem_limit' => $this->database->limits_memory,
'memswap_limit' => $this->database->limits_memory_swap,
'mem_swappiness' => $this->database->limits_memory_swappiness,
'mem_reservation' => $this->database->limits_memory_reservation,
'cpus' => (int) $this->database->limits_cpus,
'cpuset' => $this->database->limits_cpuset,
'cpus' => (float) $this->database->limits_cpus,
'cpu_shares' => $this->database->limits_cpu_shares,
]
],
],
'networks' => [
$this->database->destination->network => [
'external' => true,
'name' => $this->database->destination->network,
'attachable' => true,
]
]
],
],
];
if (! is_null($this->database->limits_cpuset)) {
data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset);
}
if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) {
$docker_compose['services'][$container_name]['logging'] = generate_fluentd_configuration();
}
if (count($this->database->ports_mappings_array) > 0) {
$docker_compose['services'][$container_name]['ports'] = $this->database->ports_mappings_array;
}
if (count($persistent_storages) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_storages;
}
if (count($persistent_file_volumes) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_file_volumes->map(function ($item) {
return "$item->fs_path:$item->mount_path";
})->toArray();
}
if (count($volume_names) > 0) {
$docker_compose['volumes'] = $volume_names;
}
@@ -93,15 +102,15 @@ class StartPostgresql
$docker_compose['services'][$container_name]['volumes'][] = [
'type' => 'bind',
'source' => $init_script,
'target' => '/docker-entrypoint-initdb.d/' . basename($init_script),
'target' => '/docker-entrypoint-initdb.d/'.basename($init_script),
'read_only' => true,
];
}
}
if (!is_null($this->database->postgres_conf)) {
if (! is_null($this->database->postgres_conf) && ! empty($this->database->postgres_conf)) {
$docker_compose['services'][$container_name]['volumes'][] = [
'type' => 'bind',
'source' => $this->configuration_dir . '/custom-postgres.conf',
'source' => $this->configuration_dir.'/custom-postgres.conf',
'target' => '/etc/postgresql/postgresql.conf',
'read_only' => true,
];
@@ -111,23 +120,35 @@ class StartPostgresql
'config_file=/etc/postgresql/postgresql.conf',
];
}
// Add custom docker run options
$docker_run_options = convert_docker_run_to_compose($this->database->custom_docker_run_options);
$docker_compose = generate_custom_docker_run_options_for_databases($docker_run_options, $docker_compose, $container_name, $this->database->destination->network);
$docker_compose = Yaml::dump($docker_compose, 10);
$docker_compose_base64 = base64_encode($docker_compose);
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d > $this->configuration_dir/docker-compose.yml";
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d | tee $this->configuration_dir/docker-compose.yml > /dev/null";
$readme = generate_readme_file($this->database->name, now());
$this->commands[] = "echo '{$readme}' > $this->configuration_dir/README.md";
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
$this->commands[] = "echo '####### {$database->name} started.'";
return remote_process($this->commands, $database->destination->server);
$this->commands[] = "echo 'Database started.'";
return remote_process($this->commands, $database->destination->server, callEventOnFinish: 'DatabaseStatusChanged');
}
private function generate_local_persistent_volumes()
{
$local_persistent_volumes = [];
foreach ($this->database->persistentStorages as $persistentStorage) {
$volume_name = $persistentStorage->host_path ?? $persistentStorage->name;
$local_persistent_volumes[] = $volume_name . ':' . $persistentStorage->mount_path;
if ($persistentStorage->host_path !== '' && $persistentStorage->host_path !== null) {
$local_persistent_volumes[] = $persistentStorage->host_path.':'.$persistentStorage->mount_path;
} else {
$volume_name = $persistentStorage->name;
$local_persistent_volumes[] = $volume_name.':'.$persistentStorage->mount_path;
}
}
return $local_persistent_volumes;
}
@@ -144,32 +165,34 @@ class StartPostgresql
'external' => false,
];
}
return $local_persistent_volumes_names;
}
private function generate_environment_variables()
{
$environment_variables = collect();
ray('Generate Environment Variables')->green();
ray($this->database->runtime_environment_variables)->green();
foreach ($this->database->runtime_environment_variables as $env) {
$environment_variables->push("$env->key=$env->value");
$environment_variables->push("$env->key=$env->real_value");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('POSTGRES_USER'))->isEmpty()) {
if ($environment_variables->filter(fn ($env) => str($env)->contains('POSTGRES_USER'))->isEmpty()) {
$environment_variables->push("POSTGRES_USER={$this->database->postgres_user}");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('PGUSER'))->isEmpty()) {
if ($environment_variables->filter(fn ($env) => str($env)->contains('PGUSER'))->isEmpty()) {
$environment_variables->push("PGUSER={$this->database->postgres_user}");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('POSTGRES_PASSWORD'))->isEmpty()) {
if ($environment_variables->filter(fn ($env) => str($env)->contains('POSTGRES_PASSWORD'))->isEmpty()) {
$environment_variables->push("POSTGRES_PASSWORD={$this->database->postgres_password}");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('POSTGRES_DB'))->isEmpty()) {
if ($environment_variables->filter(fn ($env) => str($env)->contains('POSTGRES_DB'))->isEmpty()) {
$environment_variables->push("POSTGRES_DB={$this->database->postgres_db}");
}
add_coolify_default_environment_variables($this->database, $environment_variables, $environment_variables);
return $environment_variables->all();
}
@@ -182,18 +205,24 @@ class StartPostgresql
$filename = data_get($init_script, 'filename');
$content = data_get($init_script, 'content');
$content_base64 = base64_encode($content);
$this->commands[] = "echo '{$content_base64}' | base64 -d > $this->configuration_dir/docker-entrypoint-initdb.d/{$filename}";
$this->commands[] = "echo '{$content_base64}' | base64 -d | tee $this->configuration_dir/docker-entrypoint-initdb.d/{$filename} > /dev/null";
$this->init_scripts[] = "$this->configuration_dir/docker-entrypoint-initdb.d/{$filename}";
}
}
private function add_custom_conf()
{
if (is_null($this->database->postgres_conf)) {
if (is_null($this->database->postgres_conf) || empty($this->database->postgres_conf)) {
return;
}
$filename = 'custom-postgres.conf';
$content = $this->database->postgres_conf;
if (! str($content)->contains('listen_addresses')) {
$content .= "\nlisten_addresses = '*'";
$this->database->postgres_conf = $content;
$this->database->save();
}
$content_base64 = base64_encode($content);
$this->commands[] = "echo '{$content_base64}' | base64 -d > $this->configuration_dir/{$filename}";
$this->commands[] = "echo '{$content_base64}' | base64 -d | tee $this->configuration_dir/{$filename} > /dev/null";
}
}

View File

@@ -3,18 +3,19 @@
namespace App\Actions\Database;
use App\Models\StandaloneRedis;
use Illuminate\Support\Str;
use Symfony\Component\Yaml\Yaml;
use Illuminate\Support\Facades\Storage;
use Lorisleiva\Actions\Concerns\AsAction;
use Symfony\Component\Yaml\Yaml;
class StartRedis
{
use AsAction;
public StandaloneRedis $database;
public array $commands = [];
public string $configuration_dir;
public array $commands = [];
public string $configuration_dir;
public function handle(StandaloneRedis $database)
{
@@ -26,17 +27,17 @@ class StartRedis
$this->configuration_dir = database_configuration_dir() . '/' . $container_name;
$this->commands = [
"echo '####### Starting {$database->name}.'",
"echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
];
$persistent_storages = $this->generate_local_persistent_volumes();
$persistent_file_volumes = $this->database->fileStorages()->get();
$volume_names = $this->generate_local_persistent_volumes_only_volume_names();
$environment_variables = $this->generate_environment_variables();
$this->add_custom_redis();
$docker_compose = [
'version' => '3.8',
'services' => [
$container_name => [
'image' => $this->database->image,
@@ -54,65 +55,88 @@ class StartRedis
'test' => [
'CMD-SHELL',
'redis-cli',
'ping'
'ping',
],
'interval' => '5s',
'timeout' => '5s',
'retries' => 10,
'start_period' => '5s'
'start_period' => '5s',
],
'mem_limit' => $this->database->limits_memory,
'memswap_limit' => $this->database->limits_memory_swap,
'mem_swappiness' => $this->database->limits_memory_swappiness,
'mem_reservation' => $this->database->limits_memory_reservation,
'cpus' => (int) $this->database->limits_cpus,
'cpuset' => $this->database->limits_cpuset,
'cpus' => (float) $this->database->limits_cpus,
'cpu_shares' => $this->database->limits_cpu_shares,
]
],
],
'networks' => [
$this->database->destination->network => [
'external' => true,
'name' => $this->database->destination->network,
'attachable' => true,
]
]
],
],
];
if (!is_null($this->database->limits_cpuset)) {
data_set($docker_compose, "services.{$container_name}.cpuset", $this->database->limits_cpuset);
}
if ($this->database->destination->server->isLogDrainEnabled() && $this->database->isLogDrainEnabled()) {
$docker_compose['services'][$container_name]['logging'] = generate_fluentd_configuration();
}
if (count($this->database->ports_mappings_array) > 0) {
$docker_compose['services'][$container_name]['ports'] = $this->database->ports_mappings_array;
}
if (count($persistent_storages) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_storages;
}
if (count($persistent_file_volumes) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_file_volumes->map(function ($item) {
return "$item->fs_path:$item->mount_path";
})->toArray();
}
if (count($volume_names) > 0) {
$docker_compose['volumes'] = $volume_names;
}
if (!is_null($this->database->redis_conf)) {
if (!is_null($this->database->redis_conf) || !empty($this->database->redis_conf)) {
$docker_compose['services'][$container_name]['volumes'][] = [
'type' => 'bind',
'source' => $this->configuration_dir . '/redis.conf',
'target' => '/usr/local/etc/redis/redis.conf',
'read_only' => true,
];
$docker_compose['services'][$container_name]['command'] = $startCommand . ' /usr/local/etc/redis/redis.conf';
$docker_compose['services'][$container_name]['command'] = "redis-server /usr/local/etc/redis/redis.conf --requirepass {$this->database->redis_password} --appendonly yes";
}
// Add custom docker run options
$docker_run_options = convert_docker_run_to_compose($this->database->custom_docker_run_options);
$docker_compose = generate_custom_docker_run_options_for_databases($docker_run_options, $docker_compose, $container_name, $this->database->destination->network);
$docker_compose = Yaml::dump($docker_compose, 10);
$docker_compose_base64 = base64_encode($docker_compose);
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d > $this->configuration_dir/docker-compose.yml";
$this->commands[] = "echo '{$docker_compose_base64}' | base64 -d | tee $this->configuration_dir/docker-compose.yml > /dev/null";
$readme = generate_readme_file($this->database->name, now());
$this->commands[] = "echo '{$readme}' > $this->configuration_dir/README.md";
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
$this->commands[] = "echo '####### {$database->name} started.'";
return remote_process($this->commands, $database->destination->server);
$this->commands[] = "echo 'Database started.'";
return remote_process($this->commands, $database->destination->server, callEventOnFinish: 'DatabaseStatusChanged');
}
private function generate_local_persistent_volumes()
{
$local_persistent_volumes = [];
foreach ($this->database->persistentStorages as $persistentStorage) {
$volume_name = $persistentStorage->host_path ?? $persistentStorage->name;
$local_persistent_volumes[] = $volume_name . ':' . $persistentStorage->mount_path;
if ($persistentStorage->host_path !== '' && $persistentStorage->host_path !== null) {
$local_persistent_volumes[] = $persistentStorage->host_path . ':' . $persistentStorage->mount_path;
} else {
$volume_name = $persistentStorage->name;
$local_persistent_volumes[] = $volume_name . ':' . $persistentStorage->mount_path;
}
}
return $local_persistent_volumes;
}
@@ -129,6 +153,7 @@ class StartRedis
'external' => false,
];
}
return $local_persistent_volumes_names;
}
@@ -136,24 +161,27 @@ class StartRedis
{
$environment_variables = collect();
foreach ($this->database->runtime_environment_variables as $env) {
$environment_variables->push("$env->key=$env->value");
$environment_variables->push("$env->key=$env->real_value");
}
if ($environment_variables->filter(fn ($env) => Str::of($env)->contains('REDIS_PASSWORD'))->isEmpty()) {
if ($environment_variables->filter(fn($env) => str($env)->contains('REDIS_PASSWORD'))->isEmpty()) {
$environment_variables->push("REDIS_PASSWORD={$this->database->redis_password}");
}
add_coolify_default_environment_variables($this->database, $environment_variables, $environment_variables);
return $environment_variables->all();
}
private function add_custom_redis()
{
if (is_null($this->database->redis_conf)) {
if (is_null($this->database->redis_conf) || empty($this->database->redis_conf)) {
return;
}
$filename = 'redis.conf';
$content = $this->database->redis_conf;
$content_base64 = base64_encode($content);
$this->commands[] = "echo '{$content_base64}' | base64 -d > $this->configuration_dir/{$filename}";
Storage::disk('local')->put("tmp/redis.conf_{$this->database->uuid}", $this->database->redis_conf);
$path = Storage::path("tmp/redis.conf_{$this->database->uuid}");
instant_scp($path, "{$this->configuration_dir}/{$filename}", $this->database->destination->server);
Storage::disk('local')->delete("tmp/redis.conf_{$this->database->uuid}");
}
}

View File

@@ -2,6 +2,9 @@
namespace App\Actions\Database;
use App\Models\StandaloneClickhouse;
use App\Models\StandaloneDragonfly;
use App\Models\StandaloneKeydb;
use App\Models\StandaloneMariadb;
use App\Models\StandaloneMongodb;
use App\Models\StandaloneMysql;
@@ -13,17 +16,19 @@ class StopDatabase
{
use AsAction;
public function handle(StandaloneRedis|StandalonePostgresql|StandaloneMongodb|StandaloneMysql|StandaloneMariadb $database)
public function handle(StandaloneRedis|StandalonePostgresql|StandaloneMongodb|StandaloneMysql|StandaloneMariadb|StandaloneKeydb|StandaloneDragonfly|StandaloneClickhouse $database)
{
$server = $database->destination->server;
instant_remote_process(
["docker rm -f {$database->uuid}"],
$server
);
if (! $server->isFunctional()) {
return 'Server is not functional';
}
instant_remote_process(command: ["docker stop --time=30 $database->uuid"], server: $server, throwError: false);
instant_remote_process(command: ["docker rm $database->uuid"], server: $server, throwError: false);
instant_remote_process(command: ["docker rm -f $database->uuid"], server: $server, throwError: false);
if ($database->is_public) {
StopDatabaseProxy::run($database);
}
// TODO: make notification for services
// $database->environment->project->team->notify(new StatusChanged($database));
}
}

View File

@@ -2,7 +2,11 @@
namespace App\Actions\Database;
use App\Events\DatabaseStatusChanged;
use App\Models\ServiceDatabase;
use App\Models\StandaloneClickhouse;
use App\Models\StandaloneDragonfly;
use App\Models\StandaloneKeydb;
use App\Models\StandaloneMariadb;
use App\Models\StandaloneMongodb;
use App\Models\StandaloneMysql;
@@ -14,14 +18,16 @@ class StopDatabaseProxy
{
use AsAction;
public function handle(StandaloneRedis|StandalonePostgresql|StandaloneMongodb|StandaloneMysql|StandaloneMariadb|ServiceDatabase $database)
public function handle(StandaloneRedis|StandalonePostgresql|StandaloneMongodb|StandaloneMysql|StandaloneMariadb|StandaloneKeydb|ServiceDatabase|StandaloneDragonfly|StandaloneClickhouse $database)
{
$server = data_get($database, 'destination.server');
$uuid = $database->uuid;
if ($database->getMorphClass() === 'App\Models\ServiceDatabase') {
$uuid = $database->service->uuid;
$server = data_get($database, 'service.server');
}
instant_remote_process(["docker rm -f {$database->uuid}-proxy"], $server);
$database->is_public = false;
instant_remote_process(["docker rm -f {$uuid}-proxy"], $server);
$database->save();
DatabaseStatusChanged::dispatch();
}
}

View File

@@ -0,0 +1,680 @@
<?php
namespace App\Actions\Docker;
use App\Actions\Database\StartDatabaseProxy;
use App\Actions\Proxy\CheckProxy;
use App\Actions\Proxy\StartProxy;
use App\Actions\Shared\ComplexStatusCheck;
use App\Models\ApplicationPreview;
use App\Models\Server;
use App\Models\ServiceDatabase;
use App\Notifications\Container\ContainerRestarted;
use App\Notifications\Container\ContainerStopped;
use Illuminate\Support\Arr;
use Illuminate\Support\Collection;
use Lorisleiva\Actions\Concerns\AsAction;
class GetContainersStatus
{
use AsAction;
public $applications;
public ?Collection $containers;
public ?Collection $containerReplicates;
public $server;
public function handle(Server $server, ?Collection $containers = null, ?Collection $containerReplicates = null)
{
$this->containers = $containers;
$this->containerReplicates = $containerReplicates;
$this->server = $server;
if (! $this->server->isFunctional()) {
return 'Server is not ready.';
}
$this->applications = $this->server->applications();
$skip_these_applications = collect([]);
foreach ($this->applications as $application) {
if ($application->additional_servers->count() > 0) {
$skip_these_applications->push($application);
ComplexStatusCheck::run($application);
$this->applications = $this->applications->filter(function ($value, $key) use ($application) {
return $value->id !== $application->id;
});
}
}
$this->applications = $this->applications->filter(function ($value, $key) use ($skip_these_applications) {
return ! $skip_these_applications->pluck('id')->contains($value->id);
});
$this->old_way();
// if ($this->server->isSwarm()) {
// $this->old_way();
// } else {
// if (!$this->server->is_metrics_enabled) {
// $this->old_way();
// return;
// }
// $sentinel_found = instant_remote_process(["docker inspect coolify-sentinel"], $this->server, false);
// $sentinel_found = json_decode($sentinel_found, true);
// $status = data_get($sentinel_found, '0.State.Status', 'exited');
// if ($status === 'running') {
// ray('Checking with Sentinel');
// $this->sentinel();
// } else {
// ray('Checking the Old way');
// $this->old_way();
// }
// }
}
// private function sentinel()
// {
// try {
// $this->containers = $this->server->getContainersWithSentinel();
// if ($this->containers->count() === 0) {
// return;
// }
// $databases = $this->server->databases();
// $services = $this->server->services()->get();
// $previews = $this->server->previews();
// $foundApplications = [];
// $foundApplicationPreviews = [];
// $foundDatabases = [];
// $foundServices = [];
// foreach ($this->containers as $container) {
// $labels = Arr::undot(data_get($container, 'labels'));
// $containerStatus = data_get($container, 'state');
// $containerHealth = data_get($container, 'health_status', 'unhealthy');
// $containerStatus = "$containerStatus ($containerHealth)";
// $applicationId = data_get($labels, 'coolify.applicationId');
// if ($applicationId) {
// $pullRequestId = data_get($labels, 'coolify.pullRequestId');
// if ($pullRequestId) {
// if (str($applicationId)->contains('-')) {
// $applicationId = str($applicationId)->before('-');
// }
// $preview = ApplicationPreview::where('application_id', $applicationId)->where('pull_request_id', $pullRequestId)->first();
// if ($preview) {
// $foundApplicationPreviews[] = $preview->id;
// $statusFromDb = $preview->status;
// if ($statusFromDb !== $containerStatus) {
// $preview->update(['status' => $containerStatus]);
// }
// } else {
// //Notify user that this container should not be there.
// }
// } else {
// $application = $this->applications->where('id', $applicationId)->first();
// if ($application) {
// $foundApplications[] = $application->id;
// $statusFromDb = $application->status;
// if ($statusFromDb !== $containerStatus) {
// $application->update(['status' => $containerStatus]);
// }
// } else {
// //Notify user that this container should not be there.
// }
// }
// } else {
// $uuid = data_get($labels, 'com.docker.compose.service');
// $type = data_get($labels, 'coolify.type');
// if ($uuid) {
// if ($type === 'service') {
// $database_id = data_get($labels, 'coolify.service.subId');
// if ($database_id) {
// $service_db = ServiceDatabase::where('id', $database_id)->first();
// if ($service_db) {
// $uuid = $service_db->service->uuid;
// $isPublic = data_get($service_db, 'is_public');
// if ($isPublic) {
// $foundTcpProxy = $this->containers->filter(function ($value, $key) use ($uuid) {
// if ($this->server->isSwarm()) {
// // TODO: fix this with sentinel
// return data_get($value, 'Spec.Name') === "coolify-proxy_$uuid";
// } else {
// return data_get($value, 'name') === "$uuid-proxy";
// }
// })->first();
// if (! $foundTcpProxy) {
// StartDatabaseProxy::run($service_db);
// // $this->server->team?->notify(new ContainerRestarted("TCP Proxy for {$service_db->service->name}", $this->server));
// }
// }
// }
// }
// } else {
// $database = $databases->where('uuid', $uuid)->first();
// if ($database) {
// $isPublic = data_get($database, 'is_public');
// $foundDatabases[] = $database->id;
// $statusFromDb = $database->status;
// if ($statusFromDb !== $containerStatus) {
// $database->update(['status' => $containerStatus]);
// }
// if ($isPublic) {
// $foundTcpProxy = $this->containers->filter(function ($value, $key) use ($uuid) {
// if ($this->server->isSwarm()) {
// // TODO: fix this with sentinel
// return data_get($value, 'Spec.Name') === "coolify-proxy_$uuid";
// } else {
// return data_get($value, 'name') === "$uuid-proxy";
// }
// })->first();
// if (! $foundTcpProxy) {
// StartDatabaseProxy::run($database);
// $this->server->team?->notify(new ContainerRestarted("TCP Proxy for {$database->name}", $this->server));
// }
// }
// } else {
// // Notify user that this container should not be there.
// }
// }
// }
// if (data_get($container, 'name') === 'coolify-db') {
// $foundDatabases[] = 0;
// }
// }
// $serviceLabelId = data_get($labels, 'coolify.serviceId');
// if ($serviceLabelId) {
// $subType = data_get($labels, 'coolify.service.subType');
// $subId = data_get($labels, 'coolify.service.subId');
// $service = $services->where('id', $serviceLabelId)->first();
// if (! $service) {
// continue;
// }
// if ($subType === 'application') {
// $service = $service->applications()->where('id', $subId)->first();
// } else {
// $service = $service->databases()->where('id', $subId)->first();
// }
// if ($service) {
// $foundServices[] = "$service->id-$service->name";
// $statusFromDb = $service->status;
// if ($statusFromDb !== $containerStatus) {
// // ray('Updating status: ' . $containerStatus);
// $service->update(['status' => $containerStatus]);
// }
// }
// }
// }
// $exitedServices = collect([]);
// foreach ($services as $service) {
// $apps = $service->applications()->get();
// $dbs = $service->databases()->get();
// foreach ($apps as $app) {
// if (in_array("$app->id-$app->name", $foundServices)) {
// continue;
// } else {
// $exitedServices->push($app);
// }
// }
// foreach ($dbs as $db) {
// if (in_array("$db->id-$db->name", $foundServices)) {
// continue;
// } else {
// $exitedServices->push($db);
// }
// }
// }
// $exitedServices = $exitedServices->unique('id');
// foreach ($exitedServices as $exitedService) {
// if (str($exitedService->status)->startsWith('exited')) {
// continue;
// }
// $name = data_get($exitedService, 'name');
// $fqdn = data_get($exitedService, 'fqdn');
// if ($name) {
// if ($fqdn) {
// $containerName = "$name, available at $fqdn";
// } else {
// $containerName = $name;
// }
// } else {
// if ($fqdn) {
// $containerName = $fqdn;
// } else {
// $containerName = null;
// }
// }
// $projectUuid = data_get($service, 'environment.project.uuid');
// $serviceUuid = data_get($service, 'uuid');
// $environmentName = data_get($service, 'environment.name');
// if ($projectUuid && $serviceUuid && $environmentName) {
// $url = base_url().'/project/'.$projectUuid.'/'.$environmentName.'/service/'.$serviceUuid;
// } else {
// $url = null;
// }
// // $this->server->team?->notify(new ContainerStopped($containerName, $this->server, $url));
// $exitedService->update(['status' => 'exited']);
// }
// $notRunningApplications = $this->applications->pluck('id')->diff($foundApplications);
// foreach ($notRunningApplications as $applicationId) {
// $application = $this->applications->where('id', $applicationId)->first();
// if (str($application->status)->startsWith('exited')) {
// continue;
// }
// $application->update(['status' => 'exited']);
// $name = data_get($application, 'name');
// $fqdn = data_get($application, 'fqdn');
// $containerName = $name ? "$name ($fqdn)" : $fqdn;
// $projectUuid = data_get($application, 'environment.project.uuid');
// $applicationUuid = data_get($application, 'uuid');
// $environment = data_get($application, 'environment.name');
// if ($projectUuid && $applicationUuid && $environment) {
// $url = base_url().'/project/'.$projectUuid.'/'.$environment.'/application/'.$applicationUuid;
// } else {
// $url = null;
// }
// // $this->server->team?->notify(new ContainerStopped($containerName, $this->server, $url));
// }
// $notRunningApplicationPreviews = $previews->pluck('id')->diff($foundApplicationPreviews);
// foreach ($notRunningApplicationPreviews as $previewId) {
// $preview = $previews->where('id', $previewId)->first();
// if (str($preview->status)->startsWith('exited')) {
// continue;
// }
// $preview->update(['status' => 'exited']);
// $name = data_get($preview, 'name');
// $fqdn = data_get($preview, 'fqdn');
// $containerName = $name ? "$name ($fqdn)" : $fqdn;
// $projectUuid = data_get($preview, 'application.environment.project.uuid');
// $environmentName = data_get($preview, 'application.environment.name');
// $applicationUuid = data_get($preview, 'application.uuid');
// if ($projectUuid && $applicationUuid && $environmentName) {
// $url = base_url().'/project/'.$projectUuid.'/'.$environmentName.'/application/'.$applicationUuid;
// } else {
// $url = null;
// }
// // $this->server->team?->notify(new ContainerStopped($containerName, $this->server, $url));
// }
// $notRunningDatabases = $databases->pluck('id')->diff($foundDatabases);
// foreach ($notRunningDatabases as $database) {
// $database = $databases->where('id', $database)->first();
// if (str($database->status)->startsWith('exited')) {
// continue;
// }
// $database->update(['status' => 'exited']);
// $name = data_get($database, 'name');
// $fqdn = data_get($database, 'fqdn');
// $containerName = $name;
// $projectUuid = data_get($database, 'environment.project.uuid');
// $environmentName = data_get($database, 'environment.name');
// $databaseUuid = data_get($database, 'uuid');
// if ($projectUuid && $databaseUuid && $environmentName) {
// $url = base_url().'/project/'.$projectUuid.'/'.$environmentName.'/database/'.$databaseUuid;
// } else {
// $url = null;
// }
// // $this->server->team?->notify(new ContainerStopped($containerName, $this->server, $url));
// }
// // Check if proxy is running
// $this->server->proxyType();
// $foundProxyContainer = $this->containers->filter(function ($value, $key) {
// if ($this->server->isSwarm()) {
// // TODO: fix this with sentinel
// return data_get($value, 'Spec.Name') === 'coolify-proxy_traefik';
// } else {
// return data_get($value, 'name') === 'coolify-proxy';
// }
// })->first();
// if (! $foundProxyContainer) {
// try {
// $shouldStart = CheckProxy::run($this->server);
// if ($shouldStart) {
// StartProxy::run($this->server, false);
// $this->server->team?->notify(new ContainerRestarted('coolify-proxy', $this->server));
// }
// } catch (\Throwable $e) {
// ray($e);
// }
// } else {
// $this->server->proxy->status = data_get($foundProxyContainer, 'state');
// $this->server->save();
// $connectProxyToDockerNetworks = connectProxyToNetworks($this->server);
// instant_remote_process($connectProxyToDockerNetworks, $this->server, false);
// }
// } catch (\Exception $e) {
// // send_internal_notification("ContainerStatusJob failed on ({$this->server->id}) with: " . $e->getMessage());
// ray($e->getMessage());
// return handleError($e);
// }
// }
private function old_way()
{
if ($this->containers === null) {
['containers' => $this->containers,'containerReplicates' => $this->containerReplicates] = $this->server->getContainers();
}
if (is_null($this->containers)) {
return;
}
if ($this->containerReplicates) {
foreach ($this->containerReplicates as $containerReplica) {
$name = data_get($containerReplica, 'Name');
$this->containers = $this->containers->map(function ($container) use ($name, $containerReplica) {
if (data_get($container, 'Spec.Name') === $name) {
$replicas = data_get($containerReplica, 'Replicas');
$running = str($replicas)->explode('/')[0];
$total = str($replicas)->explode('/')[1];
if ($running === $total) {
data_set($container, 'State.Status', 'running');
data_set($container, 'State.Health.Status', 'healthy');
} else {
data_set($container, 'State.Status', 'starting');
data_set($container, 'State.Health.Status', 'unhealthy');
}
}
return $container;
});
}
}
$databases = $this->server->databases();
$services = $this->server->services()->get();
$previews = $this->server->previews();
$foundApplications = [];
$foundApplicationPreviews = [];
$foundDatabases = [];
$foundServices = [];
foreach ($this->containers as $container) {
if ($this->server->isSwarm()) {
$labels = data_get($container, 'Spec.Labels');
$uuid = data_get($labels, 'coolify.name');
} else {
$labels = data_get($container, 'Config.Labels');
}
$containerStatus = data_get($container, 'State.Status');
$containerHealth = data_get($container, 'State.Health.Status', 'unhealthy');
$containerStatus = "$containerStatus ($containerHealth)";
$labels = Arr::undot(format_docker_labels_to_json($labels));
$applicationId = data_get($labels, 'coolify.applicationId');
if ($applicationId) {
$pullRequestId = data_get($labels, 'coolify.pullRequestId');
if ($pullRequestId) {
if (str($applicationId)->contains('-')) {
$applicationId = str($applicationId)->before('-');
}
$preview = ApplicationPreview::where('application_id', $applicationId)->where('pull_request_id', $pullRequestId)->first();
if ($preview) {
$foundApplicationPreviews[] = $preview->id;
$statusFromDb = $preview->status;
if ($statusFromDb !== $containerStatus) {
$preview->update(['status' => $containerStatus]);
}
} else {
//Notify user that this container should not be there.
}
} else {
$application = $this->applications->where('id', $applicationId)->first();
if ($application) {
$foundApplications[] = $application->id;
$statusFromDb = $application->status;
if ($statusFromDb !== $containerStatus) {
$application->update(['status' => $containerStatus]);
}
} else {
//Notify user that this container should not be there.
}
}
} else {
$uuid = data_get($labels, 'com.docker.compose.service');
$type = data_get($labels, 'coolify.type');
if ($uuid) {
if ($type === 'service') {
$database_id = data_get($labels, 'coolify.service.subId');
if ($database_id) {
$service_db = ServiceDatabase::where('id', $database_id)->first();
if ($service_db) {
$uuid = data_get($service_db, 'service.uuid');
if ($uuid) {
$isPublic = data_get($service_db, 'is_public');
if ($isPublic) {
$foundTcpProxy = $this->containers->filter(function ($value, $key) use ($uuid) {
if ($this->server->isSwarm()) {
return data_get($value, 'Spec.Name') === "coolify-proxy_$uuid";
} else {
return data_get($value, 'Name') === "/$uuid-proxy";
}
})->first();
if (! $foundTcpProxy) {
StartDatabaseProxy::run($service_db);
// $this->server->team?->notify(new ContainerRestarted("TCP Proxy for {$service_db->service->name}", $this->server));
}
}
}
}
}
} else {
$database = $databases->where('uuid', $uuid)->first();
if ($database) {
$isPublic = data_get($database, 'is_public');
$foundDatabases[] = $database->id;
$statusFromDb = $database->status;
if ($statusFromDb !== $containerStatus) {
$database->update(['status' => $containerStatus]);
}
if ($isPublic) {
$foundTcpProxy = $this->containers->filter(function ($value, $key) use ($uuid) {
if ($this->server->isSwarm()) {
return data_get($value, 'Spec.Name') === "coolify-proxy_$uuid";
} else {
return data_get($value, 'Name') === "/$uuid-proxy";
}
})->first();
if (! $foundTcpProxy) {
StartDatabaseProxy::run($database);
$this->server->team?->notify(new ContainerRestarted("TCP Proxy for {$database->name}", $this->server));
}
}
} else {
// Notify user that this container should not be there.
}
}
}
if (data_get($container, 'Name') === '/coolify-db') {
$foundDatabases[] = 0;
}
}
$serviceLabelId = data_get($labels, 'coolify.serviceId');
if ($serviceLabelId) {
$subType = data_get($labels, 'coolify.service.subType');
$subId = data_get($labels, 'coolify.service.subId');
$service = $services->where('id', $serviceLabelId)->first();
if (! $service) {
continue;
}
if ($subType === 'application') {
$service = $service->applications()->where('id', $subId)->first();
} else {
$service = $service->databases()->where('id', $subId)->first();
}
if ($service) {
$foundServices[] = "$service->id-$service->name";
$statusFromDb = $service->status;
if ($statusFromDb !== $containerStatus) {
// ray('Updating status: ' . $containerStatus);
$service->update(['status' => $containerStatus]);
}
}
}
}
$exitedServices = collect([]);
foreach ($services as $service) {
$apps = $service->applications()->get();
$dbs = $service->databases()->get();
foreach ($apps as $app) {
if (in_array("$app->id-$app->name", $foundServices)) {
continue;
} else {
$exitedServices->push($app);
}
}
foreach ($dbs as $db) {
if (in_array("$db->id-$db->name", $foundServices)) {
continue;
} else {
$exitedServices->push($db);
}
}
}
$exitedServices = $exitedServices->unique('id');
foreach ($exitedServices as $exitedService) {
if (str($exitedService->status)->startsWith('exited')) {
continue;
}
$name = data_get($exitedService, 'name');
$fqdn = data_get($exitedService, 'fqdn');
if ($name) {
if ($fqdn) {
$containerName = "$name, available at $fqdn";
} else {
$containerName = $name;
}
} else {
if ($fqdn) {
$containerName = $fqdn;
} else {
$containerName = null;
}
}
$projectUuid = data_get($service, 'environment.project.uuid');
$serviceUuid = data_get($service, 'uuid');
$environmentName = data_get($service, 'environment.name');
if ($projectUuid && $serviceUuid && $environmentName) {
$url = base_url().'/project/'.$projectUuid.'/'.$environmentName.'/service/'.$serviceUuid;
} else {
$url = null;
}
// $this->server->team?->notify(new ContainerStopped($containerName, $this->server, $url));
$exitedService->update(['status' => 'exited']);
}
$notRunningApplications = $this->applications->pluck('id')->diff($foundApplications);
foreach ($notRunningApplications as $applicationId) {
$application = $this->applications->where('id', $applicationId)->first();
if (str($application->status)->startsWith('exited')) {
continue;
}
$application->update(['status' => 'exited']);
$name = data_get($application, 'name');
$fqdn = data_get($application, 'fqdn');
$containerName = $name ? "$name ($fqdn)" : $fqdn;
$projectUuid = data_get($application, 'environment.project.uuid');
$applicationUuid = data_get($application, 'uuid');
$environment = data_get($application, 'environment.name');
if ($projectUuid && $applicationUuid && $environment) {
$url = base_url().'/project/'.$projectUuid.'/'.$environment.'/application/'.$applicationUuid;
} else {
$url = null;
}
// $this->server->team?->notify(new ContainerStopped($containerName, $this->server, $url));
}
$notRunningApplicationPreviews = $previews->pluck('id')->diff($foundApplicationPreviews);
foreach ($notRunningApplicationPreviews as $previewId) {
$preview = $previews->where('id', $previewId)->first();
if (str($preview->status)->startsWith('exited')) {
continue;
}
$preview->update(['status' => 'exited']);
$name = data_get($preview, 'name');
$fqdn = data_get($preview, 'fqdn');
$containerName = $name ? "$name ($fqdn)" : $fqdn;
$projectUuid = data_get($preview, 'application.environment.project.uuid');
$environmentName = data_get($preview, 'application.environment.name');
$applicationUuid = data_get($preview, 'application.uuid');
if ($projectUuid && $applicationUuid && $environmentName) {
$url = base_url().'/project/'.$projectUuid.'/'.$environmentName.'/application/'.$applicationUuid;
} else {
$url = null;
}
// $this->server->team?->notify(new ContainerStopped($containerName, $this->server, $url));
}
$notRunningDatabases = $databases->pluck('id')->diff($foundDatabases);
foreach ($notRunningDatabases as $database) {
$database = $databases->where('id', $database)->first();
if (str($database->status)->startsWith('exited')) {
continue;
}
$database->update(['status' => 'exited']);
$name = data_get($database, 'name');
$fqdn = data_get($database, 'fqdn');
$containerName = $name;
$projectUuid = data_get($database, 'environment.project.uuid');
$environmentName = data_get($database, 'environment.name');
$databaseUuid = data_get($database, 'uuid');
if ($projectUuid && $databaseUuid && $environmentName) {
$url = base_url().'/project/'.$projectUuid.'/'.$environmentName.'/database/'.$databaseUuid;
} else {
$url = null;
}
// $this->server->team?->notify(new ContainerStopped($containerName, $this->server, $url));
}
// Check if proxy is running
$this->server->proxyType();
$foundProxyContainer = $this->containers->filter(function ($value, $key) {
if ($this->server->isSwarm()) {
return data_get($value, 'Spec.Name') === 'coolify-proxy_traefik';
} else {
return data_get($value, 'Name') === '/coolify-proxy';
}
})->first();
if (! $foundProxyContainer) {
try {
$shouldStart = CheckProxy::run($this->server);
if ($shouldStart) {
StartProxy::run($this->server, false);
$this->server->team?->notify(new ContainerRestarted('coolify-proxy', $this->server));
}
} catch (\Throwable $e) {
ray($e);
}
} else {
$this->server->proxy->status = data_get($foundProxyContainer, 'State.Status');
$this->server->save();
$connectProxyToDockerNetworks = connectProxyToNetworks($this->server);
instant_remote_process($connectProxyToDockerNetworks, $this->server, false);
}
}
}

View File

@@ -16,12 +16,12 @@ class CreateNewUser implements CreatesNewUsers
/**
* Validate and create a newly registered user.
*
* @param array<string, string> $input
* @param array<string, string> $input
*/
public function create(array $input): User
{
$settings = InstanceSettings::get();
if (!$settings->is_registration_enabled) {
if (! $settings->is_registration_enabled) {
abort(403);
}
Validator::make($input, [
@@ -66,6 +66,7 @@ class CreateNewUser implements CreatesNewUsers
}
// Set session variable
session(['currentTeam' => $user->currentTeam = $team]);
return $user;
}
}

View File

@@ -14,7 +14,7 @@ class ResetUserPassword implements ResetsUserPasswords
/**
* Validate and reset the user's forgotten password.
*
* @param array<string, string> $input
* @param array<string, string> $input
*/
public function reset(User $user, array $input): void
{

View File

@@ -14,7 +14,7 @@ class UpdateUserPassword implements UpdatesUserPasswords
/**
* Validate and update the user's password.
*
* @param array<string, string> $input
* @param array<string, string> $input
*/
public function update(User $user, array $input): void
{

View File

@@ -13,7 +13,7 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation
/**
* Validate and update the given user's profile information.
*
* @param array<string, string> $input
* @param array<string, string> $input
*/
public function update(User $user, array $input): void
{
@@ -45,7 +45,7 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation
/**
* Update the given verified user's profile information.
*
* @param array<string, string> $input
* @param array<string, string> $input
*/
protected function updateVerifiedUser(User $user, array $input): void
{

View File

@@ -6,10 +6,10 @@ use App\Models\InstanceSettings;
use Illuminate\Support\Facades\Http;
use Lorisleiva\Actions\Concerns\AsAction;
class CheckResaleLicense
{
use AsAction;
public function handle()
{
try {
@@ -18,6 +18,7 @@ class CheckResaleLicense
$settings->update([
'is_resale_license_active' => true,
]);
return;
}
// if (!$settings->resale_license) {
@@ -38,6 +39,7 @@ class CheckResaleLicense
$settings->update([
'is_resale_license_active' => true,
]);
return;
}
$data = Http::withHeaders([
@@ -51,6 +53,7 @@ class CheckResaleLicense
$settings->update([
'is_resale_license_active' => true,
]);
return;
}
if (data_get($data, 'license_key.status') === 'active') {

View File

@@ -2,27 +2,32 @@
namespace App\Actions\Proxy;
use Lorisleiva\Actions\Concerns\AsAction;
use App\Models\Server;
use Illuminate\Support\Str;
use Lorisleiva\Actions\Concerns\AsAction;
class CheckConfiguration
{
use AsAction;
public function handle(Server $server, bool $reset = false)
{
$proxy_path = get_proxy_path();
$proxy_configuration = instant_remote_process([
$proxyType = $server->proxyType();
if ($proxyType === 'NONE') {
return 'OK';
}
$proxy_path = $server->proxyPath();
$payload = [
"mkdir -p $proxy_path",
"cat $proxy_path/docker-compose.yml",
], $server, false);
];
$proxy_configuration = instant_remote_process($payload, $server, false);
if ($reset || ! $proxy_configuration || is_null($proxy_configuration)) {
$proxy_configuration = str(generate_default_proxy_configuration($server))->trim()->value;
}
if (! $proxy_configuration || is_null($proxy_configuration)) {
throw new \Exception('Could not generate proxy configuration');
}
if ($reset || !$proxy_configuration || is_null($proxy_configuration)) {
$proxy_configuration = Str::of(generate_default_proxy_configuration($server))->trim()->value;
}
if (!$proxy_configuration || is_null($proxy_configuration)) {
throw new \Exception("Could not generate proxy configuration");
}
return $proxy_configuration;
}
}

View File

@@ -8,44 +8,80 @@ use Lorisleiva\Actions\Concerns\AsAction;
class CheckProxy
{
use AsAction;
public function handle(Server $server, $fromUI = false)
{
if (!$server->isProxyShouldRun()) {
if ($fromUI) {
throw new \Exception("Proxy should not run. You selected the Custom Proxy.");
} else {
return false;
}
}
$status = getContainerStatus($server, 'coolify-proxy');
if ($status === 'running') {
$server->proxy->set('status', 'running');
$server->save();
if (! $server->isFunctional()) {
return false;
}
$ip = $server->ip;
if ($server->id === 0) {
$ip = 'host.docker.internal';
}
if ($server->isBuildServer()) {
if ($server->proxy) {
$server->proxy = null;
$server->save();
}
$connection80 = @fsockopen($ip, '80');
$connection443 = @fsockopen($ip, '443');
$port80 = is_resource($connection80) && fclose($connection80);
$port443 = is_resource($connection443) && fclose($connection443);
if ($port80) {
return false;
}
$proxyType = $server->proxyType();
if (is_null($proxyType) || $proxyType === 'NONE' || $server->proxy->force_stop) {
return false;
}
['uptime' => $uptime, 'error' => $error] = $server->validateConnection();
if (! $uptime) {
throw new \Exception($error);
}
if (! $server->isProxyShouldRun()) {
if ($fromUI) {
throw new \Exception("Port 80 is in use.<br>You must stop the process using this port.<br>Docs: <a target='_blank' href='https://coolify.io/docs'>https://coolify.io/docs</a> <br> Discord: <a target='_blank' href='https://coollabs.io/discord'>https://coollabs.io/discord</a>");
throw new \Exception('Proxy should not run. You selected the Custom Proxy.');
} else {
return false;
}
}
if ($port443) {
if ($fromUI) {
throw new \Exception("Port 443 is in use.<br>You must stop the process using this port.<br>Docs: <a target='_blank' href='https://coolify.io/docs'>https://coolify.io/docs</a> <br> Discord: <a target='_blank' href='https://coollabs.io/discord'>https://coollabs.io/discord</a>");
} else {
if ($server->isSwarm()) {
$status = getContainerStatus($server, 'coolify-proxy_traefik');
$server->proxy->set('status', $status);
$server->save();
if ($status === 'running') {
return false;
}
return true;
} else {
$status = getContainerStatus($server, 'coolify-proxy');
if ($status === 'running') {
$server->proxy->set('status', 'running');
$server->save();
return false;
}
if ($server->settings->is_cloudflare_tunnel) {
return false;
}
$ip = $server->ip;
if ($server->id === 0) {
$ip = 'host.docker.internal';
}
$connection80 = @fsockopen($ip, '80');
$connection443 = @fsockopen($ip, '443');
$port80 = is_resource($connection80) && fclose($connection80);
$port443 = is_resource($connection443) && fclose($connection443);
if ($port80) {
if ($fromUI) {
throw new \Exception("Port 80 is in use.<br>You must stop the process using this port.<br>Docs: <a target='_blank' href='https://coolify.io/docs'>https://coolify.io/docs</a><br>Discord: <a target='_blank' href='https://coollabs.io/discord'>https://coollabs.io/discord</a>");
} else {
return false;
}
}
if ($port443) {
if ($fromUI) {
throw new \Exception("Port 443 is in use.<br>You must stop the process using this port.<br>Docs: <a target='_blank' href='https://coolify.io/docs'>https://coolify.io/docs</a><br>Discord: <a target='_blank' href='https://coollabs.io/discord'>https://coollabs.io/discord</a>");
} else {
return false;
}
}
return true;
}
return true;
}
}

View File

@@ -3,7 +3,6 @@
namespace App\Actions\Proxy;
use App\Models\Server;
use Illuminate\Support\Str;
use Lorisleiva\Actions\Concerns\AsAction;
class SaveConfiguration
@@ -15,15 +14,15 @@ class SaveConfiguration
if (is_null($proxy_settings)) {
$proxy_settings = CheckConfiguration::run($server, true);
}
$proxy_path = get_proxy_path();
$proxy_path = $server->proxyPath();
$docker_compose_yml_base64 = base64_encode($proxy_settings);
$server->proxy->last_saved_settings = Str::of($docker_compose_yml_base64)->pipe('md5')->value;
$server->proxy->last_saved_settings = str($docker_compose_yml_base64)->pipe('md5')->value;
$server->save();
return instant_remote_process([
"mkdir -p $proxy_path",
"echo '$docker_compose_yml_base64' | base64 -d > $proxy_path/docker-compose.yml",
"echo '$docker_compose_yml_base64' | base64 -d | tee $proxy_path/docker-compose.yml > /dev/null",
], $server);
}
}

View File

@@ -2,55 +2,75 @@
namespace App\Actions\Proxy;
use App\Events\ProxyStarted;
use App\Models\Server;
use Illuminate\Support\Str;
use Lorisleiva\Actions\Concerns\AsAction;
use Spatie\Activitylog\Models\Activity;
class StartProxy
{
use AsAction;
public function handle(Server $server, bool $async = true): string|Activity
public function handle(Server $server, bool $async = true, bool $force = false): string|Activity
{
try {
$proxyType = $server->proxyType();
if ((is_null($proxyType) || $proxyType === 'NONE' || $server->proxy->force_stop || $server->isBuildServer()) && $force === false) {
return 'OK';
}
$commands = collect([]);
$proxy_path = get_proxy_path();
$proxy_path = $server->proxyPath();
$configuration = CheckConfiguration::run($server);
if (!$configuration) {
throw new \Exception("Configuration is not synced");
if (! $configuration) {
throw new \Exception('Configuration is not synced');
}
SaveConfiguration::run($server, $configuration);
$docker_compose_yml_base64 = base64_encode($configuration);
$server->proxy->last_applied_settings = Str::of($docker_compose_yml_base64)->pipe('md5')->value;
$server->proxy->last_applied_settings = str($docker_compose_yml_base64)->pipe('md5')->value;
$server->save();
$commands = $commands->merge([
"mkdir -p $proxy_path && cd $proxy_path",
"echo 'Creating required Docker Compose file.'",
"echo 'Pulling docker image.'",
'docker compose pull',
"echo 'Stopping existing coolify-proxy.'",
"docker compose down -v --remove-orphans > /dev/null 2>&1",
"echo 'Starting coolify-proxy.'",
'docker compose up -d --remove-orphans',
"echo 'Proxy started successfully.'"
]);
$commands = $commands->merge(connectProxyToNetworks($server));
if ($server->isSwarm()) {
$commands = $commands->merge([
"mkdir -p $proxy_path/dynamic",
"cd $proxy_path",
"echo 'Creating required Docker Compose file.'",
"echo 'Starting coolify-proxy.'",
'docker stack deploy -c docker-compose.yml coolify-proxy',
"echo 'Proxy started successfully.'",
]);
} else {
$caddfile = 'import /dynamic/*.caddy';
$commands = $commands->merge([
"mkdir -p $proxy_path/dynamic",
"cd $proxy_path",
"echo '$caddfile' > $proxy_path/dynamic/Caddyfile",
"echo 'Creating required Docker Compose file.'",
"echo 'Pulling docker image.'",
'docker compose pull',
"echo 'Stopping existing coolify-proxy.'",
'docker compose down -v --remove-orphans > /dev/null 2>&1',
"echo 'Starting coolify-proxy.'",
'docker compose up -d --remove-orphans',
"echo 'Proxy started successfully.'",
]);
$commands = $commands->merge(connectProxyToNetworks($server));
}
if ($async) {
$activity = remote_process($commands, $server);
$activity = remote_process($commands, $server, callEventOnFinish: 'ProxyStarted', callEventData: $server);
return $activity;
} else {
instant_remote_process($commands, $server);
$server->proxy->set('status', 'running');
$server->proxy->set('type', $proxyType);
$server->save();
ProxyStarted::dispatch($server);
return 'OK';
}
} catch(\Throwable $e) {
} catch (\Throwable $e) {
ray($e);
throw $e;
}
}
}

View File

@@ -0,0 +1,39 @@
<?php
namespace App\Actions\Server;
use App\Models\InstanceSettings;
use App\Models\Server;
use Lorisleiva\Actions\Concerns\AsAction;
class CleanupDocker
{
use AsAction;
public function handle(Server $server)
{
$commands = $this->getCommands();
foreach ($commands as $command) {
instant_remote_process([$command], $server, false);
}
}
private function getCommands(): array
{
$settings = InstanceSettings::get();
$helperImageVersion = data_get($settings, 'helper_version');
$helperImage = config('coolify.helper_image');
$helperImageWithVersion = config('coolify.helper_image').':'.$helperImageVersion;
$commonCommands = [
'docker container prune -f --filter "label=coolify.managed=true"',
'docker image prune -af --filter "label!=coolify.managed=true"',
'docker builder prune -af',
"docker images --filter before=$helperImageWithVersion --filter reference=$helperImage | grep $helperImage | awk '{print $3}' | xargs -r docker rmi",
];
return $commonCommands;
}
}

View File

@@ -0,0 +1,51 @@
<?php
namespace App\Actions\Server;
use App\Models\Server;
use Lorisleiva\Actions\Concerns\AsAction;
use Symfony\Component\Yaml\Yaml;
class ConfigureCloudflared
{
use AsAction;
public function handle(Server $server, string $cloudflare_token)
{
try {
$config = [
'services' => [
'coolify-cloudflared' => [
'container_name' => 'coolify-cloudflared',
'image' => 'cloudflare/cloudflared:latest',
'restart' => RESTART_MODE,
'network_mode' => 'host',
'command' => 'tunnel run',
'environment' => [
"TUNNEL_TOKEN={$cloudflare_token}",
],
],
],
];
$config = Yaml::dump($config, 12, 2);
$docker_compose_yml_base64 = base64_encode($config);
$commands = collect([
'mkdir -p /tmp/cloudflared',
'cd /tmp/cloudflared',
"echo '$docker_compose_yml_base64' | base64 -d | tee docker-compose.yml > /dev/null",
'docker compose pull',
'docker compose down -v --remove-orphans > /dev/null 2>&1',
'docker compose up -d --remove-orphans',
]);
instant_remote_process($commands, $server);
} catch (\Throwable $e) {
ray($e);
throw $e;
} finally {
$commands = collect([
'rm -fr /tmp/cloudflared',
]);
instant_remote_process($commands, $server);
}
}
}

View File

@@ -2,15 +2,21 @@
namespace App\Actions\Server;
use Lorisleiva\Actions\Concerns\AsAction;
use App\Models\Server;
use App\Models\StandaloneDocker;
use Lorisleiva\Actions\Concerns\AsAction;
class InstallDocker
{
use AsAction;
public function handle(Server $server)
{
$supported_os_type = $server->validateOS();
if (! $supported_os_type) {
throw new \Exception('Server OS type is not supported for automated installation. Please install Docker manually before continuing: <a target="_blank" class="underline" href="https://coolify.io/docs/installation#manually">documentation</a>.');
}
ray('Installing Docker on server: '.$server->name.' ('.$server->ip.')'.' with OS type: '.$supported_os_type);
$dockerVersion = '24.0';
$config = base64_encode('{
"log-driver": "json-file",
@@ -27,36 +33,78 @@ class InstallDocker
'server_id' => $server->id,
]);
}
$command = collect([]);
if (isDev() && $server->id === 0) {
$command = [
"echo '####### Installing Prerequisites...'",
"sleep 1",
"echo '####### Installing/updating Docker Engine...'",
"echo '####### Configuring Docker Engine (merging existing configuration with the required)...'",
"sleep 4",
"echo '####### Restarting Docker Engine...'",
"ls -l /tmp"
];
$command = $command->merge([
"echo 'Installing Prerequisites...'",
'sleep 1',
"echo 'Installing Docker Engine...'",
"echo 'Configuring Docker Engine (merging existing configuration with the required)...'",
'sleep 4',
"echo 'Restarting Docker Engine...'",
'ls -l /tmp',
]);
return remote_process($command, $server);
} else {
$command = [
"echo '####### Installing Prerequisites...'",
"command -v jq >/dev/null || apt-get update",
"command -v jq >/dev/null || apt install -y jq",
"echo '####### Installing/updating Docker Engine...'",
"curl https://releases.rancher.com/install-docker/{$dockerVersion}.sh | sh",
"echo '####### Configuring Docker Engine (merging existing configuration with the required)...'",
"test -s /etc/docker/daemon.json && cp /etc/docker/daemon.json \"/etc/docker/daemon.json.original-`date +\"%Y%m%d-%H%M%S\"`\" || echo '{$config}' | base64 -d > /etc/docker/daemon.json",
"echo '{$config}' | base64 -d > /etc/docker/daemon.json.coolify",
"cat <<< $(jq . /etc/docker/daemon.json.coolify) > /etc/docker/daemon.json.coolify",
"cat <<< $(jq -s '.[0] * .[1]' /etc/docker/daemon.json /etc/docker/daemon.json.coolify) > /etc/docker/daemon.json",
"echo '####### Restarting Docker Engine...'",
"systemctl restart docker",
"echo '####### Creating default Docker network (coolify)...'",
"docker network create --attachable coolify >/dev/null 2>&1 || true",
"echo '####### Done!'"
];
if ($supported_os_type->contains('debian')) {
$command = $command->merge([
"echo 'Installing Prerequisites...'",
'apt-get update -y',
'command -v curl >/dev/null || apt install -y curl',
'command -v wget >/dev/null || apt install -y wget',
'command -v git >/dev/null || apt install -y git',
'command -v jq >/dev/null || apt install -y jq',
]);
} elseif ($supported_os_type->contains('rhel')) {
$command = $command->merge([
"echo 'Installing Prerequisites...'",
'command -v curl >/dev/null || dnf install -y curl',
'command -v wget >/dev/null || dnf install -y wget',
'command -v git >/dev/null || dnf install -y git',
'command -v jq >/dev/null || dnf install -y jq',
]);
} elseif ($supported_os_type->contains('sles')) {
$command = $command->merge([
"echo 'Installing Prerequisites...'",
'zypper update -y',
'command -v curl >/dev/null || zypper install -y curl',
'command -v wget >/dev/null || zypper install -y wget',
'command -v git >/dev/null || zypper install -y git',
'command -v jq >/dev/null || zypper install -y jq',
]);
} else {
throw new \Exception('Unsupported OS');
}
$command = $command->merge([
"echo 'Installing Docker Engine...'",
"curl https://releases.rancher.com/install-docker/{$dockerVersion}.sh | sh || curl https://get.docker.com | sh -s -- --version {$dockerVersion}",
"echo 'Configuring Docker Engine (merging existing configuration with the required)...'",
'test -s /etc/docker/daemon.json && cp /etc/docker/daemon.json "/etc/docker/daemon.json.original-$(date +"%Y%m%d-%H%M%S")"',
"test ! -s /etc/docker/daemon.json && echo '{$config}' | base64 -d | tee /etc/docker/daemon.json > /dev/null",
"echo '{$config}' | base64 -d | tee /etc/docker/daemon.json.coolify > /dev/null",
'jq . /etc/docker/daemon.json.coolify | tee /etc/docker/daemon.json.coolify.pretty > /dev/null',
'mv /etc/docker/daemon.json.coolify.pretty /etc/docker/daemon.json.coolify',
"jq -s '.[0] * .[1]' /etc/docker/daemon.json.coolify /etc/docker/daemon.json | tee /etc/docker/daemon.json.appended > /dev/null",
'mv /etc/docker/daemon.json.appended /etc/docker/daemon.json',
"echo 'Restarting Docker Engine...'",
'systemctl enable docker >/dev/null 2>&1 || true',
'systemctl restart docker',
]);
if ($server->isSwarm()) {
$command = $command->merge([
'docker network create --attachable --driver overlay coolify-overlay >/dev/null 2>&1 || true',
]);
} else {
$command = $command->merge([
'docker network create --attachable coolify >/dev/null 2>&1 || true',
]);
$command = $command->merge([
"echo 'Done!'",
]);
}
return remote_process($command, $server);
}
return remote_process($command, $server);
}
}

View File

@@ -0,0 +1,217 @@
<?php
namespace App\Actions\Server;
use App\Models\Server;
use Lorisleiva\Actions\Concerns\AsAction;
class InstallLogDrain
{
use AsAction;
public function handle(Server $server)
{
if ($server->settings->is_logdrain_newrelic_enabled) {
$type = 'newrelic';
} elseif ($server->settings->is_logdrain_highlight_enabled) {
$type = 'highlight';
} elseif ($server->settings->is_logdrain_axiom_enabled) {
$type = 'axiom';
} elseif ($server->settings->is_logdrain_custom_enabled) {
$type = 'custom';
} else {
$type = 'none';
}
try {
if ($type === 'none') {
return 'No log drain is enabled.';
} elseif ($type === 'newrelic') {
if (! $server->settings->is_logdrain_newrelic_enabled) {
throw new \Exception('New Relic log drain is not enabled.');
}
$config = base64_encode("
[SERVICE]
Flush 5
Daemon off
Tag container_logs
Log_Level debug
Parsers_File parsers.conf
[INPUT]
Name forward
Buffer_Chunk_Size 1M
Buffer_Max_Size 6M
[FILTER]
Name grep
Match *
Exclude log 127.0.0.1
[FILTER]
Name modify
Match *
Set coolify.server_name {$server->name}
Rename COOLIFY_APP_NAME coolify.app_name
Rename COOLIFY_PROJECT_NAME coolify.project_name
Rename COOLIFY_SERVER_IP coolify.server_ip
Rename COOLIFY_ENVIRONMENT_NAME coolify.environment_name
[OUTPUT]
Name nrlogs
Match *
license_key \${LICENSE_KEY}
# https://log-api.eu.newrelic.com/log/v1 - EU
# https://log-api.newrelic.com/log/v1 - US
base_uri \${BASE_URI}
");
} elseif ($type === 'highlight') {
if (! $server->settings->is_logdrain_highlight_enabled) {
throw new \Exception('Highlight log drain is not enabled.');
}
$config = base64_encode('
[SERVICE]
Flush 5
Daemon off
Log_Level debug
Parsers_File parsers.conf
[INPUT]
Name forward
tag ${HIGHLIGHT_PROJECT_ID}
Buffer_Chunk_Size 1M
Buffer_Max_Size 6M
[OUTPUT]
Name forward
Match *
Host otel.highlight.io
Port 24224
');
} elseif ($type === 'axiom') {
if (! $server->settings->is_logdrain_axiom_enabled) {
throw new \Exception('Axiom log drain is not enabled.');
}
$config = base64_encode("
[SERVICE]
Flush 5
Daemon off
Log_Level debug
Parsers_File parsers.conf
[INPUT]
Name forward
Buffer_Chunk_Size 1M
Buffer_Max_Size 6M
[FILTER]
Name grep
Match *
Exclude log 127.0.0.1
[FILTER]
Name modify
Match *
Set coolify.server_name {$server->name}
Rename COOLIFY_APP_NAME coolify.app_name
Rename COOLIFY_PROJECT_NAME coolify.project_name
Rename COOLIFY_SERVER_IP coolify.server_ip
Rename COOLIFY_ENVIRONMENT_NAME coolify.environment_name
[OUTPUT]
Name http
Match *
Host api.axiom.co
Port 443
URI /v1/datasets/\${AXIOM_DATASET_NAME}/ingest
# Authorization Bearer should be an API token
Header Authorization Bearer \${AXIOM_API_KEY}
compress gzip
format json
json_date_key _time
json_date_format iso8601
tls On
");
} elseif ($type === 'custom') {
if (! $server->settings->is_logdrain_custom_enabled) {
throw new \Exception('Custom log drain is not enabled.');
}
$config = base64_encode($server->settings->logdrain_custom_config);
$parsers = base64_encode($server->settings->logdrain_custom_config_parser);
} else {
throw new \Exception('Unknown log drain type.');
}
if ($type !== 'custom') {
$parsers = base64_encode("
[PARSER]
Name empty_line_skipper
Format regex
Regex /^(?!\s*$).+/
");
}
$compose = base64_encode('
services:
coolify-log-drain:
image: cr.fluentbit.io/fluent/fluent-bit:2.0
container_name: coolify-log-drain
command: -c /fluent-bit.conf
env_file:
- .env
volumes:
- ./fluent-bit.conf:/fluent-bit.conf
- ./parsers.conf:/parsers.conf
ports:
- 127.0.0.1:24224:24224
restart: unless-stopped
');
$readme = base64_encode('# New Relic Log Drain
This log drain is based on [Fluent Bit](https://fluentbit.io/) and New Relic Log Forwarder.
Files:
- `fluent-bit.conf` - configuration file for Fluent Bit
- `docker-compose.yml` - docker-compose file to run Fluent Bit
- `.env` - environment variables for Fluent Bit
');
$license_key = $server->settings->logdrain_newrelic_license_key;
$base_uri = $server->settings->logdrain_newrelic_base_uri;
$base_path = config('coolify.base_config_path');
$config_path = $base_path.'/log-drains';
$fluent_bit_config = $config_path.'/fluent-bit.conf';
$parsers_config = $config_path.'/parsers.conf';
$compose_path = $config_path.'/docker-compose.yml';
$readme_path = $config_path.'/README.md';
$command = [
"echo 'Saving configuration'",
"mkdir -p $config_path",
"echo '{$parsers}' | base64 -d | tee $parsers_config > /dev/null",
"echo '{$config}' | base64 -d | tee $fluent_bit_config > /dev/null",
"echo '{$compose}' | base64 -d | tee $compose_path > /dev/null",
"echo '{$readme}' | base64 -d | tee $readme_path > /dev/null",
"test -f $config_path/.env && rm $config_path/.env",
];
if ($type === 'newrelic') {
$add_envs_command = [
"echo LICENSE_KEY=$license_key >> $config_path/.env",
"echo BASE_URI=$base_uri >> $config_path/.env",
];
} elseif ($type === 'highlight') {
$add_envs_command = [
"echo HIGHLIGHT_PROJECT_ID={$server->settings->logdrain_highlight_project_id} >> $config_path/.env",
];
} elseif ($type === 'axiom') {
$add_envs_command = [
"echo AXIOM_DATASET_NAME={$server->settings->logdrain_axiom_dataset_name} >> $config_path/.env",
"echo AXIOM_API_KEY={$server->settings->logdrain_axiom_api_key} >> $config_path/.env",
];
} elseif ($type === 'custom') {
$add_envs_command = [
"touch $config_path/.env",
];
} else {
throw new \Exception('Unknown log drain type.');
}
$restart_command = [
"echo 'Stopping old Fluent Bit'",
"cd $config_path && docker compose down --remove-orphans || true",
"echo 'Starting Fluent Bit'",
"cd $config_path && docker compose up -d --remove-orphans",
];
$command = array_merge($command, $add_envs_command, $restart_command);
return instant_remote_process($command, $server);
} catch (\Throwable $e) {
return handleError($e);
}
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Actions\Server;
use App\Enums\ActivityTypes;
use App\Models\Server;
use Lorisleiva\Actions\Concerns\AsAction;
class RunCommand
{
use AsAction;
public function handle(Server $server, $command)
{
$activity = remote_process(command: [$command], server: $server, ignore_errors: true, type: ActivityTypes::COMMAND->value);
return $activity;
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Actions\Server;
use App\Models\Server;
use Lorisleiva\Actions\Concerns\AsAction;
class StartSentinel
{
use AsAction;
public function handle(Server $server, $version = 'latest', bool $restart = false)
{
if ($restart) {
StopSentinel::run($server);
}
$metrics_history = $server->settings->metrics_history_days;
$refresh_rate = $server->settings->metrics_refresh_rate_seconds;
$token = $server->settings->metrics_token;
instant_remote_process([
"docker run --rm --pull always -d -e \"TOKEN={$token}\" -e \"SCHEDULER=true\" -e \"METRICS_HISTORY={$metrics_history}\" -e \"REFRESH_RATE={$refresh_rate}\" --name coolify-sentinel -v /var/run/docker.sock:/var/run/docker.sock -v /data/coolify/metrics:/app/metrics -v /data/coolify/logs:/app/logs --pid host --health-cmd \"curl --fail http://127.0.0.1:8888/api/health || exit 1\" --health-interval 10s --health-retries 3 ghcr.io/coollabsio/sentinel:$version",
'chown -R 9999:root /data/coolify/metrics /data/coolify/logs',
'chmod -R 700 /data/coolify/metrics /data/coolify/logs',
], $server, true);
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Actions\Server;
use App\Models\Server;
use Lorisleiva\Actions\Concerns\AsAction;
class StopLogDrain
{
use AsAction;
public function handle(Server $server)
{
try {
return instant_remote_process(['docker rm -f coolify-log-drain || true'], $server);
} catch (\Throwable $e) {
return handleError($e);
}
}
}

View File

@@ -0,0 +1,16 @@
<?php
namespace App\Actions\Server;
use App\Models\Server;
use Lorisleiva\Actions\Concerns\AsAction;
class StopSentinel
{
use AsAction;
public function handle(Server $server)
{
instant_remote_process(['docker rm -f coolify-sentinel'], $server, false);
}
}

View File

@@ -2,52 +2,46 @@
namespace App\Actions\Server;
use Lorisleiva\Actions\Concerns\AsAction;
use App\Models\InstanceSettings;
use App\Models\Server;
use Lorisleiva\Actions\Concerns\AsAction;
class UpdateCoolify
{
use AsAction;
public ?Server $server = null;
public ?string $latestVersion = null;
public ?string $currentVersion = null;
public function handle(bool $force)
public function handle($manual_update = false)
{
try {
$settings = InstanceSettings::get();
ray('Running InstanceAutoUpdateJob');
$this->server = Server::find(0)->first();
if (!$this->server) {
$this->server = Server::find(0);
if (! $this->server) {
return;
}
CleanupDocker::dispatch($this->server)->onQueue('high');
$this->latestVersion = get_latest_version_of_coolify();
$this->currentVersion = config('version');
ray('latest version:' . $this->latestVersion . " current version: " . $this->currentVersion . ' force: ' . $force);
if ($settings->next_channel) {
ray('next channel enabled');
$this->latestVersion = 'next';
}
if ($force) {
$this->update();
} else {
if (!$settings->is_auto_update_enabled) {
return 'Auto update is disabled';
if (! $manual_update) {
if (! $settings->is_auto_update_enabled) {
return;
}
if ($this->latestVersion === $this->currentVersion) {
return 'Already on latest version';
return;
}
if (version_compare($this->latestVersion, $this->currentVersion, '<')) {
return 'Latest version is lower than current version?!';
return;
}
$this->update();
}
send_internal_notification('InstanceAutoUpdateJob done to version: ' . $this->latestVersion . ' from version: ' . $this->currentVersion);
$this->update();
$settings->new_version_available = false;
$settings->save();
} catch (\Throwable $e) {
ray('InstanceAutoUpdateJob failed');
ray($e->getMessage());
send_internal_notification('InstanceAutoUpdateJob failed: ' . $e->getMessage());
throw $e;
}
}
@@ -55,19 +49,17 @@ class UpdateCoolify
private function update()
{
if (isDev()) {
ray("Running update on local docker container. Updating to $this->latestVersion");
remote_process([
"sleep 10"
], $this->server);
ray('Update done');
return;
} else {
ray('Running update on production server');
remote_process([
"curl -fsSL https://cdn.coollabs.io/coolify/upgrade.sh -o /data/coolify/source/upgrade.sh",
"bash /data/coolify/source/upgrade.sh $this->latestVersion"
'sleep 10',
], $this->server);
return;
}
instant_remote_process(["docker pull -q ghcr.io/coollabsio/coolify:{$this->latestVersion}"], $this->server, false);
remote_process([
'curl -fsSL https://cdn.coollabs.io/coolify/upgrade.sh -o /data/coolify/source/upgrade.sh',
"bash /data/coolify/source/upgrade.sh $this->latestVersion",
], $this->server);
}
}

View File

@@ -0,0 +1,67 @@
<?php
namespace App\Actions\Server;
use App\Models\Server;
use Lorisleiva\Actions\Concerns\AsAction;
class ValidateServer
{
use AsAction;
public ?string $uptime = null;
public ?string $error = null;
public ?string $supported_os_type = null;
public ?string $docker_installed = null;
public ?string $docker_compose_installed = null;
public ?string $docker_version = null;
public function handle(Server $server)
{
$server->update([
'validation_logs' => null,
]);
['uptime' => $this->uptime, 'error' => $error] = $server->validateConnection();
if (! $this->uptime) {
$this->error = 'Server is not reachable. Please validate your configuration and connection.<br>Check this <a target="_blank" class="text-black underline dark:text-white" href="https://coolify.io/docs/knowledge-base/server/openssh">documentation</a> for further help. <br><br><div class="text-error">Error: '.$error.'</div>';
$server->update([
'validation_logs' => $this->error,
]);
throw new \Exception($this->error);
}
$this->supported_os_type = $server->validateOS();
if (! $this->supported_os_type) {
$this->error = 'Server OS type is not supported. Please install Docker manually before continuing: <a target="_blank" class="text-black underline dark:text-white" href="https://docs.docker.com/engine/install/#server">documentation</a>.';
$server->update([
'validation_logs' => $this->error,
]);
throw new \Exception($this->error);
}
$this->docker_installed = $server->validateDockerEngine();
$this->docker_compose_installed = $server->validateDockerCompose();
if (! $this->docker_installed || ! $this->docker_compose_installed) {
$this->error = 'Docker Engine is not installed. Please install Docker manually before continuing: <a target="_blank" class="text-black underline dark:text-white" href="https://docs.docker.com/engine/install/#server">documentation</a>.';
$server->update([
'validation_logs' => $this->error,
]);
throw new \Exception($this->error);
}
$this->docker_version = $server->validateDockerEngineVersion();
if ($this->docker_version) {
return 'OK';
} else {
$this->error = 'Docker Engine is not installed. Please install Docker manually before continuing: <a target="_blank" class="text-black underline dark:text-white" href="https://docs.docker.com/engine/install/#server">documentation</a>.';
$server->update([
'validation_logs' => $this->error,
]);
throw new \Exception($this->error);
}
}
}

View File

@@ -0,0 +1,55 @@
<?php
namespace App\Actions\Service;
use App\Models\Service;
use Lorisleiva\Actions\Concerns\AsAction;
class DeleteService
{
use AsAction;
public function handle(Service $service)
{
try {
$server = data_get($service, 'server');
if ($server->isFunctional()) {
$storagesToDelete = collect([]);
$service->environment_variables()->delete();
$commands = [];
foreach ($service->applications()->get() as $application) {
$storages = $application->persistentStorages()->get();
foreach ($storages as $storage) {
$storagesToDelete->push($storage);
}
}
foreach ($service->databases()->get() as $database) {
$storages = $database->persistentStorages()->get();
foreach ($storages as $storage) {
$storagesToDelete->push($storage);
}
}
foreach ($storagesToDelete as $storage) {
$commands[] = "docker volume rm -f $storage->name";
}
$commands[] = "docker rm -f $service->uuid";
instant_remote_process($commands, $server, false);
}
} catch (\Exception $e) {
throw new \Exception($e->getMessage());
} finally {
foreach ($service->applications()->get() as $application) {
$application->forceDelete();
}
foreach ($service->databases()->get() as $database) {
$database->forceDelete();
}
foreach ($service->scheduled_tasks as $task) {
$task->delete();
}
$service->tags()->detach();
}
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Actions\Service;
use App\Models\Service;
use Lorisleiva\Actions\Concerns\AsAction;
class RestartService
{
use AsAction;
public function handle(Service $service)
{
StopService::run($service);
return StartService::run($service);
}
}

View File

@@ -2,33 +2,40 @@
namespace App\Actions\Service;
use Lorisleiva\Actions\Concerns\AsAction;
use App\Models\Service;
use Lorisleiva\Actions\Concerns\AsAction;
use Symfony\Component\Yaml\Yaml;
class StartService
{
use AsAction;
public function handle(Service $service)
{
$network = $service->destination->network;
ray('Starting service: '.$service->name);
$service->saveComposeConfigs();
$commands[] = "cd " . $service->workdir();
$commands[] = "echo '####### Saved configuration files to {$service->workdir()}.'";
$commands[] = "echo '####### Creating Docker network.'";
$commands[] = "docker network create --attachable '{$service->uuid}' >/dev/null || true";
$commands[] = "echo '####### Starting service {$service->name} on {$service->server->name}.'";
$commands[] = "echo '####### Pulling images.'";
$commands[] = "docker compose pull";
$commands[] = "echo '####### Starting containers.'";
$commands[] = "docker compose up -d --remove-orphans --force-recreate";
$commands[] = "docker network connect $service->uuid coolify-proxy || true";
$compose = data_get($service,'docker_compose',[]);
$serviceNames = data_get(Yaml::parse($compose),'services',[]);
foreach($serviceNames as $serviceName => $serviceConfig){
$commands[] = "docker network connect --alias {$serviceName}-{$service->uuid} $network {$serviceName}-{$service->uuid} || true";
$commands[] = 'cd '.$service->workdir();
$commands[] = "echo 'Saved configuration files to {$service->workdir()}.'";
if($service->networks()->count() > 0){
$commands[] = "echo 'Creating Docker network.'";
$commands[] = "docker network inspect $service->uuid >/dev/null 2>&1 || docker network create --attachable $service->uuid";
}
$activity = remote_process($commands, $service->server);
$commands[] = 'echo Starting service.';
$commands[] = "echo 'Pulling images.'";
$commands[] = 'docker compose pull';
$commands[] = "echo 'Starting containers.'";
$commands[] = 'docker compose up -d --remove-orphans --force-recreate --build';
$commands[] = "docker network connect $service->uuid coolify-proxy >/dev/null 2>&1 || true";
if (data_get($service, 'connect_to_docker_network')) {
$compose = data_get($service, 'docker_compose', []);
$network = $service->destination->network;
$serviceNames = data_get(Yaml::parse($compose), 'services', []);
foreach ($serviceNames as $serviceName => $serviceConfig) {
$commands[] = "docker network connect --alias {$serviceName}-{$service->uuid} $network {$serviceName}-{$service->uuid} || true";
}
}
$activity = remote_process($commands, $service->server, type_uuid: $service->uuid, callEventOnFinish: 'ServiceStatusChanged');
return $activity;
}
}

View File

@@ -2,27 +2,47 @@
namespace App\Actions\Service;
use Lorisleiva\Actions\Concerns\AsAction;
use App\Models\Service;
use Lorisleiva\Actions\Concerns\AsAction;
class StopService
{
use AsAction;
public function handle(Service $service)
{
$applications = $service->applications()->get();
foreach ($applications as $application) {
instant_remote_process(["docker rm -f {$application->name}-{$service->uuid}"], $service->server);
$application->update(['status' => 'exited']);
try {
$server = $service->destination->server;
if (! $server->isFunctional()) {
return 'Server is not functional';
}
ray('Stopping service: '.$service->name);
$applications = $service->applications()->get();
foreach ($applications as $application) {
if ($applications->count() < 6) {
instant_remote_process(command: ["docker stop --time=10 {$application->name}-{$service->uuid}"], server: $server, throwError: false);
}
instant_remote_process(command: ["docker rm {$application->name}-{$service->uuid}"], server: $server, throwError: false);
instant_remote_process(command: ["docker rm -f {$application->name}-{$service->uuid}"], server: $server, throwError: false);
$application->update(['status' => 'exited']);
}
$dbs = $service->databases()->get();
foreach ($dbs as $db) {
if ($dbs->count() < 6) {
instant_remote_process(command: ["docker stop --time=10 {$db->name}-{$service->uuid}"], server: $server, throwError: false);
}
instant_remote_process(command: ["docker rm {$db->name}-{$service->uuid}"], server: $server, throwError: false);
instant_remote_process(command: ["docker rm -f {$db->name}-{$service->uuid}"], server: $server, throwError: false);
$db->update(['status' => 'exited']);
}
instant_remote_process(["docker network disconnect {$service->uuid} coolify-proxy"], $service->server);
instant_remote_process(["docker network rm {$service->uuid}"], $service->server);
} catch (\Exception $e) {
ray($e->getMessage());
return $e->getMessage();
}
$dbs = $service->databases()->get();
foreach ($dbs as $db) {
instant_remote_process(["docker rm -f {$db->name}-{$service->uuid}"], $service->server);
$db->update(['status' => 'exited']);
}
instant_remote_process(["docker network disconnect {$service->uuid} coolify-proxy 2>/dev/null"], $service->server, false);
instant_remote_process(["docker network rm {$service->uuid} 2>/dev/null"], $service->server, false);
// TODO: make notification for databases
// $service->environment->project->team->notify(new StatusChanged($service));
}
}

View File

@@ -0,0 +1,60 @@
<?php
namespace App\Actions\Shared;
use App\Models\Application;
use Lorisleiva\Actions\Concerns\AsAction;
class ComplexStatusCheck
{
use AsAction;
public function handle(Application $application)
{
$servers = $application->additional_servers;
$servers->push($application->destination->server);
foreach ($servers as $server) {
$is_main_server = $application->destination->server->id === $server->id;
if (! $server->isFunctional()) {
if ($is_main_server) {
$application->update(['status' => 'exited:unhealthy']);
continue;
} else {
$application->additional_servers()->updateExistingPivot($server->id, ['status' => 'exited:unhealthy']);
continue;
}
}
$container = instant_remote_process(["docker container inspect $(docker container ls -q --filter 'label=coolify.applicationId={$application->id}' --filter 'label=coolify.pullRequestId=0') --format '{{json .}}'"], $server, false);
$container = format_docker_command_output_to_json($container);
if ($container->count() === 1) {
$container = $container->first();
$containerStatus = data_get($container, 'State.Status');
$containerHealth = data_get($container, 'State.Health.Status', 'unhealthy');
if ($is_main_server) {
$statusFromDb = $application->status;
if ($statusFromDb !== $containerStatus) {
$application->update(['status' => "$containerStatus:$containerHealth"]);
}
} else {
$additional_server = $application->additional_servers()->wherePivot('server_id', $server->id);
$statusFromDb = $additional_server->first()->pivot->status;
if ($statusFromDb !== $containerStatus) {
$additional_server->updateExistingPivot($server->id, ['status' => "$containerStatus:$containerHealth"]);
}
}
} else {
if ($is_main_server) {
$application->update(['status' => 'exited:unhealthy']);
continue;
} else {
$application->additional_servers()->updateExistingPivot($server->id, ['status' => 'exited:unhealthy']);
continue;
}
}
}
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Actions\Shared;
use App\Models\Service;
use Lorisleiva\Actions\Concerns\AsAction;
class PullImage
{
use AsAction;
public function handle(Service $resource)
{
$resource->saveComposeConfigs();
$commands[] = 'cd '.$resource->workdir();
$commands[] = "echo 'Saved configuration files to {$resource->workdir()}.'";
$commands[] = 'docker compose pull';
$server = data_get($resource, 'server');
if (! $server) {
return;
}
instant_remote_process($commands, $resource->server);
}
}

View File

@@ -0,0 +1,56 @@
<?php
namespace App\Console\Commands;
use App\Models\User;
use Illuminate\Console\Command;
class AdminRemoveUser extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'admin:remove-user {email}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Remove User from database';
/**
* Execute the console command.
*/
public function handle()
{
try {
$email = $this->argument('email');
$confirm = $this->confirm('Are you sure you want to remove user with email: '.$email.'?');
if (! $confirm) {
$this->info('User removal cancelled.');
return;
}
$this->info("Removing user with email: $email");
$user = User::whereEmail($email)->firstOrFail();
$teams = $user->teams;
foreach ($teams as $team) {
if ($team->members->count() > 1) {
$this->error('User is a member of a team with more than one member. Please remove user from team first.');
return;
}
$team->delete();
}
$user->delete();
} catch (\Exception $e) {
$this->error('Failed to remove user.');
$this->error($e->getMessage());
return;
}
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Console\Commands;
use App\Models\ApplicationDeploymentQueue;
use Illuminate\Console\Command;
class CleanupApplicationDeploymentQueue extends Command
{
protected $signature = 'cleanup:application-deployment-queue {--team-id=}';
protected $description = 'CleanupApplicationDeploymentQueue';
public function handle()
{
$team_id = $this->option('team-id');
$servers = \App\Models\Server::where('team_id', $team_id)->get();
foreach ($servers as $server) {
$deployments = ApplicationDeploymentQueue::whereIn('status', ['in_progress', 'queued'])->where('server_id', $server->id)->get();
foreach ($deployments as $deployment) {
$deployment->update(['status' => 'failed']);
instant_remote_process(['docker rm -f '.$deployment->deployment_uuid], $server, false);
}
}
}
}

View File

@@ -0,0 +1,69 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class CleanupDatabase extends Command
{
protected $signature = 'cleanup:database {--yes}';
protected $description = 'Cleanup database';
public function handle()
{
if ($this->option('yes')) {
echo "Running database cleanup...\n";
} else {
echo "Running database cleanup in dry-run mode...\n";
}
if (isCloud()) {
// Later on we can increase this to 180 days or dynamically set
$keep_days = 60;
} else {
$keep_days = 60;
}
echo "Keep days: $keep_days\n";
// Cleanup failed jobs table
$failed_jobs = DB::table('failed_jobs')->where('failed_at', '<', now()->subDays(1));
$count = $failed_jobs->count();
echo "Delete $count entries from failed_jobs.\n";
if ($this->option('yes')) {
$failed_jobs->delete();
}
// Cleanup sessions table
$sessions = DB::table('sessions')->where('last_activity', '<', now()->subDays($keep_days)->timestamp);
$count = $sessions->count();
echo "Delete $count entries from sessions.\n";
if ($this->option('yes')) {
$sessions->delete();
}
// Cleanup activity_log table
$activity_log = DB::table('activity_log')->where('created_at', '<', now()->subDays($keep_days))->orderBy('created_at', 'desc')->skip(10);
$count = $activity_log->count();
echo "Delete $count entries from activity_log.\n";
if ($this->option('yes')) {
$activity_log->delete();
}
// Cleanup application_deployment_queues table
$application_deployment_queues = DB::table('application_deployment_queues')->where('created_at', '<', now()->subDays($keep_days))->orderBy('created_at', 'desc')->skip(10);
$count = $application_deployment_queues->count();
echo "Delete $count entries from application_deployment_queues.\n";
if ($this->option('yes')) {
$application_deployment_queues->delete();
}
// Cleanup webhooks table
$webhooks = DB::table('webhooks')->where('created_at', '<', now()->subDays($keep_days));
$count = $webhooks->count();
echo "Delete $count entries from webhooks.\n";
if ($this->option('yes')) {
$webhooks->delete();
}
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis;
class CleanupQueue extends Command
{
protected $signature = 'cleanup:queue';
protected $description = 'Cleanup Queue';
public function handle()
{
echo "Running queue cleanup...\n";
$prefix = config('database.redis.options.prefix');
$keys = Redis::connection()->keys('*:laravel*');
foreach ($keys as $key) {
$keyWithoutPrefix = str_replace($prefix, '', $key);
Redis::connection()->del($keyWithoutPrefix);
}
}
}

View File

@@ -0,0 +1,388 @@
<?php
namespace App\Console\Commands;
use App\Models\Application;
use App\Models\ApplicationPreview;
use App\Models\ScheduledDatabaseBackup;
use App\Models\ScheduledTask;
use App\Models\Service;
use App\Models\ServiceApplication;
use App\Models\ServiceDatabase;
use App\Models\StandaloneClickhouse;
use App\Models\StandaloneDragonfly;
use App\Models\StandaloneKeydb;
use App\Models\StandaloneMariadb;
use App\Models\StandaloneMongodb;
use App\Models\StandaloneMysql;
use App\Models\StandalonePostgresql;
use App\Models\StandaloneRedis;
use Illuminate\Console\Command;
class CleanupStuckedResources extends Command
{
protected $signature = 'cleanup:stucked-resources';
protected $description = 'Cleanup Stucked Resources';
public function handle()
{
ray('Running cleanup stucked resources.');
echo "Running cleanup stucked resources.\n";
$this->cleanup_stucked_resources();
}
private function cleanup_stucked_resources()
{
try {
$applications = Application::withTrashed()->whereNotNull('deleted_at')->get();
foreach ($applications as $application) {
echo "Deleting stuck application: {$application->name}\n";
$application->forceDelete();
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck application: {$e->getMessage()}\n";
}
try {
$applicationsPreviews = ApplicationPreview::get();
foreach ($applicationsPreviews as $applicationPreview) {
if (! data_get($applicationPreview, 'application')) {
echo "Deleting stuck application preview: {$applicationPreview->uuid}\n";
$applicationPreview->delete();
}
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck application: {$e->getMessage()}\n";
}
try {
$postgresqls = StandalonePostgresql::withTrashed()->whereNotNull('deleted_at')->get();
foreach ($postgresqls as $postgresql) {
echo "Deleting stuck postgresql: {$postgresql->name}\n";
$postgresql->forceDelete();
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck postgresql: {$e->getMessage()}\n";
}
try {
$redis = StandaloneRedis::withTrashed()->whereNotNull('deleted_at')->get();
foreach ($redis as $redis) {
echo "Deleting stuck redis: {$redis->name}\n";
$redis->forceDelete();
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck redis: {$e->getMessage()}\n";
}
try {
$keydbs = StandaloneKeydb::withTrashed()->whereNotNull('deleted_at')->get();
foreach ($keydbs as $keydb) {
echo "Deleting stuck keydb: {$keydb->name}\n";
$keydb->forceDelete();
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck keydb: {$e->getMessage()}\n";
}
try {
$dragonflies = StandaloneDragonfly::withTrashed()->whereNotNull('deleted_at')->get();
foreach ($dragonflies as $dragonfly) {
echo "Deleting stuck dragonfly: {$dragonfly->name}\n";
$dragonfly->forceDelete();
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck dragonfly: {$e->getMessage()}\n";
}
try {
$clickhouses = StandaloneClickhouse::withTrashed()->whereNotNull('deleted_at')->get();
foreach ($clickhouses as $clickhouse) {
echo "Deleting stuck clickhouse: {$clickhouse->name}\n";
$clickhouse->forceDelete();
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck clickhouse: {$e->getMessage()}\n";
}
try {
$mongodbs = StandaloneMongodb::withTrashed()->whereNotNull('deleted_at')->get();
foreach ($mongodbs as $mongodb) {
echo "Deleting stuck mongodb: {$mongodb->name}\n";
$mongodb->forceDelete();
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck mongodb: {$e->getMessage()}\n";
}
try {
$mysqls = StandaloneMysql::withTrashed()->whereNotNull('deleted_at')->get();
foreach ($mysqls as $mysql) {
echo "Deleting stuck mysql: {$mysql->name}\n";
$mysql->forceDelete();
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck mysql: {$e->getMessage()}\n";
}
try {
$mariadbs = StandaloneMariadb::withTrashed()->whereNotNull('deleted_at')->get();
foreach ($mariadbs as $mariadb) {
echo "Deleting stuck mariadb: {$mariadb->name}\n";
$mariadb->forceDelete();
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck mariadb: {$e->getMessage()}\n";
}
try {
$services = Service::withTrashed()->whereNotNull('deleted_at')->get();
foreach ($services as $service) {
echo "Deleting stuck service: {$service->name}\n";
$service->forceDelete();
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck service: {$e->getMessage()}\n";
}
try {
$serviceApps = ServiceApplication::withTrashed()->whereNotNull('deleted_at')->get();
foreach ($serviceApps as $serviceApp) {
echo "Deleting stuck serviceapp: {$serviceApp->name}\n";
$serviceApp->forceDelete();
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck serviceapp: {$e->getMessage()}\n";
}
try {
$serviceDbs = ServiceDatabase::withTrashed()->whereNotNull('deleted_at')->get();
foreach ($serviceDbs as $serviceDb) {
echo "Deleting stuck serviceapp: {$serviceDb->name}\n";
$serviceDb->forceDelete();
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck serviceapp: {$e->getMessage()}\n";
}
try {
$scheduled_tasks = ScheduledTask::all();
foreach ($scheduled_tasks as $scheduled_task) {
if (! $scheduled_task->service && ! $scheduled_task->application) {
echo "Deleting stuck scheduledtask: {$scheduled_task->name}\n";
$scheduled_task->delete();
}
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck scheduledtasks: {$e->getMessage()}\n";
}
try {
$scheduled_backups = ScheduledDatabaseBackup::all();
foreach ($scheduled_backups as $scheduled_backup) {
if (! $scheduled_backup->server()) {
echo "Deleting stuck scheduledbackup: {$scheduled_backup->name}\n";
$scheduled_backup->delete();
}
}
} catch (\Throwable $e) {
echo "Error in cleaning stuck scheduledbackups: {$e->getMessage()}\n";
}
// Cleanup any resources that are not attached to any environment or destination or server
try {
$applications = Application::all();
foreach ($applications as $application) {
if (! data_get($application, 'environment')) {
echo 'Application without environment: '.$application->name.'\n';
$application->forceDelete();
continue;
}
if (! $application->destination()) {
echo 'Application without destination: '.$application->name.'\n';
$application->forceDelete();
continue;
}
if (! data_get($application, 'destination.server')) {
echo 'Application without server: '.$application->name.'\n';
$application->forceDelete();
continue;
}
}
} catch (\Throwable $e) {
echo "Error in application: {$e->getMessage()}\n";
}
try {
$postgresqls = StandalonePostgresql::all()->where('id', '!=', 0);
foreach ($postgresqls as $postgresql) {
if (! data_get($postgresql, 'environment')) {
echo 'Postgresql without environment: '.$postgresql->name.'\n';
$postgresql->forceDelete();
continue;
}
if (! $postgresql->destination()) {
echo 'Postgresql without destination: '.$postgresql->name.'\n';
$postgresql->forceDelete();
continue;
}
if (! data_get($postgresql, 'destination.server')) {
echo 'Postgresql without server: '.$postgresql->name.'\n';
$postgresql->forceDelete();
continue;
}
}
} catch (\Throwable $e) {
echo "Error in postgresql: {$e->getMessage()}\n";
}
try {
$redis = StandaloneRedis::all();
foreach ($redis as $redis) {
if (! data_get($redis, 'environment')) {
echo 'Redis without environment: '.$redis->name.'\n';
$redis->forceDelete();
continue;
}
if (! $redis->destination()) {
echo 'Redis without destination: '.$redis->name.'\n';
$redis->forceDelete();
continue;
}
if (! data_get($redis, 'destination.server')) {
echo 'Redis without server: '.$redis->name.'\n';
$redis->forceDelete();
continue;
}
}
} catch (\Throwable $e) {
echo "Error in redis: {$e->getMessage()}\n";
}
try {
$mongodbs = StandaloneMongodb::all();
foreach ($mongodbs as $mongodb) {
if (! data_get($mongodb, 'environment')) {
echo 'Mongodb without environment: '.$mongodb->name.'\n';
$mongodb->forceDelete();
continue;
}
if (! $mongodb->destination()) {
echo 'Mongodb without destination: '.$mongodb->name.'\n';
$mongodb->forceDelete();
continue;
}
if (! data_get($mongodb, 'destination.server')) {
echo 'Mongodb without server: '.$mongodb->name.'\n';
$mongodb->forceDelete();
continue;
}
}
} catch (\Throwable $e) {
echo "Error in mongodb: {$e->getMessage()}\n";
}
try {
$mysqls = StandaloneMysql::all();
foreach ($mysqls as $mysql) {
if (! data_get($mysql, 'environment')) {
echo 'Mysql without environment: '.$mysql->name.'\n';
$mysql->forceDelete();
continue;
}
if (! $mysql->destination()) {
echo 'Mysql without destination: '.$mysql->name.'\n';
$mysql->forceDelete();
continue;
}
if (! data_get($mysql, 'destination.server')) {
echo 'Mysql without server: '.$mysql->name.'\n';
$mysql->forceDelete();
continue;
}
}
} catch (\Throwable $e) {
echo "Error in mysql: {$e->getMessage()}\n";
}
try {
$mariadbs = StandaloneMariadb::all();
foreach ($mariadbs as $mariadb) {
if (! data_get($mariadb, 'environment')) {
echo 'Mariadb without environment: '.$mariadb->name.'\n';
$mariadb->forceDelete();
continue;
}
if (! $mariadb->destination()) {
echo 'Mariadb without destination: '.$mariadb->name.'\n';
$mariadb->forceDelete();
continue;
}
if (! data_get($mariadb, 'destination.server')) {
echo 'Mariadb without server: '.$mariadb->name.'\n';
$mariadb->forceDelete();
continue;
}
}
} catch (\Throwable $e) {
echo "Error in mariadb: {$e->getMessage()}\n";
}
try {
$services = Service::all();
foreach ($services as $service) {
if (! data_get($service, 'environment')) {
echo 'Service without environment: '.$service->name.'\n';
$service->forceDelete();
continue;
}
if (! $service->destination()) {
echo 'Service without destination: '.$service->name.'\n';
$service->forceDelete();
continue;
}
if (! data_get($service, 'server')) {
echo 'Service without server: '.$service->name.'\n';
$service->forceDelete();
continue;
}
}
} catch (\Throwable $e) {
echo "Error in service: {$e->getMessage()}\n";
}
try {
$serviceApplications = ServiceApplication::all();
foreach ($serviceApplications as $service) {
if (! data_get($service, 'service')) {
echo 'ServiceApplication without service: '.$service->name.'\n';
$service->forceDelete();
continue;
}
}
} catch (\Throwable $e) {
echo "Error in serviceApplications: {$e->getMessage()}\n";
}
try {
$serviceDatabases = ServiceDatabase::all();
foreach ($serviceDatabases as $service) {
if (! data_get($service, 'service')) {
echo 'ServiceDatabase without service: '.$service->name.'\n';
$service->forceDelete();
continue;
}
}
} catch (\Throwable $e) {
echo "Error in ServiceDatabases: {$e->getMessage()}\n";
}
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Console\Commands;
use App\Models\Server;
use Illuminate\Console\Command;
class CleanupUnreachableServers extends Command
{
protected $signature = 'cleanup:unreachable-servers';
protected $description = 'Cleanup Unreachable Servers (7 days)';
public function handle()
{
echo "Running unreachable server cleanup...\n";
$servers = Server::where('unreachable_count', 3)->where('unreachable_notification_sent', true)->where('updated_at', '<', now()->subDays(7))->get();
if ($servers->count() > 0) {
foreach ($servers as $server) {
echo "Cleanup unreachable server ($server->id) with name $server->name";
// send_internal_notification("Server $server->name is unreachable for 7 days. Cleaning up...");
$server->update([
'ip' => '1.2.3.4',
]);
}
}
}
}

View File

@@ -1,33 +0,0 @@
<?php
namespace App\Console\Commands;
use App\Models\Server;
use Illuminate\Console\Command;
class Cloud extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'cloud:unused-servers';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Get Unused Servers from Cloud';
/**
* Execute the console command.
*/
public function handle()
{
Server::all()->whereNotNull('team.subscription')->where('team.subscription.stripe_trial_already_ended',true)->each(function($server){
$this->info($server->name);
});
}
}

View File

@@ -0,0 +1,101 @@
<?php
namespace App\Console\Commands;
use App\Models\Team;
use Illuminate\Console\Command;
class CloudCleanupSubscriptions extends Command
{
protected $signature = 'cloud:cleanup-subs';
protected $description = 'Cleanup subcriptions teams';
public function handle()
{
try {
if (! isCloud()) {
$this->error('This command can only be run on cloud');
return;
}
ray()->clearAll();
$this->info('Cleaning up subcriptions teams');
$stripe = new \Stripe\StripeClient(config('subscription.stripe_api_key'));
$teams = Team::all()->filter(function ($team) {
return $team->id !== 0;
})->sortBy('id');
foreach ($teams as $team) {
if ($team) {
$this->info("Checking team {$team->id}");
}
if (! data_get($team, 'subscription')) {
$this->disableServers($team);
continue;
}
// If the team has no subscription id and the invoice is paid, we need to reset the invoice paid status
if (! (data_get($team, 'subscription.stripe_subscription_id'))) {
$this->info("Resetting invoice paid status for team {$team->id} {$team->name}");
$team->subscription->update([
'stripe_invoice_paid' => false,
'stripe_trial_already_ended' => false,
'stripe_subscription_id' => null,
]);
$this->disableServers($team);
continue;
} else {
$subscription = $stripe->subscriptions->retrieve(data_get($team, 'subscription.stripe_subscription_id'), []);
$status = data_get($subscription, 'status');
if ($status === 'active' || $status === 'past_due') {
$team->subscription->update([
'stripe_invoice_paid' => true,
'stripe_trial_already_ended' => false,
]);
continue;
}
$this->info('Subscription status: '.$status);
$this->info('Subscription id: '.data_get($team, 'subscription.stripe_subscription_id'));
$confirm = $this->confirm('Do you want to cancel the subscription?', true);
if (! $confirm) {
$this->info("Skipping team {$team->id} {$team->name}");
} else {
$this->info("Cancelling subscription for team {$team->id} {$team->name}");
$team->subscription->update([
'stripe_invoice_paid' => false,
'stripe_trial_already_ended' => false,
'stripe_subscription_id' => null,
]);
$this->disableServers($team);
}
}
}
} catch (\Exception $e) {
$this->error($e->getMessage());
return;
}
}
private function disableServers(Team $team)
{
foreach ($team->servers as $server) {
if ($server->settings->is_usable === true || $server->settings->is_reachable === true || $server->ip !== '1.2.3.4') {
$this->info("Disabling server {$server->id} {$server->name}");
$server->settings()->update([
'is_usable' => false,
'is_reachable' => false,
]);
$server->update([
'ip' => '1.2.3.4',
]);
}
}
}
}

View File

@@ -0,0 +1,62 @@
<?php
namespace App\Console\Commands;
use App\Models\InstanceSettings;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Process;
class Dev extends Command
{
protected $signature = 'dev {--init} {--generate-openapi}';
protected $description = 'Helper commands for development.';
public function handle()
{
if ($this->option('init')) {
$this->init();
return;
}
if ($this->option('generate-openapi')) {
$this->generateOpenApi();
return;
}
}
public function generateOpenApi()
{
// Generate OpenAPI documentation
echo "Generating OpenAPI documentation.\n";
$process = Process::run(['/var/www/html/vendor/bin/openapi', 'app', '-o', 'openapi.yaml']);
$error = $process->errorOutput();
$error = preg_replace('/^.*an object literal,.*$/m', '', $error);
$error = preg_replace('/^\h*\v+/m', '', $error);
echo $error;
echo $process->output();
}
public function init()
{
// Generate APP_KEY if not exists
if (empty(env('APP_KEY'))) {
echo "Generating APP_KEY.\n";
Artisan::call('key:generate');
}
// Seed database if it's empty
$settings = InstanceSettings::find(0);
if (! $settings) {
echo "Initializing instance, seeding database.\n";
Artisan::call('migrate --seed');
} else {
echo "Instance already initialized.\n";
}
// Set permissions
Process::run(['chmod', '-R', 'o+rwx', '.']);
}
}

View File

@@ -9,22 +9,19 @@ use App\Models\ScheduledDatabaseBackup;
use App\Models\Server;
use App\Models\StandalonePostgresql;
use App\Models\Team;
use App\Models\TeamInvitation;
use App\Models\User;
use App\Models\Waitlist;
use App\Notifications\Application\DeploymentFailed;
use App\Notifications\Application\DeploymentSuccess;
use App\Notifications\Application\StatusChanged;
use App\Notifications\Database\BackupFailed;
use App\Notifications\Database\BackupSuccess;
use App\Notifications\Database\DailyBackup;
use App\Notifications\Test;
use App\Notifications\TransactionalEmails\InvitationLink;
use Exception;
use Illuminate\Console\Command;
use Illuminate\Mail\Message;
use Illuminate\Notifications\Messages\MailMessage;
use Mail;
use Illuminate\Support\Str;
use function Laravel\Prompts\confirm;
use function Laravel\Prompts\select;
@@ -50,7 +47,9 @@ class Emails extends Command
* Execute the console command.
*/
private ?MailMessage $mail = null;
private ?string $email = null;
public function handle()
{
$type = select(
@@ -58,6 +57,8 @@ class Emails extends Command
options: [
'updates' => 'Send Update Email to all users',
'emails-test' => 'Test',
'database-backup-statuses-daily' => 'Database - Backup Statuses (Daily)',
'application-deployment-success-daily' => 'Application - Deployment Success (Daily)',
'application-deployment-success' => 'Application - Deployment Success',
'application-deployment-failed' => 'Application - Deployment Failed',
'application-status-changed' => 'Application - Status Changed',
@@ -71,18 +72,23 @@ class Emails extends Command
],
);
$emailsGathered = ['realusers-before-trial', 'realusers-server-lost-connection'];
if (!in_array($type, $emailsGathered)) {
$this->email = text('Email Address to send to');
if (isDev()) {
$this->email = 'test@example.com';
} else {
if (! in_array($type, $emailsGathered)) {
$this->email = text('Email Address to send to:');
}
}
set_transanctional_email_settings();
$this->mail = new MailMessage();
$this->mail->subject("Test Email");
$this->mail = new MailMessage;
$this->mail->subject('Test Email');
switch ($type) {
case 'updates':
$teams = Team::all();
if (!$teams || $teams->isEmpty()) {
echo 'No teams found.' . PHP_EOL;
if (! $teams || $teams->isEmpty()) {
echo 'No teams found.'.PHP_EOL;
return;
}
$emails = [];
@@ -94,27 +100,56 @@ class Emails extends Command
}
}
$emails = array_unique($emails);
$this->info("Sending to " . count($emails) . " emails.");
$this->info('Sending to '.count($emails).' emails.');
foreach ($emails as $email) {
$this->info($email);
}
$confirmed = confirm('Are you sure?');
if ($confirmed) {
foreach ($emails as $email) {
$this->mail = new MailMessage();
$this->mail = new MailMessage;
$this->mail->subject('One-click Services, Docker Compose support');
$unsubscribeUrl = route('unsubscribe.marketing.emails', [
'token' => encrypt($email),
]);
$this->mail->view('emails.updates',["unsubscribeUrl" => $unsubscribeUrl]);
$this->mail->view('emails.updates', ['unsubscribeUrl' => $unsubscribeUrl]);
$this->sendEmail($email);
}
}
break;
case 'emails-test':
$this->mail = (new Test())->toMail();
$this->mail = (new Test)->toMail();
$this->sendEmail();
break;
case 'database-backup-statuses-daily':
$scheduled_backups = ScheduledDatabaseBackup::all();
$databases = collect();
foreach ($scheduled_backups as $scheduled_backup) {
$last_days_backups = $scheduled_backup->get_last_days_backup_status();
if ($last_days_backups->isEmpty()) {
continue;
}
$failed = $last_days_backups->where('status', 'failed');
$database = $scheduled_backup->database;
$databases->put($database->name, [
'failed_count' => $failed->count(),
]);
}
$this->mail = (new DailyBackup($databases))->toMail();
$this->sendEmail();
break;
case 'application-deployment-success-daily':
$applications = Application::all();
foreach ($applications as $application) {
$deployments = $application->get_last_days_deployments();
ray($deployments);
if ($deployments->isEmpty()) {
continue;
}
$this->mail = (new DeploymentSuccess($application, 'test'))->toMail();
$this->sendEmail();
}
break;
case 'application-deployment-success':
$application = Application::all()->first();
$this->mail = (new DeploymentSuccess($application, 'test'))->toMail();
@@ -123,7 +158,7 @@ class Emails extends Command
case 'application-deployment-failed':
$application = Application::all()->first();
$preview = ApplicationPreview::all()->first();
if (!$preview) {
if (! $preview) {
$preview = ApplicationPreview::create([
'application_id' => $application->id,
'pull_request_id' => 1,
@@ -144,7 +179,7 @@ class Emails extends Command
case 'backup-failed':
$backup = ScheduledDatabaseBackup::all()->first();
$db = StandalonePostgresql::all()->first();
if (!$backup) {
if (! $backup) {
$backup = ScheduledDatabaseBackup::create([
'enabled' => true,
'frequency' => 'daily',
@@ -154,14 +189,14 @@ class Emails extends Command
'team_id' => 0,
]);
}
$output = 'Because of an error, the backup of the database ' . $db->name . ' failed.';
$output = 'Because of an error, the backup of the database '.$db->name.' failed.';
$this->mail = (new BackupFailed($backup, $db, $output))->toMail();
$this->sendEmail();
break;
case 'backup-success':
$backup = ScheduledDatabaseBackup::all()->first();
$db = StandalonePostgresql::all()->first();
if (!$backup) {
if (! $backup) {
$backup = ScheduledDatabaseBackup::create([
'enabled' => true,
'frequency' => 'daily',
@@ -189,7 +224,7 @@ class Emails extends Command
// $this->sendEmail();
// break;
case 'waitlist-invitation-link':
$this->mail = new MailMessage();
$this->mail = new MailMessage;
$this->mail->view('emails.waitlist-invitation', [
'loginLink' => 'https://coolify.io',
]);
@@ -206,12 +241,13 @@ class Emails extends Command
break;
case 'realusers-before-trial':
$this->mail = new MailMessage();
$this->mail = new MailMessage;
$this->mail->view('emails.before-trial-conversion');
$this->mail->subject('Trial period has been added for all subscription plans.');
$teams = Team::doesntHave('subscription')->where('id', '!=', 0)->get();
if (!$teams || $teams->isEmpty()) {
echo 'No teams found.' . PHP_EOL;
if (! $teams || $teams->isEmpty()) {
echo 'No teams found.'.PHP_EOL;
return;
}
$emails = [];
@@ -223,7 +259,7 @@ class Emails extends Command
}
}
$emails = array_unique($emails);
$this->info("Sending to " . count($emails) . " emails.");
$this->info('Sending to '.count($emails).' emails.');
foreach ($emails as $email) {
$this->info($email);
}
@@ -237,7 +273,7 @@ class Emails extends Command
case 'realusers-server-lost-connection':
$serverId = text('Server Id');
$server = Server::find($serverId);
if (!$server) {
if (! $server) {
throw new Exception('Server not found');
}
$admins = [];
@@ -247,22 +283,23 @@ class Emails extends Command
$admins[] = $member->email;
}
}
$this->info('Sending to ' . count($admins) . ' admins.');
$this->info('Sending to '.count($admins).' admins.');
foreach ($admins as $admin) {
$this->info($admin);
}
$this->mail = new MailMessage();
$this->mail = new MailMessage;
$this->mail->view('emails.server-lost-connection', [
'name' => $server->name,
]);
$this->mail->subject('Action required: Server ' . $server->name . ' lost connection.');
$this->mail->subject('Action required: Server '.$server->name.' lost connection.');
foreach ($admins as $email) {
$this->sendEmail($email);
}
break;
}
}
private function sendEmail(string $email = null)
private function sendEmail(?string $email = null)
{
if ($email) {
$this->email = $email;
@@ -273,7 +310,7 @@ class Emails extends Command
fn (Message $message) => $message
->to($this->email)
->subject($this->mail->subject)
->html((string)$this->mail->render())
->html((string) $this->mail->render())
);
$this->info("Email sent to $this->email successfully. 📧");
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class Horizon extends Command
{
protected $signature = 'start:horizon';
protected $description = 'Start Horizon';
public function handle()
{
if (config('coolify.is_horizon_enabled')) {
$this->info('Horizon is enabled. Starting.');
$this->call('horizon');
exit(0);
} else {
exit(0);
}
}
}

View File

@@ -2,58 +2,257 @@
namespace App\Console\Commands;
use App\Actions\Server\StopSentinel;
use App\Enums\ActivityTypes;
use App\Enums\ApplicationDeploymentStatus;
use App\Models\Application;
use App\Jobs\CleanupHelperContainersJob;
use App\Models\ApplicationDeploymentQueue;
use App\Models\Service;
use App\Models\ServiceApplication;
use App\Models\ServiceDatabase;
use App\Models\StandaloneMariadb;
use App\Models\StandaloneMongodb;
use App\Models\StandaloneMysql;
use App\Models\Environment;
use App\Models\InstanceSettings;
use App\Models\ScheduledDatabaseBackup;
use App\Models\Server;
use App\Models\StandalonePostgresql;
use App\Models\StandaloneRedis;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Http;
class Init extends Command
{
protected $signature = 'app:init {--cleanup}';
protected $signature = 'app:init {--full-cleanup} {--cleanup-deployments} {--cleanup-proxy-networks}';
protected $description = 'Cleanup instance related stuffs';
public $servers = null;
public function handle()
{
ray()->clearAll();
$cleanup = $this->option('cleanup');
if ($cleanup) {
$this->cleanup_stucked_resources();
$this->cleanup_ssh();
$this->servers = Server::all();
$this->alive();
get_public_ips();
if (version_compare('4.0.0-beta.312', config('version'), '<=')) {
foreach ($this->servers as $server) {
if ($server->settings->is_metrics_enabled === true) {
$server->settings->update(['is_metrics_enabled' => false]);
}
if ($server->isFunctional()) {
StopSentinel::dispatch($server);
}
}
}
$this->cleanup_in_progress_application_deployments();
$full_cleanup = $this->option('full-cleanup');
$cleanup_deployments = $this->option('cleanup-deployments');
$cleanup_proxy_networks = $this->option('cleanup-proxy-networks');
$this->replace_slash_in_environment_name();
if ($cleanup_deployments) {
echo "Running cleanup deployments.\n";
$this->cleanup_in_progress_application_deployments();
return;
}
if ($cleanup_proxy_networks) {
echo "Running cleanup proxy networks.\n";
$this->cleanup_unused_network_from_coolify_proxy();
return;
}
if ($full_cleanup) {
// Required for falsely deleted coolify db
$this->restore_coolify_db_backup();
$this->update_traefik_labels();
$this->cleanup_unused_network_from_coolify_proxy();
$this->cleanup_unnecessary_dynamic_proxy_configuration();
$this->cleanup_in_progress_application_deployments();
$this->cleanup_stucked_helper_containers();
$this->call('cleanup:queue');
$this->call('cleanup:stucked-resources');
if (! isCloud()) {
try {
$localhost = $this->servers->where('id', 0)->first();
$localhost->setupDynamicProxyConfiguration();
} catch (\Throwable $e) {
echo "Could not setup dynamic configuration: {$e->getMessage()}\n";
}
}
$settings = InstanceSettings::get();
if (! is_null(env('AUTOUPDATE', null))) {
if (env('AUTOUPDATE') == true) {
$settings->update(['is_auto_update_enabled' => true]);
} else {
$settings->update(['is_auto_update_enabled' => false]);
}
}
if (isCloud()) {
$response = Http::retry(3, 1000)->get(config('constants.services.official'));
if ($response->successful()) {
$services = $response->json();
File::put(base_path('templates/service-templates.json'), json_encode($services));
}
}
return;
}
$this->cleanup_stucked_helper_containers();
$this->call('cleanup:stucked-resources');
}
private function cleanup_ssh()
private function update_traefik_labels()
{
try {
$files = Storage::allFiles('ssh/keys');
foreach ($files as $file) {
Storage::delete($file);
}
$files = Storage::allFiles('ssh/mux');
foreach ($files as $file) {
Storage::delete($file);
}
Server::where('proxy->type', 'TRAEFIK_V2')->update(['proxy->type' => 'TRAEFIK']);
} catch (\Throwable $e) {
echo "Error in cleaning ssh: {$e->getMessage()}\n";
echo "Error in updating traefik labels: {$e->getMessage()}\n";
}
}
private function cleanup_unnecessary_dynamic_proxy_configuration()
{
if (isCloud()) {
foreach ($this->servers as $server) {
try {
if (! $server->isFunctional()) {
continue;
}
if ($server->id === 0) {
continue;
}
$file = $server->proxyPath().'/dynamic/coolify.yaml';
return instant_remote_process([
"rm -f $file",
], $server, false);
} catch (\Throwable $e) {
echo "Error in cleaning up unnecessary dynamic proxy configuration: {$e->getMessage()}\n";
}
}
}
}
private function cleanup_unused_network_from_coolify_proxy()
{
if (isCloud()) {
return;
}
foreach ($this->servers as $server) {
if (! $server->isFunctional()) {
continue;
}
if (! $server->isProxyShouldRun()) {
continue;
}
try {
['networks' => $networks, 'allNetworks' => $allNetworks] = collectDockerNetworksByServer($server);
$removeNetworks = $allNetworks->diff($networks);
$commands = collect();
foreach ($removeNetworks as $network) {
$out = instant_remote_process(["docker network inspect -f json $network | jq '.[].Containers | if . == {} then null else . end'"], $server, false);
if (empty($out)) {
$commands->push("docker network disconnect $network coolify-proxy >/dev/null 2>&1 || true");
$commands->push("docker network rm $network >/dev/null 2>&1 || true");
} else {
$data = collect(json_decode($out, true));
if ($data->count() === 1) {
// If only coolify-proxy itself is connected to that network (it should not be possible, but who knows)
$isCoolifyProxyItself = data_get($data->first(), 'Name') === 'coolify-proxy';
if ($isCoolifyProxyItself) {
$commands->push("docker network disconnect $network coolify-proxy >/dev/null 2>&1 || true");
$commands->push("docker network rm $network >/dev/null 2>&1 || true");
}
}
}
}
if ($commands->isNotEmpty()) {
echo "Cleaning up unused networks from coolify proxy\n";
remote_process(command: $commands, type: ActivityTypes::INLINE->value, server: $server, ignore_errors: false);
}
} catch (\Throwable $e) {
echo "Error in cleaning up unused networks from coolify proxy: {$e->getMessage()}\n";
}
}
}
private function restore_coolify_db_backup()
{
try {
$database = StandalonePostgresql::withTrashed()->find(0);
if ($database && $database->trashed()) {
echo "Restoring coolify db backup\n";
$database->restore();
$scheduledBackup = ScheduledDatabaseBackup::find(0);
if (! $scheduledBackup) {
ScheduledDatabaseBackup::create([
'id' => 0,
'enabled' => true,
'save_s3' => false,
'frequency' => '0 0 * * *',
'database_id' => $database->id,
'database_type' => 'App\Models\StandalonePostgresql',
'team_id' => 0,
]);
}
}
} catch (\Throwable $e) {
echo "Error in restoring coolify db backup: {$e->getMessage()}\n";
}
}
private function cleanup_stucked_helper_containers()
{
foreach ($this->servers as $server) {
if ($server->isFunctional()) {
CleanupHelperContainersJob::dispatch($server);
}
}
}
private function alive()
{
$id = config('app.id');
$version = config('version');
$settings = InstanceSettings::get();
$do_not_track = data_get($settings, 'do_not_track');
if ($do_not_track == true) {
echo "Skipping alive as do_not_track is enabled\n";
return;
}
try {
Http::get("https://undead.coolify.io/v4/alive?appId=$id&version=$version");
echo "I am alive!\n";
} catch (\Throwable $e) {
echo "Error in alive: {$e->getMessage()}\n";
}
}
// private function cleanup_ssh()
// {
// TODO: it will cleanup id.root@host.docker.internal
// try {
// $files = Storage::allFiles('ssh/keys');
// foreach ($files as $file) {
// Storage::delete($file);
// }
// $files = Storage::allFiles('ssh/mux');
// foreach ($files as $file) {
// Storage::delete($file);
// }
// } catch (\Throwable $e) {
// echo "Error in cleaning ssh: {$e->getMessage()}\n";
// }
// }
private function cleanup_in_progress_application_deployments()
{
// Cleanup any failed deployments
try {
$halted_deployments = ApplicationDeploymentQueue::where('status', '==', 'in_progress')->get();
foreach ($halted_deployments as $deployment) {
if (isCloud()) {
return;
}
$queued_inprogress_deployments = ApplicationDeploymentQueue::whereIn('status', [ApplicationDeploymentStatus::IN_PROGRESS->value, ApplicationDeploymentStatus::QUEUED->value])->get();
foreach ($queued_inprogress_deployments as $deployment) {
ray($deployment->id, $deployment->status);
echo "Cleaning up deployment: {$deployment->id}\n";
$deployment->status = ApplicationDeploymentStatus::FAILED->value;
$deployment->save();
}
@@ -61,167 +260,15 @@ class Init extends Command
echo "Error: {$e->getMessage()}\n";
}
}
private function cleanup_stucked_resources()
private function replace_slash_in_environment_name()
{
// Cleanup any resources that are not attached to any environment or destination or server
try {
$applications = Application::all();
foreach ($applications as $application) {
if (!data_get($application, 'environment')) {
ray('Application without environment', $application->name);
$application->delete();
}
if (!data_get($application, 'destination.server')) {
ray('Application without server', $application->name);
$application->delete();
}
if (!$application->destination()) {
ray('Application without destination', $application->name);
$application->delete();
}
$environments = Environment::all();
foreach ($environments as $environment) {
if (str_contains($environment->name, '/')) {
$environment->name = str_replace('/', '-', $environment->name);
$environment->save();
}
} catch (\Throwable $e) {
echo "Error in application: {$e->getMessage()}\n";
}
try {
$postgresqls = StandalonePostgresql::all();
foreach ($postgresqls as $postgresql) {
if (!data_get($postgresql, 'environment')) {
ray('Postgresql without environment', $postgresql->name);
$postgresql->delete();
}
if (!data_get($postgresql, 'destination.server')) {
ray('Postgresql without server', $postgresql->name);
$postgresql->delete();
}
if (!$postgresql->destination()) {
ray('Postgresql without destination', $postgresql->name);
$postgresql->delete();
}
}
} catch (\Throwable $e) {
echo "Error in postgresql: {$e->getMessage()}\n";
}
try {
$redis = StandaloneRedis::all();
foreach ($redis as $redis) {
if (!data_get($redis, 'environment')) {
ray('Redis without environment', $redis->name);
$redis->delete();
}
if (!data_get($redis, 'destination.server')) {
ray('Redis without server', $redis->name);
$redis->delete();
}
if (!$redis->destination()) {
ray('Redis without destination', $redis->name);
$redis->delete();
}
}
} catch (\Throwable $e) {
echo "Error in redis: {$e->getMessage()}\n";
}
try {
$mongodbs = StandaloneMongodb::all();
foreach ($mongodbs as $mongodb) {
if (!data_get($mongodb, 'environment')) {
ray('Mongodb without environment', $mongodb->name);
$mongodb->delete();
}
if (!data_get($mongodb, 'destination.server')) {
ray('Mongodb without server', $mongodb->name);
$mongodb->delete();
}
if (!$mongodb->destination()) {
ray('Mongodb without destination', $mongodb->name);
$mongodb->delete();
}
}
} catch (\Throwable $e) {
echo "Error in mongodb: {$e->getMessage()}\n";
}
try {
$mysqls = StandaloneMysql::all();
foreach ($mysqls as $mysql) {
if (!data_get($mysql, 'environment')) {
ray('Mysql without environment', $mysql->name);
$mysql->delete();
}
if (!data_get($mysql, 'destination.server')) {
ray('Mysql without server', $mysql->name);
$mysql->delete();
}
if (!$mysql->destination()) {
ray('Mysql without destination', $mysql->name);
$mysql->delete();
}
}
} catch (\Throwable $e) {
echo "Error in mysql: {$e->getMessage()}\n";
}
try {
$mariadbs = StandaloneMariadb::all();
foreach ($mariadbs as $mariadb) {
if (!data_get($mariadb, 'environment')) {
ray('Mariadb without environment', $mariadb->name);
$mariadb->delete();
}
if (!data_get($mariadb, 'destination.server')) {
ray('Mariadb without server', $mariadb->name);
$mariadb->delete();
}
if (!$mariadb->destination()) {
ray('Mariadb without destination', $mariadb->name);
$mariadb->delete();
}
}
} catch (\Throwable $e) {
echo "Error in mariadb: {$e->getMessage()}\n";
}
try {
$services = Service::all();
foreach ($services as $service) {
if (!data_get($service, 'environment')) {
ray('Service without environment', $service->name);
$service->delete();
}
if (!data_get($service, 'server')) {
ray('Service without server', $service->name);
$service->delete();
}
if (!$service->destination()) {
ray('Service without destination', $service->name);
$service->delete();
}
}
} catch (\Throwable $e) {
echo "Error in service: {$e->getMessage()}\n";
}
try {
$serviceApplications = ServiceApplication::all();
foreach ($serviceApplications as $service) {
if (!data_get($service, 'service')) {
ray('ServiceApplication without service', $service->name);
$service->delete();
}
}
} catch (\Throwable $e) {
echo "Error in serviceApplications: {$e->getMessage()}\n";
}
try {
$serviceDatabases = ServiceDatabase::all();
foreach ($serviceDatabases as $service) {
if (!data_get($service, 'service')) {
ray('ServiceDatabase without service', $service->name);
$service->delete();
}
}
} catch (\Throwable $e) {
echo "Error in ServiceDatabases: {$e->getMessage()}\n";
}
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Console\Commands;
use Illuminate\Console\Command;
use function Termwind\ask;
use function Termwind\render;
use function Termwind\style;
@@ -32,6 +33,7 @@ class NotifyDemo extends Command
if (blank($channel)) {
$this->showHelp();
return;
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Process;
class OpenApi extends Command
{
protected $signature = 'openapi';
protected $description = 'Generate OpenApi file.';
public function handle()
{
// Generate OpenAPI documentation
echo "Generating OpenAPI documentation.\n";
$process = Process::run(['/var/www/html/vendor/bin/openapi', 'app', '-o', 'openapi.yaml']);
$error = $process->errorOutput();
$error = preg_replace('/^.*an object literal,.*$/m', '', $error);
$error = preg_replace('/^\h*\v+/m', '', $error);
echo $error;
echo $process->output();
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Console\Commands;
use App\Models\User;
use Illuminate\Console\Command;
class RootChangeEmail extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'root:change-email';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Change Root Email';
/**
* Execute the console command.
*/
public function handle()
{
//
$this->info('You are about to change the root user\'s email.');
$email = $this->ask('Give me a new email for root user');
$this->info('Updating root email...');
try {
User::find(0)->update(['email' => $email]);
$this->info('Root user\'s email updated successfully.');
} catch (\Exception $e) {
$this->error('Failed to update root user\'s email.');
return;
}
}
}

View File

@@ -8,14 +8,14 @@ use Illuminate\Support\Facades\Hash;
use function Laravel\Prompts\password;
class UsersResetRoot extends Command
class RootResetPassword extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'users:reset-root';
protected $signature = 'root:reset-password';
/**
* The console command description.
@@ -29,12 +29,12 @@ class UsersResetRoot extends Command
*/
public function handle()
{
//
$this->info('You are about to reset the root password.');
$password = password('Give me a new password for root user: ');
$passwordAgain = password('Again');
if ($password != $passwordAgain) {
$this->error('Passwords do not match.');
return;
}
$this->info('Updating root password...');
@@ -43,6 +43,7 @@ class UsersResetRoot extends Command
$this->info('Root password updated successfully.');
} catch (\Exception $e) {
$this->error('Failed to update root password.');
return;
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class Scheduler extends Command
{
protected $signature = 'start:scheduler';
protected $description = 'Start Scheduler';
public function handle()
{
if (config('coolify.is_scheduler_enabled')) {
$this->info('Scheduler is enabled. Starting.');
$this->call('schedule:work');
exit(0);
} else {
exit(0);
}
}
}

View File

@@ -2,6 +2,7 @@
namespace App\Console\Commands;
use App\Jobs\DeleteResourceJob;
use App\Models\Application;
use App\Models\Server;
use App\Models\Service;
@@ -12,21 +13,21 @@ use function Laravel\Prompts\confirm;
use function Laravel\Prompts\multiselect;
use function Laravel\Prompts\select;
class ResourcesDelete extends Command
class ServicesDelete extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'resources:delete';
protected $signature = 'services:delete';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Delete a resource from the database';
protected $description = 'Delete a service from the database';
/**
* Execute the console command.
@@ -34,7 +35,7 @@ class ResourcesDelete extends Command
public function handle()
{
$resource = select(
'What resource do you want to delete?',
'What service do you want to delete?',
['Application', 'Database', 'Service', 'Server'],
);
if ($resource === 'Application') {
@@ -47,11 +48,13 @@ class ResourcesDelete extends Command
$this->deleteServer();
}
}
private function deleteServer()
{
$servers = Server::all();
if ($servers->count() === 0) {
$this->error('There are no applications to delete.');
return;
}
$serversToDelete = multiselect(
@@ -63,19 +66,21 @@ class ResourcesDelete extends Command
$toDelete = $servers->where('id', $server)->first();
if ($toDelete) {
$this->info($toDelete);
$confirmed = confirm("Are you sure you want to delete all selected resources?");
if (!$confirmed) {
$confirmed = confirm('Are you sure you want to delete all selected resources?');
if (! $confirmed) {
break;
}
$toDelete->delete();
}
}
}
private function deleteApplication()
{
$applications = Application::all();
if ($applications->count() === 0) {
$this->error('There are no applications to delete.');
return;
}
$applicationsToDelete = multiselect(
@@ -87,19 +92,21 @@ class ResourcesDelete extends Command
$toDelete = $applications->where('id', $application)->first();
if ($toDelete) {
$this->info($toDelete);
$confirmed = confirm("Are you sure you want to delete all selected resources? ");
if (!$confirmed) {
$confirmed = confirm('Are you sure you want to delete all selected resources? ');
if (! $confirmed) {
break;
}
$toDelete->delete();
DeleteResourceJob::dispatch($toDelete);
}
}
}
private function deleteDatabase()
{
$databases = StandalonePostgresql::all();
if ($databases->count() === 0) {
$this->error('There are no databases to delete.');
return;
}
$databasesToDelete = multiselect(
@@ -111,19 +118,21 @@ class ResourcesDelete extends Command
$toDelete = $databases->where('id', $database)->first();
if ($toDelete) {
$this->info($toDelete);
$confirmed = confirm("Are you sure you want to delete all selected resources?");
if (!$confirmed) {
$confirmed = confirm('Are you sure you want to delete all selected resources?');
if (! $confirmed) {
return;
}
$toDelete->delete();
DeleteResourceJob::dispatch($toDelete);
}
}
}
private function deleteService()
{
$services = Service::all();
if ($services->count() === 0) {
$this->error('There are no services to delete.');
return;
}
$servicesToDelete = multiselect(
@@ -135,11 +144,11 @@ class ResourcesDelete extends Command
$toDelete = $services->where('id', $service)->first();
if ($toDelete) {
$this->info($toDelete);
$confirmed = confirm("Are you sure you want to delete all selected resources?");
if (!$confirmed) {
$confirmed = confirm('Are you sure you want to delete all selected resources?');
if (! $confirmed) {
return;
}
$toDelete->delete();
DeleteResourceJob::dispatch($toDelete);
}
}
}

View File

@@ -26,7 +26,6 @@ class ServicesGenerate extends Command
*/
public function handle()
{
ray()->clearAll();
$files = array_diff(scandir(base_path('templates/compose')), ['.', '..']);
$files = array_filter($files, function ($file) {
return strpos($file, '.yaml') !== false;
@@ -40,7 +39,7 @@ class ServicesGenerate extends Command
$serviceTemplatesJson[$name] = $parsed;
}
}
$serviceTemplatesJson = json_encode($serviceTemplatesJson, JSON_PRETTY_PRINT);
$serviceTemplatesJson = json_encode($serviceTemplatesJson);
file_put_contents(base_path('templates/service-templates.json'), $serviceTemplatesJson);
}
@@ -51,18 +50,20 @@ class ServicesGenerate extends Command
// $this->info($content);
$ignore = collect(preg_grep('/^# ignore:/', explode("\n", $content)))->values();
if ($ignore->count() > 0) {
$ignore = (bool)str($ignore[0])->after('# ignore:')->trim()->value();
$ignore = (bool) str($ignore[0])->after('# ignore:')->trim()->value();
} else {
$ignore = false;
}
if ($ignore) {
$this->info("Ignoring $file");
return;
}
$this->info("Processing $file");
$documentation = collect(preg_grep('/^# documentation:/', explode("\n", $content)))->values();
if ($documentation->count() > 0) {
$documentation = str($documentation[0])->after('# documentation:')->trim()->value();
$documentation = str($documentation)->append('?utm_source=coolify.io');
} else {
$documentation = 'https://coolify.io/docs';
}
@@ -73,6 +74,18 @@ class ServicesGenerate extends Command
} else {
$slogan = str($file)->headline()->value();
}
$logo = collect(preg_grep('/^# logo:/', explode("\n", $content)))->values();
if ($logo->count() > 0) {
$logo = str($logo[0])->after('# logo:')->trim()->value();
} else {
$logo = 'svgs/unknown.svg';
}
$minversion = collect(preg_grep('/^# minversion:/', explode("\n", $content)))->values();
if ($minversion->count() > 0) {
$minversion = str($minversion[0])->after('# minversion:')->trim()->value();
} else {
$minversion = '0.0.0';
}
$env_file = collect(preg_grep('/^# env_file:/', explode("\n", $content)))->values();
if ($env_file->count() > 0) {
$env_file = str($env_file[0])->after('# env_file:')->trim()->value();
@@ -88,6 +101,12 @@ class ServicesGenerate extends Command
} else {
$tags = null;
}
$port = collect(preg_grep('/^# port:/', explode("\n", $content)))->values();
if ($port->count() > 0) {
$port = str($port[0])->after('# port:')->trim()->value();
} else {
$port = null;
}
$json = Yaml::parse($content);
$yaml = base64_encode(Yaml::dump($json, 10, 2));
$payload = [
@@ -96,12 +115,18 @@ class ServicesGenerate extends Command
'slogan' => $slogan,
'compose' => $yaml,
'tags' => $tags,
'logo' => $logo,
'minversion' => $minversion,
];
if ($port) {
$payload['port'] = $port;
}
if ($env_file) {
$env_file_content = file_get_contents(base_path("templates/compose/$env_file"));
$env_file_base64 = base64_encode($env_file_content);
$payload['envs'] = $env_file_base64;
}
return $payload;
}
}

View File

@@ -16,7 +16,7 @@ class SyncBunny extends Command
*
* @var string
*/
protected $signature = 'sync:bunny {--templates} {--release}';
protected $signature = 'sync:bunny {--templates} {--release} {--nightly}';
/**
* The console command description.
@@ -33,30 +33,38 @@ class SyncBunny extends Command
$that = $this;
$only_template = $this->option('templates');
$only_version = $this->option('release');
$bunny_cdn = "https://cdn.coollabs.io";
$bunny_cdn_path = "coolify";
$bunny_cdn_storage_name = "coolcdn";
$nightly = $this->option('nightly');
$bunny_cdn = 'https://cdn.coollabs.io';
$bunny_cdn_path = 'coolify';
$bunny_cdn_storage_name = 'coolcdn';
$parent_dir = realpath(dirname(__FILE__) . '/../../..');
$parent_dir = realpath(dirname(__FILE__).'/../../..');
$compose_file = "docker-compose.yml";
$compose_file_prod = "docker-compose.prod.yml";
$install_script = "install.sh";
$upgrade_script = "upgrade.sh";
$production_env = ".env.production";
$service_template = "service-templates.json";
$compose_file = 'docker-compose.yml';
$compose_file_prod = 'docker-compose.prod.yml';
$install_script = 'install.sh';
$upgrade_script = 'upgrade.sh';
$production_env = '.env.production';
$service_template = 'service-templates.json';
$versions = 'versions.json';
$versions = "versions.json";
$compose_file_location = "$parent_dir/$compose_file";
$compose_file_prod_location = "$parent_dir/$compose_file_prod";
$install_script_location = "$parent_dir/scripts/install.sh";
$upgrade_script_location = "$parent_dir/scripts/upgrade.sh";
$production_env_location = "$parent_dir/.env.production";
$versions_location = "$parent_dir/$versions";
PendingRequest::macro('storage', function ($fileName) use($that) {
PendingRequest::macro('storage', function ($fileName) use ($that) {
$headers = [
'AccessKey' => env('BUNNY_STORAGE_API_KEY'),
'Accept' => 'application/json',
'Content-Type' => 'application/octet-stream'
'Content-Type' => 'application/octet-stream',
];
$fileStream = fopen($fileName, "r");
$fileStream = fopen($fileName, 'r');
$file = fread($fileStream, filesize($fileName));
$that->info('Uploading: ' . $fileName);
$that->info('Uploading: '.$fileName);
return PendingRequest::baseUrl('https://storage.bunnycdn.com')->withHeaders($headers)->withBody($file)->throw();
});
PendingRequest::macro('purge', function ($url) use ($that) {
@@ -64,40 +72,77 @@ class SyncBunny extends Command
'AccessKey' => env('BUNNY_API_KEY'),
'Accept' => 'application/json',
];
$that->info('Purging: ' . $url);
$that->info('Purging: '.$url);
return PendingRequest::withHeaders($headers)->get('https://api.bunny.net/purge', [
"url" => $url,
"async" => false
'url' => $url,
'async' => false,
]);
});
try {
$confirmed = confirm('Are you sure you want to sync?');
if (!$confirmed) {
return;
if ($nightly) {
$bunny_cdn_path = 'coolify-nightly';
$compose_file_location = "$parent_dir/other/nightly/$compose_file";
$compose_file_prod_location = "$parent_dir/other/nightly/$compose_file_prod";
$production_env_location = "$parent_dir/other/nightly/$production_env";
$upgrade_script_location = "$parent_dir/other/nightly/$upgrade_script";
$install_script_location = "$parent_dir/other/nightly/$install_script";
$versions_location = "$parent_dir/other/nightly/$versions";
}
if (! $only_template && ! $only_version) {
if ($nightly) {
$this->info('About to sync files NIGHTLY (docker-compose.prod.yaml, upgrade.sh, install.sh, etc) to BunnyCDN.');
} else {
$this->info('About to sync files PRODUCTION (docker-compose.yml, docker-compose.prod.yml, upgrade.sh, install.sh, etc) to BunnyCDN.');
}
$confirmed = confirm('Are you sure you want to sync?');
if (! $confirmed) {
return;
}
}
if ($only_template) {
$this->info('About to sync service-templates.json to BunnyCDN.');
$confirmed = confirm('Are you sure you want to sync?');
if (! $confirmed) {
return;
}
Http::pool(fn (Pool $pool) => [
$pool->storage(fileName: "$parent_dir/templates/$service_template")->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$service_template"),
$pool->purge("$bunny_cdn/$bunny_cdn_path/$service_template"),
]);
$this->info('Service template uploaded & purged...');
return;
}
if ($only_version) {
} elseif ($only_version) {
if ($nightly) {
$this->info('About to sync NIGHLTY versions.json to BunnyCDN.');
} else {
$this->info('About to sync PRODUCTION versions.json to BunnyCDN.');
}
$file = file_get_contents($versions_location);
$json = json_decode($file, true);
$actual_version = data_get($json, 'coolify.v4.version');
$confirmed = confirm("Are you sure you want to sync to {$actual_version}?");
if (! $confirmed) {
return;
}
Http::pool(fn (Pool $pool) => [
$pool->storage(fileName: "$parent_dir/$versions")->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$versions"),
$pool->storage(fileName: $versions_location)->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$versions"),
$pool->purge("$bunny_cdn/$bunny_cdn_path/$versions"),
]);
$this->info('versions.json uploaded & purged...');
return;
}
Http::pool(fn (Pool $pool) => [
$pool->storage(fileName: "$parent_dir/$compose_file")->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$compose_file"),
$pool->storage(fileName: "$parent_dir/$compose_file_prod")->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$compose_file_prod"),
$pool->storage(fileName: "$parent_dir/$production_env")->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$production_env"),
$pool->storage(fileName: "$parent_dir/scripts/$upgrade_script")->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$upgrade_script"),
$pool->storage(fileName: "$parent_dir/scripts/$install_script")->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$install_script"),
$pool->storage(fileName: "$compose_file_location")->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$compose_file"),
$pool->storage(fileName: "$compose_file_prod_location")->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$compose_file_prod"),
$pool->storage(fileName: "$production_env_location")->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$production_env"),
$pool->storage(fileName: "$upgrade_script_location")->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$upgrade_script"),
$pool->storage(fileName: "$install_script_location")->put("/$bunny_cdn_storage_name/$bunny_cdn_path/$install_script"),
]);
Http::pool(fn (Pool $pool) => [
$pool->purge("$bunny_cdn/$bunny_cdn_path/$compose_file"),
@@ -106,9 +151,9 @@ class SyncBunny extends Command
$pool->purge("$bunny_cdn/$bunny_cdn_path/$upgrade_script"),
$pool->purge("$bunny_cdn/$bunny_cdn_path/$install_script"),
]);
$this->info("All files uploaded & purged...");
$this->info('All files uploaded & purged...');
} catch (\Throwable $e) {
$this->error("Error: " . $e->getMessage());
$this->error('Error: '.$e->getMessage());
}
}
}

View File

@@ -13,7 +13,9 @@ use Illuminate\Support\Str;
class WaitlistInvite extends Command
{
public Waitlist|User|null $next_patient = null;
public string|null $password = null;
public ?string $password = null;
/**
* The name and signature of the console command.
*
@@ -38,7 +40,9 @@ class WaitlistInvite extends Command
$this->main();
}
}
private function main() {
private function main()
{
if ($this->argument('email')) {
if ($this->option('only-email')) {
$this->next_patient = User::whereEmail($this->argument('email'))->first();
@@ -50,8 +54,9 @@ class WaitlistInvite extends Command
} else {
$this->next_patient = Waitlist::where('email', $this->argument('email'))->first();
}
if (!$this->next_patient) {
if (! $this->next_patient) {
$this->error("{$this->argument('email')} not found in the waitlist.");
return;
}
} else {
@@ -60,6 +65,7 @@ class WaitlistInvite extends Command
if ($this->next_patient) {
if ($this->option('only-email')) {
$this->send_email();
return;
}
$this->register_user();
@@ -69,13 +75,14 @@ class WaitlistInvite extends Command
$this->info('No verified user found in the waitlist. 👀');
}
}
private function register_user()
{
$already_registered = User::whereEmail($this->next_patient->email)->first();
if (!$already_registered) {
if (! $already_registered) {
$this->password = Str::password();
User::create([
'name' => Str::of($this->next_patient->email)->before('@'),
'name' => str($this->next_patient->email)->before('@'),
'email' => $this->next_patient->email,
'password' => Hash::make($this->password),
'force_password_reset' => true,
@@ -85,21 +92,23 @@ class WaitlistInvite extends Command
throw new \Exception('User already registered');
}
}
private function remove_from_waitlist()
{
$this->next_patient->delete();
$this->info("User removed from waitlist successfully.");
$this->info('User removed from waitlist successfully.');
}
private function send_email()
{
$token = Crypt::encryptString("{$this->next_patient->email}@@@$this->password");
$loginLink = route('auth.link', ['token' => $token]);
$mail = new MailMessage();
$mail = new MailMessage;
$mail->view('emails.waitlist-invitation', [
'loginLink' => $loginLink,
]);
$mail->subject('Congratulations! You are invited to join Coolify Cloud.');
send_user_an_email($mail, $this->next_patient->email);
$this->info("Email sent successfully. 📧");
$this->info('Email sent successfully. 📧');
}
}

View File

@@ -2,112 +2,208 @@
namespace App\Console;
use App\Jobs\CheckResaleLicenseJob;
use App\Jobs\CheckForUpdatesJob;
use App\Jobs\CleanupInstanceStuffsJob;
use App\Jobs\CleanupStaleMultiplexedConnections;
use App\Jobs\DatabaseBackupJob;
use App\Jobs\DockerCleanupJob;
use App\Jobs\InstanceAutoUpdateJob;
use App\Jobs\ContainerStatusJob;
use App\Jobs\PullHelperImageJob;
use App\Jobs\PullSentinelImageJob;
use App\Jobs\PullTemplatesFromCDN;
use App\Jobs\ScheduledTaskJob;
use App\Jobs\ServerCheckJob;
use App\Jobs\UpdateCoolifyJob;
use App\Models\InstanceSettings;
use App\Models\ScheduledDatabaseBackup;
use App\Models\ScheduledTask;
use App\Models\Server;
use App\Models\Team;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
private $all_servers;
protected function schedule(Schedule $schedule): void
{
$this->all_servers = Server::all();
$settings = InstanceSettings::get();
$schedule->job(new CleanupStaleMultiplexedConnections)->hourly();
if (isDev()) {
// Instance Jobs
$schedule->command('horizon:snapshot')->everyMinute();
$schedule->job(new CleanupInstanceStuffsJob)->everyMinute()->onOneServer();
// $schedule->job(new CheckResaleLicenseJob)->hourly()->onOneServer();
// Server Jobs
$this->check_scheduled_backups($schedule);
$this->check_resources($schedule);
$this->cleanup_servers($schedule);
$this->check_scheduled_backups($schedule);
$this->pull_helper_image($schedule);
$this->check_scheduled_tasks($schedule);
$schedule->command('uploads:clear')->everyTwoMinutes();
$schedule->command('telescope:prune')->daily();
} else {
// Instance Jobs
$schedule->command('horizon:snapshot')->everyFiveMinutes();
$schedule->command('cleanup:unreachable-servers')->daily()->onOneServer();
$schedule->job(new PullTemplatesFromCDN)->cron($settings->update_check_frequency)->timezone($settings->instance_timezone)->onOneServer();
$schedule->job(new CleanupInstanceStuffsJob)->everyTwoMinutes()->onOneServer();
// $schedule->job(new CheckResaleLicenseJob)->hourly()->onOneServer();
$this->schedule_updates($schedule);
// Server Jobs
$this->instance_auto_update($schedule);
$this->check_scheduled_backups($schedule);
$this->check_resources($schedule);
$this->cleanup_servers($schedule);
$this->pull_helper_image($schedule);
$this->pull_images($schedule);
$this->check_scheduled_tasks($schedule);
$schedule->command('cleanup:database --yes')->daily();
$schedule->command('uploads:clear')->everyTwoMinutes();
}
}
private function pull_helper_image($schedule)
private function pull_images($schedule)
{
$servers = Server::all()->where('settings.is_usable', true)->where('settings.is_reachable', true);
$settings = InstanceSettings::get();
$servers = $this->all_servers->where('settings.is_usable', true)->where('settings.is_reachable', true)->where('ip', '!=', '1.2.3.4');
foreach ($servers as $server) {
$schedule->job(new PullHelperImageJob($server))->everyTenMinutes()->onOneServer();
if ($server->isSentinelEnabled()) {
$schedule->job(function () use ($server) {
$sentinel_found = instant_remote_process(['docker inspect coolify-sentinel'], $server, false);
$sentinel_found = json_decode($sentinel_found, true);
$status = data_get($sentinel_found, '0.State.Status', 'exited');
if ($status !== 'running') {
PullSentinelImageJob::dispatch($server);
}
})->cron($settings->update_check_frequency)->timezone($settings->instance_timezone)->onOneServer();
}
$schedule->job(new PullHelperImageJob($server))
->cron($settings->update_check_frequency)
->timezone($settings->instance_timezone)
->onOneServer();
}
}
private function cleanup_servers($schedule)
private function schedule_updates($schedule)
{
$servers = Server::all()->where('settings.is_usable', true)->where('settings.is_reachable', true);
foreach ($servers as $server) {
$schedule->job(new DockerCleanupJob($server))->everyTenMinutes()->onOneServer();
$settings = InstanceSettings::get();
$updateCheckFrequency = $settings->update_check_frequency;
$schedule->job(new CheckForUpdatesJob)
->cron($updateCheckFrequency)
->timezone($settings->instance_timezone)
->onOneServer();
if ($settings->is_auto_update_enabled) {
$autoUpdateFrequency = $settings->auto_update_frequency;
$schedule->job(new UpdateCoolifyJob)
->cron($autoUpdateFrequency)
->timezone($settings->instance_timezone)
->onOneServer();
}
}
private function check_resources($schedule)
{
if (isCloud()) {
$servers = Server::all()->whereNotNull('team.subscription')->where('team.subscription.stripe_trial_already_ended', false);
$servers = $this->all_servers->whereNotNull('team.subscription')->where('team.subscription.stripe_trial_already_ended', false)->where('ip', '!=', '1.2.3.4');
$own = Team::find(0)->servers;
$servers = $servers->merge($own);
} else {
$servers = Server::all();
$servers = $this->all_servers->where('ip', '!=', '1.2.3.4');
}
foreach ($servers as $server) {
$schedule->job(new ContainerStatusJob($server))->everyMinute()->onOneServer();
}
}
private function instance_auto_update($schedule)
{
if (isDev()) {
return;
}
$settings = InstanceSettings::get();
if ($settings->is_auto_update_enabled) {
$schedule->job(new InstanceAutoUpdateJob)->everyTenMinutes()->onOneServer();
$schedule->job(new ServerCheckJob($server))->everyMinute()->onOneServer();
$serverTimezone = $server->settings->server_timezone;
if ($server->settings->force_docker_cleanup) {
$schedule->job(new DockerCleanupJob($server))->cron($server->settings->docker_cleanup_frequency)->timezone($serverTimezone)->onOneServer();
} else {
$schedule->job(new DockerCleanupJob($server))->everyTenMinutes()->timezone($serverTimezone)->onOneServer();
}
}
}
private function check_scheduled_backups($schedule)
{
$scheduled_backups = ScheduledDatabaseBackup::all();
if ($scheduled_backups->isEmpty()) {
ray('no scheduled backups');
return;
}
foreach ($scheduled_backups as $scheduled_backup) {
if (!$scheduled_backup->enabled) {
if (! $scheduled_backup->enabled) {
continue;
}
if (is_null(data_get($scheduled_backup, 'database'))) {
ray('database not found');
$scheduled_backup->delete();
continue;
}
$server = $scheduled_backup->server();
if (! $server) {
continue;
}
$serverTimezone = $server->settings->server_timezone;
if (isset(VALID_CRON_STRINGS[$scheduled_backup->frequency])) {
$scheduled_backup->frequency = VALID_CRON_STRINGS[$scheduled_backup->frequency];
}
$schedule->job(new DatabaseBackupJob(
backup: $scheduled_backup
))->cron($scheduled_backup->frequency)->onOneServer();
))->cron($scheduled_backup->frequency)->timezone($serverTimezone)->onOneServer();
}
}
private function check_scheduled_tasks($schedule)
{
$scheduled_tasks = ScheduledTask::all();
if ($scheduled_tasks->isEmpty()) {
return;
}
foreach ($scheduled_tasks as $scheduled_task) {
if ($scheduled_task->enabled === false) {
continue;
}
$service = $scheduled_task->service;
$application = $scheduled_task->application;
if (! $application && ! $service) {
ray('application/service attached to scheduled task does not exist');
$scheduled_task->delete();
continue;
}
if ($application) {
if (str($application->status)->contains('running') === false) {
continue;
}
}
if ($service) {
if (str($service->status())->contains('running') === false) {
continue;
}
}
$server = $scheduled_task->server();
if (! $server) {
continue;
}
$serverTimezone = $server->settings->server_timezone ?: config('app.timezone');
if (isset(VALID_CRON_STRINGS[$scheduled_task->frequency])) {
$scheduled_task->frequency = VALID_CRON_STRINGS[$scheduled_task->frequency];
}
$schedule->job(new ScheduledTaskJob(
task: $scheduled_task
))->cron($scheduled_task->frequency)->timezone($serverTimezone)->onOneServer();
}
}
protected function commands(): void
{
$this->load(__DIR__ . '/Commands');
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}

View File

@@ -12,15 +12,18 @@ use Spatie\LaravelData\Data;
class CoolifyTaskArgs extends Data
{
public function __construct(
public string $server_uuid,
public string $command,
public string $type,
public string $server_uuid,
public string $command,
public string $type,
public ?string $type_uuid = null,
public ?Model $model = null,
public ?string $status = null ,
public bool $ignore_errors = false,
public ?int $process_id = null,
public ?Model $model = null,
public ?string $status = null,
public bool $ignore_errors = false,
public $call_event_on_finish = null,
public $call_event_data = null
) {
if(is_null($status)){
if (is_null($status)) {
$this->status = ProcessStatus::QUEUED->value;
}
}

View File

@@ -9,8 +9,7 @@ use Spatie\LaravelData\Data;
class ServerMetadata extends Data
{
public function __construct(
public ?ProxyTypes $type,
public ?ProxyTypes $type,
public ?ProxyStatus $status
) {
}
) {}
}

View File

@@ -5,4 +5,5 @@ namespace App\Enums;
enum ActivityTypes: string
{
case INLINE = 'inline';
case COMMAND = 'command';
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\Enums;
enum BuildPackTypes: string
{
case NIXPACKS = 'nixpacks';
case STATIC = 'static';
case DOCKERFILE = 'dockerfile';
case DOCKERCOMPOSE = 'dockercompose';
}

View File

@@ -0,0 +1,15 @@
<?php
namespace App\Enums;
enum NewDatabaseTypes: string
{
case POSTGRESQL = 'postgresql';
case MYSQL = 'mysql';
case MONGODB = 'mongodb';
case REDIS = 'redis';
case MARIADB = 'mariadb';
case KEYDB = 'keydb';
case DRAGONFLY = 'dragonfly';
case CLICKHOUSE = 'clickhouse';
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Enums;
enum NewResourceTypes: string
{
case PUBLIC = 'public';
case PRIVATE_GH_APP = 'private-gh-app';
case PRIVATE_DEPLOY_KEY = 'private-deploy-key';
case DOCKERFILE = 'dockerfile';
case DOCKERCOMPOSE = 'dockercompose';
case DOCKER_IMAGE = 'docker-image';
case SERVICE = 'service';
case POSTGRESQL = 'postgresql';
case MYSQL = 'mysql';
case MONGODB = 'mongodb';
case REDIS = 'redis';
case MARIADB = 'mariadb';
case KEYDB = 'keydb';
case DRAGONFLY = 'dragonfly';
case CLICKHOUSE = 'clickhouse';
}

View File

@@ -8,5 +8,7 @@ enum ProcessStatus: string
case IN_PROGRESS = 'in_progress';
case FINISHED = 'finished';
case ERROR = 'error';
case KILLED = 'killed';
case CANCELLED = 'cancelled';
case CLOSED = 'closed';
}

View File

@@ -5,7 +5,7 @@ namespace App\Enums;
enum ProxyTypes: string
{
case NONE = 'NONE';
case TRAEFIK_V2 = 'TRAEFIK_V2';
case TRAEFIK = 'TRAEFIK';
case NGINX = 'NGINX';
case CADDY = 'CADDY';
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Enums;
enum RedirectTypes: string
{
case BOTH = 'both';
case WWW = 'www';
case NON_WWW = 'non-www';
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Events;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class ApplicationStatusChanged implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $teamId;
public function __construct($teamId = null)
{
if (is_null($teamId)) {
$teamId = auth()->user()->currentTeam()->id ?? null;
}
if (is_null($teamId)) {
throw new \Exception('Team id is null');
}
$this->teamId = $teamId;
}
public function broadcastOn(): array
{
return [
new PrivateChannel("team.{$this->teamId}"),
];
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Events;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class BackupCreated implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $teamId;
public function __construct($teamId = null)
{
if (is_null($teamId)) {
$teamId = auth()->user()->currentTeam()->id ?? null;
}
if (is_null($teamId)) {
throw new \Exception('Team id is null');
}
$this->teamId = $teamId;
}
public function broadcastOn(): array
{
return [
new PrivateChannel("team.{$this->teamId}"),
];
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace App\Events;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class DatabaseStatusChanged implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public ?string $userId = null;
public function __construct($userId = null)
{
if (is_null($userId)) {
$userId = auth()->user()->id ?? null;
}
if (is_null($userId)) {
return false;
}
$this->userId = $userId;
}
public function broadcastOn(): ?array
{
if ($this->userId) {
return [
new PrivateChannel("user.{$this->userId}"),
];
}
return null;
}
}

Some files were not shown because too many files have changed in this diff Show More