排查 Nextcloud 應用程式安裝後報告無網路連線的問題

自 Nextcloud 33 版本起,App Store 元資料請求逾時時間預設為 120 秒,可透過相關設定進行調整occ。這有助於解決響應緩慢的問題,但「由於伺服器沒有網路連接,應用無法安裝」的錯誤訊息應首先在運行 Nextcloud 的伺服器或容器中進行檢查,而不是在瀏覽器中進行檢查。

請從 Nextcloud 本身的執行時間環境中測試 App Store 端點,然後修復特定故障:DNS、出站 HTTPS、代理程式設定、憑證信任或 App Store 設定。此訊息較為籠統,並不能證明整個伺服器已離線。

1. 檢查安裝失敗的原因

檢查是所有應用程式都無法安裝還是只有某個應用程式無法安裝。如果應用程式目錄可以載入但某個應用程式無法安裝,請檢查該應用程式與 Nextcloud 版本的相容性以及應用程式目錄權限;這不一定是網路問題。

為了更清晰地顯示錯誤訊息,請嘗試從命令列安裝。如果安裝成功,應用程式將會被安裝,因此請使用正確的應用程式 ID。請以 HTTP 使用者身分執行命令以保留檔案所有權。在 Debian 或 Ubuntu 系統上:

sudo -u www-data php /var/www/nextcloud/occ app:install news

替換news為您需要的應用 ID。在 Docker 中,以 Nextcloud 應用程式容器的 Web 使用者身分執行該指令。將完整輸出與 [此處應填寫輸出內容] 進行比較nextcloud.log;相容性或權限錯誤與 DNS 故障的解決方法不同。

一個深色的伺服器終端,顯示抽象的 DNS 和 HTTPS 命令列以及綠色的狀態指示器。
圖示:伺服器終端表示正在檢查 Nextcloud 運行時的連接性;這不是記錄的測試結果。

2. 從 Nextcloud 運行時測試 DNS 和 HTTPS

請在 Nextcloud 的 PHP 進程運行的位置執行這些檢查。從您的筆記型電腦或 Docker 主機發出的成功請求並不能證明應用程式容器具有相同的網路存取權限。

getent ahosts apps.nextcloud.com
curl -sS --connect-timeout 10 --max-time 30 -o /dev/null -w 'HTTP %{http_code}' https://apps.nextcloud.com/api/v1/categories.json

