栗子現場直播 千篇一栗
有很多簡單的道理,若不是被遺忘,不是察覺不到,就是知易行難。

2011年10月23日 星期日

XMPP 建構初試

  為了開發參考,剛剛弄了個 XMPP server。以下是我的做法的大略。聽明白就好,不明白我也沒辦法。

  先準備一部 24 小時長開的 Linux server。我用的是 Ubuntu 10.04(現在最新版本是11.10),以下都會用此機做例子。
  給這 server 一個 domain name。如果可以的話,最好擁有一個 XXX.com 這級數的 domain,而且能收發電郵。弄這樣的 domain 應該會花一點錢。雖然像 XXX.no-ip.com 的也可以,但有些功能會用不到。我待會再解說。

  用 apt-get 安裝 ejabberd。安裝後,ejabberd 就會自動跑起來。
  把 ejabberd 關掉。
sudo /etc/init.d/ejabberd stop

  改 /etc/ejabberd/ejabberd.cfg 中,Admin user 和 Hostname 部份。
{acl, admin, {user, "admin", "XXX.com"}}.
{hosts, ["XXX.com"]}.

  重開 ejabberd。
/etc/init.d/ejabberd restart

  建立 admin 賬號。
sudo ejabberdctl register admin XXX.com password

  進入 web 管理介面。 http://XXX.com:5280/admin/ ,在左 menu 的 Virtual Hosts 中,做 blah blah blah 新增普通的用戶。
  然後就可以用普通的 XMPP client 登入。

  雖然登入成功,但 XMPP client 可能會投訴 server cert 有問題。如果用 Gibberbot,還可能會呆掉。
  要解決這樣的問題,就要弄一張有效的 cert。大家可以從 StartSSL 得到 XMPP server 的 cert。要拿這個 cert,你必須擁有 XXX.com 的 domain,而且能收到 YYY@XXX.com 的電郵。得到 cert 的方法我不說了。總言之你會先從網站得到有密碼保護的 ssl-pw.key,驗証後會再得到 ssl.crt。跑:
openssl rsa -in ssl-pw.key -out ssl.key # 要輸入密碼
wget https://www.startssl.com/certs/sub.class1.server.ca.pem
cat ssl.crt ssl.key sub.class1.xmpp.ca.pem > /etc/ejabberd/ejabberd.pem

  重開 ejabberd。
/etc/init.d/ejabberd restart

  之後 XMPP client 就不會再投訴 server cert 有問題。

  至於 OTR 和 Gibberbot,Gibberbot 感覺有點問題,add user 和 accept user 的情況都怪怪的。如果想試 OTR 功能,可以在 ubuntu 上用 pidgin 和安裝 pidgin-otr,並在 pidgin 啟用 OTR 組模。Empathy 不支持 OTR。

沒有留言: