新版 quorum 里 jwt token 是可选项,如果留空的话系统会自动生成一个。

Rum App 发布后我搭建了一个 windows server 运行,但一直感觉不够炫酷,于是折腾了一台 Ubuntu 主机。在主机上自己 Build Quorum,并运行,并在两位大佬轮番指导下才通过本地 Rum App 连接成功。两位大佬一位是 samson 一位是 wanming,这篇文章圈不出来他们本人。但是真的很感谢他们的热心帮助。如果大佬看到希望可以在评论区留言认领我的感谢。

正文开始

这一步我们会通过 git 命令从 github 上直接克隆一个 Rum System 到我们的服务器上。所以你需要先在服务器上安装 git:

安装完成输入命令:

检查一下是否安装成功。接下来就是从 github 上通过 git clone 命令来克隆 Rum System。Rum System 在 github 上的地址是:https://github.com/rumsystem/quorum

https://github.com/rumsystem/quorum

点击“Code”按钮会出现下拉菜单,菜单中选择“SSH”这一栏,就会出现仓库地址了。

将仓库地址放到克隆命令后,回车执行命令行:

如果发现系统提示我们无法连接,是因为 git clone 命令是通过 SSH 进行连接的,我们需要在自己的 github 账号里加入我们的 SSH 公钥。

步骤可以参考 github 的官方教程,链接如下:https://docs.github.com/en/authentication/connecting-to-github-with-ssh

https://docs.github.com/en/authentication/connecting-to-github-with-ssh

克隆完成后可以“ls”一下看看是不是有了“quorum”这个文件夹。

现在可以进入文件夹去 build 我们的 Rum System。

在根目录里执行开发人员准备好的脚本文件就好:

这个时候有可能会报错,是说我们还没有安装 go 语言。那我们就安装一下好了。go 语言的官方下载页面在这里:https://go.dev/dl/

https://go.dev/dl/

进去后下载 linux 的版本就好:

你可以通过 scp 命令上传到服务器,也可以在服务器上用 curl 命令把这个文件下载下来。我这里是在本地用的 scp 命令:

上传成功后,到文件所在位置输入如下命令:

然后把 go/bin 输入到环境变量中,只需要把下面的语句放到 /etc/profile 文件内:

确认一下是否安装成功:

go 语言的官方安装教程在这里:https://go.dev/doc/install

https://go.dev/doc/install

再次 Build 成功,进入下一步。

Build 成功的可执行文件存在 dist 文件夹中。cd 进 dist 去,ls 看到 dist 里面的文件夹里有个 linux 文件夹,再次 cd 进去,就到了 linux 系统的可执行文件的所在地了。

直接 ./quorum 运行是不行的,需要加一些参数,我的带参数的运行命令是这样的:

这样就能运行成功了。运行成功的界面应该长这样:

会跳出一些 warning 什么的,可以暂时忽略掉。

这个时候可以输入一个 curl 命令检查一下是否连接成功:

成功的话会返回一个当前种子网络的状态的消息。

进入下一步之前再保存一个密钥,它位于 quorum 文件所在的文件夹里,cd 进 cert 文件夹,里面有两个文件分别是 server.key 和 server.crt。输入命令:

把返回的密钥复制保存在本地。

新版本里 jwt token 不是必须的,这里也可以去存一个备用,jwt 位于 quorum 运行根目录所在的 config 文件夹里,里面有个后缀为 .toml 的文件,cat 或 vi 打开就能找到 jwt。

这下万事俱备了,我们在本地打开 Rum APP,从菜单项“节点与网络”中选中“外部节点”。

到了填入节点信息的步骤,把我们在上一步收集到的 jwt 和 server.crt 填进去就好了:

顺利的话,应该可以看到“外部节点模式”亮绿灯了:

不顺利的话,比如我,踩到的坑我在下一个小节总结一下,看看读者能不能顺利回避:

  1. 如果是新手小白的话可能会在各种文件夹和目录之间反复横跳找不到方向。这个看仔细一点就好了。
  2. 防火墙可能会阻止本地 APP 连接服务器。解决办法是打开端口 433,7000,8002。
  3. 最坑我的是我的云主机买的内存太小,如果内存溢出 quorum 进程马上就会被杀死。这个问题我一直无法定位,走了好多弯路,最后是求助大佬帮我发现的。解决办法是加了 1G swap。
  4. 最后是一个很好用的工具 tmux,可以帮我们保持住 quorum 的运行的同时开启别的命令行界面进行测试。

Sun Nov 21今天的 Leetcode 练习是:把罗马数字转化成整数,很有趣的一个小练习(也许是简单容易理解才觉得有趣哈哈)。然后我对 Go 还不熟悉,还不知道 Go 里面也有类似 Json 的数据结构。最后看了solution。发现别人的解题思路很棒,很直接。最后采用了她的思路。

Sat Nov 20

今天打算开始每天一个 Leetcode。试着做了一个递归小函数,这种在以前初学编程的时候感觉好难好难,在 Leetcode 上居然是 easy 级别。程序员真厉害。https://github.com/hawken-im/GoLeetCode

https://github.com/hawken-im/GoLeetCode

Sat Nov 19

先是在 xue.cn 上找了书但是发现有bug,然后在github上找到了该repo的地址就干脆在 github 里学习了吧。https://github.com/danicat/pacgo/

https://github.com/danicat/pacgo/

函数中有个叫“defer”的东西,后来去研究了,是一个很方便的语句,可以记录当前的状态但是延迟到函数结束再执行。

然后还学了ansi escape code,一个很奇怪的控制命令行窗口的代码……掌握这个奇怪的知识有啥用吗,还是说这个知识点背后还有点别的有连续性的知识体系,暂时没有继续研究下去。

I followed these two instructions:

Remember to config “sites-available” seperately, try not to config the global config file, for two reasons:

  1. It’ll be easier to maintain.
  2. Certbot is not that clever, so we want to leave the global config file to Certbot.

Follow the official instructions to install Certbot correctly.Then we need to choose a command to call a plugin to get CA.After I finished reading, I found out many unofficial instructions online are outdated.If we install Certbot correctly, we only need to use command:

Then Certbot can do all for you. Even can create a cron job to renew certificate automatically.

Try to get into the shawdowsocks container created by docker.

Found this command:

docker exec -it bash

It didn’t work. And I found this:

https://mkyong.com/docker/docker-exec-bash-executable-file-not-found-in-path/

https://mkyong.com/docker/docker-exec-bash-executable-file-not-found-in-path/

Noticed not every image is using the bash shell.

Then tried this:

docker exec -it sh

It actually worked.

0%