用 systemd 模板单元一份配置跑多个实例:以 frp 为例

一台机器上要同时连三个 frp 服务端,网上大部分教程的做法是复制三份 frpc.service,改三次路径。改一次参数要同步改三个文件,迟早出错。 systemd 自带的**模板单元(template unit)**就是为这种场景准备的:写一份 frpc@.service,后面想开几个实例就开几个。这篇先用 frp 走一遍完整流程,再讲怎么把同一套写法套到 xray、socat、Python 脚本等任何需要多开的程序上。 模板单元是什么 普通单元文件叫 frpc.service,模板单元文件名多一个 @,叫 frpc@.service。 它本身不会运行,只有在你启动 frpc@azure_hk.service 的时候,systemd 才会拿这个模板生成一个真正的实例,并且把 @ 后面的那串字符串(这里是 azure_hk)作为实例名,替换掉单元文件里的 %i。 所以「一份模板 + N 个实例名 = N 个互相独立的服务」,每个实例有独立的进程、独立的日志、独立的启停状态,但共用同一份单元文件。 frp 实战 1. 写模板单元 新建 /etc/systemd/system/frpc@.service: [Unit] Description=Frp Client Service - %i After=network.target syslog.target Wants=network.target [Service] Type=simple Restart=on-failure RestartSec=5s # %i 会被替换为 @ 后面的实例名 ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc-%i.toml [Install] WantedBy=multi-user.target 2. 按命名约定放配置文件 模板能生效的前提是配置文件名和实例名一一对应。这里约定为 /usr/local/frp/frpc-<实例名>.toml: ...

2026年8月18日 · 2 分钟 · Vinkey

Docker 装完之后:免 sudo、配代理,以及每天都在敲的那些命令

apt install docker-ce 跑完并不等于能用了。每次装完新机器我都要重复同样三件事:把当前用户加进 docker 组、给守护进程配代理、然后把服务用 compose 起起来。这篇把这三件事和之后天天要敲的命令一起记下来,下次直接抄。 一、免 sudo 敲 docker 刚装完执行 docker ps 会报 permission denied ... /var/run/docker.sock。因为这个 socket 属于 docker 组,而你的用户不在组里。 # 1. 创建 docker 组(安装时通常已自动创建,执行一下无妨) sudo groupadd docker # 2. 将当前用户加入 docker 组 sudo usermod -aG docker $USER # 3. 激活组更改(或者直接退出并重新登录 SSH) newgrp docker newgrp 只对当前这个 shell 生效,新开的窗口仍然是旧的组信息。想彻底干净,还是退出重连 SSH 最省事。 验证: docker run --rm hello-world ⚠️ 需要知道的一件事:docker 组等价于 root 权限。进了这个组的用户,可以挂载宿主机根目录起一个容器,等于拿到全盘读写。个人服务器无所谓,多人共用的机器就要想清楚再加。 二、给守护进程配代理 在境内拉 docker.io 的镜像经常超时。注意这里要配的是 dockerd 这个守护进程的代理,不是你 shell 里的 http_proxy——因为真正去拉镜像的是后台的 dockerd,它读不到你终端里的环境变量。 ...

2026年8月18日 · 2 分钟 · Vinkey

WSL 里中文全是方块?装语言包和字体就好了

默认装好的 WSL 显示中文全是方块。我的主机系统是英文版 Windows,估计是这个原因——WSL 里既没有中文 locale,也没有能渲染中文的字体。补上这两样就好了。 一、安装中文语言包 sudo apt install language-pack-zh-hans 二、重新配置 locale sudo dpkg-reconfigure locales 在弹出的列表里勾选 en_US.UTF-8 和 zh_CN.UTF-8,下一屏选择 zh_CN.UTF-8 作为默认语言。 列表用空格键勾选、方向键移动、回车确认,不是鼠标点。 三、安装字体管理工具 sudo apt install fontconfig 四、把 Windows 的字体拿过来用 装 Windows 字体的方法有很多,我觉得下面这个直接复制的最省事。WSL 里 /mnt/c 就是 Windows 的 C 盘,所以一条 cp 就够了: sudo cp -r /mnt/c/Windows/Fonts /usr/share/fonts/windows 刷新字体缓存: fc-cache -f -v 五、退出重进 WSL wsl --shutdown 在 PowerShell 里执行,然后重新打开 WSL,中文就正常了。 验证 locale 应该能看到 LANG=zh_CN.UTF-8。 fc-list :lang=zh | head 能列出中文字体就说明字体装好了。

2026年8月18日 · 1 分钟 · Vinkey