部落格復活

如果你本來在找某篇文章卻被重導向到這裡的話,那你想看的那篇文章可能已經遺失了……

由於鄙人在下我在一連串的疏忽跟失誤之後,導致在 DigitalOcean[1] 上的 Droplet[2] 被砍掉,本部落格也一起被刪除了……

因為我其實一直在想要怎麼把放置在 IaaS 上面的機器做資料備份,畢竟有傳輸就有流量問題……囧。
而且之前 NAS 其實空間是不夠的,一直到最近升級之後才有在想要怎麼備份,結果就有東西被砍掉了XDDDDD

不過也同時發現了一些有趣的事實,下面慢慢跟各位介紹一下……

事件緣由

我這裡不是要黑 DigitalOcean,因為我也有問題,我個人沒有很想把信用卡資訊散佈在各平臺,所以選擇用 PayPal 來儲值,而且也有設定當餘額不足的時候提醒我。但這次我一如往常的從 PayPal 儲值,但是沒注意到並沒有成功授權,導致後來 DO 發來的餘額通知信被我當作只是入款延遲的關係而忽略,結局大家都知道了,就是 Droplet 被砍,東西直接再見XD

事後補救

其實也沒有什麼事後補救的措施,發 Ticket 過去,客服也只會跟你說已經刪掉了就回不去惹云云,反正我本來也有錯,所以就想看看接下來可以做什麼補救措施……

頁庫存檔

Google cache

其實我發現東西被砍掉的時候,就馬上去找頁庫存檔了,但是 Google Cache 大部分的頁面都已經被清掉了,只剩下兩三篇,以及一堆清單的 cache,我不知道為什麼反而文章本體比較沒有被 cache 到。

Bing cache

後來想想說不定 Bing 上也有存檔,所以就跑去 Bing 上面搜尋 site:blog.davy.tw,搜尋結果的確是比 Google 還要再多一點,而且也有一些存檔,但很奇怪的是有些 Search Engine 上面寫有存檔,但是 Cache 跟你說沒有,可能剛好在剛被清掉的尷尬狀態吧……

Wayback Machine

Wayback Machine[3] 一直是我很喜歡的網頁快照工具,於是馬上上去找看看有哪些頁面是被 Snapshot 過的,使用 https://web.archive.org/web/*/https://blog.davy.tw/archives/* 可以找到所有在 https://blog.davy.tw/archives/ 下的所有子頁面,非常方便。

圖片備份

比較近期的讀者應該也會發現,其實我後來有在 WordPress[4] 上面啟用 imgur[5] 的圖片同步,所以較新文章裡面的圖片其實都是直接 link 到 imgur 上的,所以其實整個部落格的圖片都還在,這部分其實比較不用擔心。

留言備份

自從部落格換到自己設計的 Pure white 主題之後,留言系統已經從 WordPress 內建換到 Gitalk[6] 了,所以基本上留言都在 GitHub[7] issue 上面活的好好的。

災後重建

嗯……在蒐集完資訊之後就開始進行重建

機器重建

這部分沒有什麼好講的,就是再回去開一台 Droplet 然後這次我把信用卡資訊給填到 DigitalOcean 了。其實我也考慮更換到 Linode 或其他平台上,但考量到我已經在 Linode 開過機器了,雞蛋還是分開放比較好,而 AWS[8] 或 GCP[9] 則是因為太貴而作罷……想想也就只是部落格而已,不需要到這麼大的成本,不然 GCP 有台灣機房真的是滿心動的。

部落格重建

Ghost v.s. WordPress

關於重建,這部分我嘗試了不同的選擇,首先是把 WordPress 給換到了 Ghost[10] 上面,眼尖的讀者應該早就發現副標題的 WordPress 已經被換成 Ghost 了。

