Let's federate!

WordPress 的 ActivityPub 外掛

【原文首發於 WordPressMatters

我相信經營自媒體的人,都應該要有能由自己掌握的平台,同時我也深深著迷於 fediverse 分散式網路的魅力,因此我先後架設了 PlumeMisskey,前者是聯播式的輕量級部落格,後者是社群網路,都可以和 liker.social 等 Mastodon 站互連。雖然我已經習慣使用 Plume 編輯文章之後再發布到 Matters,然而不可否認,標記式語言對於習慣使用「我見即我得」式編輯器的人來說會是個障礙,而且每篇文章要加上讚賞鍵都必須經過 1) 發佈取得連結 2) 將網址編碼 3) 貼上 iFrame 後更新 這幾個步驟。

我注意到幾個部落格,像是漫閱讀筆記,以及小蔓推薦的捲,在加寫字TRAVEL WITH BOOK職女Jennifer,都是用 WordPress 架設的,不但設計精美,文章也很好看,推薦閱讀。做為讀者,如果不常常造訪,要怎麼知道這些部落格有新文章了呢?做為作者,要怎麼通知我的讀者我發新文章了呢?使用 RSS 訂閱是一個方式,但有的作者不喜歡;我在這裡推薦另一種方式:加入聯邦宇宙!包含我在內的象特市民,在部落格或馬特市發新文章時會在 liker.social 宣傳,除了象特市民會看到,其他站的聯邦宇宙公民也有機會從聯邦時間軸看到。現在你只要在 WordPress 加上 ActivityPub 外掛,在 WordPress 的帳號就相當於一個 fedi 帳號,可以自動做到這件事情。以我的 WordPress 站為例,如果你用 liker.social 帳號追蹤 @[email protected] 並且點選小鈴鐺,那麼只要我發了新文你就會在通知頁面看到,不會錯過。

關注小鈴鐺

如果你在 liker.social 看到我這個帳號的畫面是這樣的話......

關注小鈴鐺_LS

是正常的(嘆氣)。不知何故,個人資料頁面的更新似乎比較慢,所以如果是新設的 WordPress 站,建議先把個人資料、頭像都先設定好之後再追蹤喔。另外,我從 Misskey 和 Pleroma 追蹤,都會持續顯示等待對方接受中,但是在 WordPress 的使用者 > Followers (Fediverse) 頁面卻是有資料的,而且並沒有審核的選項;由Mastodon 追蹤則沒有問題。WordPress 帳號和一般的 Mastodon / Misskey / Pleroma 等帳號的互動模式不一樣,我經過測試,上述 fedi 帳號對 WordPress 帳號的貼文留言,無論是公開、不公開、僅關注者或是私信,都會進到 WordPress 該篇文章裡面(或者進入垃圾留言),但格主對於留言的回覆則只會顯示在 WordPress 這邊。

了解了互動方式之後,接下來就要介紹如何安裝和使用了。使用雲端主機或其他方式自架 WordPress 的可以略過下面這一段,直接跳到 ActivityPub 外掛安裝和使用

Synology Package Service Portal

我在 NAS:不只是私有雲這篇文章裡提到,Synology DSM 的套件庫裡面有 WordPress,雖然版本不是官方最新的(目前 5.7.2 版),但是安裝最容易,網址後面有子目錄的問題也很容易解決,以下做詳細的說明。(DSM 7.0.1)

Synology Web Station 1

開啟 Web Station 套件,在 Web Services Protal 這邊 Default Portal 中已經有了 WordPress,它會讓你的 DDNS 網址後面加上 /wordpress,例如 abc.xyz/wordpress。點它然後在上面的 Action 選單中將它停用。接著,在上面選單按 Create service portal,並選擇 Package Service Portal

Synology Package Service Portal

在 Hostname 輸入你的 DDNS 位址,然後按下 Create

Synology Portal Creation Wizard

NAS 前面一般有路由器,還必須把 80 和 443 這兩個埠轉送到 NAS 的IP。然後,到 Script Language Settings

Synology Script Language Settings

選擇 WordPress 設定檔,按 Edit,點選 Extensions 分頁:

Synology PHP profile extensions

如果 WordPress 控制台的網站狀態顯示缺少什麼模組,多半是這邊沒有選到,可以全部勾選後儲存。

ActivityPub 外掛安裝和使用

以下內容,對於用其他方式自架或放在雲端主機的也大部分適用。個人資料頁面準備好了以後,首先在 WordPress 控制台安裝 ActivityPub 外掛並啟用:

WordPress ActivityPub plugin

接著到設定 > ActivityPub 頁面,這邊可以調整貼文內容。預設是全文,但是因為多數的 Mastodon 站有 500 字的限制,建議更改為第二項的摘記模式,只會顯示無格式的 400 字與文章的連結;第一項則是只貼文章題名和連結。下方的媒體若勾選,那麼貼文就會包含文章的圖片。

WordPress ActivityPub settings

永久連結設定這邊,點選儲存設定,這個步驟可以幫助以上的設定變更傳到 fedi 去。

WordPress永久連結設定

然後到個人資料頁面,最下方就是可以讓 fedi 追蹤的帳號了,比如說@[email protected]

WordPress profile ID

打開 liker.social 或其他 fedi 帳號,搜尋上面顯示的帳號,如果找得到,恭喜你,成功啦!

LS搜尋帳號

如果找不到帳號,或是貼文沒有出現,可以試試看儲存永久連結,或者將 ActivityPub 外掛先停止再啟用。到 webfinger.net 查詢是否可以得到正確的值,將類似電子郵件的帳號解析為網址。以我的帳號為例,輸入 [email protected](最前面不要@)會得到這樣的 JSON 回傳值:

{
      "rel": "self",
      "type": "application/activity+json",
      "href": "https://pchxyz.dscloud.mobi/author/pch_xyz/"
}

假如你的 WordPress 網址必須是在子目錄下的,比如 abc.xyz/wordpress 這樣,由於 WebFinger 無法解析到正確的網址,還要多一個 URL 重寫的步驟,那就需要對 Linux 操作有一些了解。

根據官方文件,Apache 在 .htaccess 檔加入下面這一段:

RedirectMatch "^\/\.well-known(.*)$" "\/wordpress\/\.well-known$1"

Nginix 在 sites-available 中的 site.conf 加入下面這一段:

location ~* /.well-known {
    allow all;
    try_files $uri $uri/ /wordpress/?$args;
}

上面的 "wordpress" 替換為你的網址子目錄。更改之後,重新啟動 Apache / Nginix 和 WordPress,然後再查詢 WebFinger 是否正確。

WordPress 有著豐富的版型和資源,使用 LikeCoin 外掛可以直接幫你在文末嵌入讚賞鍵,還能發佈到 Matters 草稿區,確實很方便,這一篇就是這麼產生的。我是太平洋海岸公路,如果你是自架 WordPress 的格主,或者正在考慮建立自己的 WordPress 天地,誠摯地邀請你安裝 ActivityPub 外掛,讓你的部落格成為聯邦宇宙中的一顆行星。

不可見之手文章索引