docs(integration): fully rewritten cf tunnels all resource guide
@@ -5,33 +5,33 @@
|
||||
"": {
|
||||
"name": "coolify-docs",
|
||||
"dependencies": {
|
||||
"@orama/orama": "^3.1.18",
|
||||
"@resvg/resvg-js": "^2.6.2",
|
||||
"@orama/orama": "3.1.18",
|
||||
"@resvg/resvg-js": "2.6.2",
|
||||
"@tanstack/react-router": "1.168.10",
|
||||
"@tanstack/react-start": "1.167.16",
|
||||
"@tanstack/start-static-server-functions": "1.166.25",
|
||||
"fumadocs-core": "16.8.5",
|
||||
"fumadocs-mdx": "14.2.11",
|
||||
"fumadocs-openapi": "^10.8.1",
|
||||
"fumadocs-openapi": "10.8.1",
|
||||
"fumadocs-ui": "16.8.5",
|
||||
"gray-matter": "^4.0.3",
|
||||
"lucide-react": "^1.7.0",
|
||||
"react": "^19.2.4",
|
||||
"react-dom": "^19.2.4",
|
||||
"shiki": "^4.0.2",
|
||||
"tslib": "^2.8.1",
|
||||
"vite": "^8.0.7",
|
||||
"gray-matter": "4.0.3",
|
||||
"lucide-react": "1.7.0",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
"shiki": "4.0.2",
|
||||
"tslib": "2.8.1",
|
||||
"vite": "8.0.7",
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/vite": "^4.2.1",
|
||||
"@types/mdx": "^2.0.13",
|
||||
"@tailwindcss/vite": "4.2.1",
|
||||
"@types/mdx": "2.0.13",
|
||||
"@types/node": "25.0.9",
|
||||
"@types/react": "^19.2.14",
|
||||
"@types/react-dom": "^19.2.3",
|
||||
"@vitejs/plugin-react": "^6.0.1",
|
||||
"nitro": "^3.0.260311-beta",
|
||||
"tailwindcss": "^4.2.1",
|
||||
"typescript": "^6.0.2",
|
||||
"@types/react": "19.2.14",
|
||||
"@types/react-dom": "19.2.3",
|
||||
"@vitejs/plugin-react": "6.0.1",
|
||||
"nitro": "3.0.260311-beta",
|
||||
"tailwindcss": "4.2.1",
|
||||
"typescript": "6.0.2",
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -688,7 +688,7 @@
|
||||
|
||||
"lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="],
|
||||
|
||||
"lucide-react": ["lucide-react@1.14.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-+1mdWcfSJVUsaTIjN9zoezmUhfXo5l0vP7ekBMPo3jcS/aIkxHnXqAPsByszMZx/Y8oQBRJxJx5xg+RH3urzxA=="],
|
||||
"lucide-react": ["lucide-react@1.7.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-yI7BeItCLZJTXikmK4KNUGCKoGzSvbKlfCvw44bU4fXAL6v3gYS4uHD1jzsLkfwODYwI6Drw5Tu9Z5ulDe0TSg=="],
|
||||
|
||||
"magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
|
||||
|
||||
@@ -850,9 +850,9 @@
|
||||
|
||||
"property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="],
|
||||
|
||||
"react": ["react@19.2.5", "", {}, "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA=="],
|
||||
"react": ["react@19.2.4", "", {}, "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="],
|
||||
|
||||
"react-dom": ["react-dom@19.2.5", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.5" } }, "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag=="],
|
||||
"react-dom": ["react-dom@19.2.4", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="],
|
||||
|
||||
"react-remove-scroll": ["react-remove-scroll@2.7.2", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="],
|
||||
|
||||
@@ -960,7 +960,7 @@
|
||||
|
||||
"tsx": ["tsx@4.21.0", "", { "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw=="],
|
||||
|
||||
"typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="],
|
||||
"typescript": ["typescript@6.0.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ=="],
|
||||
|
||||
"ufo": ["ufo@1.6.3", "", {}, "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="],
|
||||
|
||||
@@ -1004,7 +1004,7 @@
|
||||
|
||||
"vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="],
|
||||
|
||||
"vite": ["vite@8.0.10", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.10", "rolldown": "1.0.0-rc.17", "tinyglobby": "^0.2.16" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw=="],
|
||||
"vite": ["vite@8.0.7", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.8", "rolldown": "1.0.0-rc.13", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-P1PbweD+2/udplnThz3btF4cf6AgPky7kk23RtHUkJIU5BIxwPprhRGmOAHs6FTI7UiGbTNrgNP6jSYD6JaRnw=="],
|
||||
|
||||
"vitefu": ["vitefu@1.1.3", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["vite"] }, "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg=="],
|
||||
|
||||
@@ -1074,6 +1074,10 @@
|
||||
|
||||
"anymatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="],
|
||||
|
||||
"fumadocs-openapi/lucide-react": ["lucide-react@1.14.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-+1mdWcfSJVUsaTIjN9zoezmUhfXo5l0vP7ekBMPo3jcS/aIkxHnXqAPsByszMZx/Y8oQBRJxJx5xg+RH3urzxA=="],
|
||||
|
||||
"fumadocs-ui/lucide-react": ["lucide-react@1.14.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-+1mdWcfSJVUsaTIjN9zoezmUhfXo5l0vP7ekBMPo3jcS/aIkxHnXqAPsByszMZx/Y8oQBRJxJx5xg+RH3urzxA=="],
|
||||
|
||||
"gray-matter/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="],
|
||||
|
||||
"htmlparser2/entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="],
|
||||
@@ -1090,6 +1094,8 @@
|
||||
|
||||
"rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.17", "", {}, "sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg=="],
|
||||
|
||||
"vite/rolldown": ["rolldown@1.0.0-rc.13", "", { "dependencies": { "@oxc-project/types": "=0.123.0", "@rolldown/pluginutils": "1.0.0-rc.13" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.13", "@rolldown/binding-darwin-arm64": "1.0.0-rc.13", "@rolldown/binding-darwin-x64": "1.0.0-rc.13", "@rolldown/binding-freebsd-x64": "1.0.0-rc.13", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.13", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.13", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.13", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.13", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.13", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.13", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.13", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.13", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.13", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.13", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.13" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-bvVj8YJmf0rq4pSFmH7laLa6pYrhghv3PRzrCdRAr23g66zOKVJ4wkvFtgohtPLWmthgg8/rkaqRHrpUEh0Zbw=="],
|
||||
|
||||
"@tailwindcss/node/lightningcss/lightningcss-android-arm64": ["lightningcss-android-arm64@1.31.1", "", { "os": "android", "cpu": "arm64" }, "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg=="],
|
||||
|
||||
"@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.31.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg=="],
|
||||
@@ -1116,6 +1122,46 @@
|
||||
|
||||
"gray-matter/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="],
|
||||
|
||||
"vite/rolldown/@oxc-project/types": ["@oxc-project/types@0.123.0", "", {}, "sha512-YtECP/y8Mj1lSHiUWGSRzy/C6teUKlS87dEfuVKT09LgQbUsBW1rNg+MiJ4buGu3yuADV60gbIvo9/HplA56Ew=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.13", "", { "os": "android", "cpu": "arm64" }, "sha512-5ZiiecKH2DXAVJTNN13gNMUcCDg4Jy8ZjbXEsPnqa248wgOVeYRX0iqXXD5Jz4bI9BFHgKsI2qmyJynstbmr+g=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.13", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tz/v/8G77seu8zAB3A5sK3UFoOl06zcshEzhUO62sAEtrEuW/H1CcyoupOrD+NbQJytYgA4CppXPzlrmp4JZKA=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.13", "", { "os": "darwin", "cpu": "x64" }, "sha512-8DakphqOz8JrMYWTJmWA+vDJxut6LijZ8Xcdc4flOlAhU7PNVwo2MaWBF9iXjJAPo5rC/IxEFZDhJ3GC7NHvug=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.13", "", { "os": "freebsd", "cpu": "x64" }, "sha512-4wBQFfjDuXYN/SVI8inBF3Aa+isq40rc6VMFbk5jcpolUBTe5cYnMsHZ51nFWsx3PVyyNN3vgoESki0Hmr/4BA=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.13", "", { "os": "linux", "cpu": "arm" }, "sha512-JW/e4yPIXLms+jmnbwwy5LA/LxVwZUWLN8xug+V200wzaVi5TEGIWQlh8o91gWYFxW609euI98OCCemmWGuPrw=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-ZfKWpXiUymDnavepCaM6KG/uGydJ4l2nBmMxg60Ci4CbeefpqjPWpfaZM7PThOhk2dssqBAcwLc6rAyr0uTdXg=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-bmRg3O6Z0gq9yodKKWCIpnlH051sEfdVwt+6m5UDffAQMUUqU0xjnQqqAUm+Gu7ofAAly9DqiQDtKu2nPDEABA=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "ppc64" }, "sha512-8Wtnbw4k7pMYN9B/mOEAsQ8HOiq7AZ31Ig4M9BKn2So4xRaFEhtCSa4ZJaOutOWq50zpgR4N5+L/opnlaCx8wQ=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "s390x" }, "sha512-D/0Nlo8mQuxSMohNJUF2lDXWRsFDsHldfRRgD9bRgktj+EndGPj4DOV37LqDKPYS+osdyhZEH7fTakTAEcW7qg=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "x64" }, "sha512-eRrPvat2YaVQcwwKi/JzOP6MKf1WRnOCr+VaI3cTWz3ZoLcP/654z90lVCJ4dAuMEpPdke0n+qyAqXDZdIC4rA=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.13", "", { "os": "linux", "cpu": "x64" }, "sha512-PsdONiFRp8hR8KgVjTWjZ9s7uA3uueWL0t74/cKHfM4dR5zXYv4AjB8BvA+QDToqxAFg4ZkcVEqeu5F7inoz5w=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.13", "", { "os": "none", "cpu": "arm64" }, "sha512-hCNXgC5dI3TVOLrPT++PKFNZ+1EtS0mLQwfXXXSUD/+rGlB65gZDwN/IDuxLpQP4x8RYYHqGomlUXzpO8aVI2w=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-rc.13", "", { "dependencies": { "@emnapi/core": "1.9.1", "@emnapi/runtime": "1.9.1", "@napi-rs/wasm-runtime": "^1.1.2" }, "cpu": "none" }, "sha512-viLS5C5et8NFtLWw9Sw3M/w4vvnVkbWkO7wSNh3C+7G1+uCkGpr6PcjNDSFcNtmXY/4trjPBqUfcOL+P3sWy/g=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-rc.13", "", { "os": "win32", "cpu": "arm64" }, "sha512-Fqa3Tlt1xL4wzmAYxGNFV36Hb+VfPc9PYU+E25DAnswXv3ODDu/yyWjQDbXMo5AGWkQVjLgQExuVu8I/UaZhPQ=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-rc.13", "", { "os": "win32", "cpu": "x64" }, "sha512-/pLI5kPkGEi44TDlnbio3St/5gUFeN51YWNAk/Gnv6mEQBOahRBh52qVFVBpmrnU01n2yysvBML9Ynu7K4kGAQ=="],
|
||||
|
||||
"vite/rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.13", "", {}, "sha512-3ngTAv6F/Py35BsYbeeLeecvhMKdsKm4AoOETVhAA+Qc8nrA2I0kF7oa93mE9qnIurngOSpMnQ0x2nQY2FPviA=="],
|
||||
|
||||
"@tanstack/router-plugin/chokidar/readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.9.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" } }, "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.9.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA=="],
|
||||
|
||||
"vite/rolldown/@rolldown/binding-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg=="],
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,125 +36,132 @@ A simple high-level overview diagram to give you a visual idea of how this works
|
||||
|
||||
---
|
||||
|
||||
### Quick Links to Important Sections:
|
||||
|
||||
- [Create a Cloudflare Tunnel](#_1-create-a-cloudflare-tunnel)
|
||||
- [Setup Encryption mode on Cloudflare](#_2-setup-encryption-mode-on-cloudflare)
|
||||
- [Setup Cloudflare Tunnel on Coolify](#_3-setup-cloudflare-tunnel-on-coolify)
|
||||
- [Start Coolify Proxy](#_4-start-coolify-proxy)
|
||||
- [Configure Your Resource to Use the Tunnel Domain](#_5-configure-your-resource-to-use-the-tunnel-domain)
|
||||
- [How to use Multiple Different Domains](#how-to-use-multiple-different-domains)
|
||||
- [Known issues and Solutions](#known-issues-and-solutions)
|
||||
<Callout type="info" title="Example Data">
|
||||
|
||||
---
|
||||
|
||||
|
||||
<Callout type="warn" title="Example Data">
|
||||
|
||||
The following data is used as an example in this guide. Please replace it with your actual data when following the steps:
|
||||
|
||||
- **Domain Name:** shadowarcanist.com
|
||||
The following data is used as an example in this guide. Please replace it with your actual data when following the steps:
|
||||
|
||||
- **Domain Name:** `shadowarcanist.com`
|
||||
|
||||
</Callout>
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 1. Create a Cloudflare Tunnel
|
||||
|
||||
To create a Cloudflare Tunnel, first log in to your Cloudflare account and go to the [Zero Trust](https://one.dash.cloudflare.com/) page.
|
||||
To create a Cloudflare Tunnel, first log in to your [Cloudflare dashboard](https://dash.cloudflare.com/)
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/0.webp" />
|
||||
|
||||
1. Go to **Networking** in the sidebar.
|
||||
2. Click on **Tunnels**
|
||||
3. Click on **Create tunnel** button
|
||||
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/1.webp" />
|
||||
|
||||
1. On the Zero Trust page, go to **Networks** in the sidebar.
|
||||
2. Click on **Tunnels**
|
||||
3. Click on **Add a tunnel** button
|
||||
|
||||
You will be prompted to choose a tunnel type. Click the **Select Cloudflared** button.
|
||||
You will be prompted to enter a tunnel name. Enter a name that you prefer and click on **Create tunnel** button.
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/2.webp" />
|
||||
|
||||
You will be prompted to enter a tunnel name. Choose a name that you prefer.
|
||||
1. Select the **Docker** option
|
||||
2. Copy the docker run command, which contains the token for your tunnel (token starts with "`eyJ`"). Make sure to save only the token, removing the command part before it, and store it in a safe place, as we need it later.
|
||||
|
||||
|
||||
## 2. Deploy cloudflared on Coolify
|
||||
|
||||
Go to your project on Coolify dashboard and click the `+ New` button to create a new resource.
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/3.webp" />
|
||||
|
||||
Next you will see the configuration page with multiple options to install cloudflared.
|
||||
Search for `Cloudflared` and click on it.
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/4.webp" />
|
||||
|
||||
Copy the install command, which contains the token for your tunnel (token starts with "eyJ"). Make sure to save only the token, removing the command part before it, and store it in a safe place, as we need it later.
|
||||
Go to the **Environment Variables** page, enter your tunnel token, and deploy the Cloudflared app.
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/5.webp" />
|
||||
|
||||
Scroll down until you see the **Next** button, then click it.
|
||||
|
||||
Then, you will be prompted to add a hostname.
|
||||
Once cloudflared starts running you will be able to see it's status on Cloudflare dashboard
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/6.webp" />
|
||||
|
||||
1. **Subdomain** - (Optional) You can make your all of your resource accessible on any subdomain/domain. For this guide, we are using a wildcard subdomain.
|
||||
2. **Domain** - Choose the domain you want to use for the tunnel.
|
||||
3. **Path** - Leave this field empty.
|
||||
4. **Type** - Choose **HTTP** (this is very important).
|
||||
5. **URL** - Enter **localhost:80** (this is very important).
|
||||
6. After filling in the details, click the **Save Tunnel** button.
|
||||
Click on continue button to create the tunnel.
|
||||
|
||||
## 2. Setup Encryption mode on Cloudflare
|
||||
|
||||
To set up encryption on Cloudflare, follow these steps:
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/15.webp" />
|
||||
|
||||
1. Go to https://dash.cloudflare.com/ and select the domain you created the tunnel for.
|
||||
2. Click **SSL/TLS** in the sidebar.
|
||||
3. Select **Overview**.
|
||||
4. Click **Configure** button
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/16.webp" />
|
||||
|
||||
Choose **Full** as the encryption mode.
|
||||
|
||||
## 3. Setup Cloudflare Tunnel on Coolify
|
||||
|
||||
To set up the tunnel on Coolify, follow these steps:
|
||||
## 3. Start Coolify Proxy
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/7.webp" />
|
||||
|
||||
Go to your project on Coolify dashboard and click the **+ New** button to create a new resource.
|
||||
1. In the Coolify dashboard, go to the **Servers** page from the sidebar.
|
||||
2. Select the server where your application is running, and check if the proxy is showing as running.
|
||||
|
||||
|
||||
## 4. Set Up TLS Encryption
|
||||
To make Cloudflare use stricter encryption when connecting to your server, configure your TLS encryption in Cloudflare:
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/13.webp" />
|
||||
|
||||
1. Go to **SSL/TLS** in Cloudflare.
|
||||
2. Select **Overview**.
|
||||
3. Click **Configure** button
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/14.webp" />
|
||||
|
||||
1. Choose **Full (Strict)** as the encryption mode.
|
||||
2. Click **Save** button
|
||||
|
||||
|
||||
## 5. Configure tunnel routes
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/8.webp" />
|
||||
|
||||
You will see many options to deploy a new app. Search for Cloudflared and click on it.
|
||||
1. Click on your tunnel
|
||||
2. Click on **Configure** option
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/9.webp" />
|
||||
|
||||
Go to the **Environment Variables** page, enter your tunnel token, and deploy the Cloudflared app. This token was copied in [Step 1](#_1-create-a-cloudflare-tunnel)
|
||||
|
||||
## 4. Start Coolify Proxy
|
||||
|
||||
To start the Coolify proxy, follow these steps:
|
||||
1. Select **Routes**.
|
||||
2. Click **Add route** button
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/10.webp" />
|
||||
|
||||
1. In the Coolify dashboard, go to the **Servers** page from the sidebar.
|
||||
2. Select the server where coolify is running, then Click on the **Proxy** tab.
|
||||
3. Open the **General** tab.
|
||||
4. Click the **Start Proxy** button.
|
||||
3. Select **Published Application** as the route type
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/11.webp" />
|
||||
|
||||
1. **Subdomain** - (Optional) You can make your all of your resource accessible on any subdomain/domain. For this guide, we are using a wildcard subdomain which is `*`
|
||||
2. **Domain** - Choose the domain you want to use for the tunnel.
|
||||
3. **Path** - Leave this field empty.
|
||||
4. **Service URL** - Enter **http://localhost:80** (this is very important).
|
||||
6. After filling in the details, click the **Add route** button.
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/12.webp" />
|
||||
|
||||
<Callout type="success" title="Tip">
|
||||
|
||||
The Coolify proxy is used to route traffic to apps running on your server. This eliminates the need to create new hostnames on the Cloudflare tunnel every time you deploy a new app.
|
||||
The Coolify proxy (runs on `http://localhost:80`) is used to route traffic to apps running on your server. This eliminates the need to create new routes on the Cloudflare tunnel every time you deploy a new app.
|
||||
|
||||
</Callout>
|
||||
|
||||
|
||||
## 5. Configure Your Resource to Use the Tunnel Domain
|
||||
## 6. Configure your resource domain
|
||||
|
||||
Enter the domain you want to use for your resource/app and deploy your resource.
|
||||
Enter the domain you want to use for your resource on Coolify and deploy your resource.
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/11.webp" />
|
||||
<Tabs items={['Services', 'Application']}>
|
||||
|
||||
<Tab value="Services">
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/15.webp" />
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab value="Application">
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/16.webp" />
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
<Callout type="warn" title="HEADS UP!">
|
||||
|
||||
@@ -167,25 +174,35 @@ If your app requires **HTTPS** for features like cookies or login, follow the [F
|
||||
|
||||
**Congratulations**! You've successfully set up a resource that can be accessed by anyone on the internet your domain.
|
||||
|
||||
## How to use Multiple Different Domains?
|
||||
|
||||
You don't need to create new tunnels for each domain, just create a new hostname with the new domain and point it to the `localhost:80`.
|
||||
---
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/12.webp" />
|
||||
## How to use multiple different domains?
|
||||
|
||||
You don't need to create new tunnels for each domain, just create a new routes with the new domain and point it to the `http://localhost:80`.
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/17.webp" />
|
||||
|
||||
---
|
||||
|
||||
## Known issues and Solutions
|
||||
|
||||
When you create a new public hostname in [Step 1](#_1-create-a-cloudflare-tunnel), Cloudflare will create a DNS record for the hostname.
|
||||
When you create a new routes in [Step 5](/integrations/cloudflare/tunnels/all-resource#5-configure-tunnel-routes), Cloudflare will create a DNS record for the hostname.
|
||||
|
||||
However, if a DNS record for the hostname already exists, Cloudflare won’t create a new one.
|
||||
However, if a DNS record for the hostname already exists, Cloudflare won’t update existing record.
|
||||
|
||||
In this case, your app won’t work. To fix this issue, follow the steps below:
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/13.webp" />
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/8.webp" />
|
||||
|
||||
First, copy your tunnel ID from the Tunnels page on the Cloudflare dashboard.
|
||||
1. Click on your tunnel
|
||||
2. Click on **Configure** option
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/14.webp" />
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/18.webp" />
|
||||
|
||||
3. Copy your tunnel ID from the Tunnels details section.
|
||||
|
||||
<ZoomImage src="/docs/images/integrations/cloudflare/tunnels/all-resource/19.webp" />
|
||||
|
||||
Create a new DNS record with the following details:
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 119 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 142 KiB |
|
After Width: | Height: | Size: 158 KiB |
|
After Width: | Height: | Size: 155 KiB |
|
After Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 141 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 109 KiB |