為什麼我花 33 天救一個 23 年的舊論壇
公會論壇 2015 年就停更了。為什麼 2026 年才動手?真正的觸發點是 AI 工具終於成熟到讓非工程師能自己做這件事,Bluehost 退場只是順便。系列文 5 篇之 #1。
論壇 11 年沒人發文了,為什麼現在動手
我們公會的 phpBB 論壇從 2015 年起就停更了,從那年到 2026 年整整 11 年沒人發過新文。中間幾次想動工,每次都停在同一個點:「我有時間自己重建嗎?」直到 2026 年初某個下午,我打開 Claude Code,問它一個問題:「我有兩個 phpBB 論壇,從 2003 年用到 2015 年停更,現在還能救起來嗎?」那個下午之後,計畫就開始了。
Bluehost 的續約通知是 4 月 25 日才寄來的,那時候我已經在 phpBB 升級鏈上做了快兩個月,所以那封通知信不能算是觸發點,只是讓退場時間表變得明確。既然要重建,那就一起搬家吧。這篇文章想記錄的,是「為什麼是現在」、「為什麼是這個論壇」、「為什麼花 33 天」這三件事,在進入後面四篇技術紀實之前,先把動機交代清楚。
從笑傲江湖到 The Sun Moon
公會比論壇更早。最早那批人是在另一款叫「笑傲江湖網路版」的線上遊戲裡認識的;後來大家轉去玩 EverQuest,2003 年 6 月 13 日由深藍星辰、一丁、瓏瓏等元老在台灣版伺服器立了分會。我不是創會的人,是創會幾天後我的高中同學「吉爾斯」路過拉我進場,我以「光明元素」這個 ID 入會,朋友後來都叫我光明,再後來叫我老頭。

兩年後 EverQuest II 東方版開放,遊戲橘子代理,我牽頭找了 5 個夥伴一起在東方版立起天地日月。另外那 5 個人都是 EQ 2 才認識的新成員,台版 EQ 1 那邊的天地日月並沒有跟過來,會長交給了卡塔菈之後我重心轉到 EQ 2,從跟著別人玩到自己當會長中間差了兩年。下面這張是 2005 年 11 月 9 日東方版遊戲內的截圖,公會那時候 203 個成員、剛升到 30 級,畫面右側 Recent Events 還能看到當年的會務動態:

