目前显示的是分类为 笔记 的文章
主页
thumbnail

前天 Miku 官号投了一首 満開ダイビング,让我知道了有 MIKU LAND 这么个玩意。别问为什么 Happy Coaster 那会不知道,问就是只顾着听歌了没注意

去年年底买的 Virmach 水牛城 VPS,最近我终于想起来还有这么个东西闲置着;于是就有了这篇文章。
本文假定读者已经有一定 Linux 基础知识,会使用 SSH 和 BASH。
趁着这个机会我顺便体验了一下 Termius… 这个界面真不错

只是干净和稳定,速度不好说。

准备工作  

一个 VPS 和一个设置好解析的域名。
密码忘了遂重装系统——为什么都 2021 年了系统镜像还是只到 Debian 9?!
如文件名,代理都通过 Docker 容器搭建。所以下面的步骤都是可选的。

Buster  

目前的最新发行版是 Buster(10)。我以前试过 testing/bullseye 但是 Docker 安装脚本不支持?等正式版出来再更新了。

马上从 Virmach 预装的 Stretch 升级到 Buster:

apt update
sed -i 's/stretch/buster/g' /etc/apt/sources.list
apt update && apt upgrade

Buster Backports  

由于我并没有使用 testing,新的 Linux 内核就得通过 Backports 安装了。
不会真的有人想用 4.9 吧?

echo deb http://deb.debian.org/debian buster-backports main contrib non-free | tee /etc/apt/sources.list.d/buster-backports.list
apt update
apt -t buster-backports upgrade # 更新所有可用的软件包
reboot

这么一来内核版本已经到了 5.10.0。虽然也算不上最新,但考虑到这是 Debian 也就能接受了。

UFW  

我很喜欢的一个防火墙工具,因为简单;
没有其他服务的话,只需要放行 SSH / HTTPS 端口。

apt install ufw
ufw allow ssh
ufw allow https
ufw enable # y 回车确认

搭建  

首先安装 docker… podman / containerd 应该也行,但我没试过。

apt install curl
curl -fsSL https://get.docker.com/ | bash

NaiveProxy  

先创建一个配置文件,使用你的参数替换掉 {{注释}} 的值并去掉 #注释

mkdir /etc/caddy
nano /etc/caddy/Caddyfile # nano 不会用的话我也救不了了
{
  servers {
    protocol {
      experimental_http3 # 如果不需要 HTTP3(QUIC) 的话去掉这一段
    }
  }
}

:443, {{你的域名}}
tls {{你的邮箱}}
route {
  forward_proxy {
    basic_auth {{用户名}} {{密码}} # 如果需要多用户就按照这个格式新增一行
    hide_ip
    hide_via
    probe_resistance
  }
  reverse_proxy {{要反代的网站}} # 最省事的方法,当然也可以自建一个服务
}

然后需要一个包含了 forwardproxy 模块的 caddy,这里我使用自己的镜像。

docker run -d \
--name caddy \
-p 443:443 \
-p 443:443/udp \
-v /etc/caddy/:/etc/caddy/ \
-v /root/.local/share/caddy:/root/.local/share/caddy \
--restart unless-stopped \
kwaabot/caddy

参数:

  • 容器名称 caddy
  • 映射容器的 443 端口到宿主机,包括 UDP
  • 映射容器的 /etc/caddy (配置)和 /root/.local/share/caddy (证书)文件夹到宿主机
  • 重启策略:无论退出状态如何都始终重启容器(除非手动停止)

自动更新 Docker 镜像  

说实话这个用不用无所谓,但我还是用了。

docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart unless-stopped \
containrrr/watchtower \
--cleanup -i 86400

参数:

  • 容器名称 watchtower
  • 映射宿主机的 /var/run/docker.sock (Docker 守护进程)文件夹到容器
  • 重启策略:无论退出状态如何都始终重启容器(除非手动停止)
  • 自动清理过期镜像,每天检查一次更新

性能调优  

主要是 BBR,可以通过简单的方式开启。
然后关闭 tcp_slow_start_after_idle 并设置 tcp_notsent_lowat,这里直接一条搞定

echo -e 'net.ipv4.tcp_congestion_control=bbr\nnet.core.default_qdisc=cake\nnet.ipv4.tcp_slow_start_after_idle=0\nnet.ipv4.tcp_notsent_lowat=16384' >> /etc/sysctl.conf && sysctl -p

打开 naiveproxy,尝试连接(如果是 HTTP3 则将 https:// 改为 quic://):

{
  "listen": "socks://0.0.0.0:本地端口",
  "proxy": "https://用户名:密码@域名"
}

连上互联网了,本文结束。

作者:
链接:https://kwaa.dev/p/docker-proxy/
本文采用 CC BY-NC-SA 4.0 进行许可。
thumbnail

最近一直没什么可以拿来写博客的东西,直到我开始想自制 Beat Saber 谱面;这是本站第一个连载文章。

· 2020-09-28 · p/pleroma/

本来想搭建 Mastodon 的,但它配置要求较高——出于省钱节俭原则,我长期部署的网站基本都是零成本(不包括域名)。甲骨文提供的两台小鸡都是1C1G,怎么办呢?
这时我看到了 Pleroma

去年只有一个 yaml 的文章居然追加了这么多内容?不管怎么样,能多写点东西我是很高兴了。

keyboard_arrow_up