docker单容器部署fiora,包含mongodb和redis

唔~其实原本早就想用fiora啦,但是fiora用的redis和mongodb俩环境依赖那时候对咱都挺陌生的,而且没有做API或者二开的文档啥的,想做对接啥的只能对着源码撸,就…就很难受,

fiora

所以,那时候咱选择了AKK大佬的Pigeon留言板,Pigeon用的php加mysql可以直接塞进我现成的环境里,而且有开发API,
其实pigeon的API也没有做完,用户注册和消息获取咱都是直接读的数据库…说是将来会有消息获取的API,但是看样子,AKK大佬好像弃坑了耶…

最后,咱决定,还是把Pigeon换成fiora,然后直接翻源码做对接…


fiora的安装前提是三个环境,nodeJS,mongodb数据库和redis缓存
看了碎碎酱 (fiora作者) dalao的安装教程,发现推荐的docker安装方式是分三个容器,redis和mongodb官方的容器,再加一个fiora自己的容器
但是咱决定自己折腾一个三合一的容器粗来

大方向

这里就不提怎么安装docker和运行容器了,直接跳到安装步骤


额外事项

在下文中,咱们需要使用apt-get安装软件包,但是考虑到国内实际网络环境,
你可能会发现apt-get下载速度十分感人或者压根没法下载,
这个时候你可能需要把你的apt源换成国内的,这里咱用清华大学的源,参考这个教程
然后如果你和咱一样用docker,你可能会碰到这种问题
apt-get-faild
这个是由于docker的ubuntu纯净到连https请求都完不成…
你需要先切回官方源并且安装这俩软件包:

apt install apt-transport-https
apt install ca-certificates
apt update

然后切换回清华源,就能正常折腾了


安装redis

很简单,apt-get install redis傻瓜式安装就行,甚至不需要配置awa
唯一要注意的一点是: 启动服务时,服务名称redis-server,即service redis-server start
别像咱,和小傻瓜一样redids,redisd试了半天


安装nodeJS

首先安装npm,这是官方的安装文档
步骤就是下载并运行这个脚本https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh
然后它会帮你自动安装好
执行这一行指令就行wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
emmm,全新的docker容器可能连wget或者curl都没有,执行这个来安装apt-get install wget curl

这里咱卡住了一会,问题就是,这个脚本的地址被墙了好说,但是运行这个脚本如果没有科学网络的话也不行,文件下不下来…
咱的解决方案是,export http_proxy=http://192.168.123.123:321,像这样,可以为当前终端设置http或者https代理
只要想法子让科学上网工具开放一个docker容器能访问到的http代理端口就成

安装完成之后,退出并重新连接容器不然变量环境不会生效
然后执行npm指令,可以看到回显就是安装成功

之后再执行nvm install node来安装nodeJS


安装mongodb

直接apt-get install mongodb就成

并不需要配置,默认就能用,但是注意,默认没有用户的情况下,所有能连上数据库的连接都有最高权限,
千万不能再没有配置用户的情况下将这个端口开放到外网


安装fiora

然后你就能在当前容器的9200端口上看到一个崭新的fiora啦!

当然,现在你断开你的终端,进程就没了,所以,fiora推荐了一个方法:使用pm2进程开运行fiora,
这是官方教程的节选

# 安装 pm2
npm install -g pm2
# 使用 pm2 运行 fiora
pm2 start yarn --name fiora -- start
# 查看 pm2 应用状态
pm2 ls
# 查看 pm2 fiora 日志
pm2 logs fiora

配置fiora

配置文件默认不存在,需要在手工创建:位于根目录下,创建名为.env的文件
内容为一行一个键值对,使用=符号分割,例如:

JwtSecret=abcdefg
DisableRegister=true
MaxGroupCount=999
DisableDeleteMessage=true
Administrator=9f22f536f35e05189fcf73f7

配置文件中同时包含服务端配置和客户端配置,
你可以在这里找到所有可用的配置项目
客户端:fiora项目目录/packages/config/server.ts
服务端:fiora项目目录/packages/config/client.ts
你无需考虑配置项目属于客户端还是服务端,都可以无差别的写入.env文件中
其中JwtSecret项目是推荐一定要填写的,这关系到应用安全

fiora脚本

fiora有一个命令行系统,可以方便进行管理员操作,这里咱就不展开说了,因为官方文档这部分已经很详细了
但是如果和咱一样使用docker的话….那这里就又来了一个坑,你在执行任意命令的时候,都会抛出错误:

cmd_line_err

这是fiora的i18n翻译的问题,docker的默认语言变量是空值,但是fiora的i18n里显然没有语言的名字叫空值,然后….然后它就抛错了?…
咱已经就这个问题提了一个issue,但是似乎….似乎修复了之后这个问题仍然存在….
解决方案就是export LANG='en-US'export LANGUANGE='en-US'把语言变量暂时修改成英文

如何升级

在fiora中,只有数据库和.env文件存储了有效数据,其他都可以删了重下

所以,只需要备份数据库和.env文件,然后重新下载fiora,
并重新安装项目依赖和构建客户端
注意:
这里咱不建议直接覆盖旧文件,可能会导致新版本已经被删除的文件残留


最后

fiora超棒的!咱可是没有白忙活awa
虽然没有接口,但是咱还是对着源码给fiora做了消息同步和账户系统同步qwq