Compare commits

...

546 Commits

Author SHA1 Message Date
Mauricio Siu
2644b638d1 Merge pull request #553 from Dokploy/canary
v0.10.0
2024-10-13 16:30:00 -06:00
Mauricio Siu
8785282133 chore(version): bump version 2024-10-13 11:51:52 -06:00
Mauricio Siu
35c084af1d Merge pull request #550 from Dokploy/fix/env-parsing
fix(logs): improve logs in remote server when is error, and fix the e…
2024-10-13 11:01:28 -06:00
Mauricio Siu
b63488baba Merge pull request #547 from Dokploy/536-implement-custom-certificates-in-external-server
feat(certificates): create certificates in a remote server
2024-10-13 11:01:16 -06:00
Mauricio Siu
7e5f21b28e style: lint 2024-10-13 02:28:04 -06:00
Mauricio Siu
8d41bafb93 fix(logs): improve logs in remote server when is error, and fix the env parsing to allow any values in enviroment variables 2024-10-13 02:27:33 -06:00
Mauricio Siu
6f5049efd5 styles: lint 2024-10-12 19:33:56 -06:00
Mauricio Siu
6dd6b636e5 feat(certificates): create certificates in a remote server 2024-10-12 19:09:50 -06:00
Mauricio Siu
8488d530f3 Merge pull request #546 from Dokploy/542-cannot-save-server-address-without-lets-encrypt-email
fix(traefik): allow to save domain without letsencrypt email when the…
2024-10-12 16:58:50 -06:00
Mauricio Siu
6c61d5cdf5 Merge pull request #545 from mezotv/fix-sponsor-size
fix(website): improve sponsor logo alignment
2024-10-12 16:45:40 -06:00
Mauricio Siu
8036455c2d fix(traefik): allow to save domain without letsencrypt email when the cert is none #542 2024-10-12 16:44:10 -06:00
Dominik Koch
bf44eeab3d style: format code 2024-10-12 22:29:32 +00:00
Dominik Koch
0cd185696d fix: add target blank to links 2024-10-12 22:26:48 +00:00
Mauricio Siu
339697437a Merge pull request #544 from Dokploy/533-the-traefik-labels-get-duplicated-if-i-have-two-services-and-two-domains-in-one-docker-compose-file
fix(compose): refetch compose file when enter to the modal to prevent…
2024-10-12 16:26:43 -06:00
Dominik Koch
e0b15fe971 fix: logo alignment 2024-10-12 22:23:07 +00:00
Mauricio Siu
afc5ea43da fix(compose): refetch compose file when enter to the modal to prevent show duplicate labels 2024-10-12 16:19:49 -06:00
Mauricio Siu
bb337e819e Merge pull request #539 from mezotv/fix-typo
Fix typos and grammar errors
2024-10-12 16:11:27 -06:00
Mauricio Siu
160dd10f77 Merge pull request #538 from mezotv/update-website-sponsors
Add organization sponsors to website
2024-10-12 16:10:46 -06:00
Dominik Koch
49b096fef6 style: format code 2024-10-12 21:08:58 +00:00
Dominik Koch
4828b840cb fix: lxaer logo 2024-10-12 23:05:30 +02:00
Dominik Koch
67af70448b Update README.md 2024-10-12 23:03:09 +02:00
Dominik Koch
946acf5245 style: format code 2024-10-12 20:59:49 +00:00
Dominik Koch
390b3a835a fix: new lxaer logo 2024-10-12 22:54:46 +02:00
Dominik Koch
2842bf9a91 Update README.md 2024-10-12 22:51:56 +02:00
Dominik Koch
8a0e10f6f4 Update README.md 2024-10-12 22:51:03 +02:00
Mauricio Siu
67efa82b91 Merge pull request #537 from mezotv/organization-readme
Add missing organization to readme
2024-10-11 12:41:27 -06:00
Dominik Koch
546d6b87ea fix: get rid of typos and fix grammar 2024-10-11 20:03:20 +02:00
Dominik Koch
d012d19253 feat(web): add organization sponsors 2024-10-11 11:28:10 +02:00
Dominik Koch
e925ed9ea4 fix: add missing organization to readme 2024-10-11 11:21:20 +02:00
Mauricio Siu
0c05809d7d refactor: remove 2024-10-10 23:38:16 -06:00
Mauricio Siu
29f1631950 refactor: add dynamic import queue 2024-10-10 23:34:56 -06:00
Mauricio Siu
9c0c58035a chore; add logs for process env 2024-10-10 22:40:02 -06:00
Mauricio Siu
f4262569dd chore: add cat 2024-10-10 22:37:36 -06:00
Mauricio Siu
99cf6eae49 refactor: adjust enviroment variables 2024-10-10 22:27:25 -06:00
Mauricio Siu
0488546706 refactor: print env 2024-10-10 22:17:19 -06:00
Mauricio Siu
dc32cd71e5 refactor: add env to dist 2024-10-10 22:01:14 -06:00
Mauricio Siu
efdfd5d13c chore: print envs 2024-10-10 21:52:50 -06:00
Mauricio Siu
d31cab76f0 refactor: add flag 2024-10-10 21:52:09 -06:00
Mauricio Siu
00ed202127 refactor: add .env 2024-10-10 21:40:43 -06:00
Mauricio Siu
aaa4ca297d refacctor: add missing envs 2024-10-10 21:32:27 -06:00
Mauricio Siu
629871e683 refactor: add option to ci/cd 2024-10-10 21:22:13 -06:00
Mauricio Siu
a237c651c3 chore: add autoprefixer 2024-10-07 01:47:01 -06:00
Mauricio Siu
4f9b0d9d59 chore: remove .env 2024-10-07 01:45:16 -06:00
Mauricio Siu
b701a0b504 Merge pull request #531 from Dokploy/feat/cloud
Feat/cloud
2024-10-07 01:44:00 -06:00
Mauricio Siu
39036202bb test: fix mock zip drop 2024-10-07 01:34:35 -06:00
Mauricio Siu
4225ad83e7 chore: add docker images 2024-10-07 01:28:22 -06:00
Mauricio Siu
38c4e0ede1 chore: add build server 2024-10-07 01:16:59 -06:00
Mauricio Siu
25a64c703f chore: add pnpm run build 2024-10-07 01:08:47 -06:00
Mauricio Siu
ab5871add7 chore: biome 2024-10-07 01:05:47 -06:00
Mauricio Siu
2b0e009f6a refactor: remove feature tag 2024-10-07 00:59:07 -06:00
Mauricio Siu
9b6ea99eea refactor: remove unused files 2024-10-07 00:49:54 -06:00
Mauricio Siu
c4cf545d85 Merge branch 'canary' into feat/cloud 2024-10-07 00:31:23 -06:00
Mauricio Siu
1edd717432 Merge pull request #524 from lorenzomigliorero/feat/domains-link
feat: add dropdown link
2024-10-07 00:26:23 -06:00
Mauricio Siu
5b88af6158 refactor: remove findAdmin 2024-10-06 15:04:54 -06:00
Mauricio Siu
e995d894d8 refactor: remove docker from cloud 2024-10-06 14:27:14 -06:00
Mauricio Siu
5f56512e56 refactor: update queue jobs 2024-10-06 14:16:31 -06:00
Mauricio Siu
24e4930fc1 refactor: use connection IORedis 2024-10-06 02:57:46 -06:00
Mauricio Siu
541728805f refactor: add health path to middleware 2024-10-06 02:46:07 -06:00
Mauricio Siu
9e4bac1386 refactor: update ioredis connection 2024-10-06 02:44:35 -06:00
Mauricio Siu
ed8d32d050 chore: add type module 2024-10-06 02:25:02 -06:00
Mauricio Siu
7fb66bc58b refactor:add remote cron jobs 2024-10-06 02:19:15 -06:00
Mauricio Siu
58c06fba86 refactor(cloud): add api key for autentication between servers 2024-10-06 01:56:53 -06:00
Mauricio Siu
3cf27a068a refactor: add authorization 2024-10-06 01:37:39 -06:00
Mauricio Siu
7cfbea3f60 refactor: update 2024-10-05 22:18:33 -06:00
Mauricio Siu
7907e33431 refactor: update namefile 2024-10-05 22:17:44 -06:00
Mauricio Siu
89f3078ce5 refactor: update package name 2024-10-05 22:15:57 -06:00
Mauricio Siu
f3ce69b656 refactor: rename builders to server 2024-10-05 22:15:47 -06:00
Mauricio Siu
43555cdabe feat(schedules): add schedules server 2024-10-05 22:11:38 -06:00
Mauricio Siu
651bf3a303 refactor: update ref 2024-10-05 18:42:08 -06:00
Mauricio Siu
4cde1a8a7d refactor: close docker logs 2024-10-05 18:20:28 -06:00
Mauricio Siu
405efcac0b refactor: update logs listener 2024-10-05 17:34:17 -06:00
Mauricio Siu
8397de0dca refactor: close connections when the ws is not ready 2024-10-05 17:17:46 -06:00
Mauricio Siu
06b58e6495 refactor: close connection ws 2024-10-05 16:46:02 -06:00
Mauricio Siu
24db4006cf refactor: add close ws 2024-10-05 16:45:53 -06:00
Mauricio Siu
84009c5e9b refactor: add close websocket 2024-10-05 16:04:28 -06:00
Mauricio Siu
e32afde973 refactor: add status ok 2024-10-05 14:37:45 -06:00
Mauricio Siu
fecffac573 refactor: test rollback 2024-10-05 14:27:00 -06:00
Mauricio Siu
b4448e013c test: rollback 2024-10-05 14:16:23 -06:00
Mauricio Siu
c3f06a6272 feat(cloud): add healtchecks 2024-10-05 13:34:00 -06:00
Mauricio Siu
2be724f780 Update README.md 2024-10-05 02:39:50 -06:00
Mauricio Siu
bf78326c96 chore: use the same tailwindcss version 2024-10-05 01:30:09 -06:00
Mauricio Siu
4ca8722c6e refactor: optimize dockerfile 2024-10-05 01:21:39 -06:00
Mauricio Siu
e56e1eb687 refactor: add autoprefixer 2024-10-05 01:15:52 -06:00
Mauricio Siu
5a5c302bdc chore: optimize image 2024-10-05 01:11:15 -06:00
Mauricio Siu
997dc85985 refactor(api): remove deploy normal compose on the same dokploy server 2024-10-05 00:34:41 -06:00
Mauricio Siu
09ef851372 refactor(cloud): add validation to prevent create applications without server 2024-10-04 21:31:22 -06:00
Mauricio Siu
7c4987d84d refactor(cloud): add validation to prevent access to shared resources 2024-10-04 20:44:57 -06:00
Mauricio Siu
5cebf5540a refactor(cloud): add deploy to external API 2024-10-04 18:53:46 -06:00
Mauricio Siu
3df2f8e58c refactor(terminal): use ssh2 instead of cmd 2024-10-04 17:24:17 -06:00
Mauricio Siu
a642d36a23 refactor: hide handler when is cloud version 2024-10-04 15:20:47 -06:00
Mauricio Siu
72bceec62d refactor: add try catch 2024-10-04 15:16:01 -06:00
Mauricio Siu
3d32314e80 chore: update lock 2024-10-04 15:14:56 -06:00
Mauricio Siu
7259830ac1 chore: add experimental specifier resolution flag 2024-10-04 15:14:30 -06:00
Mauricio Siu
daa87c0dc7 refactor(cloud): add is cloud flag to cluters 2024-10-04 14:40:31 -06:00
Mauricio Siu
a2ee55e0e9 Merge pull request #527 from kikoncuo/fix/application-create-missing-return
fix: Application create endpoint returns value
2024-10-04 13:39:21 -06:00
Enrique
de6aeac243 fix(application.create): add missing return statement and align response with application.one 2024-10-04 11:46:14 +02:00
Lorenzo Migliorero
f640b4a87f stop propagation 2024-10-04 11:03:11 +02:00
Mauricio Siu
3747db08d4 refactor(cloud): add validation to prevent execute in cloud version 2024-10-04 01:12:14 -06:00
Mauricio Siu
ab4677ac0e refactor(auth): set null when the findAdmin is null 2024-10-04 01:01:30 -06:00
Mauricio Siu
172d55311e chore(cloud): add migrations 2024-10-04 00:04:52 -06:00
Mauricio Siu
3ce25e2ac8 chore(migrations): remove migrations 2024-10-03 23:47:34 -06:00
Mauricio Siu
388ded9aa5 feat(cloud): add deploy on remote worker 2024-10-03 23:46:26 -06:00
Mauricio Siu
767d3e1944 refactor(cloud): add validation to prevent access to shared resources 2024-10-03 19:50:17 -06:00
Mauricio Siu
ec1d6c7430 refactor(cloud): add validation to prevent access to resources from another admin 2024-10-03 19:48:49 -06:00
Mauricio Siu
8abeae5e63 refactor(cloud): validate all the routes to prevent get access from private resource 2024-10-03 19:34:38 -06:00
Mauricio Siu
cc90d9ec9b Merge branch 'canary' into feat/cloud 2024-10-03 13:39:06 -06:00
Mauricio Siu
6b5de00fb0 chore: update dev builder command 2024-10-03 12:01:32 -06:00
Mauricio Siu
5ed96fb0ce Merge pull request #523 from lorenzomigliorero/fix/watch-mode
fix: tsx watch flag unwanted reload
2024-10-03 11:01:57 -06:00
Mauricio Siu
a73af1d578 Merge pull request #522 from lorenzomigliorero/fix/bitbucket-repositories-length
fix: bitbucket repositories length
2024-10-03 11:00:25 -06:00
Mauricio Siu
5867a27901 Merge pull request #459 from seppulcro/feat/add-roundcube-template
feat: add roundcube template
2024-10-03 10:59:41 -06:00
Lorenzo Migliorero
8f7bffc349 add fragment 2024-10-03 15:32:45 +02:00
Lorenzo Migliorero
21ee22d4f5 add dropdown link 2024-10-03 15:27:48 +02:00
Lorenzo Migliorero
fb72132a4b remove watch flag 2024-10-03 14:05:12 +02:00
Lorenzo Migliorero
ca904c15d9 remove console.log 2024-10-03 13:55:28 +02:00
Lorenzo Migliorero
682863f83e fix: repo length 2024-10-03 13:54:40 +02:00
Mauricio Siu
acd722678e Merge pull request #521 from Dokploy/canary
v0.9.4
2024-10-03 02:12:03 -06:00
Mauricio Siu
3750977f41 Merge pull request #520 from Dokploy/487-private-docker-container-pull-failed-despite-having-docker-registry-configured-in-registry
fix(registry): add option to login the registry in the remote server
2024-10-03 02:02:51 -06:00
Mauricio Siu
9b401059b0 fix(registry): add option to login the registry in the remote server 2024-10-03 01:56:50 -06:00
Mauricio Siu
6a3ef5c860 Merge pull request #519 from Dokploy/514-failing-to-refresh-docker-composeyml-from-github-repo
fix(compose): delete content when is remote server
2024-10-03 01:32:50 -06:00
seppulcro
a36518a8f0 fix: set static docker image version 2024-10-03 08:09:21 +01:00
Mauricio Siu
a5eb4b0a72 fix(compose): delete content when is remote server 2024-10-03 01:00:35 -06:00
Mauricio Siu
b5c0876dd4 Merge pull request #518 from Dokploy/515-non-admin-users-are-not-able-to-set-up-database-backup
fix(destinations): change admin to protected procedure
2024-10-03 00:53:23 -06:00
Mauricio Siu
9745d12ac8 fix(destinations): change admin to protected procedure 2024-10-03 00:48:00 -06:00
Mauricio Siu
5c72e5a452 refactor: filter by adminId 2024-10-03 00:45:46 -06:00
Mauricio Siu
600f4b2106 refactor: apply migration 2024-10-03 00:15:36 -06:00
Mauricio Siu
c12d37fe0a refactor: revent 2024-10-03 00:06:11 -06:00
Mauricio Siu
bba8d00ba2 refactor: update dockerfile 2024-10-02 23:56:09 -06:00
Mauricio Siu
78665ffbfa refactor(tabs): hide when is cloud version 2024-10-02 23:51:37 -06:00
Mauricio Siu
d41c8c70c3 feat: add ssh key 2024-10-02 22:50:01 -06:00
Mauricio Siu
f13e5d449c Revert "refactor: stash"
This reverts commit d256998677.
2024-10-02 22:37:14 -06:00
Mauricio Siu
d256998677 refactor: stash 2024-10-02 21:55:54 -06:00
Mauricio Siu
4aaf04ce74 Merge pull request #506 from AprilNEA/fix/domin-port-number-convert
Fix port input value becoming NaN
2024-10-02 13:10:17 -06:00
Mauricio Siu
ecfca9419a refactor: remove innecessary conversion 2024-10-02 13:02:20 -06:00
AprilNEA
dfd6764320 styles: format code with prettier 2024-10-02 18:22:21 +00:00
Mauricio Siu
73bf5274f5 chore(version): bump version 2024-10-01 14:28:11 -06:00
AprilNEA
fc38a42587 fix: convert final value 2024-10-01 14:36:45 +00:00
Mauricio Siu
9b255964fe Merge pull request #511 from Dokploy/509-create-compose-modal-remains-open-after-clicking-create
509 create compose modal remains open after clicking create
2024-09-30 21:33:56 -06:00
Mauricio Siu
29f55ca1a0 Merge pull request #496 from missuo/canary
feat: add update option
2024-09-30 15:04:03 -06:00
Mauricio Siu
6a5fb8faff fix(multi-server): show the servers ip instead of the main ip #502 2024-09-30 15:00:32 -06:00
Mauricio Siu
5c225c8d42 fix(modal): close the modal after the creation #509 2024-09-30 15:00:01 -06:00
AprilNEA
c1c5fc978b fix: fix number convert when string empty 2024-09-30 08:35:49 +00:00
Mauricio Siu
ffd19f591d chore: add package manager 2024-09-30 01:00:53 -06:00
Mauricio Siu
81a41a7f31 refactor: update healtcheck 2024-09-30 00:54:49 -06:00
Mauricio Siu
1c9b704ecc refactor: update redis url 2024-09-30 00:51:07 -06:00
Mauricio Siu
edf1fdedf0 refactor: update paths build 2024-09-30 00:47:47 -06:00
Mauricio Siu
8484649071 refactor: update 2024-09-30 00:44:33 -06:00
Mauricio Siu
1e68248611 refactor: update image 2024-09-30 00:41:21 -06:00
Mauricio Siu
b3e35c5838 refactor: upate dockerfile 2024-09-30 00:40:43 -06:00
Mauricio Siu
ddd4ba8135 refactor: add dockerfile 2024-09-30 00:39:53 -06:00
Mauricio Siu
539544d0de refactor: update 2024-09-30 00:38:22 -06:00
Mauricio Siu
123b5d098b refactor: update install 2024-09-30 00:32:54 -06:00
Mauricio Siu
796a9ca11f refactor: add builder workspace 2024-09-30 00:31:56 -06:00
Mauricio Siu
2872ef3ccb feat(api): add dockerfile api 2024-09-30 00:27:14 -06:00
Mauricio Siu
06a772e344 chore: add dotenv 2024-09-29 22:55:41 -06:00
Mauricio Siu
e99666f4c0 fix(esm): add tsc alias 2024-09-29 21:43:25 -06:00
Mauricio Siu
bd243d79e2 refactor: remove logs 2024-09-29 21:01:24 -06:00
Vincent Yang
18b4b23f79 feat: add update option for canary and feature tag 2024-09-29 22:45:39 -04:00
Mauricio Siu
071a9d5104 refactor: cleanup dependencies 2024-09-29 20:35:25 -06:00
Mauricio Siu
61ebd1b16e refactor(server): remove files 2024-09-29 19:14:41 -06:00
Mauricio Siu
9836c988a0 refactor(build): update imports 2024-09-29 18:53:32 -06:00
Mauricio Siu
03d7738032 refactor(dockerfile): update dockerfile 2024-09-29 18:49:07 -06:00
Mauricio Siu
98aa474975 refactor(test): update paths and mocks 2024-09-29 18:44:07 -06:00
Mauricio Siu
7bd6b66551 refactor(multi-server): update path imports 2024-09-29 18:04:45 -06:00
Mauricio Siu
727e50648e Merge pull request #501 from Dokploy/canary
v0.9.3
2024-09-29 16:30:43 -06:00
Mauricio Siu
0b2b20caeb chore(version): bump version 2024-09-29 16:24:35 -06:00
Mauricio Siu
6cc64b4454 refactior(terminal): add port to server connect 2024-09-29 16:24:09 -06:00
Mauricio Siu
349bc89851 Merge pull request #500 from Dokploy/canary
v0.9.2
2024-09-29 14:16:56 -06:00
Mauricio Siu
7046d05f63 Merge pull request #499 from Dokploy/fix/update-ports-validation-
fix(multi-server): remove string validation on port
2024-09-29 14:07:00 -06:00
Mauricio Siu
cef21ac8b5 fix(multi-server): remove string validation on port 2024-09-29 13:31:38 -06:00
Mauricio Siu
2ae7e562bb refactor(server): remove files 2024-09-29 13:28:24 -06:00
Mauricio Siu
e4b998c608 refactor(server): update imports 2024-09-29 11:55:29 -06:00
Mauricio Siu
9b7aacc934 refactor(server): split logic in to packages 2024-09-29 02:28:58 -06:00
Vincent Young
7027f39c48 feat: add update option 2024-09-28 15:06:20 -04:00
Mauricio Siu
9f6f872536 Merge pull request #495 from Dokploy/canary
v0.9.1
2024-09-28 12:00:04 -06:00
Mauricio Siu
cb03b153ac Merge pull request #494 from Dokploy/fix/swagger-token
Fix/swagger token
2024-09-28 02:31:39 -06:00
Mauricio Siu
e5d7a0cb10 Merge pull request #493 from Dokploy/491-bug-nixpacks-publish-directory-issues-with-multi-level-paths
fix(nixpacks): adjust build path on nixpacks static
2024-09-28 02:30:29 -06:00
Mauricio Siu
bf65bc9462 chore(lint): format 2024-09-28 02:25:06 -06:00
Mauricio Siu
b48b9765cd fix(nixpacks): adjust build path on nixpacks static 2024-09-28 02:23:30 -06:00
Mauricio Siu
7cce02f74d Merge pull request #489 from Dokploy/docs/488-env-editor-not-support-multiline-variables
docs: add explanation how to use multiline env variables
2024-09-27 22:38:36 -06:00
Ben
3dc3672406 docs: add explanation how to use multiline env variables 2024-09-27 19:30:41 +02:00
Mauricio Siu
bbfe095045 chore(version): bump version 2024-09-27 11:23:44 -06:00
Mauricio Siu
65c1001751 fix(swagger): add mising validation 2024-09-27 11:22:52 -06:00
Mauricio Siu
5212bde021 Merge pull request #486 from Dokploy/333-add-flexible-wwwnon-www-redirect-option
#333 add flexible www/non-www redirect option
2024-09-27 00:42:30 -06:00
Ben
9059f42b03 refactor: display certificate select field after https switch field inside add-domain dialogs 2024-09-26 13:53:10 +02:00
Ben
3b9f5d6f5c feat: add presets for add-redirect dialog 2024-09-26 13:14:14 +02:00
seppulcro
0aff344bc0 fix: change tags for roundcube template 2024-09-24 17:27:11 +01:00
seppulcro
4715f34e15 fix: mdx-components formatting with biome 2024-09-24 17:01:24 +01:00
seppulcro
59386ed4b7 fix: Update docs; Fix useMDXComponents for li override: add missing id for correct remark-gfm footnotes functionallity 2024-09-23 16:13:16 +01:00
Mauricio Siu
21dee4abac refactor: update social networks 2024-09-22 20:03:48 -06:00
Mauricio Siu
e378d89477 Merge pull request #475 from Dokploy/canary
v0.9.0
2024-09-22 19:38:12 -06:00
Mauricio Siu
b04c1206e4 refactor(multi-server): update logs 2024-09-22 19:28:19 -06:00
Mauricio Siu
639bc0e8db chore(version): bump version 2024-09-22 19:17:39 -06:00
Mauricio Siu
9a850d388d Merge pull request #453 from mpcref/patch-1
Generate valid appName on changing name
2024-09-22 19:07:09 -06:00
Mauricio Siu
6c5c374139 feat(docs): add multi server docs and troubleshooting 2024-09-22 18:54:32 -06:00
Mauricio Siu
0b05f8b83c Merge pull request #469 from Dokploy/139-multi-server-feature
139 multi server feature
2024-09-22 17:20:26 -06:00
Mauricio Siu
63d5b775e6 refactor(multi-server): add config 2024-09-22 17:18:07 -06:00
Mauricio Siu
cb16de63df refactor(multi-server): copy the right value 2024-09-22 17:12:28 -06:00
Mauricio Siu
31a4a0814e refactor: remove logs 2024-09-22 16:51:31 -06:00
Mauricio Siu
14302ed240 refactor: remove imports 2024-09-22 16:49:07 -06:00
Mauricio Siu
31c55f772d refactor(multi-server): remove logs 2024-09-22 16:37:57 -06:00
Mauricio Siu
f0f34df13c refactor(multi-server): improve alerts and add instructions to ssh keys 2024-09-22 13:57:13 -06:00
Mauricio Siu
1a877340d3 refactor(multi-server): delete server only if the server doesn't have associated services 2024-09-22 11:56:31 -06:00
Mauricio Siu
f7e43fa1c1 chore(migrations): apply single migration 2024-09-22 01:00:19 -06:00
Mauricio Siu
906906102b fix(backups): remove schedule when updating to prevent to create another cron job #452 2024-09-22 00:39:19 -06:00
Mauricio Siu
245a5175a8 refactor(compose): hide enviroment when is docker stack 2024-09-22 00:06:49 -06:00
Mauricio Siu
f427014f52 chore(lint): apply lint 2024-09-21 23:49:42 -06:00
Mauricio Siu
0465a71d86 feat(multi-server): enable docker terminal inside of containers 2024-09-21 23:49:00 -06:00
Mauricio Siu
3de8a18ef9 Merge branch 'canary' into 139-multi-server-feature 2024-09-21 22:55:15 -06:00
Mauricio Siu
e317d0c808 Merge branch 'canary' into 139-multi-server-feature 2024-09-21 22:52:44 -06:00
Mauricio Siu
ff482ffe28 refactor(multi-server): add docker cleanup cron 2024-09-21 22:47:19 -06:00
Mauricio Siu
82588f3e16 refactor(multi-server): add flag to queues 2024-09-21 21:57:53 -06:00
Mauricio Siu
069f1a7b7a refactor(multi-server): add serverIp 2024-09-21 21:17:03 -06:00
Mauricio Siu
807137d3b1 refactor(multi-server): add modals and separate server actions 2024-09-21 20:02:37 -06:00
Mauricio Siu
c03c154fc4 feat(multi-server): add docker containers view to servers 2024-09-21 15:16:15 -06:00
Mauricio Siu
698ff9e918 refactor(multi server): rename functions 2024-09-21 02:10:25 -06:00
Mauricio Siu
8bf6a22db8 feat(multi server): add env and toggle dashboard remote 2024-09-21 01:44:31 -06:00
Mauricio Siu
497d45129c feat(multi-server): add actions to the server 2024-09-21 00:06:41 -06:00
Mauricio Siu
0b22b694e6 refactor: add conditional to prevent access to terminal when is not server 2024-09-20 01:33:06 -06:00
Mauricio Siu
ee5516bb91 refactor(server): throw error when authentication fails 2024-09-20 00:15:25 -06:00
Mauricio Siu
e90b98e629 refactor: add warning when using keyboard interactive 2024-09-19 23:51:40 -06:00
Mauricio Siu
ff382d2029 Update installation.mdx 2024-09-19 23:33:36 -06:00
Mauricio Siu
4a37f85a51 chore: update dockerfile 2024-09-19 22:59:14 -06:00
Mauricio Siu
6bdc833413 chore: add unzip and update rclone installation command 2024-09-19 22:56:59 -06:00
Mauricio Siu
17a64a9402 refactor: add conditional to prevent have value in serverId 2024-09-19 22:51:18 -06:00
Mauricio Siu
a22b0797b1 refactor(dockerfile): remove sudo 2024-09-19 22:39:28 -06:00
Mauricio Siu
f3b351245a chore(ci/cd): add feature tag 2024-09-19 22:34:21 -06:00
Mauricio Siu
0cb74c5fde chore(license): update license 2024-09-19 22:28:29 -06:00
Mauricio Siu
9a828d4966 refactor(linter): format files 2024-09-19 22:25:25 -06:00
Mauricio Siu
4845c1ad5d refactor(multi-server): use rclone for databases backup local and external server 2024-09-19 21:56:45 -06:00
Mauricio Siu
6159786dfe feat(multi-server): add backups remote server 2024-09-19 21:20:25 -06:00
Mauricio Siu
b473062f40 Merge pull request #468 from max-degterev/canary
Missing return for entire domain creation transaction
2024-09-19 20:56:46 -06:00
Max Degterev
6c08f33ebb missing transaction return 2024-09-20 01:42:28 +02:00
Mauricio Siu
63e7eacae9 chore(version): bump version 2024-09-19 16:37:00 -06:00
Mauricio Siu
f4ab588516 Merge pull request #466 from Dokploy/canary
v0.8.3
2024-09-19 16:01:27 -06:00
Mauricio Siu
3ded0d21d0 chore(version): bump version 2024-09-19 15:48:09 -06:00
Mauricio Siu
9ee8fb1894 Merge pull request #465 from max-degterev/canary
Fix domain creation not returning domain data
2024-09-19 15:47:26 -06:00
Max Degterev
72b1600cd4 linter errors 2024-09-19 23:23:47 +02:00
Max Degterev
04a59c5e21 linter errors 2024-09-19 23:21:26 +02:00
Max Degterev
c8f990d541 fix domain creation not returning domain data 2024-09-19 23:01:24 +02:00
seppulcro
5b0bf99cbf fix: update roundcube template remove bad chars 2024-09-19 14:40:20 +01:00
seppulcro
8e227a3286 fix: update roundcube template to match spec 2024-09-19 08:37:37 +01:00
Mauricio Siu
54f855e738 refactor(backups): wip postgres remote backups 2024-09-19 00:50:26 -06:00
Mauricio Siu
65a70c09c1 Merge pull request #463 from Dokploy/460-incorrect-environment-database_url
fix(compose): prevent to pass dokploy database url in docker compose …
2024-09-18 23:13:10 -06:00
Mauricio Siu
f25d78a87d fix(compose): prevent to pass dokploy database url in docker compose containers #460 2024-09-18 23:06:40 -06:00
Mauricio Siu
79f39db502 refactor(multi-server): wip remote backups 2024-09-18 23:03:54 -06:00
Mauricio Siu
a46e7759b2 refactor(multi-server): add rclone to multi server 2024-09-18 00:40:52 -06:00
seppulcro
869e58739f feat: add roundcube template 2024-09-17 19:57:54 +01:00
Mauricio Siu
f001a50278 refactor(multi-server): show all the servers 2024-09-17 00:51:49 -06:00
Mauricio Siu
4c3bc8efdc refactor(deployment): set status error when application or compose have troubles when creating deployment log 2024-09-17 00:49:21 -06:00
Mauricio Siu
a591e02ffa refactor(multi-server): add deploy templates on different servers 2024-09-17 00:38:27 -06:00
Mauricio Siu
abe787593c refactor(multi-server): remove databases and hide monitoring when using deploy on server 2024-09-17 00:05:47 -06:00
Mauricio Siu
9b312cd9d7 refactor(multi-server): adapt paths on server and in dokploy ui 2024-09-16 23:49:24 -06:00
Mauricio Siu
4d8a0ba58f Merge pull request #457 from Dokploy/canary
v0.8.2
2024-09-16 15:57:20 -06:00
Mauricio Siu
66a4e86209 Merge pull request #456 from Dokploy/439-unable-to-open-swagger
439 unable to open swagger
2024-09-16 15:47:21 -06:00
Mauricio Siu
92df2472ae chore(version): bump version 2024-09-16 15:22:50 -06:00
Mauricio Siu
5f558f3773 fix(cluster): add registry none when is empty registry id 2024-09-16 15:21:39 -06:00
Mauricio Siu
754bb75e2a fix(settings): remove stats logs from swagger 2024-09-16 15:19:26 -06:00
Mauricio Siu
c84d39a20f refactor: remove redis 2024-09-16 15:16:51 -06:00
Michiel Crefcoeur
847d6ecab1 add trailing comma's 2024-09-16 22:21:12 +02:00
Michiel Crefcoeur
8f83ecb9ef formatting 2024-09-16 22:20:02 +02:00
Michiel Crefcoeur
2f9448dde9 corrections 2024-09-16 22:13:30 +02:00
Mauricio Siu
6415a66603 Merge pull request #454 from mpcref/patch-2
Corrected language for creating applications from a template
2024-09-16 13:07:43 -06:00
Michiel Crefcoeur
66567c8f2b obey formatting even though it looks weird 2024-09-16 18:45:22 +00:00
Michiel Crefcoeur
e1ec0aee69 replaceAll 2024-09-16 10:50:46 -07:00
Michiel Crefcoeur
5b5aeb545a Satisfy CI? 2024-09-16 09:40:53 -07:00
Michiel Crefcoeur
12c263c1ce Corrected language for creating applications from a template
The UI used the word "Deploy" while actually it's creating a new application from a template and adding it to the project. I fixed some of the language to better reflect what it does.
2024-09-16 07:58:34 -07:00
Michiel Crefcoeur
7f378b12ae and for database 2024-09-16 07:37:23 -07:00
Michiel Crefcoeur
fac984d299 same thing for compose 2024-09-16 07:35:59 -07:00
Michiel Crefcoeur
4f3eb7b362 Generate valid appName on changing name
The same can probably also be done at other places. Should probably be solved in a generic way.
2024-09-16 07:25:16 -07:00
Mauricio Siu
d8d0b60cb3 refactor(multi-server): replace executeCommand with execAsyncRemote 2024-09-16 00:40:11 -06:00
Mauricio Siu
19295ba746 feat(multi server): add support for drag n drop 2024-09-15 17:05:17 -06:00
Mauricio Siu
0d3c978aad refactor(deployments): improve build error 2024-09-15 14:48:40 -06:00
Mauricio Siu
d2c8632c4f refactor(server): add support for multi server 2024-09-15 01:24:55 -06:00
Mauricio Siu
b419da427f chore: add dokploy dashboard in readme 2024-09-13 13:54:03 -06:00
Mauricio Siu
033bf66405 chore: add dokploy dashboard in readme 2024-09-13 13:49:42 -06:00
Mauricio Siu
c549ea17d8 refactor(multi-server): add error support 2024-09-13 01:06:46 -06:00
Mauricio Siu
c412dabc54 refactor(multi-server): fix deploy on docker compose 2024-09-13 01:03:38 -06:00
Mauricio Siu
0bd0da2ee4 fix(raw): add raw compose remote 2024-09-12 01:44:21 -06:00
Mauricio Siu
bf58ae0f0f feat(remote): add docker compose remote 2024-09-12 01:33:33 -06:00
Mauricio Siu
e7ed3c300b Update installation.mdx 2024-09-10 17:08:14 -06:00
Mauricio Siu
f876457fbd Merge pull request #437 from exi66/fix/invalid-glitchtip-git-link
fix: invalid glitchtip git link
2024-09-10 10:53:30 -06:00
Mauricio Siu
a8d714c20d feat: add multi server compose 2024-09-10 01:11:15 -06:00
Mauricio Siu
86f1bf31b8 feat: add reload, stop and start in remote server 2024-09-09 23:46:24 -06:00
Mauricio Siu
95f75fdccb feat: add application and databases external servers 2024-09-09 15:58:58 -06:00
exi66
ac4f327775 fix: invalid glitchtip git link 2024-09-09 21:01:00 +04:00
Mauricio Siu
6c0205c0d9 Merge pull request #436 from Dokploy/433-service-stays-running-if-project-deleted
fix: add missing compose .length #433
2024-09-09 09:40:56 -06:00
Mauricio Siu
950c0abf9d Merge pull request #434 from exi66/canary
fix: invalid template source path
2024-09-09 09:39:59 -06:00
Mauricio Siu
8b66a5ca9e fix: add missing compose .length #433 2024-09-09 09:36:10 -06:00
Mauricio Siu
5afe1645a0 feat: add domains in external server 2024-09-09 09:35:02 -06:00
exi66
4a82125612 fix: invalid template source path 2024-09-09 17:13:14 +04:00
Mauricio Siu
3bb19cd324 Merge pull request #432 from Dokploy/feat/sponsors-web
feat: add sponsors section
2024-09-09 00:47:14 -06:00
Mauricio Siu
8c121a07aa refactor: remove flex wrap 2024-09-09 00:45:32 -06:00
Mauricio Siu
d4c8c63691 feat: add sponsors section 2024-09-09 00:44:23 -06:00
Mauricio Siu
cf06162be7 refactor: show logs to each application and database 2024-09-09 00:14:08 -06:00
Mauricio Siu
ea5349c844 feat: add logs for each application 2024-09-08 23:11:39 -06:00
Mauricio Siu
6007427a6c feat: add deploy databases to external server 2024-09-08 22:56:21 -06:00
Mauricio Siu
0a889c5db1 feat: deploy compose on external servers 2024-09-08 22:40:42 -06:00
Mauricio Siu
3d60236b36 feat: add redis installation on server and deploy applications on servers 2024-09-08 22:10:24 -06:00
Mauricio Siu
83009fd0b7 Merge pull request #430 from siddiquipro/canary
docs: removed duplicates from examples
2024-09-08 15:39:04 -06:00
Mohammd Siddiqui
b9c7e5f6bb documentation 2024-09-08 18:36:50 +01:00
Mauricio Siu
1a34ba175e refactor: simplify docker commands 2024-09-08 01:52:47 -06:00
Mauricio Siu
bd0bbdea26 feat: init multi server feature 2024-09-08 01:45:39 -06:00
Mauricio Siu
0b18f86a91 Merge pull request #421 from PaiJi/feat/add-website-translation-zhHans
feat: add website translation for zh-Hans
2024-09-07 16:17:12 -06:00
Mauricio Siu
e88cd11041 Merge pull request #427 from Dokploy/canary
v0.8.1
2024-09-07 13:25:36 -06:00
Mauricio Siu
194e39fa51 chore: bump version 2024-09-07 13:17:57 -06:00
Mauricio Siu
1bec376f6d Merge pull request #426 from Dokploy/fix/correct-path-compose
Fix/correct path compose
2024-09-07 13:18:44 -06:00
Mauricio Siu
9766e590b0 fix(requests): move total count to up 2024-09-07 13:13:55 -06:00
Mauricio Siu
685a825881 fix(compose): pass flag to detect is a composde service 2024-09-07 13:05:03 -06:00
Mauricio Siu
c152304c15 Merge pull request #425 from SashaGoncharov19/canary
feat: added gitea template
2024-09-07 12:57:35 -06:00
sashagoncharov19
b50c5c1363 feat: added gitea template 2024-09-07 12:39:09 +00:00
JiPai
6e6df2c771 chore(website): fix CI failed 2024-09-07 17:05:14 +08:00
Mauricio Siu
5f174a883b Merge pull request #424 from Dokploy/canary
v0.8.0
2024-09-07 00:55:08 -06:00
Mauricio Siu
05d494ad11 chore: bump version 2024-09-07 00:43:55 -06:00
Mauricio Siu
78ed940280 refactor: add slugify value 2024-09-07 00:40:44 -06:00
JiPai
189c2b768d chore: try fix lint 2024-09-07 14:30:47 +08:00
Mauricio Siu
22b675373a refactor: use gitlab properties from error clone requirements 2024-09-07 00:27:43 -06:00
Mauricio Siu
e6a55920b5 fix: filter logs correctly by dokploy ui 2024-09-06 23:22:12 -06:00
Mauricio Siu
25753b6027 refactor: update total count 2024-09-06 23:04:34 -06:00
Mauricio Siu
7bdb572f91 Merge pull request #423 from Dokploy/refactor/requests
Refactor/requests
2024-09-06 22:48:26 -06:00
Mauricio Siu
922dcc5de8 chore: biome 2024-09-06 22:41:58 -06:00
Mauricio Siu
acdc0ce1b0 refactor: add correct service name filter 2024-09-06 22:39:38 -06:00
Mauricio Siu
e57f8a32ce refactor(requests): simplify logic 2024-09-06 22:38:32 -06:00
JiPai
c482230995 chore(website): make biome happy 2024-09-06 15:42:50 +08:00
Mauricio Siu
d3a54163bf refactor: add option to activate the request distribution 2024-09-06 01:32:14 -06:00
JiPai
7acb86a83e chore(website): update en FAQ content 2024-09-06 13:42:07 +08:00
JiPai
3e6a519c8b feat(website): add language switch select 2024-09-06 13:42:07 +08:00
JiPai
c3ccd2a6b7 feat: use i18n link component 2024-09-06 13:42:07 +08:00
JiPai
94587c3472 feat: add i18n docs link 2024-09-06 13:42:07 +08:00
JiPai
27b83e471e feat: add translation for not-found 2024-09-06 13:42:07 +08:00
JiPai
137c219402 feat: clean not-found 2024-09-06 13:42:07 +08:00
JiPai
fe032d3d0f feat: add translate for zh-Hans 2024-09-06 13:42:07 +08:00
JiPai
d3108ebf65 feat: let not-found page work with locale 2024-09-06 13:42:06 +08:00
JiPai
458ddc6e0a chore(config): add tabWidth to prettier config for avoid differences among contributors 2024-09-06 13:42:06 +08:00
JiPai
9c36f30bb0 feat: add i18n dependency to website workspace 2024-09-06 13:42:06 +08:00
Mauricio Siu
c4dca57614 refactor: filter count by dokploy service 2024-09-05 21:52:48 -06:00
Mauricio Siu
d88633f2c6 Merge pull request #420 from Dokploy/feat/requests
Feat(Monitoring Logs)
2024-09-05 11:31:31 -06:00
Mauricio Siu
c64dd0d6ff refactor: add missing fields 2024-09-05 11:24:51 -06:00
Mauricio Siu
bcbc5da30e chore: add new rule 2024-09-05 11:21:54 -06:00
Mauricio Siu
e588551c33 test: update properties 2024-09-05 11:19:58 -06:00
Mauricio Siu
081cae724b chore: biome lint 2024-09-05 11:17:02 -06:00
Mauricio Siu
ae972ba1dd refactor: remove validation 2024-09-05 01:31:36 -06:00
Mauricio Siu
32bb6a8087 remove 2024-09-05 01:28:25 -06:00
Mauricio Siu
eb27b0305e remove 2024-09-05 01:27:01 -06:00
Mauricio Siu
65dbf80f84 remove 2024-09-05 01:26:19 -06:00
Mauricio Siu
fd17f3f25c remove 2024-09-05 01:25:37 -06:00
Mauricio Siu
3803a16bf5 feat: download json log 2024-09-05 01:16:28 -06:00
Mauricio Siu
bba51fcd11 refactor: remove sort level column 2024-09-05 01:13:41 -06:00
Mauricio Siu
66cd434839 refactor: remove router 2024-09-05 01:06:35 -06:00
Mauricio Siu
4f49a10aef Merge branch 'canary' into feat/requests 2024-09-05 00:17:40 -06:00
Mauricio Siu
b43194df18 fix: remove duplicate prefix 2024-09-04 14:49:40 -06:00
Mauricio Siu
cf6549f2a3 refactor: remove product hunt 2024-09-04 14:39:47 -06:00
Mauricio Siu
2a554f6279 Merge pull request #417 from Dokploy/fix/docker-compose-hosts
Fix/docker compose hosts
2024-09-04 14:20:54 -06:00
Mauricio Siu
86139bb47d Merge pull request #414 from SashaGoncharov19/canary
feat: added restart button for containers
2024-09-04 09:56:45 -06:00
sashagoncharov19
21a646ce66 fix: linting 2024-09-04 10:49:38 +00:00
Mauricio Siu
bc673d6f67 revert: add back prefix to test 2024-09-04 00:08:10 -06:00
Mauricio Siu
fca0abd585 refactor: fix responsive 2024-09-04 00:02:04 -06:00
Mauricio Siu
b6fd92aadd refactor: change prefix to suffix 2024-09-03 23:58:56 -06:00
Mauricio Siu
e67dbb4758 Update README.md 2024-09-03 23:41:05 -06:00
Mauricio Siu
beb84554e1 refactor: remove unnecesary prefix validation 2024-09-03 23:32:34 -06:00
Mauricio Siu
9c89208d83 refactor: retrieve the correct names when adding a prefix 2024-09-03 23:22:24 -06:00
Mauricio Siu
a3be030fac feat: add randomize compose by prefix 2024-09-03 22:56:38 -06:00
sashagoncharov19
7c920dde71 fix:
- Added isLoading prop
- Changed notification to container name
- Eslint fix
2024-09-04 04:56:36 +00:00
sashagoncharov19
b1b01373ca feat: added restart button for containers 2024-09-03 19:25:51 +00:00
Mauricio Siu
39f6fb5af3 feat(test): add test to prevent add hash to dokploy-network 2024-09-03 01:24:06 -06:00
Mauricio Siu
9bac042498 Merge pull request #404 from GaKireiTsuki/canary
docs: add chinese translation
2024-09-02 11:59:55 -06:00
Mauricio Siu
fae091d183 Merge pull request #400 from iksaku/feat/docker-build-stage
feat(docker): Multi-stage Builds
2024-09-02 00:09:20 -06:00
Mauricio Siu
2929e01f09 refactor: add missing prop 2024-09-02 00:01:47 -06:00
Mauricio Siu
8b2fd07a27 refactor: biome lint 2024-09-01 23:59:48 -06:00
Mauricio Siu
a9fa017252 refactor: update migration 2024-09-01 23:53:52 -06:00
Mauricio Siu
e1681f0f03 Merge branch 'canary' into feat/docker-build-stage 2024-09-01 23:52:19 -06:00
Mauricio Siu
5242ad573f refactor: update body 2024-09-01 23:46:38 -06:00
加藤恵
0d6c237223 Merge branch 'Dokploy:canary' into canary 2024-09-02 13:41:12 +08:00
Mauricio Siu
f43776d27d Merge pull request #403 from Dokploy/98-connect-multiple-github-organizations
Feat(Git Providers): support for github, gitlab, bitbucket
2024-09-01 23:36:34 -06:00
Mauricio Siu
c6638b9fc9 refactor: change variable name 2024-09-01 23:30:25 -06:00
Mauricio Siu
2d56522733 refactor: add domain alert to deploy is required after domain action 2024-09-01 23:29:14 -06:00
Mauricio Siu
463fcd17e7 refactor(docs): add information about new providers 2024-09-01 23:20:47 -06:00
GaKireiTsuki
ee98637072 docs: add chinese translation 2024-09-02 13:17:56 +08:00
Mauricio Siu
d9f5d20473 chore(docs): update api.json endpoints 2024-09-01 23:11:17 -06:00
Mauricio Siu
2874c45227 chore: biome lint 2024-09-01 22:41:25 -06:00
Mauricio Siu
8a7ceae03a chore: remove unused deps 2024-09-01 22:39:03 -06:00
Mauricio Siu
f9b1194d16 feat: add empty states to git providers 2024-09-01 22:20:06 -06:00
Mauricio Siu
8275aec7d1 refactor: add single migration file 2024-09-01 22:12:37 -06:00
Mauricio Siu
2593736179 refactor: update gitlab update name 2024-09-01 22:07:40 -06:00
Mauricio Siu
68d2e73e7a feat: add test connection github 2024-09-01 22:00:10 -06:00
Mauricio Siu
99f63597a8 feat: add test connection bitbucket and gitlab 2024-09-01 21:49:59 -06:00
Mauricio Siu
d261fd4efe refactor: cleanup git provider router 2024-09-01 19:47:21 -06:00
Mauricio Siu
32ebd9b3b9 refactor: simplify naming schema 2024-09-01 19:34:25 -06:00
Mauricio Siu
879311c332 fix: add validation to prevent overwrite user 2024-09-01 19:12:26 -06:00
Mauricio Siu
1650e1bb74 feat: add permission to access to git providers 2024-09-01 18:56:13 -06:00
Mauricio Siu
58aaf6e002 refactor: add gitlab and bitbucket webhook support 2024-09-01 17:50:00 -06:00
Mauricio Siu
d57bbff87c feat: add providers to compose 2024-09-01 17:35:44 -06:00
Mauricio Siu
4c99e6000a refactor: remove unused api github routes 2024-09-01 14:57:42 -06:00
Mauricio Siu
2ec364ed68 remove 2024-09-01 14:52:34 -06:00
Mauricio Siu
f05c811bdc fix(webhooks): update github webhook validation 2024-09-01 14:51:03 -06:00
Mauricio Siu
e609714f1e refactor: add bitbucket organizations 2024-09-01 13:36:54 -06:00
Mauricio Siu
6c7b1c6c7c refactor: filter gitlab repositories by groupName 2024-09-01 12:34:05 -06:00
Mauricio Siu
1be580807f refactor: optimize gitlab fetch repositories 2024-09-01 10:00:47 -06:00
Mauricio Siu
766b166bf2 refactor: simplify database colums 2024-09-01 00:48:47 -06:00
Jorge González
de72652297 feat(docker): Multi-stage Builds 2024-09-01 00:42:39 -06:00
Mauricio Siu
73efe0d0ed refactor: simplify names of colums 2024-09-01 00:39:56 -06:00
Mauricio Siu
ed46fd3cef refactor: split logic to utils files 2024-09-01 00:32:25 -06:00
Mauricio Siu
c89e558143 feat: add new git providers 2024-09-01 00:23:45 -06:00
Mauricio Siu
249fe8c7fe feat: add clone by gitlab, github and bitbucket 2024-09-01 00:18:45 -06:00
Mauricio Siu
a8408a11d9 refactor(gitlab): add refresh token validation 2024-08-31 23:41:13 -06:00
Mauricio Siu
6d945371c9 feat(providers): add gitlab bitbucket and github providers 2024-08-31 22:57:41 -06:00
Mauricio Siu
28d8fa9834 refactor(traefik): add watch false swarm provider 2024-08-31 00:31:39 -06:00
Mauricio Siu
d7b9402528 refactor(traefik): add labels and swarm provider 2024-08-31 00:01:47 -06:00
Mauricio Siu
42ce03ea5a Merge pull request #399 from Dokploy/289-upgrade-traefik-to-its-latest-version
feat(traefik): upgrade traefik to v.3.1.2
2024-08-30 21:44:54 -06:00
Mauricio Siu
f5099c15a1 feat(traefik): upgrade traefik to v.3.1.2 2024-08-30 21:37:14 -06:00
Mauricio Siu
0f1f237019 Merge branch 'canary' into feat/requests 2024-08-30 11:16:03 -06:00
Mauricio Siu
b98476c36a chore: update hostinguer image 2024-08-30 11:10:14 -06:00
Mauricio Siu
aeddf2d554 chore: add hostinger sponsor 2024-08-30 11:06:33 -06:00
Mauricio Siu
4b4a31dc57 Merge pull request #398 from beltranaceves/canary
Docs: added working placeholder links for the Setting Up Dokploy section and better Admin Account screenshot
2024-08-30 11:05:11 -06:00
Beltrán Aceves
fa7e6d7c2f Docs: better image for Creating an Admin Account 2024-08-30 16:22:14 +02:00
Beltrán Aceves
82d2e00027 Docs: Improved placeholder links from the Setting Up cards section 2024-08-30 16:21:06 +02:00
Mauricio Siu
536a6ba2ff Merge pull request #397 from Dokploy/canary
v0.7.3
2024-08-30 00:27:59 -06:00
Mauricio Siu
95ab755253 chore(version): bump version 2024-08-30 00:09:43 -06:00
Mauricio Siu
b9d6fdafac Merge pull request #396 from Dokploy/389-is-the-traefik-env-non-persistent
fix(traefik): make env be persistent between restarts
2024-08-30 00:07:42 -06:00
Mauricio Siu
7999a4bdda refactor: lint 2024-08-30 00:00:40 -06:00
Mauricio Siu
50da20907f fix(traefik): make env be persistent between restarts 2024-08-29 23:56:38 -06:00
Mauricio Siu
a773cfffa5 Merge pull request #395 from Dokploy/392-documenso-template-not-working
fix(documenso): add version
2024-08-29 22:51:59 -06:00
Mauricio Siu
648386281f fix(documenso): add version 2024-08-29 22:49:25 -06:00
Mauricio Siu
3674f3a4d6 Merge pull request #393 from orthdron/patch-1
fix: umami version
2024-08-29 22:14:25 -06:00
Mauricio Siu
1fea9dcf29 Merge pull request #380 from freidev/freilyn-canary
feat: add Typebot template with email login configuration.
2024-08-29 22:13:08 -06:00
Mauricio Siu
fb2a4d91e1 Merge pull request #386 from AkashDeep000/canary
refactor(cleanUpUnusedVolumes): Remove all unused volumes, not just anonymous ones
2024-08-29 22:07:51 -06:00
Mauricio Siu
3e1063306f Update templates.ts 2024-08-29 22:06:22 -06:00
Mauricio Siu
4d2354df47 Update index.ts 2024-08-29 22:05:16 -06:00
Mauricio Siu
7104fb0461 Merge pull request #350 from Vladislav-CS/domain-link-fix
fix: wrong domain link
2024-08-29 21:59:03 -06:00
Mauricio Siu
fbbbebbbd0 Merge pull request #335 from Vladislav-CS/feat/zipline-template
feat: add Zipline template
2024-08-29 21:55:35 -06:00
Mauricio Siu
d18e315a28 chore: biome 2024-08-29 21:50:58 -06:00
Mauricio Siu
d47efec45f refactor(templates): add zipline domains 2024-08-29 21:48:57 -06:00
Mauricio Siu
4035c9a08d Merge branch 'canary' into feat/zipline-template 2024-08-29 21:41:11 -06:00
Deepak Kapoor
c5f3c61275 Update docker-compose.yml
There is a bug in the old version that crashes on the web. 