至於為什麼會做出這個決定,一來是因為翻找 WordPress 文件寫一個主題的經驗真的沒有到那麼漂亮,雖然 WordPress Codex[11] 有很多豐富的文件跟資訊,但對於開發一個主題來說,我覺得還是遠遠不夠的,其實這也同時是我為什麼把留言換成 Gitalk 的原因,因為太麻煩了。

至於為什麼是選擇 Ghost 呢?
其實問過一輪身邊的朋友,他們其實推薦 Hexo[12] 比較多,但因為我的需求包含「需要有 Web GUI」這個條件,所以只好作罷,當然如果有人可以幫 Hexo 弄一個能用的後台,那我可能會很開心的跳過去,畢竟支持台灣本土專案我覺得也是不錯的。

既然說到需求,就來聊一下我這次選擇考量的點有哪些:

  1. Web GUI
    原因是我有可能會在行動裝置上面寫作,當然推薦 Hexo 的朋友也有提到我可以在 HackMD[13] 上面寫作,然後再同步進去 GitHub,或是直接使用 GitHub 的編輯器寫作。
    這樣當然可以,但是 HackMD 對行動裝置真的太不友善,輸入時有可能被斷以外,需要上傳或管理圖片時也會比較麻煩。
  2. 支援 Markdown[14]
    我大部分的寫作都是習慣想到就寫,所以大部分的內容其實都是純文字再輔以一些 Markdown 語法做標記,如果部落格本身支援 Markdown 我就可以直接把草稿貼上並進行潤飾即可。
  3. 可擴充、可修改主題
    這在現代的 CMS 上面幾乎已經算是標配了,比較大家都會想要凸顯自己特別的地方XD

基於上述理由,儘管 WordPress、Hexo、Ghost、Jekyll[15] 都支援 Markdown 且可擴充及修改主題的情況下,Hexo 跟 Jekyll 都還是因為第一點被淘汰了。

那麼,為什麼最後不繼續使用 WordPress 了呢?
除了自己回頭編寫編寫主題實在太繁瑣以外,二來是因為認真回頭思考之後,我似乎一直沒有用到 WordPress 的其他功能,例如迴響(留言)、頁面、豐富的小工具、等等,我似乎一直都在用很基本的功能 —— 發表文章,而已。於是我開始思考,或許這種比較輕量簡潔的 Ghost 是不是其實比較適合我的 usecase 呢……

所以我決定給 Ghost 一個機會!
從 Wayback Machine 拿回主題的 css 之後很快的就花了一天移植到 Ghost 上了,並且開始嘗試了寫作,摒除掉 Ghost 本身可以擴充的東西其實偏少、小工具類的功能必須在前端實現以外,其實整體使用上還是挺方便的。

Podman v.s. Docker

為什麼提到 Podman[16] 及 Docker[17] 此一類 Container 工具呢?
由於之前的部落格都是直接安裝在系統中,在管理上遇到了不少問題,在確定環境不需要客製化的情況下,我希望對系統維護的複雜度越低越好,於是我決定採用 Container 來管理我的服務們。
鑒於最近身邊的朋友推薦 Podman 推的滿勤的,我也打算來研究一下兩者的差異,基本上兩者都是基於 Linux Container 來做到容器化的機制,且 Podman 也可以使用 Docker Hub 上的 image,兩者可說是有 87% 相容。
最大的差異便是 Podman 沒有 daemon 的設計,這對我來說滿不習慣的,因為我會使用 mgood/resolvable 這個 image 提供的服務來簡化 Container 的網路相關設定,但由於 Podman 沒有 daemon,使得這樣的設計就需要在花時間改良。
不過我還是會去玩 Podman 的,關於 Podman 的心得或許可以另闢文章介紹。

喔對了,我不是一個 Docker Compose 使用者,我比較偏好單純的使用 Docker CLI 來管理我的容器,這點應該是我跟一般 Docker 使用者比較不同的地方,而且我這次選擇使用 systemd 來管理 Docker container,這部分應該近期會另外有文章介紹我的用法。

NGINX v.s. Caddy

