Build EchoIP service with Docker

Sometimes I need to check my public IP address and information about it. So I Google "my ip" and click some websites, most of them are full of Ads and the connetction speed is not satisfied. After searching, I find it does have some nice websites like ifconfig.co, ifconfig.me. But for further, how about build one by myself?

I find the source code of ifconfig.co is available on GitHub. So I decide to build a Docker image with it. You can access https://ip.zatp.com to see the demo.

You also can use the Docker Image I build for test:

docker pull hurt/echoip
docker run -d --rm --name echoip -p8080:8080 hurt/echoip

GeoIP database version: 20210511

Now I will show you how to build the image by yourself. It's also available on GitHub.

Read More >

单线复用解决一根网线同时IPTV和宽带问题

这套方案是两年前用的,当时办宽带的时候不在家,电信的工作人员上门直接把网线分成两根4pin的,用是可以用,但最高只能跑100M,我直呼好家伙,更重要的是装的光猫只有一个千兆口,其余的都是百兆口。如果要同时满足千兆宽带和IPTV的需求,想到的最简单的做法就是找两个交换机配置VLAN解决,于是买了两个入门款的交换机水星SG105 PRO,当然,后来发现有些路由器支持IPTV功能,其实用一个就够了,这里不做讨论。这套方案一直运行很稳定,只是前几天的突然停电导致交换机的配置丢失,不得不重新配置,因此在这里记录一下。

一个简单的网络拓扑图如下:

可以从图中看到,弱电箱中从光猫的LAN1(千兆口)、LAN2(IPTV)直接接到交换机1的LAN1和LAN2,然后LAN5连接预埋的网线,直接到客厅,然后分发出来,LAN1连接路由器,LAN2连接电信的机顶盒,实现了整个家庭网络环境除了IPTV外都是千兆,而且扩展性更佳。

Read More >

不完全吃灰的树莓派

果然上次入手的树莓派还是逃不过吃灰的命运,本来想买个温湿度传感器做个室内环境监控的,但一直都难得动手,而且貌似小米空气净化器已经带有这些功能了...也考虑过直接刷个openwrt做旁路由,但感觉太浪费了,后来试过直接搭建透明代理,CPU不支持AES,速度达不到理想值,故弃之(真香打脸QAQ)

之所以说不完全吃灰,是因为确实是运行着一些简单的服务,虽然远没有达到对树莓派的预期使用。

Read More >

开发一个自己的Telegram Bot

虽然每天都在用Telegram Bot,但一直没深入了解过,最近折腾了一下,发现TG机器人能实现的功能太多了,非常实用,API也很完善,然而还是遇到了不少问题,特别是用Nginx配合Webhook的时候,搞了一晚上都没成功。因此简单的记录一下,排一下坑。

准备工作

这里跳过Bot的申请过程。网上有多种语言的集成API,PHP、Node.js、Rust、Python等等,虽然没学过Python,但看了看文档相对简单,因此就决定是它了。API则选择了pyTelegramBotAPI,pyTelegramBotAPI推荐使用Python3.6-3.9版本,我使用的是Python3.7.3

安装Virtual Environment

apt install python3-pip
pip3 install virtualenv

创建一个工程目录:

mkdir /home/tg_bot
cd /home/tg_bot
virtualenv first_tg_bot

激活virtualenv:

source first_tg_bot/bin/activate

接下来的依赖就会安装到虚拟环境中,要退出环境的话使用deactivate命令。

Read More >

使用Nginx实现TCP四层反向代理

众所周知,海外高性能服务器加不错的线路等于贵得离谱,然而不看网络的话,价格就便宜不少,再选择一台低配的线路不错的VPS作为前端进行代理的就划算很多。做站的话一般通过nginx进行http或者tcp代理,以前一直都在使用http反向代理,好处是配置简单效果也不差,但如果进行https代理,前端也需要配置ssl证书,从安全的角度来说显然是不合理的。因此折腾了下通过Nginx Stream模块进行tcp代理,因为只是传输层协议,便可以不用配置ssl证书。

然而无论那种方式,对于做站来说,都有获取到真实ip的需求。如果是http代理的话,可以通过编译ngx_http_realip_module模块并设置proxy_set_header实现,这里不再讨论。这篇文章着重说下tcp代理的实现方法和过程。

要使用stream模块,编译Nginx的时候需要加上--with-stream参数,然后再nginx.conf中配置,一个简单的代理模型如下:

stream{
    ...
    upstream backend{
        server your.domain.com:443
    }

    server{
        listen 443 ssl;
        proxy_pass backend;
        ...
    }
}

Read More >

使用acme.sh自动签发和更新证书

手里吃灰的域名越来越多,偶尔还是会拿来测试测试,每次手动配置证书就很麻烦,刚好最近Let's Encrypt Authority也由X3更新为了R3版本,使用了新的OCSP地址,解决了污染问题。(此处想说点什么,但还是算了QAQ)因此又用回acme.sh自动签发更新证书,官方有很详细的使用文档,这里只做简单记录。

Read More >