{"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 class=\"wp-block-paragraph\">\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 class=\"wp-block-paragraph\">\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 data-no-translation=\"\">portainer.dps.media<\/code>) \u800c\u65e0\u9700\u8f93\u5165 <code data-no-translation=\"\">IP:9443<\/code>?<\/p><p class=\"wp-block-paragraph\">\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 class=\"wp-block-paragraph\">\u9996\u5148\uff0c\u60a8\u9700\u8981\u4f7f\u7528 <code data-no-translation=\"\">root<\/code> \u6743\u9650 SSH \u767b\u5f55 VPS \u5e76\u8fd0\u884c\u5b98\u65b9 Docker \u5b89\u88c5\u547d\u4ee4\u3002.<\/p><p class=\"wp-block-paragraph\"><strong>1. \u66f4\u65b0\u7cfb\u7edf\uff1a<\/strong><\/p><p class=\"wp-block-paragraph\">Bash<\/p><pre class=\"wp-block-code\" data-no-translation=\"\"><code data-no-translation=\"\">apt update && apt upgrade -y\n<\/code><\/pre><p class=\"wp-block-paragraph\"><strong>2. \u5b89\u88c5 Docker\uff08\u81ea\u52a8\u811a\u672c\uff09\uff1a<\/strong><\/p><p class=\"wp-block-paragraph\">Bash<\/p><pre class=\"wp-block-code\" data-no-translation=\"\"><code data-no-translation=\"\">curl -fsSL https:\/\/get.docker.com -o get-docker.sh\nsh get-docker.sh\n<\/code><\/pre><p class=\"wp-block-paragraph\">\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u68c0\u67e5 Docker \u662f\u5426\u5df2\u8fd0\u884c <code data-no-translation=\"\">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 class=\"wp-block-paragraph\">\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 class=\"wp-block-paragraph\"><strong>1. \u521b\u5efa\u6570\u636e\u5b58\u50a8\u7a7a\u95f4\uff08Volume\uff09\uff1a<\/strong><\/p><p class=\"wp-block-paragraph\">Bash<\/p><pre class=\"wp-block-code\" data-no-translation=\"\"><code data-no-translation=\"\">docker volume create portainer_data\n<\/code><\/pre><p class=\"wp-block-paragraph\"><strong>2. \u8fd0\u884c Portainer \u5bb9\u5668\uff1a<\/strong><\/p><p class=\"wp-block-paragraph\">Bash<\/p><pre class=\"wp-block-code\" data-no-translation=\"\"><code data-no-translation=\"\">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 class=\"wp-block-paragraph\">\u6b64\u65f6\uff0cPortainer \u5df2\u8fd0\u884c\u5728\u7aef\u53e3 <code data-no-translation=\"\">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 class=\"wp-block-paragraph\">\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 data-no-translation=\"\">ptn266.dpsmedia.vn<\/code>).<\/li>\n\n\n\n<li><strong>\u4e0a\u6e38\u5730\u5740 (Target)\uff1a<\/strong> \u8f93\u5165 <code data-no-translation=\"\">https:\/\/127.0.0.1:9443<\/code><\/li>\n\n\n\n<li><em>\u6ce8\u610f\uff1a\u5fc5\u987b\u6709 <code data-no-translation=\"\">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 class=\"wp-block-paragraph\">\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 class=\"wp-block-paragraph\">\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 class=\"wp-block-paragraph\">\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 class=\"wp-block-paragraph\"><em>\u201cYour Portainer instance timed out for security purposes\u2026\u201d<\/em><\/p>\n<\/blockquote><p class=\"wp-block-paragraph\">\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 class=\"wp-block-paragraph\"><strong>\u89e3\u51b3\u65b9\u6cd5\uff1a<\/strong> \u8fd4\u56de SSH \u5e76\u8fd0\u884c\u91cd\u542f\u547d\u4ee4\uff1a<\/p><p class=\"wp-block-paragraph\">Bash<\/p><pre class=\"wp-block-code\" data-no-translation=\"\"><code data-no-translation=\"\">docker restart portainer\n<\/code><\/pre><p class=\"wp-block-paragraph\">\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 class=\"wp-block-paragraph\">\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 class=\"wp-block-paragraph\"><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 class=\"wp-block-paragraph\">\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 class=\"wp-block-paragraph\"><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>","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":0,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/posts\/34281\/revisions"}],"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}]}}