![[Open Source] 新聞即將到來,NewsNow 部署倒數計時! [Open Source] 新聞即將到來,NewsNow 部署倒數計時!](https://i0.wp.com/raw.githubusercontent.com/ourongxing/newsnow/refs/heads/main/public/og-image.png?ssl=1)
掌握即時新聞脈動:NewsNow 讓你輕鬆閱讀最新熱門資訊! (附實作教學與避坑指南)
嘿,各位台灣的鄉親父老! 想隨時掌握最新的新聞動態,卻又厭倦了那些佈滿廣告、排版混亂的網站嗎? 今天要來介紹一個超棒的開源專案 – NewsNow,它就像你的專屬新聞小幫手,用簡潔優雅的介面,讓你輕鬆閱讀即時且熱門的新聞! 接下來,我會用最淺顯易懂的方式,帶你了解 NewsNow 的核心概念,並分享我的實作心得,以及避坑指南,讓你也能快速上手,打造屬於自己的 NewsNow 閱讀體驗!
什麼是 NewsNow? 為什麼值得一試?
NewsNow 是一個開源的新聞閱讀器,它最大的特色就是 簡潔、高效。 它的介面設計非常乾淨,讓你專注於內容本身,擺脫了雜亂的廣告和多餘的元素。 此外,NewsNow 會 即時更新 來自不同來源的新聞,讓你隨時掌握最新的資訊脈動。
NewsNow 的優點:
- 優雅的介面: 乾淨、簡潔的設計,提供最佳的閱讀體驗。
- 即時新聞更新: 隨時掌握最新的熱門新聞。
- GitHub OAuth 登入: 使用 GitHub 帳號登入,可以同步你的資料。
- 快取機制: 預設 30 分鐘的快取時間,減少資料重複下載,提升效率(登入使用者可以強制重新整理)。
- 自動抓取頻率調整: 根據新聞來源的更新頻率,自動調整抓取間隔,節省資源並避免 IP 被封鎖。
- 支援 MCP 伺服器: 可以自訂新聞來源,擴展資訊來源。
總之,NewsNow 讓你用最輕鬆的方式,掌握最新的新聞資訊。 對於喜歡閱讀新聞,又重視閱讀體驗的你,絕對值得一試!
快速入門:如何開始使用 NewsNow? (適合初學者)
NewsNow 的部署方式有很多種,但對於初學者來說,最簡單的方式是 Fork 專案 並使用 Cloudflare Pages 或是 Vercel 這樣的平台來部署。 接下來,我會用 Cloudflare Pages 作為例子,一步一步教你怎麼做:
1. 準備工作:
- GitHub 帳號: 你需要有一個 GitHub 帳號,用來 Fork 專案以及登入。
- Cloudflare 帳號: 如果你還沒有 Cloudflare 帳號,請先註冊一個。 Cloudflare Pages 是一個方便的靜態網站託管服務。
2. Fork NewsNow 專案:
- 到 NewsNow 的 GitHub 專案頁面 (連結待補,請耐心等候) ,點擊右上角的 “Fork” 按鈕,將專案複製到你的 GitHub 帳號下。
3. 建立 GitHub App (如果需要登入功能):
- 如果你想要使用 GitHub 登入功能,你需要建立一個 GitHub App。 步驟如下:
- 前往 https://github.com/settings/applications/new 。
- 填寫 “Application name” (應用程式名稱) ,例如 “NewsNow”。
- “Homepage URL” (首頁 URL) 填入你的網站網址 (例如:`https://你的域名.com`) 。
- “Authorization callback URL” (授權回調 URL) 填入
https://你的域名.com/api/oauth/github` (請將你的域名.com` 替換成你實際的網域名稱)。 - 點擊 “Create GitHub App” (建立 GitHub App)。
- 記下 “Client ID” (客戶端 ID) 和 “Client Secret” (客戶端密碼)。 稍後會用到。
4. 部署到 Cloudflare Pages:
- 登入你的 Cloudflare 帳號,進入 “Workers & Pages”。
- 點擊 “Create application” (建立應用程式) -> “Connect to Git” (連接到 Git)。
- 選擇你 Fork 好的 NewsNow 專案。
- 設定 Build 設定:
- “Build command” (建置指令):
pnpm run build - “Build output directory” (建置輸出目錄):
dist/output/public
- “Build command” (建置指令):
- 設定環境變數:
- 點擊 “Environment variables” (環境變數) -> “Edit variables” (編輯變數)。
- 重要! 根據
example.env.server檔案中的指示,設定以下環境變數:G_CLIENT_ID: (如果啟用登入功能) GitHub App 的 Client ID。G_CLIENT_SECRET: (如果啟用登入功能) GitHub App 的 Client Secret。JWT_SECRET: 密鑰,建議與G_CLIENT_SECRET相同。INIT_TABLE: 首次部署時設為true,之後可以設為false。ENABLE_CACHE: 設為true啟用快取,建議啟用。
- 點擊 “Save” (儲存)。
- 點擊 “Deploy” (部署)。
5. 測試與享受:
- Cloudflare Pages 會自動部署你的專案。 部署完成後,你會得到一個網址 (例如:`https://你的專案名稱.pages.dev`) 。
- 點擊網址,就可以看到你的 NewsNow 網站啦!
- 如果一切順利,你就可以開始享受乾淨、即時的新聞閱讀體驗了!
進階玩法:更多客製化與功能 (給喜歡挑戰的你)
對於想要更進一步客製化的讀者,可以考慮以下幾點:
1. 設定 MCP 伺服器:
MCP 伺服器允許你自訂 NewsNow 的新聞來源。 預設的 MCP 伺服器是 newsnow.busiyi.world,你可以將 BASE_URL 設為你自己的網域,例如 `https://你的域名.com`。 如此一來,你可以控制新聞的來源,打造更符合你需求的閱讀體驗。 (目前功能尚未開放,敬請期待)
2. 連接資料庫:
NewsNow 支援多種資料庫連接器, 官方推薦使用 Cloudflare D1 Database。 步驟如下:
- 在 Cloudflare Worker 儀表板中建立 D1 資料庫。
- 在
wrangler.toml檔案中設定database_id和database_name。 - 如果你的專案沒有
wrangler.toml檔案,請將example.wrangler.toml重新命名為wrangler.toml,然後進行設定。
3. Docker 部署:
對於熟悉 Docker 的使用者,可以使用 Docker 部署 NewsNow。 步驟如下:
- 在專案根目錄下,執行
docker compose up指令。 - 你也可以在
docker-compose.yml檔案中設定環境變數。
4. 開發與貢獻:
如果你對程式碼有興趣,可以參與 NewsNow 的開發!
- 開發環境設定:
- 確保你已安裝 Node.js >= 20。
- 執行以下指令:
bash
corepack enable
pnpm i
pnpm dev
- 新增新聞來源:
- 參考
shared/sources和server/sources目錄下的檔案。 - 詳細的貢獻指南,請參閱 CONTRIBUTING.md 文件。
- 參考
實作心得與避坑指南: 打造順暢的 NewsNow 體驗!
在實作 NewsNow 的過程中,我遇到了一些問題,也累積了一些心得,希望可以幫助你避免踩雷:
1. 環境變數的設定:
- 仔細核對: 環境變數的設定非常重要,尤其是 GitHub App 的 Client ID、Client Secret 和 JWT Secret。 務必確認輸入正確,否則會導致登入功能失效。
- 大小寫敏感: 環境變數的大小寫是敏感的,請務必按照文件的指示設定。
- .env.server: 在本地開發時,建議將
example.env.server重新命名為.env.server,並設定你的環境變數。
2. 部署時的錯誤排除:
- 檢查 Build 指令: 確認你的 Build 指令 (
pnpm run build) 和 Output 目錄 (dist/output/public) 設定正確。 錯誤的設定會導致網站無法正常顯示。 - 檢查 Cloudflare Pages 的 Log: 如果部署失敗,請仔細檢查 Cloudflare Pages 的 Log,找出錯誤原因。
- 網路連線問題: 有時候部署失敗可能是因為網路連線問題,可以嘗試重新部署,或檢查你的網路環境。
3. 資料庫的設定:
- 初始化資料庫: 首次部署時,請務必將
INIT_TABLE設為true,以初始化資料庫。 完成後,可以將其設為false。 - 資料庫連接設定: 根據你選擇的資料庫,設定正確的連接資訊。 錯誤的設定會導致資料庫無法正常運作。
4. GitHub App 的設定:
- Callback URL: 確保 GitHub App 的 “Authorization callback URL” 設定正確,並且與你的網站網址一致。
- Client Secret 的安全: 請妥善保管 Client Secret,不要洩露給他人。
5. 效能優化:
- 啟用快取: 建議啟用快取功能,以提升網站的效能。
- 調整抓取頻率: 根據新聞來源的更新頻率,調整抓取間隔,避免過度抓取,浪費資源。
結語:享受你的 NewsNow 閱讀之旅!
NewsNow 是一個非常棒的開源專案,它不僅提供了一個簡潔、高效的新聞閱讀體驗,也提供了一個讓你可以客製化、自由發揮的空間。 透過本文的介紹,相信你已經對 NewsNow 有了初步的了解,並且掌握了快速入門的方法。
希望你在使用 NewsNow 的過程中,能夠享受到閱讀新聞的樂趣! 如果你在使用的過程中遇到任何問題,或是有任何建議,都歡迎在 GitHub 專案上提出 issue,一起來讓 NewsNow 變得更好! 也歡迎分享你的使用心得,讓更多人了解這個優質的專案!
祝你閱讀愉快!
參考閱讀
https://github.com/ourongxing/newsnow