I would propose the version to be set as postgresql-latest, but I understand why a certain version is set in apps.
2024-08-29 20:03:02 -04:00
AkashDeep000
9436477f41 refactor(cleanUpUnusedVolumes): Remove all unused volumes, not just anonymous ones 2024-08-28 05:19:53 +05:30
Mauricio Siu
43d48520be Merge pull request #384 from Dokploy/Siumauricio-patch-1
Update README.md
2024-08-27 13:46:30 -06:00
Mauricio Siu
1d1a3cede1 Update README.md 2024-08-27 13:46:09 -06:00
Mauricio Siu
213fa08210 Merge pull request #382 from Dokploy/canary
v0.7.2
2024-08-26 15:52:49 -06:00
Mauricio Siu
1eed1a356d chore(version): bump version 2024-08-26 15:41:28 -06:00
Mauricio Siu
a8f21ad717 Merge pull request #381 from Dokploy/security/apply-validation-when-creating-admin
refactor(auth): add validation to prevent create another admin when a…
2024-08-26 15:32:29 -06:00
Mauricio Siu
c1420bd6d8 chore: apply biome 2024-08-26 15:22:51 -06:00
Mauricio Siu
74ea9debd5 refactor(auth): add validation to prevent create another admin when a admin is present 2024-08-26 15:19:30 -06:00
Freilyn Bernabe
da8955dabb chore: clean up code and update Docker images to stable versions 2024-08-26 14:44:43 -04:00
Freilyn Bernabe
5dbf18605f feat: add Typebot template with email login configuration. 2024-08-26 11:28:23 -04:00
Mauricio Siu
ba01c5056e refactor: skip validation 2024-08-26 08:55:09 -06:00
Mauricio Siu
5ea7a31c6d refactor: add license 2024-08-25 20:16:52 -06:00
Mauricio Siu
e0a9eb0366 feat: add api to handle license api keys 2024-08-25 20:10:20 -06:00
Mauricio Siu
14e8e14b7d refactor: remove sockets 2024-08-25 18:03:43 -06:00
Mauricio Siu
179de344c2 refactor: add websockets requests logs 2024-08-25 17:43:00 -06:00
Mauricio Siu
1250949c05 feat: finish request filter by status code 2024-08-25 16:34:01 -06:00
Mauricio Siu
e12105f5b9 refactor: add sheet 2024-08-24 23:38:13 -06:00
Mauricio Siu
b8cc0cd11b refactor(template): add domain to supabase template 2024-08-24 22:41:32 -06:00
Mauricio Siu
be39dfee9e Merge branch 'canary' into feat/requests 2024-08-24 22:36:30 -06:00
Mauricio Siu
67ae2b19df feat: add log rotation manager 2024-08-24 22:35:38 -06:00
Mauricio Siu
1df9f1f4df Merge pull request #361 from songtianlun/canary
feat: add supbase template
2024-08-24 20:55:02 -06:00
songtianlun
f06ac587c9 Merge branch 'upsteam_canary' into canary 2024-08-25 01:40:35 +08:00
songtianlun
c084cf84a0 fix: supabase generate annon and service jwt by servicekey 2024-08-24 00:43:00 +08:00
songtianlun
5e5cbdeef9 fix: supabase generate annon and service jwt by servicekey 2024-08-24 00:41:14 +08:00
Mauricio Siu
24929d8a4d Merge pull request #371 from freidev/canary
feat(template): add Aptabase template with ClickHouse and PostgreSQLCanary
2024-08-22 15:05:34 -06:00
Freilyn Bernabe
1e6e85ed5b style: run code formatting on two files 2024-08-22 16:08:48 -04:00
Freilyn Bernabe
137edf1250 feat: remove container_name prop 2024-08-22 15:12:03 -04:00
Freilyn Bernabe
b8741f1702 feat(template): aptabase set port 8080 2024-08-22 08:41:12 -04:00
Freilyn Bernabe
ac28aff022 Apply suggestions from code review
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
2024-08-22 08:38:51 -04:00
Mauricio Siu
7b9abef687 refactor: add localhos traefik domains 2024-08-22 00:02:02 -06:00
songtianlun
217be3c6e9 Merge remote-tracking branch 'origin/canary' into canary 2024-08-22 13:23:38 +08:00
songtianlun
27a0dc3770 fix: supabase ts format 2024-08-22 13:18:06 +08:00
Freilynbp03
53b24534a8 feat(template): add Aptabase template with ClickHouse and PostgreSQL 2024-08-21 21:45:14 -04:00
Freilyn Bernabe
5a3d0f8288 feat: add aptabase template 2024-08-21 16:31:02 -04:00
Mauricio Siu
ff3e3513ef chore: add cloudblast io sponsor 2024-08-21 12:26:44 -06:00
songtianlun
7a1fba38b3 fix: supabase logflareApiKey to 32 passwd 2024-08-22 02:06:42 +08:00
songtianlun
2b65a3c119 fix: supabase MAILER_URLPATHS_CONFIRMATION env path 2024-08-22 01:51:32 +08:00
songtianlun
6d841497cc fix: remove SECRET_KEY_BASE global env 2024-08-22 01:47:33 +08:00
songtianlun
d37dc7c372 fix: supabase log vector.yml 2024-08-22 01:20:24 +08:00
songtianlun
f3e0cf861f fix: supbase hello function demo 2024-08-22 01:17:05 +08:00
songtianlun
e2578e5794 fix: supbase add init/data.sql 2024-08-22 01:13:38 +08:00
TianLun Song
16deec381c fix: ci replace circle config 2024-08-20 20:51:20 +08:00
songtianlun
91dc35a138 fix: supbase index.ts format 2024-08-20 20:39:08 +08:00
songtianlun
acfa032e61 fix: supabase dashboard passwd 2024-08-20 20:39:08 +08:00
songtianlun
83ee4b2c59 fix: ci set branch name 2024-08-20 20:39:08 +08:00
Mauricio Siu
ac1637eaf8 feat: add requests 2024-08-20 00:15:08 -06:00
Mauricio Siu
d5c6a601d8 Merge pull request #367 from Dokploy/canary
v0.7.1
2024-08-19 16:03:39 -06:00
Mauricio Siu
afbe42a577 Update package.json 2024-08-19 14:12:14 -06:00
Mauricio Siu
866f700abf Merge pull request #365 from Dokploy/31-are-there-any-plans-to-support-wildcard-dns-records
31 are there any plans to support wildcard dns records
2024-08-19 00:08:55 -06:00
Mauricio Siu
f2b6b33b1f chore: lint 2024-08-18 23:24:20 -06:00
Mauricio Siu
813ffabb8c refactor: check if the traefik dashboard is enabled 2024-08-18 23:19:21 -06:00
Mauricio Siu
b5da9291b4 feat: add enviroment variables editor to traefik 2024-08-18 23:18:54 -06:00
songtianlun
b0d604d12b fix: supabase postgres passwd 2024-08-19 11:33:26 +08:00
Mauricio Siu
e9f40e1644 Merge pull request #364 from Dokploy/354-support-soketi
feat: add soketi template
2024-08-18 20:53:55 -06:00
Mauricio Siu
61d520c239 feat: add data templates 2024-08-18 20:46:18 -06:00
Mauricio Siu
124a884d2e feat: add soketi template 2024-08-18 20:43:30 -06:00
Mauricio Siu
b5e4b9af60 Merge pull request #363 from Dokploy/fix/domains-schema-templates
refactor(templates): use domains tab instead of envs
2024-08-18 19:58:23 -06:00
Mauricio Siu
840c24e3ca eslint 2024-08-18 19:51:59 -06:00
Mauricio Siu
d300eb73fb chore: add license 2024-08-18 19:49:36 -06:00
Mauricio Siu
fb4e06116c chore: add example domains schema templates 2024-08-18 19:49:17 -06:00
Mauricio Siu
2d3b903edc refactor(templates): use domains tab instead of envs 2024-08-18 19:47:19 -06:00
Mauricio Siu
75c13df22f Merge pull request #362 from ErickLuis00/canary
fix: wrong Docker version in Add Node commands
2024-08-18 18:17:49 -06:00
Erick Luis
68b81cb48d pnpm run check 2024-08-18 22:40:05 +00:00
Erick Luis
9d6f2df25a fix: wrong Docker version in Add Node commands 2024-08-18 22:18:45 +00:00
Mauricio Siu
452793c8e5 Merge pull request #359 from Dokploy/canary
v0.7.0
2024-08-18 10:26:52 -06:00
songtianlun
724de2c1b9 fix: ci revert name 2024-08-18 22:07:35 +08:00
songtianlun
86946b6b15 fix: ci revert name 2024-08-18 22:07:02 +08:00
songtianlun
957bb3d3e6 fix: supabase domain is set 2024-08-18 20:41:27 +08:00
Mauricio Siu
38a75b07fb chore(version): bump version 2024-08-17 23:53:36 -06:00
Mauricio Siu
378b93f996 Merge pull request #358 from Dokploy/154-all-pop-ups-when-the-confirmation-behavior-occurs-successfully-the-pop-ups-are-not-closed
refactor: add dialog close on submit success
2024-08-17 23:43:10 -06:00
Mauricio Siu
eb62d124bd refactor: add dialog close on submit success 2024-08-17 23:34:58 -06:00
songtianlun
7558029271 fix: supabase domain in one path 2024-08-18 13:34:37 +08:00
songtianlun
757c28dad1 fix: supabase logo 2024-08-18 13:26:02 +08:00
songtianlun
8d3dc38816 fix: supabase logo 2024-08-18 13:17:05 +08:00
songtianlun
9c8061a447 fix: supabase replace ports to expost 2024-08-18 13:05:44 +08:00
songtianlun
3a8b2867b6 fix: supabase add network 2024-08-18 13:02:25 +08:00
songtianlun
389956d1a2 fix: supabase docker volume content 2024-08-18 12:33:26 +08:00
Mauricio Siu
bf6ed15ba7 Merge pull request #348 from jumkey/patch-1
fix: buildpacks/pack support arm64
2024-08-17 22:30:24 -06:00
Mauricio Siu
31a66ce798 Update Dockerfile 2024-08-17 22:24:39 -06:00
Mauricio Siu
38c1d86e2f refactor(domains): add services to each router 2024-08-17 21:33:23 -06:00
Mauricio Siu
d08e232f50 Merge pull request #356 from Dokploy/216-domains-for-services-created-via-template
216 domains for services created via template
2024-08-17 17:09:34 -06:00
Mauricio Siu
3d49383c42 remove 2024-08-17 17:03:20 -06:00
Mauricio Siu
27706eaae4 fix: lint 2024-08-17 17:00:49 -06:00
Mauricio Siu
c74b5a2677 Merge branch 'canary' into 216-domains-for-services-created-via-template 2024-08-17 16:58:32 -06:00
Mauricio Siu
0374165a7f refactor: remove unused code 2024-08-17 16:57:27 -06:00
Mauricio Siu
b7dad5e1d9 refactor: remove hostname validation 2024-08-17 16:11:03 -06:00
Mauricio Siu
65527bc39a feat: add tests for labels and networks 2024-08-17 16:10:36 -06:00
songtianlun
a84bdd1c8e fix: supabase docker volume path 2024-08-18 01:55:41 +08:00
songtianlun
eb219221be Merge remote-tracking branch 'my/canary' into canary 2024-08-18 01:40:34 +08:00
songtianlun
7b176bd877 feat: add supabase templates 2024-08-18 01:38:25 +08:00
TianLun Song
6970923253 fix docker name 2024-08-18 01:20:24 +08:00
TianLun Song
a3e23d54d8 fix docker push prefix 2024-08-18 01:09:09 +08:00
TianLun Song
8f11207d72 fix push docker prefix 2024-08-18 01:04:22 +08:00
songtianlun
6bd98350d9 feat: add supabase templates 2024-08-18 00:58:09 +08:00
Mauricio Siu
096ef8cd93 Merge pull request #357 from Dokploy/353-domain-binding-form-does-not-accept-russian-domains-and-punycode-domains
refactor: remove hostname regex
2024-08-17 00:41:53 -06:00
Mauricio Siu
d6eafcbb9b refactor: remove hostname regex 2024-08-17 00:34:29 -06:00
Mauricio Siu
c0261384ca refactor: update invalidation cache 2024-08-17 00:29:05 -06:00
Mauricio Siu
ca733addc2 refactor: add dokploy network auutomatically 2024-08-17 00:28:32 -06:00
Mauricio Siu
7497671033 refactor: add dokploy network automatically 2024-08-17 00:28:17 -06:00
Mauricio Siu
9379d4a31d refactor(domains): update labels 2024-08-15 01:25:36 -06:00
Mauricio Siu
dde799f510 refactor: delete modals 2024-08-15 01:03:58 -06:00
Mauricio Siu
ecb919e109 refactor(domains): make traefik domains generate in a single click 2024-08-15 01:02:11 -06:00
Mauricio Siu
29ca894a97 Merge branch 'canary' into 216-domains-for-services-created-via-template 2024-08-15 00:00:41 -06:00
Mauricio Siu
84ba74a673 refactor: remove migrations 2024-08-15 00:00:34 -06:00
Mauricio Siu
32b0d51e79 refactor: remove migration 2024-08-14 23:59:51 -06:00
Vladislav Popovič
1288660fd6 Update show-domains.tsx 2024-08-14 22:25:51 +03:00
Vladislav Popovič
5c1e24f4f3 Update apps/dokploy/templates/zipline/docker-compose.yml
Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
2024-08-14 14:17:45 +03:00
Jumkey Chen
3e12e1b1b3 fix: buildpacks/pack support arm64 2024-08-14 19:16:59 +08:00
Vladislav-CS
bd84793780 feat: create environment variable where possible 2024-08-08 19:10:53 +03:00
Vladislav-CS
9922c0ed66 Initial commit 2024-08-08 18:58:00 +03:00
Mauricio Siu
27256c609a refactor: add validations in domains 2024-07-30 23:31:05 -06:00
Mauricio Siu
c4d59177bf refactor: update domain 2024-07-30 23:20:54 -06:00
Mauricio Siu
3c8ca2b012 feat(domains): add domains to each docker compose service #216 2024-07-30 23:16:52 -06:00
730 changed files with 76836 additions and 16197 deletions

