Karsa Wang 's Blog

记录一些问题,也许对其他人也有所助益


加密通道搭建独立开发者的开发环境

作为独立开发者或者说小型开发团队,不大可能像大型团队一样在运维方面走比较安全但同时相对复杂的运维流程,但同时又需要一个相对灵活稳定且具有一定安全性的方式,来跟服务器服务进行联通。这时候,加密通道在这个场景下可能是比较好的解决方案。

我自己用的是qtunnel, 它是很多年前的代码了,并且已经很多年不更新,但不影响它至今仍然对我很有吸引力。

具体的使用方式就不赘述了,他的核心价值是在非安全链接上对流量进行加密,readme里面的例子是redis,这也是我一直在使用的模式。不仅仅是redis,任何tcp协议的服务他都可以支持,包括但不限于 mysql 这类数据库服务,nacos 这类服务发现和数据配置服务。事实上,我的开发电脑和服务器之间就是完全通过qtunnel搭建起来的开发环境。

为什么使用qtunnel?我是个比较懒惰的开发者,在发现qtunnel之前,没有常规的流程其实就是进行日志调试,或者实在没得选的时候,冒险开放一下服务的端口调试,使用之后立即关上。这样确实是有风险的,并且不久之后我就尝到了风险的滋味。有一次调试后,因为一些事情,我忘记调整防火墙,然后那是个周末前的工作日,在下个周一到来之前,在我还在外面美美的拍照的时候,收到了数据库锁定的勒索消息。在那之后,我就基本上把所有的敏感服务端口都关掉了,同时开始寻找解决方案。

qtunnel可以解决这个问题,除此之外,他是用go开发的,因为我用go语言,所以go语言开发的开源方案是我的首选。在看到他后,说实话我被他简洁的代码和开发模式吸引了。他的代码结构非常简单,代码量也少,这意味着即使作者不再维护代码,如果我要使用,修改的代价也很小。

在他停止维护的几年后,go推出了mod的管理模式,替代之前使用gopath管理库的方式,我仅仅是初始化了一下mod,修改几处简单的引用就能重新编译,对比ios,前端代码,这简直就是在天堂。