NGINX[18] 應該算是滿老牌的網頁伺服器了,但最近 Caddy 的簡潔設定檔一直很吸引我,所以我也趁著這次重建一併換到 Caddy 上了。

後記

這部分沒有什麼好說的……到目前為止被復原的文章數量少於 10 篇,更別說還有一些尚未發佈的草稿也都不見了,哈哈哈哈。
接下來應該會開始做好備份機制,讓部落格不要再死掉吧……

Wayback Machine 的有趣現象

有趣的是,我在使用 Wayback Machine 的時候,有兩篇文章被 Snapshot 的次數是異常的多,分別是《修改 PAM 讓特定 IP 透過 SSH 登入時不需要輸入密碼》與《在 Nginx 上啟用 WordPress 固定網址功能》,直到部落格消失的前兩個禮拜都還有人在打 snapshot,看起來是不是因為裡面寫的內容對大家比較有幫助所以大家會毫不吝嗇的狂打 snapshot,不知道能不能被轉化為有效閱讀率的指標。

最後的最後

最後,如果大家有什麼主題想要我再分享一次的,歡迎直接留言告訴我,我會試圖拼湊出當時的記憶,然後再表達一次給各位。
謝謝大家 <(_ _)>


  1. IaaS 服務提供商,請見首頁介紹: https://www.digitalocean.com/ ↩︎

  2. DigitalOcean 用來表示 Virtaul Machine 的名稱 ↩︎

  3. 一個由非營利組織 Internet Archive 提供的網站時光機服務,可以儲存當下的任何網站樣貌(包含 CSS) ↩︎

  4. 一套功能豐富的開源內容管理系統(CMS),常用於部落格架設,本站早前即是使用此一系統撰寫。詳見其官網 ↩︎

  5. imgur 為一圖片共享上傳平台,其提供了相簿及私人圖片功能,本站的圖片有一大部分都 host 在上面,伺服器本地內容則作為 fallback 使用 ↩︎

  6. Gitalk 利用 GitHub 的 issue 功能作為 backend 的一個開源留言系統,使用 preact 作為框架開發 ↩︎

  7. 作為一個程式設計師都要知道的網站,通常也是 git 初學者的入門網站,提供許多軟體協作的功能,請見其網站 ↩︎

  8. Amazon Web Service 雲端服務提供商 ↩︎

  9. Google Cloud Platform 同是雲端服務提供商 ↩︎

  10. 一個由前 Wordpress 設計師 John O'Nolan 提出的新部落格平台,參見其官網 ↩︎

  11. WordPress 提供給開發者的文件平台,以類 wiki 形式提供內容,有興趣的朋友可以去該網站挖寶 ↩︎

  12. Hexo 是一個由台灣人開始發展的部落格平台,其對中文的支援度極佳 ↩︎

  13. HackMD 是一個主打以 Markdown 編輯的多人線上即時編輯平台,原始作者亦為台灣人,最近推出的新功能使得該平台上的筆記可以與 GitHub 中的內容同步 ↩︎

  14. 一個簡化過的格式化文字表達法,其目標在於達到易讀易寫,在僅閱讀該語法的情況下也可以輕易的被人工判讀,相關語法可見此頁介紹 ↩︎

  15. Jekyll 是一個使用 Ruby 撰寫的 Markdown 渲染工具,常被用來做為靜態網站或部落格生產器,GitHub 提供的靜態網頁功能 GitHub Pages 同時也支援直接建置 Jekyll 專案 ↩︎

  16. Podman 是一個設計來管理 OCI Container 的工具,使用 CRI-O 作為 beckend,關於使用的方式可以看看這篇《Podman 介紹 | Gene WorkSpace↩︎

  17. Docker 可以說是 Linux Container 應用化的先驅,使用 libcontainer 作為 backend ↩︎

  18. NGINX 是一個老牌網頁伺服器,其常被用於做反向代理(reverse proxy)用途 ↩︎