diff --git a/bun.lock b/bun.lock index ff8b4c97..e0eb8caf 100644 --- a/bun.lock +++ b/bun.lock @@ -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=="], } } diff --git a/content/docs/integrations/cloudflare/tunnels/all-resource.mdx b/content/docs/integrations/cloudflare/tunnels/all-resource.mdx index 1d5a9790..902e5eef 100644 --- a/content/docs/integrations/cloudflare/tunnels/all-resource.mdx +++ b/content/docs/integrations/cloudflare/tunnels/all-resource.mdx @@ -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) + ---- - - - - -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` - --- ## 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/) + + + +1. Go to **Networking** in the sidebar. +2. Click on **Tunnels** +3. Click on **Create tunnel** button + -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. -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. -Next you will see the configuration page with multiple options to install cloudflared. +Search for `Cloudflared` and click on it. -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. -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 -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: - - - -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 - - - -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 -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: + + + +1. Go to **SSL/TLS** in Cloudflare. +2. Select **Overview**. +3. Click **Configure** button + + + +1. Choose **Full (Strict)** as the encryption mode. +2. Click **Save** button + + +## 5. Configure tunnel routes -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 -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 -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 + + +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. + + - 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. -## 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. - + + + + + + + + + + + + @@ -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`. +--- - +## 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`. + + + +--- ## 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: - + -First, copy your tunnel ID from the Tunnels page on the Cloudflare dashboard. +1. Click on your tunnel +2. Click on **Configure** option - + + +3. Copy your tunnel ID from the Tunnels details section. + + Create a new DNS record with the following details: diff --git a/content/docs/integrations/cloudflare/tunnels/full-tls.mdx b/content/docs/integrations/cloudflare/tunnels/full-tls.mdx index 004a3739..e2cace90 100644 --- a/content/docs/integrations/cloudflare/tunnels/full-tls.mdx +++ b/content/docs/integrations/cloudflare/tunnels/full-tls.mdx @@ -32,18 +32,6 @@ To follow this guide, you'll need: --- -### Quick Links to Important Sections: - -- [Create a Cloudflare Origin Certificate](#_1-create-a-cloudflare-origin-certificate) -- [Add Origin Certificate to Your Server](#_2-add-origin-certificate-to-your-server) -- [Configure Coolify to Use the Origin Certificate](#_3-configure-coolify-to-use-the-origin-certificate) -- [Setup Encryption mode on Cloudflare](#_4-setup-encryption-mode-on-cloudflare) -- [Configure Tunnel to Use HTTPS](#_5-configure-tunnel-to-use-https) -- [Configure Cloudflare to Always Use HTTPS](#_6-configure-cloudflare-to-always-use-https) -- [Update URLs from HTTP to HTTPS](#_7-update-urls-from-http-to-https) - ---- - @@ -56,178 +44,170 @@ The following data is used as an example in this guide. Please replace it with y -## 1. Create a Cloudflare Origin Certificate +## 1. Setup Origin TLS Certificate +Communication between your server and Cloudflare is encrypted using a TLS certificate. -To create your Cloudflare Origin Certificate, follow these steps: +There are two ways to do this: +* Use a TLS certificate from Cloudflare +* Get your own TLS certificate from a trusted public Certificate Authority (this requires a DNS challenge) - + + +Here's a concise comparison table between a **Cloudflare Origin Certificate** and a **Public CA Certificate**: + +| Feature | Cloudflare Origin Certificate | Public CA Certificate | +|----------|------------------------|----------------| +| Trusted By | Cloudflare only | Browsers, OSs, Cloudflare | +| Use Case | Cloudflare ↔ Origin only | Any direct client | +| Direct Browser Access | Shows certificate errors if users bypass Cloudflare | ✅ Works normally | +| Requires CF Proxy | ✅ Yes | ❌ No | +| Works Without CF | ❌ No | ✅ Yes | +| Issuer | Cloudflare | Public CA (eg: Let's Encrypt) | +| Cost | Free | Free | +| DNS Challenge | ❌ No | ✅ Yes | + + + If you plan to have Cloudflare always in front of your application, use a Cloudflare Origin Certificate. Otherwise, use a Public CA Cert. + + +There are 2 ways to setup the Origin TLS Certificate so follow one of the methods from below: + + + + + +A simple high-level overview diagram to give you a visual idea of how this works: + + +--- + +## A. Create Cloudflare Origin Certificate [!toc] + 1. In your Cloudflare dashboard, go to **SSL/TLS**. 2. Select **Origin Server**. +3. Select **Origin Certificates** 3. Click the **Create Certificate** button. -You’ll be asked to choose a private key type, hostnames, and certificate validity. - - + 1. Choose **RSA (2048)** for the key type. 2. Add the hostnames you want the certificate to cover. - +3. Set the certificate validity to **15 years**. +4. Click the **Create** button. - -- **`shadowarcanist.com`** will cover only the main domain. -- **`*.shadowarcanist.com`** will cover all subdomains. - -On Cloudflare’s free plan, wildcard certificates cover just one level of subdomains - -For example, it works for **`coolify.shadowarcanist.com`** but not **`www.coolify.shadowarcanist.com`**. - -To cover multiple levels, you'll need to purchase the [Advanced Certificate Manager](https://www.cloudflare.com/application-services/products/advanced-certificate-manager/) + - **`shadowarcanist.com`** will cover only the main domain. + - **`*.shadowarcanist.com`** will cover all subdomains. + + On Cloudflare’s free plan, wildcard certificates cover just one level of subdomains + + For example, it works for **`coolify.shadowarcanist.com`** but not **`www.coolify.shadowarcanist.com`**. + + To cover multiple levels, you'll need to purchase the [Advanced Certificate Manager ↗](https://www.cloudflare.com/application-services/products/advanced-certificate-manager/) - -3. Set the certificate validity to **15 years**. - -Your certificate will now be generated. - - + 1. Choose **PEM** as the key format. -2. Copy your **Certificate**. -3. Copy your **Private Key**. +2. Copy your **Origin Certificate** and save it somewhere safe +3. Copy your **Private Key** and save it somewhere safe +4. Click the **Ok** button. Next, you'll add these to your server running Coolify and configure Coolify to use this certificate. -## 2. Add Origin Certificate to Your Server - -SSH into your server or use Coolify's terminal feature. For this guide, I’m using SSH: +--- +## B. Add Certificate to Your Server [!toc] +SSH into your server or use Coolify's terminal feature. For this guide, I’m using my external terminal: ```bash ssh shadowarcanist@203.0.113.1 ``` Once logged in, navigate to the Coolify proxy directory: - ```bash $ cd /data/coolify/proxy ``` -Adding certificates slightly varies for Caddy and Traefik proxy so choose the correct one from the below section +Certificate locations slightly vary between Caddy and Traefik, so choose the one based on the proxy you are using from the section below. + - + - -== Traefik Create the `certs` directory: - ```bash $ mkdir certs ``` Verify it was created: - ```bash $ ls > acme.json certs docker-compose.yml dynamic ``` Now, navigate into the **certs** directory: - ```bash $ cd certs ``` -Create two new files for the certificate and private key: + -```bash -$ touch shadowarcanist.cert shadowarcanist.key -``` + -Verify the files were created: - -```bash -$ ls -> shadowarcanist.cert shadowarcanist.key -``` - -Open the **shadowarcanist.cert** file and paste the certificate from the Cloudflare dashboard: - -```bash -$ nano shadowarcanist.cert -``` - -Save and exit after pasting the certificate. - -Do the same for the **shadowarcanist.key** file and paste the private key: - -```bash -$ nano shadowarcanist.key -``` - -Save and exit. - -== Caddy Create the `caddy/data/certs` directory: - ```bash $ mkdir -p caddy/data/certs ``` Verify it was created: - ```bash $ ls caddy/data > certs ``` Now, navigate into the **certs** directory: - ```bash $ cd caddy/data/certs ``` -Create two new files for the certificate and private key: + + + + +Create two new files for the certificate and private key: ```bash $ touch shadowarcanist.cert shadowarcanist.key ``` Verify the files were created: - ```bash $ ls > shadowarcanist.cert shadowarcanist.key ``` Open the **shadowarcanist.cert** file and paste the certificate from the Cloudflare dashboard: - ```bash -$ nano shadowarcanist.cert +$ nano shadowarcanist.cert ``` - Save and exit after pasting the certificate. Do the same for the **shadowarcanist.key** file and paste the private key: - ```bash -$ nano shadowarcanist.key +$ nano shadowarcanist.key ``` - Save and exit. - - - - Now the origin certificate is installed on your server. -## 3. Configure Coolify to Use the Origin Certificate +--- - + +## C. Configure Coolify proxy to Use the Origin Certificate [!toc] + 1. Go to the **Server** section in the sidebar. 2. Select **Proxy**. @@ -236,20 +216,18 @@ Now the origin certificate is installed on your server. You will now be prompted to enter the Dynamic Configuration. -Adding Dynamic Configuration slightly varies for Caddy and Traefik proxy so choose the correct one from the below section +Dynamic configuration file slightly varies between Caddy and Traefik, so choose the one based on the proxy you are using from the section below. - + + -== Traefik - - + 1. Choose a name for your configuration (must end with `.yaml`). 2. Enter the following details in the configuration field: - -```bash +```yaml tls: certificates: - @@ -259,110 +237,132 @@ tls: 3. Save the configuration ---- - -If you want to add multiple certificates and keys, you can do it like this: - -```bash -tls: - certificates: - - - certFile: /traefik/certs/shadowarcanist.cert - keyFile: /traefik/certs/shadowarcanist.key - - - certFile: /traefik/certs/name2.cert - keyFile: /traefik/certs/name2.key - - - certFile: /traefik/certs/name3.cert - keyFile: /traefik/certs/name3.key -``` - -== Caddy - - -1. Choose a name for your configuration (must end with `.caddy`). -2. Enter the following details in the configuration field: - -```bash -*.shadowarcanist.com, shadowarcanist.com { - tls /data/certs/shadowarcanist.cert /data/certs/shadowarcanist.key -} -``` - -> Note: The wildcard `*.shadowarcanist.com` provides coverage for all subdomains, exclude it if you’re only securing a single domain (i.e, `shadowarcanist.com`). - -3. Save the configuration - ---- - -If you want to add multiple certificates and keys, you can do it like this: - -```bash -*.shadowarcanist.com, shadowarcanist.com { - tls /data/certs/shadowarcanist.cert /data/certs/shadowarcanist.key -} - -*.name2.com, name2.com { - tls /data/certs/name2.cert /data/certs/name2.key -} - -*.name3.com, name3.com { - tls /data/certs/name3.cert /data/certs/name3.key -} -``` - - + + + If you want to add multiple certificates and keys, you can do it like this: + ```yaml + tls: + certificates: + - + certFile: /traefik/certs/shadowarcanist.cert + keyFile: /traefik/certs/shadowarcanist.key + - + certFile: /traefik/certs/name2.cert + keyFile: /traefik/certs/name2.key + - + certFile: /traefik/certs/name3.cert + keyFile: /traefik/certs/name3.key + ``` + + + + + + + +1. Choose a name for your configuration (must end with `.caddy`). +2. Enter the following details in the configuration field: +```bash +*.shadowarcanist.com, shadowarcanist.com { + tls /data/certs/shadowarcanist.cert /data/certs/shadowarcanist.key +} +``` + + + +The wildcard `*.shadowarcanist.com` provides coverage for all subdomains, exclude it if you’re only securing a single domain (i.e, `shadowarcanist.com`). + + + +3. Save the configuration + + + + If you want to add multiple certificates and keys, you can do it like this: + ```bash + *.shadowarcanist.com, shadowarcanist.com { + tls /data/certs/shadowarcanist.cert /data/certs/shadowarcanist.key + } + + *.name2.com, name2.com { + tls /data/certs/name2.cert /data/certs/name2.key + } + + *.name3.com, name3.com { + tls /data/certs/name3.cert /data/certs/name3.key + } + ``` + + + + + + + + From now on, Coolify will use the origin certificate for requests matching the hostname. -## 4. Setup Encryption mode on Cloudflare + -To set up encryption on Cloudflare, follow these steps: + +A simple high-level overview diagram to give you a visual idea of how this works: + - +We already have guides to set up DNS challenge for TLS certificates, you can follow them here: + +- [Traefik DNS challenge](/knowledge-base/proxy/traefik/dns-challenge) +- [Caddy DNS challenge](/knowledge-base/proxy/caddy/dns-challenge) + +Come back to this guide after you finish setting up the DNS challenge using the guides above. + + + + + + + +## 2. Setup TLS Encryption +To make Cloudflare use stricter encryption when connecting to your server, configure your TLS encryption in Cloudflare: + + 1. Go to **SSL/TLS** in Cloudflare. 2. Select **Overview**. 3. Click **Configure** button - + -Choose **Full (Strict)** as the encryption mode. +1. Choose **Full (Strict)** as the encryption mode. +2. Click **Save** button -## 5. Configure Tunnel to Use HTTPS +## 3. Setup Always Use HTTPS +To make Cloudflare automatically redirect HTTP requests to HTTPS, configure your redirects in Cloudflare: -To configure the tunnel for HTTPS, follow these steps: + - - -1. Click the three dots icon to open the settings menu. -2. Select **Edit** to allow hostname modifications. - -Next, update the hostnames as follows: - - - -1. Change the type from **HTTP** to **HTTPS**. -2. Change the port from **80** to **443**. - - - -3. Click on **Additional Application Settings**. -4. Select **TLS**. -5. Enter your root domain in the **Origin Server Name** field. -6. Scroll down and click the **Save Hostname** button. - -## 6. Configure Cloudflare to Always Use HTTPS - - - -1. In the Cloudflare dashboard, go to **SSL/TLS**. +1. In Cloudflare, go to **SSL/TLS** 2. Select **Edge Certificates**. 3. Enable **Always Use HTTPS**. -## 7. Update URLs from HTTP to HTTPS + +## 4. Configure Tunnel to Use HTTPS + + + +1. Click the three dots icon to open the settings menu. +2. Click **Edit route** option + +Next, update the service URL as follows: + + + +Change the type from `http://localhost:80` to `https://localhost:443` + + +## 5. Update URLs from HTTP to HTTPS Now, update all URLs from **HTTP** to **HTTPS** in Coolify, including resources and the instance domain on the settings page. diff --git a/content/docs/integrations/cloudflare/tunnels/server-ssh.mdx b/content/docs/integrations/cloudflare/tunnels/server-ssh.mdx index 0ef7ca07..56ae7439 100644 --- a/content/docs/integrations/cloudflare/tunnels/server-ssh.mdx +++ b/content/docs/integrations/cloudflare/tunnels/server-ssh.mdx @@ -7,14 +7,13 @@ description: "Enable secure SSH access to Coolify servers via Cloudflare Tunnels Accessing your server using SSH over a Cloudflare Tunnel is a secure and easy way to connect to a remote server while keeping its IP address hidden. -This guide explains how to set it up using Coolify's automated cloudflare tunnel installation. ## Who this is for? This setup is ideal for people who: - Want to keep their server's IP address private. -- Want to close all SSH ports on their server. +- Want to close SSH ports on their server. - Don’t want to rely on static public IPs for accessing their remote server. - Don't have a static public IP for the server (only applies if you're doing the [manual setup](#manual-setup)). @@ -33,342 +32,371 @@ A simple high-level overview diagram to give you a visual idea of how this works # Setup Methods -There are two ways to set this up: automated and manual. +There are two ways to set this up: +- Automated +- Manual The main difference is that in the manual setup, you install cloudflared yourself, while in the automated setup, Coolify does it for you. -Choose one of the links below for the setup guide: -- [Automated](#automated-setup) -- [Manual Setup](#manual-setup) + -## Automated Setup + -To use Coolify's automated setup for a Cloudflare Tunnel: + To use Coolify's automated setup for a Cloudflare Tunnel: + + - Your remote server must have a **public IP address** and an **active SSH port** during the initial setup for Coolify to configure the tunnel. After setup, you can close all ports on the server. + - If your server doesn’t have a public IP address, then this automated setup is **not for you**. Please follow the Manual setup guide instead. + - You need a domain that has it's **DNS managed by Cloudflare**. -- Your remote server must have a **public IP address** and an **active SSH port** during the initial setup for Coolify to configure the tunnel. After setup, you can close all ports on the server. -- If your server doesn’t have a public IP address, then this automated setup is **not for you**. Please follow the [Manual setup guide](#manual-setup) instead. -- You need a domain that has it's **DNS managed by Cloudflare**. - -### Quick Links to Important Sections: - -- [Create a Private SSH Key](#_1-create-a-private-ssh-key) -- [Add Public Key to Your Server](#_2-add-public-key-to-your-server) -- [Add your Server to Coolify](#_3-add-your-server-to-coolify) -- [Validate your Server on Coolify](#_4-validate-your-server-on-coolify) -- [Create a Cloudflare Tunnel](#_5-create-a-cloudflare-tunnel) -- [Setup Cloudflare Tunnel on Coolify](#_6-setup-cloudflare-tunnel-on-coolify) - ---- - - - - -The following data is used as an example in this guide. Please replace it with your actual data when following the steps: - -- **IPv4 Address of Remote Server:** 203.0.113.1 -- **Domain Name:** shadowarcanist.com -- **Username:** root -- **SSH Port:** 22 - - + --- + + + + The following data is used as an example in this guide. Please replace it with your actual data when following the steps: + + - **IPv4 Address of Remote Server:** `192.168.1.93` + - **SSH Domain Name:** `helixa.shadowarcanist.com` + - **Username:** `root` + - **SSH Port:** `22` + + --- -## 1. Create a Private SSH Key - -To create a Private SSH Key, follow these steps: - - - -1. In your Coolify Dashboard, go to **Keys & Tokens** -2. Click the **+ Add** button - -You will be prompted to choose a key type, along with providing a name and description for the key. - - - -1. Click on Generate new **ED25519** or **RSA** button to generate a new SSH key. -2. Copy the public key and save it somewhere safe (you'll need it in the next step). Then, click Continue. - -## 2. Add Public Key to Your Server - -SSH into the server you want to connect to Coolify: - -```bash - ssh root@203.0.113.1 -``` - -Once logged in, add your public key to the authorized keys file: - -```bash - $ echo "" >> ~/.ssh/authorized_keys -``` - -## 3. Add your Server to Coolify - -To add your server to Coolify, follow these steps: - - - -1. In your Coolify Dashboard, go to **Servers** -2. Click the **+ Add** button - -You will be prompted to enter details about your server. Make sure the information you provide is accurate, as Coolify will use these details to access your server. - - - -1. **Name** - Choose a name to easily identify your server in the dashboard. -2. **Description** - (Optional) Provide a description for your server. -3. **IP Address/Domain** - Enter the public IP address of your server. -4. **Port** - Enter the port number your server uses for SSH connections. -5. **User** - Enter the username Coolify will use (it should have root privileges on the server). -6. **Private key** - Select the private key you created in [Step 1](#_1-create-a-private-ssh-key) -7. After filling in the details, click the **Continue** button. - -## 4. Validate your Server on Coolify - -To validate your server, simply click the **Validate Server & Install Docker Engine** button. - - - -During this process, Coolify will log in to your server and set up everything needed for Coolify to use the server. - -Once the validation is completed, your server page will look like this: - - - -## 5. 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. - - - -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. Choose a name that you prefer. - - - -Next you will see the configuration page with multiple options to install cloudflared. - - - -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. - - - -Scroll down until you see the **Next** button, then click it. - -Then, you will be prompted to add a hostname. This is where we expose our SSH tunnel. - - - -1. **Subdomain** - (Optional) You can make SSH accessible on any subdomain. For this guide, we are using the subdomain **ssh**. -2. **Domain** - Choose the domain you want to use for the tunnel. -3. **Path** - Leave this field empty. -4. **Type** - Choose **SSH** (this is very important). -5. **URL** - Enter **localhost:22** If your SSH port is different from 22, use that port instead. -6. After filling in the details, click the **Save Tunnel** button. - -## 6. Setup Cloudflare Tunnel on Coolify - -To set up the tunnel on Coolify, follow these steps: - - - -Go to the **Servers** page and select the server you want to connect. This is the server you added in [Step 3](#_3-add-your-server-to-coolify) - -1. Click on **Cloudflare Tunnels** -2. Click on **Automated** button - -You will be prompted to enter the Tunnel Token and SSH domain. - - - -1. Enter your **Tunnel Token** (this is the token we copied in [Step 5](#_5-create-a-cloudflare-tunnel)) -2. Enter your **SSH Domain** (this is the subdomain we set up in [Step 5](#_5-create-a-cloudflare-tunnel)) -3. Click on **Continue** button. - -Coolify will now install **cloudflared** on the server and set everything up automatically. This process will take about 30 seconds to 1 minute. - -Once completed, you will see that the Cloudflare tunnel is enabled on the Cloudflare Tunnels page, like this: - - - -At this point, your server's IP address will be automatically updated to the SSH domain by Coolify. - - - -You can now block your SSH port on the server if you wish. - -**Congratulations**! You've successfully set up a server that can be accessed by Coolify over SSH using Cloudflare tunnels via your domain. + ## 1. Create a Private SSH Key [!toc] + + + + 1. In your Coolify Dashboard, go to **Keys & Tokens** + 2. Click on **Private Keys** tab + 2. Click the **+ Add** button + + You will be prompted to choose a key type, along with providing a name and description for the key. + + + + 1. Click on Generate new **ED25519** or **RSA** button to generate a new SSH key. + 2. Copy the public key and save it somewhere safe (you'll need it in the next step). + 3. Click **Continue** button. + + ## 2. Add Public Key to Your Server [!toc] + + SSH into the server you want to connect to Coolify: + + ```bash + ssh root@192.168.1.93 + ``` + + Once logged in, add your public key to the authorized keys file: + + ```bash + echo "" >> ~/.ssh/authorized_keys + ``` + + ## 3. Add your Server to Coolify [!toc] + + + + 1. In your Coolify Dashboard, go to **Servers** + 2. Click the **+ Add** button + + You will be prompted to enter details about your server. Make sure the information you provide is accurate, as Coolify will use these details to access your server. + + + + 1. **Name** - Choose a name to easily identify your server in the dashboard. + 2. **Description** - (Optional) Provide a description for your server. + 3. **IP Address/Domain** - Enter the public IP address of your server. + 4. **Port** - Enter the port number your server uses for SSH connections. + 5. **User** - Enter the username Coolify will use (it should have root privileges on the server). + 6. **Private key** - Select the private key you created in Step 1 + 7. After filling in the details, click the **Continue** button. + + ## 4. Validate your Server on Coolify [!toc] + + To validate your server, simply click the **Validate Server & Install Docker Engine** button. + + + + During this process, Coolify will log in to your server and set up everything needed for Coolify to use the server. + + Once the validation is completed, your server page will look like this: + + - - -**The steps above show how to do the automated setup. Below are the steps for the manual setup.** - - + ## 5. Create a Cloudflare Tunnel [!toc] + + To create a Cloudflare Tunnel, first log in to your [Cloudflare dashboard](https://dash.cloudflare.com/) + + + + 1. Go to **Networking** in the sidebar. + 2. Click on **Tunnels** + 3. Click on **Create tunnel** button + + + + + You will be prompted to enter a tunnel name. Enter a name that you prefer and click on **Create tunnel** button. + + + + 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. -## Manual Setup + ## 6. Configure Cloudflare tunnel on Coolify [!toc] + + + 1. In your Coolify Dashboard, go to **Cloudflare Tunnel** + 2. Under manual section enter your **Cloudflare Token** and **SSH Domain** + 3. Click on **Continue** button + + + + The Cloudflare token is included in the **docker run command** you copied in the previous step. The token begins with `eyJ`. + + + + Once cloudflared starts running you will be able to see it's status on Cloudflare dashboard: + + + + Click on continue button to create the tunnel. + + ## 7. Configure tunnel routes [!toc] + + 1. Click on your tunnel + 2. Click on **Configure** option + + + + 1. Select **Routes**. + 2. Click **Add route** button + + + + 3. Select **Published Application** as the route type + + + + 1. **Subdomain** - (Optional) You can make your resource accessible on any subdomain/domain. For this guide, we are using the `helixa` subdomain. + 2. **Domain** - Choose the domain you want to use for the tunnel. + 3. **Path** - Leave this field empty. + 4. **Service URL** - Enter **ssh://localhost:22** (this is very important). If your SSH port is different from 22, use that port instead. + 6. After filling in the details, click the **Add route** button. + + + + + + Coolify will automatically change the server IP address to the Cloudflare SSH domain once the tunnel is configured. + + If it doesn’t update automatically then manually change the IP address to the SSH domain here: + + + + **Congratulations!** You've successfully set up a server that can be accessed by Coolify over SSH using Cloudflare tunnels via your domain. + + You can now block your SSH port on the server if you wish. + + + + + To manually setup Cloudflare Tunnel: - You need access to your remote server to install cloudflared (a public IP for your server is not required). - You need a domain that has it's **DNS managed by Cloudflare**. -### Quick Links to Important Sections: - -- [Create a Private SSH Key](#_1-create-a-private-ssh-key-1) -- [Add Public Key to Your Server](#_2-add-public-key-to-your-server-1) -- [Create a Cloudflare Tunnel](#_3-create-a-cloudflare-tunnel) -- [Add your Server to Coolify](#_4-add-your-server-to-coolify) -- [Validate your Server on Coolify](#_5-validate-your-server-on-coolify) -- [Setup Cloudflare Tunnel on Coolify](#_6-setup-cloudflare-tunnel-on-coolify-1) - --- - The following data is used as an example in this guide. Please replace it with your actual data when following the steps: -- **IPv4 Address of Remote Server:** 203.0.113.1 -- **Domain Name:** shadowarcanist.com -- **Username:** root -- **SSH Port:** 22 +- **IPv4 Address of Remote Server:** `192.168.1.93` +- **SSH Domain Name:** `helixa.shadowarcanist.com` +- **Username:** `root` +- **SSH Port:** `22` --- -## 1. Create a Private SSH Key + ## 1. Create a Private SSH Key [!toc] + + + + 1. In your Coolify Dashboard, go to **Keys & Tokens** + 2. Click on **Private Keys** tab + 2. Click the **+ Add** button + + You will be prompted to choose a key type, along with providing a name and description for the key. + + + + 1. Click on Generate new **ED25519** or **RSA** button to generate a new SSH key. + 2. Copy the public key and save it somewhere safe (you'll need it in the next step). + 3. Click **Continue** button. + + ## 2. Add Public Key to Your Server [!toc] + + SSH into the server you want to connect to Coolify: + + ```bash + ssh root@192.168.1.93 + ``` + + Once logged in, add your public key to the authorized keys file: + + ```bash + echo "" >> ~/.ssh/authorized_keys + ``` + + ## 3. Add your Server to Coolify [!toc] + + + + 1. In your Coolify Dashboard, go to **Servers** + 2. Click the **+ Add** button + + You will be prompted to enter details about your server. + + + + 1. **Name** - Choose a name to easily identify your server in the dashboard. + 2. **Description** - (Optional) Provide a description for your server. + 3. **IP Address/Domain** - Enter the SSH domain that you want to acesss the server via Cloudflare tunnels. + 4. **Port** - Enter the port number your server uses for SSH connections. + 5. **User** - Enter the username Coolify will use (it should have root privileges on the server). + 6. **Private key** - Select the private key you created in Step 1 + 7. After filling in the details, click the **Continue** button. -To create a Private SSH Key, follow these steps: - + ## 4. Configure Cloudflare tunnel on Coolify [!toc] -1. In your Coolify Dashboard, go to **Keys & Tokens** -2. Click the **+ Add** button + -You will be prompted to choose a key type, along with providing a name and description for the key. + 1. In your Coolify Dashboard, go to **Cloudflare Tunnel** + 2. Click the **"here"** text on the information message you see on the dashboard - -1. Click on Generate new **ED25519** or **RSA** button to generate a new SSH key. -2. Copy the public key and save it somewhere safe (you'll need it in the next step). Then, click Continue. + ## 5. Create a Cloudflare Tunnel [!toc] + + To create a Cloudflare Tunnel, first log in to your [Cloudflare dashboard](https://dash.cloudflare.com/) + + + + 1. Go to **Networking** in the sidebar. + 2. Click on **Tunnels** + 3. Click on **Create tunnel** button + + + + + You will be prompted to enter a tunnel name. Enter a name that you prefer and click on **Create tunnel** button. + + + + 1. Select the **Docker** option + 2. Copy the docker run command, and run it on the server terminal which you want connect to Coolify. -## 2. Add Public Key to Your Server + + + By default, the `docker run` command runs in the foreground. This means the `cloudflared` container will stop if you close the terminal. To keep the container running in the background, add the `-d` flag when running the command. -SSH into the server you want to connect to Coolify: + For example: `docker run -d cloudflare/...` + + -```bash - ssh root@203.0.113.1 -``` + Once cloudflared starts running you will be able to see it's status on Cloudflare dashboard: + + -This server can be on your local network without a public IP address. All you need is SSH access to the terminal to run commands. + Click on continue button to create the tunnel. -Once logged in, add your public key to the authorized keys file: + ## 6. Configure tunnel routes [!toc] + + + + 1. Click on your tunnel + 2. Click on **Configure** option + + + + 1. Select **Routes**. + 2. Click **Add route** button + + + + 3. Select **Published Application** as the route type + + + + 1. **Subdomain** - (Optional) You can make your resource accessible on any subdomain/domain. For this guide, we are using the `helixa` subdomain. + 2. **Domain** - Choose the domain you want to use for the tunnel. + 3. **Path** - Leave this field empty. + 4. **Service URL** - Enter **ssh://localhost:22** (this is very important). If your SSH port is different from 22, use that port instead. + 6. After filling in the details, click the **Add route** button. -```bash - $ echo "" >> ~/.ssh/authorized_keys -``` + -## 3. Create a Cloudflare Tunnel + ## 7. Validate server on Coolify [!toc] + To validate your server, simply click the **Validate Server & Install Docker Engine** button. + + + + During this process, Coolify will log in to your server and set up everything needed for Coolify to use the server. + + Once the validation is completed, your server page will look like this: + + -To create a Cloudflare Tunnel, first log in to your Cloudflare account and go to the [Zero Trust](https://one.dash.cloudflare.com/) page. + + **Congratulations!** You've successfully set up a server that can be accessed by Coolify over SSH using Cloudflare tunnels via your domain. - + You can now block your SSH port on the server if you wish. -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. Choose a name that you prefer. - +## Known issues and Solutions -Next you will see the configuration page with multiple options to install cloudflared. +When you create a new routes on Tunnel, Cloudflare will create a DNS record for the hostname. - +However, if a DNS record for the hostname already exists, Cloudflare won’t update existing record. -Select your preferred option and follow the installation instructions provided by Cloudflare on the page. +In this case, your app won’t work. To fix this issue, follow the steps below: - + -Scroll down a bit and wait for your server (connector) to appear in the list. Once it appears, click the **Next** button. +1. Click on your tunnel +2. Click on **Configure** option -Then, you will be prompted to add a hostname. This is where we expose our SSH tunnel. + - +3. Copy your tunnel ID from the Tunnels details section. -1. **Subdomain** - (Optional) You can make SSH accessible on any subdomain. For this guide, we are using the subdomain **ssh**. -2. **Domain** - Choose the domain you want to use for the tunnel. -3. **Path** - Leave this field empty. -4. **Type** - Choose **SSH** (this is very important). -5. **URL** - Enter **localhost:22** If your SSH port is different from 22, use that port instead. -6. After filling in the details, click the **Save Tunnel** button. + -## 4. Add your Server to Coolify +Create a new DNS record with the following details: -To add your server to Coolify, follow these steps: +1. In the Cloudflare dashboard, go to **DNS**. +2. Select **Records**. +3. Add a **CNAME** record. +4. Enter the name as `*` or the name of your subdomain (this should match the hostname you have for your app on the tunnel). +5. For the **Target**, enter the tunnel ID followed by `.cfargotunnel.com` +6. Set the proxy status to **Proxied**. - - -1. In your Coolify Dashboard, go to **Servers** -2. Click the **+ Add** button - -You will be prompted to enter details about your server. Make sure the information you provide is accurate, as Coolify will use these details to access your server. - - - -1. **Name** - Choose a name to easily identify your server in the dashboard. -2. **Description** - (Optional) Provide a description for your server. -3. **IP Address/Domain** - Enter the SSH domain of your server (which we set up in the previous step). -4. **Port** - Enter the port number your server uses for SSH connections. -5. **User** - Enter the username Coolify will use (it should have root privileges on the server). -6. **Private key** - Select the private key you created in [Step 1](#_1-create-a-private-ssh-key-1) -7. After filling in the details, click the **Continue** button. - -## 5. Validate your Server on Coolify - -To validate your server, simply click the **Validate Server & Install Docker Engine** button. - - - -During this process, Coolify will log in to your server and set up everything needed for Coolify to use the server. - -Once the validation is completed, your server page will look like this: - - - -## 6. Setup Cloudflare Tunnel on Coolify - -To set up the tunnel on Coolify, follow these steps: - - - -Go to the **Servers** page and select the server (which we added in the previous step) you want to connect. - -1. Click on **Cloudflare Tunnels** -2. Click on **Manual** button - -Once completed, you will see that the Cloudflare tunnel is enabled on the Cloudflare Tunnels page, like this: - - - -**Congratulations**! You've successfully set up a server that can be accessed by Coolify over SSH using Cloudflare tunnels via your domain. +Now, visit the domain of your application, and it should be accessible there. diff --git a/content/docs/integrations/cloudflare/tunnels/single-resource.mdx b/content/docs/integrations/cloudflare/tunnels/single-resource.mdx index c25d5c54..6a2c0765 100644 --- a/content/docs/integrations/cloudflare/tunnels/single-resource.mdx +++ b/content/docs/integrations/cloudflare/tunnels/single-resource.mdx @@ -37,16 +37,6 @@ A simple high-level overview diagram to give you a visual idea of how this works --- -### Quick Links to Important Sections: - -- [Setup your app for tunneling](#_1-setup-your-app-for-tunneling) -- [Create a Cloudflare Tunnel](#_2-create-a-cloudflare-tunnel) -- [Setup Cloudflare Tunnel on Coolify](#_3-setup-cloudflare-tunnel-on-coolify) -- [Expose Multiple Resource on Different Domains](#expose-multiple-resource-on-different-domains) -- [Known issues and Solutions](#known-issues-and-solutions) - ---- - @@ -65,7 +55,7 @@ The following data is used as an example in this guide. Please replace it with y To setup your app for tunneling, follow these steps: - + 1. Remove all domains from the **Domains** field. 2. Set the correct port in **Ports Exposed** (the port your app uses). @@ -74,117 +64,139 @@ To setup your app for tunneling, follow these steps: ## 2. 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/) + + + +1. Go to **Networking** in the sidebar. +2. Click on **Tunnels** +3. Click on **Create tunnel** button + -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. -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. + + +## 3. Deploy cloudflared on Coolify + +Go to your project on Coolify dashboard and click the `+ New` button to create a new resource. -Next you will see the configuration page with multiple options to install cloudflared. +Search for `Cloudflared` and click on it. -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. -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 -1. **Subdomain** - (Optional) You can make your app/resource accessible on any subdomain/domain. For this guide, we are not using a 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:4477** The port 4477 is the one we mapped to the host system in [Step 1](#_1-setup-your-app-for-tunneling). Replace 4477 with your own port. -6. After filling in the details, click the **Save Tunnel** button. +Click on continue button to create the tunnel. -## 3. Setup Cloudflare Tunnel on Coolify - -To set up the tunnel on Coolify, follow these steps: +## 4. Set Up TLS Encryption +To make Cloudflare use stricter encryption when connecting to your server, configure your TLS encryption in Cloudflare: -Go to your project on Coolify dashboard and click the **+ New** button to create a new resource. +1. Go to **SSL/TLS** in Cloudflare. +2. Select **Overview**. +3. Click **Configure** button -You will see many options to deploy a new app. Search for Cloudflared and click on it. +1. Choose **Full (Strict)** as the encryption mode. +2. Click **Save** button + + +## 5. Configure tunnel routes -Go to the **Environment Variables** page, enter your tunnel token, and deploy the Cloudflared app. This token was copied in [Step 2](#_2-create-a-cloudflare-tunnel) - -**Congratulations**! You've successfully set up a resource that can be accessed by anyone on the internet your domain. - - - - -**The steps above show how to tunnel a single resource. Below are the steps for tunneling multiple resources** - - - - -## Tunnel Multiple Resources - -The easiest way to tunnel multiple resources is by following our [Tunnel All Resources](/integrations/cloudflare/tunnels/all-resource) guide, which uses Coolify's built-in proxy. However, if you prefer not to use the proxy, there are two alternative methods: - -- [Tunnel Multiple Single Resources](#tunnel-multiple-single-resources) -- [Tunnel Coolify](#tunnel-coolify) - -Tunneling multiple single resources is straightforward, but tunneling Coolify itself requires additional manual setup. - -## Tunnel Multiple Single Resources - -If you want to expose different apps individually, you can follow our [Tunnel All Resources](/integrations/cloudflare/tunnels/all-resource), or take an alternate approach: +1. Click on your tunnel +2. Click on **Configure** option -1. Follow [Step 1](#_1-setup-your-app-for-tunneling) for your new resource. -2. Create a new public hostname on Cloudflare Tunnel as described in [Step 2](#_2-create-a-cloudflare-tunnel). +1. Select **Routes**. +2. Click **Add route** button -There’s no need to create a separate tunnel for each resources, simply create a new hostname and point it to the port your app is listening on. + -## Tunnel Coolify +3. Select **Published Application** as the route type -Tunneling Coolify itself to make it accessible over a domain requires a bit more manual configuration. Here's how you can set it up: + -### 1. Create Public Hostnames in Cloudflare Tunnel - -Follow [Step 2](#_2-create-a-cloudflare-tunnel) from the main guide to create public hostnames for each service Coolify exposes. Use the following mapping: +1. **Subdomain** - (Optional) You can make your resource accessible on any subdomain/domain. For this guide, we are using the `helixa` subdomain. +2. **Domain** - Choose the domain you want to use for the tunnel. +3. **Path** - Leave this field empty. +4. **Service URL** - Enter **http://localhost:4477** (this is very important). The port 4477 is the one we mapped to the host system in [Step 1](/integrations/cloudflare/tunnels/single-resource#1-setup-your-app-for-tunneling). +6. After filling in the details, click the **Add route** button. -- **Hostnames**: - 1. `app.shadowarcanist.com/terminal/ws` → `localhost:6002` (WebSocket terminal) - 2. `realtime.shadowarcanist.com` → `localhost:6001` (Realtime server) - 3. `app.shadowarcanist.com` → `localhost:8000` (Coolify dashboard) -- **Type**: HTTP (Ensure you select HTTP for each hostname.) +**Congratulations**! You've successfully set up a resource that can be accessed by anyone on the internet on your domain. + +--- + +## Tunnel Multiple Resources + +The easiest way to tunnel multiple resources is by following our [Tunnel All Resources](/integrations/cloudflare/tunnels/single-resource) guide, which uses Coolify's built-in proxy. + +However, if you prefer not to use the proxy, there are two alternative methods: + + + + + + +If you want to expose different apps individually, you can follow our [Tunnel All Resources](/integrations/cloudflare/tunnels/single-resource), or take an alternate approach: + +1. Follow [Step 1](/integrations/cloudflare/tunnels/single-resource#1-setup-your-app-for-tunneling) for your new resource. + +2. Create a new route on Cloudflare Tunnel as described in [Step 5](/integrations/cloudflare/tunnels/single-resource#5-configure-tunnel-routes). + +There’s no need to create a separate tunnel for each resources, simply create a new route and point it to the port your app is listening on. + + + + + +Tunneling Coolify itself to make it accessible over a domain requires a bit more manual configuration. Here's how you can set it up: + +### 1. Create routes in Cloudflare Tunnel [!toc] + +Follow [Step 5](/integrations/cloudflare/tunnels/single-resource#5-configure-tunnel-routes) to create routes for each service Coolify exposes. Use the following mapping: + + + +| Domain / Path | Service | Purpose | +|--------------------------------------------|-------------------|----------------------| +| `coolify.shadowarcanist.com/terminal/ws` | `http://localhost:6002` | WebSocket terminal | +| `coolify-realtime.shadowarcanist.com` | `http://localhost:6001` | Realtime server | +| `coolify.shadowarcanist.com` | `http://localhost:8000` | Coolify dashboard | -The order of the hostnames matters! Be sure to match it exactly as shown above. +The order of the routes matters! Be sure to match it exactly as shown above. --- -### 2. Update Coolify’s `.env` File +### 2. Update Coolify’s `.env` File [!toc] After creating public hostnames, update the `.env` file in your Coolify instance located at `/data/coolify/source` to enable connections to the realtime server. Add the following lines: @@ -200,14 +212,14 @@ REDIS_PASSWORD= ########### # Add these lines -PUSHER_HOST=realtime.shadowarcanist.com +PUSHER_HOST=coolify-realtime.shadowarcanist.com PUSHER_PORT=443 ########### ``` This ensures that Coolify uses the Cloudflare Tunnel for its realtime server. -### 3. Restart Coolify +### 3. Restart Coolify [!toc] Run the following command to restart Coolify and apply the changes: @@ -215,10 +227,10 @@ Run the following command to restart Coolify and apply the changes: curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash ``` -### 4. Verify the Setup +### 4. Verify the Setup [!toc] -1. Access your Coolify dashboard at `https://app.shadowarcanist.com`. -2. Test the realtime functionality by visiting `https://app.shadowarcanist.com/realtime` in another browser tab. You should see a notification about a test event. +1. Access your Coolify dashboard at `https://coolify.shadowarcanist.com`. +2. Test the realtime functionality by visiting `https://coolify.shadowarcanist.com/realtime` in another browser tab. You should see a notification about a test event. 3. If you know what are you doing, you can check the network tab as well. Search for a websocket connection. @@ -228,20 +240,31 @@ If you use a firewall, ensure that the required ports (e.g., `8000`, `6001`, `60 + + + + +--- + ## Known issues and Solutions -When you create a new public hostname in [Step 2](#_2-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/single-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: - + -First, copy your tunnel ID from the Tunnels page on the Cloudflare dashboard. +1. Click on your tunnel +2. Click on **Configure** option - + + +3. Copy your tunnel ID from the Tunnels details section. + + Create a new DNS record with the following details: diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/0.webp b/public/images/integrations/cloudflare/tunnels/all-resource/0.webp new file mode 100644 index 00000000..c8b71b5d Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/all-resource/0.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/1.webp b/public/images/integrations/cloudflare/tunnels/all-resource/1.webp index d7862d13..4b364cb1 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/1.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/1.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/10.webp b/public/images/integrations/cloudflare/tunnels/all-resource/10.webp index a6c52424..4cbb4dc5 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/10.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/10.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/11.webp b/public/images/integrations/cloudflare/tunnels/all-resource/11.webp index 257cb7f4..017e7f2a 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/11.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/11.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/12.webp b/public/images/integrations/cloudflare/tunnels/all-resource/12.webp index 0a7bb1d5..656f0854 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/12.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/12.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/13.webp b/public/images/integrations/cloudflare/tunnels/all-resource/13.webp index fc3b58e1..48f09383 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/13.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/13.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/14.webp b/public/images/integrations/cloudflare/tunnels/all-resource/14.webp index f9beff82..728a1b4a 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/14.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/14.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/15.webp b/public/images/integrations/cloudflare/tunnels/all-resource/15.webp index e16249e0..111160d0 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/15.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/15.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/16.webp b/public/images/integrations/cloudflare/tunnels/all-resource/16.webp index 7ab44cf3..39ed0e1f 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/16.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/16.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/17.webp b/public/images/integrations/cloudflare/tunnels/all-resource/17.webp new file mode 100644 index 00000000..d6f2926b Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/all-resource/17.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/18.webp b/public/images/integrations/cloudflare/tunnels/all-resource/18.webp new file mode 100644 index 00000000..e628c76e Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/all-resource/18.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/19.webp b/public/images/integrations/cloudflare/tunnels/all-resource/19.webp new file mode 100644 index 00000000..1f44fc86 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/all-resource/19.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/2.webp b/public/images/integrations/cloudflare/tunnels/all-resource/2.webp index 268964aa..00236791 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/2.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/2.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/3.webp b/public/images/integrations/cloudflare/tunnels/all-resource/3.webp index 4a189683..799163c6 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/3.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/3.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/4.webp b/public/images/integrations/cloudflare/tunnels/all-resource/4.webp index 715968ed..b15d92c2 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/4.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/4.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/5.webp b/public/images/integrations/cloudflare/tunnels/all-resource/5.webp index f0460474..ec29888f 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/5.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/5.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/6.webp b/public/images/integrations/cloudflare/tunnels/all-resource/6.webp index 0c55e4e2..444b0710 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/6.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/6.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/7.webp b/public/images/integrations/cloudflare/tunnels/all-resource/7.webp index d3d102b3..62fe1fe7 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/7.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/7.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/8.webp b/public/images/integrations/cloudflare/tunnels/all-resource/8.webp index 1cef604e..e5ada7c8 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/8.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/8.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/all-resource/9.webp b/public/images/integrations/cloudflare/tunnels/all-resource/9.webp index 0f6ed7c8..de3c567d 100644 Binary files a/public/images/integrations/cloudflare/tunnels/all-resource/9.webp and b/public/images/integrations/cloudflare/tunnels/all-resource/9.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/full-tls/17.webp b/public/images/integrations/cloudflare/tunnels/full-tls/17.webp new file mode 100644 index 00000000..4a2847b5 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/full-tls/17.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/full-tls/18.webp b/public/images/integrations/cloudflare/tunnels/full-tls/18.webp new file mode 100644 index 00000000..7bfda14d Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/full-tls/18.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-1.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-1.webp deleted file mode 100644 index a843c91e..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-1.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-10.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-10.webp deleted file mode 100644 index 9be5d19a..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-10.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-11.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-11.webp deleted file mode 100644 index 82141623..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-11.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-12.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-12.webp deleted file mode 100644 index 9f790d1f..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-12.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-13.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-13.webp deleted file mode 100644 index eb1904f5..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-13.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-14.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-14.webp deleted file mode 100644 index c9d815be..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-14.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-15.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-15.webp deleted file mode 100644 index 96637203..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-15.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-16.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-16.webp deleted file mode 100644 index b8a406c1..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-16.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-2.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-2.webp deleted file mode 100644 index 14255b78..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-2.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-3.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-3.webp deleted file mode 100644 index d92c7f45..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-3.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-4.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-4.webp deleted file mode 100644 index e381f071..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-4.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-5.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-5.webp deleted file mode 100644 index ee1d2634..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-5.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-6.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-6.webp deleted file mode 100644 index 586e0605..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-6.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-7.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-7.webp deleted file mode 100644 index 04c5d5f7..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-7.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-8.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-8.webp deleted file mode 100644 index 13df5bbe..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-8.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-9.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated-9.webp deleted file mode 100644 index faa841ae..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/automated-9.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/0.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/0.webp new file mode 100644 index 00000000..d6696b46 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/0.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/1.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/1.webp new file mode 100644 index 00000000..fc98bf37 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/1.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/10.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/10.webp new file mode 100644 index 00000000..444b0710 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/10.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/11.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/11.webp new file mode 100644 index 00000000..b179860a Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/11.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/12.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/12.webp new file mode 100644 index 00000000..f2cc96b5 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/12.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/13.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/13.webp new file mode 100644 index 00000000..4cbb4dc5 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/13.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/14.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/14.webp new file mode 100644 index 00000000..d97e3e16 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/14.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/15.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/15.webp new file mode 100644 index 00000000..f1e04597 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/15.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/16.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/16.webp new file mode 100644 index 00000000..9f290cc2 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/16.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/2.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/2.webp new file mode 100644 index 00000000..3a1b3619 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/2.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/3.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/3.webp new file mode 100644 index 00000000..34140e7b Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/3.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/4.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/4.webp new file mode 100644 index 00000000..b3ca9ada Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/4.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/5.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/5.webp new file mode 100644 index 00000000..4e1b8876 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/5.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/6.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/6.webp new file mode 100644 index 00000000..f04993d4 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/6.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/7.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/7.webp new file mode 100644 index 00000000..cf117122 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/7.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/8.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/8.webp new file mode 100644 index 00000000..489886bb Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/8.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/automated/9.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/9.webp new file mode 100644 index 00000000..d18c0b8b Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/automated/9.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-1.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-1.webp deleted file mode 100644 index 4c44eb70..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-1.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-10.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-10.webp deleted file mode 100644 index 213bbf5b..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-10.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-11.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-11.webp deleted file mode 100644 index 8fb63781..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-11.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-12.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-12.webp deleted file mode 100644 index 14035683..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-12.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-13.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-13.webp deleted file mode 100644 index 04742cfb..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-13.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-14.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-14.webp deleted file mode 100644 index 72af718d..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-14.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-2.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-2.webp deleted file mode 100644 index 96324724..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-2.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-3.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-3.webp deleted file mode 100644 index f9599523..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-3.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-4.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-4.webp deleted file mode 100644 index 268964aa..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-4.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-5.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-5.webp deleted file mode 100644 index 4a189683..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-5.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-6.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-6.webp deleted file mode 100644 index d77b3491..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-6.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-7.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-7.webp deleted file mode 100644 index 0fbf804e..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-7.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-8.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-8.webp deleted file mode 100644 index 9f790d1f..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-8.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-9.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual-9.webp deleted file mode 100644 index 7d903799..00000000 Binary files a/public/images/integrations/cloudflare/tunnels/server-ssh/manual-9.webp and /dev/null differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/0.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/0.webp new file mode 100644 index 00000000..535ef0a5 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/0.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/1.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/1.webp new file mode 100644 index 00000000..eee1940e Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/1.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/10.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/10.webp new file mode 100644 index 00000000..2ccf1da4 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/10.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/11.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/11.webp new file mode 100644 index 00000000..4cbb4dc5 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/11.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/12.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/12.webp new file mode 100644 index 00000000..9c76eef3 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/12.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/13.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/13.webp new file mode 100644 index 00000000..f1e04597 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/13.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/14.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/14.webp new file mode 100644 index 00000000..df533d0b Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/14.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/15.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/15.webp new file mode 100644 index 00000000..45f76adb Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/15.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/2.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/2.webp new file mode 100644 index 00000000..bf481715 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/2.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/3.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/3.webp new file mode 100644 index 00000000..e0a3757d Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/3.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/4.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/4.webp new file mode 100644 index 00000000..cf397d12 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/4.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/5.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/5.webp new file mode 100644 index 00000000..d4de6b0d Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/5.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/6.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/6.webp new file mode 100644 index 00000000..191dc0ae Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/6.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/7.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/7.webp new file mode 100644 index 00000000..4a2c7b71 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/7.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/8.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/8.webp new file mode 100644 index 00000000..444b0710 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/8.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/server-ssh/manual/9.webp b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/9.webp new file mode 100644 index 00000000..19fa4f64 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/server-ssh/manual/9.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/0.webp b/public/images/integrations/cloudflare/tunnels/single-resource/0.webp new file mode 100644 index 00000000..6100a19d Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/single-resource/0.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/1.webp b/public/images/integrations/cloudflare/tunnels/single-resource/1.webp index 139fa0cf..f2b322f3 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/1.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/1.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/10.webp b/public/images/integrations/cloudflare/tunnels/single-resource/10.webp index c32e09eb..9a44cc3e 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/10.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/10.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/11.webp b/public/images/integrations/cloudflare/tunnels/single-resource/11.webp index 3cdef975..a1e4c462 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/11.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/11.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/12.webp b/public/images/integrations/cloudflare/tunnels/single-resource/12.webp index fc3b58e1..5d63183b 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/12.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/12.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/13.webp b/public/images/integrations/cloudflare/tunnels/single-resource/13.webp index 97510f17..3ee08d1a 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/13.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/13.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/14.webp b/public/images/integrations/cloudflare/tunnels/single-resource/14.webp index 2eefeb0c..fe58b397 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/14.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/14.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/15.webp b/public/images/integrations/cloudflare/tunnels/single-resource/15.webp new file mode 100644 index 00000000..e6587083 Binary files /dev/null and b/public/images/integrations/cloudflare/tunnels/single-resource/15.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/2.webp b/public/images/integrations/cloudflare/tunnels/single-resource/2.webp index 04c5d5f7..39fce99c 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/2.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/2.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/3.webp b/public/images/integrations/cloudflare/tunnels/single-resource/3.webp index 13df5bbe..489886bb 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/3.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/3.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/4.webp b/public/images/integrations/cloudflare/tunnels/single-resource/4.webp index faa841ae..a41c4bac 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/4.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/4.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/5.webp b/public/images/integrations/cloudflare/tunnels/single-resource/5.webp index 715968ed..08076114 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/5.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/5.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/6.webp b/public/images/integrations/cloudflare/tunnels/single-resource/6.webp index b79d6b40..da0cdeff 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/6.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/6.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/7.webp b/public/images/integrations/cloudflare/tunnels/single-resource/7.webp index 396c8377..6db47035 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/7.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/7.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/8.webp b/public/images/integrations/cloudflare/tunnels/single-resource/8.webp index cbcf3ca6..30b6d0e4 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/8.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/8.webp differ diff --git a/public/images/integrations/cloudflare/tunnels/single-resource/9.webp b/public/images/integrations/cloudflare/tunnels/single-resource/9.webp index 3235df60..d8f8cd56 100644 Binary files a/public/images/integrations/cloudflare/tunnels/single-resource/9.webp and b/public/images/integrations/cloudflare/tunnels/single-resource/9.webp differ