在 ubuntu vps 上安装了 FRPS ,并且按照以下方法添加了 FRPS service 。 https://gist.github.com/h1code2/3a749d966ed5ef36e4836d24c3f7d3d8
使用 frps 命令是可以启动程序,但是使用 frps service 无法启动,运行 sudo systemctl start frps ,始终是 deactivated 。
~$ sudo systemctl status frps ○ frps.service - FRP Server Service Loaded: loaded (/etc/systemd/system/frps.service; enabled; vendor preset: enabled) Active: inactive (dead) since Wed 2025-04-09 05:21:21 UTC; 4s ago Process: 11559 ExecStart=/usr/bin/frps -c /usr/local/frps/frps.toml (code=exited, status=0/SUCCESS) Main PID: 11559 (code=exited, status=0/SUCCESS) CPU: 114ms Apr 09 05:21:21 HK frps[11566]: # quic protocol options Apr 09 05:21:21 HK frps[11566]: # transport.quic.keepalivePeriod = 10 Apr 09 05:21:21 HK frps[11566]: # transport.quic.maxIdleTimeout = 30 Apr 09 05:21:21 HK frps[11566]: # transport.quic.maxIncomingStreams = 100000 Apr 09 05:21:21 HK frps[11566]: Apr 09 05:21:21 HK frps[11566]: # Heartbeat configure, it's not recommended to modify the default value Apr 09 05:21:21 HK frps[11566]: [149B blob data] Apr 09 05:21:21 HK frps[11566]: Vim: Finished. Apr 09 05:21:21 HK frps[11566]: [7B blob data] Apr 09 05:21:21 HK systemd[1]: frps.service: Deactivated successfully.
请教一下,有没有人知道如何解决?谢谢。
1 Seahurt 184 天前 via Android 配置文件有可能有问题吧。进程的 exit code 是 0 说明程序正常退出了。 |
2 mk3s 184 天前 开 ssh 我上去看一下 |
3 sn0wdr1am 184 天前 通常都是配置问题,你的配置文件是/usr/local/frps/frps.toml ? |
![]() | 4 yulgang 184 天前 开 ssh 我上去看一下 |
![]() | 5 koala9527 184 天前 配置一下日志,查看一下日志文件 |
![]() | 6 Tiande PRO docker 跑比较方便 |
7 NessajCN 184 天前 把下面两个命令的输出内容贴上来 ls /usr/local/frps cat /usr/local/frps/frps.toml |
![]() | 8 chinni 184 天前 ![]() 直接 shell 下执行 放前台 就知道原因了。如果前台可以,再考虑服务后的 CWD 和 权限呗。 |
9 aru 184 天前 ![]() 直接运行 /usr/bin/frps -c /usr/local/frps/frps.toml 就会知道原因了 一般来说,要么文件路径不对,要么配置文件有问题 |
![]() | 10 skiy 184 天前 该 gist 漏了一点。没有执行 systemctl daemon-reload |
11 aloxaf 184 天前 这日志看着太奇怪了,不仅有 「 blob data 」 还有「 Vim: Finished 」,这是在里面启动了 vim ?究竟怎么写配置才能做到这种效果? 建议把服务、配置都发出来看一下。 |
![]() | 12 snipes OP @aru 运行完这个/usr/bin/frps -c /usr/local/frps/frps.toml ,系统直接用 vi 打开了 frps.toml 配置文件。 |
![]() | 13 snipes OP @NessajCN 第一个命令 ls /usr/local/frps enable enable.20250409-000000 frps frps.toml 第二个命令 cat /usr/local/frps/frps.toml bindAddr = "0.0.0.0" bindPort = 5443 # dp port used for kcp protocol, it can be same with 'bindPort'. # if not set, kcp is disabled in frps. kcpBindPort = 5443 # udp port used for quic protocol. # if not set, quic is disabled in frps. quicBindPort = 8443 # Specify which address proxy will listen for, default value is same with bindAddr # proxyBindAddr = "127.0.0.1" # quic protocol options # transport.quic.keepalivePeriod = 10 # transport.quic.maxIdleTimeout = 30 # transport.quic.maxIncomingStreams = 100000 # Heartbeat configure, it's not recommended to modify the default value # The default value of heartbeatTimeout is 90. Set negative value to disable it. transport.heartbeatTimeout = 90 # Pool count in each proxy will keep no more than maxPoolCount. transport.maxPoolCount = 5 # If tcp stream multiplexing is used, default is true transport.tcpMux = true # Specify keep alive interval for tcp mux. # only valid if tcpMux is true. # transport.tcpMuxKeepaliveInterval = 30 # tcpKeepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. # If negative, keep-alive probes are disabled. # transport.tcpKeepalive = 7200 # transport.tls.force specifies whether to only accept TLS-encrypted connections. By default, the value is false. # transport.tls.force = false # transport.tls.certFile = "server.crt" # transport.tls.keyFile = "server.key" # transport.tls.trustedCaFile = "ca.crt" # If you want to support virtual host, you must set the http port for listening (optional) # Note: http port and https port can be same with bindPort vhostHTTPPort = 8080 vhostHTTPSPort = 8443 # Response header timeout(seconds) for vhost http server, default is 60s # vhostHTTPTimeout = 60 # tcpmuxHTTPConnectPort specifies the port that the server listens for TCP # HTTP CONNECT requests. If the value is 0, the server will not multiplex TCP # requests on one single port. If it's not - it will listen on this value for # HTTP CONNECT requests. By default, this value is 0. # tcpmuxHTTPCOnnectPort= 1337 # If tcpmuxPassthrough is true, frps won't do any update on traffic. # tcpmuxPassthrough = false # Configure the web server to enable the dashboard for frps. # dashboard is available only if webServerport is set. webServer.addr = "0.0.0.0" webServer.port = 6443 webServer.user = "admin" webServer.password = "lokithor4123" # webServer.tls.certFile = "server.crt" # webServer.tls.keyFile = "server.key" # dashboard assets directory(only for debug mode) # webServer.assetsDir = "./static" # Enable golang pprof handlers in dashboard listener. # Dashboard port must be set first # webServer.pprofEnable = false # enablePrometheus will export prometheus metrics on webServer in /metrics api. # enablePrometheus = true # console or real logFile path like ./frps.log log.to = "enable" # trace, debug, info, warn, error log.level = "info" log.maxDays = 3 # disable log colors when log.to is console, default is false # log.disablePrintColor = false # DetailedErrorsToClient defines whether to send the specific error (with debug info) to frpc. By default, this value is true. # detailedErrorsToClient = true # auth.method specifies what authentication method to use authenticate frpc with frps. # If "token" is specified - token will be read into login message. # If "oidc" is specified - OIDC (Open ID Connect) token will be issued using OIDC settings. By default, this value is "token". auth.method = "token" # auth.additionalScopes specifies additional scopes to include authentication information. # Optional values are HeartBeats, NewWorkConns. # auth.additiOnalScopes= ["HeartBeats", "NewWorkConns"] # auth token auth.token = "6vMltzpz9E9ulEgi" # userConnTimeout specifies the maximum time to wait for a work connection. # userCOnnTimeout= 10 # Max ports can be used for each client, default value is 0 means no limit # maxPortsPerClient = 0 # If subDomainHost is not empty, you can set subdomain when type is http or https in frpc's configure file # When subdomain is test, the host used by routing is test.frps.com subDomainHost = "20.198.220.105" # custom 404 page for HTTP requests # custom404Page = "/path/to/404.html" # specify udp packet size, unit is byte. If not set, the default value is 1500. # This parameter should be same between client and server. # It affects the udp and sudp proxy. # udpPacketSize = 1500 # Retention time for NAT hole punching strategy data. # natholeAnalysisDataReserveHours = 168 # ssh tunnel gateway # If you want to enable this feature, the bindPort parameter is required, while others are optional. # By default, this feature is disabled. It will be enabled if bindPort is greater than 0. # sshTunnelGateway.bindPort = 2200 # sshTunnelGateway.privateKeyFile = "/home/frp-user/.ssh/id_rsa" # sshTunnelGateway.autoGenPrivateKeyPath = "" # sshTunnelGateway.authorizedKeysFile = "/home/frp-user/.ssh/authorized_keys" |
![]() | 14 snipes OP |
15 NessajCN 184 天前 @snipes 你这 frps 程序咋装的 /etc/init.d/frps 是正常的可执行文件吗? 建议直接把 frps 执行文件放到 /usr/local/bin/ 里 然后 /usr/local/bin/frps -c /usr/local/frps/frps.toml |
16 hxy100 184 天前 重装 frps ,根据你 14 楼的回复,frps 不是有效的二进制文件,软链接指向更是错误的。 |
18 spencerseth44 183 天前 我之前也碰到过,不过我那次好像是文件权限问题,最后懒的查了,搞个脚本一分钟检查一次进程在不在,不在就 frps -c frps.ini 启一下 |
19 aru 183 天前 @snipes 15 和 16 楼已经说的很清楚了 重新下载 frp 软件包并解压 拷贝 frps 到 /usr/local/frps/ 目录下 删除错误的软链接文件 rm /usr/bin/frps ln -s /usr/local/frps/frps /usr/bin/frps |
21 julyclyde 182 天前 “运行完这个/usr/bin/frps -c /usr/local/frps/frps.toml ,系统直接用 vi 打开了 frps.toml 配置文件。” 可以想象你已经经历过无数错误操作了 别把一切恶果都推给别人家脚本 |