Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
602 commits
Select commit Hold shift + click to select a range
c26209f
refactor(nightly): update version numbers and enhance upgrade script
andrasbacsai Mar 27, 2025
ac7922c
refactor(versions): update version numbers for coolify and nightly
andrasbacsai Mar 27, 2025
2947a9f
feat(deploy): add pull request ID parameter to deploy endpoint
karan-vk Mar 27, 2025
045b634
feat(api): add pull request ID parameter to applications endpoint
karan-vk Mar 27, 2025
f0a1abc
fix(DeployController): cast 'pr' query parameter to integer
karan-vk Mar 27, 2025
bdb3203
Merge branch 'next' into main
karan-vk Mar 28, 2025
09636b4
refactor(email): validate team membership for email recipients
andrasbacsai Mar 28, 2025
2a08f4d
refactor(shared): simplify deployment status check logic
andrasbacsai Mar 28, 2025
735fcaa
refactor(shared): add logging for running deployment jobs
andrasbacsai Mar 28, 2025
f060b7d
refactor(shared): enhance job status check to include 'reserved'
andrasbacsai Mar 28, 2025
39cb270
refactor(email): improve error handling by passing context to handleE…
andrasbacsai Mar 28, 2025
2b046c4
refactor(email): streamline email sending logic and improve configura…
andrasbacsai Mar 28, 2025
6d9887a
refactor(email): remove unnecessary whitespace in email sending logic
andrasbacsai Mar 28, 2025
ebb81af
refactor(email): allow custom email recipients in email sending logic
andrasbacsai Mar 28, 2025
d110c93
refactor(email): enhance sender information formatting in email logic
andrasbacsai Mar 28, 2025
0b41378
refactor(proxy): remove redundant stop call in restart method
andrasbacsai Mar 28, 2025
7686ebf
refactor(file-storage): add loadStorageOnServer method for improved e…
andrasbacsai Mar 28, 2025
98add9f
refactor(docker): parse and sanitize YAML compose file before encoding
andrasbacsai Mar 28, 2025
0bb47df
refactor(file-storage): improve layout and structure of input fields
andrasbacsai Mar 28, 2025
c2941ab
fix(file-storage): double save on compose volumes
andrasbacsai Mar 28, 2025
d124abe
refactor(email): update label for test email recipient input
andrasbacsai Mar 28, 2025
4c9878d
Merge pull request #5457 from coollabsio/next
andrasbacsai Mar 28, 2025
d71b669
docs: update changelog
github-actions[bot] Mar 28, 2025
dd345d5
chore(versions): update version numbers for coolify and nightly
andrasbacsai Mar 28, 2025
34e1587
refactor(database-backup): remove existing Docker container before ba…
andrasbacsai Mar 28, 2025
b376d6d
reverting: encrypting mount and fs_path
andrasbacsai Mar 29, 2025
d11cc3f
docs: update changelog
github-actions[bot] Mar 27, 2025
4e80d8d
docs: update changelog
github-actions[bot] Mar 28, 2025
c4ef08d
fix(parser): Add logging support for applications in services
farwydi Mar 29, 2025
5cbb23e
Update CONTRIBUTING.md
KPCOFGS Mar 30, 2025
a442d35
Merge branch 'next' into main
karan-vk Mar 30, 2025
a8018ad
refactor(database): improve decryption and deduplication of local fil…
andrasbacsai Mar 30, 2025
c7591fd
refactor(database): remove debug output from volume update process
andrasbacsai Mar 30, 2025
887a96d
removed start interval as it is not a valid option and is not defined…
djsisson Mar 31, 2025
459ee00
Sync current branch with next branch
Messanga11 Mar 31, 2025
3b04d3d
feat(deployments): add list application deployments api route
Messanga11 Mar 31, 2025
cb7a917
Merge branch 'next' into patch-1
KPCOFGS Mar 31, 2025
4fbfff9
Update CONTRIBUTING.md
KPCOFGS Mar 31, 2025
d6d1c9a
feat(database): add CA certificate generation for database servers
andrasbacsai Mar 31, 2025
fcfd00e
feat(application): add SPA configuration and update Nginx generation …
andrasbacsai Mar 31, 2025
18c4729
Merge pull request #5482 from djsisson/fix_custome_healthcheck
andrasbacsai Mar 31, 2025
69cde67
Merge branch 'next' into main
karan-vk Mar 31, 2025
adc3d95
fix: only get apps for the current team
andrasbacsai Mar 31, 2025
9e18d6e
Merge pull request #5487 from Messanga11/features/app-deployments
andrasbacsai Mar 31, 2025
99dd516
Update app/Http/Controllers/Api/DeployController.php
andrasbacsai Mar 31, 2025
d8248ba
Update app/Http/Controllers/Api/DeployController.php
andrasbacsai Mar 31, 2025
ee5c0f0
fix(deploy): validate team ID before deployment
andrasbacsai Mar 31, 2025
107eb88
Merge pull request #5444 from karan-vk/main
andrasbacsai Mar 31, 2025
1d72403
chore(service): update minecraft service ENVs
CaptainFallaway Mar 31, 2025
799855e
refactor(dev): remove OpenAPI generation functionality
andrasbacsai Mar 31, 2025
9f67633
feat(api): add endpoints for retrieving application logs and deployments
andrasbacsai Mar 31, 2025
ebd3351
Merge pull request #5472 from KPCOFGS/patch-1
andrasbacsai Mar 31, 2025
2751b54
feat(lang): Added Norwegian language (#5280)
actstorms Mar 31, 2025
b5eaeef
Update no.json
peaklabs-dev Mar 31, 2025
b366b45
Merge branch 'next' into fix_service_app_log_drain
andrasbacsai Mar 31, 2025
363dd51
Merge pull request #5470 from farwydi/fix_service_app_log_drain
andrasbacsai Mar 31, 2025
5114bf3
chore(service): add more vars to infisical.yaml (#5418)
zaaakher Mar 31, 2025
9726ef9
fix(wakapi): typo in env variables and add some useful variables to w…
dan5py Mar 31, 2025
42f82e6
chore(service): add google variables to plausible.yaml (#5429)
felixwortmann Mar 31, 2025
e8ebaaa
chore(service): Update authentik.yaml versions (#5373)
Datenschmutz Mar 31, 2025
2699c2e
Update service-templates.json
peaklabs-dev Mar 31, 2025
04349d9
chore(core): remove redocs
peaklabs-dev Mar 31, 2025
03b0ee5
feat(dep): bump all dependencies
peaklabs-dev Mar 31, 2025
f94a813
Update package-lock.json
peaklabs-dev Mar 31, 2025
d825d95
Update composer.lock
peaklabs-dev Mar 31, 2025
52d612a
refactor(migration): enhance local file volumes migration with logging
andrasbacsai Apr 1, 2025
7cad827
Merge pull request #5489 from coollabsio/next
andrasbacsai Apr 1, 2025
eb58957
docs: update changelog
github-actions[bot] Apr 1, 2025
ab63797
chore(versions): update coolify version numbers to 4.0.0-beta.403 and…
andrasbacsai Apr 1, 2025
7519e6a
fix(ui): Instance Backup settings
peaklabs-dev Apr 1, 2025
24e3fef
Merge branch 'main' into next
peaklabs-dev Apr 1, 2025
c6b7779
feat(lang): Added Azerbaijani language updated turkish language. (#5497)
chz Apr 1, 2025
1384de7
fix(docs): comment out execute for now
peaklabs-dev Apr 1, 2025
5bd87f5
docs: update changelog
github-actions[bot] Apr 2, 2025
1016b00
fix(installation): mount the docker config
peaklabs-dev Apr 2, 2025
f53f671
fix(installation): path to config file for docker login
peaklabs-dev Apr 2, 2025
2f6bd04
feat(lang): Added Portuguese from Brazil language (#5500)
eltonciatto Apr 2, 2025
78ce16d
feat(lang): add Indonesian language translations (#5513)
alvinmr Apr 2, 2025
787a56c
fix(service): add health check to Bugsink service (#5512)
vanschelven Apr 2, 2025
78e2d63
chore(service): remove unused code in Bugsink service
peaklabs-dev Apr 2, 2025
d15f1b9
fix(email): Emails are not sent in multiple cases
peaklabs-dev Apr 2, 2025
bb70c11
feat(proxy): enhance proxy handling and port conflict detection
priard Apr 2, 2025
6648c37
docs: update changelog
github-actions[bot] Apr 2, 2025
9f58128
fix(deployments): use graceful shutdown instead of `rm`
peaklabs-dev Apr 2, 2025
2248028
fix(docs): contribute service url (#5517)
wrussell1999 Apr 2, 2025
3316935
fix(proxy): proxy restart does not work on domain
peaklabs-dev Apr 2, 2025
7e0ff9c
fix(ui): only show copy button on https
peaklabs-dev Apr 2, 2025
b837af4
fix(database): custom config for MongoDB (#5471)
dekkku Apr 2, 2025
30a45ad
docs: update changelog
github-actions[bot] Apr 2, 2025
d62c1bb
Merge branch 'main' into next
peaklabs-dev Apr 2, 2025
046b1dc
chore(versions): bump version to 403 (#5520)
peaklabs-dev Apr 2, 2025
da1272a
docs: update changelog
github-actions[bot] Apr 2, 2025
a635968
chore(versions): update version to 404
peaklabs-dev Apr 2, 2025
045848b
Merge branch 'main' into next
peaklabs-dev Apr 2, 2025
8c45333
Merge branch 'coollabsio:main' into main
priard Apr 2, 2025
b971441
Merge pull request #5496 from coollabsio/next
andrasbacsai Apr 3, 2025
a6f7e73
docs: update changelog
github-actions[bot] Apr 3, 2025
c8e95d2
chore(versions): bump version to 404
andrasbacsai Apr 3, 2025
42ef2af
Merge pull request #5525 from coollabsio/next
andrasbacsai Apr 3, 2025
4558181
docs: update changelog
github-actions[bot] Apr 3, 2025
0e5122e
chore(versions): bump version to 405
peaklabs-dev Apr 3, 2025
0130e72
Merge branch 'main' into next
peaklabs-dev Apr 3, 2025
3469912
fix(api): used ssh keys can be deleted
peaklabs-dev Apr 3, 2025
185eef0
fix(email): transactional emails not sending
peaklabs-dev Apr 3, 2025
d9be119
feat(api): update OpenAPI spec for services (#5448)
megheaiulian Apr 3, 2025
422da4c
docs: update changelog
github-actions[bot] Apr 2, 2025
e8d0478
docs: update changelog
github-actions[bot] Apr 3, 2025
fb0bf3e
Merge branch 'next' into main
priard Apr 3, 2025
1e46f0d
docs: update changelog
github-actions[bot] Apr 3, 2025
3b68eaf
chore(versions): bump version to 406
andrasbacsai Apr 4, 2025
ac257bc
Merge pull request #5529 from coollabsio/next
andrasbacsai Apr 4, 2025
eda9a16
docs: update changelog
github-actions[bot] Apr 4, 2025
24f33a2
Merge branch 'next' into main
andrasbacsai Apr 4, 2025
1dd7718
docs: update changelog
github-actions[bot] Apr 4, 2025
4f5df53
add hostname
sebyx07 Apr 4, 2025
e77af49
chore(versions): bump version to 407
andrasbacsai Apr 5, 2025
b705a88
Merge branch 'next' into priard/main
andrasbacsai Apr 5, 2025
9b49332
refactor(CheckProxy): replace 'which' with 'command -v' for command a…
andrasbacsai Apr 5, 2025
46fe81d
docs: update changelog
github-actions[bot] Apr 5, 2025
8bd9ad6
Merge pull request #5522 from priard/main
andrasbacsai Apr 5, 2025
666280b
Merge branch 'main' into next
andrasbacsai Apr 5, 2025
1b8db27
refactor(Server): use data_get for safer access to settings propertie…
andrasbacsai Apr 5, 2025
c74cb45
chore(versions): bump version to 406
andrasbacsai Apr 5, 2025
11ada83
fix(CheckProxy): update port conflict check to ensure accurate grep m…
andrasbacsai Apr 5, 2025
7182345
fix(CheckProxy): refine port conflict detection with improved grep pa…
andrasbacsai Apr 5, 2025
5836837
fix(CheckProxy): enhance port conflict detection by adjusting ss comm…
andrasbacsai Apr 5, 2025
61c689d
fix(api): Add back validateDataApplications (#5539)
tm1000 Apr 5, 2025
3176106
fix(CheckProxy, Status): prevent proxy checks when force_stop is acti…
andrasbacsai Apr 5, 2025
68c2c7f
fix(Status): conditionally check proxy status and refresh button base…
andrasbacsai Apr 5, 2025
900b5ad
feat(Deploy): add info dispatch for proxy check initiation
andrasbacsai Apr 5, 2025
51726a4
Merge pull request #5558 from coollabsio/next
andrasbacsai Apr 5, 2025
25c646c
docs: update changelog
github-actions[bot] Apr 5, 2025
9692960
chore(versions): bump version to 407 and 408 for coolify and nightly
andrasbacsai Apr 6, 2025
d383344
feat(EnvironmentVariable): add handling for Redis credentials in the …
andrasbacsai Apr 6, 2025
f31624c
fix(General): change redis_password property to nullable string
andrasbacsai Apr 6, 2025
f63415f
feat(EnvironmentVariable): implement protection for critical environm…
andrasbacsai Apr 7, 2025
f8607dd
Merge branch 'next' into docker-network-aliases
andrasbacsai Apr 8, 2025
fcf597f
feat(Application): add networkAliases attribute for handling network …
andrasbacsai Apr 9, 2025
68bd945
refactor(Application): rename network_aliases to custom_network_alias…
andrasbacsai Apr 9, 2025
c392135
Merge pull request #4741 from piotr-woojcik/docker-network-aliases
andrasbacsai Apr 9, 2025
c87d12d
Merge pull request #5573 from coollabsio/next
andrasbacsai Apr 9, 2025
4a1f8e9
docs: update changelog
github-actions[bot] Apr 9, 2025
1e7b15a
enhance: Add missing UUID to openapi spec
LaurenceJJones Apr 9, 2025
11c1bab
fix check if image changed
Apr 9, 2025
e8ff21b
chore(versions): bump version to 408 for coolify and 409 for nightly
andrasbacsai Apr 10, 2025
abf922b
feat(GithubApp): update default events to include 'pull_request' and …
andrasbacsai Apr 10, 2025
324e0d1
feat(CleanupDocker): add support for realtime image management in Doc…
andrasbacsai Apr 10, 2025
01f3612
Merge pull request #5577 from LaurenceJJones/openapi_uuid_definition
andrasbacsai Apr 10, 2025
d075241
feat(Deployment): enhance queue_application_deployment to handle exis…
andrasbacsai Apr 11, 2025
61cc49d
fix(DeployController): update request handling to use input method an…
andrasbacsai Apr 11, 2025
5ce57ed
chore(deps-dev): bump vite from 6.2.4 to 6.2.6
dependabot[bot] Apr 11, 2025
4c8ebe1
refactor(ApplicationDeploymentJob): streamline environment variable h…
andrasbacsai Apr 11, 2025
ec36825
feat(SourceManagement): add functionality to change Git source and di…
andrasbacsai Apr 11, 2025
46fe0fd
refactor(ApplicationDeploymentJob, ApplicationDeploymentQueue): impro…
andrasbacsai Apr 11, 2025
4c95dcc
refactor(SourceManagement): sort sources by name and improve UI for c…
andrasbacsai Apr 11, 2025
44e96e0
enhance: Add missing openapi items to PrivateKey
LaurenceJJones Apr 11, 2025
78ae93f
add new variable S3_REGION
SrJooJ Apr 12, 2025
de839e3
refactor(Email): streamline SMTP and resend settings handling in copy…
andrasbacsai Apr 12, 2025
6eea3c5
refactor(Email): enhance error handling in SMTP and resend methods by…
andrasbacsai Apr 12, 2025
4bc9786
refactor(DynamicConfigurations): improve handling of dynamic configur…
andrasbacsai Apr 13, 2025
1ab7405
refactor(ServicesGenerate): update command signature from 'services:g…
andrasbacsai Apr 13, 2025
3803bac
refactor(Dockerfile): streamline RUN commands for improved readabilit…
andrasbacsai Apr 13, 2025
5cc189b
refactor(Dockerfile): reintroduce service generation command in the b…
andrasbacsai Apr 13, 2025
28fab56
Merge pull request #5601 from SrJooJ/main
andrasbacsai Apr 13, 2025
927caef
feat(OpenApi): enhance OpenAPI specifications by adding UUID paramete…
andrasbacsai Apr 13, 2025
41e874e
fix(pre-commit): correct input redirection for /dev/tty and add OpenA…
andrasbacsai Apr 13, 2025
ad002fa
chore(versions): update nightly version to 4.0.0-beta.410
andrasbacsai Apr 13, 2025
2011167
chore(pre-commit): remove OpenAPI generation command from pre-commit …
andrasbacsai Apr 13, 2025
93ec2f8
refactor(commands): reorganize OpenAPI and Services generation comman…
andrasbacsai Apr 13, 2025
79f9b85
refactor(Dockerfile): remove service generation command from the buil…
andrasbacsai Apr 13, 2025
d21fee8
Merge pull request #5598 from LaurenceJJones/public_key_openapi_spec
andrasbacsai Apr 13, 2025
5b9753e
refactor(navbar-delete-team): simplify modal confirmation layout and …
andrasbacsai Apr 13, 2025
c375a8e
fix(pricing-plans): adjust grid class for improved layout consistency…
andrasbacsai Apr 13, 2025
de2bd16
fix(mongodb): Also apply custom config when SSL is enabled
ash-vd Apr 13, 2025
eda1e18
fix(migrations): make stripe_comment field nullable in subscriptions …
andrasbacsai Apr 14, 2025
8b3c4d7
refactor(Server): remove debug logging from isReachableChanged method…
andrasbacsai Apr 14, 2025
32326bb
feat(subscription): enhance subscription management with loading stat…
andrasbacsai Apr 14, 2025
f3cd5d5
Merge pull request #5594 from coollabsio/dependabot/npm_and_yarn/vite…
andrasbacsai Apr 14, 2025
0f0497c
chore(versions): update realtime version to 1.0.7 and bump dependenci…
andrasbacsai Apr 14, 2025
f453b61
Merge pull request #5579 from YaRissi/fix/compose-service-duplicate
andrasbacsai Apr 14, 2025
3701c18
Merge pull request #5606 from ash-vd/fix/mongodb-config-with-ssl
andrasbacsai Apr 14, 2025
ac390ab
fix(templates): correct casing of denoKV references in service templa…
andrasbacsai Apr 14, 2025
9ae5ec0
Update app/Livewire/Subscription/Index.php
andrasbacsai Apr 14, 2025
06b8d78
fix(deployment): handle missing destination in deployment process to …
andrasbacsai Apr 14, 2025
db153a3
Merge pull request #5583 from coollabsio/next
andrasbacsai Apr 14, 2025
f2c298b
docs: update changelog
github-actions[bot] Apr 14, 2025
77c8ed7
chore(deps): update axios and dotenv versions in package-lock.json; b…
andrasbacsai Apr 14, 2025
40963ad
Merge pull request #5610 from coollabsio/next
andrasbacsai Apr 14, 2025
d37a960
docs: update changelog
github-actions[bot] Apr 14, 2025
2e3d7ad
chore(versions): bump coolify version to 4.0.0-beta.409 in configurat…
andrasbacsai Apr 15, 2025
3894023
fix(parser): transform associative array labels into key=value format…
andrasbacsai Apr 15, 2025
34b7592
fix(redis): update username and password input handling to clarify da…
andrasbacsai Apr 15, 2025
59e37e1
fix: unsend template
Seym0n Apr 15, 2025
b71aec3
refactor(source): conditionally display connected source and change s…
andrasbacsai Apr 16, 2025
ced4d92
fix(source): update connected source display to handle cases with no …
andrasbacsai Apr 16, 2025
a0d8292
Merge pull request #5616 from coollabsio/next
andrasbacsai Apr 16, 2025
6834c9e
docs: update changelog
github-actions[bot] Apr 16, 2025
786271d
chore(versions): bump coolify version to 4.0.0-beta.410 and update ni…
andrasbacsai Apr 16, 2025
4147300
feat(readme): add new sponsors Supadata AI and WZ-IT to the README
andrasbacsai Apr 16, 2025
89bf1b3
fix(application): append base directory to git branch URLs for improv…
andrasbacsai Apr 16, 2025
618e546
feat(core): Enable magic env variables for compose based applications
andrasbacsai Apr 16, 2025
b88eae9
fix: replace ports with expose
Seym0n Apr 16, 2025
7d698fa
Fix #5074 & #5611
nurdism Apr 17, 2025
79ce3d8
fix(templates): correct casing of "denokv" to "denoKV" in service tem…
andrasbacsai Apr 17, 2025
151b4b6
chore(templates): update plausible and clickhouse images to latest ve…
andrasbacsai Apr 17, 2025
2634f51
feat: Add HTTP Basic Authentication
atomicptr Apr 17, 2025
1b60fd3
Merge pull request #5633 from nurdism/main
andrasbacsai Apr 18, 2025
b78f2cc
refactor(jobs): update WithoutOverlapping middleware to use expireAft…
andrasbacsai Apr 18, 2025
a501142
fix(navbar): update error message link to use route for environment v…
andrasbacsai Apr 18, 2025
fea0771
Merge pull request #5618 from Seym0n/unsend-fix
andrasbacsai Apr 18, 2025
e2f44ed
fix(templates): update Unsend compose configuration for improved serv…
andrasbacsai Apr 18, 2025
97a440f
Merge pull request #5645 from coollabsio/next
andrasbacsai Apr 18, 2025
39e0985
docs: update changelog
github-actions[bot] Apr 18, 2025
a26d816
Update README.md
andrasbacsai Apr 19, 2025
3f9228f
fix: Add 201 json code to servers validate api response
LaurenceJJones Apr 19, 2025
c388e30
refactor(jobs): comment out unused Caddy label handling in Applicatio…
andrasbacsai Apr 20, 2025
6d12e7e
refactor(database): simplify database type checks in ServiceDatabase …
andrasbacsai Apr 21, 2025
02b6aaa
refactor(shared): remove unused ray debugging statement from newParse…
andrasbacsai Apr 21, 2025
9548c7d
fix(backup-edit): conditionally enable S3 checkbox based on available…
andrasbacsai Apr 21, 2025
d731cda
fix(source): update no sources found message for clarity
andrasbacsai Apr 22, 2025
cd2f71b
feat(deployment): add repository_project_id handling for private GitH…
andrasbacsai Apr 22, 2025
4ea00cf
refactor(applications): remove redundant error response in create_env…
andrasbacsai Apr 22, 2025
3160b8a
feat(api): enhance OpenAPI specifications with token variable and add…
andrasbacsai Apr 22, 2025
91f2865
refactor(api): restructure routes to include versioning and maintain …
andrasbacsai Apr 22, 2025
1d52df0
refactor(api): remove token variable from OpenAPI specifications for …
andrasbacsai Apr 22, 2025
bb8cc46
fix(api): correct middleware for service update route to ensure prope…
andrasbacsai Apr 22, 2025
eee57d4
fix(api): handle JSON response in service creation and update methods…
andrasbacsai Apr 22, 2025
00fe6e9
refactor(environment-variables): remove protected variable checks fro…
andrasbacsai Apr 22, 2025
a7164c4
Merge pull request #5653 from LaurenceJJones/servers_validate_json_code
andrasbacsai Apr 22, 2025
7e0373e
Merge branch 'next' into feat/add-http-basic-auth
andrasbacsai Apr 22, 2025
9e608f7
refactor(http-basic-auth): rename 'http_basic_auth_enable' to 'http_b…
andrasbacsai Apr 22, 2025
37e79b2
Merge pull request #5638 from atomicptr/feat/add-http-basic-auth
andrasbacsai Apr 22, 2025
bce8bb1
Merge branch 'next' into add-hostname
andrasbacsai Apr 22, 2025
8520bef
refactor(docker): remove debug statement and enhance hostname handlin…
andrasbacsai Apr 23, 2025
d6d76ad
Merge pull request #5551 from sebyx07/add-hostname
andrasbacsai Apr 23, 2025
e4648bc
feat(docker): add HTTP Basic Authentication support and enhance hostn…
andrasbacsai Apr 23, 2025
0dceb40
feat(api): add HTTP Basic Authentication fields to OpenAPI specificat…
andrasbacsai Apr 23, 2025
78ef80f
refactor
andrasbacsai Apr 23, 2025
5b9df7f
refactor(server): simplify proxy path logic and remove unnecessary co…
andrasbacsai Apr 23, 2025
04e1d5c
fix(docker): ensure password hashing only occurs when HTTP Basic Auth…
andrasbacsai Apr 23, 2025
08d2ad8
fix(docker): enhance hostname and GPU option validation in Docker run…
andrasbacsai Apr 23, 2025
5643a42
Merge pull request #5673 from coollabsio/next
andrasbacsai Apr 23, 2025
e4fc3d6
docs: update changelog
github-actions[bot] Apr 23, 2025
80b96b1
chore(versions): update coolify version to 4.0.0-beta.411 and nightly…
andrasbacsai Apr 23, 2025
9a36cc4
Merge pull request #5679 from coollabsio/next
andrasbacsai Apr 23, 2025
fdcbade
docs: update changelog
github-actions[bot] Apr 23, 2025
09b1007
chore(versions): update coolify version to 4.0.0-beta.412 and nightly…
andrasbacsai Apr 23, 2025
1b6931f
Merge pull request #5680 from coollabsio/next
andrasbacsai Apr 23, 2025
6a7c8ff
docs: update changelog
github-actions[bot] Apr 23, 2025
bc52042
chore(workflows): adjust workflow for announcement
peaklabs-dev Apr 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .env.production
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ PUSHER_APP_SECRET=
ROOT_USERNAME=
ROOT_USER_EMAIL=
ROOT_USER_PASSWORD=

REGISTRY_URL=ghcr.io
5 changes: 4 additions & 1 deletion .github/workflows/coolify-staging-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ name: Staging Build

on:
push:
branches-ignore: ["main", "v3"]
branches-ignore:
- main
- v3
- '**v5.x**'
paths-ignore:
- .github/workflows/coolify-helper.yml
- .github/workflows/coolify-helper-next.yml
Expand Down
691 changes: 691 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ After installing Docker (or Orbstack) and Spin, verify the installation:
- Password: `password`

2. Additional development tools:

| Tool | URL | Note |
|------|-----|------|
| Laravel Horizon (scheduler) | `http://localhost:8000/horizon` | Only accessible when logged in as root user |
Expand Down Expand Up @@ -237,9 +238,9 @@ After completing these steps, you'll have a fresh development setup.
### 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)
[Adding a New Service](https://coolify.io/docs/get-started/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)
[Contributing to the Coolify Documentation](https://github.com/coollabsio/documentation-coolify/blob/main/readme.md)
183 changes: 90 additions & 93 deletions README.md

Large diffs are not rendered by default.

69 changes: 11 additions & 58 deletions app/Actions/Database/StartDatabaseProxy.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,74 +22,27 @@ class StartDatabaseProxy

public function handle(StandaloneRedis|StandalonePostgresql|StandaloneMongodb|StandaloneMysql|StandaloneMariadb|StandaloneKeydb|StandaloneDragonfly|StandaloneClickhouse|ServiceDatabase $database)
{
$internalPort = null;
$type = $database->getMorphClass();
$databaseType = $database->database_type;
$network = data_get($database, 'destination.network');
$server = data_get($database, 'destination.server');
$containerName = data_get($database, 'uuid');
$proxyContainerName = "{$database->uuid}-proxy";
if ($database->getMorphClass() === \App\Models\ServiceDatabase::class) {
$databaseType = $database->databaseType();
// $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) {
case 'standalone-mariadb':
$type = \App\Models\StandaloneMariadb::class;
$containerName = "mariadb-{$database->service->uuid}";
break;
case 'standalone-mongodb':
$type = \App\Models\StandaloneMongodb::class;
$containerName = "mongodb-{$database->service->uuid}";
break;
case 'standalone-mysql':
$type = \App\Models\StandaloneMysql::class;
$containerName = "mysql-{$database->service->uuid}";
break;
case 'standalone-postgresql':
$type = \App\Models\StandalonePostgresql::class;
$containerName = "postgresql-{$database->service->uuid}";
break;
case 'standalone-redis':
$type = \App\Models\StandaloneRedis::class;
$containerName = "redis-{$database->service->uuid}";
break;
case 'standalone-keydb':
$type = \App\Models\StandaloneKeydb::class;
$containerName = "keydb-{$database->service->uuid}";
break;
case 'standalone-dragonfly':
$type = \App\Models\StandaloneDragonfly::class;
$containerName = "dragonfly-{$database->service->uuid}";
break;
case 'standalone-clickhouse':
$type = \App\Models\StandaloneClickhouse::class;
$containerName = "clickhouse-{$database->service->uuid}";
break;
case 'standalone-supabase/postgres':
$type = \App\Models\StandalonePostgresql::class;
$containerName = "supabase-db-{$database->service->uuid}";
break;
}
}
if ($type === \App\Models\StandaloneRedis::class) {
$internalPort = 6379;
} elseif ($type === \App\Models\StandalonePostgresql::class) {
$internalPort = 5432;
} elseif ($type === \App\Models\StandaloneMongodb::class) {
$internalPort = 27017;
} elseif ($type === \App\Models\StandaloneMysql::class) {
$internalPort = 3306;
} elseif ($type === \App\Models\StandaloneMariadb::class) {
$internalPort = 3306;
} elseif ($type === \App\Models\StandaloneKeydb::class) {
$internalPort = 6379;
} elseif ($type === \App\Models\StandaloneDragonfly::class) {
$internalPort = 6379;
} elseif ($type === \App\Models\StandaloneClickhouse::class) {
$internalPort = 9000;
$containerName = "{$database->name}-{$database->service->uuid}";
}
$internalPort = match ($databaseType) {
'standalone-mariadb', 'standalone-mysql' => 3306,
'standalone-postgresql', 'standalone-supabase/postgres' => 5432,
'standalone-redis', 'standalone-keydb', 'standalone-dragonfly' => 6379,
'standalone-clickhouse' => 9000,
'standalone-mongodb' => 27017,
default => throw new \Exception("Unsupported database type: $databaseType"),
};

$configuration_dir = database_proxy_dir($database->uuid);
$nginxconf = <<<EOF
user nginx;
Expand Down
119 changes: 113 additions & 6 deletions app/Actions/Database/StartDragonfly.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

namespace App\Actions\Database;

use App\Helpers\SslHelper;
use App\Models\SslCertificate;
use App\Models\StandaloneDragonfly;
use Lorisleiva\Actions\Concerns\AsAction;
use Symfony\Component\Yaml\Yaml;
Expand All @@ -16,24 +18,81 @@ class StartDragonfly

public string $configuration_dir;

private ?SslCertificate $ssl_certificate = null;

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.'",
"echo 'Creating directories.'",
"mkdir -p $this->configuration_dir",
"echo 'Directories created successfully.'",
];

if (! $this->database->enable_ssl) {
$this->commands[] = "rm -rf $this->configuration_dir/ssl";
$this->database->sslCertificates()->delete();
$this->database->fileStorages()
->where('resource_type', $this->database->getMorphClass())
->where('resource_id', $this->database->id)
->get()
->filter(function ($storage) {
return in_array($storage->mount_path, [
'/etc/dragonfly/certs/server.crt',
'/etc/dragonfly/certs/server.key',
]);
})
->each(function ($storage) {
$storage->delete();
});
} else {
$this->commands[] = "echo 'Setting up SSL for this database.'";
$this->commands[] = "mkdir -p $this->configuration_dir/ssl";

$server = $this->database->destination->server;
$caCert = SslCertificate::where('server_id', $server->id)->where('is_ca_certificate', true)->first();

if (! $caCert) {
$server->generateCaCertificate();
$caCert = SslCertificate::where('server_id', $server->id)->where('is_ca_certificate', true)->first();
}

if (! $caCert) {
$this->dispatch('error', 'No CA certificate found for this database. Please generate a CA certificate for this server in the server/advanced page.');

return;
}

$this->ssl_certificate = $this->database->sslCertificates()->first();

if (! $this->ssl_certificate) {
$this->commands[] = "echo 'No SSL certificate found, generating new SSL certificate for this database.'";
$this->ssl_certificate = SslHelper::generateSslCertificate(
commonName: $this->database->uuid,
resourceType: $this->database->getMorphClass(),
resourceId: $this->database->id,
serverId: $server->id,
caCert: $caCert->ssl_certificate,
caKey: $caCert->ssl_private_key,
configurationDir: $this->configuration_dir,
mountPath: '/etc/dragonfly/certs',
);
}
}

$container_name = $this->database->uuid;
$this->configuration_dir = database_configuration_dir().'/'.$container_name;

$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();
$startCommand = $this->buildStartCommand();

$docker_compose = [
'services' => [
Expand Down Expand Up @@ -70,27 +129,55 @@ public function handle(StandaloneDragonfly $database)
],
],
];

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;
}

$docker_compose['services'][$container_name]['volumes'] ??= [];

if (count($persistent_storages) > 0) {
$docker_compose['services'][$container_name]['volumes'] = $persistent_storages;
$docker_compose['services'][$container_name]['volumes'] = array_merge(
$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();
$docker_compose['services'][$container_name]['volumes'] = array_merge(
$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 ($this->database->enable_ssl) {
$docker_compose['services'][$container_name]['volumes'] = array_merge(
$docker_compose['services'][$container_name]['volumes'] ?? [],
[
[
'type' => 'bind',
'source' => '/data/coolify/ssl/coolify-ca.crt',
'target' => '/etc/dragonfly/certs/coolify-ca.crt',
'read_only' => true,
],
]
);
}

// Add custom docker run options
$docker_run_options = convertDockerRunToCompose($this->database->custom_docker_run_options);
$docker_compose = generateCustomDockerRunOptionsForDatabases($docker_run_options, $docker_compose, $container_name, $this->database->destination->network);
Expand All @@ -102,12 +189,32 @@ public function handle(StandaloneDragonfly $database)
$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";
if ($this->database->enable_ssl) {
$this->commands[] = "chown -R 999:999 $this->configuration_dir/ssl/server.key $this->configuration_dir/ssl/server.crt";
}
$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 buildStartCommand(): string
{
$command = "dragonfly --requirepass {$this->database->dragonfly_password}";

if ($this->database->enable_ssl) {
$sslArgs = [
'--tls',
'--tls_cert_file /etc/dragonfly/certs/server.crt',
'--tls_key_file /etc/dragonfly/certs/server.key',
'--tls_ca_cert_file /etc/dragonfly/certs/coolify-ca.crt',
];
$command .= ' '.implode(' ', $sslArgs);
}

return $command;
}

private function generate_local_persistent_volumes()
{
$local_persistent_volumes = [];
Expand Down
Loading