老柯修机铺

通讯行老师傅的手机软件笔记——每款 App 装过、用过,才敢写下来

1panel 手機端的自動化潛力盤點

以自動化老手的視角,盤點 1panel 這款 Linux 伺服器運維面板助手的自動化能力:哪些值得交給機器、哪些留給雙手、以及自動化失效時的兜底方案。

1panel 是什麼

1panel官網 是一款由凌霞軟體開發、支援遠端管理 Linux 伺服器運維面板的手機端助手,包名 cn.lxware.onepanel,最新版本 1.1.5,安裝包約 48.50M。它的定位和市面上常見的伺服器運維面板類似,但走的是開源透明化路線——官方文檔明確把自己歸類為「更適合喜歡深究原理的技術驅動型用戶」的選擇,而非給純新手的一鍵式黑盒。

我第一次裝上它是因為手上同時跑著三台小型雲主機、一個虛擬專用伺服器,還有客戶那邊的兩台內網機器。過去半年我養成了每天早上去登入各個面板掃一遍指標的習慣——CPU 有沒有破 80%、記憶體吃不吃緊、磁碟空間是不是快滿了。這事本身不費時,但重複三次之後就覺得腦殼痛。1panel 讓我把這些指標集中在同一支 App 裡看,而且用了一段時間之後發現它藏了不少「設一次就不用再管」的自動化能力。

安裝

1panel 目前只有 Android APK 分發,沒有 iOS 版本,也沒有 Web 或桌麵客戶端。1panel下載 後直接點 APK 安裝即可,屬於標準安卓應用的安裝流程,不需要 root 或特殊權限。首次啟動會引導你完成伺服器配對——在手機端輸入伺服器的 IP 或域名、SSH 連接埠、以及一組憑證,App 會自動在遠端安裝一個 agent 常駐程序,之後所有面板的指令都透過這個 agent 回傳結果。

安裝與配對過程中有兩件值得留意的事:第一,agent 的安裝需要遠端伺服器具備 sudo 權限,如果你用的是非 root 使用者登入,確認該使用者有 sudo 權限;第二,App 本身只作為控制端,所有運維動作實際發生在遠端 Linux 機器上——1panel 不承擔任何運算或存儲,手機端掉線不會影響伺服器的既有配置。如果之後要換手機,重新安裝 App 後再跑一次配對即可,遠端 agent 會自動識別並恢復連線。

系統防火牆的規則列表,可見不同狀態的規則

內建的自動化能力盤點

1panel 的自動化並不是什麼神秘功能,它就藏在面板各個模組的「設置」頁籤裡,主要分四類:定時任務、批量操作、聯動觸發、預設範本。

定時任務是最直觀的一類——1panel文檔裡對應的是「備份與計畫任務」模組,可以設定備份週期(例如每日凌晨 2 點自動備份網站與資料庫)、URL 探活、以及自訂 Shell 腳本執行。我現在跑的兩台雲主機就是每天凌晨自動把全站與 MySQL 資料庫打包上傳到物件存儲桶,這個任務設好之後三個月沒動過。

批量操作集中在網站與安全模組:網站側可以一次選取多個站點套用同一份偽靜態規則或重定向規則;防火牆側支援規則的導入與匯出,多台機器之間可以複用同一套規則文件。文檔裡特別提到防火牆規則有五種狀態,其中「已接管」與「已漂移」是面板在自動監控的體現——它會比對面板記錄與伺服器實際規則的差異,發現漂移時直接標記出來,不需要你手動去 iptables -L 核對。

聯動觸發相對隱蔽,主要見於 Docker 埠防護這個模組。文檔有一句很關鍵的描述:「面板會基於容器的埠發布情況自動維護對應策略」——意思是你新增一個容器並發布埠之後,防火牆會自動產生對應的防護規則,容器刪除時策略同步清理,不會留孤兒規則在那裡。這比每裝一個容器就手動跑一遍防火牆配置要省心得多。

預設範本是「偽靜態規則」頁面裡的內建模板——WordPress、Halo 這些主流建站程序的規則直接選模板套用,省去從頭寫 Nginx 規則的麻煩。

計畫任務的備份配置界面

值得交給機器的兩件事

盤點完能力之後,我把真正值得自動化的場景濃縮成兩件事——兩者的共同點是:頻率高、步驟固定、收益明確,而且一旦設好就幾乎不需要再碰。

第一件是每日備份。過去我曾經因為一條 SQL 指令敲錯把某個 WordPress 站的文章表搞壞,還好當天有手動備份救了回來。之後我就把備份改成自動:在 1panel 裡建了一條每日凌晨 2 點的計畫任務,備份範圍勾選「網站根目錄 + 對應資料庫」,存儲位置選了某個物件存儲桶的掛載目錄,保留最近 14 份。設置路徑是「備份與計畫任務 → 備份任務 → 新增」,頁面裡可以直接勾選要備份的網站,不需要敲任何命令。這件事從設好之後沒再動過,三個月裡每日備份都按時完成。

