Nitter 封存後,從 README 讀懂自架條件與風險
另類 Twitter 前端。如果沒有啟用 JavaScript,則無法使用 Twitter,從 2024 年開始,您需要註冊。
秒懂
- 它是什麼?
- zedeus/nitter 是以 Nim 撰寫、採 AGPLv3 的隱私取向社群平台前端;README 仍記錄編譯、Docker、Redis 與反向代理路徑,但倉庫已封存。
- 適合誰用?
- Nitter 適合需要以無 JavaScript、低前端負擔方式閱讀 X 公開內容,且有能力自行管理 Nim、Redis 或 Valkey、反向代理與上游相容性的技術團隊。不適合需要官方支援、穩定 API 或長期更新承諾的正式服務。
- 可以商用嗎?
- 可以,但條件嚴格。AGPL-3.0 是網路 copyleft 授權:如果別人透過網路使用你修改過的版本(例如作為託管服務),你必須以同一授權向他們提供原始碼。
- 還在維護嗎?
- 不再維護。擁有者已在 GitHub 上將儲存庫封存,儲存庫變為唯讀,不會再有更新。
- 用什麼語言寫的?
- 主要是 Nim(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
它解決的是什麼閱讀問題
Nitter README 將專案定位為 Twitter 的免費開源替代前端,重點放在隱私與效能。功能清單包括不使用 JavaScript、沒有廣告、請求全部經過後端、瀏覽器不直接連到 Twitter、RSS feeds、主題和 responsive mobile support。這種架構主張的直接效果,是把使用者端與上游服務隔開,減少頁面分析腳本與 IP、JavaScript fingerprint 追蹤暴露。
README 的 Why? 段落把背景說得更具體:它認為在需要登入且依賴 JavaScript 的原服務上,僅靠 VPN 或阻擋器仍可能因瀏覽器指紋被識別。Nitter 的目標是讓使用者透過自架 VPS 的 instance 閱讀內容。這是專案設計意圖,不是對每個公開部署的隱私保證;部署者仍要管理網路、日誌、憑證與上游連線。
請求路徑與功能邊界
README 明確寫出 client never talks to Twitter,並指出使用的是不需 developer account 的非官方 API。前端頁面因此可維持較小的傳輸量,文件以 @nim_lang 的頁面舉例,稱 Nitter 約 60KB、Twitter 約 784KB,且時間軸載入通常快 2 到 4 倍,整體平均約輕 15 倍。這些是 README 的自報數據,不能直接當成你的網路與內容組合下的基準。
目前可依文件確認的體驗包括 RSS、主題與手機版;Roadmap 則列出 embeds、帶 timeline support 的 account system、封存 tweets/profiles 和 developer API。Roadmap 不是已完成清單,尤其 account system 和 API 不應被當作現成介面。README 的 wiki 另提供 community-maintained instances 與 browser extensions 連結,使用公開 instance 時還需自行評估其管理者與資料政策。
原始碼編譯需要三個外部條件
從原始碼建立 Nitter,README 列出的依賴是 libpcre、libsass 和 redis/valkey,另需 Nim。Ubuntu 或 Debian 可用 libsass-dev 編譯 SCSS;Redis 用於快取,文件提到 Valkey 是可考慮的替代品,預設設定使用 localhost 與預設埠。這些依賴不是可省略的裝飾,缺少其中一項會在編譯或啟動階段形成不同故障。
README 給出的初始命令是 `git clone https://github.com/zedeus/nitter`、`cd nitter`、`nimble -l build -d:danger --mm:refc`,接著執行 `nimble -l scss` 與 `nimble -l md`,最後複製 `nitter.example.conf` 成 `nitter.conf`。設定檔要填 hostname、port、HMAC key、https 與 Redis 資訊。文件未替你決定公開網域、憑證輪替或資源上限,這些都屬於部署責任。
Docker 與 systemd 各自留下操作痕跡
Docker 路徑要求主機先準備 nitter.conf,README 提供 `docker build -t nitter:latest .` 和掛載設定檔的 `docker run`,也提供 `zedeus/nitter:latest` 預建映像。若用 docker-compose 同時啟動 Nitter 與 Redis,設定裡的 `redisHost` 要由 localhost 改成 `nitter-redis`。文件特別提醒,掛載來源不存在時 Docker 可能建立同名目錄,之後會出現把目錄掛到檔案的錯誤。
systemd 範例則以 nitter 使用者、`/home/nitter/nitter` 工作目錄和 `./nitter` 執行檔啟動,並設定失敗後重啟。啟用命令是 `systemctl enable --now nitter.service`。README 建議把服務放在 Nginx 或 Apache 反向代理後方,以兼顧安全與效能。日誌部分文件說目前錯誤會印到 stdout,尚未有完整 logging 實作;systemd 環境可用 `journalctl -u nitter.service` 觀察。
封存狀態改變了採用判斷
素材中的 README 註明,X Corp 已在 2026 年 8 月 24 日寄出要求永久下架 Nitter instance 與 repository 的 cease and desist letters。倉庫資料同時標示 archived,預設分支是 master,並記錄 14,047 stars、1,182 forks 與 156 open issues。這些數字反映專案曾有的使用與討論規模,不能推導出今天仍能穩定取得上游內容。上游政策、非官方 API 和公開 instance 的可用性都可能使原本的安裝路徑失效。
因此,閱讀 README 時應把「能編譯」和「能長期提供服務」分開。任何團隊若仍研究部署,至少要在測試網域觀察 `./nitter` 啟動輸出、Redis 快取、RSS 回應、登入或時間軸請求,以及反向代理傳遞的 HTTPS cookie。若上游回應已變更,補上設定或重試未必能解決法律與服務來源問題。
AGPLv3 不等於安全審查
倉庫資料標示 AGPL-3.0,README 也列出 AGPLv3 並說明不允許 proprietary instances。對要修改並透過網路提供 Nitter 的團隊,必須讓使用者取得相應的授權與源碼資訊,並在分發、修改和網路服務情境下請法務核對義務。這個授權判斷要對照實際修改、部署和分發方式,不能只把名稱當成「可自由商用」標籤。
隱私取向同樣不是安全證書。設定檔中的 HMAC key、HTTPS、反向代理和 Redis 暴露面都會影響風險,README 沒有提供完整威脅模型、相容矩陣或服務等級承諾。自架者應把日誌保存時間、管理介面、容器網路和上游帳號政策寫進自己的運維紀錄,並將第三方映像與依賴視為額外審查範圍。
適合做技術評估,不宜當長期依賴
Nitter 的 README 仍能提供一條相當清楚的研究路徑:先準備 Nim、libsass 與 Redis 或 Valkey,再從 `nitter.example.conf` 建立設定,選擇原始碼、Docker 或 systemd 啟動,最後經由 Nginx 或 Apache 對外服務。對希望研究無 JavaScript 前端、RSS 輸出與後端代理模型的人,這份文件仍有參考價值。
測試時可把結果拆成幾個可觀察項目:`nimble -l build -d:danger --mm:refc` 是否完成,`nimble -l scss` 和 `nimble -l md` 是否產生所需檔案,服務啟動後 Redis 是否保持連線,以及反向代理是否正確傳遞 HTTPS 和 cookie。再以瀏覽器檢查主頁、時間軸、RSS 與手機版,並在 `journalctl -u nitter.service` 中對照錯誤。這些檢查能回答目前環境能否運轉,不能消除上游 API 或法律狀態的不確定性。
若測試使用 Docker,還應確認主機上的 nitter.conf 真的是檔案,並核對 compose 網路中的 `redisHost` 是否指向 `nitter-redis`。若使用 systemd,則要檢查 nitter 使用者是否能讀取 WorkingDirectory、設定檔和產生的資源,並確認 `RestartSec=15` 不會掩蓋反覆崩潰。這些是文件直接涉及的操作差異,能讓故障定位留在可觀察的命令與檔案上。
但封存與下架要求是選型的硬限制。它不適合作為需要持續修補、官方上游穩定性或正式服務保證的核心依賴。採用前應以具體的 Nitter 版本、設定檔、Redis 連線和 `journalctl -u nitter.service` 輸出建立測試紀錄,確認目標頁面與 RSS 真能取得,再把 AGPL-3.0、上游法律狀態和故障撤退方案交給負責人決定。
停止部署前要留下什麼
若 Nitter instance 因上游變更或封存狀態停止使用,應保留 nitter.conf、Redis 資料處理方式、反向代理設定與 journalctl 記錄,並清楚標記哪些內容來自 README、哪些是本機測試結果。這能讓團隊重新評估 RSS、時間軸與公開頁面是否仍有替代路徑,也避免把舊 Docker 映像或 master 分支狀態誤當成持續維護訊號。
編輯結論
Nitter 適合需要以無 JavaScript、低前端負擔方式閱讀 X 公開內容,且有能力自行管理 Nim、Redis 或 Valkey、反向代理與上游相容性的技術團隊。不適合需要官方支援、穩定 API 或長期更新承諾的正式服務。README 已標示 2026 年 8 月 24 日收到 X Corp 永久下架要求,倉庫資料也顯示 archived;在任何部署判斷前,先用隔離主機依 nitter.example.conf 啟動,觀察登入、時間軸、RSS、日誌和上游請求是否仍可用。也要預先確認 AGPL-3.0 義務與停止服務時的替代方案。
社群筆記