{"id":34307,"date":"2025-12-07T16:53:48","date_gmt":"2025-12-07T09:53:48","guid":{"rendered":"https:\/\/dps.media\/?p=34307"},"modified":"2025-12-07T16:53:51","modified_gmt":"2025-12-07T09:53:51","slug":"huong-dan-tu-host-supabase-tren-fastpanel-voi-docker-portainer-giai-quyet-xung-dot-port","status":"publish","type":"post","link":"https:\/\/dps.media\/zh\/huong-dan-tu-host-supabase-tren-fastpanel-voi-docker-portainer-giai-quyet-xung-dot-port\/","title":{"rendered":"\u4f7f\u7528 Docker &amp; Portainer \u5728 Fastpanel \u4e0a\u81ea\u6258\u7ba1 Supabase \u7684\u6307\u5357\uff08\u89e3\u51b3\u7aef\u53e3\u51b2\u7a81\uff09"},"content":{"rendered":"<?xml encoding=\"utf-8\" ?><p>\u60a8\u60f3\u5728 Fastpanel VPS \u4e0a\u8fd0\u884c Supabase\uff08Firebase \u66ff\u4ee3\u54c1\uff09\uff0c\u4f46\u9047\u5230 8000\/3000 \u7aef\u53e3\u51b2\u7a81\u9519\u8bef\uff1f\u672c\u6587\u8be6\u7ec6\u6307\u5bfc\u4f7f\u7528 Docker \u90e8\u7f72 Supabase\uff0c\u4e3a API \u548c Studio Dashboard \u5206\u79bb\u57df\u540d\uff0c\u4f7f\u7cfb\u7edf\u8fd0\u884c\u6700\u7a33\u5b9a\u3002.<\/p><p>Supabase \u662f Firebase \u7684\u4e00\u4e2a\u7edd\u4f73\u5f00\u6e90\u66ff\u4ee3\u65b9\u6848\u3002\u7136\u800c\uff0c\u5728\u9884\u88c5\u4e86\u63a7\u5236\u9762\u677f\uff08\u5982 Fastpanel\u3001CyberPanel...\uff09\u7684 VPS \u4e0a\u81ea\u6258\u7ba1 (Self-host) Supabase \u901a\u5e38\u4f1a\u9047\u5230\u8bb8\u591a\u56f0\u96be\uff0c\u7279\u522b\u662f\u5173\u4e8e <strong>\u53cd\u5411\u4ee3\u7406<\/strong> \u548c <strong>\u7aef\u53e3\u51b2\u7a81\uff08Port Conflict\uff09<\/strong>.<\/p><p>\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cSupabase \u4f7f\u7528\u7aef\u53e3 <code>8000<\/code> \u7528\u4e8e API Gateway\uff0c\u6b64\u7aef\u53e3\u901a\u5e38\u88ab\u5176\u4ed6\u670d\u52a1\uff08\u5982 Portainer \u6216\u9ed8\u8ba4 Nginx\uff09\u5360\u7528\u3002\u6b64\u5916\uff0c\u7ba1\u7406\u4eea\u8868\u677f\uff08Supabase Studio\uff09\u5728\u7aef\u53e3 <code>3000<\/code> \u9690\u79d8\u8fd0\u884c\uff0c\u9700\u8981\u6b63\u786e\u914d\u7f6e\u624d\u80fd\u8bbf\u95ee\u3002.<\/p><p>\u5728\u672c\u6587\u4e2d\uff0c, <strong>DPS \u5a92\u4f53<\/strong> \u5c06\u5206\u4eab\u5728 Ubuntu 24.04 \u4e0a\u4f7f\u7528 Fastpanel \u90e8\u7f72 Supabase \u7684\u7ecf\u9a8c\uff0c\u91c7\u7528\u81ea\u5b9a\u4e49\u7aef\u53e3\u914d\u7f6e\uff1a <strong>API \u8fd0\u884c\u7aef\u53e3 8008<\/strong> \u548c <strong>Studio \u8fd0\u884c\u7aef\u53e3 3003<\/strong>.<\/p><h2 class=\"wp-block-heading\">1. \u51c6\u5907\u8d44\u6e90<\/h2><ul class=\"wp-block-list\">\n<li><strong>VPS\uff1a<\/strong> Ubuntu 22.04 \u6216 24.04\uff08\u5efa\u8bae\u81f3\u5c11 4GB RAM\uff09\u3002.<\/li>\n\n\n\n<li><strong>Fastpanel\uff1a<\/strong> \u5df2\u9884\u88c5\u3002.<\/li>\n\n\n\n<li><strong>Docker &amp; Portainer\uff1a<\/strong> \u5df2\u5b89\u88c5\uff08\u67e5\u770b\u524d\u9762\u7684\u6307\u5357\uff09\u3002.<\/li>\n\n\n\n<li><strong>\u57df\u540d\uff1a<\/strong> \u60a8\u9700\u8981\u51c6\u5907 2 \u4e2a\u5b50\u57df\u540d\uff1a\n<ul class=\"wp-block-list\">\n<li><code>studio.domain.com<\/code>: \u7528\u4e8e\u7ba1\u7406\u754c\u9762\u3002.<\/li>\n\n\n\n<li><code>spb.domain.com<\/code>: \u7528\u4e8e API \u540e\u7aef\u3002.<\/li>\n<\/ul>\n<\/li>\n<\/ul><h2 class=\"wp-block-heading\">2. \u4e0b\u8f7d Supabase \u6e90\u4ee3\u7801<\/h2><p>\u4f7f\u7528 root \u6743\u9650 SSH \u8bbf\u95ee VPS \u5e76\u4e0b\u8f7d Supabase \u7684 Docker \u90e8\u7f72\u5305\uff1a<\/p><p>Bash<\/p><pre class=\"wp-block-code\"><code># \u79fb\u52a8\u5230\u5de5\u4f5c\u76ee\u5f55\ncd \/opt\n\n# \u4ece Github \u4e0b\u8f7d\u6e90\u4ee3\u7801\ngit clone --depth 1 https:\/\/github.com\/supabase\/supabase\n\n# \u8fdb\u5165 Docker \u914d\u7f6e\u76ee\u5f55\ncd supabase\/docker\n<\/code><\/pre><h2 class=\"wp-block-heading\">3. \u914d\u7f6e Docker Compose\uff08\u907f\u514d\u7aef\u53e3\u51b2\u7a81\uff09<\/h2><p>\u8fd9\u662f\u6700\u91cd\u8981\u7684\u4e00\u6b65\u3002\u6211\u4eec\u5c06\u4e0d\u4f7f\u7528\u9ed8\u8ba4\u7aef\u53e3 (8000) \u4ee5\u907f\u514d\u4e0e Portainer \u6216\u5176\u4ed6\u670d\u52a1\u51b2\u7a81\u3002.<\/p><p>\u6253\u5f00\u6587\u4ef6 <code>docker-compose.yml<\/code>:<\/p><p>Bash<\/p><pre class=\"wp-block-code\"><code>nano docker-compose.yml\n<\/code><\/pre><p><strong>\u8fdb\u884c 2 \u4e2a\u91cd\u8981\u66f4\u6539\uff1a<\/strong><\/p><ol start=\"1\" class=\"wp-block-list\">\n<li><strong>\u4e3a Studio\uff08\u754c\u9762\uff09\u6253\u5f00\u7aef\u53e3\uff1a<\/strong> \u67e5\u627e service <code>\u5de5\u4f5c\u5ba4<\/code>, \u6dfb\u52a0\u90e8\u5206 <code>\u7aef\u53e3<\/code> \u5c06 VPS \u7684 3003 \u7aef\u53e3\u6620\u5c04\u5230\u5bb9\u5668\u7684 3000 \u7aef\u53e3\u3002.<\/li>\n\n\n\n<li><strong>\u66f4\u6539 Kong (API) \u7684\u7aef\u53e3\uff1a<\/strong> \u67e5\u627e service <code>kong<\/code>, \u5c06\u6620\u5c04\u7aef\u53e3\u6539\u4e3a 8008\u3002.<\/li>\n<\/ol><p>\u4fee\u6539\u540e\u7684\u4ee3\u7801\u6bb5\u5c06\u5982\u4e0b\u6240\u793a\uff1a<\/p><p>YAML<\/p><pre class=\"wp-block-code\"><code>services:\n  studio:\n    image: supabase\/studio:2025...\n    # ... \u5176\u4ed6\u914d\u7f6e\u4fdd\u6301\u4e0d\u53d8\n    ports:\n      - \"3003:3000\"  # Map Host 3003 -&gt; Container 3000\n\n  kong:\n    image: kong:2.8.1\n    # ... \u5176\u4ed6\u914d\u7f6e\u4fdd\u6301\u4e0d\u53d8\n    ports:\n      - \"8008:8000\/tcp\" # Map Host 8008 -&gt; Container 8000 (API)\n      - \"${KONG_HTTPS_PORT}:8443\/tcp\"\n<\/code><\/pre><h2 class=\"wp-block-heading\">4. \u914d\u7f6e\u73af\u5883\u53d8\u91cf\uff08.env\uff09<\/h2><p>\u590d\u5236\u793a\u4f8b\u6587\u4ef6\u5e76\u7f16\u8f91\uff1a<\/p><p>Bash<\/p><pre class=\"wp-block-code\"><code>cp .env.example .env\nnano .env\n<\/code><\/pre><p>\u60a8\u9700\u8981\u586b\u5199\u5f3a\u5bc6\u7801\uff08\u6570\u636e\u5e93\u3001JWT \u5bc6\u94a5\uff09\uff0c\u6700\u91cd\u8981\u7684\u662f\u914d\u7f6e URL \u4ee5\u5339\u914d\u5df2\u51c6\u5907\u7684 2 \u4e2a\u5b50\u57df\u540d\u3002.<\/p><p><strong>\u5fc5\u987b\u4fee\u6539\u7684\u53c2\u6570\uff1a<\/strong><\/p><p>Bash<\/p><pre class=\"wp-block-code\"><code># 1. \u5b89\u5168\uff08\u81ea\u751f\u6210\u5f3a\u968f\u673a\u5b57\u7b26\u4e32\uff09\nPOSTGRES_PASSWORD=MatKhauDbCucManh!!!\nJWT_SECRET=Chuoi_JWT_Bi_Mat_Dai_It_Nhat_32_Ky_Tu\nDASHBOARD_PASSWORD=MatKhauDangNhapWeb!!!\n\n# 2. API \u7aef\u53e3\u914d\u7f6e\uff08\u5fc5\u987b\u4e0e\u4e0a\u9762\u7684 yml \u6587\u4ef6\u5339\u914d\uff09\nKONG_HTTP_PORT=8008\n\n# 3. \u57df\u540d\u914d\u7f6e\uff08\u91cd\u8981\uff09\n# SITE_URL: \u662f\u8bbf\u95ee Studio \u754c\u9762\u7684\u5730\u5740\nSITE_URL=https:\/\/studio.domain.com\n\n# SUPABASE_PUBLIC_URL: \u662f API \u5730\u5740\uff08Studio \u5c06\u8c03\u7528\u6b64\u94fe\u63a5\u83b7\u53d6\u6570\u636e\uff09\n# \u6ce8\u610f\uff1a\u5fc5\u987b\u586b\u5199 API \u57df\u540d\uff0c\u4e0d\u8981\u586b\u5199 Studio \u57df\u540d\nSUPABASE_PUBLIC_URL=https:\/\/spb.domain.com\n\n# API Auth: \u4e5f\u6307\u5411 API \u57df\u540d\nAPI_EXTERNAL_URL=https:\/\/spb.domain.com\n\n# \u91cd\u5b9a\u5411 URL: \u6dfb\u52a0 studio \u57df\u540d\uff0c\u4ee5\u4fbf\u767b\u5f55\u540e\u8fd4\u56de\u6b63\u786e\u4f4d\u7f6e\nADDITIONAL_REDIRECT_URLS=https:\/\/studio.domain.com,https:\/\/spb.domain.com\n<\/code><\/pre><h2 class=\"wp-block-heading\">5. \u542f\u52a8 Supabase<\/h2><p>\u914d\u7f6e\u5b8c\u6210\u540e\uff0c\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u8ba9 Docker \u4e0b\u8f7d\u5e76\u6784\u5efa\u7cfb\u7edf\uff1a<\/p><p>Bash<\/p><pre class=\"wp-block-code\"><code>docker compose up -d\n<\/code><\/pre><p><em>\u6ce8\u610f\uff1a\u6b64\u8fc7\u7a0b\u53ef\u80fd\u9700\u8981 5-10 \u5206\u949f\u4e0b\u8f7d\u7ea6 1GB \u955c\u50cf\u3002.<\/em><\/p><h2 class=\"wp-block-heading\">6. \u5728 Fastpanel \u4e0a\u914d\u7f6e\u53cd\u5411\u4ee3\u7406<\/h2><p>\u8981\u8bbf\u95ee\u7f51\u9875\u800c\u65e0\u9700\u8f93\u5165 <code>IP:3003<\/code>, \u6211\u4eec\u4f7f\u7528 Fastpanel \u7684 Proxy \u529f\u80fd\u3002.<\/p><h3 class=\"wp-block-heading\">\u9875\u9762 1\uff1a\u7ba1\u7406\u754c\u9762\uff08Studio\uff09<\/h3><ol start=\"1\" class=\"wp-block-list\">\n<li>\u521b\u5efa\u65b0\u7ad9\u70b9\uff1a <strong>\u53cd\u5411\u4ee3\u7406<\/strong>.<\/li>\n\n\n\n<li>\u57df\u540d\uff1a <code>studio.domain.com<\/code>.<\/li>\n\n\n\n<li>\u4e0a\u6e38\uff1a <code>http:\/\/127.0.0.1:3003<\/code>.<\/li>\n\n\n\n<li><strong>\u6781\u5176\u91cd\u8981\uff1a<\/strong> \u8fdb\u5165 Settings -&gt; Static Content -&gt; <strong>\u5173\u95ed<\/strong> \u884c <em>\u201cUse NGINX for static files\u201d<\/em>.<\/li>\n\n\n\n<li>\u5b89\u88c5 SSL Let\u2019s Encrypt\u3002.<\/li>\n<\/ol><h3 class=\"wp-block-heading\">\u9875\u9762 2\uff1aAPI \u540e\u7aef\uff08Supabase\uff09<\/h3><ol start=\"1\" class=\"wp-block-list\">\n<li>\u521b\u5efa\u65b0\u7ad9\u70b9\uff1a <strong>\u53cd\u5411\u4ee3\u7406<\/strong>.<\/li>\n\n\n\n<li>\u57df\u540d\uff1a <code>spb.domain.com<\/code>.<\/li>\n\n\n\n<li>\u4e0a\u6e38\uff1a <code>http:\/\/127.0.0.1:8008<\/code>.<\/li>\n\n\n\n<li>\u4e5f <strong>\u5173\u95ed<\/strong> \u884c <em>\u201cUse NGINX for static files\u201d<\/em>.<\/li>\n\n\n\n<li>\u5b89\u88c5 SSL Let\u2019s Encrypt\u3002.<\/li>\n<\/ol><p><em>\uff08\u6ce8\u610f\uff1a\u9875\u9762 <code>spb<\/code> \u76f4\u63a5\u8bbf\u95ee\u65f6\u4f1a\u62a5 404 Not Found \u9519\u8bef\uff0c\u8fd9\u662f\u6b63\u5e38\u7684\uff0c\u56e0\u4e3a API Gateway \u6ca1\u6709\u754c\u9762\uff09\u3002.<\/em><\/p><h2 class=\"wp-block-heading\">7. \u7ed3\u679c &amp; \u767b\u5f55<\/h2><p>\u73b0\u5728\u60a8\u8bbf\u95ee\uff1a <strong><code>https:\/\/studio.domain.com<\/code><\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u4f7f\u7528\u8d26\u53f7\u767b\u5f55\uff1a <code>supabase<\/code> \/ \u60a8\u5728\u8bbe\u7f6e\u4e2d\u7684\u5bc6\u7801 <code>.env<\/code>.<\/li>\n<\/ul><p><strong>\u5f00\u53d1\u8fde\u63a5\u53c2\u6570\uff1a<\/strong><\/p><ul class=\"wp-block-list\">\n<li><strong>\u9879\u76ee URL\uff1a<\/strong> <code>https:\/\/spb.domain.com<\/code><\/li>\n\n\n\n<li><strong>\u533f\u540d\/\u670d\u52a1\u5bc6\u94a5\uff1a<\/strong> \u5728 Dashboard\uff08Settings -&gt; API\uff09\u4e2d\u83b7\u53d6\u3002.<\/li>\n<\/ul><h2 class=\"wp-block-heading\">\u603b\u7ed3<\/h2><p>\u5206\u79bb <strong>Studio (\u7aef\u53e3 3003)<\/strong> \u548c <strong>API (\u7aef\u53e3 8008)<\/strong> \u5e2e\u52a9 Supabase \u7cfb\u7edf\u5728 Fastpanel \u4e0a\u987a\u7545\u8fd0\u884c\uff0c\u800c\u4e0d\u5e72\u6270\u5176\u4ed6\u9ed8\u8ba4\u670d\u52a1\u3002\u5e0c\u671b\u8fd9\u4e2a\u6307\u5357\u80fd\u5e2e\u52a9\u4f60\u81ea\u4e3b\u638c\u63a7\u5f3a\u5927\u7684 Backend \u57fa\u7840\u8bbe\u65bd\u3002.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><p><em>\u6765\u6e90\uff1a <a class=\"wpil_keyword_link\" href=\"https:\/\/dps.media\/zh\/\" title=\"DPS.MEDIA \u80a1\u4efd\u516c\u53f8\" data-wpil-keyword-link=\"linked\" data-wpil-monitor-id=\"588\">dps.media<\/a><\/em><\/p><p><\/p>\n<style>\r\n.lwrp.link-whisper-related-posts{\r\n            \r\n            margin-top: 40px;\nmargin-bottom: 30px;\r\n        }\r\n        .lwrp .lwrp-title{\r\n            \r\n            \r\n        }.lwrp .lwrp-description{\r\n            \r\n            \r\n\r\n        }\r\n        .lwrp .lwrp-list-container{\r\n        }\r\n        .lwrp .lwrp-list-multi-container{\r\n            display: flex;\r\n        }\r\n        .lwrp .lwrp-list-double{\r\n            width: 48%;\r\n        }\r\n        .lwrp .lwrp-list-triple{\r\n            width: 32%;\r\n        }\r\n        .lwrp .lwrp-list-row-container{\r\n            display: flex;\r\n            justify-content: space-between;\r\n        }\r\n        .lwrp .lwrp-list-row-container .lwrp-list-item{\r\n            width: calc(33% - 20px);\r\n        }\r\n        .lwrp .lwrp-list-item:not(.lwrp-no-posts-message-item){\r\n            \r\n            max-width: 150px;\r\n        }\r\n        .lwrp .lwrp-list-item img{\r\n            max-width: 100%;\r\n            height: auto;\r\n            object-fit: cover;\r\n            aspect-ratio: 1 \/ 1;\r\n        }\r\n        .lwrp .lwrp-list-item.lwrp-empty-list-item{\r\n            background: initial !important;\r\n        }\r\n        .lwrp .lwrp-list-item .lwrp-list-link .lwrp-list-link-title-text,\r\n        .lwrp .lwrp-list-item .lwrp-list-no-posts-message{\r\n            \r\n            \r\n            \r\n            \r\n        }@media screen and (max-width: 480px) {\r\n            .lwrp.link-whisper-related-posts{\r\n                \r\n                \r\n            }\r\n            .lwrp .lwrp-title{\r\n                \r\n                \r\n            }.lwrp .lwrp-description{\r\n                \r\n                \r\n            }\r\n            .lwrp .lwrp-list-multi-container{\r\n                flex-direction: column;\r\n            }\r\n            .lwrp .lwrp-list-multi-container ul.lwrp-list{\r\n                margin-top: 0px;\r\n                margin-bottom: 0px;\r\n                padding-top: 0px;\r\n                padding-bottom: 0px;\r\n            }\r\n            .lwrp .lwrp-list-double,\r\n            .lwrp .lwrp-list-triple{\r\n                width: 100%;\r\n            }\r\n            .lwrp .lwrp-list-row-container{\r\n                justify-content: initial;\r\n                flex-direction: column;\r\n            }\r\n            .lwrp .lwrp-list-row-container .lwrp-list-item{\r\n                width: 100%;\r\n            }\r\n            .lwrp .lwrp-list-item:not(.lwrp-no-posts-message-item){\r\n                \r\n                max-width: initial;\r\n            }\r\n            .lwrp .lwrp-list-item .lwrp-list-link .lwrp-list-link-title-text,\r\n            .lwrp .lwrp-list-item .lwrp-list-no-posts-message{\r\n                \r\n                \r\n                \r\n                \r\n            };\r\n        }<\/style>\r\n<div id=\"link-whisper-related-posts-widget\" class=\"link-whisper-related-posts lwrp\">\r\n            <div class=\"lwrp-title\">\u76f8\u5173\u6587\u7ae0<\/div>    \r\n        <div class=\"lwrp-list-container\">\r\n                                <div class=\"lwrp-list lwrp-list-row-container lwrp-list-double-row\">\r\n                <div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/zh\/%e4%bc%98%e5%8c%96facebook%e5%b9%bf%e5%91%8a%e8%b4%b9%e7%94%a8%e5%8f%aa%e9%9c%805%e6%ad%a5\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">\u4ec5\u97005\u6b65\u4f18\u5316Facebook\u5e7f\u544a\u6210\u672c<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/zh\/facebook%e7%9b%b4%e6%92%ad%e5%8d%96%e8%b4%a7%e6%96%b9%e6%b3%95%ef%bc%8c%e9%a6%96%e4%b8%aa1000%e6%ac%a1%e8%a7%82%e7%9c%8b%e9%87%8f\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">Facebook\u76f4\u64ad\u5356\u8d27\u65b9\u6cd5\uff0c\u5b9e\u73b0\u9996\u4e2a1000\u6b21\u89c2\u770b<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/zh\/%e9%a2%84%e8%ae%a2%e6%8a%a5%e7%ba%b8%e5%85%ac%e5%85%b3%e6%9c%8d%e5%8a%a1%e6%97%b6%e4%bc%81%e4%b8%9a%e5%b8%b8%e7%8a%af%e7%9a%84%e9%94%99%e8%af%af\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">PR\u65b0\u95fb\u9884\u8ba2\u670d\u52a1\uff1a\u4f01\u4e1a\u5e38\u89c1\u9519\u8bef<\/span><\/a><\/div>                <\/div>\r\n                            <div class=\"lwrp-list lwrp-list-row-container lwrp-list-double-row\">\r\n                <div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/zh\/%e5%a6%82%e4%bd%95%e5%9c%a8%e5%89%8d30%e5%a4%a9%e5%86%85%e6%97%a0%e9%9c%80%e6%8a%95%e6%94%be%e5%b9%bf%e5%91%8a%e6%8e%a8%e5%b9%bf%e6%b0%b4%e7%96%97%e4%b8%ad%e5%bf%83\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">\u5982\u4f55\u5728\u524d30\u5929\u5185\u63a8\u5e7f\u6c34\u7597\u4e2d\u5fc3\u800c\u65e0\u9700\u6295\u653e\u5e7f\u544a<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/zh\/%e6%b2%b3%e5%86%85%e8%90%a5%e9%94%80%e8%af%be%e7%a8%8b%ef%bc%8c%e6%8f%90%e5%8d%87%e6%8a%80%e8%83%bd%e7%9a%84%e6%9c%80%e4%bd%b3%e9%80%89%e6%8b%a9\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">\u6cb3\u5185\u5e02\u573a\u8425\u9500\u8bfe\u7a0b\uff1a\u63d0\u5347\u6280\u80fd\u7684\u6700\u4f73\u9009\u62e9<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/zh\/google-gemini-%e7%8e%b0%e5%9c%a8%e6%94%af%e6%8c%81%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%ef%bc%8c%e5%80%bc%e5%be%97%e5%85%b3%e6%b3%a8\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">\u8c37\u6b4cGemini\u65b0\u589e\u652f\u6301\u97f3\u9891\u6587\u4ef6\uff0c\u503c\u5f97\u5173\u6ce8<\/span><\/a><\/div>                <\/div>\r\n                <\/div>\r\n<\/div>","protected":false},"excerpt":{"rendered":"<p>B\u1ea1n mu\u1ed1n ch\u1ea1y Supabase (Firebase Alternative) tr\u00ean VPS Fastpanel nh\u01b0ng g\u1eb7p l\u1ed7i xung \u0111\u1ed9t c\u1ed5ng 8000\/3000? B\u00e0i vi\u1ebft n\u00e0y h\u01b0\u1edbng d\u1eabn chi ti\u1ebft c\u00e1ch deploy Supabase v\u1edbi Docker, t\u00e1ch ri\u00eang domain cho API v\u00e0 Studio Dashboard \u0111\u1ec3 h\u1ec7 th\u1ed1ng ho\u1ea1t \u0111\u1ed9ng \u1ed5n \u0111\u1ecbnh nh\u1ea5t.Supabase l\u00e0 m\u1ed9t gi\u1ea3i ph\u00e1p thay th\u1ebf m\u00e3 ngu\u1ed3n m\u1edf tuy\u1ec7t v\u1eddi [&hellip;]<\/p>","protected":false},"author":1,"featured_media":34308,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,1621],"tags":[],"class_list":["post-34307","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","category-fastpanel"],"acf":[],"rankmath_keywords":{"primary":"","secondary":[""]},"yoast_keywords":{"primary":"","secondary":[]},"yoast_focuskw":"","rankmath_focuskw":"","seo_keywords":{"primary":"","secondary":[""]},"_links":{"self":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/posts\/34307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/comments?post=34307"}],"version-history":[{"count":2,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/posts\/34307\/revisions"}],"predecessor-version":[{"id":34310,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/posts\/34307\/revisions\/34310"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/media\/34308"}],"wp:attachment":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/media?parent=34307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/categories?post=34307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/tags?post=34307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}