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`
末尾的 License 與 Language 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)
2 ↓
3hecat (https://github.com/nodiscc/hecat)
4 ↓ build markdown from YAML
5 ↓ check URLs / GitHub stars / activity
6 ↓ regenerate awesome-selfhosted.net static site
7 ↓
8[bot push] → awesome-selfhosted/README.md
hecat 是什麼?
HEcat — High-Entropy Catalogue (or “do as much as possible automatically”)
由 nodiscc(本專案維護者)開發的 Python 工具,職責:
- 讀
awesome-selfhosted-data的 YAML(每個軟體一個 entry) - 跑 URL liveness 檢查、抓 GitHub metadata
- 用 Jinja2 template 渲染成 markdown
- push 到
awesome-selfhostedrepo
對你的意義:如果你想做自己領域的 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 替代:
| SaaS | self-hosted 替代 |
|---|---|
| Notion | AppFlowy, Outline, Wiki.js, BookStack |
| Google Drive | Nextcloud, Seafile, OwnCloud |
| Slack | Mattermost, Rocket.Chat, Zulip |
| Gmail | Mailcow, Mail-in-a-Box, Modoboda |
| Zoom | Jitsi Meet, BigBlueButton, OpenVidu |
| Dropbox | Syncthing, Resilio Sync, Nextcloud |
| Trello | Wekan, Kanboard, Focalboard |
| GitHub | Gitea, 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.md、ISSUE_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 要你自己盯 CVE | 用 Watchtower 自動更新 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-data 的 CONTRIBUTING.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 衍生工具
- awesome-selfhosted-search — 官方 search 前端
- awweso.me — 第三方更現代的 UI
- selfh.st — 編輯精選 + 新增「Docker / Helm」可用性 metadata
- WhatToServe — 把清單組合成「Stack」推薦
§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 重點摘要
- 本質:CC-BY-SA-3.0 授權的 curated list,由 YAML 自動生成,全自由軟體、可自架
- 規模:~1,500 條目、90+ 分類、294K stars,全球最大 self-hosted 軟體目錄
- 架構:本 repo = README(產出);姊妹 repo
awesome-selfhosted-data= YAML(資料源);生成器 =hecat - 用法:瀏覽官網 / clone+grep / 內網鏡像 / 餵給其他工具當輸入源
- 資安:本 repo 🟢 無風險;但自架軟體本身才是攻擊面,要做暴露面控制、自動更新、備份、SSO
- 應用:homelab 規劃、SaaS 替代、GDPR/HIPAA 合規部署、IT 採購評估
- 不做的事:不做品質排名、不教你裝、不收專有軟體(→
non-free.md) - 整合:在本 AI Knowledge Template 中可作為 ai-gh-save 批次源、graphify 知識圖節點、paper-qa-lite RAG 語料
- 貢獻:不要在本 repo 開 PR;走
awesome-selfhosted-data(YAML),bot 會幫你重建 - 替代瀏覽:官網 search / selfh.st / awweso.me 比 GitHub README 更好用
§11 進一步閱讀
- 官方資料源:https://github.com/awesome-selfhosted/awesome-selfhosted-data
- 生成器 hecat:https://github.com/nodiscc/hecat
- 官方靜態網站:https://awesome-selfhosted.net/
- 編輯精選替代:https://selfh.st/apps、https://awweso.me/
- 社群:/r/selfhosted、/c/selfhosted on lemmy.world、#selfhosted:selfhosted.chat (Matrix)
- 相關清單:awesome-sysadmin、awesome-docker、awesome-privacy
- 數位主權倡議:PRISM Break、privacytools.io、Alternative Internet
- 反 SaaS 思潮:degooglisons-internet.org (Framasoft)、indieweb.org
Comments