# 我的Connext路由设置经验

By [oldhu](https://paragraph.com/@oldhu) · 2022-05-23

---

目前Mirror上已经有两篇中文教程，分别是Silent的[《Connext testnet Router中文教程》](https://mirror.xyz/exploring.eth/fwb657xWhr5Q3mvoNes0eYT75yZtE6_hqVgOF3dVZSY)以及Crypto Owl的[《Connext 测试网路由器设置》](https://mirror.xyz/bullcoin.eth/c-ZKFX4_IsyRM-TJgg8KHoMjtm7E8nov_x9EcErzDeo)。除此之外的中文教程资源还包括gexiao上传到Youtube上的视频教程，如下所示。

[![]({{DOMAIN}}/editor/youtube/play.png)](https://www.youtube.com/watch?v=E-zGm45dWsc)

这些教程都很有参考价值，不过我当初设置的时候，参考的是这篇[英文文章](https://mirror.xyz/cyberg.eth/vxkEyroJ0vCnAXEuTl36-5UUrYjCf0V6tf59_PPGLQ0)。本文仍以英文教程为蓝本，兼顾官方文档，来记录自己设置路由时的一些经验教训。

选用ARM内核
-------

这算是我无意触发的BUG，第一次设置的时候我选用的是AWS的r6gd.medium示例类型。选这款服务器的理由很简单：它是符合8G内存虚拟机里第二便宜的，而且自带59G存储空间，正好同时符合内存和磁盘存储的要求。不过我当时没注意到它采用的是arm64架构，即使注意到也肯定不以为意。结果在安装完成后，遇到以下报错，谷歌一下发现可能是CPU架构的问题。然后又部署在一款X86机器上，就没再遇到此类错误。

![部署在arm服务器上报错信息](https://storage.googleapis.com/papyrus_images/8fe4ff23e79fdbf449f2c28364c4bf671aa047ae0fbf49afb5ac3045909fe236.png)

部署在arm服务器上报错信息

.env文件配置受挫
----------

在配置.env文件的时候，犯了一个低级错误，那就是路由版本的格式搞错了。当时前往[镜像发布页面](https://github.com/connext/nxtp/releases)看到最新版本是_v0.2.0-alpha.16_，于是就按照这个版本设置参数：

> 错误尝试：`ROUTER_VERSION=v0.2.0-alpha.16`

结果报错找不到该版本，后来试着把v去掉，运行成功。

> 正确设置：`ROUTER_VERSION=0.2.0-alpha.16`

在这里我顺带介绍下_ROUTER\_EXTERNAL\_PORT_这个参数，由于路由运行在容器内，它在容器内的监听端口是8080。而在宿主机，也就是运行容器的服务器上，会有一个映射端口。该参数，作为可选项，就是配置这个映射端口。本着可选项就不设置的原则，我刚开始并没有填写该参数。结果官方文档里有一步验证路由是否成功设置：

    # assumes ROUTER_EXTERNAL_PORT is 8080, on the container itself it will be 8080
    $ curl localhost:8080/config
    {"signerAddress":"0x627306090abaB3A6e1400e9345bC60c78a8BEf57"}
    

我按照官方文档验证，一直提示端口不通。。后来执行docker ps，查看镜像后发现如果不显示设置映射端口，docker会随机给匹配一个宿主机端口，如下图所示。

![查看镜像映射端口](https://storage.googleapis.com/papyrus_images/8627bd9a010a9fd00693de321ce6678f86b181c928640d2c5e97ab701faaede8.png)

查看镜像映射端口

显然，我这里映射的是宿主机的8000端口，于是执行`curl localhost:8000/config`后，就可查看配置结果。

![验证配置是否成功](https://storage.googleapis.com/papyrus_images/ca4767d7db997c9e846ec857f5c53677e30ad90afc959407c5a61b644ef079c4.png)

验证配置是否成功

懒人版创建config文件
-------------

起初我看到Discord里有人分享自己设置的[config文件](https://gist.github.com/KornSiwat/fc2e117d384a58e02ff836273a309373)，但是后来跟官方的示例代码一对比好像几乎一样，我一度不知道是谁参考了谁。不过问题不大，直接把config.example.json代码复制到config.json中即可。

Web3Signer私钥之谜
--------------

单纯从懒的角度看，官方文档都无需解释Web3Signer是干啥的，因为给出Web3Signer的官方链接还让我以为需要用户自己去阅读官方文档，结果官方文档里正好在醒目的位置提到部署Web3Signer。于是，我就忙不停歇的去部署Web3Signer，最后发现原来`key.yaml`中的privateKey指的就是钱包私钥。最好选一个新钱包，查看私钥后填在此处即可。而我一开始走了弯路，原因在于把privateKey理解成一种需要安装Web3Signer后再以某种方式获取的东东。

运行成功
----

当打印出以下日志的时候，表明你的路由已经设置成功。至此，走着弯路也通向成功，一切探索都是值得的。

![运行成功日志](https://storage.googleapis.com/papyrus_images/80e842cf8479190792e2039e2919d1c44ddf3c847f044ed95c1edff4dbfe8bcc.png)

运行成功日志

最后，我将各位路由贡献者在Discord里分享的链接[整理在一起](https://github.com/0xoldhu/Awsome-Connext-Routers)，放在Github上，供大家学习参考。

---

*Originally published on [oldhu](https://paragraph.com/@oldhu/connext)*
