Rat's

一款二次元的Web多人在线网络聊天系统:Fiora安装及使用
说明:Fiora是一款偏二次元的Web多人在线聊天应用,使用Node.js、Mongodb、Socket.io和R...
扫描右侧二维码阅读全文
20
2019/07

一款二次元的Web多人在线网络聊天系统:Fiora安装及使用

说明:Fiora是一款偏二次元的Web多人在线聊天应用,使用Node.jsMongodbSocket.ioReact编写,使用起来还行,挺简洁的,这里水个搭建教程,有兴趣的可以玩玩。

截图

请输入图片描述
请输入图片描述

功能

  • 好友,群组,私聊,群聊
  • 文本,图片,代码,url等多种类型消息
  • 贴吧表情,滑稽表情,搜索表情包
  • 桌面通知,声音提醒,语音播报
  • 自定义桌面背景,主题颜色,文本颜色
  • 查看在线用户,@功能
  • 小黑屋禁言

手动安装

Github地址:https://github.com/yinxin630/fiora

所需环境:Nodejs >= 8.9.0Mongodb

说明:512M内存vps可能还需要先加一点虚拟内存,不然构建过程会失败,可以使用Swap一键脚本→传送门

1、安装Nodejs

#Debian/Ubuntu系统
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt install -y git nodejs 

#CentOS系统
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install nodejs git -y

2、安装Mongodb

#CentOS 6系统,将下面命令一起复制进SSH客户端运行
cat <<EOF > /etc/yum.repos.d/mongodb.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/6/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF
yum -y install mongodb-org

#CentOS 7系统,将下面命令一起复制进SSH客户端运行
cat <<EOF > /etc/yum.repos.d/mongodb.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF
yum -y install mongodb-org

#Debian 8系统
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/4.0 main" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
apt update -y
apt install -y mongodb-org

#Debian 9系统
curl https://www.mongodb.org/static/pgp/server-4.0.asc | apt-key add -
echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
apt-get update -y
apt-get install -y mongodb-org

#Debian 10系统,目前Debian 10还没Mongodb软件包,不过试了下还是可以用下面的方法勉强安装的
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
apt update -y
apt install -y mongodb-org

#Ubuntu 16.04系统
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
apt update -y
apt install -y mongodb-org

#Ubuntu 18.04、18.10、19.04系统
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
apt update -y
apt install -y mongodb-org

如果导入公匙时出现gnupg, gnupg2 and gnupg1 do not seem to be installed错误,使用apt install -y gnupg2,然后重新导入即可。

启动Mongodb并设置开机自启:

#CentOS 6系统
service mongod start
chkconfig mongod on

#CentOS 7、Debian、Ubuntu系统
systemctl start mongod
systemctl enable mongod

3、安装fiora

#拉取源码并存放于/opt文件夹
git clone https://github.com/yinxin630/fiora.git -b master /opt/fiora
cd /opt/fiora
#安装依赖,这里不能用npm,需要用yarn来安装
npm i -g yarn
yarn
#构建
npm run build
#转移产物
npm run move-dist
#启动
npm start

运行后打开ip:9200,注册一个账号,然后可以看SSH客户端运行日志,获取自己的userId

#这里注册或登录的时候返回的信息,后面的5d329dd354b9则为自己的userId
<-- getLinkmansLastMessages  mYNheu93jds7 5d329dd354b9

如果ip:9200打不开的,可以检查下防火墙,CentOS系统可以使用以下命令:

#CentOS 6
iptables -I INPUT -p tcp --dport 9200 -j ACCEPT
service iptables save
service iptables restart

#CentOS 7
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload

像阿里云等,还需要额外在安全组开放端口。

接下来再将自己的账号设置成管理员,先使用Ctrl+C断开运行。

新建Systemd配置文件,只适用于CentOS 7Debian 8+Ubuntu 16+等。

#先修改你的userId和运行端口后复制到SSH运行
Administrator=5d329dd354b9
Port=9200
#新建fiora用户并授权
useradd -M fiora && usermod -L fiora
chown -R fiora:fiora /opt/fiora
#新建systemd配置文件,将以下代码一起复制到SSH运行
cat > /etc/systemd/system/fiora.service <<EOF
[Unit]
Description=fiora
After=network.target
Wants=network.target

[Service]
Type=simple
PIDFile=/var/run/fiora.pid
ExecStart=$(command -v npm) start
WorkingDirectory=/opt/fiora
Environment=Administrator=$Administrator Port=$Port
User=fiora
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
EOF