預設的 App Store URL 是[此處應https://apps.nextcloud.com/api/v1填入預設位址];Nextcloud 會從中取得元資料categories.json。 DNS 解析應傳回位址,HTTPS 請求應回傳回應。名稱解析錯誤或逾時可能指向 DNS、路由、防火牆或代理伺服器;TLS 錯誤可能指向憑證信任或系統時間問題。 HTTP 錯誤表示伺服器已回應,因此請檢查 URL 和代理伺服器的回應。

在 Docker 中,對 Nextcloud 應用容器執行檢查。確認 DNS 運作正常,並且允許出站 TCP 443 連接埠。如果代理程式過濾了目標位址,請檢查 Nextcloud 日誌,尋找 App Store 下載主機名稱以及目錄主機名稱。

網路診斷面板,包含獨立的 DNS、雲端存取和證書行
圖示:DNS、HTTPS 和憑證信任的診斷類別;綠色指示器並非來自此伺服器的結果。

3. 在不降低安全性的前提下,修正代理或TLS問題

如果出站流量需要代理,請為 Nextcloud 的 PHP/HTTP 用戶端設定代理,而不僅僅是管理員的瀏覽器或 shell。 Nextcloud 支援可選proxy的代理設定。請妥善保管代理憑據。檢查 PHP-FPM 和 CLI 是否繼承了相同的環境變數。proxyuserpwdproxyexcludeHTTPS_PROXYNO_PROXY

如果出現 TLS 錯誤,請檢查伺服器時脈並更新作業系統 CA 憑證包。如果使用經批准的企業檢查代理,請將其受信任的 CA 憑證新增至 PHP 執行時間環境。請勿停用 TLS 驗證或將其curl -k用於 App Store 請求;這樣做會削弱對冒充下載主機的保護。

程式碼編輯器顯示了一個 PHP 配置數組,其中幾個設定項已高亮顯示。
圖示:在不洩漏憑證的情況下,檢查 Nextcloud 的出站代理程式和應用程式商店設定配置。

4. 驗證 App Store URL 和安裝權限

App Store 預設啟用,其預設 URL 為https://apps.nextcloud.com/api/v1:。使用以下命令檢查config/config.php或查詢有效值occ:

sudo -u www-data php /var/www/nextcloud/occ config:system:get appstoreenabled
sudo -u www-data php /var/www/nextcloud/occ config:system:get appstoreurl

如果appstoreenabled該值明確為 false,則僅當您的策略允許使用公共應用程式商店時才啟用它。如果appstoreurl指向舊的或無法存取的自訂應用程式商店,則僅當您打算使用 Nextcloud 的公共應用程式商店時才恢復預設設定。使用自託管應用程式商店的組織應保留該 URL,並修復其 DNS、憑證或存取路徑。

如果目錄載入但安裝仍然失敗,請檢查apps_paths有效配置中的條目。至少要有一個已配置的應用程式目錄對 Nextcloud Web 伺服器使用者俱有寫入權限。請修正目錄擁有者或群組及其預期的寫入權限;不要將目錄設定為全域可寫。如果應用程式被組織允許清單封鎖或與您的 Nextcloud 版本不相容,則需要管理員策略或版本控制,而不是網路變更。

5. 重試,然後僅在證據顯示速度較慢時才調整超時時間。

DNS、HTTPS、代理程式、TLS 和設定檢查通過後,請從「套用」頁面或使用相同的occ app:install指令重試安裝。如果請求可行但始終超過配置的元資料逾時時間,Nextcloud 33 及更高版本可以設定更長的逾時時間。例如:

sudo -u www-data php /var/www/nextcloud/occ config:app:set settings appstore-timeout --value=180

這將等待時間增加到 180 秒;但不會修復被封鎖的出口流量、無效的憑證或錯誤的儲存 URL。 Nextcloud 33 及更高版本中,預設等待時間為 120 秒。若要移除此覆蓋並恢復預設值:

sudo -u www-data php /var/www/nextcloud/occ config:app:delete settings appstore-timeout

對於有意與外部網路隔離的伺服器,使用經過認證的自架應用程式商店是支援的配置方案。切勿嘗試透過下載任意應用 ZIP 檔案並將其放置在應用程式目錄中來解決服務中斷問題;請使用可信任來源,並驗證該版本是否與您的伺服器版本相符。

終端視圖,顯示應用程式安裝命令和高亮顯示的錯誤部分
圖示:通用命令和日誌視圖;實際錯誤詳情必須來自受影響的伺服器。

確認

確認應用程式商店目錄已加載,目標應用程式已安裝並出現在已啟用應用程式清單中,且日誌中不再記錄連線、TLS 或逾時錯誤。如果 Nextcloud 運行時回應了端點,但 UI 仍然顯示無網路連接,請比較應用程式商店 URL 和設置,檢查 PHP-FPM 和 CLI 之間的代理環境差異,並確認是否只有一個應用程式被封鎖或不相容。

參考資料:Nextcloud 應用程式管理和 App Store 設定;Nextcloud OCC 應用和設定指令;Nextcloud 代理程式設定參數;Nextcloud 應用程式商店元資料端點。

留下評論

排查 Nextcloud 應用程式安裝後報告無網路連線的問題

排查 Nextcloud 應用程式安裝後報告無網路連線的問題

追蹤 App Store 安裝失敗是否由 DNS、HTTPS、代理、TLS 或 Nextcloud 伺服器本身的設定問題所引起。

使用定時佇列來控制 Nextcloud 預覽版 CPU 峰值

將縮圖製作移至受控的後台計劃,修剪未使用的預覽尺寸,並在不使 Nextcloud 伺服器過載的情況下驗證佇列。

取得 Nextcloud 桌面同步功能,擺脫「處理文件」的束縛

找到導致 Nextcloud 同步失敗的檔案、排除規則、連線問題或用戶端資料庫狀態,然後安全地驗證上傳和下載。

透過調整右側限制來清除 Nextcloud OPcache 警告

找到觸發 Nextcloud 警告的 PHP OPcache 限制,更新正確的 Web PHP 配置,安全重啟,並驗證結果。

將 Nextcloud 連接到 CODE Docker:設定和權衡

將 Nextcloud 連接到 CODE Docker:設定和權衡

比較內建程式碼和基於 Docker 的程式碼,然後透過安全的 HTTPS 反向代理將 Collabora Online 連接到 Nextcloud。

使用 Galera 建構彈性 Nextcloud 集群

規劃一個可靠的 Nextcloud 高可用性部署,包括共用儲存、Redis 鎖定、支援仲裁的 MariaDB 路由和實用的故障轉移檢查。

當直接媒體傳輸失敗時,如何透過 Nextcloud Talk 進行通話

當直接媒體傳輸失敗時,如何透過 Nextcloud Talk 進行通話

當防火牆或限制性 NAT 阻止直接呼叫媒體時,配置並驗證 Nextcloud Talk 的可達 TURN 中繼。

透過恢復正確的檔案清除 Nextcloud 完整性警告

使用無效文件報告來識別已更改、缺失或多餘的 Nextcloud 程式碼,安全地恢復受信任的文件,並驗證結果。

使用 OAuth2 將 Gmail 或 Microsoft 365 連接到 Nextcloud Mail

使用 Gmail 或 Microsoft 365 為 Nextcloud Mail 設定 OAuth2,驗證接收和傳送,並解決常見的同意和 SMTP 失敗問題。

使用 OCC 安全清除卡住的 Nextcloud 維護模式

使用 OCC 安全清除卡住的 Nextcloud 維護模式

使用 OCC 還原 Nextcloud 存取權限,驗證資料庫遷移狀態,並為歸檔、Docker 或 Snap 安裝選擇正確的命令。