20120616

为什么要自己架个"gtalk"服务器

为什么要自己架个"gtalk"服务器

如果你也因为不使用QQ,同时偶尔有即时通信的需要,GTALK又被隔在GFW下时而
不能登录,那么可以试试自己架设一个服务器。

GTALK基于一种开源通用的聊天协议,叫做jabber,或者XMPP。凡是遵循jabber协
议的服务器和遵循jabber协议的客户端都能相互通信,这样的免费开源服务器和
客户很多。

服务器之间可以连接起来彼此通信,还可以与msn等聊天工具互通。在这里,我
只架单个服务器,容纳几个账号。

各种感慨都在最后,非技术人员请从此跳过,方法是按END键。

1. 选型

很多种服务器,著名的有 jabberd2, jabberd14, openfire。我用了openfire,
因为1.它支持web管理界面,偶尔远程管理的时候工具容易选择;2.支持
ssl/tls,通信安全;4.有deb包,ubuntun容易安装;5.基于java虚拟机,也可
以在windows上跑。

客户端也有很多种,我用得少,感觉不到太多差别。为了测试,我这次安了
gajim,平时主要用emacs-jabber。

2. 安装

安装真是没啥可说的,下载
openfire_3.7.1_all.deb,[http://download.igniterealtime.org/openfire/openfire_3.7.1_all.deb]
然后装上。

3. 运行

这个麻烦点。起初,各种毛病,反正我没运行起来。

网上说openfire的手册要比jabberd*要好,不过我没空看。比如存储账户信息,
我希望使用内置的数据库,不想用mysql。因为顶多10个账户以下,而且跑在我的
笔记本上,根本不想为此架个mysql server。但是,报错,说内置数据库有麻
烦,参见手册,但是在手册的哪里,没有提。后来终于找到 (跟着某位大侠的贴
子,他说,他就要放弃时找到了)了,说是第17 次版本更新的时候(?)数据库的
语句写错了,应该把哪段以前的都删除就好了。

我登时傻眼了。怨不得有人说开源的维护成本高,这手册是给人类看的么。

又一顿折腾,我屈服了,安了mysql。

可能有的同学会问,你为什么不架jabberd14或jabberd2呢?因为我遇到了更大
的麻烦。用ubuntu软件中心安装上以后,我参考了一下手册,我又傻眼了。手册
上说,要先建 jabber 这个用户和组。

我知道,又有同学跳出来说了,这难么?

不难。问题是,此时处在"用ubuntu软件中心安装上以后"这个时间点,我发现
jabber 这个用户和组已经建了。那应该是ubuntun软件中心的版本建的,那么,
接下来手册里的步骤,哪些已经完成,哪些没有完成呢?

一步一步检查?我可能检查了20步,都完成了,一放松警惕,结果第21步软件中
心没自动给建好。所以,在jabberd*两个版本上,我花了一个小时,两个小时
(?),然后放弃了。

如果你小的时候,有大人一边给你喂药,一边说"不苦",结果你吃下去苦得直咧
嘴;如果你修牙的时候,牙医说"不疼",结果整得你一身汗;如果你的高中老师
告诉你上了大学就好啦……以后你都不要相信他哪怕一句话。

总之吧,后来我使用mysql,安装mysql-server, mysql-client, jdbc。然后
jabber服务器openfire就跑起来了。

剩下的,还需要数据库的一些设置,登录口令和主机啦啥的,你如果会也不用我
罗嗦,你如果不会,我这一篇也写不下,如果只列上我的步骤,哪怕一小步你的
机器跟我的不一样,还特别把你引入歧途。所以,略。

对了,得跑下面这条语句:
> cat openfire_mysql.sql | mysql openfire -u root -p

openfire_mysql.sql这个东西,在我机器里是在
[/usr/share/openfire/resources/database]下面。

参见
[http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/database.html]。

4. 客户端连接


* with emacs-jabber
localhost:5222 ssl

* jabber客户端 gajim

用户名需要类似 young@young-laptop; localhost:5222

5. 外网连接

这个时候,内网就可以用了。如果你在防火墙 (或者NAT,或者无线路由)的里
面,而你需要外网用户连进来,需要查到你的外网IP。

可以这么查,用浏览器访问[http://www.showmyip.com/]。

然后你需要设置防火墙 (或者NAT,或者无线路由),让从外网能够访问你的防火
墙某个端口,相当于对应访问内网你的jabber server的IP及端口。为啥说这么
麻烦呢,因为不同的防火墙在这时使用的名字不一样。比如我的,在"转发规则
->虚拟服务器"里设置。为了对用户友好,开发商起了这些"友好"的名字,结果
连专业人员也不知道那是什么了。用户?当然也不知道。

以上设置完成以后,你可以告诉你要聊天的对象,让他把jabber客户端的服务器
设置为你的外网IP,还有端口……

然后,你们就可以聊了。

6. 其他

我禁用了注册用户的功能,凡是要用的,手动添加。文字聊天,传文件,都行。
语音没试,我嗓子基本还是不能发声,所以没啥意义。

还有,各种客户端里,还就是pc版的gtalk不行,它不能更改服务器的地址,只
能连到google。

--------------------

有的同学可能会问,你为啥不用QQ呢?

其一,2007年12月,我在博客里提到 我永不使用QQ,"永"对现在而言,仍然是有
效的。

其二,QQ是某个公司开发的产品,使用者没法选择这一服务而拒绝产品。如果你
使用电子邮件这一服务,有很多产品可以用。对网络中心提供的不爽,你还可以
用google的,对google不爽,你还可以用163的。你对QQ提供的不爽呢?

其三,QQ的一些模式真的令我非常不爽,不仅2007年底事件,还经常让我想起许
多敏感词。

比如吧,比如,我发放课件的时候,会向同学的信箱发送,而不是要求同学到我
的博客或网站下载,原因非常简单,要求别人如何如何,是一种*侵入式*的合作
方式。

如果老板要求下属必须使用某款手机,不能要求下属去买一个,而只能为下属备
好免费的,还要问下属乐不乐意非工作时间带在身上,要不要公司为带这么沉个
东西付补偿款。老板不能因为员工也可以用这手机聊聊私喀,就理所当然地认为
有权利要求下属了。

这让我想起李记者讲过的例子:为了避免侵版被告,公司老板要求员工自备操作
系统和所有开发工具。你怎么不要求产业工人自备车床呢。

所以,各种旧的和新的原因吧,我仍然不使用QQ。很多同学问过我这个问题了,
你一个IT男为啥没有QQ呢。2007年12月那篇博客,我是这样写的:

我将永不使用QQ。
我的MSN和邮箱:young@nenu.edu.cn
对给您带来的不便深感抱歉。
添麻烦了。

有不少朋友问到原因。如果你不知道,麻烦google: QQ soff

查对方IP可以使用netstat或其他QQ版本。以此纪念soff君。不认识soff,也基本
没用过他的作品,也不关心审判结果。弃用是因为感情上不再能接受QQ,不是技
术原因。

转个故事,说明一下原因。

古时候,阿跋斯哈里发王朝的第四代哈里发叫阿尔・马蒙。他有匹千里马。一
次,一个叫奥玛的商人路过巴格达,他看到阿尔・马蒙的马,羡慕不已,提出用
十个金币来换,但阿尔・马蒙说就是给一百个金币,他也不换。奥玛恼羞成怒,
决定用诡计把千里马骗到手。

奥玛打探到阿尔・马蒙每天独自溜马的路线,选择了一个离城门最远,人迹罕至
的地方,乔装成病重的流浪汉,躺在路边。果然,善良的阿尔・马蒙看到
有人病倒路边,赶紧把他扶上千里马,打算带他进城治病。奥玛装作有气无力的
样子指了指地上的包袱,阿尔・马蒙把他的包袱拾起来,系在马背上。奥
玛又指了指远处的木棒,阿尔・马蒙以为这是流浪汉的木棒,忙转身去捡。
奥玛趁机夺过缰绳,纵马逃走。

阿尔・马蒙追在后面追了很久,终于跑不动了。奥玛知道奸计得逞,便想奚落奚落
阿尔・马蒙。他勒住马,得意洋洋对阿尔・马蒙说:"你丢了千里马,连一
个铜子也没有得到,都是因为太慈悲了。你还有什么好说的?"

"马可以归你,但我有个要求," 阿尔・马蒙大声说,"别告诉别人你骗走千里马的方法。"

奥玛哈哈大笑说:"原来哈里发也怕别人嘲笑!"

"不,"阿尔・马蒙喘着粗气说,"我是担心人们听说这个骗局后,会怀疑昏倒在路
边的都是骗子、强盗。说不定哪一天你我也会染疾,倒卧路边,那时谁来帮助我
们呢?"

后来,两年前吧,与包师弟聊天QQ和gmail等事情。对话基本是这样的:

你不用QQ,如果哪天gtalk也封了呢?

那我们就用gmail,然后电话或短信通知邮件发了吧。

如果gmail也封了呢?

对话围绕着,如果A不能用了,那么用B吧,如果B也不能用了,那么用C吧……如果
Z也不能用了,我们要不要用QQ呢?

一个人,你可以杀死他,但是,也不能令他屈从。屈从,以及生命,不能共存于
一个人的身体中。

好在,除了QQ,我们不是还有别的么,比如 jabber server。

--------------------
博客会手工同步到以下地址:

[http://giftdotyoung.blogspot.com]
[http://blog.csdn.net/younggift]
[http://www.renren.com/268966623/profile#pblog]

1 comment:

Anonymous said...

Very nice post. Ӏ just stumbled upon уour blog and wаnted to say that I hаvе really enjоyed surfing arounԁ уour
blog pоsts. After all I'll be subscribing to your feed and I hope you write again very soon!

Also visit my web page garden center jobs