竟然真的成了
前几天修复NAS。重新安装Docker套件的时候,想起likecoin验证人节点好像也是运行在docker环境下的,闪过一个念头,群晖上能不能安装运行likecoin验证人节点呢?
随手在docker注册表上搜索了下,看到有likecoin的容器镜像,下载过来,在群晖的Docker Dektop安装了下,可以安装,但不知道怎么配置节点。苦于找到不参考资料,这事就搁置下来,但nas上能不能运行likecoin节点这个问题,却一直搁在我心中。
部署在家庭局域网内的NAS,没有公网IP,到底能不能部署区块链节点呢?我很想知道这个答案。
上周末,安装内网穿透工具frp时,意外受挫,被迫花了一天的时间来解决这个问题,期间开启多任务模式,边查资料边学习怎么搭建likecoin验证节点。在测试Docker Dektop容器环境下配置参数,没有结果的情况下,我用ssh链接nas,进入系统,取得管理员权限,用 docker run hello-world 测试了下,发现在桌面安装的docker套件,在ssh下也是有效的。这个发现,让我豁然开朗,或许在ssh环境下用命令行安装,才是唯一正确的方法。
我根据likecoin官方的文档,一步一步操作,期间遇到很多坑。这里记录下,供有兴趣用NAS安装节点的同学做个参考。
第一、Docker Compose 版本问题。文档其实有提示version >= 1.28,但因为我不熟悉linux命令,都是一边查资料,一边用网上教程提供的代码直接运行,网上教程,很多Docker Compose 安装代码包的版本都比较老,开始时没注意,出现很多意外的错误提示。摸索了好久,才发现版本问题。
第二、修改环境配置文档。这一步卡了我好久。说明文档中,用这个命令,cp .env.template .env,从模板文件复制环境配置。但是我运行后,用vi .env 打开编辑,都是创建一个空文档,而没有模板内容,说明复制不成功。我也不知道问题出在哪里,后来我改用其他文件名复制,打开编辑,输入参数后,再把文件名改成.env,才算成功。这个环节的波折毫无道理,我到现在也感觉莫名其妙。或许是我不熟悉linux的缘故,才导致这些不可知的错误。
第三,还是环境配置文档的修改。这一步对我来说是真正的门槛,折腾得我差点想放弃。原因是我仅仅按照说明文档去修改参数,而没有认真阅读模板文档上的注释。我修改了安装文档已经明示修改的几个地方,便开始运行节点初始化命令,结果出现了创建文件夹没有权限的提示,我以为是权限设置不对导致的错误,一直在这方面排查,甚至找了我们单位的it工程师帮我诊断,都毫无头绪。就在我想要放弃的时候,我想到了,为什么不去Discord上去咨询下官方技术人员。我把错误截图发到Discord上的likecoin验证人频道,不一会,有人回复,在.env中的uid有没有改成0?经他提醒,修改后,果然很很顺利的初始化成功。高手的一句点拨,真的可以教人少碰很多壁。这就是向有经验者学习的价值,不然自己在黑暗中苦苦摸索,真不知会不会半途放弃。
第四,修改数据存储位置。节点顺利创建,我试着用nas的内网ip地址加上:26657这个端口,在浏览器上输入地址后,竟然真的出现了节点信息,耶,成功了。太让人兴奋了。所谓前路有多波折,到达终点后就有多幸福。到这一步,已经是晚上12点了,我开着nas,心满意足的去睡觉了,还剩最后一步,把节点升级为验证节点,且不着急,等数据同步完了才操作。
第二天起床,我第一件事就打开电脑,看昨晚节点数据同步了多少。哪知,昨晚睡觉前还好好的节点信息状态页,此刻已经打不开了。出现了什么情况?我赶紧进入NAS,发现系统信息栏有提示,docker意外中断。我手动重启docker,几秒钟后,又自动关闭。这是怎么回事?不一会,我发现意外接踵而至,nas上的应用一个个都打不开了。我以为是nas系统出现了什么状况,重启了下,哪知重启后,套件中心里已经安装的所有套件都不见了。真是见鬼了。这些套件都处于关闭状态,甚至都无法手动启动。折腾半天后,我试着安装一个新的套件,结果提示,系统盘没有空间,无法安装。看到这个提示,才明白,docker上运行的likecoin节点,同步的数据,原来都保留在nas的系统盘上,把系统盘撑满了,才出现各种莫名的故障。
知道了问题所在,就好解决。我在网上找到一些教程,知道了怎么排查linux文件大小,然后把likecoin的data文件夹从root下移到了别的盘下。
但是,要让节点正常运行,必须要修改设置,改变data文件夹的默认存储位置到数据盘。怎么改呢?
我想应该是可以在docker的存储空间内设置。我停止了likecoin容器,修改配置了存储空间,但是重启后错误依然。这里折腾了好久,过程很曲折,写起来实在是麻烦,恐怕各位看官会看晕,我直接说结果,存储空间的装载路径,必须要用/likechain这个名字才有效。另外,修改存储空间后,config文件夹,也必须随同data文件夹一同迁移到新的位置。这一步,我也是费了好多时间才得来的经验。切切。
移掉了root下的data文件,修改了存储空间,启动容器镜像,果然,likecoin节点又上线了。
后面只要一行命令,就可以把这个节点升级为验证人节点了,命令行和参数在官方文档中都有说明,不再赘述。
好吧,这就是我废了一个周末两天时间得来的一点经验和教训,总结下:
作为家庭存储器的NAS,真的可以运行likecoin节点,虽然我至今也没搞明白,位于家庭局域网内,没有外网ip的nas是怎么和区块链上其他的节点实现通讯的。但这是千真万确的事实,我的验证人节点,已经真实上线。现在,你进入Liker Land APP,就可以在50个活跃验证人的列表中看到我了,我节点名字是:zooman。