可惜 EQ 2 東方版只活了 9 個月,2006 年 3 月遊戲橘子宣布結束營運,我們依官方移民方案登上美版 Najena 伺服器,中文公會名沒辦法沿用,重新起了英文名 The Sun Moon。後來 Najena 在 2010 年併入 Unrest,Unrest 又在 2015 年併入 Halls of Fate,論壇剛好也是那一年起停更。從 2003 那年夏天到 2026 年春天,公會走過了 23 年,換過三個伺服器、改過一次名、走過 EQ 2 十多個資料片,論壇是這 23 年所有對話、相簿、活動規畫、成員聚散的共同載體。
為什麼是 phpBB(而不是 Discord、不是別的)
2003 年那個時間點公會論壇等於 phpBB,那是 BBS 時代的標準。我自己 2004 年就架過 phpBB 2.0、WordPress 1.4 跑個人網站,所以在工具上熟悉。我們公會論壇從 phpBB 2.0 一路升上來,到 2015 年停更時是 3.0.14,中間累積了不少東西。光是活動規畫的 thread 就有上千篇,每一篇下面記著哪一天去打哪一張地圖、誰負責 tank、誰負責 heal、戰利品怎麼分。再加上 3,159 個附件,從螢幕截圖、地圖標記到自製攻略 PDF 都有。論壇還有一個 forum_id 是 6 的私版「公會成員友誼廳」,給核心成員聊些公開區不方便聊的事;另外曾經有一個獨立的 DKP 系統,Dragon Kill Points 點數紀錄,後來在副本玩法改變後退役。
這些東西要搬到 Discord 嗎?技術上可以,但語意上不行。Discord 是即時訊息工具,按時間軸把訊息往下推;phpBB 是 thread-based 論壇,每個 thread 是一個獨立的話題容器。一篇 2009 年的活動規畫貼,下面跟著 30 個回覆,這個結構搬到 Discord 會被攤平。更直接的理由是,那些 thread 已經是「發生過的對話」,沒有人會繼續討論,重點是保存。Discord 適合活的對話,phpBB 適合保存的對話。
論壇 2015 年起停更,但它從一開始就不只是公會內部的工具。EQ 1 站有一篇 2011 年的 thread,標題就是 〈沒想到這網站還活著...〉,老玩家 Aroust 路過、卡塔菈進去回說「多人仍使用此網站查詢遊戲資料」,連別的伺服器(Vulak)的玩家都進來感謝過資料幫助。那段時期我們的論壇實際上是 EQ 中文玩家社群的一個知識點,不只是公會內部討論版。「沒想到這網站還活著」這句話從 2011 年看到 2026 年,更貼切了,要保存這些對話,phpBB 才是對的容器。
為什麼是 2026 年初
2015 年論壇停更時我就知道遲早要做點什麼,但「自己做」這條路在 2015 到 2024 之間都沒被認真考慮過,因為它的成本太高。phpBB 從 3.0 升到 3.3 要過 5 個 major version,中文編碼、附件路徑、user table 結構每代都有破壞性變更;PHP 5.6、7.x、8.x 之間還有相容性破洞要補;Docker、Traefik、Let's Encrypt 這些 2015 年我還不熟的技術要重新學;同樣的時間裡 WordPress 也累積了 10 個以上的 schema 版本要走過。
要找 freelancer 重建?預算要好幾千美金、學習價值是 0、還要持續維護。要自己做?我是 PM,會 HTML、CSS,看得懂 SQL,但不寫 production code,這個能力跟需要的能力之間有一道縫,過去 9 年那道縫沒收得起來。
2026 年初不一樣了。Claude Code 的 pair programming 模式我用了大半年,從個人專案到工作專案都跑得起來。它不是「AI 幫我寫程式」,比較像是「我跟它一起做工程決策」,它做技術深挖,我做產品判斷與最終驗收。這個工作節奏和我作為 PM 的日常工作非常像,差別只在於對面的人變成了 LLM。
於是「自己做」這條路第一次成立了。預算上 Claude Code 月費可預期,不像 freelancer 計時收費;學習價值上,23 年舊論壇的升級鏈每一步我都會在現場看到、debug 到、做最終決策;進度上,白天 91APP 工作,晚上和週末做這個專案,自己決定 sprint 節奏;長期來看,架構、文件、CLI 我自己摸過一輪,下次同類型的事更熟。關於這個工作節奏的細節,我會在系列文 #2「PM × Claude Code 6 週救活公會論壇紀實」展開講,這篇先把動機講完。
4 月 25 日那封 Bluehost 通知信
如果只說「Bluehost 不是觸發點」也不完全準確,它確實在中段加了一個 deadline。4 月 25 日 Bluehost 寄了續約通知過來:

WordPress Plus Hosting 加 3D-OLG.NET 一年 $203.88、加上 SiteLock Lite(免費附帶)、含稅 $214.07,續約日 5 月 25 日、到期日 6 月 9 日。這個價錢不算貴,但跟 DigitalOcean 對照就有差。Bluehost 是 shared hosting,cPanel 加 FTP,平均一個月 $17.84。DigitalOcean SGP1 同樣價位的方案是一台 1 GB RAM、1 vCPU、25 GB SSD 的 VPS,月費 $6,年費 $72,加上 root SSH 的完全控制權。一年下來差 $142,差不多等於 DigitalOcean 兩年的訂閱費。技術上 1 GB RAM 跑得動 phpBB 兩站加 WordPress 加 MySQL 兩個 instance 加 Traefik 嗎?跑得動,但要小心調 swap、要 build container 時錯開、要把 WordPress DB 拆成獨立 instance 避免單點故障,這些是 #4「部署架構」的內容。
省 $142 還不到啟動專案的程度,但有了具體日期之後整個退場時間表就清晰了。5 月 25 日是 Bluehost 續約日(auto-renew 已關),6 月 9 日訂閱實際到期。後來時間表如期走完,訂閱在 6 月 9 日自然失效,6 月 11 日我把最後的 DNS 殘留清乾淨、留好封存證據,整個 Bluehost 退場才算正式收尾。Bluehost 把模糊的「遲早要做」變成清晰的「6 月 9 日前要做完」,它讓我認真,但啟動專案的原因不在那封通知信。
33 天值不值得
從 4 月初到 5 月初,加上後段 Bluehost 退場規畫,整個專案前後跨了 33 天。實際工時遠比這個數字短,白天還有 91APP 的工作要做,phpbb-restore 主要塞在晚上和週末,每天能碰電腦的時間頂多 2 到 3 小時。所以「33 天」說的是時間跨度,不是工時量。值不值得,看你怎麼算。如果只算「保留閱讀舊文的權利」,那太貴了,把 phpBB 整個 export 成 HTML、丟到一個靜態 hosting,便宜很多、維護也接近 0。但我做的不只是「保留閱讀」,而是「讓論壇繼續是論壇」,能登入、能發新文、能上傳新附件、私版還是私版、DKP 系統有條件地復活,這意味著公會老友哪天想回去發一篇「23 週年聚」的貼文,論壇是接得住的。
這個差別在工程上是兩個極端。靜態 export 大概一個下午就能搞定,活的 phpBB 加 WordPress archive 加 SMTP 寄信加 HTTPS 加備份 cron 則要前後一個月、加上中間幾十次的 debug 與重來,買到的是「論壇還能用」這四個字。值不值得,不是工程帳能算的。23 年的對話,那些已經有人離開遊戲、有人換了帳號、有人不再上線的對話,這些東西如果只能讀不能回就是博物館,如果還能繼續寫就是社群。我選了後者。
對抗遺忘是一種勞動。23 年裡有人成家、有人轉行、有人不在了,論壇上那些貼文是這些事情發生之前的快照,沒人會替我們保存,只能自己保存。而且坦白說,過程本身有趣,phpBB 從 2.0 升到 3.3 要看完整個論壇開源社群的演化史,WordPress 1.5 升到 6.9 要走過 PHP 5.6、7、8 三代相容,每個技術坑後面都有一段 Stack Overflow 上 2009 年的回應、一個某個外國人寫的 patch、一個 phpBB 官方論壇 2014 年的討論串。整個工作很像考古,而 Claude Code 是那個願意陪我一起翻紀錄的同伴。
接下來的 4 篇
這個系列共 5 篇,這篇是動機篇,談為什麼救、為什麼是現在、為什麼花 33 天。接下來的 4 篇分別處理不同層面。
#2「PM × Claude Code 6 週救活公會論壇紀實」 寫一個 PM 怎麼用 AI pair programming 完成工程任務,能委託什麼、必須親自做什麼,順便講一個重要的副產品,這個專案後來長出了 /seer skill。
#3「資料復原」 談 phpBB 2.0 升到 3.3.15 的 5 代升級鏈、WordPress 1.5 升到 6.9 的 schema 變遷、中文編碼處理,以及 3,159 個附件對齊驗證。
#4「部署架構」 談 Docker Compose、Traefik path-based routing、Resend SMTP relay、MySQL 8.4 in-place 升級。
#5「6 週踩雷集錦」 寫那些卡了我半天的小事,1Password SSH agent 排序、phpBB anti-spam silent skip、Docker volume 升級陷阱、phpBB DATETIME_FORMAT cosmetic warning 等。
決定救之後,下一個問題是,一個 PM 怎麼自己做這件事?在 #2 接著聊。
天地日月公會論壇現在站在 eq2.3d-olg.net/community 與 eq.3d-olg.net,2003 年至今 23 年,The Sun Moon Guild 在 EverQuest II Halls of Fate 伺服器持續運作中。
留言討論