本文最后更新于 <span id="expire-date"></span> 天前,文中部分描述可能已经过时。
2021.04.20 更新:增加了
docker-compose.yml
相关配置
为了在不同平台突破网络封锁,之前在 VPS上 用 Docker 部署了 subconverter 服务,但使用了一段时间之后,发现官方的提供的 Docker 镜像并不能完全满足我的需求,于是自己制作了一个 subconverter docker 镜像。
官方镜像存在的问题
- 对于 Google analytics 默认拦截且不可通过代理访问
- 对于 Microsoft 服务代理规则默认是直连
- 对于台湾地区的 emoji 显示不正确
动手制作镜像
在 Docker Hub 上找到了一个例子,照着写了一个。
FROM alpine:3.8
LABEL maintainer="Haukeng"
ENV VERSION v0.6.1
WORKDIR /base
RUN apk add wget tzdata && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone && \
wget -P /base https://github.com/tindy2013/subconverter/releases/download/${VERSION}/subconverter_linux64.tar.gz && \
tar xzf subconverter_linux64.tar.gz && \
rm -rf subconverter_linux64.tar.gz && \
sed -i '/TW/s/🇨🇳/🇹🇼/g' /base/subconverter/snippets/emoji.txt && \
apk del wget tzdata
COPY groups.txt /base/subconverter/snippets
EXPOSE 25500
CMD ./subconverter/subconverter
它解决了这些问题
- 在 全球拦截 规则上增加
节点选择
,解决Google Analytics
的访问需求。 - 为 微软服务 规则调整顺序使其默认使用代理。
- 恢复正常的台湾 Emoji (🇹🇼)。
- 修改镜像默认时区为 Asia/Shanghai。
其实就是这两行起到了上面的作用
sed -i '/TW/s/🇨🇳/🇹🇼/g' /base/subconverter/snippets/emoji.txt
COPY groups.txt /base/subconverter/snippets
1 是将 subconverter 中故意用中国国旗替换的 🇹🇼 换回来,用法如下。
# Replace only on lines matching the line pattern:
sed -i '/line_pattern/s/find/replace/g' filename
2 是用自定义的分组规则替换原来的分组规则,可以看这里查看我的规则。
在本地测试之后,我便想着把放 Docker Hub 上。但在配置 Docker Hub 自动构建的时候,发现自动构建开始时读不到 Dockerfile。一开始我以为是我配置有问题,对规则修修改改,最后发现这是 Docker Hub 自身的问题,发布更新之后只要等一会就好了。被自己傻哭😭️~
在配置规则的时候官方有详细的提示,看了之后再配置构建规则一般就不会出现什么问题~
Docker Compose 部署
发现经常有人通过搜索引擎找到这篇文章,所以便决定更新一下让大家可以更方便的部署自己的服务。
wget https://gist.githubusercontent.com/haukeng/fa9555c001c65da2ff09560caa29f459/raw/f7eb97bb2a53ffb9e2cb33a5ad2eeda65b308f20/docker-compose.yml
启动
docker-compose up -d
更新
docker image pull haukeng/subconverter:latest
docker-compose up -d
Nginx 反代例子(非必需)
upstream subconverter {
server 127.0.0.1:25500;
}
server {
listen 80;
server_name sub.example.com; # 将 sub.example.com 修改为你的域名。
return 301 https://sub.example.com$request_uri; # 将 sub.example.com 修改为你的域名。
}
server {
listen 443 ssl;
gzip on;
server_name sub.example.com; # 将 sub.example.com 修改为你的域名。
ssl_certificate /etc/ssl/certs/your_cert; # 将 your_cert 修改为你的 SSL cert
ssl_certificate_key /etc/ssl/private/you_key; # 将 your_key 修改为你的 SSL cert key
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers off;
access_log /var/log/nginx/subconverter_access.log combined;
error_log /var/log/nginx/subconverter_error.log;
location / {
proxy_redirect off;
proxy_connect_timeout 300;
proxy_read_timeout 300;
proxy_pass http://subconverter;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
最后分享一下在 Github 开源的地址和 Docker Hub
制作令自己满意的 subconverter docker 镜像
转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!
评论