awesome-selfhosted 深度教學:用清單規劃你的私有雲

§1 定位與本質

awesome-selfhosted 不是一個軟體工具,而是一份「策展型清單」(curated list)。它列出約 1,500+ 個 Free Software (FOSS) 網路服務與 Web 應用,全部都能在你自己的伺服器上跑,不需要交資料給雲端 SaaS。

關鍵特徵:

  • 內容版:唯一的有效檔案是 README.md(2,302 行),加上 non-free.md(部分專有軟體的備選清單)。
  • 自動生成:README 不是手寫的,由姊妹倉庫 awesome-selfhosted-data 中的 YAML 資料源,透過 hecat 工具自動建構出來。所有 commits 訊息都是 [bot] build markdown from awesome-selfhosted-data <sha>
  • 體量:294,393 stars / 13,668 forks,是 GitHub 上規模最大的 awesome list 之一,與 awesome (sindresorhus)、awesome-python 同級。
  • 授權:清單內容採 CC-BY-SA-3.0(內容可分享、可修改、需署名 + 相同方式分享)。各被收錄軟體則保有其原本授權(多為 MIT / GPL / AGPL / Apache)。

它不解決的問題

  • 不告訴你怎麼安裝某個軟體(要去那個軟體自己的 repo / 官網看)。
  • 不做品質排名(無星數、無「最佳推薦」),由你自己根據授權、技術棧、社群活躍度評估。
  • 不收錄專有軟體(SaaS / 閉源),那些可以參考 非自由 fork 清單

§2 怎麼用(不是怎麼安裝)

對使用者而言,本 repo 沒有「執行檔」或「指令」,使用方式是 瀏覽 + 摘錄

用法 A:直接瀏覽(最快)

訪問 https://awesome-selfhosted.net/(官網,依資料源自動產生靜態網站)。優於 GitHub README 的地方:

  • search分類過濾授權過濾
  • 顯示 GitHub star 數、近期活動、Docker / Helm 可用性

用法 B:clone 到本機 grep

當你已經知道某類需求(例如「找一個 self-hosted 的 password manager」),clone 下來用 grep / rg 比網頁快:

1git clone --depth 1 https://github.com/awesome-selfhosted/awesome-selfhosted.git
2cd awesome-selfhosted
3# 找 password manager 分類所有條目
4sed -n '/## Password Managers/,/^---/p' README.md | grep -E '^- '
5# 找所有 AGPL 授權的 note-taking 工具
6sed -n '/## Note-taking & Editors/,/^---/p' README.md | grep AGPL

用法 C:鏡像到自己組織的內部 wiki

很多公司會 fork 一份,再剪掉不相關的分類(例如刪掉 Games / Genealogy),保留 Backup / Monitoring / Identity Management,當作 IT 採購評估表。因為內容是 CC-BY-SA,必須署名 + 改作物仍採 CC-BY-SA

用法 D:搭配 ai-gh-save 或 graphify 作為輸入

可以把 README.md 餵給 ai-knowledge template 的 ai-gh-save 流程,為每個被列出的軟體自動跑一次 metadata 抓取,最終建出公司內部的私有雲生態系資料庫。後段詳述(§9)。

§3 內容架構(分類學)

下圖是頂層分類的整體分布。完整 90+ 分類太細無法全展,僅顯示主軸:


mindmap
  root((awesome-selfhosted))
    通訊
      Email_完整方案
      Email_MTA_MDA
      IRC_SIP_XMPP
      影音會議
      社群論壇
    內容管理
      CMS
      Blogging
      Wikis
      文件管理
      電子書
    協作辦公
      Groupware
      Office_Suites
      日曆與聯絡人
      Note_taking
      Project_Management
    開發運維
      Software_Development
      CI_CD
      API_Management
      Monitoring
      Backup
    身分_安全
      Identity_Management
      Password_Managers
      Federated_Auth
      VPN
    財務_電商
      Money_Budgeting
      E_commerce
      ERP
      CRM
      HRM
    媒體
      Media_Streaming
      Audio_Streaming
      Video_Streaming
      Photo_Galleries
      Media_Management
    檔案_儲存
      File_Transfer_Sync
      Distributed_FS
      Object_Storage
      P2P
    家庭_生活
      Recipe_Management
      Health_Fitness
      Genealogy
      CSA_農場
    基礎建設
      DNS
      Web_Servers
      Proxy
      Search_Engines
      Self_hosting_Solutions
    AI_其他
      GenAI
      IoT
      Maps_GPS
      Games
      Miscellaneous

結構規律:每個條目格式為

1- [Name](URL) - 一行描述。([Demo](url), [Source Code](url), [Clients](url)) `License` `Language/Platform`

末尾的 LicenseLanguage tag 是機器可解析的;這也是 hecat 能從 YAML 生成 markdown 又能反向驗證的基礎。

§4 Helper / 生成 Pipeline

這個 repo 本身沒有 Makefile / GitHub Actions workflow(只有 PR template 跟 issue template config,且兩個都把使用者引導去 awesome-selfhosted-data)。

實際的生成流程在上游:

1awesome-selfhosted-data (YAML source)
23hecat (https://github.com/nodiscc/hecat)
4    ↓ build markdown from YAML
5    ↓ check URLs / GitHub stars / activity
6    ↓ regenerate awesome-selfhosted.net static site
78[bot push] → awesome-selfhosted/README.md

hecat 是什麼?

HEcat — High-Entropy Catalogue (or “do as much as possible automatically”)

nodiscc(本專案維護者)開發的 Python 工具,職責:

  1. awesome-selfhosted-data 的 YAML(每個軟體一個 entry)
  2. 跑 URL liveness 檢查、抓 GitHub metadata
  3. 用 Jinja2 template 渲染成 markdown
  4. push 到 awesome-selfhosted repo

對你的意義:如果你想做自己領域的 awesome list(例如 awesome-bioinformatics-selfhosted),可以直接 fork hecat 改 schema。

§5 應用場景

場景 A:Homelab 規劃

剛買了一台 N100 mini PC 或 Synology NAS,想知道「除了 Plex / Jellyfin 還能跑什麼」。awesome-selfhosted 是探索的起點:照分類掃過去,每個分類選 1-2 個試用。

場景 B:脫離 SaaS / 數位主權 (digital sovereignty)

不想再用 Google Drive / Dropbox / Notion / Slack。awesome-selfhosted 幫你找 1:1 替代:

SaaSself-hosted 替代
NotionAppFlowy, Outline, Wiki.js, BookStack
Google DriveNextcloud, Seafile, OwnCloud
SlackMattermost, Rocket.Chat, Zulip
GmailMailcow, Mail-in-a-Box, Modoboda
ZoomJitsi Meet, BigBlueButton, OpenVidu
DropboxSyncthing, Resilio Sync, Nextcloud
TrelloWekan, Kanboard, Focalboard
GitHubGitea, Forgejo, GitLab CE

場景 C:IT 內審 / 替代採購評估

公司 SaaS 預算被砍,老闆要你「找看看開源替代方案」。awesome-selfhosted 提供初步候選池,再以授權、社群活躍度、Docker 可用性過濾。

場景 D:研究機構 / 學校 GDPR / HIPAA 合規

把資料留在自己機房,避免雲端跨境合規風險。本清單已內建 標記(Anti-features,§8 詳述)標出「雖然開源但仍依賴專有外部服務」的條目,直接幫你排除。

§6 資安考量

6.1 對 Repo 本身的評估:🟢 低風險

  • 無 GitHub Actions workflows.github/workflows/ 不存在),不會有 CI poisoning 風險
  • 只有 PULL_REQUEST_TEMPLATE.mdISSUE_TEMPLATE/config.yml 兩個樣板檔
  • 沒有任何可執行程式碼(無 .py / .js / .sh
  • 內容掃描:grep 出的「password / secret / token」全部是被收錄專案的名稱(如「Password Managers」分類、「One Time Secret」工具),無 embedded credentials
  • License 為 CC-BY-SA,不會引入授權污染

6.2 真正的風險面:self-hosted 軟體本身

清單本身安全,但你自架的軟體才是攻擊面:

風險建議
暴露面:把服務放公網就是把攻擊面打開預設只開 VPN / Tailscale 內網,反向代理用 Caddy / Traefik 統一 TLS
更新負擔:SaaS 自動更新,self-hosted 要你自己盯 CVEWatchtower 自動更新 Docker;訂閱被選軟體的 GitHub Releases atom
備份:硬碟壞了 = 全部資料沒了至少 3-2-1:3 份備份、2 種媒介、1 份異地(restic / borgbackup / Kopia)
權限管理:很多 OSS 預設無強制密碼一律前面架 SSO(Authentik / Authelia / Keycloak),不要直接暴露原生登入頁
AntiFeatures:條目可能依賴專有後端看到 符號就要警覺:例如「需要 Google reCAPTCHA」「需要 Twilio API」

6.3 LLM 觀點:被當成 prompt 注入工具的可能

低。本 repo 為純內容、純連結,無可執行 markdown 巧用(如惡意 image base64、隱藏 zero-width 字元)。但如果你把整份 README 丟給 LLM 做篩選,注意 LLM 不會驗證連結真實性——某些舊條目的 GitHub repo 可能已被棄置或被惡意接管。建議搭配 hecat 的 url-check 結果。

§7 FAQ

Q1:跟 awesome-sysadmin、awesome-docker、awesome-kubernetes 有什麼差別?

  • awesome-sysadmin:DevOps 工具(log、monitoring、provisioning),偏向你「管理什麼」
  • awesome-docker / k8s:容器生態,偏向你「用什麼跑」
  • awesome-selfhosted:「你能在自己機器上跑哪些 end-user 應用」,偏向你「要替代什麼 SaaS」

三者互補不重疊,homelab 玩家通常都收藏。

Q2:為什麼這個 repo 的 PR / Issue 都被引導去別的 repo?

維護者把「資料源」(YAML)和「產出物」(README)分開到兩個 repo。讓貢獻者改 YAML(結構化),由 bot 自動生成 markdown。這設計避免 markdown merge conflict(萬人協作 awesome list 的 PR 衝突是惡夢)。

Q3:條目品質怎麼確保?

  • hecat 跑 URL liveness 檢查,連結 404 會被標記
  • 進入 list 前需符合:FOSS license、可以 self-host、有公開原始碼、文件不是空的
  • 太久沒更新(5+ 年)的會被移到「inactive」或移除
  • 不做評價——「能不能用」由你決定

Q4:有沒有「最佳推薦」?

維護者明確拒絕做星級評等(會引起社群爭執且維護成本爆炸)。替代方案:selfh.st/apps 有編輯整理的「推薦」、Reddit /r/selfhosted 每年有社群票選。

Q5:我想加自己的軟體進清單?

awesome-selfhosted-dataCONTRIBUTING.md,加一個 YAML entry。等待 bot 重建。基本要求:FOSS license、可 self-host、有 source code link、有合理的 README。

§8 進階

8.1 Anti-features 系統

清單末尾定義了一組標記,幫你快速看出「雖然開源但有坑」:

符號意義
Depends on a proprietary service outside the user’s control(依賴專有外部服務,例如 Twilio、Google Maps API)

更完整的 AntiFeatures(如「需要付費 plan 才解鎖功能」、「telemetry」)目前以 issue 形式討論中(#4187)。

8.2 授權分類

清單內所有條目末尾的 License tag 是機器可解析的;目前涵蓋的授權見 README 的「List of Licenses」段(GPL-3.0、AGPL-3.0、MIT、Apache-2.0、BSD、MPL、Custom 等)。

實務建議

  • 企業內部使用:MIT / Apache-2.0 / BSD 最寬鬆
  • 公益 / 社群部署:GPL-3.0 / AGPL-3.0 確保 fork 也保持開源
  • 避免NOASSERTION / 沒有明確 license(無法律保障)

8.3 貢獻流程


flowchart LR
    A[發現好工具] --> B[到 awesome-selfhosted-data]
    B --> C[fork + 新增 YAML entry]
    C --> D[填欄位 name/url/license/lang/desc]
    D --> E[PR]
    E --> F{hecat 自動驗證}
    F -->|fail| C
    F -->|pass| G[人工審核]
    G --> H[合併]
    H --> I[bot rebuild README]
    I --> J[awesome-selfhosted master 更新]

8.4 衍生工具

§9 與本 AI Knowledge Template 整合

9.1 作為 ai-gh-save 的批次輸入源

awesome-selfhosted README 的每個條目都包含 GitHub URL,可以批次餵給 ai-gh-save

1# 1. 從 README 抽出所有 GitHub URL(去重)
2grep -oE 'github\.com/[^ )]+' projects/awesome-selfhosted/repo/README.md \
3  | sort -u | sed 's/[),]$//' > /tmp/all-gh-urls.txt
4wc -l /tmp/all-gh-urls.txt   # ~1000+ URLs
5
6# 2. 篩選你關心的分類後,批次跑 gh-save
7# (在主對話中:`gh: <URL>` 或 batch wrapper)

9.2 與 graphify 結合:建一張 self-hosted 生態系圖

  • ai-gh-save full: 抓 N 個目標軟體的 metadata
  • graphify init . 對抓回的 markdown 建知識圖
  • 找出「常被一起部署」的群集(例如 Nextcloud + Collabora、Jellyfin + Sonarr + Radarr)

9.3 與 paper-qa-lite 結合:做領域知識 RAG

把整份 README + 自己關心類別的詳細 metadata 做 RAG 索引:

1pq: "我需要一個支援 Docker、有 SSO 整合、license 是 AGPL 的 wiki 軟體" \
2   projects/awesome-selfhosted/repo/README.md \
3   inbox/wiki-related/

awesome-selfhosted 為純公開內容、無機密性需求,可放在 default project 內,不需 mode 切換。

§10 重點摘要

  1. 本質:CC-BY-SA-3.0 授權的 curated list,由 YAML 自動生成,全自由軟體、可自架
  2. 規模:~1,500 條目、90+ 分類、294K stars,全球最大 self-hosted 軟體目錄
  3. 架構:本 repo = README(產出);姊妹 repo awesome-selfhosted-data = YAML(資料源);生成器 = hecat
  4. 用法:瀏覽官網 / clone+grep / 內網鏡像 / 餵給其他工具當輸入源
  5. 資安:本 repo 🟢 無風險;但自架軟體本身才是攻擊面,要做暴露面控制、自動更新、備份、SSO
  6. 應用:homelab 規劃、SaaS 替代、GDPR/HIPAA 合規部署、IT 採購評估
  7. 不做的事:不做品質排名、不教你裝、不收專有軟體(→ non-free.md
  8. 整合:在本 AI Knowledge Template 中可作為 ai-gh-save 批次源、graphify 知識圖節點、paper-qa-lite RAG 語料
  9. 貢獻:不要在本 repo 開 PR;走 awesome-selfhosted-data(YAML),bot 會幫你重建
  10. 替代瀏覽:官網 search / selfh.st / awweso.me 比 GitHub README 更好用

§11 進一步閱讀