开始启动并设置开机自启:

systemctl start fiora
systemctl enable fiora

其它系统,比如CentOSDebian 7等系统,可以直接使用以下方法启动:

#管理员userId和运行端口自行修改
export Administrator=5d329dd354b9 Port=9200
nohup npm start &

此时就可以访问ip:9200,运行端口以你设置的为准,这时候你登陆的时候,会发现左侧多了个管理员图标。

4、域名反代
如果你想使用域名的话,这里依旧使用Caddy反代,操作如下:

安装Caddy

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
#备用地址
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh

配置Caddy

#以下全部内容是一个整体,请修改域名后一起复制到SSH运行!

#http访问,该配置不会自动签发SSL
echo "www.moerats.com {
 gzip
 proxy / 127.0.0.1:9200 {
    websocket
    header_upstream Host {host}
    header_upstream X-Real-IP {remote}
    header_upstream X-Forwarded-For {remote}
    header_upstream X-Forwarded-Port {server_port}
    header_upstream X-Forwarded-Proto {scheme}
  }
}" > /usr/local/caddy/Caddyfile

#https访问,该配置会自动签发SSL,请提前解析域名到VPS服务器
echo "www.moerats.com {
 gzip
 tls admin@moerats.com
 proxy / 127.0.0.1:9200 {
    websocket
    header_upstream Host {host}
    header_upstream X-Real-IP {remote}
    header_upstream X-Forwarded-For {remote}
    header_upstream X-Forwarded-Port {server_port}
    header_upstream X-Forwarded-Proto {scheme}
  }
}" > /usr/local/caddy/Caddyfile

tls参数会自动帮你签发ssl证书,如果你要使用自己的ssl,改为tls /root/xx.crt /root/xx.key即可。后面为ssl证书路径。

启动Caddy

/etc/init.d/caddy start

就可以打开域名进行访问了。

如果你想修改默认的频道名称的话,可以编辑config/server.js文件,修改最下面的代码:

defaultGroupName: 'fiora',

然后重启应用即可。需要使用到七牛云CDN的,可以参考作者给的教程自行设置→传送门

宝塔安装

1、安装宝塔

#CentOS系统
wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
#Ubuntu系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
#Debian系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh

安装完成后,进入面板,点击左侧软件商店,然后安装PM2管理器MongoDBNginx(使用域名访问才需要安装,反之不用)。

注意:Debian安装MongoDb之前还需要使用命令apt install sudo,不然可能存在MongoDb启动不了的情况;如果你已经安装了MongoDb,那就先使用apt install sudo,再使用/etc/init.d/mongodb start启动即可。

2、安装fiora
该步骤参考上面的手动步骤3,区别在于新建systemd配置文件的时候,Environment参数还需要加一样,不然启动可能失败。

只需要把新建systemd配置文件步骤换成下面这个,其它一模一样。

#先给node做个软连接,不然后面会启动失败
ln -sf $(which node) /usr/bin/node
#修改运行端口,可以默认
Port=9200
#以下命令一起复制进SSH客户端运行
cat > /etc/systemd/system/fiora.service <<EOF
[Unit]
Description=fiora
After=network.target
Wants=network.target

[Service]
Type=simple
PIDFile=/var/run/fiora.pid
ExecStart=$(command -v npm) start
WorkingDirectory=/opt/fiora
Environment=NODE_ENV=production Administrator=$Administrator Port=$Port
User=fiora
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
EOF

3、域名反代
先点击左侧网站,添加站点,然后再点击添加好了的域名名称,这时候就进入了站点配置,点击配置文件,在中间添加以下代码:

location / {
    proxy_pass http://127.0.0.1:9200;
    proxy_set_header Host             $host;
    proxy_set_header X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forward-Proto http;
    proxy_set_header X-Nginx-Proxy true;
    proxy_http_version 1.1;

    proxy_redirect off;
}

其它的就自己慢慢摸索吧,博主也没过多使用,有问题可以直接去Github Issues反馈。

Vultr注册就送$50,可开日本/新加坡等机房,【点击注册】。
最后修改:2019 年 09 月 01 日 10 : 25 PM

发表评论

