From 200920404619868d239ade70e560c55502c3eb4a Mon Sep 17 00:00:00 2001 From: bin456789 Date: Thu, 10 Sep 2026 01:06:53 +0800 Subject: [PATCH] =?UTF-8?q?core:=20=E4=BF=AE=E5=A4=8D=20frpc=20=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E5=90=AF=E5=8A=A8=EF=BC=8C=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debian.cfg | 15 ++++++++++++--- frpc.service | 17 +++++++++++++---- trans.sh | 41 +++++++++++++++++++++++++++++++++-------- 3 files changed, 58 insertions(+), 15 deletions(-) diff --git a/debian.cfg b/debian.cfg index 0b9812f..de5cffd 100644 --- a/debian.cfg +++ b/debian.cfg @@ -415,10 +415,19 @@ d-i preseed/late_command string true; \ mkdir -p /target/usr/local/bin; \ mkdir -p /target/usr/local/etc/frpc; \ cp /usr/local/bin/frpc /target/usr/local/bin/; \ - cp /usr/local/etc/frpc/frpc.* /target/usr/local/etc/frpc/; \ - chmod a+x /target/usr/local/bin/frpc; \ - chmod 600 /target/usr/local/etc/frpc/frpc.*; \ + cp /usr/local/etc/frpc/frpc.* /target/usr/local/etc/frpc/frpc.toml; \ cp /frpc.service /target/etc/systemd/system/; \ + in-target chmod ug+x /usr/local/bin/frpc; \ + if (. /target/etc/os-release && [ "$ID" = debian ] && [ "$VERSION_ID" -le 10 ]); then \ + sed -i 's/^\[X-Service-Old\]$/[Service]/' /target/etc/systemd/system/frpc.service; \ + in-target useradd --system --no-create-home --home-dir /nonexistent --shell /sbin/nologin frpc; \ + in-target chown root:frpc /usr/local/etc/frpc/frpc.toml; \ + in-target chmod 640 /usr/local/etc/frpc/frpc.toml; \ + else \ + sed -i 's/^\[X-Service-New\]$/[Service]/' /target/etc/systemd/system/frpc.service; \ + in-target chown root:root /usr/local/etc/frpc/frpc.toml; \ + in-target chmod 600 /usr/local/etc/frpc/frpc.toml; \ + fi; \ in-target systemctl enable frpc; \ fi; \ diff --git a/frpc.service b/frpc.service index 40168f5..deeccf2 100644 --- a/frpc.service +++ b/frpc.service @@ -5,13 +5,22 @@ Description=Frp Client Service After=network-online.target Wants=network-online.target -[Service] +[X-Service-Old] Type=simple -User=nobody Restart=on-failure RestartSec=5s -ExecStart=/usr/local/bin/frpc -c /usr/local/etc/frpc/frpc.conf -ExecReload=/usr/local/bin/frpc reload -c /usr/local/etc/frpc/frpc.conf +User=frpc +ExecStart=/usr/local/bin/frpc -c /usr/local/etc/frpc/frpc.toml +ExecReload=/usr/local/bin/frpc reload -c /usr/local/etc/frpc/frpc.toml + +[X-Service-New] +Type=simple +Restart=on-failure +RestartSec=5s +DynamicUser=yes +LoadCredential=frpc.toml:/usr/local/etc/frpc/frpc.toml +ExecStart=/usr/local/bin/frpc -c ${CREDENTIALS_DIRECTORY}/frpc.toml +ExecReload=/usr/local/bin/frpc reload -c ${CREDENTIALS_DIRECTORY}/frpc.toml [Install] WantedBy=multi-user.target diff --git a/trans.sh b/trans.sh index a80d5ae..56e45b3 100644 --- a/trans.sh +++ b/trans.sh @@ -1736,9 +1736,12 @@ install_alpine() { chroot /os apk add frp # chroot rc-update add 默认添加到 sysinit # 但不加 chroot 默认添加到 default - chroot /os rc-update add frpc boot - cp -f /configs/frpc.* /os/etc/frp/ - chmod 600 /os/etc/frp/frpc.* + chroot /os rc-update add frpc default + + # 固定为 toml + # 这样就不用在 /etc/init.d/frpc drop-in 修改 cfgfile + cp -f /configs/frpc.* /os/etc/frp/frpc.toml + chmod 600 /os/etc/frp/frpc.toml fi # setup-disk 会自动选择固件,但不包括微码? @@ -2054,6 +2057,8 @@ EOF cp /configs/frpc.* /os/etc/nixos/ chmod 600 /os/etc/nixos/frpc.* ext=$(basename /configs/frpc.* | awk -F. '{print $NF}') + # 默认已经开了 DynamicUser = true; + # https://github.com/NixOS/nixpkgs/blob/nixos-26.05/nixos/modules/services/networking/frp.nix cat <