{"id":1695,"date":"2026-08-17T18:57:35","date_gmt":"2026-08-17T10:57:35","guid":{"rendered":"https:\/\/skypray.synology.me\/blog\/?p=1695"},"modified":"2026-08-19T08:36:59","modified_gmt":"2026-08-19T00:36:59","slug":"synology-nas-docker-caddy-umami-guide","status":"publish","type":"post","link":"https:\/\/skypray.synology.me\/blog\/computer\/synology-nas-docker-caddy-umami-guide\/","title":{"rendered":"Synology NAS \u81ea\u67b6\u7db2\u7ad9\u5b8c\u6574\u6559\u5b78\uff1aWeb Station\u3001Docker\u3001Caddy \u53cd\u5411\u4ee3\u7406\u8207 Umami \u5be6\u6230"},"content":{"rendered":"<p>Synology NAS \u9664\u4e86\u62ff\u4f86\u5099\u4efd\u8cc7\u6599\u3001\u5b58\u653e\u7167\u7247\u8207\u5f71\u97f3\uff0c\u5176\u5be6\u4e5f\u53ef\u4ee5\u6210\u70ba\u4e00\u53f0\u76f8\u7576\u5b8c\u6574\u7684\u500b\u4eba Web Server\u3002\u6211\u81ea\u5df1\u4e00\u8def\u5f9e\u8f03\u55ae\u7d14\u7684 Boardgame \u975c\u614b\u7db2\u7ad9\uff0c\u5f8c\u4f86\u589e\u52a0 PhotoGallery \u651d\u5f71\u76f8\u7c3f\u3001WordPress Blog\uff0c\u4ee5\u53ca\u5176\u4ed6\u81ea\u884c\u958b\u767c\u7684 Web App\uff0c\u6700\u5f8c\u518d\u52a0\u5165 Umami \u505a\u7db2\u7ad9\u6d41\u91cf\u5206\u6790\u3002\u771f\u6b63\u958b\u59cb\u540c\u6642\u7dad\u8b77\u591a\u500b\u7db2\u7ad9\u5f8c\uff0c\u6211\u624d\u767c\u73fe NAS \u67b6\u7ad9\u6700\u91cd\u8981\u7684\u4e26\u4e0d\u662f\u80cc Docker \u6307\u4ee4\uff0c\u800c\u662f\u7406\u89e3<strong>Web Station\u3001Docker\u3001Reverse Proxy\u3001Caddy\u3001HTTPS \u8207 Umami<\/strong>\u5404\u81ea\u5728\u6574\u500b\u67b6\u69cb\u4e2d\u626e\u6f14\u4ec0\u9ebc\u89d2\u8272\u3002\u9019\u7bc7\u6587\u7ae0\u6703\u4ee5\u5be6\u969b\u67b6\u7ad9\u7d93\u9a57\u70ba\u57fa\u790e\uff0c\u4ecb\u7d39 Synology NAS \u5982\u4f55\u540c\u6642\u627f\u8f09\u591a\u500b\u7db2\u7ad9\uff0c\u4ee5\u53ca\u70ba\u4ec0\u9ebc\u5728\u4f7f\u7528<code>example.com\/blog\/<\/code> \u9019\u985e\u300c\u5b50\u76ee\u9304\u7db2\u5740\u300d\u6642\uff0c\u6703\u9700\u8981\u984d\u5916\u7684 Path Routing\u3002<\/p>\n<p>\u70ba\u4e86\u8cc7\u8a0a\u5b89\u5168\uff0c\u672c\u6587\u4e0d\u516c\u958b\u5be6\u969b Port\u3001Container \u540d\u7a31\u3001\u5167\u90e8 IP\u3001\u5b8c\u6574 Caddyfile \u6216\u8cc7\u6599\u5eab\u4f4d\u7f6e\uff0c\u800c\u662f\u628a\u91cd\u9ede\u653e\u5728\u67b6\u69cb\u3001\u539f\u7406\u3001\u64cd\u4f5c\u6d41\u7a0b\u8207\u9664\u932f\u89c0\u5ff5\uff0c\u73fe\u5728\u6709AI\u53ef\u4ee5\u5e6b\u5fd9\u67b6\u7ad9\uff0c\u5176\u5be6\u9019\u4e9b\u8a2d\u5b9a\u90fd\u53ef\u4ee5\u8acbAI\u5e6b\u5fd9\u898f\u756b\uff0c\u4f46\u662f\u5fc3\u88e1\u9084\u662f\u8981\u7a0d\u6709\u6982\u5ff5\u624d\u80fd\u8b93AI\u66f4\u5feb\u5e6b\u4f60\u5b8c\u6210\u4f60\u60f3\u8981\u7684\u5de5\u4f5c\u3002<\/p>\n<nav aria-label=\"\u6587\u7ae0\u76ee\u9304\">\n<h2>\u76ee\u9304<\/h2>\n<ol>\n<li><a href=\"#architecture\">Synology NAS \u591a\u7db2\u7ad9\u67b6\u69cb\u662f\u600e\u9ebc\u904b\u4f5c\u7684\uff1f<\/a><\/li>\n<li><a href=\"#webstation-docker\">Web Station \u8207 Docker \u5206\u5225\u9069\u5408\u4ec0\u9ebc\u7db2\u7ad9\uff1f<\/a><\/li>\n<li><a href=\"#reverse-proxy\">Reverse Proxy \u662f\u4ec0\u9ebc\uff1f\u70ba\u4ec0\u9ebc\u67b6\u591a\u500b\u7db2\u7ad9\u6703\u9700\u8981\uff1f<\/a><\/li>\n<li><a href=\"#why-caddy\">\u70ba\u4ec0\u9ebc blog.example.com \u901a\u5e38\u4e0d\u7528 Caddy\uff0c\u4f46 example.com\/blog\/ \u6703\u9700\u8981\uff1f<\/a><\/li>\n<li><a href=\"#caddy\">Caddy \u8207 Caddyfile \u5728\u6574\u500b\u67b6\u69cb\u4e2d\u8ca0\u8cac\u4ec0\u9ebc\uff1f<\/a><\/li>\n<li><a href=\"#multi-sites\">WordPress\u3001PhotoGallery \u8207 Boardgame \u5982\u4f55\u5171\u5b58\u5728\u540c\u4e00\u53f0 NAS\uff1f<\/a><\/li>\n<li><a href=\"#umami\">Umami\uff1a\u5728\u81ea\u5df1\u7684 NAS \u5efa\u7acb\u7db2\u7ad9\u6d41\u91cf\u5206\u6790<\/a><\/li>\n<li><a href=\"#subpath\">\u5b50\u76ee\u9304\u7db2\u7ad9\u6700\u5bb9\u6613\u9047\u5230\u7684\u554f\u984c<\/a><\/li>\n<li><a href=\"#security\">\u66f4\u65b0\u3001\u5099\u4efd\u8207\u8cc7\u8a0a\u5b89\u5168\u6ce8\u610f\u4e8b\u9805<\/a><\/li>\n<li><a href=\"#errors\">\u5e38\u898b 500\u3001502 \u932f\u8aa4\u8207\u9664\u932f\u89c0\u5ff5<\/a><\/li>\n<li><a href=\"#faq\">FAQ\uff1aSynology NAS \u81ea\u67b6\u7db2\u7ad9\u5e38\u898b\u554f\u984c<\/a><\/li>\n<\/ol>\n<\/nav>\n<section id=\"architecture\">\n<h2>\u4e00\u3001Synology NAS \u591a\u7db2\u7ad9\u67b6\u69cb\u662f\u600e\u9ebc\u904b\u4f5c\u7684\uff1f<\/h2>\n<p>\u5982\u679c\u53ea\u662f\u67b6\u4e00\u500b\u7db2\u7ad9\uff0c\u4e8b\u60c5\u5176\u5be6\u5f88\u7c21\u55ae\uff1b\u4f46\u7576\u540c\u4e00\u53f0 NAS \u4e0a\u958b\u59cb\u51fa\u73fe Boardgame\u3001PhotoGallery\u3001Blog \u8207\u5176\u4ed6 Web App\uff0c\u5c31\u9700\u8981\u628a\u300c\u4f7f\u7528\u8005\u770b\u5230\u7684\u7db2\u5740\u300d\u8207\u300cNAS \u88e1\u771f\u6b63\u57f7\u884c\u7db2\u7ad9\u7684\u4f4d\u7f6e\u300d\u5206\u958b\u4f86\u770b\u3002<\/p>\n<pre><code>Internet\n   \u2193\n\u7db2\u57df \/ DDNS\n   \u2193\nSynology NAS\n   \u2193\nHTTPS \/ Reverse Proxy\n   \u2193\nCaddy\uff08\u9700\u8981\u5b50\u76ee\u9304\u5206\u6d41\u6642\uff09\n   \u2193\nWeb Station \/ Docker\n   \u2193\n\u5404\u500b\u7db2\u7ad9\u8207\u8cc7\u6599\u5eab<\/code><\/pre>\n<p>\u4f8b\u5982\u4f7f\u7528\u8005\u53ef\u80fd\u53ea\u770b\u5230 <code>example.com\/boardgame\/<\/code>\u3001<code>example.com\/photogallery\/<\/code>\u8207 <code>example.com\/blog\/<\/code>\uff0c\u4f46 NAS \u88e1\u4e09\u500b\u7db2\u7ad9\u5176\u5be6\u53ef\u4ee5\u5b8c\u5168\u4e0d\u540c\uff1aBoardgame \u53ef\u80fd\u53ea\u662f\u7531<br \/>\nWeb Station \u63d0\u4f9b\u7684\u975c\u614b HTML\uff0cPhotoGallery \u662f\u81ea\u884c\u958b\u767c\u7684 Docker Web App\uff0c\u800c Blog \u5247\u662f<br \/>\nWordPress \u642d\u914d\u8cc7\u6599\u5eab\u3002<\/p>\n<p>\u4e5f\u5c31\u662f\u8aaa\uff0c<strong>\u516c\u958b\u7db2\u5740\u53ea\u662f\u5165\u53e3\uff0c\u7db2\u7ad9\u771f\u6b63\u57f7\u884c\u7684\u4f4d\u7f6e\u53ef\u4ee5\u5b8c\u5168\u4e0d\u540c\u3002<\/strong>Reverse Proxy \u8207 Caddy \u7684\u5de5\u4f5c\uff0c\u5c31\u662f\u8ca0\u8cac\u628a\u5916\u9762\u7684\u7db2\u5740\u6b63\u78ba\u9001\u5230\u88e1\u9762\u7684\u670d\u52d9\u3002<\/p>\n<\/section>\n<section id=\"webstation-docker\">\n<h2>\u4e8c\u3001Web Station \u8207 Docker \u5206\u5225\u9069\u5408\u4ec0\u9ebc\u7db2\u7ad9\uff1f<\/h2>\n<p>Synology Web Station \u5f88\u9069\u5408\u8655\u7406\u8f03\u55ae\u7d14\u7684\u7db2\u7ad9\uff0c\u4f8b\u5982 HTML\u3001CSS\u3001JavaScript\u3001\u5716\u7247\u8207\u5176\u4ed6\u975c\u614b\u5167\u5bb9\u3002\u50cf Boardgame \u9019\u985e\u4ee5\u524d\u7aef\u70ba\u4e3b\u7684\u7db2\u7ad9\uff0c\u5c31\u53ef\u4ee5\u76f4\u63a5\u7531 Web Station \u63d0\u4f9b\uff0c\u4e0d\u4e00\u5b9a\u9700\u8981\u70ba\u4e86\u300c\u5168\u90e8 Docker \u5316\u300d\u800c\u984d\u5916\u589e\u52a0 Container\u3002<\/p>\n<p>\u4f46 PhotoGallery \u5c31\u5b8c\u5168\u4e0d\u540c\u3002\u76f8\u7c3f\u9664\u4e86\u986f\u793a\u7167\u7247\u4e4b\u5916\uff0c\u9084\u53ef\u80fd\u5305\u542b\u8cc7\u6599\u5eab\u3001EXIF\u3001GPS\u3001AI API\u3001\u5716\u7247\u8655\u7406\u3001\u641c\u5c0b\u8207\u7ba1\u7406\u5f8c\u53f0\uff0c\u672c\u8cea\u4e0a\u5df2\u7d93\u662f\u4e00\u5957\u771f\u6b63\u7684 Web Application\uff0c\u56e0\u6b64\u6bd4\u8f03\u9069\u5408\u653e\u5728 Docker \u4e2d\u57f7\u884c\u3002<\/p>\n<p>WordPress \u4e5f\u662f\u985e\u4f3c\u6982\u5ff5\uff0c\u5b83\u9664\u4e86\u7db2\u9801\u7a0b\u5f0f\u4e4b\u5916\uff0c\u901a\u5e38\u9084\u9700\u8981 PHP\u3001Web Server \u8207\u8cc7\u6599\u5eab\u3002\u4f7f\u7528 Docker \u5c07\u4e0d\u540c\u5143\u4ef6\u5f7c\u6b64\u9694\u96e2\uff0c\u901a\u5e38\u6bd4\u628a\u6240\u6709\u5957\u4ef6\u76f4\u63a5\u5b89\u88dd\u5728 NAS \u7cfb\u7d71\u4e2d\u66f4\u5bb9\u6613\u7dad\u8b77\u3002<\/p>\n<p><strong>\u7c21\u55ae\u4f86\u8aaa\uff1aWeb Station \u9069\u5408\u63d0\u4f9b\u7db2\u7ad9\u5167\u5bb9\uff1bDocker \u9069\u5408\u57f7\u884c\u7db2\u7ad9\u7a0b\u5f0f\u3002<\/strong><\/p>\n<\/section>\n<section id=\"reverse-proxy\">\n<h2>\u4e09\u3001Reverse Proxy \u662f\u4ec0\u9ebc\uff1f\u70ba\u4ec0\u9ebc\u67b6\u591a\u500b\u7db2\u7ad9\u6703\u9700\u8981\uff1f<\/h2>\n<p>Reverse Proxy \u4e2d\u6587\u53eb\u300c\u53cd\u5411\u4ee3\u7406\u300d\u3002\u540d\u7a31\u770b\u8d77\u4f86\u5f88\u8907\u96dc\uff0c\u4f46\u5176\u5be6\u53ef\u4ee5\u628a\u5b83\u60f3\u50cf\u6210\u7db2\u7ad9\u5165\u53e3\u7684\u6ac3\u53f0\u3002\u5916\u9762\u7684\u4f7f\u7528\u8005\u53ea\u9700\u8981\u77e5\u9053\u7db2\u7ad9\u7684\u516c\u958b\u7db2\u5740\uff0c\u81f3\u65bc\u8acb\u6c42\u9032\u5165 NAS \u5f8c\u61c9\u8a72\u9001\u5230\u54ea\u4e00\u500b Web Application\uff0c\u5247\u7531 Reverse Proxy \u8ca0\u8cac\u5224\u65b7\u8207\u8f49\u9001\u3002<\/p>\n<p>\u4f7f\u7528 Reverse Proxy \u7684\u597d\u8655\u5305\u62ec\u7d71\u4e00 HTTPS\u3001\u7d71\u4e00\u7db2\u57df\u3001\u7ba1\u7406\u591a\u500b\u7db2\u7ad9\uff0c\u4ee5\u53ca\u907f\u514d\u8b93\u6bcf\u4e00\u500b Docker\u670d\u52d9\u90fd\u76f4\u63a5\u9762\u5411 Internet\u3002Synology DSM \u672c\u8eab\u5c31\u6709 Reverse Proxy \u529f\u80fd\uff0c\u56e0\u6b64\u5982\u679c\u7db2\u7ad9\u67b6\u69cb\u55ae\u7d14\uff0c\u4e26\u4e0d\u662f\u4e00\u5b9a\u9700\u8981\u984d\u5916\u5b89\u88dd Caddy\u3002<\/p>\n<\/section>\n<section id=\"why-caddy\">\n<h2>\u56db\u3001\u70ba\u4ec0\u9ebc blog.example.com \u901a\u5e38\u4e0d\u7528 Caddy\uff0c\u4f46 example.com\/blog\/ \u6703\u9700\u8981\uff1f<\/h2>\n<p>\u9019\u5176\u5be6\u5c31\u662f\u6211\u5f8c\u4f86\u52a0\u5165 Caddy \u7684\u4e3b\u8981\u539f\u56e0\u3002\u5047\u8a2d\u6709\u4e09\u500b\u7db2\u7ad9\uff1a<\/p>\n<pre><code>blog.example.com\nphoto.example.com\nboardgame.example.com<\/code><\/pre>\n<p>\u9019\u7a2e\u662f<strong>\u5b50\u7db2\u57df\uff08Subdomain\uff09\u67b6\u69cb<\/strong>\u3002\u6bcf\u4e00\u500b\u7db2\u7ad9\u90fd\u6709\u4e0d\u540c Hostname\uff0c\u56e0\u6b64 Synology Reverse Proxy \u5f88\u5bb9\u6613\u4f9d\u7167\u7db2\u57df\u540d\u7a31\u5224\u65b7\u61c9\u8a72\u628a\u6d41\u91cf\u9001\u5230\u54ea\u4e00\u500b\u7db2\u7ad9\u3002\u5728\u9019\u7a2e\u60c5\u6cc1\u4e0b\uff0cDSM \u672c\u8eab\u7684Reverse Proxy \u901a\u5e38\u5c31\u5df2\u7d93\u5f88\u597d\u7528\uff0c\u6c92\u6709\u5fc5\u8981\u70ba\u4e86\u5206\u6d41\u800c\u984d\u5916\u52a0\u5165 Caddy\u3002<\/p>\n<p>\u4f46\u5982\u679c\u5e0c\u671b\u7db2\u7ad9\u8b8a\u6210\uff1a<\/p>\n<pre><code>example.com\/blog\/\nexample.com\/photogallery\/\nexample.com\/boardgame\/<\/code><\/pre>\n<p>\u9019\u7a2e\u5247\u662f<strong>\u5b50\u76ee\u9304\uff0f\u5b50\u8def\u5f91\uff08Subpath\uff09\u67b6\u69cb<\/strong>\u3002\u4e09\u500b\u7db2\u7ad9\u7684 Domain \u5b8c\u5168\u4e00\u6a23\uff0c\u5dee\u5225\u53ea\u5269\u4e0b\u7db2\u5740\u5f8c\u9762\u7684<code>\/blog\/<\/code>\u3001<code>\/photogallery\/<\/code>\u3001<code>\/boardgame\/<\/code>\u3002\u6b64\u6642\u5c31\u9700\u8981\u66f4\u65b9\u4fbf\u5730\u4f9d\u7167 URL Path \u9032\u884c\u5206\u6d41\u3002<\/p>\n<pre><code>example.com\n   \u2193\n\u4f9d URL Path \u5224\u65b7\n   \u251c\u2500 \/blog\/          \u2192 WordPress\n   \u251c\u2500 \/photogallery\/  \u2192 PhotoGallery\n   \u2514\u2500 \/boardgame\/     \u2192 Boardgame<\/code><\/pre>\n<p>\u66f4\u7cbe\u78ba\u5730\u8aaa\uff0c\u4e26\u4e0d\u662f\u300c\u53ea\u6709 Caddy \u624d\u80fd\u505a\u5230\u300d\uff0c\u800c\u662f\u7576\u7db2\u7ad9\u5927\u91cf\u4f7f\u7528 <code>example.com\/xxx\/<\/code>\u9019\u7a2e\u67b6\u69cb\u6642\uff0c\u9700\u8981\u8655\u7406 Path Based Routing\uff0c\u800c Caddy \u5f88\u9069\u5408\u96c6\u4e2d\u7ba1\u7406\u9019\u4e9b\u898f\u5247\u3002<\/p>\n<p><strong>\u56e0\u6b64\u53ef\u4ee5\u7c21\u5316\u6210\u4e00\u53e5\u8a71\uff1a\u5982\u679c\u7db2\u7ad9\u4f7f\u7528 <code>blog.example.com<\/code>\uff0cSynology Reverse Proxy\u901a\u5e38\u5c31\u5920\uff1b\u5982\u679c\u5e0c\u671b\u4f7f\u7528 <code>example.com\/blog\/<\/code>\uff0c\u5c31\u9700\u8981\u8655\u7406 URL Path \u5206\u6d41\uff0c\u800c Caddy<br \/>\n\u662f\u4e00\u500b\u5f88\u9069\u5408\u8ca0\u8cac\u9019\u4ef6\u4e8b\u7684\u5de5\u5177\u3002<\/strong><\/p>\n<\/section>\n<section id=\"caddy\">\n<h2>\u4e94\u3001Caddy \u8207 Caddyfile \u5728\u6574\u500b\u67b6\u69cb\u4e2d\u8ca0\u8cac\u4ec0\u9ebc\uff1f<\/h2>\n<p>Caddy \u672c\u8eab\u662f\u4e00\u5957 Web Server \u8207 Reverse Proxy \u8edf\u9ad4\uff0c\u4e5f\u53ef\u4ee5\u8655\u7406 HTTPS\u3001Redirect\u3001Rewrite\u3001Header \u8207\u7db2\u5740\u8def\u7531\u3002\u4e0d\u904e\u5728 Synology NAS \u7684\u591a\u7db2\u7ad9\u67b6\u69cb\u4e2d\uff0c\u53ef\u4ee5\u628a\u5b83\u5b9a\u4f4d\u6210<strong>\u7b2c\u4e8c\u5c64\u7db2\u7ad9\u8def\u7531\u5668<\/strong>\u3002<\/p>\n<pre><code>Internet\n   \u2193\nSynology DSM\n   \u2193\nReverse Proxy \/ HTTPS\n   \u2193\nCaddy\n   \u2193\n\u4f9d\u7db2\u5740\u8def\u5f91\u5206\u6d41\n   \u2193\n\u5404\u500b\u7db2\u7ad9<\/code><\/pre>\n<p>Synology DSM \u53ef\u4ee5\u8ca0\u8cac\u9762\u5c0d Internet\u3001HTTPS \u8207\u6191\u8b49\uff0cCaddy \u5247\u5c08\u9580\u5224\u65b7<br \/>\n<code>\/blog\/<\/code>\u3001<code>\/photogallery\/<\/code>\u3001<code>\/boardgame\/<\/code><br \/>\n\u7b49\u8def\u5f91\u61c9\u8a72\u9001\u5230\u54ea\u88e1\u3002<\/p>\n<p>Caddyfile \u5247\u662f Caddy \u7684\u8a2d\u5b9a\u6a94\uff0c\u7528\u4f86\u63cf\u8ff0\u4e0d\u540c\u7db2\u5740\u3001\u8def\u5f91\u3001\u8f49\u5740\u8207\u8f49\u9001\u898f\u5247\u3002\u56e0\u70ba\u6bcf\u500b\u4eba\u7684 Domain\u3001Docker Network\u3001\u7db2\u7ad9\u67b6\u69cb\u8207 Base Path\u90fd\u4e0d\u76f8\u540c\uff0c\u73fe\u5728\u66f4\u5be6\u969b\u7684\u65b9\u5f0f\uff0c\u662f\u5148\u7406\u89e3\u81ea\u5df1\u8981\u505a Path Based Routing\uff0c\u518d\u5229\u7528 AI \u4f9d\u7167\u81ea\u5df1\u7684\u74b0\u5883\u5354\u52a9\u7522\u751f\u8a2d\u5b9a\u3002<\/p>\n<\/section>\n<section id=\"multi-sites\">\n<h2>\u516d\u3001WordPress\u3001PhotoGallery \u8207 Boardgame \u5982\u4f55\u5171\u5b58\u5728\u540c\u4e00\u53f0 NAS\uff1f<\/h2>\n<p>\u7406\u89e3\u524d\u9762\u7684\u5206\u5de5\u5f8c\uff0c\u5c31\u6703\u767c\u73fe\u540c\u4e00\u53f0 NAS \u540c\u6642\u67b6\u4e0d\u540c\u6280\u8853\u7684\u7db2\u7ad9\u5176\u5be6\u4e26\u4e0d\u5947\u602a\u3002Boardgame \u53ef\u4ee5\u662f\u975c\u614b\u7db2\u7ad9\uff0cPhotoGallery \u53ef\u4ee5\u662f\u81ea\u884c\u958b\u767c\u7684 Web App\uff0cBlog \u5247\u53ef\u4ee5\u4f7f\u7528WordPress\uff0c\u800c\u5916\u90e8\u4f7f\u7528\u8005\u4ecd\u7136\u53ef\u4ee5\u5f9e\u540c\u4e00\u500b\u7db2\u57df\u9032\u5165\u3002<\/p>\n<pre><code>                     Synology NAS\n                          \u2502\n                 Reverse Proxy \/ Caddy\n                          \u2502\n          \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n          \u2502               \u2502               \u2502\n     Boardgame       PhotoGallery        Blog\n          \u2502               \u2502               \u2502\n     Web Station        Docker          Docker\n                                          \u2502\n                                      WordPress\n                                          \u2502\n                                       Database<\/code><\/pre>\n<p>\u9019\u4e5f\u662f Reverse Proxy \u8207 Caddy \u6700\u5927\u7684\u50f9\u503c\uff1a<strong>\u524d\u7aef\u7db2\u5740\u53ef\u4ee5\u7d71\u4e00\uff0c\u4f46\u5f8c\u7aef\u5b8c\u5168\u4e0d\u9700\u8981\u4f7f\u7528\u540c\u4e00\u5957\u6280\u8853\u3002<\/strong>\u672a\u4f86\u5982\u679c\u518d\u65b0\u589e\u65b0\u7684\u7db2\u7ad9\uff0c\u672c\u8cea\u4e0a\u4e5f\u662f\u5efa\u7acb\u65b0\u7684 Web Station \u6216 Docker \u670d\u52d9\uff0c\u518d\u65b0\u589e\u5c0d\u61c9\u7684\u7db2\u5740\u5206\u6d41\u898f\u5247\u3002<\/p>\n<\/section>\n<section id=\"umami\">\n<h2>\u4e03\u3001Umami\uff1a\u5728\u81ea\u5df1\u7684 NAS \u5efa\u7acb\u7db2\u7ad9\u6d41\u91cf\u5206\u6790<\/h2>\n<p>\u7db2\u7ad9\u6b63\u5f0f\u5c0d\u5916\u4e4b\u5f8c\uff0c\u4e0b\u4e00\u500b\u554f\u984c\u901a\u5e38\u5c31\u662f\uff1a\u5230\u5e95\u6709\u6c92\u6709\u4eba\u4f86\u770b\uff1f\u6211\u5f8c\u4f86\u9078\u64c7\u4f7f\u7528 Umami \u4f5c\u70ba\u7db2\u7ad9\u6d41\u91cf\u5206\u6790\u5de5\u5177\u3002\u5b83\u53ef\u4ee5\u81ea\u884c\u67b6\u8a2d\uff0c\u4e5f\u80fd\u540c\u6642\u5206\u6790\u591a\u500b\u7db2\u7ad9\uff0c\u5f88\u9069\u5408\u5728\u540c\u4e00\u53f0 NAS \u4e0a\u540c\u6642\u7d93\u71df Blog\u3001PhotoGallery\u3001Boardgame \u8207\u5176\u4ed6\u7db2\u7ad9\u7684\u60c5\u6cc1\u3002<\/p>\n<p>Umami \u53ef\u4ee5\u89c0\u5bdf\u8a2a\u5ba2\u3001Pageview\u3001\u4f86\u6e90\u3001\u570b\u5bb6\u3001\u700f\u89bd\u5668\u3001\u88dd\u7f6e\u7b49\u8cc7\u8a0a\uff0c\u4e5f\u652f\u63f4\u81ea\u8a02 Event\u3002\u5be6\u969b\u4f7f\u7528\u5f8c\uff0c\u6211\u89ba\u5f97 Event \u5c0d PhotoGallery \u7279\u5225\u6709\u50f9\u503c\uff0c\u56e0\u70ba\u300c\u6253\u958b\u4e00\u5f35\u7167\u7247\u300d\u548c\u300c\u771f\u7684\u505c\u4e0b\u4f86\u770b\u3001\u5207\u63db\u4e0b\u4e00\u5f35\u3001\u641c\u5c0b\u6216\u5206\u4eab\u300d\u5176\u5be6\u4ee3\u8868\u4e0d\u540c\u7a0b\u5ea6\u7684\u4f7f\u7528\u884c\u70ba\u3002\u56e0\u6b64 Blog \u53ef\u4ee5\u504f\u91cd\u6587\u7ae0\u700f\u89bd\uff0cPhotoGallery \u5247\u53ef\u4ee5\u89c0\u5bdf\u7167\u7247\u700f\u89bd\u8207\u4e92\u52d5\u3002\u9019\u6a23 Umami \u5c31\u4e0d\u53ea\u662f\u55ae\u7d14\u7684\u8a08\u6578\u5668\uff0c\u800c\u662f\u5e6b\u52a9\u7406\u89e3\u7db2\u7ad9\u5be6\u969b\u4f7f\u7528\u65b9\u5f0f\u7684\u5de5\u5177\u3002<\/p>\n<figure id=\"attachment_1697\" aria-describedby=\"caption-attachment-1697\" style=\"width: 1087px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1697 size-full\" src=\"https:\/\/skypray.synology.me\/blog\/wp-content\/uploads\/2026\/08\/umami_example.png\" alt=\"Umami\u8ffd\u8e64\u7bc4\u4f8b\uff0c\u96d6\u7136\u7121\u6cd5\u5f97\u77e5\u662f\u8ab0\u5230\u8a2a\uff0c\u4f46\u9084\u662f\u63d0\u4f9b\u5f88\u591a\u8cc7\u8a0a\u3002\" width=\"1087\" height=\"785\" srcset=\"https:\/\/skypray.synology.me\/blog\/wp-content\/uploads\/2026\/08\/umami_example.png 1087w, https:\/\/skypray.synology.me\/blog\/wp-content\/uploads\/2026\/08\/umami_example-300x217.png 300w, https:\/\/skypray.synology.me\/blog\/wp-content\/uploads\/2026\/08\/umami_example-1024x740.png 1024w, https:\/\/skypray.synology.me\/blog\/wp-content\/uploads\/2026\/08\/umami_example-768x555.png 768w\" sizes=\"auto, (max-width: 1087px) 100vw, 1087px\" \/><figcaption id=\"caption-attachment-1697\" class=\"wp-caption-text\">Umami\u8ffd\u8e64\u7bc4\u4f8b\uff0c\u96d6\u7136\u7121\u6cd5\u5f97\u77e5\u662f\u8ab0\u5230\u8a2a\uff0c\u4f46\u9084\u662f\u63d0\u4f9b\u5f88\u591a\u8cc7\u8a0a\u3002<\/figcaption><\/figure>\n<\/section>\n<section id=\"subpath\">\n<h2>\u516b\u3001\u5b50\u76ee\u9304\u7db2\u7ad9\u6700\u5bb9\u6613\u9047\u5230\u7684\u554f\u984c<\/h2>\n<p><code>example.com\/blog\/<\/code> \u9019\u7a2e\u67b6\u69cb\u96d6\u7136\u7db2\u5740\u6574\u9f4a\uff0c\u4f46\u901a\u5e38\u6bd4 <code>blog.example.com<\/code>\u66f4\u5bb9\u6613\u9047\u5230\u8a2d\u5b9a\u554f\u984c\u3002\u6700\u5927\u7684\u539f\u56e0\u662f\u5f88\u591a Web Application \u9810\u8a2d\u8a8d\u70ba\u81ea\u5df1\u4f4d\u65bc\u7db2\u7ad9\u6839\u76ee\u9304<code>\/<\/code>\uff0c\u4f46\u5be6\u969b\u4e0a\u5b83\u53ef\u80fd\u4f4d\u65bc <code>\/blog\/<\/code>\u3002<\/p>\n<p>\u9019\u6642\u5019\u53ef\u80fd\u51fa\u73fe CSS\u3001JavaScript\u3001\u5716\u7247\u627e\u4e0d\u5230\u3001API 404\u3001\u767b\u5165\u5f8c\u8df3\u932f\u7db2\u5740\u3001Redirect Loop\u3001Cookie \u7570\u5e38\u7b49\u554f\u984c\u3002\u56e0\u6b64\u4f7f\u7528\u5b50\u76ee\u9304\u67b6\u7ad9\u6642\uff0c\u8981\u7279\u5225\u7559\u610f Base Path\u3001Site URL\u3001Absolute URL\u3001Reverse Proxy\u3001Redirect\u3001Cookie Path \u8207 Forwarded Header\u3002<\/p>\n<p>\u5176\u4e2d Base Path \u7279\u5225\u91cd\u8981\uff0c\u7c21\u55ae\u4f86\u8aaa\uff0c\u5c31\u662f\u7db2\u7ad9\u7a0b\u5f0f\u5fc5\u9808\u77e5\u9053\u300c\u6211\u4e0d\u662f\u4f4f\u5728 <code>\/<\/code>\uff0c\u800c\u662f\u4f4f\u5728 <code>\/blog\/<\/code>\u300d\u3002<\/p>\n<p>Reverse Proxy \u5f8c\u9762\u4e5f\u53ef\u80fd\u6d89\u53ca Forwarded Header\u3002\u6709\u6642\u5019\u5916\u90e8\u4f7f\u7528\u7684\u662f HTTPS\uff0c\u4f46 Web Application\u63a5\u6536\u5230\u7684\u5167\u90e8\u9023\u7dda\u4e26\u4e0d\u662f HTTPS\uff0c\u5982\u679c\u7a0b\u5f0f\u6c92\u6709\u6b63\u78ba\u8a8d\u51fa\u539f\u59cb\u9023\u7dda\uff0c\u5c31\u53ef\u80fd\u7522\u751f\u932f\u8aa4\u7db2\u5740\u6216\u4e0d\u65b7\u91cd\u65b0\u5c0e\u5411\u3002\u67d0\u4e9b\u5373\u6642\u529f\u80fd\u9084\u53ef\u80fd\u4f7f\u7528 WebSocket\uff0c\u56e0\u6b64\u4e5f\u53ef\u80fd\u51fa\u73fe\u300c\u7db2\u7ad9\u53ef\u4ee5\u958b\uff0c\u4f46\u90e8\u5206\u5373\u6642\u529f\u80fd\u4e0d\u80fd\u4f7f\u7528\u300d\u7684\u60c5\u6cc1\u3002<\/p>\n<\/section>\n<section id=\"security\">\n<h2>\u4e5d\u3001\u66f4\u65b0\u3001\u5099\u4efd\u8207\u8cc7\u8a0a\u5b89\u5168\u6ce8\u610f\u4e8b\u9805<\/h2>\n<p>NAS \u67b6\u7db2\u7ad9\u6700\u5927\u7684\u7279\u8272\uff0c\u4e5f\u662f\u6700\u5927\u7684\u98a8\u96aa\uff0c\u5c31\u662f\u7db2\u7ad9\u4f3a\u670d\u5668\u8207\u81ea\u5df1\u7684\u91cd\u8981\u8cc7\u6599\u53ef\u80fd\u4f4d\u65bc\u540c\u4e00\u53f0\u6a5f\u5668\u4e0a\u3002\u56e0\u6b64\u81ea\u67b6\u7db2\u7ad9\u6642\u6700\u91cd\u8981\u7684\u539f\u5247\u4e0d\u662f\u300c\u80fd\u4e0d\u80fd\u67b6\u8d77\u4f86\u300d\uff0c\u800c\u662f\u4e0d\u8981\u56e0\u70ba\u7db2\u7ad9\u800c\u628a\u6574\u53f0 NAS \u66b4\u9732\u5f97\u592a\u591a\u3002<\/p>\n<p>\u57fa\u672c\u539f\u5247\u5305\u62ec\u7db2\u7ad9\u7d71\u4e00\u4f7f\u7528 HTTPS\u3001\u4e0d\u9700\u8981\u516c\u958b\u7684\u5167\u90e8\u670d\u52d9\u5c31\u4e0d\u8981\u76f4\u63a5\u9762\u5411 Internet\u3001Database \u4e0d\u76f4\u63a5\u516c\u958b\u3001\u7ba1\u7406\u4ecb\u9762\u76e1\u91cf\u9650\u5236\u5b58\u53d6\uff0cDSM\u3001Docker Image\u3001WordPress \u8207 Plugin \u4e5f\u61c9\u5b9a\u671f\u66f4\u65b0\u3002<\/p>\n<p>Docker \u65b9\u9762\u5247\u8981\u8a18\u4f4f\uff1a<strong>Container \u662f\u53ef\u4ee5\u91cd\u5efa\u7684\uff0c\u8cc7\u6599\u624d\u662f\u6700\u91cd\u8981\u7684\u3002<\/strong>\u771f\u6b63\u9700\u8981\u4fdd\u5b58\u7684\u662f\u8cc7\u6599\u5eab\u3001\u4e0a\u50b3\u6a94\u6848\u3001\u7db2\u7ad9\u8cc7\u6599\u3001\u8a2d\u5b9a\u6a94\u8207\u74b0\u5883\u8a2d\u5b9a\u3002\u66f4\u65b0\u524d\u4e5f\u61c9\u5148\u5099\u4efd\uff0c\u518d\u9032\u884c\u66f4\u65b0\u8207\u6e2c\u8a66\uff0c\u7279\u5225\u662f WordPress\u3001Database \u8207 Plugin \u4e4b\u9593\u53ef\u80fd\u5b58\u5728\u7248\u672c\u76f8\u4f9d\u6027\u3002<\/p>\n<\/section>\n<section id=\"errors\">\n<h2>\u5341\u3001\u5e38\u898b 500\u3001502 \u932f\u8aa4\u8207\u9664\u932f\u89c0\u5ff5<\/h2>\n<p>\u81ea\u67b6\u7db2\u7ad9\u5f88\u5e38\u770b\u5230 500 \u8207 502\uff0c\u4f46\u5169\u8005\u4ee3\u8868\u7684\u65b9\u5411\u4e26\u4e0d\u76f8\u540c\u3002<strong>502 Bad Gateway<\/strong> \u901a\u5e38\u8868\u793a\u524d\u9762\u7684 Reverse Proxy \u9084\u5728\uff0c\u4f46\u5b83\u627e\u4e0d\u5230\u5f8c\u9762\u7684 Web Application\uff0c\u53ef\u80fd\u8207 Container \u672a\u555f\u52d5\u3001\u5167\u90e8\u9023\u7dda\u3001Routing \u6216 Docker Network \u6709\u95dc\u3002<strong>500 Internal Server Error<\/strong> \u5247\u901a\u5e38\u8868\u793a Request \u5df2\u7d93\u6210\u529f\u5230\u9054\u7db2\u7ad9\uff0c\u4f46\u7db2\u7ad9\u7a0b\u5f0f\u672c\u8eab\u767c\u751f\u932f\u8aa4\uff0c\u4f8b\u5982 WordPress\u3001PHP\u3001Plugin\u3001\u8cc7\u6599\u5eab\u3001\u6b0a\u9650\u6216\u7a0b\u5f0f\u672c\u8eab\u51fa\u73fe\u554f\u984c\u3002<\/p>\n<p>\u56e0\u6b64\u770b\u5230\u932f\u8aa4\u4ee3\u78bc\u5f8c\uff0c\u5148\u5224\u65b7\u554f\u984c\u5728\u54ea\u4e00\u5c64\uff0c\u5f80\u5f80\u6bd4\u76f4\u63a5\u91cd\u88dd\u7db2\u7ad9\u6709\u6548\u5f88\u591a\u3002\u7406\u89e3\u6574\u500b NAS \u67b6\u7ad9\u67b6\u69cb\u5f8c\uff0c\u5c31\u53ef\u4ee5\u4f9d\u5e8f\u5224\u65b7\u5230\u5e95\u662f Domain\u3001HTTPS\u3001Reverse Proxy\u3001Caddy\u3001Docker \u9084\u662f Web Application \u672c\u8eab\u51fa\u554f\u984c\u3002<\/p>\n<\/section>\n<section id=\"faq\">\n<h2>\u5341\u4e00\u3001FAQ\uff1aSynology NAS \u81ea\u67b6\u7db2\u7ad9\u5e38\u898b\u554f\u984c<\/h2>\n<h3>Synology NAS \u9069\u5408\u62ff\u4f86\u67b6\u7db2\u7ad9\u55ce\uff1f<\/h3>\n<p>\u5982\u679c\u672c\u4f86\u5c31\u6709 Synology NAS\uff0c\u800c\u4e14\u7db2\u7ad9\u6d41\u91cf\u4e0d\u662f\u975e\u5e38\u5de8\u5927\uff0c\u7528\u4f86\u67b6\u500b\u4eba Blog\u3001\u651d\u5f71\u76f8\u7c3f\u3001\u4f5c\u54c1\u7db2\u7ad9\u6216\u5c0f\u578b Web Application \u5f88\u65b9\u4fbf\u3002\u4e0d\u904e NAS \u901a\u5e38\u4e5f\u5b58\u653e\u91cd\u8981\u8cc7\u6599\uff0c\u56e0\u6b64\u5099\u4efd\u8207\u5b89\u5168\u6027\u61c9\u8a72\u6bd4\u4e00\u822c\u6e2c\u8a66\u4e3b\u6a5f\u66f4\u52a0\u91cd\u8996\u3002<\/p>\n<h3>Web Station \u8207 Docker \u8981\u9078\u54ea\u4e00\u500b\uff1f<\/h3>\n<p>\u4e0d\u662f\u4e8c\u9078\u4e00\u3002\u975c\u614b HTML\u3001CSS\u3001JavaScript \u7db2\u7ad9\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528 Web Station\uff1b\u5982\u679c\u9700\u8981\u5f8c\u7aef\u7a0b\u5f0f\u3001\u8cc7\u6599\u5eab\u6216\u7279\u6b8a\u57f7\u884c\u74b0\u5883\uff0c\u518d\u4f7f\u7528 Docker\u3002<\/p>\n<h3>Synology \u5df2\u7d93\u6709 Reverse Proxy\uff0c\u70ba\u4ec0\u9ebc\u9084\u8981 Caddy\uff1f<\/h3>\n<p>\u5982\u679c\u7db2\u7ad9\u4f7f\u7528 <code>blog.example.com<\/code>\u3001<code>photo.example.com<\/code> \u9019\u985e Subdomain\uff0cSynology Reverse Proxy \u901a\u5e38\u5c31\u5df2\u7d93\u8db3\u5920\uff1b\u5982\u679c\u5e0c\u671b\u4f7f\u7528 <code>example.com\/blog\/<\/code>\u3001<code>example.com\/photo\/<\/code>\uff0c\u6240\u6709\u7db2\u7ad9\u5171\u7528\u540c\u4e00\u500b Domain\u3001\u53ea\u9760\u7db2\u5740 Path \u5340\u5206\uff0c\u5c31\u9700\u8981\u66f4\u65b9\u4fbf\u7684 Path Based Routing\uff0c\u9019\u6b63\u662f\u52a0\u5165 Caddy \u7684\u4e3b\u8981\u539f\u56e0\u3002<\/p>\n<h3>\u4e00\u5b9a\u8981\u4f7f\u7528 Caddy \u55ce\uff1f<\/h3>\n<p>\u4e0d\u662f\u3002Caddy \u662f\u9069\u5408\u7684\u5de5\u5177\u4e4b\u4e00\uff0c\u800c\u4e0d\u662f Synology NAS \u67b6\u7ad9\u7684\u5fc5\u8981\u689d\u4ef6\u3002\u53ea\u8981\u67b6\u69cb\u7c21\u55ae\uff0c\u5b8c\u5168\u53ef\u4ee5\u53ea\u4f7f\u7528 Synology \u81ea\u5df1\u7684 Web Station \u8207 Reverse Proxy\u3002<\/p>\n<h3>Caddyfile \u662f\u4ec0\u9ebc\uff1f<\/h3>\n<p>Caddyfile \u662f Caddy \u7684\u8a2d\u5b9a\u6a94\uff0c\u4e3b\u8981\u63cf\u8ff0\u7db2\u5740\u8981\u5982\u4f55\u5206\u6d41\u3001\u8f49\u9001\u3001Redirect \u6216 Rewrite\u3002\u771f\u6b63\u67b6\u8a2d\u6642\u53ef\u4ee5\u4f9d\u81ea\u5df1\u7684\u74b0\u5883\u5229\u7528 AI \u5354\u52a9\u7522\u751f\uff0c\u4e0d\u9700\u8981\u5148\u80cc\u8a2d\u5b9a\u8a9e\u6cd5\u3002<\/p>\n<h3>\u70ba\u4ec0\u9ebc \/blog\/ \u6bd4 blog.example.com \u96e3\u67b6\uff1f<\/h3>\n<p>\u56e0\u70ba Web Application \u4e0d\u53ea\u8981\u77e5\u9053\u81ea\u5df1\u7684 Domain\uff0c\u9084\u8981\u77e5\u9053\u81ea\u5df1\u4f4d\u65bc <code>\/blog\/<\/code> \u9019\u500b Base Path\u3002\u7db2\u7ad9\u5167\u7684 CSS\u3001JavaScript\u3001\u5716\u7247\u3001API\u3001\u767b\u5165 Redirect \u8207 Cookie \u90fd\u53ef\u80fd\u56e0\u6b64\u53d7\u5230\u5f71\u97ff\u3002<\/p>\n<h3>Umami \u6709\u4ec0\u9ebc\u7528\u9014\uff1f<\/h3>\n<p>Umami \u53ef\u4ee5\u7d71\u4e00\u89c0\u5bdf\u591a\u500b\u7db2\u7ad9\u7684\u8a2a\u5ba2\u8207\u4f7f\u7528\u60c5\u6cc1\u3002\u9664\u4e86 Pageview\uff0c\u4e5f\u53ef\u4ee5\u52a0\u5165 Event Tracking\uff0c\u56e0\u6b64\u4e0d\u8ad6 Blog\u3001PhotoGallery \u6216\u5176\u4ed6\u4e92\u52d5\u5f0f\u7db2\u7ad9\uff0c\u90fd\u80fd\u4f9d\u9700\u6c42\u8a2d\u8a08\u5206\u6790\u65b9\u5f0f\u3002<\/p>\n<\/section>\n<section id=\"conclusion\">\n<h2>\u7d50\u8a9e\uff1a\u73fe\u5728 NAS \u67b6\u7ad9\u771f\u6b63\u61c9\u8a72\u5b78\u7684\u662f\u67b6\u69cb\uff0c\u800c\u4e0d\u662f\u80cc\u6307\u4ee4<\/h2>\n<p>\u5f9e\u6700\u65e9\u7684 Boardgame \u975c\u614b\u7db2\u7ad9\uff0c\u5230\u5f8c\u4f86\u52a0\u5165 PhotoGallery\u3001WordPress Blog\u3001\u5176\u4ed6 Web App \u8207 Umami\uff0c\u6700\u5927\u7684\u5fc3\u5f97\u662f\uff1a<strong>\u7db2\u7ad9\u6108\u591a\uff0c\u771f\u6b63\u91cd\u8981\u7684\u6108\u4e0d\u662f\u600e\u9ebc\u6253\u4e00\u689d\u6307\u4ee4\uff0c\u800c\u662f\u6bcf\u4e00\u5c64\u5230\u5e95\u8ca0\u8cac\u4ec0\u9ebc\u3002<\/strong><\/p>\n<pre><code>Internet\n   \u2193\nSynology NAS\n   \u2193\nHTTPS \/ Reverse Proxy\n   \u2193\nCaddy\uff08\u9700\u8981 Path Routing \u6642\uff09\n   \u2193\nWeb Station \/ Docker\n   \u2193\n\u7db2\u7ad9\u8207\u8cc7\u6599\u5eab<\/code><\/pre>\n<p>\u518d\u52a0\u4e0a\u4e00\u5957 Umami \u8ca0\u8cac\u7db2\u7ad9\u6d41\u91cf\u5206\u6790\u3002\u5176\u4e2d Caddy \u4e26\u4e0d\u662f\u6240\u6709 Synology NAS \u90fd\u9700\u8981\uff1a\u5982\u679c\u4f7f\u7528<code>blog.example.com<\/code> \u9019\u7a2e Subdomain \u67b6\u69cb\uff0cSynology Reverse Proxy \u901a\u5e38\u5c31\u5df2\u7d93\u8db3\u5920\uff1b\u4f46\u5982\u679c\u5e0c\u671b\u628a\u4e0d\u540c\u7db2\u7ad9\u6574\u7406\u6210 <code>example.com\/blog\/<\/code>\u3001<code>example.com\/photogallery\/<\/code>\u3001<code>example.com\/boardgame\/<\/code>\uff0c\u5c31\u9700\u8981\u8655\u7406 URL Path \u5206\u6d41\uff0c\u800c\u9019\u6b63\u662f Caddy \u5f88\u9069\u5408\u52a0\u5165\u7684\u4f4d\u7f6e\u3002<\/p>\n<p>\u73fe\u5728 AI \u5df2\u7d93\u53ef\u4ee5\u5354\u52a9\u7522\u751f Docker Compose\u3001Caddyfile \u8207 Reverse Proxy \u7684\u8a2d\u5b9a\uff0c\u56e0\u6b64\u516c\u958b\u6559\u5b78\u66f4\u61c9\u8a72\u8457\u91cd\u5728\uff1a<br \/>\n<strong>\u6211\u8981\u67b6\u4ec0\u9ebc\u3001\u70ba\u4ec0\u9ebc\u9700\u8981\u9019\u500b\u5143\u4ef6\u3001\u5b83\u5728\u6574\u500b\u67b6\u69cb\u4e2d\u8ca0\u8cac\u54ea\u4e00\u5c64\u3002<\/strong><br \/>\n\u7406\u89e3\u9019\u4e9b\u4e4b\u5f8c\uff0c\u4e0d\u8ad6\u672a\u4f86\u589e\u52a0\u7b2c\u4e94\u500b\u3001\u7b2c\u5341\u500b\u7db2\u7ad9\uff0c\u5e95\u5c64\u539f\u7406\u5176\u5be6\u90fd\u6c92\u6709\u6539\u8b8a\u3002<\/p>\n<\/section>\n<p>&nbsp;<\/p>\n<h2>\u5ef6\u4f38\u95b1\u8b80\uff1a\u651d\u5f71\u7db2\u7ad9\u5efa\u7f6e\u5b78\u7fd2\u9806\u5e8f<\/h2>\n<ol>\n<li><a href=\"https:\/\/skypray.synology.me\/blog\/computer\/synology-nas-photography-website\/\">WordPress \u80fd\u505a\u651d\u5f71\u7db2\u7ad9\uff0c\u6211\u70ba\u4ec0\u9ebc\u9084\u8981\u5728 Synology NAS \u81ea\u5df1\u67b6\u4e00\u5957\uff1f<\/a><\/li>\n<li><a href=\"https:\/\/skypray.synology.me\/blog\/computer\/synology-nas-docker-caddy-umami-guide\/\">Synology NAS \u591a\u7db2\u7ad9\u67b6\u69cb\uff1aDocker\u3001Caddy\u3001\u53cd\u5411\u4ee3\u7406\u8207 Umami<\/a><\/li>\n<li><a href=\"https:\/\/skypray.synology.me\/blog\/computer\/ai-photo-organization-gemini-gpt-photos\/\">AI \u81ea\u52d5\u6574\u7406 5,000 \u5f35\u7167\u7247\uff1aGemini\u3001GPT\u3001GPS \u8207 Tag \u5be6\u6230<\/a><\/li>\n<li><a href=\"https:\/\/skypray.synology.me\/blog\/computer\/google-maps-photo-gps-api-cost-optimization\/\">Google Maps API \u61c9\u7528\u65bc\u7167\u7247 GPS \u5730\u9ede\u7ba1\u7406\u8207\u8cbb\u7528\u512a\u5316<\/a><\/li>\n<li><a href=\"https:\/\/skypray.synology.me\/blog\/computer\/photography-website-google-image-seo\/\">\u651d\u5f71\u7db2\u7ad9 SEO \u5be6\u6230\uff1a\u5982\u4f55\u8b93 Google \u8b80\u61c2\u76f8\u7c3f\u8207\u7167\u7247<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Synology NAS \u9664\u4e86\u62ff\u4f86\u5099\u4efd\u8cc7\u6599\u3001\u5b58\u653e\u7167\u7247\u8207\u5f71\u97f3\uff0c\u5176\u5be6\u4e5f\u53ef\u4ee5\u6210\u70ba\u4e00\u53f0\u76f8\u7576\u5b8c\u6574\u7684\u500b\u4eba Web Serv [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[26],"class_list":["post-1695","post","type-post","status-publish","format-standard","hentry","category-computer","tag-webdev"],"_links":{"self":[{"href":"https:\/\/skypray.synology.me\/blog\/wp-json\/wp\/v2\/posts\/1695","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skypray.synology.me\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/skypray.synology.me\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/skypray.synology.me\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/skypray.synology.me\/blog\/wp-json\/wp\/v2\/comments?post=1695"}],"version-history":[{"count":5,"href":"https:\/\/skypray.synology.me\/blog\/wp-json\/wp\/v2\/posts\/1695\/revisions"}],"predecessor-version":[{"id":1723,"href":"https:\/\/skypray.synology.me\/blog\/wp-json\/wp\/v2\/posts\/1695\/revisions\/1723"}],"wp:attachment":[{"href":"https:\/\/skypray.synology.me\/blog\/wp-json\/wp\/v2\/media?parent=1695"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/skypray.synology.me\/blog\/wp-json\/wp\/v2\/categories?post=1695"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/skypray.synology.me\/blog\/wp-json\/wp\/v2\/tags?post=1695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}