72 条评论

  1. hh

    不能上传图片,传完就是空的,这是什么原因呢?

    1. hh
      @hh

      找到原因了,是所有图片默认的链接前有一个172.24.215.136的IP地址,但是不知道去哪修改

      1. Rat's
        @hh

        这个好像是局域网ip,你修改config/server.ts,把host:后面删掉,改成'服务器ip'或者域名,然后重启看看。

        最后这方法我没试过,有问题可以接着留言。

        1. hh
          @Rat's

          host: options.host || env.Host || ip.address(),

          1. hh
            @hh

            大佬,我不会修改

            1. hh
              @hh

              已经改好啦, host: "IP地址" 即可,谢谢大佬

  2. 111

    请问如何清理聊天记录

  3. Meocat

    之前搭建的时候用nginx反代,结果页面全是空白,用开发者工具一看js和css都加载错误
    解决:配置文件是宝塔面板自动生成的,自动缓存js/css和图片,把两条规则删掉就行了

    1. 111
      @Meocat

      我也分享下吧,不用楼主这么麻烦的设置,宝塔安装,我们可以直接忽略第三部教程,直接到宝塔添加网站(按照博主的话就是:先点击左侧网站,添加站点,然后再点击添加好了的域名名称,这时候就进入了站点配置,然后我们这里改下,不用站点配置,直接跳到反向代理这个选择,直接填入代理的IP,勾选反向代理,就可以了)

    2. 111
      @Meocat

      我删除了还是空白啊

    3. Rat's
      @Meocat

      好的,感谢提供,给遇到的人参考下

  4. Meocat

    我搭建以后:9200端口可以访问 但是用宝塔的nginx反代却不行 显示空白页

    1. Meocat
      @Meocat

      也不算空白 标签上有fiora的标题 www.meocat.ml

  5. 楼顶的猫
    该评论仅登录用户及评论双方可见
    1. Rat's
      @楼顶的猫

      注册的时候闪出的getLinkmansLastMessages信息就可以了,或者你在频道发一条消息,也有这样的消息,只需要后面的一串就可以了,你可以多观察,一般后面一串都一样。

  6. LYM

    root@eatp7:/opt/fiora# node server/main.js
    internal/modules/cjs/loader.js:638

    throw err; ^

    Error: Cannot find module '/opt/fiora/server/main.js'

    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) at Function.Module._load (internal/modules/cjs/loader.js:562:25) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

    root@eatp7:/opt/fiora#
    Socket error Event: 32 Error: 10053.
    Connection closing...Socket close.

    Connection closed by foreign host.

    1. Rat's
      @LYM

      我改了下运行方式,你看看。

      1. LYM
        @Rat's

        emmmm现在按照上面的vps监听localhost:9200.。但是用浏览器访问不了,一查是用ipv6,但又转不到ipv4.。。不知怎么办。一直卡在ip:9200那步

        1. Rat's
          @LYM

          服务器发我,我给你看看,邮箱moerats@live.com,备注LYM

  7. nisngyo

    大佬,有没有可以在线语音聊天的系统,支持建立房间设密码什么的
    找了几个都是文字聊天室

    1. Rat's
      @nisngyo

      这个好像没怎么见到过

  8. zzz

    大佬能不能出个宝塔一键部署啊

    1. Rat's
      @zzz

      感觉手动也挺快的啊

      1. zzz
        @Rat's

        宝塔第三步安装后为什么网站和服务器连不上了

        1. Rat's
          @zzz

          这个不太清楚,看是不是ssh被阻断,等会看看

  9. 关闭SSH终端后就不能用了

    1. Rat's
      @啊

      开机自启做了没,比如新建systemctl配置文件后的这2步。
      systemctl start fiora
      systemctl enable fiora

  10. LYM
    该评论仅登录用户及评论双方可见
    1. Rat's
      @LYM

      理论上好像也是可以的,阿鲁很流行,你懂的

      1. LYM
  11. 老哥,搜索表情包的图片全是挂的,是啥情况

    1. Rat's
      @凯

      这个我好像没注意到这个问题。

  12. 咸鱼

    之前玩过这个,也试过lala的RocketChat(网页聊天室),真心觉得那个好点。

    1. Rat's
      @咸鱼

      是的,那个功能强些。

  13. 夏凌

    谢谢rat‘s 自从认识你基本上把你博客都翻了个遍,干货太多了,我还搬了几个到我博客上,我也从一个刚知道服务器的新手变成现在十多个服务器的新手2333,很高兴认识你,都怪你我花在服务器上的钱太多了55555,不过很新鲜也很好玩,这次也谢谢,我刚刚搭好这个,嘻嘻嘻

    1. Rat's
      @夏凌

      多折腾下,你就会变成老手。

  14. 大佬搬走啦,已经用超链接注明出处

    1. Rat's
      @晨

      好的额,看的上的可以随便转

  15. 小白快跑

    群晖部署这种应该用docker更好嘛?

    1. Rat's
      @小白快跑

      对,docker最方便的,可以看下作者提供的docker教程:https://github.com/yinxin630/fiora/blob/master/doc/INSTALL.ZH.md

      1. 小白快跑
        @Rat's

        群晖自带的可视化docker界面安装不了,然后用ssh在build的时候一直报错。
        只好在群晖装个centos来装装个。。。这个聊天室代价太高了。。。
        小透明第一次和大佬说这么多,好激动!

        1. Rat's
          @小白快跑

          其实这个docker我之前构建过一次,报错了,就没搞了。最后欢迎多发言

  16. 陶然
    该评论仅登录用户及评论双方可见
    1. Rat's
      @陶然

      ok,有时间看看

  17. 古力阿达

    大佬,能否出个这个的安装教程?
    https://github.com/phpvcl/oim

    1. 古力阿达
      @古力阿达

      或者这个也可以
      https://github.com/apple-traveller/mychat

      1. Rat's
        @古力阿达

        这些好像都不咋更新了

        1. 古力阿达
          @Rat's

          就是想一个临时聊天的那种客服系统

          1. Rat's
            @古力阿达

            试试我很久前水的文章,https://www.moerats.com/archives/736/,免费版不知道能满足你不

  18. 6666

    内存不够,swap来凑

    1. Rat's
      @6666

      小鸡太多,么办法,都是swap凑

  19. 心灵博客

    多人在线聊天应用?也就是聊天室对嘛?
    好像没什么意思了呢

    1. Rat's
      @心灵博客

      玩玩就好了。

  20. 支援者

    有自适应就好了

  21. 浮生若梦
    该评论仅登录用户及评论双方可见
    1. Rat's
      @浮生若梦

      修改可以参考这个https://www.moerats.com/archives/628/

      1. 浮生若梦
        @Rat's
        该评论仅登录用户及评论双方可见
        1. Rat's
          @浮生若梦

          是文章内截图,双击放大那种吗?

          1. 浮生若梦
            @Rat's
            该评论仅登录用户及评论双方可见
  22. 永远爱rat

    mv -f dist/fiora/* public执行后报错mv: cannot move 'dist/fiora/avatar' to 'public/avatar': Directory not empty
    上一步npm run build运行后提示 Tip: built files are meant to be served over an HTTP server.
    Opening index.html over file:// won't work. 大佬 怎么解决

    1. Rat's
      @永远爱rat

      这个不用管,正常的

      1. 永远爱rat
        @Rat's

        运行node server/main.js 后出现以下提示 并且用 ip:9200 无法打开
        (node:3999) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.
        (node:3999) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
        (node:3999) DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.

        1. Rat's
          @永远爱rat

          这也是正常的,你是用的服务器Ip还是英文ip,是服务器ip的话,检查下防火墙端口打开没。

  23. Kenneth

    给一个演示地址

    1. Rat's
      @Kenneth

      演示地址:https://fiora.suisuijiang.com/

  24. CoalballCat
    该评论仅登录用户及评论双方可见
    1. Rat's
      @CoalballCat

      来个地址看看先

      1. Coalballcat
        @Rat's

        https://github.com/howie6879/owllook

  25. kylin

    Centos7+宝塔
    ● fiora.service - fiora
    Loaded: loaded (/etc/systemd/system/fiora.service; disabled; vendor preset: disabled)
    Active: activating (auto-restart) (Result: exit-code) since 六 2019-07-20 20:01:19 CST; 6s ago
    Process: 19259 ExecStart=/www/server/nvm/versions/node/v12.6.0/bin/node server/main.js (code=exited, status=1/FAILURE)
    Main PID: 19259 (code=exited, status=1/FAILURE)

    7月 20 20:01:19 x systemd[1]: Unit fiora.service entered failed state.
    7月 20 20:01:19 x systemd[1]: fiora.service failed.

    怎么解决?

    1. Rat's
      @kylin

      这是用的宝塔安装里的systemd配置文件吗?不是的话,就换一下,是的话,贴下这个日志信息,命令journalctl -xe

  26. 永远爱Rat
    该评论仅登录用户及评论双方可见
    1. Rat's
      @永远爱Rat

      这是啥,给个地址看看