View File

@@ -11,6 +11,7 @@ jobs:
command: |
cp apps/dokploy/.env.production.example .env.production
cp apps/dokploy/.env.production.example apps/dokploy/.env.production
- run:
name: Build and push AMD64 image
command: |
@@ -61,7 +62,7 @@ jobs:
VERSION=$(node -p "require('./apps/dokploy/package.json').version")
echo $VERSION
TAG="latest"
docker manifest create dokploy/dokploy:${TAG} \
dokploy/dokploy:${TAG}-amd64 \
dokploy/dokploy:${TAG}-arm64

BIN
.github/sponsors/hostinger.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

BIN
.github/sponsors/logo.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
.github/sponsors/lxaer.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

View File

@@ -1,4 +1,4 @@
name: Build Docs & Website Docker images
name: Build Docker images
on:
push:
@@ -48,3 +48,74 @@ jobs:
push: true
tags: dokploy/website:latest
platforms: linux/amd64
build-and-push-cloud-image:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile.cloud
push: true
tags: |
siumauricio/cloud:${{ github.ref_name == 'main' && 'main' || 'canary' }}
platforms: linux/amd64
build-and-push-schedule-image:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile.schedule
push: true
tags: |
siumauricio/schedule:${{ github.ref_name == 'main' && 'main' || 'canary' }}
platforms: linux/amd64
build-and-push-server-image:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile.server
push: true
tags: |
siumauricio/server:${{ github.ref_name == 'main' && 'main' || 'canary' }}
platforms: linux/amd64

View File

@@ -18,6 +18,7 @@ jobs:
node-version: 18.18.0
cache: "pnpm"
- run: pnpm install --frozen-lockfile
- run: pnpm run server:build
- run: pnpm biome ci
- run: pnpm typecheck
@@ -32,6 +33,7 @@ jobs:
node-version: 18.18.0
cache: "pnpm"
- run: pnpm install --frozen-lockfile
- run: pnpm run server:build
- run: pnpm build
parallel-tests:
@@ -44,4 +46,5 @@ jobs:
node-version: 18.18.0
cache: "pnpm"
- run: pnpm install --frozen-lockfile
- run: pnpm run server:build
- run: pnpm test

View File

