前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在线分享 Hosts 规则工具:Remote Hosts Server

在线分享 Hosts 规则工具:Remote Hosts Server

作者头像
soulteary
发布2023-03-05 17:33:48
13.1K0
发布2023-03-05 17:33:48
举报

“1024” 做了一个能够让 Switch Hosts 使用起来更舒服一些的小工具,不论是程序工具本身,还是 Docker 容器都只有 5MB 尺寸,支持多种 CPU 架构。

当我们需要在多台设备上同步 Hosts 规则,或者需要和团队小伙伴共享 Hosts 规则的时候,使用这个工具能够极大提升分享时的使用体验。

写在前面

之前在《用于本地开发使用的 DNS 方案[1]》一文中,分享的内容包含了使用带有界面的 “dnsmasq”、使用 “go-dnsmasq”、以及在不方便使用 DNS 模式的时候,使用工具编辑“系统 Hosts” 的方法。

在最近整理仓库的时候,看到了一个使用 Nginx 作为 SwitchHosts 远程配置的项目,虽然方案的运行性能、资源占用都不错,但偶尔想更新配置,需要使用本地编辑器更新,然后使用 Git 推动仓库变动,再触发 CI/CD 部署更新流程,总归比较麻烦。

为了接下来能够偷懒,于是我做了一个简单的工具,支持在线编辑和修改 Hosts 配置,并分享给包括 SwitchHosts 在内的软件使用。

Remote Hosts Server 使用示例

完整代码开源在 GitHub:https://github.com/soulteary/remote-hosts-server。

快速上手

这个程序的使用非常简单,从 GitHub Releases[2] 页面获取适合你运行环境的二进制文件,直接在命令行中执行即可启动服务啦:

代码语言:javascript
复制
./remote-hosts-server

如果你喜欢使用 Docker ,可以使用下面的方式来快速启动容器服务:

代码语言:javascript
复制
docker run --rm -it -v `pwd`/data:/data -p 8080:8080 soulteary/remote-hosts-server

程序默认的服务端口是 8080,如果你希望调整端口号,可以使用 PORT=8090 ./remote-hosts-server 来修改端口号。使用 Docker 方式运行,可以选择使用相同的方式设置环境变量来调整端口号(添加 -e "PORT=8090"),或者直接修改映射端口(-p 8090:8080),至于怎么做,随你喜好来就好。

在服务启动之后,我们打开浏览器,访问 http://localhost:8080,将看到下面的编辑器界面,根据实际需求调整内容之后,点击提交按钮,保存内容即可。

创建或更新 Hosts 数据

在点击按钮提交数据之后,程序将会根据实际情况,提示我们数据已正常保存,或还需要人工介入“进行额外确认”,确保数据变动是符合预期的,避免错误的改动导致其他软件应用 Hosts 规则时出现问题。

在数据变更前,进行变更确认

如果你不希望使用程序的时候,出现这个“额外确认”的界面,可以通过设置 MODE=simple (使用 Docker 时,添加环境变量 -e "MODE=simple"),来关闭这个界面。

当我们完成数据保存、更新完 Hosts 规则之后,可以通过访问 http://${IP}:{PORT}/api/hosts 来获得我们设置的所有 Hosts 规则。以上文默认程序运行地址为例,可以访问:http://localhost:8080/api/hosts 这个地址。

我们将上面的地址添加 Switch Hosts 的远程配置界面中,设置合理的规则更新时间,然后点击“更新数据”按钮简单验证接口是否可用,如果没有问题。接着,点击确认按钮关闭界面就能够正常开始使用啦。

搭配能够定是更新规则的 SwitchHosts 使用

Switch Hosts 将根据设置的数据更新频率,自动的同步和更新我们的 Hosts 规则。

结合 Docker Compose 使用

如果你习惯使用 Compose ,可以参考下面的配置来使用软件:

代码语言:javascript
复制
version: '2'
services:

  remote-hosts-server:
    image: soulteary/remote-hosts-server
    ports:
      - "8080:8080"
    environment:
      # same with ports
      - PORT=8080
      # mode: normal or simple
      - MODE=normal
    volumes:
      - ./data:/data

其他

早些时候,我使用的方案是使用 Nginx 的 AutoIndex 功能,来完成 Hosts 规则的分享。如果你希望使用这种方式来解决需求,可以参考这篇文章快速搭建一个界面相对漂亮的 AutoIndex 页面:《使用 Docker 和 Nginx 实现简单目录索引服务[3]》。

后续,我会抽空更新这个小工具的功能,让它支持简单的 ACL、多种存储后端,比如 S3、NFS 等,如果你有好的想法和建议,也欢迎在项目 Issue 中提出。

最后

节日快乐,希望这个小工具对你有帮助。

--EOF

引用链接

[1] 用于本地开发使用的 DNS 方案: https://soulteary.com/2021/08/19/dns-for-local-development.html [2] GitHub Releases: https://github.com/soulteary/remote-hosts-server/releases [3] 使用 Docker 和 Nginx 实现简单目录索引服务: https://soulteary.com/2018/12/16/implement-a-simple-directory-indexing-service-using-docker-and-nginx.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 折腾技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 快速上手
  • 结合 Docker Compose 使用
  • 其他
  • 最后
    • 引用链接
    相关产品与服务
    容器镜像服务
    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档