使用 Systemd 设置 frp 开机启动

系统环境:Ubuntu 18.04

frp 可以实现内网穿透,通过 Systemd 设置客户端 fprc 和服务端 frps 开机启动。

Systemd 有几篇不错的入门文章:

Systemd 简介

Systemd 配置文件在 /lib/systemd/system/ 目录下,不同类型的文件使用不同的后缀,如: .service .socket .timer

常用命令如下:

systemctl status frps.service       # 查看 frps 服务状态
systemctl cat frps.service          # 查看 frps 服务配置
sudo systemctl start frps.service   # 启动 frps 服务
sudo systemctl stop frps.service    # 停止 frps 服务
sudo systemctl daemon-reload        # 重新加载配置,修改 systemd 配置执行
sudo systemctl enable frps.service  # 设置开机启动,根据 install 建立软链
sudo systemctl disable frps.service # 取消开机启动,根据 install 移除软链

man systemd.directives              # 查看帮助
man systemd.service
man systemd.unit

frps Systemd 配置文件

创建 /lib/systemd/system/frpc.service 文件,配置如下:

[Unit]
Description=frps server daemon
Documentation=https://github.com/fatedier/frp
After=network-online.target

[Service]
ExecStart=/usr/local/bin/frps -c /usr/local/etc/frps.ini
Type=simple
User=nobody
Group=nogroup
WorkingDirectory=/tmp
Restart=on-failure
RestartSec=60s

[Install]
WantedBy=multi-user.target

添加或修改配置后需要执行 sudo systemctl daemon-reload 重新加载配置,执行 sudo systemctl enable frps.service 之后会开机启动。

fprc 配置文件

创建 /lib/systemd/system/frpc.service 文件,配置和 frps 类似:

[Unit]
Description=frpc server daemon
Documentation=https://github.com/fatedier/frp
After=network-online.target

[Service]
ExecStart=/usr/local/bin/frpc -c /usr/local/etc/frpc.ini
Type=simple
User=nobody
Group=nogroup
WorkingDirectory=/tmp
Restart=on-failure
RestartSec=60s

[Install]
WantedBy=multi-user.target

添加或修改配置后需要执行 sudo systemctl daemon-reload 重新加载配置,执行 sudo systemctl enable frpc.service 之后会开机启动。