{"id":34281,"date":"2025-12-06T21:40:53","date_gmt":"2025-12-06T14:40:53","guid":{"rendered":"https:\/\/dps.media\/?p=34281"},"modified":"2025-12-06T21:40:55","modified_gmt":"2025-12-06T14:40:55","slug":"huong-dan-cai-dat-docker-portainer-tren-fastpanel-su-dung-reverse-proxy-ubuntu-24-04","status":"publish","type":"post","link":"https:\/\/dps.media\/zh\/huong-dan-cai-dat-docker-portainer-tren-fastpanel-su-dung-reverse-proxy-ubuntu-24-04\/","title":{"rendered":"\u5728 Fastpanel \u4e0a\u4f7f\u7528 Reverse Proxy \u5b89\u88c5 Docker &amp; Portainer \u7684\u6307\u5357 (Ubuntu 24.04)"},"content":{"rendered":"<?xml encoding=\"utf-8\" ?><p>\u5982\u679c\u60a8\u6b63\u5728\u4f7f\u7528 <strong>Fastpanel<\/strong> \u8981\u7ba1\u7406 VPS\uff0c\u60a8\u4f1a\u53d1\u73b0\u5b83\u5bf9\u4e8e PHP\/WordPress \u7f51\u7ad9\u975e\u5e38\u51fa\u8272\u3002\u7136\u800c\uff0c\u5982\u679c\u60a8\u60f3\u8fd0\u884c\u5176\u4ed6\u73b0\u4ee3\u5e94\u7528\u7a0b\u5e8f\uff08\u5982 n8n\u3001Nextcloud\u3001Node.js\u2026\uff09\uff0c\u90a3\u4e48 <strong>Docker<\/strong> \u662f\u6700\u4f73\u89e3\u51b3\u65b9\u6848\u3002.<\/p><p>\u552f\u4e00\u7684\u95ee\u9898\u662f Fastpanel \u5df2\u5360\u7528 80 \u548c 443 \u7aef\u53e3\u3002\u90a3\u4e48\u5982\u4f55\u4f7f\u7528\u6807\u51c6 SSL \u57df\u540d\u8bbf\u95ee Docker \u7ba1\u7406\u754c\u9762 (Portainer)\uff08\u4f8b\u5982\uff1a <code>portainer.dps.media<\/code>) \u800c\u65e0\u9700\u8f93\u5165 <code>IP:9443<\/code>?<\/p><p>\u672c\u6587\u5c06\u4ece A \u5230 Z \u6307\u5bfc\u60a8\u5728 Ubuntu 24.04 \u5e73\u53f0\u4e0a\u5b89\u88c5 Docker\u3001Portainer \u5e76\u914d\u7f6e <strong>Fastpanel \u4e0a\u7684 Reverse Proxy<\/strong> (\u539f\u751f)\u3002.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h2 class=\"wp-block-heading\">\u6b65\u9aa4 1: \u5728 VPS \u4e0a\u5b89\u88c5 Docker<\/h2><p>\u9996\u5148\uff0c\u60a8\u9700\u8981\u4f7f\u7528 <code>root<\/code> \u6743\u9650 SSH \u767b\u5f55 VPS \u5e76\u8fd0\u884c\u5b98\u65b9 Docker \u5b89\u88c5\u547d\u4ee4\u3002.<\/p><p><strong>1. \u66f4\u65b0\u7cfb\u7edf\uff1a<\/strong><\/p><p>Bash<\/p><pre class=\"wp-block-code\"><code>apt update &amp;&amp; apt upgrade -y\n<\/code><\/pre><p><strong>2. \u5b89\u88c5 Docker\uff08\u81ea\u52a8\u811a\u672c\uff09\uff1a<\/strong><\/p><p>Bash<\/p><pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/get.docker.com -o get-docker.sh\nsh get-docker.sh\n<\/code><\/pre><p>\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u68c0\u67e5 Docker \u662f\u5426\u5df2\u8fd0\u884c <code>docker -v<\/code>.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h2 class=\"wp-block-heading\">\u6b65\u9aa4 2: \u5b89\u88c5 Portainer (Docker \u7ba1\u7406\u754c\u9762)<\/h2><p>\u4e0e\u5176\u624b\u52a8\u8f93\u5165\u547d\u4ee4\uff0c\u6211\u4eec\u5c06\u5b89\u88c5 <strong>Portainer CE<\/strong> \u6765\u901a\u8fc7\u76f4\u89c2\u7684 Web \u754c\u9762\u7ba1\u7406\u5bb9\u5668\u3002.<\/p><p><strong>1. \u521b\u5efa\u6570\u636e\u5b58\u50a8\u7a7a\u95f4\uff08Volume\uff09\uff1a<\/strong><\/p><p>Bash<\/p><pre class=\"wp-block-code\"><code>docker volume create portainer_data\n<\/code><\/pre><p><strong>2. \u8fd0\u884c Portainer \u5bb9\u5668\uff1a<\/strong><\/p><p>Bash<\/p><pre class=\"wp-block-code\"><code>docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v \/var\/run\/docker.sock:\/var\/run\/docker.sock -v portainer_data:\/data portainer\/portainer-ce:latest\n<\/code><\/pre><p>\u6b64\u65f6\uff0cPortainer \u5df2\u8fd0\u884c\u5728\u7aef\u53e3 <code>9443<\/code> (HTTPS)\u3002.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h2 class=\"wp-block-heading\">\u6b65\u9aa4 3: \u5728 Fastpanel \u4e0a\u914d\u7f6e Reverse Proxy<\/h2><p>\u8fd9\u662f\u5c06 Portainer \u901a\u8fc7\u60a8\u7684\u57df\u540d\u516c\u5f00\u5230\u4e92\u8054\u7f51\u7684\u6700\u91cd\u8981\u6b65\u9aa4\u3002.<\/p><ol start=\"1\" class=\"wp-block-list\">\n<li>\u767b\u5f55\u5230 <strong>Fastpanel<\/strong>.<\/li>\n\n\n\n<li>\u70b9\u51fb\u6309\u94ae <strong>\u201cCreate Site\u201d<\/strong> (\u521b\u5efa\u7f51\u7ad9).<\/li>\n\n\n\n<li>\u9009\u62e9\u7f51\u7ad9\u7c7b\u578b\u4e3a <strong>\u201cReverse Proxy\u201d<\/strong>.<\/li>\n\n\n\n<li>\u586b\u5199\u4fe1\u606f\uff1a\n<ul class=\"wp-block-list\">\n<li><strong>\u57df\u540d\uff1a<\/strong> \u8f93\u5165\u60a8\u7684\u5b50\u57df\u540d\uff08\u4f8b\u5982\uff1a <code>ptn266.dpsmedia.vn<\/code>).<\/li>\n\n\n\n<li><strong>\u4e0a\u6e38\u5730\u5740 (Target)\uff1a<\/strong> \u8f93\u5165 <code>https:\/\/127.0.0.1:9443<\/code><\/li>\n\n\n\n<li><em>\u6ce8\u610f\uff1a\u5fc5\u987b\u6709 <code>https:\/\/<\/code> \u56e0\u4e3a Portainer \u9ed8\u8ba4\u5b89\u5168\u8fd0\u884c\u3002.<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ol><h3 class=\"wp-block-heading\">\u26a0\ufe0f \u91cd\u8981\u63d0\u793a\uff08\u4e0d\u53ef\u5ffd\u7565\uff09<\/h3><p>\u521b\u5efa\u7f51\u7ad9\u540e\uff0cPortainer \u754c\u9762\u53ef\u80fd\u51fa\u73b0\u663e\u793a\u9519\u8bef\uff08\u767d\u5c4f\u6216\u4e22\u5931\u56fe\u6807\uff09\u3002\u60a8\u9700\u8981\u6309\u4ee5\u4e0b\u65b9\u5f0f\u4fee\u590d\uff1a<\/p><ol start=\"1\" class=\"wp-block-list\">\n<li>\u8fdb\u5165\u521a\u521a\u521b\u5efa\u7684\u7f51\u7ad9\u8bbe\u7f6e (Settings)\u3002.<\/li>\n\n\n\n<li>\u627e\u5230\u9879\u76ee <strong>\u201cStatic Content\u201d<\/strong>.<\/li>\n\n\n\n<li><strong>\u5173\u95ed<\/strong> (\u7981\u7528) \u884c\uff1a <strong>\u201cUse NGINX for static files\u201d<\/strong>.\n<ul class=\"wp-block-list\">\n<li><em>\u539f\u56e0\uff1aFastpanel \u9ed8\u8ba4\u4f1a\u5728\u670d\u52a1\u5668\u786c\u76d8\u4e0a\u67e5\u627e\u56fe\u7247\/css\uff0c\u800c\u4e0d\u662f\u4ece Docker \u5bb9\u5668\u83b7\u53d6\uff0c\u56e0\u6b64\u6211\u4eec\u9700\u8981\u5173\u95ed\u5b83\uff0c\u8ba9\u6240\u6709\u8bf7\u6c42\u90fd\u901a\u8fc7 Docker\u3002.<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ol><p>\u7136\u540e\uff0c\u8fdb\u5165\u9879\u76ee <strong>SSL \u8bc1\u4e66<\/strong> \u5e76\u50cf\u5f80\u5e38\u4e00\u6837\u5b89\u88c5\u514d\u8d39\u7684 Let\u2019s Encrypt SSL\u3002.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h2 class=\"wp-block-heading\">\u7b2c 4 \u6b65\uff1a\u5904\u7406 \u201cInstance timed out\u201d \u9519\u8bef\uff08\u5982\u679c\u9047\u5230\uff09<\/h2><p>\u9996\u6b21\u8bbf\u95ee\u57df\u540d\u65f6\uff0c\u5982\u679c\u60a8\u770b\u5230\u901a\u77e5\uff1a<\/p><blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>\u201cYour Portainer instance timed out for security purposes\u2026\u201d<\/em><\/p>\n<\/blockquote><p>\u522b\u62c5\u5fc3\uff0c\u8fd9\u662f Portainer \u7684\u5b89\u5168\u529f\u80fd\uff0c\u5982\u679c\u60a8\u5728\u5b89\u88c5\u540e 5 \u5206\u949f\u5185\u672a\u521b\u5efa Admin \u8d26\u6237\u3002.<\/p><p><strong>\u89e3\u51b3\u65b9\u6cd5\uff1a<\/strong> \u8fd4\u56de SSH \u5e76\u8fd0\u884c\u91cd\u542f\u547d\u4ee4\uff1a<\/p><p>Bash<\/p><pre class=\"wp-block-code\"><code>docker restart portainer\n<\/code><\/pre><p>\u7136\u540e\u7acb\u5373 F5 \u5237\u65b0\u6d4f\u89c8\u5668\u5e76\u521b\u5efa Admin \u8d26\u6237\u3002.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><h2 class=\"wp-block-heading\">\u603b\u7ed3<\/h2><p>\u5c31\u662f\u8fd9\u6837\uff01\u73b0\u5728\u60a8\u5df2\u7ecf\u62e5\u6709\u4e00\u4e2a <strong>Fastpanel<\/strong> \u5f3a\u5927\u7684\u7cfb\u7edf\uff0c\u65e2\u80fd\u8fd0\u884c\u4f20\u7edf\u7f51\u9875\uff0c\u53c8\u80fd\u8fd0\u884c\u751f\u6001\u7cfb\u7edf <strong>Docker<\/strong> \u901a\u8fc7\u754c\u9762 <strong>Portainer<\/strong> \u6781\u5176\u4e13\u4e1a\u3002.<\/p><p><strong>\u6b64\u65b9\u6cd5\u7684\u4f18\u70b9\uff1a<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u65e0\u9700\u989d\u5916\u5b89\u88c5 Nginx Proxy Manager\uff08\u56e0\u4e3a Fastpanel \u5df2\u5904\u7406\uff09\u3002.<\/li>\n\n\n\n<li>\u5145\u5206\u5229\u7528 Fastpanel \u7684\u514d\u8d39 SSL \u8bc1\u4e66\u3002.<\/li>\n\n\n\n<li>\u66f4\u5b89\u5168\uff0c\u56e0\u4e3a\u65e0\u9700\u5c06\u7aef\u53e3 9443 \u66b4\u9732\u5728\u9632\u706b\u5899\u5916\u3002.<\/li>\n<\/ul><p>\u795d\u5404\u4f4d\u6210\u529f\uff01\u5982\u6709\u7591\u95ee\uff0c\u8bf7\u5728\u4e0b\u65b9\u7559\u8a00\u3002.<\/p><hr class=\"wp-block-separator has-alpha-channel-opacity\"><p><em>\u6765\u6e90\uff1a\u603b\u7ed3\u81ea\u5b9e\u9645\u7ecf\u9a8c\u7684 <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=\"587\">dps.media<\/a><\/em><\/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\/%e6%95%b4%e4%bd%93%e4%bc%a0%e6%92%ad%e5%b9%bf%e5%91%8a%e5%85%ac%e5%8f%b8%e7%9a%84%e7%a5%9e%e5%a5%87%e5%8a%9b%e9%87%8f\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">\u7efc\u5408\u4f20\u64ad\u5e7f\u544a\u516c\u53f8\u7684\u201c\u795e\u5947\u201d\u529b\u91cf<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/zh\/29381-2\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\"><\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/zh\/2025%e5%b9%b4%e6%98%a5%e8%8a%82%e6%94%be%e5%81%87%e9%80%9a%e7%9f%a5\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">2025\u5e74\u6625\u8282\u653e\u5047\u901a\u77e5<\/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%9b%be%e5%bd%a2%e8%ae%be%e8%ae%a1%e4%b8%ad%e7%9a%84%e5%90%84%e7%a7%8d%e5%b8%83%e5%b1%80\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">\u56fe\u5f62\u8bbe\u8ba1\u4e2d\u7684\u5e03\u5c40\u7c7b\u578b<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/zh\/%e6%a3%80%e6%9f%a5%e5%86%9c%e4%b8%9a%e9%93%b6%e8%a1%8c%e4%ba%8c%e7%bb%b4%e7%a0%81%e5%b9%b6%e4%bd%bf%e7%94%a8%e5%85%8d%e8%b4%b9%e7%94%9f%e6%88%90%e5%99%a8%e5%88%9b%e5%bb%ba%e5%85%8d%e8%b4%b9%e4%ba%8c\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">\u68c0\u67e5\u519c\u4e1a\u94f6\u884c\u4e8c\u7ef4\u7801\u5e76\u4f7f\u7528Generator Gratis\u514d\u8d39\u751f\u6210\u4e8c\u7ef4\u7801<\/span><\/a><\/div><div class=\"lwrp-list-item\"><a href=\"https:\/\/dps.media\/zh\/%e5%85%8d%e8%b4%b9%e7%9b%ae%e5%bd%95%e8%ae%be%e8%ae%a1%e8%bd%af%e4%bb%b6%ef%bc%8c%e5%88%9b%e5%bb%ba%e6%bc%82%e4%ba%ae%e7%9a%84%e7%9b%ae%e5%bd%95%e8%80%8c%e6%97%a0%e9%9c%80%e8%b4%b9%e7%94%a8\/\" class=\"lwrp-list-link\"><span class=\"lwrp-list-link-title-text\">\u514d\u8d39\u76ee\u5f55\u8bbe\u8ba1\u8f6f\u4ef6\u2014\u2014\u65e0\u9700\u8d39\u7528\u5373\u53ef\u521b\u5efa\u7cbe\u7f8e\u76ee\u5f55<\/span><\/a><\/div>                <\/div>\r\n                <\/div>\r\n<\/div>","protected":false},"excerpt":{"rendered":"<p>N\u1ebfu b\u1ea1n \u0111ang s\u1eed d\u1ee5ng Fastpanel \u0111\u1ec3 qu\u1ea3n l\u00fd VPS, b\u1ea1n s\u1ebd th\u1ea5y n\u00f3 r\u1ea5t tuy\u1ec7t v\u1eddi cho c\u00e1c website PHP\/WordPress. Tuy nhi\u00ean, n\u1ebfu b\u1ea1n mu\u1ed1n ch\u1ea1y th\u00eam c\u00e1c \u1ee9ng d\u1ee5ng hi\u1ec7n \u0111\u1ea1i kh\u00e1c (nh\u01b0 n8n, Nextcloud, Node.js\u2026) th\u00ec Docker l\u00e0 gi\u1ea3i ph\u00e1p t\u1ed1t nh\u1ea5t.V\u1ea5n \u0111\u1ec1 duy nh\u1ea5t l\u00e0 Fastpanel \u0111\u00e3 chi\u1ebfm d\u1ee5ng c\u1ed5ng 80 [&hellip;]<\/p>","protected":false},"author":1,"featured_media":34282,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,1621],"tags":[],"class_list":["post-34281","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\/34281","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=34281"}],"version-history":[{"count":2,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/posts\/34281\/revisions"}],"predecessor-version":[{"id":34284,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/posts\/34281\/revisions\/34284"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/media\/34282"}],"wp:attachment":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/media?parent=34281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/categories?post=34281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/tags?post=34281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}