{"id":17296,"date":"2024-09-17T10:18:43","date_gmt":"2024-09-17T02:18:43","guid":{"rendered":"https:\/\/blog.iyatt.com\/?p=17296"},"modified":"2026-02-28T22:52:13","modified_gmt":"2026-02-28T14:52:13","slug":"%e5%9c%a8%e6%a0%91%e8%8e%93%e6%b4%be%e4%b8%8a%e5%9f%ba%e4%ba%8e-lnmp-%e6%90%ad%e5%bb%ba-nextcloud","status":"publish","type":"post","link":"https:\/\/blog.iyatt.com\/?p=17296","title":{"rendered":"\u5728\u6811\u8393\u6d3e\u4e0a\u57fa\u4e8e LNMP \u642d\u5efa Nextcloud"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">\u76ee\u5f55<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E7%8E%AF%E5%A2%83\" >\u73af\u5883<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E6%90%AD%E5%BB%BA_LNMP_%E7%8E%AF%E5%A2%83\" >\u642d\u5efa LNMP \u73af\u5883<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E5%AE%89%E8%A3%85_Nginx\" >\u5b89\u88c5 Nginx<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E5%AE%89%E8%A3%85_php_%E5%8F%8A%E5%8A%9F%E8%83%BD%E7%BB%84%E4%BB%B6%E6%94%AF%E6%8C%81\" >\u5b89\u88c5 php \u53ca\u529f\u80fd\u7ec4\u4ef6\u652f\u6301<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E5%AE%89%E8%A3%85%E6%95%B0%E6%8D%AE%E5%BA%93\" >\u5b89\u88c5\u6570\u636e\u5e93<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E9%85%8D%E7%BD%AE_Nginx_%E5%92%8C_PHP_%E8%BF%9E%E6%8E%A5\" >\u914d\u7f6e Nginx \u548c PHP \u8fde\u63a5<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E5%AE%89%E8%A3%85_Nextcloud\" >\u5b89\u88c5 Nextcloud<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E6%94%B9%E8%BF%9B%E9%85%8D%E7%BD%AE\" >\u6539\u8fdb\u914d\u7f6e<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E4%BF%AE%E6%94%B9_PHP_%E9%99%90%E5%88%B6\" >\u4fee\u6539 PHP \u9650\u5236<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E5%90%8E%E5%8F%B0%E4%BB%BB%E5%8A%A1%E4%BD%BF%E7%94%A8_cron_%E6%89%A7%E8%A1%8C\" >\u540e\u53f0\u4efb\u52a1\u4f7f\u7528 cron \u6267\u884c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E9%85%8D%E7%BD%AE%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88%E5%8F%91%E9%82%AE%E4%BB%B6%EF%BC%89\" >\u914d\u7f6e\u7535\u5b50\u90ae\u4ef6\u670d\u52a1\u5668\uff08\u53d1\u90ae\u4ef6\uff09<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E8%AE%BE%E7%BD%AE%E9%BB%98%E8%AE%A4%E7%94%B5%E8%AF%9D%E5%8C%BA%E5%9F%9F\" >\u8bbe\u7f6e\u9ed8\u8ba4\u7535\u8bdd\u533a\u57df<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E5%BC%80%E5%90%AF_PHP_OPcache\" >\u5f00\u542f PHP OPcache<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E8%A7%A3%E5%86%B3_PHP_%E8%AE%BF%E9%97%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F\" >\u89e3\u51b3 PHP \u8bbf\u95ee\u73af\u5883\u53d8\u91cf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E6%B7%BB%E5%8A%A0%E7%BC%BA%E5%A4%B1%E7%9A%84%E7%B4%A2%E5%BC%95%EF%BC%88Detected_some_missing_optional_indices_%E9%97%AE%E9%A2%98%EF%BC%89\" >\u6dfb\u52a0\u7f3a\u5931\u7684\u7d22\u5f15\uff08Detected some missing optional indices.  \u95ee\u9898\uff09<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E8%AE%BE%E7%BD%AE%E7%BB%B4%E6%8A%A4%E6%97%B6%E9%97%B4%E6%AE%B5%E5%BC%80%E5%A7%8B%E6%97%B6%E9%97%B4\" >\u8bbe\u7f6e\u7ef4\u62a4\u65f6\u95f4\u6bb5\u5f00\u59cb\u65f6\u95f4<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E8%A7%A3%E5%86%B3_%E2%80%9C%E6%82%A8%E7%9A%84%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%AA%E6%AD%A3%E7%A1%AE%E8%AE%BE%E7%BD%AE%E6%9D%A5%E8%A7%A3%E6%9E%90_wellknown_URL%EF%BC%8C%E5%A4%B1%E8%B4%A5%E4%BA%8E_well-knownwebfinger_%E6%9B%B4%E5%A4%9A%E7%BB%86%E8%8A%82%E2%80%9D\" >\u89e3\u51b3 \u201c\u60a8\u7684\u7f51\u7edc\u670d\u52a1\u5668\u672a\u6b63\u786e\u8bbe\u7f6e\u6765\u89e3\u6790 .wellknown URL\uff0c\u5931\u8d25\u4e8e: \/.well-known\/webfinger \u66f4\u591a\u7ec6\u8282\u201d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E4%BF%AE%E6%94%B9%E9%BB%98%E8%AE%A4%E5%AD%98%E5%82%A8%E8%B7%AF%E5%BE%84\" >\u4fee\u6539\u9ed8\u8ba4\u5b58\u50a8\u8def\u5f84<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E9%85%8D%E7%BD%AE%E5%B1%80%E5%9F%9F%E7%BD%91%E4%BB%A3%E7%90%86\" >\u914d\u7f6e\u5c40\u57df\u7f51\u4ee3\u7406<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#mimetype%E8%BF%81%E7%A7%BB\" >mimetype\u8fc1\u79fb<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E9%85%8D%E7%BD%AE%E5%86%85%E5%AD%98%E7%BC%93%E5%AD%98\" >\u914d\u7f6e\u5185\u5b58\u7f13\u5b58<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E4%B8%8A%E4%BC%A0%E6%97%B6%E5%8F%91%E7%94%9F%E9%94%99%E8%AF%AF%EF%BC%8C%E7%8A%B6%E6%80%81%E7%A0%81413\" >\u4e0a\u4f20\u65f6\u53d1\u751f\u9519\u8bef\uff0c\u72b6\u6001\u7801413<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E6%8F%92%E4%BB%B6%E5%8F%8A%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7\" >\u63d2\u4ef6\u53ca\u4f7f\u7528\u6280\u5de7<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#Two-Factor_TOTP_Provider%E3%80%90%E4%BA%8C%E6%AC%A1%E9%AA%8C%E8%AF%81%EF%BC%8C%E4%B8%80%E6%AC%A1%E6%80%A7%E5%AF%86%E7%A0%81%E3%80%91\" >Two-Factor TOTP Provider\u3010\u4e8c\u6b21\u9a8c\u8bc1\uff0c\u4e00\u6b21\u6027\u5bc6\u7801\u3011<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#Two-Factor_Authentication_via_Nextcloud_notification_%E3%80%90%E4%BA%8C%E6%AC%A1%E9%AA%8C%E8%AF%81%EF%BC%8C%E5%B7%B2%E7%99%BB%E9%99%86%E8%AE%BE%E5%A4%87%E9%AA%8C%E8%AF%81%E3%80%91\" >Two-Factor Authentication via Nextcloud notification \u3010\u4e8c\u6b21\u9a8c\u8bc1\uff0c\u5df2\u767b\u9646\u8bbe\u5907\u9a8c\u8bc1\u3011<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#External_storage_support_%E3%80%90%E5%AD%98%E5%82%A8%E6%89%A9%E5%B1%95%E3%80%91\" >External storage support \u3010\u5b58\u50a8\u6269\u5c55\u3011<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#SMB_%E6%94%AF%E6%8C%81\" >SMB \u652f\u6301<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E9%85%8D%E7%BD%AE%E5%BC%80%E6%9C%BA%E8%87%AA%E5%8A%A8%E6%8C%82%E8%BD%BD%E5%AD%98%E5%82%A8%E8%AE%BE%E5%A4%87\" >\u914d\u7f6e\u5f00\u673a\u81ea\u52a8\u6302\u8f7d\u5b58\u50a8\u8bbe\u5907<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#Memories_%E3%80%90%E7%9B%B8%E5%86%8C%E7%AE%A1%E7%90%86%E3%80%91\" >Memories \u3010\u76f8\u518c\u7ba1\u7406\u3011<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E5%8F%8D%E5%90%91%E5%9C%B0%E7%90%86%E7%BC%96%E7%A0%81%E4%B8%8B%E8%BD%BD%E5%9C%B0%E7%90%83%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B3%A8%E6%84%8F\" >\u53cd\u5411\u5730\u7406\u7f16\u7801\u4e0b\u8f7d\u5730\u7403\u6570\u636e\u5e93\u6ce8\u610f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E5%9B%BE%E7%89%87%E5%86%85%E5%AE%B9%E8%AF%86%E5%88%AB%E5%8A%9F%E8%83%BD\" >\u56fe\u7247\u5185\u5bb9\u8bc6\u522b\u529f\u80fd<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#Nextcloud_Office_%E3%80%90%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%E6%94%AF%E6%8C%81%E3%80%91\" >Nextcloud Office \u3010\u5728\u7ebf\u6587\u6863\u652f\u6301\u3011<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#Music_%E9%9F%B3%E4%B9%90\" >Music \u97f3\u4e50<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E6%89%8B%E6%9C%BA%E7%AB%AF%E9%9F%B3%E4%B9%90%E6%96%B9%E6%A1%88_%E2%80%93_Power_Ampache_2\" >\u624b\u673a\u7aef\u97f3\u4e50\u65b9\u6848 &#8211; Power Ampache 2<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#%E6%89%8B%E6%9C%BA%E7%AB%AF%E9%9F%B3%E4%B9%90%E6%96%B9%E6%A1%88_%E2%80%93_amcfy-music%EF%BC%88%E6%8E%A8%E8%8D%90%EF%BC%89\" >\u624b\u673a\u7aef\u97f3\u4e50\u65b9\u6848 &#8211; amcfy-music\uff08\u63a8\u8350\uff09<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#Drawio_%E7%BB%98%E5%9B%BE\" >Draw.io \u7ed8\u56fe<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#notes_%E7%AC%94%E8%AE%B0\" >notes \u7b14\u8bb0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/blog.iyatt.com\/?p=17296\/#passwords_%E5%AF%86%E7%A0%81\" >passwords \u5bc6\u7801<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%E7%8E%AF%E5%A2%83\"><\/span>\u73af\u5883<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<ul>\n<li>\u6811\u8393\u6d3eCM4<\/li>\n<li>raspios 20240704 Debian 12 arm64<\/li>\n<li>Nextcloud 30.0.0\u300130.0.6<\/li>\n<\/ul>\n<h1><span class=\"ez-toc-section\" id=\"%E6%90%AD%E5%BB%BA_LNMP_%E7%8E%AF%E5%A2%83\"><\/span>\u642d\u5efa LNMP \u73af\u5883<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"%E5%AE%89%E8%A3%85_Nginx\"><\/span>\u5b89\u88c5 Nginx<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install -y nginx<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E5%AE%89%E8%A3%85_php_%E5%8F%8A%E5%8A%9F%E8%83%BD%E7%BB%84%E4%BB%B6%E6%94%AF%E6%8C%81\"><\/span>\u5b89\u88c5 php \u53ca\u529f\u80fd\u7ec4\u4ef6\u652f\u6301<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u53c2\u8003\uff1a<a href=\"https:\/\/docs.nextcloud.com\/server\/latest\/admin_manual\/installation\/php_configuration.html\">https:\/\/docs.nextcloud.com\/server\/latest\/admin_manual\/installation\/php_configuration.html<\/a><\/p>\n<pre><code class=\"language-bash\">sudo apt install -y php php-common php-fpm php-curl php-xml php-fileinfo php-gd php-json php-mbstring php-posix php-simplexml php-xmlreader php-xmlwriter php-zip php-mysql php-intl php-ldap php-ftp php-imap php-bcmath php-gmp php-exif php-apcu php-memcached php-redis php-imagick php-tidy php-uuid php-gnupg ffmpeg<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E5%AE%89%E8%A3%85%E6%95%B0%E6%8D%AE%E5%BA%93\"><\/span>\u5b89\u88c5\u6570\u636e\u5e93<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>MySQL \u5b98\u65b9\u6ca1\u6709\u63d0\u4f9b\u9002\u7528 Debian 12 arm64 \u7684\u4e8c\u8fdb\u5236\u5b89\u88c5\u5305<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726532452268.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1093px; --smush-placeholder-aspect-ratio: 1093\/979;\" \/><\/p>\n<p>\u53ef\u4ee5\u81ea\u5df1\u7528 MySQL \u793e\u533a\u7248\u6e90\u7801\u7f16\u8bd1\u6216\u8005\u627e\u4e09\u65b9\u7f16\u8bd1\u7684\u5b89\u88c5\u5305\uff0c\u8fd9\u91cc\u4f7f\u7528 MySQL \u7684\u5f00\u6e90\u66ff\u4ee3\u8f6f\u4ef6 Mariadb\uff0c\u53ef\u4ee5\u76f4\u63a5\u7528\u5b98\u65b9\u8f6f\u4ef6\u6e90\u5b89\u88c5<\/p>\n<pre><code class=\"language-bash\">sudo apt install -y mariadb-server<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E9%85%8D%E7%BD%AE_Nginx_%E5%92%8C_PHP_%E8%BF%9E%E6%8E%A5\"><\/span>\u914d\u7f6e Nginx \u548c PHP \u8fde\u63a5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u53c2\u8003\uff1a<a href=\"https:\/\/docs.nextcloud.com\/server\/latest\/admin_manual\/installation\/nginx.html#nextcloud-in-the-webroot-of-nginx\">https:\/\/docs.nextcloud.com\/server\/latest\/admin_manual\/installation\/nginx.html#nextcloud-in-the-webroot-of-nginx<\/a><br \/>\n\u4ee5 root \u6743\u9650\u7f16\u8f91 <strong>\/etc\/nginx\/sites-available\/default<\/strong>\uff0c\u5199\u5165\uff08\u53ea\u662f\u6a21\u677f\uff0c\u9700\u8981\u81ea\u5df1\u6539\uff09<br \/>\n\u8fd9\u4e2a\u914d\u7f6e\u6bd4\u8f83\u9002\u7528\u914d\u7f6e\u5728\u516c\u7f51\u670d\u52a1\u5668<\/p>\n<pre><code class=\"language-bash\">upstream php-handler {\n    # server 127.0.0.1:9000;\n    server unix:\/run\/php\/php-fpm.sock;\n}\n\n# Set the `immutable` cache control options only for assets with a cache busting `v` argument\nmap $arg_v $asset_immutable {\n    &quot;&quot; &quot;&quot;;\n    default &quot;, immutable&quot;;\n}\n\nserver {\n    # http\n    listen 80;\n    listen [::]:80;\n    server_name cloud.example.com; # \u81ea\u5df1\u7684\u57df\u540d\uff0cIP \u8bbf\u95ee\u6539\u4e3a\u4e00\u4e2a\u4e0b\u5212\u7ebf\n\n    # Prevent nginx HTTP Server Detection\n    server_tokens off;\n\n    # Enforce HTTPS\n    return 301 https:\/\/$server_name$request_uri;\n}\n\nserver {\n    # https\n    # \u5982\u679c\u4e0d\u662f\u90e8\u7f72\u5230\u516c\u7f51\uff0c\u5c31\u5c06\u4e0a\u4e00\u4e2a server \u5220\u6389\uff0c\u628a\u8fd9\u91cc\u7684\u76d1\u542c 443 \u7aef\u53e3\u6539\u4e3a 80\uff0c\u5e76\u5220\u6389 **ssl http2**\n    listen 443 ssl http2;\n    listen [::]:443 ssl http2;\n    # With NGinx &gt;= 1.25.1 you should use this instead:\n    # listen 443      ssl;\n    # listen [::]:443 ssl;\n    # http2 on;\n    server_name cloud.example.com; # \u81ea\u5df1\u7684\u57df\u540d\uff0cIP \u8bbf\u95ee\u6539\u4e3a\u4e00\u4e2a\u4e0b\u5212\u7ebf\n\n    # Path to the root of your installation\n    # Nextcloud \u7f51\u7ad9\u6e90\u7801\u653e\u7f6e\u8def\u5f84\n    root \/var\/www\/nextcloud;\n\n    # Use Mozilla&#039;s guidelines for SSL\/TLS settings\n    # https:\/\/mozilla.github.io\/server-side-tls\/ssl-config-generator\/\n    # SSL \u8bc1\u4e66\u6587\u4ef6\u8def\u5f84\uff0c\u914d\u7f6e https \u8bbf\u95ee\u9700\u8981\uff0c\n    ssl_certificate     \/etc\/nginx\/cloud.example.com.crt;\n    ssl_certificate_key \/etc\/nginx\/cloud.example.com.key;\n\n    # Prevent nginx HTTP Server Detection\n    server_tokens off;\n\n    # HSTS settings\n    # WARNING: Only add the preload option once you read about\n    # the consequences in https:\/\/hstspreload.org\/. This option\n    # will add the domain to a hardcoded list that is shipped\n    # in all major browsers and getting removed from this list\n    # could take several months.\n    #add_header Strict-Transport-Security &quot;max-age=15768000; includeSubDomains; preload&quot; always;\n\n    # set max upload size and increase upload timeout:\n    client_max_body_size 512M;\n    client_body_timeout 300s;\n    fastcgi_buffers 64 4K;\n\n    # Enable gzip but do not remove ETag headers\n    gzip on;\n    gzip_vary on;\n    gzip_comp_level 4;\n    gzip_min_length 256;\n    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;\n    gzip_types application\/atom+xml text\/javascript application\/javascript application\/json application\/ld+json application\/manifest+json application\/rss+xml application\/vnd.geo+json application\/vnd.ms-fontobject application\/wasm application\/x-font-ttf application\/x-web-app-manifest+json application\/xhtml+xml application\/xml font\/opentype image\/bmp image\/svg+xml image\/x-icon text\/cache-manifest text\/css text\/plain text\/vcard text\/vnd.rim.location.xloc text\/vtt text\/x-component text\/x-cross-domain-policy;\n\n    # Pagespeed is not supported by Nextcloud, so if your server is built\n    # with the `ngx_pagespeed` module, uncomment this line to disable it.\n    #pagespeed off;\n\n    # The settings allows you to optimize the HTTP2 bandwidth.\n    # See https:\/\/blog.cloudflare.com\/delivering-http-2-upload-speed-improvements\/\n    # for tuning hints\n    client_body_buffer_size 512k;\n\n    # HTTP response headers borrowed from Nextcloud `.htaccess`\n    add_header Referrer-Policy                   &quot;no-referrer&quot;       always;\n    add_header X-Content-Type-Options            &quot;nosniff&quot;           always;\n    add_header X-Frame-Options                   &quot;SAMEORIGIN&quot;        always;\n    add_header X-Permitted-Cross-Domain-Policies &quot;none&quot;              always;\n    add_header X-Robots-Tag                      &quot;noindex, nofollow&quot; always;\n    add_header X-XSS-Protection                  &quot;1; mode=block&quot;     always;\n\n    # Remove X-Powered-By, which is an information leak\n    fastcgi_hide_header X-Powered-By;\n\n    # Set .mjs and .wasm MIME types\n    # Either include it in the default mime.types list\n    # and include that list explicitly or add the file extension\n    # only for Nextcloud like below:\n    include mime.types;\n    types {\n        text\/javascript mjs;\n    application\/wasm wasm;\n    }\n\n    # Specify how to handle directories -- specifying `\/index.php$request_uri`\n    # here as the fallback means that Nginx always exhibits the desired behaviour\n    # when a client requests a path that corresponds to a directory that exists\n    # on the server. In particular, if that directory contains an index.php file,\n    # that file is correctly served; if it doesn&#039;t, then the request is passed to\n    # the front-end controller. This consistent behaviour means that we don&#039;t need\n    # to specify custom rules for certain paths (e.g. images and other assets,\n    # `\/updater`, `\/ocs-provider`), and thus\n    # `try_files $uri $uri\/ \/index.php$request_uri`\n    # always provides the desired behaviour.\n    index index.php index.html \/index.php$request_uri;\n\n    # Rule borrowed from `.htaccess` to handle Microsoft DAV clients\n    location = \/ {\n        if ( $http_user_agent ~ ^DavClnt ) {\n            return 302 \/remote.php\/webdav\/$is_args$args;\n        }\n    }\n\n    location = \/robots.txt {\n        allow all;\n        log_not_found off;\n        access_log off;\n    }\n\n    # Make a regex exception for `\/.well-known` so that clients can still\n    # access it despite the existence of the regex rule\n    # `location ~ \/(\\.|autotest|...)` which would otherwise handle requests\n    # for `\/.well-known`.\n    location ^~ \/.well-known {\n        # The rules in this block are an adaptation of the rules\n        # in `.htaccess` that concern `\/.well-known`.\n\n        location = \/.well-known\/carddav { return 301 \/remote.php\/dav\/; }\n        location = \/.well-known\/caldav  { return 301 \/remote.php\/dav\/; }\n\n        location \/.well-known\/acme-challenge    { try_files $uri $uri\/ =404; }\n        location \/.well-known\/pki-validation    { try_files $uri $uri\/ =404; }\n\n        # Let Nextcloud&#039;s API for `\/.well-known` URIs handle all other\n        # requests by passing them to the front-end controller.\n        return 301 \/index.php$request_uri;\n    }\n\n    # Rules borrowed from `.htaccess` to hide certain paths from clients\n    location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|\/)  { return 404; }\n    location ~ ^\/(?:\\.|autotest|occ|issue|indie|db_|console)                { return 404; }\n\n    # Ensure this block, which passes PHP files to the PHP process, is above the blocks\n    # which handle static assets (as seen below). If this block is not declared first,\n    # then Nginx will encounter an infinite rewriting loop when it prepends `\/index.php`\n    # to the URI, resulting in a HTTP 500 error response.\n    location ~ \\.php(?:$|\/) {\n        # Required for legacy support\n        rewrite ^\/(?!index|remote|public|cron|core\\\/ajax\\\/update|status|ocs\\\/v[12]|updater\\\/.+|ocs-provider\\\/.+|.+\\\/richdocumentscode(_arm64)?\\\/proxy) \/index.php$request_uri;\n\n        fastcgi_split_path_info ^(.+?\\.php)(\/.*)$;\n        set $path_info $fastcgi_path_info;\n\n        try_files $fastcgi_script_name =404;\n\n        include fastcgi_params;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n        fastcgi_param PATH_INFO $path_info;\n        fastcgi_param HTTPS on;\n\n        fastcgi_param modHeadersAvailable true;         # Avoid sending the security headers twice\n        fastcgi_param front_controller_active true;     # Enable pretty urls\n        fastcgi_pass php-handler;\n\n        fastcgi_intercept_errors on;\n        fastcgi_request_buffering off;\n\n        fastcgi_max_temp_file_size 0;\n    }\n\n    # Serve static files\n    location ~ \\.(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac)$ {\n        try_files $uri \/index.php$request_uri;\n        # HTTP response headers borrowed from Nextcloud `.htaccess`\n        add_header Cache-Control                     &quot;public, max-age=15778463$asset_immutable&quot;;\n        add_header Referrer-Policy                   &quot;no-referrer&quot;       always;\n        add_header X-Content-Type-Options            &quot;nosniff&quot;           always;\n        add_header X-Frame-Options                   &quot;SAMEORIGIN&quot;        always;\n        add_header X-Permitted-Cross-Domain-Policies &quot;none&quot;              always;\n        add_header X-Robots-Tag                      &quot;noindex, nofollow&quot; always;\n        add_header X-XSS-Protection                  &quot;1; mode=block&quot;     always;\n        access_log off;     # Optional: Don&#039;t log access to assets\n    }\n\n    location ~ \\.woff2?$ {\n        try_files $uri \/index.php$request_uri;\n        expires 7d;         # Cache-Control policy borrowed from `.htaccess`\n        access_log off;     # Optional: Don&#039;t log access to assets\n    }\n\n    # Rule borrowed from `.htaccess`\n    location \/remote {\n        return 301 \/remote.php$request_uri;\n    }\n\n    location \/ {\n        try_files $uri $uri\/ \/index.php$request_uri;\n    }\n}<\/code><\/pre>\n<h1><span class=\"ez-toc-section\" id=\"%E5%AE%89%E8%A3%85_Nextcloud\"><\/span>\u5b89\u88c5 Nextcloud<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Nextcloud \u7f51\u7ad9\u6e90\u7801\u4e0b\u8f7d\uff1a<a href=\"https:\/\/nextcloud.com\/install\/\">https:\/\/nextcloud.com\/install\/<\/a><br \/>\n\u5c55\u5f00\u793e\u533a\u9879\u76ee<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726532820419.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1460px; --smush-placeholder-aspect-ratio: 1460\/642;\" \/><br \/>\n\u4e0b\u8f7d ZIP \u5305<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726532856693.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1125px; --smush-placeholder-aspect-ratio: 1125\/415;\" \/><\/p>\n<p>\u89e3\u538b\u5f97\u5230\u7684 nextcloud \u653e\u5230 \/var\/www \u8def\u5f84\u4e0b\uff0c\u5e76\u5728\u8fd9\u4e2a\u8def\u5f84\u4e0b\u4fee\u6539\u6587\u4ef6\u6743\u9650\uff1a<a href=\"https:\/\/blog.iyatt.com\/?p=14780\">https:\/\/blog.iyatt.com\/?p=14780<\/a><br \/>\n\u540e\u9762\u521b\u5efa\u6570\u636e\u5e93\u548c\u914d\u7f6e\u5b89\u88c5\u548c WordPress \u5dee\u4e0d\u591a\uff1a<a href=\"https:\/\/blog.iyatt.com\/?p=12732#WordPress_%E5%AE%89%E8%A3%85\">https:\/\/blog.iyatt.com\/?p=12732#WordPress_%E5%AE%89%E8%A3%85<\/a><br \/>\n\u53ea\u662f\u767b\u5f55\u6570\u636e\u5e93 root \u7684\u65b9\u5f0f\u4ece <strong>mysql -u root -p<\/strong> \u6539\u4e3a <strong>sudo mysql<\/strong><\/p>\n<p>\u8bbf\u95ee\u9875\u9762\uff0c\u9996\u6b21\u914d\u7f6e\u4e00\u4e0b\u6570\u636e\u5e93\u8fde\u63a5\u4fe1\u606f\u548c\u767b\u5f55\u8d26\u53f7<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726538069795.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 437px; --smush-placeholder-aspect-ratio: 437\/1043;\" \/><\/p>\n<p>\u7136\u540e\u767b\u5f55\u8fdb\u5165\u9875\u9762<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726539485118.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1079px; --smush-placeholder-aspect-ratio: 1079\/1076;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E6%94%B9%E8%BF%9B%E9%85%8D%E7%BD%AE\"><\/span>\u6539\u8fdb\u914d\u7f6e<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"%E4%BF%AE%E6%94%B9_PHP_%E9%99%90%E5%88%B6\"><\/span>\u4fee\u6539 PHP \u9650\u5236<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Nextcloud \u5efa\u8bae php \u5185\u5b58\u9650\u5236\u81f3\u5c11\u6709 512M\uff0c\u6839\u636e\u81ea\u5df1\u5b9e\u9645\u60c5\u51b5\u8c03\u6574\uff0c\u6211\u8fd9\u91cc\u6811\u8393\u6d3e\u6709 8G \u5185\u5b58\uff0c\u76f4\u63a5\u628a PHP \u9650\u5236\u6539\u4e3a 1G<br \/>\n\u4ee5 root \u6743\u9650\u7f16\u8f91 <strong>\/etc\/php\/8.2\/fpm\/php.ini<\/strong>\uff0c\u8def\u5f84\u4e2d\u7684 8.2 \u662f php \u7248\u672c\uff0c\u6839\u636e\u81ea\u5df1\u7684\u5b9e\u9645\u60c5\u51b5\u4fee\u6539<br \/>\n\u627e\u5230 <strong>memory_limt<\/strong> \u628a\u540e\u9762\u7684\u503c\u4fee\u6539\u4e86<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726539781241.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 431px; --smush-placeholder-aspect-ratio: 431\/110;\" \/><\/p>\n<p>\u4fee\u6539\u4e0a\u4f20\u6587\u4ef6\u5927\u5c0f\u9650\u5236\uff08upload_max_filesize\uff09\uff0c\u9ed8\u8ba4 2M\uff0c\u8fd9\u91cc\u6539\u4e3a 512M<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726923637498.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 512px; --smush-placeholder-aspect-ratio: 512\/203;\" \/><\/p>\n<p>\u4fee\u6539 post \u5927\u5c0f\u9650\u5236\uff08post_max_size\uff09\uff0c\u9ed8\u8ba4 8M\uff0c\u8fd9\u91cc\u6539\u4e3a 512M<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726923697966.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 351px; --smush-placeholder-aspect-ratio: 351\/141;\" \/><\/p>\n<p>\u7136\u540e\u91cd\u542f php-fpm\uff0c\u5176\u4e2d 8.2 \u6362\u6210\u81ea\u5df1\u7684 php \u7248\u672c<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart php8.2-fpm<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726539797339.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 378px; --smush-placeholder-aspect-ratio: 378\/90;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%90%8E%E5%8F%B0%E4%BB%BB%E5%8A%A1%E4%BD%BF%E7%94%A8_cron_%E6%89%A7%E8%A1%8C\"><\/span>\u540e\u53f0\u4efb\u52a1\u4f7f\u7528 cron \u6267\u884c<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u521b\u5efa\u5b9a\u65f6\u4efb\u52a1<\/p>\n<pre><code class=\"language-bash\">sudo crontab -u www-data -e<\/code><\/pre>\n<p>\u81ea\u5df1\u9009\u62e9\u4e00\u4e2a\u7f16\u8f91\u5668\uff0c\u7136\u540e\u5199\u5165\uff08\/var\/www\/nextcloud \u662f\u7f51\u7ad9\u6587\u4ef6\u8def\u5f84\uff09<\/p>\n<pre><code class=\"language-bash\">*\/5  *  *  *  * \/usr\/bin\/php -f \/var\/www\/nextcloud\/cron.php<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726540214135.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 643px; --smush-placeholder-aspect-ratio: 643\/257;\" \/><\/p>\n<p>\u7136\u540e Nextcloud \u8bbe\u7f6e -&gt; \u57fa\u672c\u8bbe\u7f6e -&gt; \u540e\u53f0\u4efb\u52a1\uff0c\u9009\u62e9 Cron<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726540270001.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1407px; --smush-placeholder-aspect-ratio: 1407\/679;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E9%85%8D%E7%BD%AE%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88%E5%8F%91%E9%82%AE%E4%BB%B6%EF%BC%89\"><\/span>\u914d\u7f6e\u7535\u5b50\u90ae\u4ef6\u670d\u52a1\u5668\uff08\u53d1\u90ae\u4ef6\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5148\u5728\u8bbe\u7f6e\u7684\u4e2a\u4eba\u4fe1\u606f\u91cc\u586b\u4e0a\u90ae\u7bb1\uff08\u7528\u4e8e\u9a8c\u8bc1\u63a5\u6536\uff09<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726540632052.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1311px; --smush-placeholder-aspect-ratio: 1311\/401;\" \/><\/p>\n<p>\u518d\u5230\u57fa\u672c\u8bbe\u7f6e\uff0c\u6211\u8fd9\u91cc\u4f7f\u7528 QQ  \u90ae\u7bb1\u7684 STMP \u670d\u52a1\u6765\u5b9e\u73b0\u53d1\u90ae\u4ef6<br \/>\nQQ \u90ae\u7bb1\uff1a<a href=\"https:\/\/mail.qq.com\">https:\/\/mail.qq.com<\/a><br \/>\n\u83b7\u53d6\u4e00\u4e2a\u4e13\u7528\u7684\u5bc6\u7801<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726540789952.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1194px; --smush-placeholder-aspect-ratio: 1194\/1265;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726552461937.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 714px; --smush-placeholder-aspect-ratio: 714\/401;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%AE%BE%E7%BD%AE%E9%BB%98%E8%AE%A4%E7%94%B5%E8%AF%9D%E5%8C%BA%E5%9F%9F\"><\/span>\u8bbe\u7f6e\u9ed8\u8ba4\u7535\u8bdd\u533a\u57df<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u4ee5 root \u6743\u9650\u7f16\u8f91 Nexcloud \u76ee\u5f55\u4e0b\u7684 config\/config.php\uff0c\u8ffd\u52a0<\/p>\n<pre><code class=\"language-bash\">&#039;default_phone_region&#039; =&gt; &#039;CN&#039;,<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726552880521.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1043px; --smush-placeholder-aspect-ratio: 1043\/625;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%BC%80%E5%90%AF_PHP_OPcache\"><\/span>\u5f00\u542f PHP OPcache<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5f00\u8fd9\u4e2a\u5c31\u662f\u628a\u7f16\u8bd1\u8fc7\u7684 PHP \u811a\u672c\u7f13\u5b58\u5230\u5185\u5b58\u91cc\uff08\u5185\u5b58\u8db3\u591f\u7684\u8bdd\uff09\uff0c\u8fd9\u6837\u53ef\u4ee5\u63d0\u5347\u6027\u80fd\u3002<br \/>\n\u4ee5 root \u6743\u9650\u7f16\u8f91 <strong>\/etc\/php\/8.2\/fpm\/php.ini<\/strong>\uff0c\u627e\u5230 <strong>[opcache]<\/strong> \u6dfb\u52a0\u4e0b\u9762\u5185\u5bb9\uff08\u4e5f\u53ef\u4ee5\u89e3\u5f00\u6ce8\u91ca\u7f16\u8f91\u53c2\u6570\uff09<\/p>\n<pre><code class=\"language-bash\">opcache.enable=1\nopcache.enable_cli=1\nopcache.memory_consumption=128\nopcache.interned_strings_buffer=16\nopcache.max_accelerated_files=10000\nopcache.save_comments=1\nopcache.revalidate_freq=1<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726553379949.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1190px; --smush-placeholder-aspect-ratio: 1190\/733;\" \/><\/p>\n<p>\u91cd\u542f PHP-FPM \u751f\u6548<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%A7%A3%E5%86%B3_PHP_%E8%AE%BF%E9%97%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F\"><\/span>\u89e3\u51b3 PHP \u8bbf\u95ee\u73af\u5883\u53d8\u91cf<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u4ee5 root \u7f16\u8f91 <strong>\/etc\/php\/8.2\/fpm\/pool.d\/www.conf<\/strong>\uff0c\u627e\u5230 <strong>env[PATH]<\/strong><br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726553564668.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1213px; --smush-placeholder-aspect-ratio: 1213\/737;\" \/><\/p>\n<p>\u53bb\u6389\u524d\u9762\u7684\u5206\u53f7<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726553582767.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 526px; --smush-placeholder-aspect-ratio: 526\/192;\" \/><\/p>\n<p>\u91cd\u542f PHP-FPM \u751f\u6548<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E6%B7%BB%E5%8A%A0%E7%BC%BA%E5%A4%B1%E7%9A%84%E7%B4%A2%E5%BC%95%EF%BC%88Detected_some_missing_optional_indices_%E9%97%AE%E9%A2%98%EF%BC%89\"><\/span>\u6dfb\u52a0\u7f3a\u5931\u7684\u7d22\u5f15\uff08Detected some missing optional indices.  \u95ee\u9898\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u547d\u4ee4\u884c\u5207\u6362\u5230 Nextcloud \u8def\u5f84\u4e0b\uff0c\u6267\u884c<\/p>\n<pre><code class=\"language-bash\">sudo -u www-data php occ db:add-missing-indices<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726554312373.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 779px; --smush-placeholder-aspect-ratio: 779\/74;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%AE%BE%E7%BD%AE%E7%BB%B4%E6%8A%A4%E6%97%B6%E9%97%B4%E6%AE%B5%E5%BC%80%E5%A7%8B%E6%97%B6%E9%97%B4\"><\/span>\u8bbe\u7f6e\u7ef4\u62a4\u65f6\u95f4\u6bb5\u5f00\u59cb\u65f6\u95f4<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u6bd4\u5982\u5c06\u4e00\u4e9b\u590d\u6742\u64cd\u4f5c\u7684\u65f6\u95f4\u8c03\u6574\u5230\u4e0d\u5e38\u7528\u7684\u65f6\u95f4\u6bb5\uff0c\u907f\u5f00\u4f7f\u7528\u9ad8\u5cf0\uff0c\u9ed8\u8ba4\u662f\u4efb\u610f\u65f6\u95f4\u6bb5<br \/>\n\u4ee5 root \u7f16\u8f91 Nextcloud \u76ee\u5f55\u4e0b\u7684 config\/config.php\uff0c\u6dfb\u52a0<\/p>\n<pre><code class=\"language-bash\">&#039;maintenance_window_start&#039; =&gt; 1,<\/code><\/pre>\n<p>\u610f\u5473\u7740\u4f1a\u4ece\u51cc\u6668 1 \u70b9\u5f00\u59cb\uff08\u6301\u7eed 4 \u5c0f\u65f6\uff09<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726554730426.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 881px; --smush-placeholder-aspect-ratio: 881\/257;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%A7%A3%E5%86%B3_%E2%80%9C%E6%82%A8%E7%9A%84%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%AA%E6%AD%A3%E7%A1%AE%E8%AE%BE%E7%BD%AE%E6%9D%A5%E8%A7%A3%E6%9E%90_wellknown_URL%EF%BC%8C%E5%A4%B1%E8%B4%A5%E4%BA%8E_well-knownwebfinger_%E6%9B%B4%E5%A4%9A%E7%BB%86%E8%8A%82%E2%80%9D\"><\/span>\u89e3\u51b3 \u201c\u60a8\u7684\u7f51\u7edc\u670d\u52a1\u5668\u672a\u6b63\u786e\u8bbe\u7f6e\u6765\u89e3\u6790 <code>.wellknown<\/code> URL\uff0c\u5931\u8d25\u4e8e: <code>\/.well-known\/webfinger<\/code> \u66f4\u591a\u7ec6\u8282\u201d<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u6211\u8fd9\u91cc\u51fa\u73b0\u8fd9\u4e2a\u95ee\u9898\u662f\u56e0\u4e3a\u4f7f\u7528\u7684\u7aef\u53e3\u662f\u975e\u6807\u7aef\u53e3\uff0c\u8bbf\u95ee\u94fe\u63a5\u540e\u9762\u8981\u6307\u5b9a\u7aef\u53e3\uff0c\u4f46\u662f\u8fd9\u91cc\u7684\u8df3\u8f6c\u6ca1\u6b63\u786e\u5904\u7406<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726555557970.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1161px; --smush-placeholder-aspect-ratio: 1161\/482;\" \/><\/p>\n<p>\u4ee5 root \u7f16\u8f91 <strong>\/etc\/nginx\/sites-available\/default<\/strong>\uff0c\u628a\u4e0a\u56fe\u9009\u4e2d\u7684\u4e24\u884c\u548c\u540e\u9762return\u90a3\u884c\u5206\u522b\u4fee\u6539\u4e3a<\/p>\n<pre><code class=\"language-bash\">        location = \/.well-known\/carddav { return 301 $scheme:\/\/$http_host\/remote.php\/dav\/; }\n        location = \/.well-known\/caldav  { return 301 $scheme:\/\/$http_host\/remote.php\/dav\/; }\n\n        return 301 $scheme:\/\/$http_host\/index.php$request_uri;<\/code><\/pre>\n<p>\u7136\u540e\u91cd\u542f Nginx<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E4%BF%AE%E6%94%B9%E9%BB%98%E8%AE%A4%E5%AD%98%E5%82%A8%E8%B7%AF%E5%BE%84\"><\/span>\u4fee\u6539\u9ed8\u8ba4\u5b58\u50a8\u8def\u5f84<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u7f16\u8f91 Nextcloud \u76ee\u5f55\u4e0b config\/config.php \u4e2d\u7684 <strong>datadirectory<\/strong> \u503c<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726561475782.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 430px; --smush-placeholder-aspect-ratio: 430\/39;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E9%85%8D%E7%BD%AE%E5%B1%80%E5%9F%9F%E7%BD%91%E4%BB%A3%E7%90%86\"><\/span>\u914d\u7f6e\u5c40\u57df\u7f51\u4ee3\u7406<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5982\u679c\u7f51\u7edc\u4e0d\u597d\uff0c\u65e0\u6cd5\u8bbf\u95ee\u5e94\u7528\u5546\u5e97<br \/>\n\u4ee5 root \u7f16\u8f91 Nextcloud \u76ee\u5f55\u4e0b config\/config.php\uff0c\u6dfb\u52a0<\/p>\n<pre><code class=\"language-bash\">&#039;proxy&#039; =&gt; &#039;sock5:\/\/IP:\u7aef\u53e3&#039;<\/code><\/pre>\n<p>\u6216<\/p>\n<pre><code class=\"language-bash\">&#039;proxy&#039; =&gt; &#039;http:\/\/IP:\u7aef\u53e3&#039;<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726559620280.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 985px; --smush-placeholder-aspect-ratio: 985\/265;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726559720210.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 2237px; --smush-placeholder-aspect-ratio: 2237\/922;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"mimetype%E8%BF%81%E7%A7%BB\"><\/span>mimetype\u8fc1\u79fb<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5728\u7ba1\u7406\u5458\u8bbe\u7f6e\u6982\u89c8\u4e2d\u63d0\u793a\u201cOne or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command <code>occ maintenance:repair --include-expensive<\/code> to perform the migrations.\u201d\u65f6<br \/>\n\u7ec8\u7aef\u8fdb\u5165 Nextcloud \u76ee\u5f55\uff0c\u6267\u884c<\/p>\n<pre><code class=\"language-bash\"># \u542f\u7528\u7ef4\u62a4\u6a21\u5f0f\nsudo -u www-data php occ maintenance:mode --on\n\n# \u6267\u884c\u8fc1\u79fb\nsudo -u www-data php occ maintenance:repair --include-expensive\n\n# \u7ba1\u7406\u7ef4\u62a4\u6a21\u5f0f\nsudo -u www-data php occ maintenance:mode --off<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E9%85%8D%E7%BD%AE%E5%86%85%E5%AD%98%E7%BC%93%E5%AD%98\"><\/span>\u914d\u7f6e\u5185\u5b58\u7f13\u5b58<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5b89\u88c5 redis \u7b49\u7ec4\u4ef6<\/p>\n<pre><code class=\"language-bash\">sudo apt install -y redis php-redis php-apcu<\/code><\/pre>\n<p>\u4ee5 root \u7f16\u8f91 \/etc\/redis\/redis.conf<br \/>\n\u627e\u5230 unixsocket \u548c uxixsocketperm \u89e3\u5f00\u6ce8\u91ca\uff0c\u5e76\u628a\u6743\u9650\u503c\u6539\u4e3a 770<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1727012162770.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 363px; --smush-placeholder-aspect-ratio: 363\/93;\" \/><br \/>\n\u627e\u5230 port\uff0c\u628a\u7aef\u53e3\u53f7\u6539\u4e3a 0<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1727010573275.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 161px; --smush-placeholder-aspect-ratio: 161\/106;\" \/><\/p>\n<p>redis \u5185\u5b58\u5927\u5c0f\u548c\u7b56\u7565\u8bbe\u7f6e\u53ef\u53c2\u8003\uff1a<a href=\"https:\/\/blog.iyatt.com\/?p=22960\">https:\/\/blog.iyatt.com\/?p=22960<\/a><\/p>\n<p>\u4fdd\u5b58\u9000\u51fa\u540e\u91cd\u542f redis<\/p>\n<pre><code class=\"language-bash\"># \u8bbe\u7f6e\u81ea\u542f\u52a8\nsudo systemctl enable redis-server\n\n# \u91cd\u542f\nsudo systemctl restart redis-server<\/code><\/pre>\n<p>\u5c06 www-data \u7528\u6237\u6dfb\u52a0\u5230 redis \u7528\u6237\u7ec4<\/p>\n<pre><code class=\"language-bash\"># \u6dfb\u52a0\nsudo usermod -aG redis www-data\n\n# \u5237\u65b0\nsudo newgrp redis<\/code><\/pre>\n<p>\u6d4b\u8bd5\u8bbf\u95ee redis \u5957\u63a5\u5b57\uff0c\u663e\u793a PONG \u5373\u6210\u529f<\/p>\n<pre><code class=\"language-bash\">sudo -u www-data redis-cli -s \/var\/run\/redis\/redis-server.sock ping<\/code><\/pre>\n<p>\u4ee5 root \u7f16\u8f91 \/etc\/php\/8.2\/cli\/php.ini \u6dfb\u52a0<\/p>\n<pre><code class=\"language-bash\">[apcu]\napc.enable_cli=1<\/code><\/pre>\n<p>\u91cd\u542f Nginx \u548c PHP-fpm<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart php8.2-fpm.service nginx<\/code><\/pre>\n<p>\u5728 Nextcloud \u76ee\u5f55\u4e0b\u7684 config\/config.php \u6dfb\u52a0<\/p>\n<pre><code class=\"language-bash\">  &#039;memcache.local&#039; =&gt; &#039;\\OC\\Memcache\\APCu&#039;,\n  &#039;memcache.locking&#039; =&gt; &#039;\\OC\\Memcache\\Redis&#039;,\n  &#039;redis&#039; =&gt; array(\n     &#039;host&#039; =&gt; &#039;\/var\/run\/redis\/redis-server.sock&#039;,\n     &#039;port&#039; =&gt; 0,\n     &#039;timeout&#039; =&gt; 0.0,\n      ),<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1727015547386.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1084px; --smush-placeholder-aspect-ratio: 1084\/401;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E4%B8%8A%E4%BC%A0%E6%97%B6%E5%8F%91%E7%94%9F%E9%94%99%E8%AF%AF%EF%BC%8C%E7%8A%B6%E6%80%81%E7%A0%81413\"><\/span>\u4e0a\u4f20\u65f6\u53d1\u751f\u9519\u8bef\uff0c\u72b6\u6001\u7801413<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5728\u7f51\u9875\u7aef\u4e0a\u4f20\u5927\u6587\u4ef6\u7684\u65f6\u5019\u9047\u5230\uff0c\u8fd9\u4e2a\u662f\u8d85\u51fa\u4e86 Nginx \u4e0a\u4f20\u9650\u5236\u5bfc\u81f4\u7684\u3002Nextcloud \u6587\u6863\u7ed9\u7684 Nginx \u6a21\u677f\u9ed8\u8ba4\u914d\u7f6e\u662f\u9650\u5236 512M\uff0c\u628a client_max_body_size \u6539\u5927\u518d\u91cd\u542f Nginx \u5c31\u884c\uff0c\u6bd4\u5982\u6211\u8fd9\u91cc\u76f4\u63a5\u6539\u6210 10240M \u5373 10G<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1727178287625.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 472px; --smush-placeholder-aspect-ratio: 472\/159;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E6%8F%92%E4%BB%B6%E5%8F%8A%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7\"><\/span>\u63d2\u4ef6\u53ca\u4f7f\u7528\u6280\u5de7<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"Two-Factor_TOTP_Provider%E3%80%90%E4%BA%8C%E6%AC%A1%E9%AA%8C%E8%AF%81%EF%BC%8C%E4%B8%80%E6%AC%A1%E6%80%A7%E5%AF%86%E7%A0%81%E3%80%91\"><\/span>Two-Factor TOTP Provider\u3010\u4e8c\u6b21\u9a8c\u8bc1\uff0c\u4e00\u6b21\u6027\u5bc6\u7801\u3011<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u53ef\u4ee5\u7ed1\u5b9a APP\uff0c\u901a\u8fc7 APP \u67e5\u770b\u4e00\u6b21\u6027\u5bc6\u7801\uff0c\u5728\u767b\u9646\u65f6\u8fdb\u884c\u9a8c\u8bc1<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726562899189.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1180px; --smush-placeholder-aspect-ratio: 1180\/316;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726562990954.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 551px; --smush-placeholder-aspect-ratio: 551\/571;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Two-Factor_Authentication_via_Nextcloud_notification_%E3%80%90%E4%BA%8C%E6%AC%A1%E9%AA%8C%E8%AF%81%EF%BC%8C%E5%B7%B2%E7%99%BB%E9%99%86%E8%AE%BE%E5%A4%87%E9%AA%8C%E8%AF%81%E3%80%91\"><\/span>Two-Factor Authentication via Nextcloud notification \u3010\u4e8c\u6b21\u9a8c\u8bc1\uff0c\u5df2\u767b\u9646\u8bbe\u5907\u9a8c\u8bc1\u3011<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u53ef\u4ee5\u53d1\u9001\u901a\u77e5\uff0c\u5728\u5df2\u767b\u9646\u8bbe\u5907\u7684\u901a\u77e5\u91cc\u540c\u610f\u767b\u5f55<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1727778768931.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 572px; --smush-placeholder-aspect-ratio: 572\/544;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"External_storage_support_%E3%80%90%E5%AD%98%E5%82%A8%E6%89%A9%E5%B1%95%E3%80%91\"><\/span>External storage support \u3010\u5b58\u50a8\u6269\u5c55\u3011<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u53ef\u4ee5\u5411 Nextcloud \u4e2d\u6dfb\u52a0\u5b58\u50a8\u8def\u5f84\uff0c\u6bd4\u5982\u6302\u8f7d\u4e86\u989d\u5916\u7684\u786c\u76d8\uff0c\u628a\u8def\u5f84\u6dfb\u52a0\u8fdb\u53bb\uff0c\u4e5f\u80fd\u6dfb\u52a0\u5176\u5b83\u5171\u4eab\u534f\u8bae\u6216\u5e73\u53f0<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726757886071.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1171px; --smush-placeholder-aspect-ratio: 1171\/785;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"SMB_%E6%94%AF%E6%8C%81\"><\/span>SMB \u652f\u6301<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u5982\u679c\u9047\u5230<\/p>\n<pre><code>\u201csmbclient\u201d \u672a\u5b89\u88c5\u3002\u65e0\u6cd5\u6302\u8f7d &quot;SMB\/CIFS &quot;, &quot;\u4f7f\u7528 OC \u767b\u5f55\u7684 SMB\/CIFS&quot;\u3002\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u5b89\u88c5\u3002<\/code><\/pre>\n<p>\u914d\u7f6e\u5b89\u88c5\u6a21\u5757<\/p>\n<pre><code class=\"language-bash\">sudo apt install -y smbclient libsmbclient-dev\nsudo pecl channel-update pecl.php.net\nsudo pecl install smbclient<\/code><\/pre>\n<p>\u4fee\u6539 php.ini \u6587\u4ef6\uff0c\u6bd4\u5982\u9ed8\u8ba4\u7684 php-fpm \u914d\u7f6e\u6587\u4ef6\u8def\u5f84 <strong>\/etc\/php\/\u7248\u672c\/fpm\/php.ini<\/strong>\uff0c\u4ee5 root \u7528\u6237\u7f16\u8f91\u5b83\uff0c\u672b\u5c3e\u8ffd\u52a0<\/p>\n<pre><code class=\"language-bash\">extension=&quot;smbclient.so&quot;<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1733023565049.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1086px; --smush-placeholder-aspect-ratio: 1086\/319;\" \/><\/p>\n<p>\u91cd\u542f fpm<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart php\u7248\u672c-fpm.service<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"%E9%85%8D%E7%BD%AE%E5%BC%80%E6%9C%BA%E8%87%AA%E5%8A%A8%E6%8C%82%E8%BD%BD%E5%AD%98%E5%82%A8%E8%AE%BE%E5%A4%87\"><\/span>\u914d\u7f6e\u5f00\u673a\u81ea\u52a8\u6302\u8f7d\u5b58\u50a8\u8bbe\u5907<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u6bd4\u5982\u6211\u8fd9\u91cc\u989d\u5916\u63a5\u4e86\u4e00\u4e2a USB \u79fb\u52a8\u786c\u76d8\uff0c\u9996\u5148\u67e5\u8be2\u4e00\u4e0b\u8fd9\u4e2a\u786c\u76d8\u7684 UUID<br \/>\n\u6211\u8fd9\u4e2a\u786c\u76d8\u7684\u8bbe\u5907\u6587\u4ef6\u662f sdb1\uff0c\u5982\u679c\u4e0d\u77e5\u9053\u662f\u54ea\u4e2a\u7684\u8bdd\uff0c\u5728\u63d2\u5165\u5b58\u50a8\u8bbe\u5907\u4e4b\u524d\u6267\u884c\u4e00\u4e0b <strong>ls \/dev\/sd*<\/strong> \u67e5\u770b\u8bbe\u5907\u6587\u4ef6\uff0c\u63d2\u5165\u786c\u76d8\u540e\u518d\u6267\u884c\u4e00\u6b21\uff0c\u8fd9\u6837\u524d\u540e\u5bf9\u6bd4\uff0c\u65b0\u589e\u7684\u8bbe\u5907\u6587\u4ef6\u5c31\u662f\uff0c\u590d\u5236\u51fa UUID \u503c<\/p>\n<pre><code class=\"language-bash\">sudo blkid<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1733023766281.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1069px; --smush-placeholder-aspect-ratio: 1069\/112;\" \/><\/p>\n<p>\u521b\u5efa\u4e00\u4e2a\u76ee\u5f55\u7528\u6765\u6302\u8f7d\u786c\u76d8<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \u6302\u8f7d\u76ee\u5f55<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1733028428861.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 389px; --smush-placeholder-aspect-ratio: 389\/39;\" \/><\/p>\n<p>\u4ee5 root \u7528\u6237\u7f16\u8f91 \/etc\/fstab \u6587\u4ef6\uff0c\u65b0\u589e\u5185\u5bb9\u683c\u5f0f\u53c2\u8003<\/p>\n<pre><code class=\"language-bash\">UUID=\u3010UUID\u503c\u3011\u6302\u8f7d\u7684\u76ee\u6807\u8def\u5f84 \u5b58\u50a8\u8bbe\u5907\u7684\u6587\u4ef6\u7cfb\u7edf defaults,windows_names,uid=1000,gid=1000,umask=000 0 0<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1733028822953.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 957px; --smush-placeholder-aspect-ratio: 957\/244;\" \/><\/p>\n<p>\u91cd\u542f\u7cfb\u7edf\u540e\u5c31\u53ef\u4ee5\u81ea\u52a8\u6302\u8f7d<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Memories_%E3%80%90%E7%9B%B8%E5%86%8C%E7%AE%A1%E7%90%86%E3%80%91\"><\/span>Memories \u3010\u76f8\u518c\u7ba1\u7406\u3011<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5b89\u88c5\u8fd9\u4e2a\u63d2\u4ef6\u540e\uff0c\u57fa\u672c\u529f\u80fd\u53ef\u4ee5\u6309\u65f6\u95f4\u3001\u6587\u4ef6\u5939\u3001\u5730\u7406\u4f4d\u7f6e\u7ba1\u7406<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726758013308.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1180px; --smush-placeholder-aspect-ratio: 1180\/781;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726758136459.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 900px; --smush-placeholder-aspect-ratio: 900\/875;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E5%8F%8D%E5%90%91%E5%9C%B0%E7%90%86%E7%BC%96%E7%A0%81%E4%B8%8B%E8%BD%BD%E5%9C%B0%E7%90%83%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B3%A8%E6%84%8F\"><\/span>\u53cd\u5411\u5730\u7406\u7f16\u7801\u4e0b\u8f7d\u5730\u7403\u6570\u636e\u5e93\u6ce8\u610f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u6570\u636e\u5e93\u4e0b\u8f7d\u540e\u5bfc\u5165\u65f6\u53ef\u80fd\u5904\u7406\u8d85\u65f6\uff0c\u5982\u679c\u51fa\u73b0\u8d85\u65f6\u5931\u8d25\uff0c\u53ef\u4ee5\u767b\u5f55\u6570\u636e\u5e93\uff0c\u8bbe\u7f6e\u5ef6\u957f\u9650\u5236<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726758271500.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 977px; --smush-placeholder-aspect-ratio: 977\/675;\" \/><\/p>\n<pre><code class=\"language-mysql\">SET GLOBAL wait_timeout = 28800;\nSET GLOBAL interactive_timeout = 28800;<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"%E5%9B%BE%E7%89%87%E5%86%85%E5%AE%B9%E8%AF%86%E5%88%AB%E5%8A%9F%E8%83%BD\"><\/span>\u56fe\u7247\u5185\u5bb9\u8bc6\u522b\u529f\u80fd<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u53ef\u4ee5\u518d\u5b89\u88c5 Recognize \u548c Face Recognition\uff0c\u5728\u6b64\u4e4b\u524d\u6700\u597d\u4fdd\u8bc1\u73af\u5883\u914d\u7f6e\u597d<\/p>\n<p>\u5b89\u88c5 Node.js<\/p>\n<pre><code class=\"language-bash\"># \u5b89\u88c5 npm\nsudo apt install -y npm\n\n# \u5b89\u88c5\u7248\u672c\u7ba1\u7406\u5de5\u5177\nsudo npm i -g n\n\n# \u66f4\u65b0 Node.js \u5230\u6700\u65b0\u7a33\u5b9a\u7248\nsudo n stable<\/code><\/pre>\n<p>\u914d\u7f6e Composer<\/p>\n<pre><code class=\"language-bash\"># \u5b89\u88c5\u5de5\u5177\nsudo apt install -y build-essential git\n\n# \u83b7\u53d6\u6e90\u7801\ngit clone https:\/\/github.com\/composer\/getcomposer.org.git --depth=1 &amp;&amp; cd getcomposer\/web\n\n# \u6784\u5efa\nbash installer\n\n# \u62f7\u8d1d\u5230\u7cfb\u7edf\u76ee\u5f55\nmv composer.phar \/usr\/local\/bin\/composer<\/code><\/pre>\n<p>\u5b89\u88c5 PDLIB\uff08\u4eba\u8138\u8bc6\u522b\u9700\u8981\uff09<\/p>\n<pre><code class=\"language-bash\"># \u5b89\u88c5\u6784\u5efa\u5de5\u5177\nsudo apt install -y cmake php-dev\n\n# \u83b7\u53d6 DLIB \u6e90\u7801\ncd \/tmp &amp;&amp; git clone https:\/\/github.com\/davisking\/dlib.git --depth=1 &amp;&amp; cd dlib\/dlib\n\n# \u521b\u5efa\u7f16\u8bd1\u76ee\u5f55\nmkdir build &amp;&amp; cd build\n\n# \u751f\u6210\u7f16\u8bd1\u811a\u672c\ncmake -DBUILD_SHARED_LIBS=ON ..\n\n# \u7f16\u8bd1\nmake -j$(nproc)\n\n# \u5b89\u88c5\nsudo make install\n\n# \u83b7\u53d6 PDLIB \u6e90\u7801\ncd \/tmp &amp;&amp; git clone https:\/\/github.com\/goodspb\/pdlib.git &amp;&amp; cd pdlib\n\n# \u751f\u6210\u7f16\u8bd1 PHP \u6269\u5c55\u7684\u914d\u7f6e\u6587\u4ef6\nphpize\n\n# \u914d\u7f6e\u7f16\u8bd1\n.\/configure --enable-debug\n# you may need to indicate the dlib install location\n# PKG_CONFIG_PATH=\/usr\/local\/lib\/pkgconfig .\/configure --enable-debug\n\n# \u7f16\u8bd1\nmake -j$(nproc)\n\n# \u5b89\u88c5\nsudo make install<\/code><\/pre>\n<p>\u7f16\u8f91 PHP \u914d\u7f6e\u6587\u4ef6 \/etc\/php\/8.2\/fpm\/php.ini\uff0c\u5199\u5165<\/p>\n<pre><code class=\"language-bash\">[pdlib]\nextension=&quot;pdlib.so&quot;<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726835261160.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 797px; --smush-placeholder-aspect-ratio: 797\/347;\" \/><\/p>\n<p>\u91cd\u542f PHP \u670d\u52a1<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart php8.2-fpm<\/code><\/pre>\n<p>\u5b89\u88c5\u524d\u9762\u63d0\u5230\u7684\u4e24\u4e2a\u63d2\u4ef6\u5e76\u542f\u7528\u540e\uff0c\u7ba1\u7406\u8bbe\u7f6e\u4e2d\uff0c\u914d\u7f6e\u597d node \u8def\u5f84 <strong>\/usr\/local\/bin\/node<\/strong><br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726758965839.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 605px; --smush-placeholder-aspect-ratio: 605\/694;\" \/><\/p>\n<p>\u7ec8\u7aef\u8fdb\u5165 Nextcloud \u6839\u76ee\u5f55\uff0c\u5b89\u88c5\u9884\u89c8\u751f\u6210\u5668<\/p>\n<pre><code class=\"language-bash\">sudo -u www-data php occ app:install previewgenerator<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726831324454.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 782px; --smush-placeholder-aspect-ratio: 782\/375;\" \/><\/p>\n<p>\u53ef\u9009\u7684\u4eba\u8138\u8bc6\u522b\u6a21\u578b\uff1a<a href=\"https:\/\/github.com\/matiasdelellis\/facerecognition\/wiki\/Models#install-models\">https:\/\/github.com\/matiasdelellis\/facerecognition\/wiki\/Models#install-models<\/a><br \/>\n\u5728 Nextcloud \u76ee\u5f55\u4e0b\u6267\u884c\u4e0b\u8f7d\u6a21\u578b<\/p>\n<pre><code class=\"language-bash\"># \u8bbe\u7f6e\u53ef\u7528\u5185\u5b58\u5927\u5c0f\uff0c\u6bd4\u5982 2G\nsudo -u www-data php occ face:setup -M 2G\n\n# \u8bbe\u7f6e\u6a21\u578b\uff0c\u6bd4\u5982\u9009 1\nsudo -u www-data php occ face:setup -m 1<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Nextcloud_Office_%E3%80%90%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%E6%94%AF%E6%8C%81%E3%80%91\"><\/span>Nextcloud Office \u3010\u5728\u7ebf\u6587\u6863\u652f\u6301\u3011<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u9700\u8981\u72ec\u7acb\u642d\u5efa Collabora Online \u670d\u52a1\u5668\uff0c\u6216\u8005\u4f7f\u7528\u5185\u5efa\u7248\uff08\u529f\u80fd\u6ca1\u90a3\u4e48\u4e30\u5bcc\uff09\uff0c\u5185\u5efa\u7248\u53ef\u4ee5\u5207\u6362\u7ec8\u7aef\u8def\u5f84\u5230 Nextcloud \u4e0b\uff0c\u7136\u540e\u5b89\u88c5<\/p>\n<pre><code class=\"language-bash\">sudo -u www-data .\/occ app:install richdocumentscode_arm64<\/code><\/pre>\n<p>\u8bbe\u7f6e\u9009\u5185\u5efa\u7248\uff0c\u4f1a\u63d0\u793a\u5b89\u88c5\u7528\u4ec0\u4e48\u547d\u4ee4\uff08\u4e0d\u540c\u67b6\u6784\u53ef\u80fd\u4e0d\u540c\uff09<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726849780761.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1194px; --smush-placeholder-aspect-ratio: 1194\/567;\" \/><\/p>\n<p>\u7136\u540e\u5728 Nginx \u5173\u4e8e Nextcloud \u7684\u914d\u7f6e\u4e2d\u52a0\u4e0a<br \/>\n\uff08\u53c2\u8003\uff1a<a href=\"https:\/\/www.collaboraonline.com\/blog\/connecting-collabora-online-built-in-code-server-with-nginx\/\">https:\/\/www.collaboraonline.com\/blog\/connecting-collabora-online-built-in-code-server-with-nginx\/<\/a> \uff09<\/p>\n<pre><code class=\"language-bash\">    # Collabora Online \u652f\u6301\n    location ~ \\.php(?:$|\/) {\n        # Required for legacy support\n        rewrite ^\/(?!index|remote|public|cron|core\\\/ajax\\\/update|status|oc[ms]\\\/v[12]|updater\\\/.+|oc[ms]-provider\\\/.+|.+\\\/richdocumentscode_arm64\\\/proxy) \/index.php$request_uri;\n\n        fastcgi_split_path_info ^(.+?\\.php)(\/.*)$;\n        set $path_info $fastcgi_path_info;\n\n        try_files $fastcgi_script_name =404;\n\n        include fastcgi_params;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n        fastcgi_param PATH_INFO $path_info;\n        fastcgi_param HTTPS on;\n\n        fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice\n        fastcgi_param front_controller_active true; # Enable pretty urls\n        fastcgi_pass php-handler;\n\n        fastcgi_intercept_errors on;\n        fastcgi_request_buffering off;\n\n        fastcgi_max_temp_file_size 0;\n    }<\/code><\/pre>\n<p>\u91cd\u542f Nginx \u670d\u52a1\u5668\uff0c\u4e4b\u540e\u5728 Nextcloud \u4e2d\u5c31\u80fd\u4f7f\u7528\u5728\u7ebf\u6587\u6863\u4e86<br \/>\n\u8bbe\u7f6e\u52fe\u9009 <strong>office open xml<\/strong>\uff0c\u9ed8\u8ba4\u5c31\u4f1a\u4f7f\u7528\u5fae\u8f6f\u7684 office \u683c\u5f0f<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726849965438.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1159px; --smush-placeholder-aspect-ratio: 1159\/459;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1726850079691.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1708px; --smush-placeholder-aspect-ratio: 1708\/413;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Music_%E9%9F%B3%E4%B9%90\"><\/span>Music \u97f3\u4e50<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u652f\u6301\u7ec4\u7ec7\u7f51\u76d8\u4e0a\u7684\u97f3\u9891\u6587\u4ef6<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1727074254019.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 682px; --smush-placeholder-aspect-ratio: 682\/718;\" \/><\/p>\n<p>\u652f\u6301\u4e92\u8054\u7f51\u7535\u53f0\uff0c\u53ef\u4ee5\u6dfb\u52a0\u5e7f\u64ad\u7535\u53f0\u7684\u6d41\u5a92\u4f53\u94fe\u63a5\u542c\u5e7f\u64ad<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1727074376267.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1083px; --smush-placeholder-aspect-ratio: 1083\/324;\" \/><\/p>\n<p>\u4e16\u754c\u5e7f\u64ad\u5730\u56fe\uff1a<a href=\"https:\/\/worldradiomap.com\/zhongwen\">https:\/\/worldradiomap.com\/zhongwen<\/a><br \/>\n\u53ef\u4ee5\u5728\u8fd9\u4e2a\u7f51\u7ad9\u542c\u5e7f\u64ad\uff0c\u4e5f\u80fd\u83b7\u53d6\u6d41\u5a92\u4f53\u94fe\u63a5\u6dfb\u52a0\u5230 Nextcloud<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E6%89%8B%E6%9C%BA%E7%AB%AF%E9%9F%B3%E4%B9%90%E6%96%B9%E6%A1%88_%E2%80%93_Power_Ampache_2\"><\/span>\u624b\u673a\u7aef\u97f3\u4e50\u65b9\u6848 &#8211; Power Ampache 2<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>NextCloud \u624b\u673a\u5ba2\u6237\u7aef\u91cc\u7528\u4e0d\u4e86\u8fd9\u4e2a\u63d2\u4ef6\uff0c\u53ea\u662f\u672c\u8eab\u5355\u66f2\u9009\u4e2d\u64ad\u653e\u5012\u662f\u53ef\u4ee5\uff0c\u6d4f\u89c8\u5668\u6253\u5f00\u7f51\u9875\u5012\u662f\u53ef\u4ee5\u4f7f\u7528\uff0c\u4f46\u662f\u6ca1\u6cd5\u540e\u53f0\u4fdd\u6301\u64ad\u653e\u3002\u56e0\u4e3a\u624b\u673a\u7684\u7535\u6e90\u7b56\u7565\uff0c\u6253\u5f00\u7684\u7f51\u9875\u5207\u6362\u5230\u540e\u53f0\u6216\u8005\u7184\u5c4f\u4e0d\u4e45\u5c31\u4f1a\u5173\u95ed\u64ad\u653e\uff0c\u4f46\u662f\u53c8\u4e0d\u60f3\u8981\u628a\u6d4f\u89c8\u5668\u8bbe\u7f6e\u6210\u7535\u6e90\u4e0d\u9650\uff0c\u8fd9\u6837\u6d4f\u89c8\u5668\u5c31\u4f1a\u4e00\u76f4\u5728\u540e\u53f0\u8fd0\u884c\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1728041976373.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 514px; --smush-placeholder-aspect-ratio: 514\/1071;\" \/><\/p>\n<p>\u597d\u5728\u8fd9\u4e2a\u63d2\u4ef6\u63d0\u4f9b\u4e86 Ampache \u548c Subsonic \u65b9\u6848\uff0c\u53ef\u4ee5\u4f7f\u7528\u7b2c\u4e09\u65b9\u7684 APP \u8fde\u63a5\u4f7f\u7528\uff0c\u4e0a\u9762\u6709\u8d85\u94fe\u63a5\u6307\u5f15\u63a8\u8350\u7684 APP<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1728042181421.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1412px; --smush-placeholder-aspect-ratio: 1412\/867;\" \/><\/p>\n<p>\u6211\u662f Android \u624b\u673a\uff0c\u4f7f\u7528\u7684 <a href=\"https:\/\/github.com\/icefields\/Power-Ampache-2\/releases\">Power Ampache 2<\/a>\uff0c\u5728 Google Play \u4e0a\u5b89\u88c5\u662f\u6536\u8d39\u7684\uff0c\u4e0d\u8fc7 GitHub \u4e5f\u63d0\u4f9b\u4e86\u5b89\u88c5\u5305\uff0c\u53ef\u4ee5\u81ea\u5df1\u4e0b\u8f7d\u5b89\u88c5\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1728043380367.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 510px; --smush-placeholder-aspect-ratio: 510\/1113;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E6%89%8B%E6%9C%BA%E7%AB%AF%E9%9F%B3%E4%B9%90%E6%96%B9%E6%A1%88_%E2%80%93_amcfy-music%EF%BC%88%E6%8E%A8%E8%8D%90%EF%BC%89\"><\/span>\u624b\u673a\u7aef\u97f3\u4e50\u65b9\u6848 &#8211; amcfy-music\uff08\u63a8\u8350\uff09<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u89c1\uff1a<a href=\"https:\/\/blog.iyatt.com\/?p=23653\">https:\/\/blog.iyatt.com\/?p=23653<\/a><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Drawio_%E7%BB%98%E5%9B%BE\"><\/span>Draw.io \u7ed8\u56fe<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Draw.io \u672c\u8eab\u662f\u4e2a\u5f00\u6e90\u5de5\u5177\uff0c\u53ef\u4ee5\u7528\u6765\u7ed8\u5236\u601d\u7ef4\u5bfc\u56fe\u7b49\uff0c\u8fd9\u91cc\u5b89\u88c5\u8fd9\u4e2a\u63d2\u4ef6\u540e\u53ef\u4ee5\u5728 Nextcloud \u7f51\u76d8\u5728\u7ebf\u7f16\u8f91<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1739675178496.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1184px; --smush-placeholder-aspect-ratio: 1184\/876;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"notes_%E7%AC%94%E8%AE%B0\"><\/span>notes \u7b14\u8bb0<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u53ef\u4ee5\u5728\u7ebf\u7f16\u8f91 Nextcloud \u4e0a\u7684 Markdown \u683c\u5f0f\u7684\u6587\u672c\uff0c\u6709\u624b\u673a\u7aef APP\uff0c\u4e5f\u53ef\u4ee5\u7f51\u9875\u5728\u7ebf\u4f7f\u7528\u3002\u4ee5\u524d\u6211\u90fd\u7528\u5c0f\u7c73\u7b14\u8bb0\uff0c\u73b0\u5728\u5c31\u662f\u7528\u8fd9\u4e2a\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1739675328595.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 812px; --smush-placeholder-aspect-ratio: 812\/531;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1739675398373.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 384px; --smush-placeholder-aspect-ratio: 384\/519;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"passwords_%E5%AF%86%E7%A0%81\"><\/span>passwords \u5bc6\u7801<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u8be6\u60c5\u4ecb\u7ecd\uff1a<a href=\"https:\/\/apps.nextcloud.com\/apps\/passwords\">https:\/\/apps.nextcloud.com\/apps\/passwords<\/a><\/p>\n<p>\u7528\u4e8e\u540c\u6b65\u5bc6\u7801\uff0c\u652f\u6301\u81ea\u52a8\u586b\u5145\uff0c\u5404\u5e73\u53f0\u90fd\u6709\u914d\u5957\u5e94\u7528\u4f7f\u7528<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2024\/09\/image-1753595343700.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 2388px; --smush-placeholder-aspect-ratio: 2388\/1274;\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u73af\u5883 \u6811\u8393\u6d3eCM4 raspios 20240704 Debian 12 arm64 Nextcloud 30 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"zakra_page_container_layout":"customizer","zakra_page_sidebar_layout":"customizer","zakra_remove_content_margin":false,"zakra_sidebar":"customizer","zakra_transparent_header":"customizer","zakra_logo":0,"zakra_main_header_style":"default","zakra_menu_item_color":"","zakra_menu_item_hover_color":null,"zakra_menu_item_active_color":null,"zakra_menu_active_style":"","zakra_page_header":true,"_lmt_disableupdate":"no","_lmt_disable":"no","footnotes":""},"categories":[1,598,596,575,600,594],"tags":[],"class_list":["post-17296","post","type-post","status-publish","format-standard","hentry","category-all","category-linux","category-nginx","category-575","category-600","category-594"],"modified_by":"IYATT-yx","_links":{"self":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/17296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17296"}],"version-history":[{"count":11,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/17296\/revisions"}],"predecessor-version":[{"id":23661,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/17296\/revisions\/23661"}],"wp:attachment":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17296"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17296"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}