安装类似Slack的可自定义的开源聊天应用Rocket.Chat

(续写)2016年8月22日

看起来在 atmarkIT 上有连载。

首先

环境和版本信息

$ uname -a
Linux solydxk 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24) x86_64 GNU/Linux

$ uname -a
Linux solydxk 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24) x86_64 GNU/Linux

$ docker -v
Docker版本1.6.2,构建7c8fca2。

$ docker images
仓库 标签 镜像ID 创建时间 虚拟大小
rocketchat/rocket.chat 最新版本 0cae0d783df5 2天前 422.1 MB

Rocket.Chat 是什么?

这是一个由Meteor制作的聊天应用程序。由于BYOS的原因,您需要自己安装并启动它。

Rocket.Chat可能成为在内部网络中构建的一种选择,当你想要使用Slack、HipChat或ChatWork但因无法回避的情况下时,它几乎具有类似于Slack的用户界面。

以下是从README中摘录的内容。

特点 (tè

Current

    • BYOS (bring your own server)

 

    • Multiple Rooms

 

    • Direct Messages

 

    • Private Groups

 

    • Public Channels

 

    • Desktop Notifications

 

    • Mentions

 

    • Avatars

 

    • Markdown

 

    • Emojis

 

    • Transcripts / History

 

    • I18n – Internationalization with Lingohub

 

    • Hubot Friendly – Hubot Integration Project

 

    • Media Embeds

 

    • Link Previews

 

    • LDAP Authentication – LDAP Authentication on Rocket.Chat Wiki

 

    Face to Face Video Conferencing aka WebRTC signalling (Alpha)

かなり気合入っていますね。
Alphaとはいえ、ビデオチャットまでやろうとしているのですから。
LDAPと連携できるのも、イントラネットとしては地味にポイントが高いかもしれません。

在其他的OSS中,有一款可以BYOS的聊天应用程序(截至7/12 0:40时)。

名前URLFrameworkGithub StarsInitial CommitLast Commit (master)DevHubhttps://github.com/volpe28v/DevHubnodejs, socket.io98Jan 29, 2012Jul 1, 2015Let’s Chathttps://github.com/sdelements/lets-chatnodejs, socket.io, python6882Feb 26, 2012Jul 11, 2015Kadanhttps://github.com/kandanapp/kandanrails2648Mar 4, 2012May 8, 2015MogoChathttps://github.com/HashNuke/mogo-chatelixir, phoenix, ember.js692Jan 12, 2014Apr 12, 2014Rocket.Chathttps://github.com/RocketChat/Rocket.Chatnodejs, meteor2578May 17, 2015Jul 10, 2015

根据我的搜索结果,似乎有几个类似的开源软件,其中特别是“Let’s Chat”被提及较多。
因为我都没有使用过这些软件,所以无法进行适当的比较…
考虑到信息的丰富程度,选择”Let’s Chat”可能是最安全的选择吧。

虽然Rocket.Chat是最近才出现的,但已经超过2500个星标了。
虽然星标并不是全部,但可以感受到它的势头。
我想先尝试一下这个势头,所以我安装了Rocket.Chat。

使用Docker

在 README 中写着 “docker pull rocketchat/rocket.chat”,但是光这样运行 “docker run rocketchat/rocket.chat” 是不能使 Rocket.Chat 正常运行的。

yasuhiroki@solydxk ~ $ docker run rocketchat/rocket.chat
=> Starting meteor app on port:80

/built_app/programs/server/node_modules/fibers/future.js:245
                        throw(ex);
                              ^
Error: MONGO_URL must be set in environment
    at Object.<anonymous> (packages/mongo/remote_collection_driver.js:36:1)
    at Object.defaultRemoteCollectionDriver (packages/underscore/underscore.js:750:1)
    at new Mongo.Collection (packages/mongo/collection.js:98:1)
    at packages/accounts-base/accounts_common.js:141:1
    at /built_app/programs/server/packages/accounts-base.js:243:4
    at /built_app/programs/server/packages/accounts-base.js:1659:3
    at /built_app/programs/server/boot.js:222:10
    at Array.forEach (native)
    at Function._.each._.forEach (/built_app/programs/server/node_modules/underscore/underscore.js:79:11)
    at /built_app/programs/server/boot.js:117:5

根据所见,需要MongoDB的URL。既然这样,我们也可以使用Docker创建MongoDB服务器。

yasuhiroki@solydxk ~ $ docker pull mongo
yasuhiroki@solydxk ~ $ docker run -v ~/rocketchat-mongodb:/data/db --name rocketchat-db mongo

-v ~/rocketchat-mongodb:/data/db で、MongoDBのデータの永続化を図っています。~/rocketchat-mongodb が無ければ自動的に作られます。
詳しくはDockerのDocumentsをご覧ください。
https://docs.docker.com/userguide/dockervolumes/
–name rocketchat-db で名前をつけているのは、次に、Dockerコンテナのリンク機能を使うためです。

现在就让我们启动Rocket.Chat吧。

yasuhiroki@solydxk ~ $ docker pull rocketchat/rocket.chat
yasuhiroki@solydxk ~ $ docker run --name rocketchat --link rocketchat-db:rocketchat -e MONGO_URL=mongodb://rocketchat-db:27017 -e ROOT_URL=http://localhost -p 55555:80 rocketchat/rocket.chat

— 我们将link rocketchat-db:rocketchat到之前创建的MongoDB容器。
关于容器之间的链接,请查看Docker的文档。
https://docs.docker.com/userguide/dockerlinks/
通过链接,您可以使用 -e MONGO_URL=mongodb://rocketchat-db:27017 来指定MongoDB容器的名称。

-p 55555:80 で、Port Forwardingの設定をしています。この設定により、localhost:55555で、Rocket.Chatにアクセスできるようになります。
代わりに、 -P や -p 80 としてやってもPort Forwardingの設定はできます。Dockerが適当なPortを割り当ててくれます。私の環境では、32770 でした。(つまり、-p 32770:80と同じ)。
詳細はDockerのDocumentsをご覧ください。
https://docs.docker.com/userguide/usingdocker/#running-a-web-application-in-docker

另外,在代理环境下可能需要-e “http_proxy=” -e “https_proxy=”。

访问

只需访问一下之后就好了。
提前说好,有时可能会很慢。
当一切都无法解决时,通常关闭并重新打开浏览器可以改善…。

顶部

image

注册

账号注册

image

在这里注册的电子邮件地址将在以后用于在Gravatar上获取头像图片时使用。

用户名称注册

image

在这里,有时会发生非常慢的转到下一个画面。
也许是因为代理设置没有在容器中生效,导致超时。
在启动 Rocket.Chat 时,请考虑添加 -e “http_proxy=” -e “https_proxy=”。

选择头像

image

注册完成

image

如果没有问题,转到顶部画面就可以了。

最后\最终\最后的时刻

这里提供了一个原生中文的重新表述:

将Docker用于安装并注册账号的步骤已经整理好了。
当然,如果您愿意,您可以自己安装meteor并准备MongoDB,然后进行构建,应用也应该能够正常运行。
然而,作为一个对nodejs和meteor并不太熟悉的人来说,只需要让应用能够运行起来的话,使用Docker会更加方便,不需要过多担心详细的配置。

顺便提一句,对于Meteor命令来说,

curl https://install.meteor.com/ | sh # Install Meteor
git clone https://github.com/RocketChat/Rocket.Chat.git
cd Rocket.Chat
meteor

如果您希望自己能够充分管理设置,我觉得选择这个更好。

暂时已经启动了,我会找到机会试用一下。

闲话不提

顺便提一下,Rocket.Chat的Dockerfile在这里:
https://github.com/RocketChat/Deploy.to.Cloud/blob/master/OfficialImage/Dockerfile
无法直接从DockerHub查找到,有点困扰…

广告
将在 10 秒后关闭
bannerAds