@@ -166,20 +166,26 @@ import {
generateRandomDomain,
type Template,
type Schema,
type DomainSchema,
} from "../utils";
export function generate(schema: Schema): Template {
// do your stuff here, like create a new domain, generate random passwords, mounts.
const mainServiceHash = generateHash(schema.projectName);
const randomDomain = generateRandomDomain(schema);
const mainDomain = generateRandomDomain(schema);
const secretBase = generateBase64(64);
const toptKeyBase = generateBase64(32);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 8000,
serviceName: "plausible",
},
];
const envs = [
// If you want to show a domain in the UI, please add the prefix _HOST at the end of the variable name.
`PLAUSIBLE_HOST=${randomDomain}`,
"PLAUSIBLE_PORT=8000",
`BASE_URL=http://${randomDomain}`,
`BASE_URL=http://${mainDomain}`,
`SECRET_KEY_BASE=${secretBase}`,
`TOTP_VAULT_KEY=${toptKeyBase}`,
`HASH=${mainServiceHash}`,
@@ -195,6 +201,7 @@ export function generate(schema: Schema): Template {
return {
envs,
mounts,
domains,
};
}
```

View File

@@ -15,7 +15,9 @@ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
# Deploy only the dokploy app
ENV NODE_ENV=production
RUN pnpm --filter=@dokploy/server build
RUN pnpm --filter=./apps/dokploy run build
RUN pnpm --filter=./apps/dokploy --prod deploy /prod/dokploy
RUN cp -R /usr/src/app/apps/dokploy/.next /prod/dokploy/.next
@@ -27,7 +29,7 @@ WORKDIR /app
# Set production
ENV NODE_ENV=production
RUN apt-get update && apt-get install -y curl apache2-utils && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y curl unzip apache2-utils && rm -rf /var/lib/apt/lists/*
# Copy only the necessary files
COPY --from=build /prod/dokploy/.next ./.next
@@ -42,7 +44,7 @@ COPY --from=build /prod/dokploy/node_modules ./node_modules
# Install docker
RUN curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && rm get-docker.sh
RUN curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && rm get-docker.sh && curl https://rclone.org/install.sh | bash
# Install Nixpacks and tsx
# | VERBOSE=1 VERSION=1.21.0 bash
@@ -52,7 +54,7 @@ RUN curl -sSL https://nixpacks.com/install.sh -o install.sh \
&& pnpm install -g tsx
# Install buildpacks
RUN curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.35.0/pack-v0.35.0-linux.tgz" | tar -C /usr/local/bin/ --no-same-owner -xzv pack
COPY --from=buildpacksio/pack:0.35.0 /usr/local/bin/pack /usr/local/bin/pack
EXPOSE 3000
CMD [ "pnpm", "start" ]
CMD [ "pnpm", "start" ]

52
Dockerfile.cloud Normal file
View File

@@ -0,0 +1,52 @@
FROM node:18-slim AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
FROM base AS build
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN apt-get update && apt-get install -y python3 make g++ git && rm -rf /var/lib/apt/lists/*
# Install dependencies
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm --filter=@dokploy/server --filter=./apps/dokploy install --frozen-lockfile
# Deploy only the dokploy app
ENV NODE_ENV=production
RUN pnpm --filter=@dokploy/server build
RUN pnpm --filter=./apps/dokploy run build
RUN pnpm --filter=./apps/dokploy --prod deploy /prod/dokploy
RUN cp -R /usr/src/app/apps/dokploy/.next /prod/dokploy/.next
RUN cp -R /usr/src/app/apps/dokploy/dist /prod/dokploy/dist
FROM base AS dokploy
WORKDIR /app
# Set production
ENV NODE_ENV=production
RUN apt-get update && apt-get install -y curl unzip apache2-utils && rm -rf /var/lib/apt/lists/*
# Copy only the necessary files
COPY --from=build /prod/dokploy/.next ./.next
COPY --from=build /prod/dokploy/dist ./dist
COPY --from=build /prod/dokploy/next.config.mjs ./next.config.mjs
COPY --from=build /prod/dokploy/public ./public
COPY --from=build /prod/dokploy/package.json ./package.json
COPY --from=build /prod/dokploy/drizzle ./drizzle
COPY --from=build /prod/dokploy/components.json ./components.json
COPY --from=build /prod/dokploy/node_modules ./node_modules
# Install RCLONE
RUN curl https://rclone.org/install.sh | bash
# tsx
RUN pnpm install -g tsx
EXPOSE 3000
CMD [ "pnpm", "start" ]

36
Dockerfile.schedule Normal file
View File

@@ -0,0 +1,36 @@
FROM node:18-slim AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
FROM base AS build
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN apt-get update && apt-get install -y python3 make g++ git && rm -rf /var/lib/apt/lists/*
# Install dependencies
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm --filter=@dokploy/server --filter=./apps/schedules install --frozen-lockfile
# Deploy only the dokploy app
ENV NODE_ENV=production
RUN pnpm --filter=@dokploy/server build
RUN pnpm --filter=./apps/schedules run build
RUN pnpm --filter=./apps/schedules --prod deploy /prod/schedules
RUN cp -R /usr/src/app/apps/schedules/dist /prod/schedules/dist
FROM base AS dokploy
WORKDIR /app
# Set production
ENV NODE_ENV=production
# Copy only the necessary files
COPY --from=build /prod/schedules/dist ./dist
COPY --from=build /prod/schedules/package.json ./package.json
COPY --from=build /prod/schedules/node_modules ./node_modules
CMD HOSTNAME=0.0.0.0 && pnpm start

36
Dockerfile.server Normal file
View File

@@ -0,0 +1,36 @@
FROM node:18-slim AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
FROM base AS build
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN apt-get update && apt-get install -y python3 make g++ git && rm -rf /var/lib/apt/lists/*
# Install dependencies
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm --filter=@dokploy/server --filter=./apps/api install --frozen-lockfile
# Deploy only the dokploy app
ENV NODE_ENV=production
RUN pnpm --filter=@dokploy/server build
RUN pnpm --filter=./apps/api run build
RUN pnpm --filter=./apps/api --prod deploy /prod/api
RUN cp -R /usr/src/app/apps/api/dist /prod/api/dist
FROM base AS dokploy
WORKDIR /app
# Set production
ENV NODE_ENV=production
# Copy only the necessary files
COPY --from=build /prod/api/dist ./dist
COPY --from=build /prod/api/package.json ./package.json
COPY --from=build /prod/api/node_modules ./node_modules
CMD HOSTNAME=0.0.0.0 && pnpm start

26
LICENSE.MD Normal file
View File

@@ -0,0 +1,26 @@
# License
## Core License (Apache License 2.0)
Copyright 2024 Mauricio Siu.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and limitations under the License.
## Additional Terms for Specific Features
The following additional terms apply to the multi-node support and Docker Compose file support features of Dokploy. In the event of a conflict, these provisions shall take precedence over those in the Apache License:
- **Self-Hosted Version Free**: All features of Dokploy, including multi-node support and Docker Compose file support, will always be free to use in the self-hosted version.
- **Restriction on Resale**: The multi-node support and Docker Compose file support features cannot be sold or offered as a service by any party other than the copyright holder without prior written consent.
- **Modification Distribution**: Any modifications to the multi-node support and Docker Compose file support features must be distributed freely and cannot be sold or offered as a service.
For further inquiries or permissions, please contact us directly.

View File

@@ -1,15 +1,15 @@
<div align="center">
<h1 align="center">Dokploy</h1>
<div>
<img style="object-fit: cover; border-radius:20px;" align="center" width="50%"src="https://dokploy.com/og.png" >
<a href="https://dokploy.com" target="_blank" rel="noopener">
<img style="object-fit: cover;" align="center" width="100%"src=".github/sponsors/logo.png" alt="Dokploy - Open Source Alternative to Vercel, Heroku and Netlify." />
</a>
</div>
</br>
<div align="center">
<div>Join us on Discord for help, feedback, and discussions!</div>
</br>
<a href="https://discord.gg/ZXwG32bw">
<a href="https://discord.gg/2tBnJ3jDJc">
<img src="https://discordapp.com/api/guilds/1234073262418563112/widget.png?style=banner2" alt="Discord Shield"/>
</a>
</div>
@@ -32,6 +32,7 @@ Dokploy include multiples features to make your life easier.
- **Docker Management**: Easily deploy and manage Docker containers.
- **CLI/API**: Manage your applications and databases using the command line or trought the API.
- **Notifications**: Get notified when your deployments are successful or failed (Slack, Discord, Telegram, Email, etc.)
- **Multi Server**: Deploy and manager your applications remotely to external servers.
- **Self-Hosted**: Self-host Dokploy on your VPS.
## 🚀 Getting Started
@@ -56,6 +57,17 @@ For detailed documentation, visit [docs.dokploy.com](https://docs.dokploy.com).
<!-- Add Hero Sponsors here -->
### Hero Sponsors 🎖
<div style="display: flex; align-items: center; gap: 20px;">
<a href="https://www.hostinger.com/vps-hosting?ref=dokploy" target="_blank" style="display: inline-block;">
<img src=".github/sponsors/hostinger.jpg" alt="Hostinger" height="50"/>
</a>
<a href="https://www.lxaer.com/?ref=dokploy" target="_blank" style="display: inline-block;">
<img src=".github/sponsors/lxaer.png" alt="LX Aer" height="50"/>
</a>
</div>
### Premium Supporters 🥇
<div style="display: flex; gap: 30px; flex-wrap: wrap;">
@@ -70,12 +82,14 @@ For detailed documentation, visit [docs.dokploy.com](https://docs.dokploy.com).
<div style="display: flex; gap: 30px; flex-wrap: wrap;">
<a href="https://lightspeed.run/?ref=dokploy"><img src="https://github.com/lightspeedrun.png" width="60px" alt="Lightspeed.run"/></a>
<a href="https://cloudblast.io/?ref=dokploy "><img src="https://cloudblast.io/img/logo-icon.193cf13e.svg" width="250px" alt="Lightspeed.run"/></a>
</div>
### Community Backers 🤝
<div style="display: flex; gap: 30px; flex-wrap: wrap;">
<a href="https://steamsets.com/?ref=dokploy"><img src="https://avatars.githubusercontent.com/u/111978405?s=200&v=4" width="60px" alt="Steamsets.com"/></a>
<a href="https://rivo.gg/?ref=dokploy"><img src="https://avatars.githubusercontent.com/u/126797452?s=200&v=4" width="60px" alt="Rivo.gg"/></a>
</div>
#### Organizations:

2
apps/api/.env.example Normal file
View File

@@ -0,0 +1,2 @@
LEMON_SQUEEZY_API_KEY=""
LEMON_SQUEEZY_STORE_ID=""

28
apps/api/.gitignore vendored Normal file
View File

@@ -0,0 +1,28 @@
# dev
.yarn/
!.yarn/releases
.vscode/*
!.vscode/launch.json
!.vscode/*.code-snippets
.idea/workspace.xml
.idea/usage.statistics.xml
.idea/shelf
# deps
node_modules/
# env
.env
.env.production
# logs
logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
# misc
.DS_Store

8
apps/api/README.md Normal file
View File

@@ -0,0 +1,8 @@
```
npm install
npm run dev
```
```
open http://localhost:3000
```

33
apps/api/package.json Normal file
View File

@@ -0,0 +1,33 @@
{
"name": "@dokploy/api",
"version": "0.0.1",
"type": "module",
"scripts": {
"dev": "PORT=4000 tsx watch src/index.ts",
"build": "tsc --project tsconfig.json",
"start": "node --experimental-specifier-resolution=node dist/index.js",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"pino": "9.4.0",
"pino-pretty": "11.2.2",
"@hono/zod-validator": "0.3.0",
"zod": "^3.23.4",
"react": "18.2.0",
"react-dom": "18.2.0",
"@dokploy/server": "workspace:*",
"@hono/node-server": "^1.12.1",
"hono": "^4.5.8",
"dotenv": "^16.3.1",
"redis": "4.7.0",
"@nerimity/mimiqueue": "1.2.3"
},
"devDependencies": {
"typescript": "^5.4.2",
"@types/react": "^18.2.37",
"@types/react-dom": "^18.2.15",
"@types/node": "^20.11.17",
"tsx": "^4.7.1"
},
"packageManager": "pnpm@9.5.0"
}

61
apps/api/src/index.ts Normal file
View File

@@ -0,0 +1,61 @@
import { serve } from "@hono/node-server";
import { Hono } from "hono";
import "dotenv/config";
import { zValidator } from "@hono/zod-validator";
import { Queue } from "@nerimity/mimiqueue";
import { createClient } from "redis";
import { logger } from "./logger";
import { type DeployJob, deployJobSchema } from "./schema";
import { deploy } from "./utils";
const app = new Hono();
const redisClient = createClient({
url: process.env.REDIS_URL,
});
app.use(async (c, next) => {
if (c.req.path === "/health") {
return next();
}
const authHeader = c.req.header("X-API-Key");
if (process.env.API_KEY !== authHeader) {
return c.json({ message: "Invalid API Key" }, 403);
}
return next();
});
app.post("/deploy", zValidator("json", deployJobSchema), (c) => {
const data = c.req.valid("json");
const res = queue.add(data, { groupName: data.serverId });
return c.json(
{
message: "Deployment Added",
},
200,
);
});
app.get("/health", async (c) => {
return c.json({ status: "ok" });
});
const queue = new Queue({
name: "deployments",
process: async (job: DeployJob) => {
logger.info("Deploying job", job);
return await deploy(job);
},
redisClient,
});
(async () => {
await redisClient.connect();
await redisClient.flushAll();
logger.info("Redis Cleaned");
})();
const port = Number.parseInt(process.env.PORT || "3000");
logger.info("Starting Deployments Server ✅", port);
serve({ fetch: app.fetch, port });

10
apps/api/src/logger.ts Normal file
View File

@@ -0,0 +1,10 @@
import pino from "pino";
export const logger = pino({
transport: {
target: "pino-pretty",
options: {
colorize: true,
},
},
});

24
apps/api/src/schema.ts Normal file
View File

@@ -0,0 +1,24 @@
import { z } from "zod";
export const deployJobSchema = z.discriminatedUnion("applicationType", [
z.object({
applicationId: z.string(),
titleLog: z.string(),
descriptionLog: z.string(),
server: z.boolean().optional(),
type: z.enum(["deploy", "redeploy"]),
applicationType: z.literal("application"),
serverId: z.string(),
}),
z.object({
composeId: z.string(),
titleLog: z.string(),
descriptionLog: z.string(),
server: z.boolean().optional(),
type: z.enum(["deploy", "redeploy"]),
applicationType: z.literal("compose"),
serverId: z.string(),
}),
]);
export type DeployJob = z.infer<typeof deployJobSchema>;

16
apps/api/src/types.ts Normal file
View File

@@ -0,0 +1,16 @@
export interface LemonSqueezyLicenseResponse {
valid: boolean;
error?: string;
meta?: {
store_id: string;
order_id: number;
order_item_id: number;
product_id: number;
product_name: string;
variant_id: number;
variant_name: string;
customer_id: number;
customer_name: string;
customer_email: string;
};
}

96
apps/api/src/utils.ts Normal file
View File

@@ -0,0 +1,96 @@
import {
deployApplication,
deployCompose,
deployRemoteApplication,
deployRemoteCompose,
rebuildApplication,
rebuildCompose,
rebuildRemoteApplication,
rebuildRemoteCompose,
updateApplicationStatus,
updateCompose,
} from "@dokploy/server";
import type { DeployJob } from "./schema";
import type { LemonSqueezyLicenseResponse } from "./types";
// const LEMON_SQUEEZY_API_KEY = process.env.LEMON_SQUEEZY_API_KEY;
// const LEMON_SQUEEZY_STORE_ID = process.env.LEMON_SQUEEZY_STORE_ID;
// export const validateLemonSqueezyLicense = async (
// licenseKey: string,
// ): Promise<LemonSqueezyLicenseResponse> => {
// try {
// const response = await fetch(
// "https://api.lemonsqueezy.com/v1/licenses/validate",
// {
// method: "POST",
// headers: {
// "Content-Type": "application/json",
// "x-api-key": LEMON_SQUEEZY_API_KEY as string,
// },
// body: JSON.stringify({
// license_key: licenseKey,
// store_id: LEMON_SQUEEZY_STORE_ID as string,
// }),
// },
// );
// return response.json();
// } catch (error) {
// console.error("Error validating license:", error);
// return { valid: false, error: "Error validating license" };
// }
// };
export const deploy = async (job: DeployJob) => {
try {
if (job.applicationType === "application") {
await updateApplicationStatus(job.applicationId, "running");
if (job.server) {
if (job.type === "redeploy") {
await rebuildRemoteApplication({
applicationId: job.applicationId,
titleLog: job.titleLog,
descriptionLog: job.descriptionLog,
});
} else if (job.type === "deploy") {
await deployRemoteApplication({
applicationId: job.applicationId,
titleLog: job.titleLog,
descriptionLog: job.descriptionLog,
});
}
}
} else if (job.applicationType === "compose") {
await updateCompose(job.composeId, {
composeStatus: "running",
});
if (job.server) {
if (job.type === "redeploy") {
await rebuildRemoteCompose({
composeId: job.composeId,
titleLog: job.titleLog,
descriptionLog: job.descriptionLog,
});
} else if (job.type === "deploy") {
await deployRemoteCompose({
composeId: job.composeId,
titleLog: job.titleLog,
descriptionLog: job.descriptionLog,
});
}
}
}
} catch (error) {
console.log(error);
if (job.applicationType === "application") {
await updateApplicationStatus(job.applicationId, "error");
} else if (job.applicationType === "compose") {
await updateCompose(job.composeId, {
composeStatus: "error",
});
}
}
return true;
};

13
apps/api/tsconfig.json Normal file
View File

@@ -0,0 +1,13 @@
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "Node",
"strict": true,
"skipLibCheck": true,
"outDir": "dist",
"jsx": "react-jsx",
"jsxImportSource": "hono/jsx"
},
"exclude": ["node_modules", "dist"]
}

File diff suppressed because it is too large Load Diff

View File

@@ -74,7 +74,7 @@ export function generateMetadata({
},
twitter: {
card: "summary_large_image",
creator: "@siumauricio",
creator: "@getdokploy",
title: page.data.title,
description: page.data.description,
images: [

View File

@@ -72,14 +72,14 @@ export default function Layout({
name: "English",
},
cn: {
name: "Chinese",
toc: "目",
search: "搜尋文檔",
lastUpdate: "最更新",
searchNoResult: "沒有結果",
previousPage: "上一",
nextPage: "下一",
chooseLanguage: "選擇語言",
name: "中文",
toc: "目",
search: "搜索文档",
lastUpdate: "最更新",
searchNoResult: "没有结果",
previousPage: "上一",
nextPage: "下一",
chooseLanguage: "选择语言",
},
}}
>
@@ -88,7 +88,7 @@ export default function Layout({
i18n
tree={pageTree[params.lang]}
nav={{
title: params.lang === "cn" ? "目" : "Dokploy",
title: params.lang === "cn" ? "目" : "Dokploy",
url: `/${params.lang}`,
transparentMode: "none",
}}

View File

@@ -0,0 +1,99 @@
---
title: Dokploy API
description: 如何与 Dokploy API 进行交互,面向管理员和用户
---
在某些情况下,您可能需要直接与 Dokploy API 进行交互。以下是管理员和用户如何做到这一点的指南。
## 对于管理员
1. 通过访问 `your-vps-ip:3000/swagger` 进入 Swagger UI。
2. 使用 Swagger 界面与 API 进行交互。
3. 默认情况下Swagger UI 的访问受到限制,只有经过身份验证的管理员才能访问 API。
## 对于用户
1. 默认情况下,用户无法直接访问 API。
2. 管理员可以授予用户以下访问权限:
- 生成访问令牌
- 访问 Swagger UI
3. 如果您需要访问权限,请联系您的管理员。
注意API 提供了高级功能。确保您理解所执行的操作,以避免对系统造成意外更改。
## 用法
默认情况下OpenApi 基础 URL 为 `http://localhost:3000/api`,您需要将其替换为 Dokploy 实例的 IP 或域名。
### 身份验证
API 使用 JWT 令牌进行身份验证。您可以通过访问 `/settings/profile` 页面并进入 API/CLI 部分生成令牌。
以下是一个经过身份验证的请求示例:
```bash
curl -X 'GET' \
'https://dokploy.com/api/project.all' \
-H 'accept: application/json' \
-H 'Authorization: Bearer YOUR-TOKEN'
```
然后您将收到类似以下内容的响应:
```json
[
{
"projectId": "klZKsyw5g-QT_jrWJ5T-w",
"name": "随机",
"description": "",
"createdAt": "2024-06-19T15:05:58.785Z",
"adminId": "_WrKZbs7iJAA3p4N2Yfyu",
"applications": [],
"mariadb": [],
"mongo": [],
"mysql": [
{
"mysqlId": "N3cudwO46TiDXzBm4SaQ1",
"name": "mysql",
"appName": "random-mysql-924715",
"description": "",
"databaseName": "mysql",
"databaseUser": "mysql",
"databasePassword": "h13BzO6y3KYSHaQg",
"databaseRootPassword": "mM1b7JeoPA7jArxj",
"dockerImage": "mysql:8",
"command": null,
"env": null,
"memoryReservation": null,
"memoryLimit": null,
"cpuReservation": null,
"cpuLimit": null,
"externalPort": null,
"applicationStatus": "完成",
"createdAt": "2024-06-24T01:55:40.378Z",
"projectId": "klZKsyw5g-QT_jrWJ5T-w"
}
],
"postgres": [],
"redis": [
{
"redisId": "TtFK5S4QFaIjaNGOb8Ku-",
"name": "redis",
"appName": "random-redis-7eec62",
"description": "",
"databasePassword": "Yvb8gqClfomjcue8",
"dockerImage": "redis:7",
"command": null,
"env": null,
"memoryReservation": null,
"memoryLimit": null,
"cpuReservation": null,
"cpuLimit": null,
"externalPort": 6379,
"createdAt": "2024-06-26T06:43:20.570Z",
"applicationStatus": "完成",
"projectId": "klZKsyw5g-QT_jrWJ5T-w"
}
],
"compose": []
}
]
```

View File

@@ -0,0 +1,33 @@
{
"title": "CLI",
"root": true,
"pages": [
"---入门---",
"index",
"---API---",
"reference-api/reference-admin",
"reference-api/reference-application",
"reference-api/reference-auth",
"reference-api/reference-backup",
"reference-api/reference-certificates",
"reference-api/reference-cluster",
"reference-api/reference-compose",
"reference-api/reference-deployment",
"reference-api/reference-destination",
"reference-api/reference-docker",
"reference-api/reference-domain",
"reference-api/reference-mariadb",
"reference-api/reference-mongo",
"reference-api/reference-mounts",
"reference-api/reference-mysql",
"reference-api/reference-port",
"reference-api/reference-postgres",
"reference-api/reference-project",
"reference-api/reference-redirects",
"reference-api/reference-redis",
"reference-api/reference-registry",
"reference-api/reference-security",
"reference-api/reference-settings",
"reference-api/reference-user"
]
}

View File

@@ -28,6 +28,11 @@
"reference-api/reference-registry",
"reference-api/reference-security",
"reference-api/reference-settings",
"reference-api/reference-sshKey",
"reference-api/reference-gitProvider",
"reference-api/reference-bitbucket",
"reference-api/reference-github",
"reference-api/reference-gitlab",
"reference-api/reference-user"
]
}

View File

@@ -116,7 +116,7 @@ In: `header`
<Property name={"email"} type={"string"} required={true} deprecated={undefined}>
<span>Format: `"email"`</span>
<span>Format: `"email"`</span>
</Property>
@@ -218,7 +218,7 @@ In: `header`
<Property name={"authId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -320,7 +320,7 @@ In: `header`
<Property name={"token"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -419,7 +419,7 @@ In: `header`
<Property name={"userId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -439,11 +439,11 @@ In: `header`
</Property>
<Property name={"accesedProjects"} type={"array of string"} required={true} deprecated={undefined}>
<Property name={"accesedProjects"} type={"array<string>"} required={true} deprecated={undefined}>
</Property>
<Property name={"accesedServices"} type={"array of string"} required={true} deprecated={undefined}>
<Property name={"accesedServices"} type={"array<string>"} required={true} deprecated={undefined}>
</Property>
@@ -459,6 +459,14 @@ In: `header`
</Property>
<Property name={"canAccessToSSHKeys"} type={"boolean"} required={true} deprecated={undefined}>
</Property>
<Property name={"canAccessToGitProviders"} type={"boolean"} required={true} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
@@ -488,7 +496,9 @@ curl -X POST "http://localhost:3000/api/admin.assignPermissions" \
],
"canAccessToTraefikFiles": true,
"canAccessToDocker": true,
"canAccessToAPI": true
"canAccessToAPI": true,
"canAccessToSSHKeys": true,
"canAccessToGitProviders": true
}'
```
@@ -552,382 +562,4 @@ export interface Response {
</API>
<API>
<APIInfo method={"POST"} route={"/admin.cleanGithubApp"}>
## admin-cleanGithubApp
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/admin.cleanGithubApp"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/admin.cleanGithubApp", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/admin.getRepositories"}>
## admin-getRepositories
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/admin.getRepositories"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/admin.getRepositories", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/admin.getBranches"}>
## admin-getBranches
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Query Parameters
<Property name={"repo"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"owner"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/admin.getBranches?repo=string&owner=string"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/admin.getBranches?repo=string&owner=string", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/admin.haveGithubConfigured"}>
## admin-haveGithubConfigured
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/admin.haveGithubConfigured"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/admin.haveGithubConfigured", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
</Root>

View File

@@ -25,7 +25,7 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -750,6 +750,10 @@ In: `header`
</Property>
<Property name={"buildArgs"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
@@ -767,7 +771,8 @@ In: `header`
curl -X POST "http://localhost:3000/api/application.saveEnvironment" \
-d '{
"applicationId": "string",
"env": "string"
"env": "string",
"buildArgs": "string"
}'
```
@@ -853,7 +858,7 @@ In: `header`
<Property name={"buildType"} type={"string"} required={true} deprecated={undefined}>
<span>Value in: `"dockerfile" | "heroku_buildpacks" | "paketo_buildpacks" | "nixpacks"`</span>
<span>Value in: `"dockerfile" | "heroku_buildpacks" | "paketo_buildpacks" | "nixpacks" | "static"`</span>
</Property>
@@ -861,6 +866,14 @@ In: `header`
</Property>
<Property name={"dockerContextPath"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
<Property name={"publishDirectory"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
@@ -879,7 +892,9 @@ curl -X POST "http://localhost:3000/api/application.saveBuildType" \
-d '{
"applicationId": "string",
"buildType": "dockerfile",
"dockerfile": "string"
"dockerfile": "string",
"dockerContextPath": "string",
"publishDirectory": "string"
}'
```
@@ -979,6 +994,10 @@ In: `header`
</Property>
<Property name={"githubId"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
@@ -999,7 +1018,8 @@ curl -X POST "http://localhost:3000/api/application.saveGithubProvider" \
"repository": "string",
"branch": "string",
"owner": "string",
"buildPath": "string"
"buildPath": "string",
"githubId": "string"
}'
```
@@ -1065,6 +1085,266 @@ export interface Response {
<API>
<APIInfo method={"POST"} route={"/application.saveGitlabProvider"}>
## application-saveGitlabProvider
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"applicationId"} type={"string"} required={true} deprecated={undefined}>
</Property>
<Property name={"gitlabBranch"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
<Property name={"gitlabBuildPath"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
<Property name={"gitlabOwner"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
<Property name={"gitlabRepository"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
<Property name={"gitlabId"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
<Property name={"gitlabProjectId"} type={"number | null"} required={true} deprecated={undefined}>
</Property>
<Property name={"gitlabPathNamespace"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/application.saveGitlabProvider" \
-d '{
"applicationId": "string",
"gitlabBranch": "string",
"gitlabBuildPath": "string",
"gitlabOwner": "string",
"gitlabRepository": "string",
"gitlabId": "string",
"gitlabProjectId": 0,
"gitlabPathNamespace": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/application.saveGitlabProvider", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/application.saveBitbucketProvider"}>
## application-saveBitbucketProvider
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"bitbucketBranch"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
<Property name={"bitbucketBuildPath"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
<Property name={"bitbucketOwner"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
<Property name={"bitbucketRepository"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
<Property name={"bitbucketId"} type={"string | null"} required={true} deprecated={undefined}>
</Property>
<Property name={"applicationId"} type={"string"} required={true} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/application.saveBitbucketProvider" \
-d '{
"bitbucketBranch": "string",
"bitbucketBuildPath": "string",
"bitbucketOwner": "string",
"bitbucketRepository": "string",
"bitbucketId": "string",
"applicationId": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/application.saveBitbucketProvider", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/application.saveDockerProvider"}>
## application-saveDockerProvider
@@ -1210,6 +1490,10 @@ In: `header`
</Property>
<Property name={"customGitSSHKeyId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
@@ -1229,7 +1513,8 @@ curl -X POST "http://localhost:3000/api/application.saveGitProdiver" \
"customGitBranch": "string",
"applicationId": "string",
"customGitBuildPath": "string",
"customGitUrl": "string"
"customGitUrl": "string",
"customGitSSHKeyId": "string"
}'
```
@@ -1295,206 +1580,6 @@ export interface Response {
<API>
<APIInfo method={"POST"} route={"/application.generateSSHKey"}>
## application-generateSSHKey
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"applicationId"} type={"string"} required={true} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/application.generateSSHKey" \
-d '{
"applicationId": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/application.generateSSHKey", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/application.removeSSHKey"}>
## application-removeSSHKey
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"applicationId"} type={"string"} required={true} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/application.removeSSHKey" \
-d '{
"applicationId": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/application.removeSSHKey", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/application.markRunning"}>
## application-markRunning
@@ -1611,13 +1696,13 @@ In: `header`
<Property name={"applicationId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"name"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1633,6 +1718,10 @@ In: `header`
</Property>
<Property name={"buildArgs"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"memoryReservation"} type={"number | null"} required={false} deprecated={undefined}>
</Property>
@@ -1671,7 +1760,7 @@ In: `header`
<Property name={"sourceType"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"github" | "docker" | "git"`</span>
<span>Value in: `"github" | "docker" | "git"`</span>
</Property>
@@ -1695,6 +1784,46 @@ In: `header`
</Property>
<Property name={"gitlabProjectId"} type={"number | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitlabRepository"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitlabOwner"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitlabBranch"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitlabBuildPath"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitlabPathNamespace"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"bitbucketRepository"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"bitbucketOwner"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"bitbucketBranch"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"bitbucketBuildPath"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"username"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
@@ -1719,7 +1848,7 @@ In: `header`
</Property>
<Property name={"customGitSSHKey"} type={"string | null"} required={false} deprecated={undefined}>
<Property name={"customGitSSHKeyId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
@@ -1727,11 +1856,19 @@ In: `header`
</Property>
<Property name={"dockerContextPath"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"dropBuildPath"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"healthCheckSwarm"} type={"object | null"} required={false} deprecated={undefined}>
<ObjectCollapsible name={"healthCheckSwarm"}>
<Property name={"Test"} type={"array of string"} required={false} deprecated={undefined}>
<Property name={"Test"} type={"array<string>"} required={false} deprecated={undefined}>
</Property>
@@ -1783,13 +1920,13 @@ In: `header`
<ObjectCollapsible name={"placementSwarm"}>
<Property name={"Constraints"} type={"array of string"} required={false} deprecated={undefined}>
<Property name={"Constraints"} type={"array<string>"} required={false} deprecated={undefined}>
</Property>
<Property name={"Preferences"} type={"array of object"} required={false} deprecated={undefined}>
<Property name={"Preferences"} type={"array<object>"} required={false} deprecated={undefined}>
<ObjectCollapsible name={"Preferences"}>
<ObjectCollapsible name={"Object 1"}>
<Property name={"Spread"} type={"object"} required={true} deprecated={undefined}>
@@ -1811,9 +1948,9 @@ In: `header`
</Property>
<Property name={"Platforms"} type={"array of object"} required={false} deprecated={undefined}>
<Property name={"Platforms"} type={"array<object>"} required={false} deprecated={undefined}>
<ObjectCollapsible name={"Platforms"}>
<ObjectCollapsible name={"Object 1"}>
<Property name={"Architecture"} type={"string"} required={true} deprecated={undefined}>
@@ -1959,15 +2096,15 @@ In: `header`
</Property>
<Property name={"networkSwarm"} type={"array of object | null"} required={false} deprecated={undefined}>
<Property name={"networkSwarm"} type={"array<object> | null"} required={false} deprecated={undefined}>
<ObjectCollapsible name={"networkSwarm"}>
<ObjectCollapsible name={"Object 1"}>
<Property name={"Target"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"Aliases"} type={"array of string"} required={false} deprecated={undefined}>
<Property name={"Aliases"} type={"array<string>"} required={false} deprecated={undefined}>
</Property>
@@ -1989,13 +2126,17 @@ In: `header`
<Property name={"applicationStatus"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
</Property>
<Property name={"buildType"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"dockerfile" | "heroku_buildpacks" | "paketo_buildpacks" | "nixpacks"`</span>
<span>Value in: `"dockerfile" | "heroku_buildpacks" | "paketo_buildpacks" | "nixpacks" | "static"`</span>
</Property>
<Property name={"publishDirectory"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
@@ -2011,6 +2152,18 @@ In: `header`
</Property>
<Property name={"githubId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitlabId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"bitbucketId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
@@ -2032,6 +2185,7 @@ curl -X POST "http://localhost:3000/api/application.update" \
"appName": "string",
"description": "string",
"env": "string",
"buildArgs": "string",
"memoryReservation": 0,
"memoryLimit": 0,
"cpuReservation": 0,
@@ -2047,14 +2201,26 @@ curl -X POST "http://localhost:3000/api/application.update" \
"branch": "string",
"buildPath": "string",
"autoDeploy": true,
"gitlabProjectId": 0,
"gitlabRepository": "string",
"gitlabOwner": "string",
"gitlabBranch": "string",
"gitlabBuildPath": "string",
"gitlabPathNamespace": "string",
"bitbucketRepository": "string",
"bitbucketOwner": "string",
"bitbucketBranch": "string",
"bitbucketBuildPath": "string",
"username": "string",
"password": "string",
"dockerImage": "string",
"customGitUrl": "string",
"customGitBranch": "string",
"customGitBuildPath": "string",
"customGitSSHKey": "string",
"customGitSSHKeyId": "string",
"dockerfile": "string",
"dockerContextPath": "string",
"dropBuildPath": "string",
"healthCheckSwarm": {
"Test": [
"string"
@@ -2132,9 +2298,13 @@ curl -X POST "http://localhost:3000/api/application.update" \
"replicas": 0,
"applicationStatus": "idle",
"buildType": "dockerfile",
"publishDirectory": "string",
"createdAt": "string",
"registryId": "string",
"projectId": "string"
"projectId": "string",
"githubId": "string",
"gitlabId": "string",
"bitbucketId": "string"
}'
```

View File

@@ -25,13 +25,13 @@ In: `header`
<Property name={"email"} type={"string"} required={true} deprecated={undefined}>
<span>Format: `"email"`</span>
<span>Format: `"email"`</span>
</Property>
<Property name={"password"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `8`</span>
<span>Minimum length: `8`</span>
</Property>
@@ -134,7 +134,7 @@ In: `header`
<Property name={"password"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `8`</span>
<span>Minimum length: `8`</span>
</Property>
@@ -144,7 +144,7 @@ In: `header`
<Property name={"token"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -248,13 +248,13 @@ In: `header`
<Property name={"email"} type={"string"} required={true} deprecated={undefined}>
<span>Format: `"email"`</span>
<span>Format: `"email"`</span>
</Property>
<Property name={"password"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `8`</span>
<span>Minimum length: `8`</span>
</Property>
@@ -551,7 +551,7 @@ In: `header`
<Property name={"rol"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"admin" | "user"`</span>
<span>Value in: `"admin" | "user"`</span>
</Property>
@@ -869,7 +869,7 @@ In: `header`
<Property name={"id"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -883,7 +883,7 @@ In: `header`
<Property name={"rol"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"admin" | "user"`</span>
<span>Value in: `"admin" | "user"`</span>
</Property>
@@ -1104,13 +1104,13 @@ In: `header`
<Property name={"pin"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `6`</span>
<span>Minimum length: `6`</span>
</Property>
<Property name={"secret"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1213,7 +1213,7 @@ In: `header`
<Property name={"pin"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `6`</span>
<span>Minimum length: `6`</span>
</Property>

View File

@@ -33,7 +33,7 @@ In: `header`
<Property name={"prefix"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -43,7 +43,7 @@ In: `header`
<Property name={"database"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -65,7 +65,7 @@ In: `header`
<Property name={"databaseType"} type={"string"} required={true} deprecated={undefined}>
<span>Value in: `"postgres" | "mariadb" | "mysql" | "mongo"`</span>
<span>Value in: `"postgres" | "mariadb" | "mysql" | "mongo"`</span>
</Property>
@@ -281,7 +281,7 @@ In: `header`
<Property name={"prefix"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -295,7 +295,7 @@ In: `header`
<Property name={"database"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>

View File

@@ -0,0 +1,779 @@
---
title: bitbucket
full: true
---
import { Root, API, APIInfo, APIExample, Responses, Response, ResponseTypes, ExampleResponse, TypeScriptResponse, Property, ObjectCollapsible, Requests, Request } from "fumadocs-ui/components/api";
<Root>
<API>
<APIInfo method={"POST"} route={"/bitbucket.create"}>
## bitbucket-create
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"bitbucketId"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"bitbucketUsername"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"appPassword"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"bitbucketWorkspaceName"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitProviderId"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"authId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/bitbucket.create" \
-d '{
"bitbucketId": "string",
"bitbucketUsername": "string",
"appPassword": "string",
"bitbucketWorkspaceName": "string",
"gitProviderId": "string",
"authId": "string",
"name": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/bitbucket.create", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/bitbucket.one"}>
## bitbucket-one
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Query Parameters
<Property name={"bitbucketId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/bitbucket.one?bitbucketId=string"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/bitbucket.one?bitbucketId=string", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/bitbucket.bitbucketProviders"}>
## bitbucket-bitbucketProviders
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/bitbucket.bitbucketProviders"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/bitbucket.bitbucketProviders", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/bitbucket.getBitbucketRepositories"}>
## bitbucket-getBitbucketRepositories
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Query Parameters
<Property name={"bitbucketId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/bitbucket.getBitbucketRepositories?bitbucketId=string"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/bitbucket.getBitbucketRepositories?bitbucketId=string", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/bitbucket.getBitbucketBranches"}>
## bitbucket-getBitbucketBranches
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Query Parameters
<Property name={"owner"} type={"string"} required={true} deprecated={false}>
</Property>
<Property name={"repo"} type={"string"} required={true} deprecated={false}>
</Property>
<Property name={"bitbucketId"} type={"string"} required={false} deprecated={false}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/bitbucket.getBitbucketBranches?owner=string&repo=string&bitbucketId=string"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/bitbucket.getBitbucketBranches?owner=string&repo=string&bitbucketId=string", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/bitbucket.testConnection"}>
## bitbucket-testConnection
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"bitbucketId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"bitbucketUsername"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"workspaceName"} type={"string"} required={false} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/bitbucket.testConnection" \
-d '{
"bitbucketId": "string",
"bitbucketUsername": "string",
"workspaceName": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/bitbucket.testConnection", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/bitbucket.update"}>
## bitbucket-update
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"bitbucketId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"bitbucketUsername"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"appPassword"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"bitbucketWorkspaceName"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitProviderId"} type={"string"} required={true} deprecated={undefined}>
</Property>
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/bitbucket.update" \
-d '{
"bitbucketId": "string",
"bitbucketUsername": "string",
"appPassword": "string",
"bitbucketWorkspaceName": "string",
"gitProviderId": "string",
"name": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/bitbucket.update", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
</Root>

View File

@@ -29,19 +29,19 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"certificateData"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"privateKey"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -156,7 +156,7 @@ In: `header`
<Property name={"certificateId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -255,7 +255,7 @@ In: `header`
<Property name={"certificateId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>

View File

@@ -25,7 +25,7 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -39,7 +39,7 @@ In: `header`
<Property name={"composeType"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"docker-compose" | "stack"`</span>
<span>Value in: `"docker-compose" | "stack"`</span>
</Property>
@@ -149,7 +149,7 @@ In: `header`
<Property name={"composeId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -252,7 +252,7 @@ In: `header`
<Property name={"name"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -278,13 +278,13 @@ In: `header`
<Property name={"sourceType"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"git" | "github" | "raw"`</span>
<span>Value in: `"git" | "github" | "gitlab" | "bitbucket" | "raw"`</span>
</Property>
<Property name={"composeType"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"docker-compose" | "stack"`</span>
<span>Value in: `"docker-compose" | "stack"`</span>
</Property>
@@ -304,6 +304,38 @@ In: `header`
</Property>
<Property name={"gitlabProjectId"} type={"number | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitlabRepository"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitlabOwner"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitlabBranch"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitlabPathNamespace"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"bitbucketRepository"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"bitbucketOwner"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"bitbucketBranch"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"customGitUrl"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
@@ -312,7 +344,7 @@ In: `header`
</Property>
<Property name={"customGitSSHKey"} type={"string | null"} required={false} deprecated={undefined}>
<Property name={"customGitSSHKeyId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
@@ -322,13 +354,13 @@ In: `header`
<Property name={"composePath"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"composeStatus"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
</Property>
@@ -340,6 +372,18 @@ In: `header`
</Property>
<Property name={"githubId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitlabId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"bitbucketId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
@@ -369,14 +413,25 @@ curl -X POST "http://localhost:3000/api/compose.update" \
"owner": "string",
"branch": "string",
"autoDeploy": true,
"gitlabProjectId": 0,
"gitlabRepository": "string",
"gitlabOwner": "string",
"gitlabBranch": "string",
"gitlabPathNamespace": "string",
"bitbucketRepository": "string",
"bitbucketOwner": "string",
"bitbucketBranch": "string",
"customGitUrl": "string",
"customGitBranch": "string",
"customGitSSHKey": "string",
"customGitSSHKeyId": "string",
"command": "string",
"composePath": "string",
"composeStatus": "idle",
"projectId": "string",
"createdAt": "string"
"createdAt": "string",
"githubId": "string",
"gitlabId": "string",
"bitbucketId": "string"
}'
```
@@ -458,7 +513,7 @@ In: `header`
<Property name={"composeId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -560,7 +615,7 @@ In: `header`
<Property name={"composeId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -646,9 +701,9 @@ export interface Response {
<API>
<APIInfo method={"GET"} route={"/compose.allServices"}>
<APIInfo method={"GET"} route={"/compose.loadServices"}>
## compose-allServices
## compose-loadServices
### Authorization
@@ -662,7 +717,13 @@ In: `header`
<Property name={"composeId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"type"} type={"Any properties in not unknown, string"} required={false} deprecated={false}>
<span>Default: `"cache"`</span>
</Property>
@@ -680,7 +741,7 @@ In: `header`
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/compose.allServices?composeId=string"
curl -X GET "http://localhost:3000/api/compose.loadServices?composeId=string&type=cache"
```
</Request>
@@ -688,7 +749,7 @@ curl -X GET "http://localhost:3000/api/compose.allServices?composeId=string"
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/compose.allServices?composeId=string", {
fetch("http://localhost:3000/api/compose.loadServices?composeId=string&type=cache", {
method: "GET"
});
```
@@ -745,6 +806,108 @@ export interface Response {
<API>
<APIInfo method={"POST"} route={"/compose.fetchSourceType"}>
## compose-fetchSourceType
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"composeId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/compose.fetchSourceType" \
-d '{
"composeId": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/compose.fetchSourceType", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/compose.randomizeCompose"}>
## compose-randomizeCompose
@@ -761,7 +924,7 @@ In: `header`
<Property name={"composeId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -852,6 +1015,105 @@ export interface Response {
<API>
<APIInfo method={"GET"} route={"/compose.getConvertedCompose"}>
## compose-getConvertedCompose
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Query Parameters
<Property name={"composeId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/compose.getConvertedCompose?composeId=string"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/compose.getConvertedCompose?composeId=string", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/compose.deploy"}>
## compose-deploy
@@ -868,7 +1130,7 @@ In: `header`
<Property name={"composeId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -970,7 +1232,7 @@ In: `header`
<Property name={"composeId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1072,7 +1334,7 @@ In: `header`
<Property name={"composeId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1174,7 +1436,7 @@ In: `header`
<Property name={"composeId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1257,108 +1519,6 @@ export interface Response {
<API>
<APIInfo method={"POST"} route={"/compose.generateSSHKey"}>
## compose-generateSSHKey
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"composeId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/compose.generateSSHKey" \
-d '{
"composeId": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/compose.generateSSHKey", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/compose.refreshToken"}>
## compose-refreshToken
@@ -1375,7 +1535,7 @@ In: `header`
<Property name={"composeId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1461,108 +1621,6 @@ export interface Response {
<API>
<APIInfo method={"POST"} route={"/compose.removeSSHKey"}>
## compose-removeSSHKey
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"composeId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/compose.removeSSHKey" \
-d '{
"composeId": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/compose.removeSSHKey", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/compose.deployTemplate"}>
## compose-deployTemplate
@@ -1583,7 +1641,7 @@ In: `header`
<Property name={"id"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1759,4 +1817,95 @@ export interface Response {
</API>
<API>
<APIInfo method={"GET"} route={"/compose.getTags"}>
## compose-getTags
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/compose.getTags"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/compose.getTags", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
</Root>

View File

@@ -25,7 +25,7 @@ In: `header`
<Property name={"applicationId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -124,7 +124,7 @@ In: `header`
<Property name={"composeId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>

View File

@@ -25,7 +25,7 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -152,7 +152,7 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -567,7 +567,7 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>

View File

@@ -116,7 +116,7 @@ In: `header`
<Property name={"containerId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -213,9 +213,13 @@ In: `header`
### Query Parameters
<Property name={"appType"} type={"Any properties in string, string"} required={false} deprecated={false}>
</Property>
<Property name={"appName"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -233,7 +237,7 @@ In: `header`
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/docker.getContainersByAppNameMatch?appName=string"
curl -X GET "http://localhost:3000/api/docker.getContainersByAppNameMatch?appType=stack&appName=string"
```
</Request>
@@ -241,7 +245,7 @@ curl -X GET "http://localhost:3000/api/docker.getContainersByAppNameMatch?appNam
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/docker.getContainersByAppNameMatch?appName=string", {
fetch("http://localhost:3000/api/docker.getContainersByAppNameMatch?appType=stack&appName=string", {
method: "GET"
});
```
@@ -314,7 +318,7 @@ In: `header`
<Property name={"appName"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>

View File

@@ -25,31 +25,49 @@ In: `header`
<Property name={"host"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"path"} type={"string | null"} required={true} deprecated={undefined}>
<Property name={"path"} type={"string | null"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"port"} type={"number | null"} required={true} deprecated={undefined}>
<Property name={"port"} type={"number | null"} required={false} deprecated={undefined}>
<span>Minimum: `1`</span>
<span>Maximum: `65535`</span>
</Property>
<Property name={"https"} type={"boolean"} required={true} deprecated={undefined}>
<Property name={"https"} type={"boolean"} required={false} deprecated={undefined}>
</Property>
<Property name={"applicationId"} type={"string"} required={true} deprecated={undefined}>
<Property name={"applicationId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"certificateType"} type={"string"} required={true} deprecated={undefined}>
<Property name={"certificateType"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"letsencrypt" | "none"`</span>
<span>Value in: `"letsencrypt" | "none"`</span>
</Property>
<Property name={"composeId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"serviceName"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"domainType"} type={"string | null"} required={false} deprecated={undefined}>
<span>Value in: `"compose" | "application"`</span>
</Property>
@@ -71,10 +89,13 @@ curl -X POST "http://localhost:3000/api/domain.create" \
-d '{
"host": "string",
"path": "string",
"port": 0,
"port": 1,
"https": true,
"applicationId": "string",
"certificateType": "letsencrypt"
"certificateType": "letsencrypt",
"composeId": "string",
"serviceName": "string",
"domainType": "compose"
}'
```
@@ -237,9 +258,9 @@ export interface Response {
<API>
<APIInfo method={"POST"} route={"/domain.generateDomain"}>
<APIInfo method={"GET"} route={"/domain.byComposeId"}>
## domain-generateDomain
## domain-byComposeId
### Authorization
@@ -249,9 +270,11 @@ In: `header`
</Property>
### Request Body
### Query Parameters
<Property name={"applicationId"} type={"string"} required={true} deprecated={undefined}>
<Property name={"composeId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
@@ -269,10 +292,7 @@ In: `header`
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/domain.generateDomain" \
-d '{
"applicationId": "string"
}'
curl -X GET "http://localhost:3000/api/domain.byComposeId?composeId=string"
```
</Request>
@@ -280,8 +300,8 @@ curl -X POST "http://localhost:3000/api/domain.generateDomain" \
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/domain.generateDomain", {
method: "POST"
fetch("http://localhost:3000/api/domain.byComposeId?composeId=string", {
method: "GET"
});
```
@@ -337,9 +357,9 @@ export interface Response {
<API>
<APIInfo method={"POST"} route={"/domain.generateWildcard"}>
<APIInfo method={"POST"} route={"/domain.generateDomain"}>
## domain-generateWildcard
## domain-generateDomain
### Authorization
@@ -351,7 +371,9 @@ In: `header`
### Request Body
<Property name={"applicationId"} type={"string"} required={true} deprecated={undefined}>
<Property name={"appName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
@@ -369,9 +391,9 @@ In: `header`
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/domain.generateWildcard" \
curl -X POST "http://localhost:3000/api/domain.generateDomain" \
-d '{
"applicationId": "string"
"appName": "string"
}'
```
@@ -380,7 +402,7 @@ curl -X POST "http://localhost:3000/api/domain.generateWildcard" \
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/domain.generateWildcard", {
fetch("http://localhost:3000/api/domain.generateDomain", {
method: "POST"
});
```
@@ -451,35 +473,47 @@ In: `header`
### Request Body
<Property name={"domainId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"host"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"path"} type={"string | null"} required={true} deprecated={undefined}>
<Property name={"path"} type={"string | null"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"port"} type={"number | null"} required={true} deprecated={undefined}>
<Property name={"port"} type={"number | null"} required={false} deprecated={undefined}>
<span>Minimum: `1`</span>
<span>Maximum: `65535`</span>
</Property>
<Property name={"https"} type={"boolean"} required={true} deprecated={undefined}>
<Property name={"https"} type={"boolean"} required={false} deprecated={undefined}>
</Property>
<Property name={"certificateType"} type={"string"} required={true} deprecated={undefined}>
<Property name={"certificateType"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"letsencrypt" | "none"`</span>
<span>Value in: `"letsencrypt" | "none"`</span>
</Property>
<Property name={"serviceName"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"domainType"} type={"string | null"} required={false} deprecated={undefined}>
<span>Value in: `"compose" | "application"`</span>
</Property>
<Property name={"domainId"} type={"string"} required={true} deprecated={undefined}>
</Property>
@@ -499,12 +533,14 @@ In: `header`
```bash
curl -X POST "http://localhost:3000/api/domain.update" \
-d '{
"domainId": "string",
"host": "string",
"path": "string",
"port": 0,
"port": 1,
"https": true,
"certificateType": "letsencrypt"
"certificateType": "letsencrypt",
"serviceName": "string",
"domainType": "compose",
"domainId": "string"
}'
```
@@ -586,8 +622,6 @@ In: `header`
<Property name={"domainId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
@@ -685,8 +719,6 @@ In: `header`
<Property name={"domainId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |

View File

@@ -0,0 +1,203 @@
---
title: gitProvider
full: true
---
import { Root, API, APIInfo, APIExample, Responses, Response, ResponseTypes, ExampleResponse, TypeScriptResponse, Property, ObjectCollapsible, Requests, Request } from "fumadocs-ui/components/api";
<Root>
<API>
<APIInfo method={"GET"} route={"/gitProvider.getAll"}>
## gitProvider-getAll
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/gitProvider.getAll"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/gitProvider.getAll", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/gitProvider.remove"}>
## gitProvider-remove
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"gitProviderId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/gitProvider.remove" \
-d '{
"gitProviderId": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/gitProvider.remove", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
</Root>

View File

@@ -0,0 +1,661 @@
---
title: github
full: true
---
import { Root, API, APIInfo, APIExample, Responses, Response, ResponseTypes, ExampleResponse, TypeScriptResponse, Property, ObjectCollapsible, Requests, Request } from "fumadocs-ui/components/api";
<Root>
<API>
<APIInfo method={"GET"} route={"/github.one"}>
## github-one
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Query Parameters
<Property name={"githubId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/github.one?githubId=string"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/github.one?githubId=string", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/github.getGithubRepositories"}>
## github-getGithubRepositories
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Query Parameters
<Property name={"githubId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/github.getGithubRepositories?githubId=string"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/github.getGithubRepositories?githubId=string", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/github.getGithubBranches"}>
## github-getGithubBranches
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Query Parameters
<Property name={"repo"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"owner"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"githubId"} type={"string"} required={false} deprecated={false}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/github.getGithubBranches?repo=string&owner=string&githubId=string"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/github.getGithubBranches?repo=string&owner=string&githubId=string", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/github.githubProviders"}>
## github-githubProviders
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/github.githubProviders"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/github.githubProviders", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/github.testConnection"}>
## github-testConnection
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"githubId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/github.testConnection" \
-d '{
"githubId": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/github.testConnection", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/github.update"}>
## github-update
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"githubId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"githubAppName"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"githubAppId"} type={"number | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"githubClientId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"githubClientSecret"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"githubInstallationId"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"githubPrivateKey"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"githubWebhookSecret"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitProviderId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/github.update" \
-d '{
"githubId": "string",
"githubAppName": "string",
"githubAppId": 0,
"githubClientId": "string",
"githubClientSecret": "string",
"githubInstallationId": "string",
"githubPrivateKey": "string",
"githubWebhookSecret": "string",
"gitProviderId": "string",
"name": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/github.update", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
</Root>

View File

@@ -0,0 +1,816 @@
---
title: gitlab
full: true
---
import { Root, API, APIInfo, APIExample, Responses, Response, ResponseTypes, ExampleResponse, TypeScriptResponse, Property, ObjectCollapsible, Requests, Request } from "fumadocs-ui/components/api";
<Root>
<API>
<APIInfo method={"POST"} route={"/gitlab.create"}>
## gitlab-create
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"gitlabId"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"applicationId"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"redirectUri"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"secret"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"accessToken"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"refreshToken"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"groupName"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"expiresAt"} type={"number | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitProviderId"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"authId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/gitlab.create" \
-d '{
"gitlabId": "string",
"applicationId": "string",
"redirectUri": "string",
"secret": "string",
"accessToken": "string",
"refreshToken": "string",
"groupName": "string",
"expiresAt": 0,
"gitProviderId": "string",
"authId": "string",
"name": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/gitlab.create", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/gitlab.one"}>
## gitlab-one
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Query Parameters
<Property name={"gitlabId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/gitlab.one?gitlabId=string"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/gitlab.one?gitlabId=string", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/gitlab.gitlabProviders"}>
## gitlab-gitlabProviders
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/gitlab.gitlabProviders"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/gitlab.gitlabProviders", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/gitlab.getGitlabRepositories"}>
## gitlab-getGitlabRepositories
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Query Parameters
<Property name={"gitlabId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/gitlab.getGitlabRepositories?gitlabId=string"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/gitlab.getGitlabRepositories?gitlabId=string", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/gitlab.getGitlabBranches"}>
## gitlab-getGitlabBranches
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Query Parameters
<Property name={"id"} type={"number"} required={false} deprecated={false}>
</Property>
<Property name={"owner"} type={"string"} required={true} deprecated={false}>
</Property>
<Property name={"repo"} type={"string"} required={true} deprecated={false}>
</Property>
<Property name={"gitlabId"} type={"string"} required={false} deprecated={false}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/gitlab.getGitlabBranches?id=0&owner=string&repo=string&gitlabId=string"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/gitlab.getGitlabBranches?id=0&owner=string&repo=string&gitlabId=string", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/gitlab.testConnection"}>
## gitlab-testConnection
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"gitlabId"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"groupName"} type={"string"} required={false} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/gitlab.testConnection" \
-d '{
"gitlabId": "string",
"groupName": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/gitlab.testConnection", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/gitlab.update"}>
## gitlab-update
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"gitlabId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"applicationId"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"redirectUri"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"secret"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"accessToken"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"refreshToken"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"groupName"} type={"string"} required={false} deprecated={undefined}>
</Property>
<Property name={"expiresAt"} type={"number | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"gitProviderId"} type={"string"} required={true} deprecated={undefined}>
</Property>
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/gitlab.update" \
-d '{
"gitlabId": "string",
"applicationId": "string",
"redirectUri": "string",
"secret": "string",
"accessToken": "string",
"refreshToken": "string",
"groupName": "string",
"expiresAt": 0,
"gitProviderId": "string",
"name": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/gitlab.update", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
</Root>

View File

@@ -25,19 +25,19 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"appName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"dockerImage"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"mariadb:6"`</span>
<span>Default: `"mariadb:6"`</span>
</Property>
@@ -55,13 +55,13 @@ In: `header`
<Property name={"databaseName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"databaseUser"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -681,7 +681,7 @@ In: `header`
<Property name={"applicationStatus"} type={"string"} required={true} deprecated={undefined}>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
</Property>
@@ -993,7 +993,7 @@ In: `header`
<Property name={"appName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1096,19 +1096,19 @@ In: `header`
<Property name={"mariadbId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"name"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"appName"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1118,13 +1118,13 @@ In: `header`
<Property name={"databaseName"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"databaseUser"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1138,7 +1138,7 @@ In: `header`
<Property name={"dockerImage"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"mariadb:6"`</span>
<span>Default: `"mariadb:6"`</span>
</Property>
@@ -1172,7 +1172,7 @@ In: `header`
<Property name={"applicationStatus"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
</Property>

View File

@@ -25,19 +25,19 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"appName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"dockerImage"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"mongo:15"`</span>
<span>Default: `"mongo:15"`</span>
</Property>
@@ -51,7 +51,7 @@ In: `header`
<Property name={"databaseUser"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -669,7 +669,7 @@ In: `header`
<Property name={"applicationStatus"} type={"string"} required={true} deprecated={undefined}>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
</Property>
@@ -776,7 +776,7 @@ In: `header`
<Property name={"appName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1084,19 +1084,19 @@ In: `header`
<Property name={"mongoId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"name"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"appName"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1106,7 +1106,7 @@ In: `header`
<Property name={"databaseUser"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1116,7 +1116,7 @@ In: `header`
<Property name={"dockerImage"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"mongo:15"`</span>
<span>Default: `"mongo:15"`</span>
</Property>
@@ -1150,7 +1150,7 @@ In: `header`
<Property name={"applicationStatus"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
</Property>

View File

@@ -25,7 +25,7 @@ In: `header`
<Property name={"type"} type={"string"} required={true} deprecated={undefined}>
<span>Value in: `"bind" | "volume" | "file"`</span>
<span>Value in: `"bind" | "volume" | "file"`</span>
</Property>
@@ -43,21 +43,25 @@ In: `header`
<Property name={"mountPath"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"serviceType"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"application"`</span>
<span>Default: `"application"`</span>
<span>Value in: `"application" | "postgres" | "mysql" | "mariadb" | "mongo" | "redis" | "compose"`</span>
<span>Value in: `"application" | "postgres" | "mysql" | "mariadb" | "mongo" | "redis" | "compose"`</span>
</Property>
<Property name={"filePath"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"serviceId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -83,6 +87,7 @@ curl -X POST "http://localhost:3000/api/mounts.create" \
"content": "string",
"mountPath": "string",
"serviceType": "application",
"filePath": "string",
"serviceId": "string"
}'
```
@@ -362,13 +367,13 @@ In: `header`
<Property name={"mountId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"type"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"bind" | "volume" | "file"`</span>
<span>Value in: `"bind" | "volume" | "file"`</span>
</Property>
@@ -380,21 +385,25 @@ In: `header`
</Property>
<Property name={"filePath"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"content"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"serviceType"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"application"`</span>
<span>Default: `"application"`</span>
<span>Value in: `"application" | "postgres" | "mysql" | "mariadb" | "mongo" | "redis" | "compose"`</span>
<span>Value in: `"application" | "postgres" | "mysql" | "mariadb" | "mongo" | "redis" | "compose"`</span>
</Property>
<Property name={"mountPath"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -446,6 +455,7 @@ curl -X POST "http://localhost:3000/api/mounts.update" \
"type": "bind",
"hostPath": "string",
"volumeName": "string",
"filePath": "string",
"content": "string",
"serviceType": "application",
"mountPath": "string",

View File

@@ -25,19 +25,19 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"appName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"dockerImage"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"mysql:8"`</span>
<span>Default: `"mysql:8"`</span>
</Property>
@@ -51,13 +51,13 @@ In: `header`
<Property name={"databaseName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"databaseUser"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -681,7 +681,7 @@ In: `header`
<Property name={"applicationStatus"} type={"string"} required={true} deprecated={undefined}>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
</Property>
@@ -788,7 +788,7 @@ In: `header`
<Property name={"appName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1096,19 +1096,19 @@ In: `header`
<Property name={"mysqlId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"name"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"appName"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1118,13 +1118,13 @@ In: `header`
<Property name={"databaseName"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"databaseUser"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1138,7 +1138,7 @@ In: `header`
<Property name={"dockerImage"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"mysql:8"`</span>
<span>Default: `"mysql:8"`</span>
</Property>
@@ -1172,7 +1172,7 @@ In: `header`
<Property name={"applicationStatus"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
</Property>

File diff suppressed because it is too large Load Diff

View File

@@ -33,15 +33,15 @@ In: `header`
<Property name={"protocol"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"tcp"`</span>
<span>Default: `"tcp"`</span>
<span>Value in: `"tcp" | "udp"`</span>
<span>Value in: `"tcp" | "udp"`</span>
</Property>
<Property name={"applicationId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -146,7 +146,7 @@ In: `header`
<Property name={"portId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -245,7 +245,7 @@ In: `header`
<Property name={"portId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -347,7 +347,7 @@ In: `header`
<Property name={"portId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -361,9 +361,9 @@ In: `header`
<Property name={"protocol"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"tcp"`</span>
<span>Default: `"tcp"`</span>
<span>Value in: `"tcp" | "udp"`</span>
<span>Value in: `"tcp" | "udp"`</span>
</Property>

View File

@@ -25,7 +25,7 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -35,13 +35,13 @@ In: `header`
<Property name={"databaseName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"databaseUser"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -51,7 +51,7 @@ In: `header`
<Property name={"dockerImage"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"postgres:15"`</span>
<span>Default: `"postgres:15"`</span>
</Property>
@@ -674,7 +674,7 @@ In: `header`
<Property name={"applicationStatus"} type={"string"} required={true} deprecated={undefined}>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
</Property>
@@ -1087,13 +1087,13 @@ In: `header`
<Property name={"postgresId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"name"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1103,13 +1103,13 @@ In: `header`
<Property name={"databaseName"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"databaseUser"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1123,7 +1123,7 @@ In: `header`
<Property name={"dockerImage"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"postgres:15"`</span>
<span>Default: `"postgres:15"`</span>
</Property>
@@ -1157,7 +1157,7 @@ In: `header`
<Property name={"applicationStatus"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
</Property>

View File

@@ -25,7 +25,7 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -132,7 +132,7 @@ In: `header`
<Property name={"projectId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -322,7 +322,7 @@ In: `header`
<Property name={"projectId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -424,7 +424,7 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -434,7 +434,7 @@ In: `header`
<Property name={"projectId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>

View File

@@ -25,13 +25,13 @@ In: `header`
<Property name={"regex"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"replacement"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -144,7 +144,7 @@ In: `header`
<Property name={"redirectId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -243,7 +243,7 @@ In: `header`
<Property name={"redirectId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -345,19 +345,19 @@ In: `header`
<Property name={"redirectId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"regex"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"replacement"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>

View File

@@ -25,13 +25,13 @@ In: `header`
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"appName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -41,7 +41,7 @@ In: `header`
<Property name={"dockerImage"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"redis:8"`</span>
<span>Default: `"redis:8"`</span>
</Property>
@@ -357,7 +357,7 @@ In: `header`
<Property name={"appName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -769,7 +769,7 @@ In: `header`
<Property name={"applicationStatus"} type={"string"} required={true} deprecated={undefined}>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
</Property>
@@ -1077,19 +1077,19 @@ In: `header`
<Property name={"redisId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"name"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"appName"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1103,7 +1103,7 @@ In: `header`
<Property name={"dockerImage"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"redis:8"`</span>
<span>Default: `"redis:8"`</span>
</Property>
@@ -1141,7 +1141,7 @@ In: `header`
<Property name={"applicationStatus"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
<span>Value in: `"idle" | "running" | "done" | "error"`</span>
</Property>

View File

@@ -25,19 +25,19 @@ In: `header`
<Property name={"registryName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"username"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"password"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -47,7 +47,7 @@ In: `header`
<Property name={"registryType"} type={"string"} required={true} deprecated={undefined}>
<span>Value in: `"selfHosted" | "cloud"`</span>
<span>Value in: `"selfHosted" | "cloud"`</span>
</Property>
@@ -158,7 +158,7 @@ In: `header`
<Property name={"registryId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -260,13 +260,13 @@ In: `header`
<Property name={"registryId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"registryName"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -276,19 +276,19 @@ In: `header`
<Property name={"username"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"password"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"registryUrl"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -298,13 +298,13 @@ In: `header`
<Property name={"registryType"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"selfHosted" | "cloud"`</span>
<span>Value in: `"selfHosted" | "cloud"`</span>
</Property>
<Property name={"adminId"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -505,7 +505,7 @@ In: `header`
<Property name={"registryId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -604,19 +604,19 @@ In: `header`
<Property name={"registryName"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"username"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"password"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -626,7 +626,7 @@ In: `header`
<Property name={"registryType"} type={"string"} required={true} deprecated={undefined}>
<span>Value in: `"selfHosted" | "cloud"`</span>
<span>Value in: `"selfHosted" | "cloud"`</span>
</Property>
@@ -737,19 +737,19 @@ In: `header`
<Property name={"registryUrl"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"username"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"password"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>

View File

@@ -29,13 +29,13 @@ In: `header`
<Property name={"username"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"password"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -139,7 +139,7 @@ In: `header`
<Property name={"securityId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -238,7 +238,7 @@ In: `header`
<Property name={"securityId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -340,19 +340,19 @@ In: `header`
<Property name={"securityId"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"username"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"password"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>

View File

@@ -191,6 +191,106 @@ export interface Response {
<API>
<APIInfo method={"POST"} route={"/settings.toggleDashboard"}>
## settings-toggleDashboard
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"enableDashboard"} type={"boolean"} required={false} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/settings.toggleDashboard" \
-d '{
"enableDashboard": true
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/settings.toggleDashboard", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/settings.cleanUnusedImages"}>
## settings-cleanUnusedImages
@@ -952,9 +1052,9 @@ In: `header`
<Property name={"certificateType"} type={"string"} required={false} deprecated={undefined}>
<span>Default: `"none"`</span>
<span>Default: `"none"`</span>
<span>Value in: `"letsencrypt" | "none"`</span>
<span>Value in: `"letsencrypt" | "none"`</span>
</Property>
@@ -1340,7 +1440,7 @@ In: `header`
<Property name={"traefikConfig"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1533,7 +1633,7 @@ In: `header`
<Property name={"traefikConfig"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -1726,7 +1826,7 @@ In: `header`
<Property name={"traefikConfig"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -2192,13 +2292,13 @@ In: `header`
<Property name={"path"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
<Property name={"traefikConfig"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -2301,7 +2401,7 @@ In: `header`
<Property name={"path"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -2384,6 +2484,97 @@ export interface Response {
<API>
<APIInfo method={"GET"} route={"/settings.getIp"}>
## settings-getIp
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/settings.getIp"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/settings.getIp", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/settings.getOpenApiDocument"}>
## settings-getOpenApiDocument
@@ -2473,4 +2664,286 @@ export interface Response {
</API>
<API>
<APIInfo method={"GET"} route={"/settings.readTraefikEnv"}>
## settings-readTraefikEnv
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/settings.readTraefikEnv"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/settings.readTraefikEnv", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/settings.writeTraefikEnv"}>
## settings-writeTraefikEnv
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"env"} type={"string"} required={true} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/settings.writeTraefikEnv" \
-d '{
"env": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/settings.writeTraefikEnv", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/settings.haveTraefikDashboardPortEnabled"}>
## settings-haveTraefikDashboardPortEnabled
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/settings.haveTraefikDashboardPortEnabled"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/settings.haveTraefikDashboardPortEnabled", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
</Root>

View File

@@ -0,0 +1,634 @@
---
title: sshKey
full: true
---
import { Root, API, APIInfo, APIExample, Responses, Response, ResponseTypes, ExampleResponse, TypeScriptResponse, Property, ObjectCollapsible, Requests, Request } from "fumadocs-ui/components/api";
<Root>
<API>
<APIInfo method={"POST"} route={"/sshKey.create"}>
## sshKey-create
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"name"} type={"string"} required={true} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"description"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"publicKey"} type={"string"} required={true} deprecated={undefined}>
</Property>
<Property name={"privateKey"} type={"string"} required={true} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/sshKey.create" \
-d '{
"name": "string",
"description": "string",
"publicKey": "string",
"privateKey": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/sshKey.create", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/sshKey.remove"}>
## sshKey-remove
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"sshKeyId"} type={"string"} required={true} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/sshKey.remove" \
-d '{
"sshKeyId": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/sshKey.remove", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/sshKey.one"}>
## sshKey-one
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Query Parameters
<Property name={"sshKeyId"} type={"string"} required={true} deprecated={false}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/sshKey.one?sshKeyId=string"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/sshKey.one?sshKeyId=string", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"GET"} route={"/sshKey.all"}>
## sshKey-all
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X GET "http://localhost:3000/api/sshKey.all"
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/sshKey.all", {
method: "GET"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/sshKey.generate"}>
## sshKey-generate
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"type"} type={"string"} required={false} deprecated={undefined}>
<span>Value in: `"rsa" | "ed25519"`</span>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/sshKey.generate" \
-d '{
"type": "rsa"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/sshKey.generate", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
<API>
<APIInfo method={"POST"} route={"/sshKey.update"}>
## sshKey-update
### Authorization
<Property name={"Authorization"} type={"Bearer <token>"} required={true}>
In: `header`
</Property>
### Request Body
<Property name={"name"} type={"string"} required={false} deprecated={undefined}>
<span>Minimum length: `1`</span>
</Property>
<Property name={"description"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"lastUsedAt"} type={"string | null"} required={false} deprecated={undefined}>
</Property>
<Property name={"sshKeyId"} type={"string"} required={true} deprecated={undefined}>
</Property>
| Status code | Description |
| ----------- | ----------- |
| `200` | Successful response |
| `default` | Error response |
</APIInfo>
<APIExample>
<Requests items={["cURL","JavaScript"]}>
<Request value={"cURL"}>
```bash
curl -X POST "http://localhost:3000/api/sshKey.update" \
-d '{
"name": "string",
"description": "string",
"lastUsedAt": "string",
"sshKeyId": "string"
}'
```
</Request>
<Request value={"JavaScript"}>
```js
fetch("http://localhost:3000/api/sshKey.update", {
method: "POST"
});
```
</Request>
</Requests>
<Responses items={["default"]}>
<Response value={"default"}>
<ResponseTypes>
<ExampleResponse>
```json
{
"message": "string",
"code": "string",
"issues": [
{
"message": "string"
}
]
}
```
</ExampleResponse>
<TypeScriptResponse>
```ts
export interface Response {
message: string;
code: string;
issues?: {
message: string;
}[];
}
```
</TypeScriptResponse>
</ResponseTypes>
</Response>
</Responses>
</APIExample>
</API>
</Root>

View File

@@ -116,7 +116,7 @@ In: `header`
<Property name={"authId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>
@@ -215,7 +215,7 @@ In: `header`
<Property name={"userId"} type={"string"} required={true} deprecated={false}>
<span>Minimum length: `1`</span>
<span>Minimum length: `1`</span>
</Property>

View File

@@ -0,0 +1,18 @@
---
title: 应用程序
description: 使用 Dokploy CLI 管理应用程序的指南
---
Dokploy CLI 可用于创建、部署和管理应用程序。
## 要求
需要先使用 Dokploy CLI 进行身份验证。
## 命令
1. `dokploy app create` - 创建一个新应用程序。
2. `dokploy app delete` - 删除一个应用程序。
3. `dokploy app deploy` - 部署一个应用程序。
4. `dokploy app stop` - 停止一个正在运行的应用程序。

View File

@@ -0,0 +1,25 @@
---
title: 身份验证
description: 使用 Dokploy CLI 进行身份验证的指南
---
Dokploy CLI 使用基于令牌的身份验证系统。要进行身份验证,您需要创建一个访问令牌并安全存储它。
## 创建访问令牌
要创建访问令牌,首先您需要具备相应的权限,如果您是管理员,则不需要权限。
默认情况下,访问令牌不会过期。
您可以前往 `dashboard/settings/profile` 并点击 `生成` 按钮。
<ImageZoom src="/assets/cli/token.png" width={800} height={630} alt='home og image' className="rounded-lg" />
## 存储访问令牌
当您创建访问令牌时Dokploy 将自动生成一个包含访问令牌和服务器 URL 的 config.json 文件。
## 命令
1. `dokploy authenticate` - 使用 Dokploy CLI 进行身份验证。
2. `dokploy verify` - 验证访问令牌是否有效。

View File

@@ -0,0 +1,43 @@
---
title: 数据库
description: 使用 Dokploy CLI 管理数据库的指南
---
Dokploy CLI 可用于创建、部署和管理数据库。
## 需求
需要先进行 Dokploy CLI 的身份验证。
## 命令
### MariaDB
1. `dokploy database mariadb create` - 创建一个新的 MariaDB 数据库。
2. `dokploy database mariadb delete` - 删除一个 MariaDB 数据库。
3. `dokploy database mariadb deploy` - 部署一个 MariaDB 数据库。
4. `dokploy database mariadb stop` - 停止运行中的 MariaDB 数据库。
### PostgreSQL
1. `dokploy database postgresql create` - 创建一个新的 PostgreSQL 数据库。
2. `dokploy database postgresql delete` - 删除一个 PostgreSQL 数据库。
3. `dokploy database postgresql deploy` - 部署一个 PostgreSQL 数据库。
4. `dokploy database postgresql stop` - 停止运行中的 PostgreSQL 数据库。
### MySQL
1. `dokploy database mysql create` - 创建一个新的 MySQL 数据库。
2. `dokploy database mysql delete` - 删除一个 MySQL 数据库。
3. `dokploy database mysql deploy` - 部署一个 MySQL 数据库。
4. `dokploy database mysql stop` - 停止运行中的 MySQL 数据库。
### MongoDB
1. `dokploy database mongodb create` - 创建一个新的 MongoDB 数据库。
2. `dokploy database mongodb delete` - 删除一个 MongoDB 数据库。
3. `dokploy database mongodb deploy` - 部署一个 MongoDB 数据库。
4. `dokploy database mongodb stop` - 停止运行中的 MongoDB 数据库。
### Redis
1. `dokploy database redis create` - 创建一个新的 Redis 数据库。
2. `dokploy database redis delete` - 删除一个 Redis 数据库。
3. `dokploy database redis deploy` - 部署一个 Redis 数据库。
4. `dokploy database redis stop` - 停止运行中的 Redis 数据库。

View File

@@ -0,0 +1,16 @@
---
title: 项目
description: 使用 Dokploy CLI 管理项目的指南
---
Dokploy CLI 可用于创建、部署和管理项目。
## 需求
需要先进行 Dokploy CLI 的身份验证。
## 命令
1. `dokploy project create` - 创建一个新项目。
2. `dokploy project info` - 获取有关项目的信息。
3. `dokploy project list` - 列出所有项目。

View File

@@ -0,0 +1,23 @@
---
title: 介绍
description: 使用 Dokploy 命令行界面的指南
---
Dokploy CLI 是一个用于远程管理您的 Dokploy 服务器的命令行工具。它简化了应用程序和数据库的创建、部署和管理。
## 安装
```bash
npm install -g @dokploy/cli
```
## 用法
```bash
dokploy COMMAND
```
要获取特定命令的帮助:
```bash
dokploy COMMAND --help
```

View File

@@ -0,0 +1,13 @@
{
"title": "CLI",
"root": true,
"pages": [
"---开始使用---",
"index",
"---命令---",
"commands/authentication",
"commands/project",
"commands/application",
"commands/databases"
]
}

View File

@@ -0,0 +1,166 @@
---
title: 高级功能
description: 了解如何使用应用程序中的高级功能。
---
本节旨在为需要在 Dokploy 中管理复杂配置和编排设置的高级用户提供支持。在这里,您可以执行自定义命令、管理集群副本、选择 Docker 注册表以及配置 Docker Swarm 设置。
### 运行命令
- **目的**:允许用户在容器内直接执行自定义 Shell 命令。
- **用法**:在提供的字段中输入需要运行的命令,然后单击“保存”以在容器环境中执行。这一工具特别适合调试或特定管理任务。
### 集群设置
- **目的**:管理应用程序在多个服务器或节点上的扩展和分布。
- **副本数**:设置应运行的应用程序实例数量。
- **注册表选择**:选择将从中提取容器映像的 Docker 注册表。这对于确保在部署过程中使用正确的映像至关重要。
#### 重要提示
修改集群设置后,请始终点击“重新部署”以应用更改。
### Swarm 设置
Swarm 设置允许详细配置容器在 Docker Swarm 中的编排方式。
#### 健康检查
- **目的**:确保容器平稳运行,并在失败时重新启动它们。
- **配置**:指定测试命令、间隔、超时、启动时间和重试次数等参数。
#### 重启策略
定义容器在退出或失败时的处理方式,配置如下:
- **条件**:指定应在何种条件下发生重启。
- **延迟**:设置重启之间的时间延迟。
- **最大尝试次数**:限制重启尝试的次数。
- **窗口**:定义用于评估重启策略的时间窗口。
#### 更新配置
管理 Swarm 中服务的部署和更新过程,配置如下:
- **并行性**:同时更新的容器数量。
- **延迟**:更新之间的时间。
- **失败操作**:更新失败时采取的操作。
- **监控**:更新后监控容器的持续时间。
- **最大失败比例**:在更新被视为失败之前,允许失败的容器比例。
- **顺序**:在更新过程中停止和启动容器的顺序。
#### 放置
根据特定规则和偏好控制容器在 Swarm 中的位置,配置如下:
- **约束条件**:容器放置在节点上必须满足的条件。
- **偏好设置**:在节点之间均匀分配容器的放置偏好。
### 回滚配置
管理更新失败时服务的回滚过程,配置如下:
- **并行性**:同时回滚的容器数量。
- **延迟**:回滚之间的时间。
- **失败操作**:回滚失败时采取的操作。
- **监控**:回滚后监控容器的持续时间。
- **最大失败比例**:在回滚被视为失败之前,允许失败的容器比例。
- **顺序**:在回滚过程中停止和重新启动容器的顺序。
### 模式
定义服务在 Swarm 中的复制方式,配置如下:
- **复制模式**:服务根据指定的设置在节点上复制。
- **副本数**:每个服务的副本数量。
- **全局模式**:每个节点运行服务的单个实例。
- **复制作业**:以复制的方式运行作业。
- **最大并发**:同时运行的作业最大数量。
- **总完成次数**:作业需要完成的总次数。
### 网络
配置服务的网络设置,配置如下:
- **目标**:指定网络名称。
- **别名**:为网络提供别名。
- **驱动程序选项**:网络驱动程序选项,如 MTU 大小和主机绑定。
### 标签
为容器分配元数据以帮助识别和组织,配置如下:
- **标签**:分配给服务的键值对。例如:
1. `com.example.app.name`: "my-app"
2. `com.example.app.version`: "1.0.0"
### 注意
修改 Swarm 设置需要谨慎考虑,因为不正确的配置可能会干扰整个容器编排。始终确保您理解所做更改的影响。
## 资源
管理分配给您的应用程序或数据库的内存和 CPU 资源。
- **内存保留**:保证应用程序的最小内存量。
- **内存限制**:应用程序可以使用的最大内存量。
- **CPU 限制**:应用程序可以使用的最大 CPU 单位数量。
- **CPU 保留**:为应用程序保留的最小 CPU 单位数量。
### 卷/挂载
配置应用程序的持久存储,以确保数据在容器重启和部署之间保持完整。
**绑定挂载**:将主机文件或目录映射到容器文件或目录。通常用于特定配置或数据库。
1. **主机路径**:主机上的路径。
2. **挂载路径**:容器中的路径。
**卷挂载**:使用 Docker 管理的卷,比绑定挂载更易于备份和迁移。
1. **卷名称**Docker 管理的卷名称。
2. **挂载路径**:容器中挂载卷的路径。
**文件挂载**:专门用于单个文件,适用于配置文件。
1. **内容**:要存储在文件中的内容。
2. **挂载路径**:容器中放置文件的路径。
文件挂载是 Dokploy 的一个功能,它在项目内部的 `files` 文件夹中创建一个文件,因此每次部署项目时都会重新创建。
<ImageZoom src="/assets/file-mount-configuration.webp" width={800} height={630} className="rounded-lg"/>
<ImageZoom src="/assets/file-mount.png" width={800} height={630} className="rounded-lg"/>
### 重定向
根据指定的规则将请求重定向到应用程序的另一个 URL提高导航效率和 SEO。
- **正则表达式**:输入一个正则表达式以匹配需要重定向的 URL。
- **替换**:指定流量应重定向到的目标 URL。
- **永久性**:启用此选项以应用永久性 (HTTP 301) 重定向,指示浏览器和搜索引擎页面已永久移动。
#### 示例
要将所有流量从 "http://localhost" 重定向到 "http://mydomain",请将正则表达式设置为 `http://localhost/(.*)`,并将替换设置为 `http://mydomain/$1`。
### 安全
为您的应用程序添加基本身份验证以限制访问。
- **用户名**:输入用户名。
- **密码**:输入密码。
#### 重要提示
添加基本身份验证将在允许访问应用程序之前提示用户输入用户名和密码。在需要额外安全层的环境中使用此功能。
### 端口
通过配置网络端口将应用程序暴露于互联网,允许外部访问。
- **发布端口**:将路由流量到您的应用程序的主机上的端口号。
- **目标端口**:容器内应用程序使用的端口号。
- **协议**:根据应用程序的要求选择 TCP 或 UDP。
#### 重要提示
确保发布端口不会与主机上的其他服务冲突,以避免端口绑定错误。此外,此端口主要用于从外部访问应用程序,例如 `your-ip:port`,而不是通过域访问应用程序。
### Traefik
提供了一种动态且强大的方法来管理 HTTP 流量到您的服务,包括负载均衡和 SSL 终止。
- **规则**:使用 Traefik 强大的基于规则的配置系统定义复杂的路由、负载均衡和安全配置。

View File

@@ -0,0 +1,85 @@
---
title: 自动部署
description: "了解如何将您的应用程序自动部署到 Dokploy。"
---
将应用程序自动部署到 Dokploy 可以通过两种主要方法实现:使用 Webhooks 或 Dokploy API。每种方法都支持各种平台并提供简化的部署流程。
## GitHub
对于 GitHub我们提供无需任何配置的自动部署。这将在您推送到代码库时自动部署您的应用程序。
## Webhook URL
Webhooks 允许您在源代码库中进行更改时自动部署应用程序。
- GitHub
- GitLab
- Bitbucket
- Gitea
- DockerHub
### 配置步骤
1. **启用自动部署**:在 Dokploy 的应用程序设置的一般选项卡中切换“自动部署”按钮。
2. **获取 Webhook URL**:从部署日志中找到 Webhook URL。
<ImageZoom
src="/assets/webhook-url.png"
alt="Webhook URL"
width={1000}
height={500}
/>
3. **配置您的代码库**
- 转到您选择的平台上的代码库设置。
- 添加由 Dokploy 提供的 webhook URL。
- 确保设置与触发 webhook 所需的配置匹配。
<ImageZoom
src="/assets/webhook-github.png"
alt="Webhook URL"
width={1000}
height={500}
/>
#### 重要提示
- **分支匹配**:使用基于 Git 的提供商GitHub、GitLab 等)时,请确保 Dokploy 中配置的分支与您打算推送的分支匹配。不匹配将导致“分支不匹配”错误。
- **Docker 标签**:对于使用 DockerHub 的部署,请确保推送的标签与 Dokploy 中指定的标签匹配。
- 所有提供商的步骤都是相同的。
### API 方法
通过 Dokploy API 从任何地方以编程方式部署您的应用程序。
### 使用 API 部署的步骤
步骤:
1. **生成令牌**:在 Dokploy 的个人资料设置中创建一个 API 令牌。
2. **获取应用程序 ID**
```http
curl -X 'GET' \
'https://your-domain/api/project.all' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <token>'
```
此命令列出所有项目和服务。确定您希望部署的应用程序的 applicationId。
3. **触发部署**
```http
curl -X 'POST' \
'https://your-domain/api/application.deploy' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <token>' \
-d '{
"applicationId": "string"
}'
```
此 API 方法允许灵活的、可编程的部署选项,适用于自动化系统或不便于直接代码库集成的情况。通过这种方式,您可以从任何地方部署您的应用程序,您可以使用 webhook URL 或 API。

View File

@@ -0,0 +1,46 @@
---
title: 域名
description: '域名'
---
本节概述了如何为 Dokploy 中的应用程序配置域名,确保您的应用程序可以通过自定义 URL 进行访问。
### 添加域名
将自定义域名与您的应用程序关联,使其能够通过互联网访问。
- **主机**:您希望链接到应用程序的域名(例如,`api.dokploy.com`)。
- **路径**:应用程序在域名内应可访问的具体路径。
- **容器端口**:域名应路由到容器上的端口。
- **证书**:选择是否通过 SSL/TLS 证书来保护域名。Dokploy 支持通过 Let's Encrypt 自动提供 SSL 证书。
- **HTTPS**:启用此选项以为您的域名启用 HTTPS提供安全的加密连接。
#### 添加域名的步骤
1. 点击“添加域名”。
2. 填写域名详细信息,包括主机、路径和端口。
3. 选择启用 HTTPS 并选择证书选项。
4. 点击“创建”以应用设置。
### 生成域名
快速为开发或测试目的设置域名,无需注册域名。
- **生成 TraefikMe 域名**:创建由 TraefikMe 提供的免费域名。这非常适合在购买正式域名之前进行测试或临时访问。
#### 生成域名的步骤
1. 点击“生成域名”。
2. 选择“生成 TraefikMe 域名”以快速设置。
3. 将自动为您的应用程序分配一个域名。
### 管理域名
- **查看和修改**:现有域名会列出,您可以编辑设置或删除它们。
- **详细信息**:每个域名条目显示已配置的主机、路径、端口以及 HTTPS 是否启用。
### 注意事项
正确的域名配置对于应用程序的可访问性和安全性至关重要。始终验证域名设置,并确保 DNS 配置正确指向正确的 IP 地址。启用 HTTPS 以增强安全性和信任,特别是在生产环境中。
### 关于容器端口的重要说明
域名设置中指定的“容器端口”专门用于通过 Traefik 将流量路由到正确的应用程序容器,并不会直接将端口暴露给互联网。这与“高级 -> 端口”部分中的端口设置根本不同,后者用于直接暴露应用程序端口。域名设置中的容器端口确保 Traefik 可以根据域名配置内部将流量引导到容器内的指定端口。

View File

@@ -15,6 +15,8 @@ Configure the source of your code, the way your application is built, and also m
If you need to assign environment variables to your application, you can do so here.
In case you need to use a multiline variable, you can wrap it in double quotes just like this `'"here_is_my_private_key"'`.
## Monitoring
Four graphs will be displayed for the use of memory, CPU, disk, and network. Note that the information is only updated if you are viewing the current page, otherwise it will not be updated.

View File

@@ -0,0 +1,42 @@
---
title: 提供者
description: '了解如何在您的应用程序中使用提供者。'
---
Dokploy 提供了几种部署方法,简化了无论您使用 GitHub、任何 Git 提供者、Docker 还是自动化部署的过程。
- GitHub
- Git任何 Git 提供者)
- Docker
## GitHub
通过 GitHub 部署非常简单:
1. 在 `/dashboard/settings/server` 中配置您的 GitHub 仓库。
2. 在创建应用程序时Dokploy 会自动检索可用的仓库和分支。
## Git
对于来自任何 Git 仓库的部署,无论是公共还是私有,您可以使用 SSH 或 HTTPS
1. 输入仓库的 URL。
2. 指定您希望部署的分支。
### 私有仓库
对于私有仓库,使用 SSH 进行身份验证。我们提供一个锁图标来生成 SSH 密钥。
<ImageZoom src="/assets/dokploy-ssh-key.png" width={800} height={630} className="rounded-lg"/>
然后,您可以复制 SSH 密钥并将其粘贴到您的帐户设置中。
<ImageZoom src="/assets/private-repository.png" width={800} height={630} className="rounded-lg"/>
这使您能够从私有仓库中拉取代码,这种方法在几乎所有提供者中都是一致的。
## Docker
对于 Docker 部署:
- 提供一个 Docker 镜像。对于私有仓库,输入用户名和密码。

View File

@@ -6,14 +6,30 @@ description: Learn how to use providers in your application.
Dokploy offers several deployment methods, streamlining the process whether you're utilizing GitHub, any Git provider, Docker, or automated deployments.
- GitHub
- Gitlab
- Bitbucket
- Git (Any Git Provider)
- Docker
## GitHub
Deploying via GitHub is straightforward:
Deploying via GitHub:
1. Configure your GitHub repository in the `/dashboard/settings/server`.
1. Configure your GitHub repository in the `/dashboard/settings/git-providers`.
2. When creating an application, Dokploy automatically retrieves the available repositories and branches.
## Gitlab
Deploying via Gitlab:
1. Configure your Gitlab repository in the `/dashboard/settings/git-providers`.
2. When creating an application, Dokploy automatically retrieves the available repositories and branches.
## Bitbucket
Deploying via Bitbucket:
1. Configure your Bitbucket repository in the `/dashboard/settings/git-providers`.
2. When creating an application, Dokploy automatically retrieves the available repositories and branches.
## Git
@@ -27,11 +43,21 @@ For deployments from any Git repository, whether public or private, you can use
For private repositories, authenticate using SSH. We provide a lock icon to generate an SSH key.
<ImageZoom src="/assets/dokploy-ssh-key.png" width={800} height={630} className="rounded-lg"/>
<ImageZoom
src="/assets/dokploy-ssh-key.png"
width={800}
height={630}
className="rounded-lg"
/>
You can then copy the SSH key and paste it into the settings of your account.
<ImageZoom src="/assets/private-repository.png" width={800} height={630} className="rounded-lg"/>
<ImageZoom
src="/assets/private-repository.png"
width={800}
height={630}
className="rounded-lg"
/>
This enables you to pull repositories from your private repository, a method consistent across nearly all providers.

View File

@@ -1,96 +1,88 @@
---
title: Cluster (Advanced)
description: "Learn how to set up and manage a cluster in Dokploy with docker swarm."
title: 集群(高级)
description: "了解如何在 Dokploy 中使用 Docker Swarm 设置和管理集群。"
sidebar:
order: 1
---
对于大多数情况,除非您需要扩展应用程序,否则您可能不需要使用集群。集群是由多个节点组成的,它们协同工作以提供一个统一的服务。在 Dokploy 中,集群管理着一组服务器,共同协作以提供这一统一服务。
For most suitables cases you may not need to use a cluster, unless you need to scale your application.
A cluster is a group of nodes that work together to provide a single, unified service. In Dokploy, clusters manage a group of servers collaborating to deliver this unified service.
我们在后台使用 Traefik 来为应用程序进行流量负载均衡。
We use traefik under the hood to load balance the traffic to the application.
建议在使用集群之前先阅读 [Traefik 文档](https://doc.traefik.io/traefik/routing/providers/swarm/),以更好地理解它的工作原理。
要开始向您的集群添加节点,您需要一个注册表。节点需要注册表来拉取镜像。
We recommend to read the [Traefik Docs](https://doc.traefik.io/traefik/routing/providers/swarm/) before using a cluster, to have a better understanding of how it works.
## 要求
To start adding nodes to your cluster, you need a registry. The nodes require the registry to pull images .
- 已安装 Dokploy 的服务器。
- 用于存储镜像的注册表。
- 用于添加为节点的额外服务器VPS
## Requirements
## 注册表选项
- A server with Dokploy installed.
- A registry to store your images.
- Additional servers (VPS) to add as nodes.
我们提供两种方法将注册表添加到您的集群中:
## Registry Options
- **自定义注册表(免费)**:在您的服务器上设置私有注册表。
- **外部注册表(付费)**:使用外部注册表,如 Docker Hub、DigitalOcean、AWS ECR 等。
We provide two methods to add a registry to your cluster:
您可以看到可以添加两种类型的注册表:
- **Custom Registry (Free)**: Set up a private registry on your server.
- **External Registry (Paid)**: Use external registries like Docker Hub, DigitalOcean, AWS ECR, etc.
<ImageZoom src="/assets/images/cluster/registry.png" width={800} height={630} alt='home og image' className="rounded-lg" />
## 向集群添加节点
You can see you can add two types of registries:
一旦有了注册表,您可以通过以下步骤向集群添加节点:
<ImageZoom src="/assets/images/cluster/registry.png" width={800} height={630} alt='home og image' className="rounded-lg" />
1. 点击 `Add Node` 按钮。
2. 您将看到两个标签:`Worker` 和 `Manager`。
3. 选择您要添加的节点类型。
4. 按照提供的两步进行操作:
- 安装 Docker 引擎。
- 安装 Dokploy 代理。这两个节点类型的步骤是相同的。
5. 在新服务器上运行提供的命令。
6. 运行命令后,进入 `server/settings/cluster`。您将在表格中看到 Worker 和 Manager 节点的条目。
<ImageZoom src="/assets/images/cluster/nodes.png" width={800} height={630} alt='home og image' className="rounded-lg" />
<ImageZoom src="/assets/images/cluster/cluster.png" width={800} height={630} alt='home og image' className="rounded-lg" />
<ImageZoom src="/assets/images/cluster/application.png" width={800} height={630} alt='home og image' className="rounded-lg" />
## Adding Nodes to a Cluster
## 部署应用程序
Once you have a registry, you can add nodes to your cluster by following these steps:
一旦您将节点连接到集群,您可以按以下步骤部署应用程序:
1. Click the `Add Node` button.
2. You will see two tabs: `Worker` and `Manager`.
3. Select the type of node you want to add.
4. Follow the two steps provided:
- Install the Docker engine.
- Install the Dokploy agent. These steps are the same for both node types.
5. Run the provided commands on the new server.
6. After running the commands, go to `server/settings/cluster`. You will see entries for both the worker and manager nodes in the table.
1. 在项目中创建一个应用程序。
2. Fork 仓库 [Dokploy/swarm-test](https://github.com/Dokploy/swarm-test)。
3. 将其保存为 GitHub 提供商。
4. 进入应用程序的高级选项卡。
5. 在“集群设置”部分:
- 更改副本数量(默认是 1
- 选择节点拉取镜像的注册表。
6. 现在,您可以将应用程序部署到集群(通过点击 `Deploy` 按钮)。
<ImageZoom src="/assets/images/cluster/nodes.png" width={800} height={630} alt='home og image' className="rounded-lg" />
<ImageZoom src="/assets/images/cluster/cluster.png" width={800} height={630} alt='home og image' className="rounded-lg" />
<ImageZoom src="/assets/images/cluster/application.png" width={800} height={630} alt='home og image' className="rounded-lg" />
事实上这是实现多节点部署的一个简单方法。Traefik 将处理负载均衡,并将流量路由到应用程序最可用的节点。
要进一步增强此设置,您可以使用 AWS、DigitalOcean 或 Google Cloud 等服务的负载均衡器。这些负载均衡器在路由请求之前会进行健康检查,以确保只有健康的节点接收流量。如果节点未通过健康检查,负载均衡器将自动将请求路由到另一个节点。此设置提供了更稳健和可扩展的部署。
## Deploying an Application
要向集群添加管理节点,请按照添加 Worker 节点的相同步骤进行操作。然而,如果运行 Dokploy 的管理节点发生故障,所有其他节点将变得不可访问。这是因为我们目前为集群设置了单一入口点。为确保高可用性,您应该有多个管理节点。
Once you have linked nodes to the cluster, you can deploy an application as follows:
要实现这一点,您需要将所有持久性和 Traefik 信息复制到新的管理节点。这将为集群创建多个入口点。您可以使用 rsync、aws data sync 或其他工具在节点之间同步所有必要信息。
1. Create an application in a project.
2. Fork the repository [Dokploy/swarm-test](https://github.com/Dokploy/swarm-test).
3. Save it as a GitHub provider.
4. Go to the advanced tab of the application.
5. In the "Cluster Settings" section:
- Change the number of replicas (default is 1).
- Select the registry for the nodes to pull images from.
6. Now you can deploy the application to the cluster (By clicking the `Deploy` button).
## 自定义应用程序
您可以在“Swarm 设置”部分自定义应用程序。在这里,您几乎可以修改与 Swarm 应用模式相关的所有设置。
In fact, this is a straightforward way to achieve multi-node deployments. Traefik will handle load balancing and route traffic to the node where the application is most available.
界面中提供了每个设置的占位符和预期格式。所有字段必须为 JSON 值。
To further enhance this setup, you can use load balancers from services like AWS, DigitalOcean, or Google Cloud. These load balancers perform health checks before routing requests to ensure that only healthy nodes receive traffic. If a node fails the health check, the load balancer will automatically route the request to another node. This setup provides a more robust and scalable deployment.
#### 可自定义设置:
To add manager nodes to the cluster, follow the same steps as adding a worker node. However, if the manager node (where Dokploy is running) fails, all other nodes will become inaccessible. This is because we currently have a single entry point for the cluster. To ensure high availability, you should have multiple manager nodes.
- 健康检查
- 重启策略
- 放置策略
- 更新配置
- 回滚配置
- 模式
- 网络
- 标签
To achieve this, you need to replicate all persistent and Traefik information to the new manager nodes. This will create multiple entry points for the cluster. You can use tools like rsync, aws data sync, or any other tool to synchronize all the necessary information between the nodes.
## Customizing the Application
You can customize the application in the "Swarm Settings" section. Here, you can modify almost every setting related to the swarm application mode.
In the interface, placeholders and expected formats for each setting are provided. All fields must be JSON values.
#### Customizable Settings:
- Healthcheck
- Restart Policy
- Placement
- Update Config
- Rollback Config
- Mode
- Network
- Labels
<ImageZoom src="/assets/images/cluster/swarm-settings.png" width={800} height={630} alt='home og image' className="rounded-lg" />
<ImageZoom src="/assets/images/cluster/swarm-settings.png" width={800} height={630} alt='home og image' className="rounded-lg" />

View File

@@ -0,0 +1,32 @@
---
title: 连接
description: "了解如何使用 Dokploy 连接到您的数据库。"
---
本节解释如何为 Dokploy 中的应用程序配置数据库访问,包括内部网络中的连接和可以通过互联网访问的外部连接。
### 内部凭证
用于从同一网络连接到数据库,而无需将数据库暴露于互联网。
- **用户**:数据库访问的用户名。
- **密码**:数据库访问的安全密码。
- **数据库名称**:要连接的数据库名称。
- **内部主机**:网络内数据库的主机名或内部标识符。
- **内部端口(容器)**:在容器内连接到数据库所使用的端口。
- **内部连接 URL**:用于内部连接数据库的完整连接字符串。
### 外部凭证
使数据库可以通过互联网访问,便于远程管理或外部应用程序。
- **外部端口(互联网)**:分配一个当前未被其他服务使用的端口,以便将数据库外部暴露。
#### 配置外部访问的步骤
1. 确保外部端口可用,并且与其他服务不冲突。
2. 输入要用于暴露数据库的外部端口。
3. 系统将自动生成外部连接 URL可用于通过互联网访问数据库的任何数据库管理工具如 phpMyAdmin、MySQL Workbench、PgAdmin 等。
### 重要提示
出于安全原因,应对在同一网络或环境中运行的应用程序使用内部凭证,以防止未经授权的访问。外部凭证应仅在必要时使用,并采取适当的安全措施,如 VPN 或 IP 白名单。

View File

@@ -26,6 +26,8 @@ Actions like deploying, updating, and deleting your database, and stopping it.
If you need to assign environment variables to your application, you can do so here.
In case you need to use a multiline variable, you can wrap it in double quotes just like this `'"here_is_my_private_key"'`.
## Monitoring
Four graphs will be displayed for the use of memory, CPU, disk, and network. Note that the information is only updated if you are viewing the current page, otherwise it will not be updated.

View File

@@ -0,0 +1,192 @@
---
title: 域名
description: 为您的 Docker Compose 应用程序配置域名。
---
在使用 Docker Compose 时,为服务添加域名是一个简单的过程。本指南将引导您完成为应用程序配置域名的必要步骤。
关键步骤:
1. 将服务添加到 `dokploy-network`。
2. 使用 Traefik 标签配置路由。
## 示例场景
让我们考虑一个包含三个组件的应用程序:前端、后端和数据库。我们将从一个基本的 Docker Compose 文件开始,然后通过域名配置对其进行增强。
```yaml
version: '3.8'
services:
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
volumes:
- ./frontend:/app
ports:
- "3000:3000"
depends_on:
- backend
backend:
build:
context: ./backend
dockerfile: Dockerfile
volumes:
- ./backend:/app
ports:
- "5000:5000"
environment:
- DATABASE_URL=postgres://postgres:password@database:5432/mydatabase
depends_on:
- database
database:
image: postgres:13
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
```
## 步骤 1添加网络
首先,我们将 `dokploy-network` 添加到我们的服务中:
```yaml
version: '3.8'
services:
frontend:
# ...(之前的配置)
networks:
- dokploy-network
backend:
# ...(之前的配置)
networks:
- dokploy-network
database:
# ...(之前的配置)
networks:
- dokploy-network
volumes:
db-data:
networks:
dokploy-network:
external: true
```
## 步骤 2配置 Traefik 标签
现在,让我们添加 Traefik 标签以将域名路由到我们的服务。我们将专注于前端和后端服务:
{/* 必须添加这些标签:
1. `traefik.enable=true`
此标签告诉 Traefik 此服务应由 Traefik 路由。
2. `traefik.http.routers.<UNIQUE-RULE>.rule=Host('your-domain.dokploy.com')`
此标签告诉 Traefik 使用的域名是 `your-domain.dokploy.com`
3. `traefik.http.routers.<UNIQUE-RULE>.entrypoints=web`
此标签告诉 Traefik 该服务应通过 `http` 协议访问。
4. `traefik.http.services.<UNIQUE-RULE>.loadbalancer.server.port=3000`
此标签告诉 Traefik 使用的端口是 `3000`
注意:对于 loadbalancer.server.port确保分配您服务所使用的端口。请注意您无需像这样暴露端口
注意:在 loadbalancer.server.port 确保分配您服务使用的端口,并且需要注意的是,您无需以这种方式暴露端口:
`'3000:3000'` 这是不正确的,您只需分配服务正在使用的端口,在这种情况下为 `3000`。
确保创建指向您的域名的 `A` 记录,这可以通过您的 DNS 提供商完成。*/}
```yaml
version: '3.8'
services:
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
volumes:
- ./frontend:/app
expose:
- 3000
depends_on:
- backend
networks:
- dokploy-network
labels:
- traefik.enable=true
- traefik.http.routers.frontend-app.rule=Host(`frontend.dokploy.com`)
- traefik.http.routers.frontend-app.entrypoints=web
- traefik.http.services.frontend-app.loadbalancer.server.port=3000
backend:
build:
context: ./backend
dockerfile: Dockerfile
volumes:
- ./backend:/app
expose:
- 5000
environment:
- DATABASE_URL=postgres://postgres:password@database:5432/mydatabase
depends_on:
- database
networks:
- dokploy-network
labels:
- traefik.enable=true
- traefik.http.routers.backend-app.rule=Host(`backend.dokploy.com`)
- traefik.http.routers.backend-app.entrypoints=web
- traefik.http.services.backend-app.loadbalancer.server.port=5000
database:
# ...(与之前相同)
volumes:
db-data:
networks:
dokploy-network:
external: true
```
## 理解 Traefik 标签
1. `traefik.enable=true` 启用服务的 Traefik 路由。
2. `traefik.http.routers.<UNIQUE-RULE>.rule=Host('your-domain.dokploy.com')` 指定服务的域名。
3. `traefik.http.routers.<UNIQUE-RULE>.entrypoints=web` 将服务设置为可通过 HTTP 访问。
4. `traefik.http.services.<UNIQUE-RULE>.loadbalancer.server.port=3000` 指定服务内部使用的端口。
**注意**:将 `<UNIQUE-RULE>` 替换为每个服务的唯一标识符例如frontend-app、backend-app 等)。
## 重要考虑事项
1. **端口暴露**:使用 `expose` 而不是 `ports` 来暴露主机机器的端口。这确保端口不会暴露给主机机器。
2. **DNS 配置**:确保您在 DNS 提供商设置中创建指向您域名的 `A` 记录。
3. **HTTPS**:对于 HTTPS您可以使用 Let's Encrypt 或其他 SSL/TLS 证书。
## 部署
有了这些配置,您现在可以使用 Docker Compose 部署您的应用程序。此设置应足以通过 Traefik 使用自定义域路由启动和运行您的服务。
## SSL 证书和进一步配置
如果您有关于何时使用 Let's Encrypt 或其他 SSL 证书选项的问题,您可以在以下资源中找到更详细的信息:
1. [证书](/docs/core/domain/certificates)
2. [Docker Compose 域名](/docs/core/domain/docker-compose-setup)
3. [Docker Compose 示例](/docs/core/docker-compose/example)
如果您有任何进一步的问题或需要帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc),我们很乐意为您提供帮助。

View File

@@ -10,12 +10,20 @@ Key Steps:
1. Add the service to the `dokploy-network`.
2. Use Traefik labels to configure routing.
import { Callout } from "fumadocs-ui/components/callout";
<Callout title="Attention" type="info">
Since v0.7.0 Dokploy support domains natively. This means that you can
configure your domain directly in the Dokploy UI, without doing the rest of
the steps.
</Callout>
Example Scenario
Let's consider an application with three components: a frontend, a backend, and a database. We'll start with a basic Docker Compose file and then enhance it with domain configuration.
```yaml
version: '3.8'
version: "3.8"
services:
frontend:
@@ -60,7 +68,7 @@ volumes:
First, we'll add the dokploy-network to our services:
```yaml
version: '3.8'
version: "3.8"
services:
frontend:
@@ -90,28 +98,8 @@ Step 2: Configuring Traefik Labels
Now, let's add Traefik labels to route domains to our services. We'll focus on the frontend and backend services:
{/* It is necessary to add these labels:
1. `traefik.enable=true`
This label tells Traefik that this service should be routed by Traefik.
2. `traefik.http.routers.<UNIQUE-RULE>.rule=Host('your-domain.dokploy.com')`
This label tells Traefik that the domain to be used is `your-domain.dokploy.com`
3. `traefik.http.routers.<UNIQUE-RULE>.entrypoints=web`
This label tells Traefik that the service should be accessible via the `http` protocol.
4. `traefik.http.services.<UNIQUE-RULE>.loadbalancer.server.port=3000`
This label tells Traefik that the port to be used is `3000`
Note: For loadbalancer.server.port, ensure you assign the port that your service is using. It's important to note that you do not need to expose the port like this:
Nota: en el loadbalancer.server.port asegurate de asignar el puerto que tu servicio esta utilizando, y alcaramos no es necesario que expongas el puerto de esta manera
'3000:3000' esto es incorrecto, unicamente debes de asignar el puerto que tu servicio esta utilizando, en este caso `3000`
asegurate de crear los registros `A` que apunten a tu dominio, esto hazlo desde tu DNS provider. */}
```yaml
version: '3.8'
version: "3.8"
services:
frontend:
@@ -165,21 +153,18 @@ networks:
Understanding Traefik Labels
1. `traefik.enable=true` Enables Traefik routing for the service.
1. `traefik.enable=true` Enables Traefik routing for the service.
2. `traefik.http.routers.<UNIQUE-RULE>.rule=Host('your-domain.dokploy.com')` Specifies the domain for the service
3. `traefik.http.routers.<UNIQUE-RULE>.entrypoints=web` Sets the service to be accessible via HTTP.
3. `traefik.http.routers.<UNIQUE-RULE>.entrypoints=web` Sets the service to be accessible via HTTP.
4. `traefik.http.services.<UNIQUE-RULE>.loadbalancer.server.port=3000` Specifies the port your service is using internally.
**Note**: Replace `<UNIQUE-RULE>` with a unique identifier for each service (e.g., frontend-app, backend-app, etc.).
**Note**: Replace `<UNIQUE-RULE>` with a unique identifier for each service (e.g., frontend-app, backend-app, etc.).
## Important Considerations
1. **Port Exposure**: Use `expose` instead of `ports` to expose ports to the host machine. This ensures that the ports are not exposed to the host machine.
2. **DNS Configuration**: Ensure you create `A` records pointing to your domain in your DNS Provider Settings.
3. **HTTPS**: For HTTPS, you can use Let's Encrypt or other SSL/TLS certificates.
3. **HTTPS**: For HTTPS, you can use Let's Encrypt or other SSL/TLS certificates.
## Deployment

View File

@@ -0,0 +1,107 @@
---
title: "示例"
description: "学习如何在 Dokploy 中使用 Docker Compose"
---
## 教程
在本教程中,我们将使用 Docker Compose 创建一个简单的应用程序,并将流量路由到可访问的域名。
### 步骤
1. 创建一个新项目。
2. 创建一个新服务 `Compose`,并选择 Compose 类型为 `Docker Compose`。
3. Fork 这个仓库:[Repo](https://github.com/Dokploy/docker-compose-test)。
4. 选择提供商类型GitHub 或 Git。
5. 选择仓库:`Dokploy/docker-compose-test`。
6. 选择分支:`main`。
7. 将 Compose 路径设置为 `./docker-compose.yml` 并保存。
![Docker compose configuration](/assets/images/compose/setup.png)
### 更新你的 `docker-compose.yml`
在现有的 `docker-compose.yml` 文件中添加以下内容:
1. 为每个服务添加网络 `dokploy-network`。
2. 添加 Traefik 标签,使服务能够通过域名访问。
示例:
让我们修改以下的 Compose 文件,使其能够在 Dokploy 中运行:
```yaml
version: "3"
services:
next-app:
build:
context: ./next-app
dockerfile: prod.Dockerfile
args:
ENV_VARIABLE: ${ENV_VARIABLE}
NEXT_PUBLIC_ENV_VARIABLE: ${NEXT_PUBLIC_ENV_VARIABLE}
restart: always
ports:
- 3000:3000
networks:
- my_network
networks:
my_network:
external: true
```
更新版本,添加了 dokploy-network 和 Traefik 标签:
import { Callout } from 'fumadocs-ui/components/callout';
<Callout type="warn">
不要为每个服务设置 container_name 属性,否则会导致日志、指标和其他功能出现问题。
</Callout>
{/* :::danger
不要为每个服务设置 container_name 属性,否则会导致日志、指标和其他功能出现问题。
::: */}
```yaml
version: "3"
services:
next-app:
build:
context: ./next-app
dockerfile: prod.Dockerfile
args:
ENV_VARIABLE: ${ENV_VARIABLE}
NEXT_PUBLIC_ENV_VARIABLE: ${NEXT_PUBLIC_ENV_VARIABLE}
restart: always
ports:
- 3000
networks:
- dokploy-network
labels:
- "traefik.enable=true"
- "traefik.http.routers.<unique-name>.rule=Host(`your-domain.com`)"
- "traefik.http.routers.<unique-name>.entrypoints=websecure"
- "traefik.http.routers.<unique-name>.tls.certResolver=letsencrypt"
- "traefik.http.services.<unique-name>.loadbalancer.server.port=3000"
networks:
dokploy-network:
external: true
```
确保将 A 记录指向您希望用于服务的域名。
<ImageZoom src="/assets/images/compose/domain.png" width={800} height={630} alt='home og image' className="rounded-lg" />
通过点击 "deploy" 部署应用程序,等待部署完成。然后给 Traefik 大约 10 秒的时间来生成证书。之后,您就可以通过设置的域名访问应用程序。
<ImageZoom src="/assets/images/compose/application.png" width={800} height={630} alt='home og image' className="rounded-lg" />
**提示**:
1. 为每个路由器设置唯一名称:`traefik.http.routers.<unique-name>`
2. 为每个服务设置唯一名称:`traefik.http.services.<unique-name>`
3. 确保网络已连接到 `dokploy-network`
4. 将入口点设置为 websecure并将证书解析器设置为 letsencrypt以生成证书。

View File

@@ -0,0 +1,76 @@
---
title: "概述"
description: "了解如何使用 Docker Compose 和 Dokploy"
---
import { Callout } from "fumadocs-ui/components/callout";
Dokploy 集成了 Docker Compose 和 Docker Stack以提供灵活的部署解决方案。无论您是在本地开发还是进行大规模部署Dokploy 都能通过这些强大的 Docker 工具简化应用管理。
### 配置方法
Dokploy 提供两种创建 Docker Compose 配置的方法:
- **Docker Compose**:适用于标准 Docker Compose 配置。
- **Stack**:旨在使用 Docker Swarm 进行应用编排。请注意,在此模式下,一些 Docker Compose 功能(例如 `build`)不可用。
### 一般
配置代码来源、应用构建方式,并管理部署、更新、删除应用及停止应用等操作。
### 环境
Dokploy 内置的代码编辑器允许您为 Docker Compose 文件指定环境变量。默认情况下Dokploy 会在指定的 Docker Compose 文件路径中创建 `.env` 文件。
### 监控
在 Dokploy 中可以单独监控每个服务。如果您的应用包含多个服务,可以单独监控每个服务,以确保最佳性能。
### 日志
通过 Dokploy 日志查看器访问每个服务的详细日志,这可以帮助排除故障并确保服务的稳定性。
### 部署
您可以查看应用的最近 10 次部署。当您实时部署应用时,将创建一个新的部署记录,并逐渐显示应用的构建过程。
我们还提供一个按钮,可以取消排队中的部署。请注意,正在进行的部署无法取消。
我们提供了一个 webhook以便您可以通过推送到 GitHub、Gitea、GitLab、Bitbucket 仓库来触发自己的部署。
### 高级
本节为经验丰富的用户提供高级配置选项。包括在容器内自定义命令和卷的工具。
- **命令**Dokploy 定义了一个命令来运行 Docker Compose 文件,确保通过 UI 完全控制。不过,您可以向命令添加标志或选项。
- **卷**:为了确保数据在部署之间持久化,配置应用的存储卷。
<ImageZoom
src="/assets/images/compose/overview.png"
width={800}
height={630}
quality={100}
priority
alt="首页 og 图片"
className="rounded-lg"
/>
<Callout title="卷">
Docker 卷是一种持久化 Docker 容器生成和使用的数据的方式。它们对于在容器重启之间维护数据或在不同容器之间共享数据尤其有用。
要将卷绑定到主机,可以在您的 docker-compose.yml 文件中使用以下语法,但这种方式在新部署时会清理卷:
```yaml
volumes:
- "/folder:/path/in/container" ❌
```
建议使用 ../files 文件夹,以确保您的数据在部署之间保持持久。例如:
```yaml
volumes:
- "../files/my-database:/var/lib/mysql" ✅
- "../files/my-configs:/etc/my-app/config" ✅
```
</Callout>

View File

@@ -0,0 +1,40 @@
---
title: "提供商"
description: "了解如何在 Dokploy 中使用 Docker Compose。"
---
Dokploy 提供几种部署方法,使得无论您是使用 GitHub、任何 Git 提供商、原始方法还是自动部署,流程都更加简化。
- GitHub
- Git任何 Git 提供商)
- 原始方法
## GitHub
通过 GitHub 部署非常简单:
1. 在 `/dashboard/settings/server` 中配置您的 GitHub 存储库。
2. 在创建应用程序时Dokploy 会自动检索可用的存储库和分支。
## Git
对于来自任何 Git 存储库的部署,无论是公共的还是私有的,您可以使用 SSH 或 HTTPS
1. 输入存储库 URL。
2. 指定您希望部署的分支。
### 私有存储库
对于私有存储库,请使用 SSH 进行身份验证。我们提供一个锁定图标以生成 SSH 密钥。
<ImageZoom src="/assets/dokploy-ssh-compose.png" width={800} height={630} className="rounded-lg"/>
然后,您可以复制 SSH 密钥并将其粘贴到您账户的设置中。
<ImageZoom src="/assets/private-repository.png" width={800} height={630} className="rounded-lg"/>
这使您能够从私有存储库中拉取代码,这种方法几乎适用于所有提供商。
## 原始方法
您可以直接在代码编辑器中指定 Docker Compose 文件并触发部署。

View File

@@ -6,14 +6,30 @@ description: "Learn how to use Docker Compose with Dokploy"
Dokploy offers several deployment methods, streamlining the process whether you're utilizing GitHub, any Git provider, Raw, or automated deployments.
- GitHub
- Gitlab
- Bitbucket
- Git (Any Git Provider)
- Raw
## GitHub
Deploying via GitHub is straightforward:
Deploying via GitHub:
1. Configure your GitHub repository in the `/dashboard/settings/server`.
1. Configure your GitHub repository in the `/dashboard/settings/git-providers`.
2. When creating an application, Dokploy automatically retrieves the available repositories and branches.
## Gitlab
Deploying via Gitlab:
1. Configure your Gitlab repository in the `/dashboard/settings/git-providers`.
2. When creating an application, Dokploy automatically retrieves the available repositories and branches.
## Bitbucket
Deploying via Bitbucket:
1. Configure your Bitbucket repository in the `/dashboard/settings/git-providers`.
2. When creating an application, Dokploy automatically retrieves the available repositories and branches.
## Git
@@ -27,15 +43,24 @@ For deployments from any Git repository, whether public or private, you can use
For private repositories, authenticate using SSH. We provide a lock icon to generate an SSH key.
<ImageZoom src="/assets/dokploy-ssh-compose.png" width={800} height={630} className="rounded-lg"/>
<ImageZoom
src="/assets/dokploy-ssh-compose.png"
width={800}
height={630}
className="rounded-lg"
/>
You can then copy the SSH key and paste it into the settings of your account.
<ImageZoom src="/assets/private-repository.png" width={800} height={630} className="rounded-lg"/>
<ImageZoom
src="/assets/private-repository.png"
width={800}
height={630}
className="rounded-lg"
/>
This enables you to pull repositories from your private repository, a method consistent across nearly all providers.
## Raw
You specify a docker compose file directly in the code editor and trigger a deployment.
You specify a docker compose file directly in the code editor and trigger a deployment.

View File

@@ -0,0 +1,59 @@
---
title: "证书"
description: "了解如何为 Dokploy 面板设置证书"
---
import { Callout } from 'fumadocs-ui/components/callout';
在为 Dokploy 使用域名时,我们提供三种证书选项:
- 不使用 (`None`)
- 使用免费的 SSL 证书(来自 [Let's Encrypt](https://letsencrypt.org/)
- 使用自定义 SSL 证书
## 不使用None
选择 `None` 意味着我们不会分配 `tlsResolver`,因此你的 DNS 提供商可以从他们的服务器实现 SSL 证书。
<Callout title="Cloudflare">当你在 Cloudflare 上注册域名时Cloudflare 会自动分配 SSL 证书,因此你需要在 Dokploy 中选择 `None` 并禁用 HTTPS。</Callout>
## Let's Encrypt
使用来自 [Let's Encrypt](https://letsencrypt.org/) 的免费 SSL 证书是最简单的选项,但它有一些限制:
1. **速率限制**:在特定时间范围内,每个域名和账户可发放的证书数量有限制。
2. **有效期短**:证书仅有效 90 天,但 Traefik 会自动为你续期。
3. **通配符证书**:虽然支持,但获取通配符证书需要 DNS-01 验证,可能会更复杂。
4. **仅域名验证**Let's Encrypt 仅提供域名验证DV证书这意味着它们只验证域名所有权而不验证背后的组织。
5. **无担保**:证书没有任何担保或责任覆盖,可能不适用于所有用例。
### 其他提供商
对于由 Cloudflare 以外的提供商管理的域名,流程非常简单:
1. 在 Dokploy 中选择 `Let's Encrypt` 并启用 `HTTPS`。
2. 确保 DNS 记录已正确设置为指向你的服务器。
3. 其余工作由 Traefik 处理,证书应在大约 20 秒内生成。
### Cloudflare 设置
如果你的域名由 Cloudflare 管理:
1. 确保你的域名在 Cloudflare 中设置为 `Full (Strict)` 模式。
2. 在 Dokploy 中选择 `Let's Encrypt` 并启用 `HTTPS`。
Cloudflare 配置步骤:
1. 登录 Cloudflare 并导航至 `Websites` -> `Your Domain` -> `SSL/TLS` -> `Overview`。
2. 你会看到四种模式Off、Flexible、Full、Full (Strict))。
3. 要使用 Let's Encrypt选择 `Full (Strict)`。
<Callout>
**注意**:在应用程序中创建域名时,确保使用 `Let's Encrypt` 证书并启用 `HTTPS`。证书的生成通常需要大约 20 秒。如果证书未生成,请重启 Traefik 并重试。
</Callout>
## 自定义 SSL
我们提供了创建证书并让 Traefik 引用它的方法,但这并不意味着它会自动生效。你需要调整 Traefik 配置以使用它。
你可以在[这里](https://docs.traefik.io/https/acme/#custom-ssl-certificates)阅读更多关于如何创建自定义证书的内容。

View File

@@ -0,0 +1,73 @@
---
title: "Docker Compose 设置"
description: "了解如何为 Docker Compose 应用程序设置域名"
---
import { Step, Steps } from 'fumadocs-ui/components/steps';
本指南详细说明了如何为你的 Docker Compose 应用程序设置域名。
## 创建 DNS 记录
1. 添加一个 `A` 记录到你的 DNS 设置中:
- **名称:** 输入你希望指向的路径(例如,`app` 对应 `app.yourdomain.com`)。
- **值:** 输入你的服务器 IP 地址,例如 `1.2.3.4`。
## Docker Compose 域名设置
要使 Docker Compose 服务或容器通过域名访问,需要在现有的 Docker Compose 文件中添加两部分内容。
<Steps>
<Step>
添加 `dokploy-network` 网络到每个服务。
```yaml
services:
app:
image: nextjs-app
networks:
- dokploy-network
ports:
- "3000"
networks:
dokploy-network:
external: true
```
</Step>
<Step>
添加 Traefik 标签,使服务可以通过域名访问。
1. 如果你使用的是默认的 Cloudflare 配置,添加以下标签:
- `traefik.http.routers.<unique-name>.entrypoints=web`
2. 如果你使用的是 Let's Encrypt 或 Cloudflare 的 Full Strict 模式,添加以下标签:
- `traefik.http.routers.<unique-name>.entrypoints=websecure`
- `traefik.http.routers.<unique-name>.tls.certResolver=letsencrypt`
```yaml
services:
app:
image: nextjs-app
networks:
- dokploy-network
ports:
- "3000"
labels:
- "traefik.enable=true"
- "traefik.http.routers.<unique-name>.entrypoints=websecure"
- "traefik.http.routers.<unique-name>.tls.certResolver=letsencrypt"
- "traefik.http.routers.<unique-name>.rule=Host(`app.yourdomain.com`)"
- "traefik.http.services.<unique-name>.loadbalancer.server.port=3000"
networks:
dokploy-network:
external: true
```
</Step>
</Steps>
### 基本 `docker-compose.yml` 文件示例
有关基本 `docker-compose.yml` 文件的示例,请参阅 [Docker Compose Quickstart](/docs/core/docker-compose/example#tutorial) 文档。

View File

@@ -0,0 +1,22 @@
---
title: "要求"
description: "查看为 Dokploy 面板配置域名的要求"
---
本指南将帮助你了解将域名分配给 Dokploy 面板或在其他应用程序(无论是 Docker Compose 还是其他)中使用的要求。
## 要求
在开始之前,请确保你已从以下提供商之一或你选择的其他提供商购买了域名:
- [Cloudflare](https://www.cloudflare.com/)
- [Namecheap](https://www.namecheap.com/domains/)
- [Name.com](https://www.name.com/)
- [GoDaddy](https://www.godaddy.com/)
- [Domain.com](https://www.domain.com/)
## 转移设置(可选)
我们建议将你的域名转移到 Cloudflare以获得免费 SSL 证书并灵活使用工具:
- [将域名转移到 Cloudflare](https://developers.cloudflare.com/registrar/get-started/transfer-domain-to-cloudflare/)

View File

@@ -0,0 +1,29 @@
---
title: Astro SSR
description: 部署一个简单的 Astro SSR 应用程序。
---
此示例将部署一个简单的 Astro SSR 应用程序。
1. **在您的应用程序中使用 Git 提供商**
- 仓库:`https://github.com/Dokploy/examples.git`
- 分支:`main`
- 构建路径:`/astro-ssr`
2. **添加环境变量**
- 导航到“环境”选项卡并添加以下变量:
```cmd
NIXPACKS_START_CMD="pnpm run preview"
```
3. **点击部署**
- 通过点击部署按钮来部署您的应用程序。
4. **生成域名**
- 点击生成域名按钮。
- 将为您生成一个新域名。
- 您可以使用此域名访问您的应用程序。
如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。

View File

@@ -0,0 +1,27 @@
---
title: Astro
description: 部署一个简单的 Astro 应用程序。
---
此示例将部署一个简单的 Astro 应用程序。
1. **在您的应用程序中使用 Git 提供商**
- 仓库:`https://github.com/Dokploy/examples.git`
- 分支:`main`
- 构建路径:`/astro`
2. **添加环境变量**
- 导航到“环境”选项卡并添加以下变量:
```cmd
NIXPACKS_START_CMD="pnpm run preview"
```
3. **点击部署**
- 通过点击部署按钮来部署您的应用程序。
4. **生成域名**
- 点击生成域名按钮。
- 将为您生成一个新域名。
- 您可以使用此域名访问您的应用程序。
如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。

View File

@@ -0,0 +1,29 @@
---
title: Lit
description: 部署一个简单的 Lit 应用程序。
---
此示例将部署一个简单的 Lit 应用程序。
1. **在您的应用程序中使用 Git 提供商**
- 仓库:`https://github.com/Dokploy/examples.git`
- 分支:`main`
- 构建路径:`/lit`
2. **添加环境变量**
- 导航到“环境”选项卡并添加以下变量:
```cmd
NIXPACKS_START_CMD="pnpm run preview"
```
3. **点击部署**
- 通过点击部署按钮来部署您的应用程序。
4. **生成域名**
- 点击生成域名按钮。
- 将为您生成一个新域名。
- 您可以使用此域名访问您的应用程序。
如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。

View File

@@ -0,0 +1,22 @@
---
title: Nest.js
description: 部署一个简单的 Nest.js 应用程序。
---
此示例将部署一个简单的 Nest.js 应用程序。
1. **在您的应用程序中使用 Git 提供商**
- 仓库:`https://github.com/Dokploy/examples.git`
- 分支:`main`
- 构建路径:`/nestjs`
2. **点击部署**
- 通过点击部署按钮来部署您的应用程序。
3. **生成域名**
- 点击生成域名按钮。
- 将为您生成一个新域名。
- 您可以使用此域名访问您的应用程序。
如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。

View File

@@ -0,0 +1,22 @@
---
title: Next.js
description: 部署一个简单的 Next.js 应用程序。
---
此示例将部署一个简单的 Next.js 应用程序。
1. **在您的应用程序中使用 Git 提供商**
- 仓库:`https://github.com/Dokploy/examples.git`
- 分支:`main`
- 构建路径:`/nextjs`
2. **点击部署**
- 通过点击部署按钮来部署您的应用程序。
3. **生成域名**
1. 点击生成域名按钮。
2. 将为您生成一个新域名。
3. 您可以使用此域名访问您的应用程序。
如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。

View File

@@ -0,0 +1,28 @@
---
title: Preact
description: 部署一个简单的 Preact 应用程序。
---
此示例将部署一个简单的 Preact 应用程序。
1. **在您的应用程序中使用 Git 提供商**
- 仓库:`https://github.com/Dokploy/examples.git`
- 分支:`main`
- 构建路径:`/preact`
2. **添加环境变量**
- 导航到“环境”选项卡,并添加以下变量:
```cmd
NIXPACKS_START_CMD="pnpm run preview"
```
3. **点击部署**
- 通过点击部署按钮来部署您的应用程序。
4. **生成域名**
- 点击生成域名按钮。
- 将为您生成一个新域名。
- 您可以使用此域名访问您的应用程序。
如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。

View File

@@ -0,0 +1,28 @@
---
title: Qwik
description: 部署一个简单的 Qwik 应用程序。
---
此示例将部署一个简单的 Qwik 应用程序。
1. **在您的应用程序中使用 Git 提供商**
- 仓库:`https://github.com/Dokploy/examples.git`
- 分支:`main`
- 构建路径:`/qwik`
2. **添加环境变量**
- 导航到“环境”选项卡,并添加以下变量:
```cmd
NIXPACKS_START_CMD="pnpm run preview"
```
3. **点击部署**
- 通过点击部署按钮来部署您的应用程序。
4. **生成域名**
- 点击生成域名按钮。
- 将为您生成一个新域名。
- 您可以使用此域名访问您的应用程序。
如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。

View File

@@ -0,0 +1,22 @@
---
title: Remix
description: 部署一个简单的 Remix 应用程序。
---
此示例将部署一个简单的 Remix 应用程序。
1. **在您的应用程序中使用 Git 提供商**
- 仓库:`https://github.com/Dokploy/examples.git`
- 分支:`main`
- 构建路径:`/remix`
2. **点击部署**
- 通过点击部署按钮来部署您的应用程序。
3. **生成域名**
- 点击生成域名按钮。
- 将为您生成一个新域名。
- 您可以使用此域名访问您的应用程序。
如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。

View File

@@ -0,0 +1,28 @@
---
title: Solid.js
description: 部署一个简单的 Solid.js 应用程序。
---
此示例将部署一个简单的 Solid.js 应用程序。
1. **在您的应用程序中使用 Git 提供商**
- 仓库:`https://github.com/Dokploy/examples.git`
- 分支:`main`
- 构建路径:`/solidjs`
2. **添加环境变量**
- 导航到“环境”选项卡并添加以下变量:
```cmd
NIXPACKS_START_CMD="pnpm run serve"
```
3. **点击部署**
- 通过点击部署按钮来部署您的应用程序。
4. **生成域名**
- 点击生成域名按钮。
- 将为您生成一个新域名。
- 您可以使用此域名访问您的应用程序。
如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。

View File

@@ -0,0 +1,28 @@
---
title: Svelte
description: 部署一个简单的 Svelte 应用程序。
---
此示例将部署一个简单的 Svelte 应用程序。
1. **在您的应用程序中使用 Git 提供商**
- 仓库:`https://github.com/Dokploy/examples.git`
- 分支:`main`
- 构建路径:`/svelte`
2. **添加环境变量**
- 导航到“环境”选项卡并添加以下变量:
```cmd
NIXPACKS_START_CMD="pnpm run preview"
```
3. **点击部署**
- 通过点击部署按钮来部署您的应用程序。
4. **生成域名**
- 点击生成域名按钮。
- 将为您生成一个新域名。
- 您可以使用此域名访问您的应用程序。
如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。

View File

@@ -0,0 +1,28 @@
---
title: Vite React
description: 部署一个简单的 Vite React 应用程序。
---
此示例将部署一个简单的 Vite React 应用程序。
1. **在您的应用程序中使用 Git 提供商**
- 仓库:`https://github.com/Dokploy/examples.git`
- 分支:`main`
- 构建路径:`/vite`
2. **添加环境变量**
- 导航到“环境”选项卡并添加以下变量:
```cmd
NIXPACKS_START_CMD="pnpm run preview"
```
3. **点击部署**
- 通过点击部署按钮来部署您的应用程序。
4. **生成域名**
- 点击生成域名按钮。
- 将为您生成一个新域名。
- 您可以使用此域名访问您的应用程序。
如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。

View File

@@ -0,0 +1,28 @@
---
title: Vue.js
description: 部署一个简单的 Vue.js 应用程序。
---
此示例将部署一个简单的 Vue.js 应用程序。
1. **在您的应用程序中使用 Git 提供商**
- 仓库:`https://github.com/Dokploy/examples.git`
- 分支:`main`
- 构建路径:`/vuejs`
2. **添加环境变量**
- 导航到“环境”选项卡并添加以下变量:
```cmd
NIXPACKS_START_CMD="pnpm run preview"
```
3. **点击部署**
- 通过点击部署按钮来部署您的应用程序。
4. **生成域名**
- 点击生成域名按钮。
- 将为您生成一个新域名。
- 您可以使用此域名访问您的应用程序。
如果您需要进一步的帮助,请加入我们的 [Discord 服务器](https://discord.com/invite/2tBnJ3jDJc)。

View File

@@ -1,22 +1,23 @@
---
title: 'Comparison'
description: 'A comparison of Dokploy, CapRover, Dokku, and Coolify'
title: "Comparison"
description: "A comparison of Dokploy, CapRover, Dokku, and Coolify"
---
Comparison of the following deployment tools:
| Feature | Dokploy | CapRover | Dokku | Coolify |
|-----------------------------------|---------------------------------------|--------------------------------------|--------------------------------------|--------------------------------------|
| **User Interface** | ✅ | ✅ | ❌ | ✅ |
| **Docker compose support** | | ❌ | ❌ | ✅ |
| **API/CLI** | ✅ | ✅ | ✅ | ✅ |
| **Multi node support** | ✅ | ✅ | ❌ | ✅ |
| **Traefik Integration** | ✅ | ✅ | Available via Plugins | ✅ |
| **User Permission Management** | ✅ | ❌ | ❌ | ✅ |
| **Advanced User Permission Management** | ✅ | ❌ | ❌ | ❌ |
| **Terminal Access Built In** | ✅ | ❌ | ❌ | ✅ |
| **Database Support** | ✅ | ✅ | ❌ | ✅ |
| **Monitoring** | ✅ | ✅ | ❌ | ❌ |
| **Backups** | ✅ | Available via Plugins | Available via Plugins | ✅ |
| **Open Source** | ✅ | ✅ | ✅ | ✅ |
| **Cloud/Paid Version** | ❌ | ✅ | ❌ | ✅ |
| Feature | Dokploy | CapRover | Dokku | Coolify |
| --------------------------------------- | ------- | --------------------- | --------------------- | ------- |
| **User Interface** | ✅ | ✅ | ❌ | ✅ |
| **Docker compose support** || ❌ | ❌ | ✅ |
| **API/CLI** | ✅ | ✅ | ✅ | ✅ |
| **Multi node support** | ✅ | ✅ | ❌ | ✅ |
| **Traefik Integration** | ✅ | ✅ | Available via Plugins | ✅ |
| **User Permission Management** | ✅ | ❌ | ❌ | ✅ |
| **Advanced User Permission Management** | ✅ | ❌ | ❌ | ❌ |
| **Terminal Access Built In** | ✅ | ❌ | ❌ | ✅ |
| **Database Support** | ✅ | ✅ | ❌ | ✅ |
| **Monitoring** | ✅ | ✅ | ❌ | ❌ |
| **Backups** | ✅ | Available via Plugins | Available via Plugins | ✅ |
| **Open Source** | ✅ | ✅ | ✅ | ✅ |
| **Multi Server Support** | ✅ | ❌ | ❌ | ✅ |
| **Cloud/Paid Version** | ❌ | ✅ | ✅ | ✅ |

View File

@@ -3,7 +3,6 @@ title: Installation
description: "Get Dokploy up and running on your server within minutes with this easy-to-follow installation guide."
---
Follow these steps in order to set up Dokploy locally and deploy it to your server, effectively managing Docker containers and applications:
You need to follow this steps in the same order:
@@ -30,8 +29,9 @@ We have tested on the following Linux Distros:
### Providers
- [DigitalOcean](https://www.digitalocean.com/pricing/droplets#basic-droplets)
- [Hetzner](https://www.hetzner.com/cloud/)
- [Hostinger](https://www.hostinger.com/vps-hosting?ref=dokploy) Get 20% Discount using this referral link: [Referral Link](https://www.hostinger.com/vps-hosting?REFERRALCODE=1SIUMAURICI97)
- [DigitalOcean](https://www.digitalocean.com/pricing/droplets#basic-droplets) Get 200$ credits for free with this referral link: [Referral Link](https://m.do.co/c/db24efd43f35)
- [Hetzner](https://www.hetzner.com/cloud/) Get 20€ credits for free with this referral link: [Referral Link](https://hetzner.cloud/?ref=vou4fhxJ1W2D)
- [Linode](https://www.linode.com/es/pricing/#compute-shared)
- [Vultr](https://www.vultr.com/pricing/#cloud-compute)
- [Scaleway](https://www.scaleway.com/en/pricing/?tags=baremetal,available)
@@ -42,11 +42,12 @@ We have tested on the following Linux Distros:
To ensure a smooth experience with Dokploy, your server should have at least 2GB of RAM and 30GB of disk space. This specification helps to handle the resources consumed by Docker during builds and prevents system freezes.
import { Callout } from "fumadocs-ui/components/callout";
import { Callout } from 'fumadocs-ui/components/callout';
<Callout>**Suggestion:** For cost efficiency with reliable service, we recommend Hetzner as the best value-for-money VPS provider.</Callout>
<Callout>
**Suggestion:** For cost efficiency with reliable service, we recommend
Hetzner as the best value-for-money VPS provider.
</Callout>
### Docker
@@ -64,9 +65,16 @@ After running the installation script, Dokploy and its dependencies will be set
Open your web browser and navigate to `http://your-ip-from-your-vps:3000`. You will be directed to the initial setup page where you can configure the administrative account for Dokploy.
### Initial Configuration
1. **Create an Admin Account:** Fill in the necessary details to set up your administrator account. This account will be the admin account for Dokploy.
<ImageZoom src="/assets/images/setup.png" width={1300} height={630} alt='home og image' className="rounded-lg" />
{" "}
<ImageZoom
src="/assets/images/setup.png"
width={1300}
height={650}
alt="home og image"
className="rounded-lg"
/>

View File

@@ -32,22 +32,22 @@ Please go to get started.
<Cards>
<Card
href="/get-started/installation"
href="/docs/core/get-started/installation"
title="Installation"
description="Learn how to install Dokploy."
/>
<Card
href="/application/overview"
href="/docs/core/application/overview"
title="Applications"
description="Learn how to deploy applications."
/>
<Card
href="/databases/overview"
href="/docs/core/databases/overview"
title="Databases"
description="Learn how to deploy databases."
/>
<Card
href="/traefik/overview"
href="/docs/core/traefik/overview"
title="Traefik"
description="Learn how to deploy Traefik."
/>

View File

@@ -2,33 +2,63 @@
"title": "Core",
"root": true,
"pages": [
"---快速入门---",
"---入门---",
"get-started/introduction",
"get-started/installation",
"get-started/reset-password",
"get-started/uninstall",
"get-started/architecture",
"get-started/features",
"get-started/installation",
"get-started/manual-installation",
"get-started/reset-password",
"get-started/uninstall",
"---域名---",
"domain/requirements",
"domain/certificates",
"domain/web-domain-setup",
"domain/application-setup",
"domain/docker-compose-setup",
"---服务器---",
"server/overview",
"server/server-configuration",
"---应用---",
"server/profile",
"server/appearance",
"server/s3-destination",
"server/certificates",
"server/users",
"server/cluster",
"---应用程序---",
"application/overview",
"application/providers",
"application/build-type",
"application/domains",
"application/auto-deploy",
"application/advanced",
"---数据库---",
"databases/overview",
"databases/backups",
"---容器编排---",
"databases/connection",
"---Docker Compose---",
"docker-compose/overview",
"docker-compose/example",
"docker-compose/providers",
"docker-compose/auto-deploy",
"docker-compose/domains",
"docker-compose/example",
"docker-compose/templates",
"---模板---",
"templates/overview",
"--- traefik---",
"---示例---",
"examples/nextjs",
"examples/vuejs",
"examples/vite-react",
"examples/nestjs",
"examples/svelte",
"examples/remix",
"examples/qwik",
"examples/preact",
"examples/solidjs",
"examples/astro",
"examples/astro-ssr",
"examples/go-fiber",
"examples/lit",
"---Traefik---",
"traefik/overview",
"---Docker---",
"docker/overview",
@@ -38,7 +68,9 @@
"cluster/overview",
"---部署---",
"deployments/oracle-cloud",
"---其它---",
"extra/comparison"
"---附加内容---",
"extra/comparison",
"---故障排除---",
"troubleshooting/overview"
]
}

View File

@@ -64,6 +64,9 @@
"docker/overview",
"---Monitoring---",
"monitoring/overview",
"---Multi Server---",
"multi-server/overview",
"multi-server/example",
"---Cluster---",
"cluster/overview",
"---Deployments---",

View File

@@ -0,0 +1,117 @@
---
title: Example
description: "Example to setup a remote server and deploy application in a VPS."
---
import { Callout } from "fumadocs-ui/components/callout";
Multi server allows you to deploy your apps remotely to different servers without needing to build and run them where the Dokploy UI is installed.
## Requirements
1. To install Dokploy UI, follow the [installation guide](en/docs/core/get-started/installation).
2. Create an SSH key by going to `/dashboard/settings/ssh-keys` and add a new key. Be sure to copy the public key.
<ImageZoom
src="/assets/ssh-keys.png"
alt="Architecture Diagram"
width={1000}
height={600}
className="rounded-lg"
/>
3. Decide which remote server to deploy your apps on. We recommend these reliable providers:
- [Hostinger](https://www.hostinger.com/vps-hosting?ref=dokploy) Get 20% off with this [referral link](https://www.hostinger.com/vps-hosting?REFERRALCODE=1SIUMAURICI97).
- [DigitalOcean](https://www.digitalocean.com/pricing/droplets#basic-droplets) Get $200 credits for free with this [referral link](https://m.do.co/c/db24efd43f35).
- [Hetzner](https://www.hetzner.com/cloud/) Get €20 credits with this [referral link](https://hetzner.cloud/?ref=vou4fhxJ1W2D).
- [Linode](https://www.linode.com/es/pricing/#compute-shared).
- [Vultr](https://www.vultr.com/pricing/#cloud-compute).
- [Scaleway](https://www.scaleway.com/en/pricing/?tags=baremetal,available).
- [Google Cloud](https://cloud.google.com/).
- [AWS](https://aws.amazon.com/ec2/pricing/).
4. When creating the server, it should ask for SSH keys. Ideally, use your computer's public key and the key you generated in the previous step. Here's how to add the public key in Hostinger:
<ImageZoom
src="/assets/hostinger-add-sshkey.png"
alt="Adding SSH key"
width={1000}
height={600}
className="rounded-lg"
/>
<Callout>The steps are similar across other providers.</Callout>
5. Copy the servers IP address and ensure you know the username (often `root`). Fill in all fields and click `Create`.
<ImageZoom
src="/assets/multi-server-add-server.png"
alt="Add server"
width={1000}
height={600}
className="rounded-lg"
/>
6. To test connectivity, open the server dropdown and click `Enter Terminal`. If everything is correct, you should be able to interact with the remote server.
7. Click `Setup Server` to proceed. There are two tabs: SSH Keys and Deployments. This guide explains the easy way, but you can follow the manual process via the Dokploy UI if you prefer.
<ImageZoom
src="/assets/multi-server-setup-2.png"
alt="Setup process"
width={1000}
height={600}
className="rounded-lg"
/>
8. Click `Deployments`, then `Setup Server`. If everything is correct, you should see output similar to this:
<ImageZoom
src="/assets/multi-server-setup-3.png"
alt="Server setup output"
width={1000}
height={600}
className="rounded-lg"
/>
<Callout>
You only need to run this setup once. If Dokploy updates later, check the
release notes to see if rerunning this command is required.
</Callout>
9. You're ready to deploy your apps! Let's test it out:
<ImageZoom
src="/assets/multi-server-add-app.png"
alt="Add app"
width={1000}
height={600}
className="rounded-lg"
/>
10. To check which server an app belongs to, youll see the server name at the top. If no server is selected, it defaults to `Dokploy Server`. Click `Deploy` to start building your app on the remote server. You can check the `Logs` tab to see the build process. For this example, well use a test repo:
Repo: `https://github.com/Dokploy/examples.git`
Branch: `main`
Build Path: `/astro`
<ImageZoom
src="/assets/multi-server-setup-app.png"
alt="App setup"
width={1000}
height={600}
className="rounded-lg"
/>
11. Once the build is done, go to `Domains` and create a free domain. Just click `Create` and youre good to go! 🎊
{" "}
<ImageZoom
src="/assets/multi-server-finish.png"
alt="Finished setup"
width={1000}
height={600}
className="rounded-lg"
/>

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