第二件是防火牆規則的多機同步。我手上三台雲主機跑的應用相似——都是 Nginx + PHP + MySQL 的組合,需要開放的埠也差不多。最初我在每台機器上手動配置防火牆規則,後來發現 1panel 的防火牆頁面有「匯出規則」與「匯入規則」按鈕——先在一台機器上配好規則,匯出成 JSON 文件,然後在另外兩台機器上直接匯入。這個動作本身不算自動化,但匯入的時候面板會自動標記規則狀態,漂移的地方一眼就能看到,省去了逐條比對的麻煩。如果之後我要加第四台機器,直接把同一份規則文件匯入就行。

不值得自動化的幾件事

並不是所有重複動作都值得交給機器。盤點下來有三類我傾向於手動處理:

第一類是防火牆規則的新增與調整。文檔裡有一條「防失聯守則」——首次啟用、切換後端、新增丟棄規則、調整規則順序之前,要保留一個可用的 SSH 會話別關,並確認雲廠商控制台的帶外登入方式可用。這種動作的觸發條件太碎:有時候是掃描攻擊來了要臨時封禁一個 IP,有時候是要加一個新的埠,有時候是要切換防火牆後端。用自動化處理這種碎場景的代價是:自動化腳本寫起來麻煩、執行時如果判斷條件錯了反而把自己鎖在門外。收益小、風險高,不如直接手動操作。

第二類是偽靜態規則的調試。雖然 1panel 內建了主流框架的模板,但實際情況中每個站點的目錄結構、URL 模式都可能不同,模板套用之後常常還要微調幾行規則才能正常工作。這部分我傾向於手動編輯,觀察改動之後的實際訪問效果,再慢慢對齊。自動化在這裡反而會讓我對規則的理解越來越淺,最後出問題時不知道從哪裡排查起。

第三類是 HTTPS 證書的續期與更新。文檔裡提到證書可以設自動續期,但我自己還是習慣每月檢查一次證書狀態——雖然續期大多數時候能自動完成,但萬一 DNS 驗證失敗、或者證書頒發機構臨時出問題,手動檢查能比自動化失敗早好幾天發現問題。這件事的頻率夠低(每月一次),手動成本可以接受。

自動化失效時怎麼兜底

自動化不是萬靈丹,總有失效的時候。1panel 在這方面做了幾個預防機制:

首先是規則狀態監控。防火牆規則有五種狀態,其中「已漂移」就是面板發現記錄與實際規則不一致時的標記——可能是你用 iptables -A 加了一條規則面板沒記錄,也可能是外部程式改了規則。文檔建議發現漂移先排查來源,再點「同步」按鈕把面板記錄刷新到最新狀態,不要直接在面板裡改動漂移中的規則。

其次是計畫任務的報告。文檔裡對應的是「備份與計畫任務」模組的執行報告——每條任務執行完會記錄成功或失敗、執行耗時、最後一次執行時間。如果某條備份任務連續幾天都顯示「未執行」,點進去看報告就能定位問題:是存儲桶掛載斷了,還是網站目錄權限變了,還是 agent 掉線了。

最後是 Docker 埠防護的孤兒清理。文檔裡提到「孤立策略」——容器已經刪除但防護策略殘留在那裡,面板會自動標記並提供清理按鈕,不會讓這些孤兒策略越積越多。

結論

1panel 的自動化能力屬於「夠用就好」的程度——沒有炫技的工作流引擎,但把日常運維中最值得自動化的備份、批量規則同步、以及 Docker 埠防護聯動都覆蓋到了。它適合手上同時跑 3 到 10 台機器、但不想花時間搭完整 DevOps 平台的技術型用戶;機器再少的話自動化帶來的收益也不明顯,再多的話可能需要上更重的方案。我目前的使用強度是三台雲主機加一個虛擬專用伺服器,自動化處理了其中大約三分之一的重複動作,剩下的留給手動——這個比例對我來說剛好。

本文为个人基于网络公开资料整理编写,非官方内容,仅供学习交流参考;软件版权归原作者所有,请支持正版;使用过程中遇到问题请查阅官方渠道,本文不承担任何责任。

同类文章

Structured 为什么选了时间线而不是待办列表

同为日程管理,Structured 从时间线模型、全天任务顶栏到双模式小组件,处处体现出一套深思熟虑的产品哲学。本文从设计原理和技术取舍的角度拆解它为何走了一条不寻常的路。