Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

命令行启动xray成功,但systemd 启动xray失败 #23

Closed
Ciacconas opened this issue Nov 29, 2020 · 21 comments
Closed

命令行启动xray成功,但systemd 启动xray失败 #23

Ciacconas opened this issue Nov 29, 2020 · 21 comments
Labels
enhancement New feature or request

Comments

@Ciacconas
Copy link

Ciacconas commented Nov 29, 2020

server端
用命令行启动xray
sudo /usr/local/bin/xray run -config /usr/local/etc/xray/config.json
成功可以得到
2020/11/29 22:51:58 [Info] github.com/xtls/xray-core/v1/main/jsonem: Reading config: /usr/local/etc/xray/config.json

但是用systemd 启动则会失败
sudo systemctl start xray.service
sudo systemctl status xray.service

● xray.service - Xray Service
    Loaded: loaded (/etc/systemd/system/xray.service; disabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/xray.service.d
             └─10-donot_touch_single_conf.conf
     Active: failed (Result: exit-code) since Sun 2020-11-29 22:48:55 UTC; 1min 36s ago
       Docs: https://github.com/xtls
    Process: 1358 ExecStart=/usr/local/bin/xray run -config /usr/local/etc/xray/config.json >
   Main PID: 1358 (code=exited, status=1/FAILURE)

Nov 29 22:48:55 ciacconas-ubuntu systemd[1]: xray.service: Main process exited, code=exited,>
Nov 29 22:48:55 ciacconas-ubuntu systemd[1]: xray.service: Failed with result 'exit-code'.
Nov 29 22:48:55 ciacconas-ubuntu systemd[1]: xray.service: Scheduled restart job, restart co>
Nov 29 22:48:55 ciacconas-ubuntu systemd[1]: Stopped Xray Service.
Nov 29 22:48:55 ciacconas-ubuntu systemd[1]: xray.service: Start request repeated too quickl>
Nov 29 22:48:55 ciacconas-ubuntu systemd[1]: xray.service: Failed with result 'exit-code'.
Nov 29 22:48:55 ciacconas-ubuntu systemd[1]: Failed to start Xray Service.

这是什么问题呀?我的config就是复制的官方的examples

@Ciacconas
Copy link
Author

我搞清楚了,官方的xray.service用的是nobody执行的命令,但是读取crt和key的时候如果这两个文件是属于root的不让nobody看,那xray就没法启动。反之,我之前用命令行启动用的就是root,那读取crt和key就没什么问题。

这样的话,请问官方用nobody执行systemd服务有什么别的好处吗,没有的话是不是可以换成用root执行? @RPRX 大佬

@RPRX
Copy link
Member

RPRX commented Nov 30, 2020

证书/日志 权限问题导致启动失败非常常见,安装脚本是根据 fhs-install-v2ray 修改而来的,之前我在那边的建议是用 root(但没有改),用非 root 用户也不是完全没有好处,减少了潜在的风险。

这里计划加上更多提示。

另外,打算精简日志中的路径(如果可以做到的话)。

@RPRX RPRX added the enhancement New feature or request label Dec 1, 2020
@UJX6N
Copy link

UJX6N commented Dec 1, 2020

用root算了,简单些。证书很多时候多个应用都要访问的,我nginx、caddy、xray用一套证书,然后nginx用root启动,caddy用caddy启动,现在ray又要nobody启动,这不折腾吗。所以我都自己把ray改成root起的。

@heheheaa
Copy link

heheheaa commented Dec 5, 2020

我用的root启动,因为我要用caddy申请的证书,caddy用的caddy启动

@xiaoyaoyuxin
Copy link

我也建议用root.,我的证书是用宝塔申请,自动更新的,用root方便些。

@RPRX
Copy link
Member

RPRX commented Dec 27, 2020

请使用最新的脚本 https://github.com/XTLS/Xray-install

@RPRX RPRX closed this as completed Dec 27, 2020
@RPRX
Copy link
Member

RPRX commented Dec 27, 2020

话说,systemctl status xray 能否同时显示错误信息?这样就不用靠猜了 @kirin10000

@ghost
Copy link

ghost commented Dec 27, 2020

话说,systemctl status xray 能否同时显示错误信息?这样就不用靠猜了 @kirin10000

@RPRX 啊,我好像很早就和你说过能把能否把文件权限的错误信息显示到systemctl status xray,这样大部分证书权限的问题就能知道这是权限问题引起的了。
我觉得只要在xray打开证书文件失败时输出一条相关信息到标准输出流就能在上面显示出来了

@RPRX
Copy link
Member

RPRX commented Dec 27, 2020

@kirin10000 v1.1.5 是 fmt.Println 了错误信息且退出码为 23,你看看有没有问题

@xiaoyaoyuxin
Copy link

很奇怪,已经用了新版的脚本,bash <(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh) install -u root
依然会有命令行成功,systemd失败的情形。
改了证书上级目录的600权限为755,才能够启动。

@ghost
Copy link

ghost commented Dec 28, 2020

很奇怪,已经用了新版的脚本,bash <(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh) install -u root
依然会有命令行成功,systemd失败的情形。
改了证书上级目录的600权限为755,才能够启动。

你看看证书及证书目录的所有者,如果所有者是nobody,root用户无法读取是正常的 @xiaoyaoyuxin

@ghost
Copy link

ghost commented Dec 28, 2020

@kirin10000 v1.1.5 是 fmt.Println 了错误信息且退出码为 23,你看看有没有问题

@RPRX 试了,能在systemctl status xray 中看到证书权限错误的日志,但是输出日志太长了,要按→才能看得见。可以试试输出两行

@xiaoyaoyuxin
Copy link

很奇怪,已经用了新版的脚本,bash <(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh) install -u root
依然会有命令行成功,systemd失败的情形。
改了证书上级目录的600权限为755,才能够启动。

你看看证书及证书目录的所有者,如果所有者是nobody,root用户无法读取是正常的 @xiaoyaoyuxin

证书的所有者是root。
我用的宝塔面板管理网站、域名和证书,其中证书的位置是/www/server/panel/vhost/cert/域名/,从panel开始下级目录的权限都是600,所有者为root,能用root命令行启动,但无法用systemd启动,root模式下的systemd也不行。把权限改为755之后,systemd才行。很奇怪,感觉应该是我自己哪个地方没配好,但确实找不到原因。

@ghost
Copy link

ghost commented Dec 28, 2020

证书的所有者是root。
我用的宝塔面板管理网站、域名和证书,其中证书的位置是/www/server/panel/vhost/cert/域名/,从panel开始下级目录的权限都是600,所有者为root,能用root命令行启动,但无法用systemd启动,root模式下的systemd也不行。把权限改为755之后,systemd才行。很奇怪,感觉应该是我自己哪个地方没配好,但确实找不到原因。

@xiaoyaoyuxin 你看看这个 XTLS/Xray-install#12 有没有类似情况?

@GleenJi
Copy link

GleenJi commented Dec 28, 2020

这是我的,我一直这么用,没啥问题
[Unit]
Description=Xray Service
Documentation=https://github.com/xtls
After=network.target nss-lookup.target

[Service]
User=root
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/overgfw/xray/bin/xray run -config /overgfw/xray/etc/config.json
Restart=on-failure
RestartPreventExitStatus=23

Self-Added Environment

Environment=XRAY_LOCATION_ASSET=/overgfw/xray/geo/

[Install]
WantedBy=multi-user.target

@xiaoyaoyuxin
Copy link

证书的所有者是root。
我用的宝塔面板管理网站、域名和证书,其中证书的位置是/www/server/panel/vhost/cert/域名/,从panel开始下级目录的权限都是600,所有者为root,能用root命令行启动,但无法用systemd启动,root模式下的systemd也不行。把权限改为755之后,systemd才行。很奇怪,感觉应该是我自己哪个地方没配好,但确实找不到原因。

@xiaoyaoyuxin 你看看这个 XTLS/Xray-install#12 有没有类似情况?

证书的某上级目录改回600权限,systemctl restart xray,查看状态,23报错。

注释掉这一行,systemctl daemon-reload,systemctl start xray,查看状态,成功启动。

感谢指引!

@paningking
Copy link

我是新建了一个用户,给sudo权限,所有都是在这个用户下启动,证书754权限,然后把xray.service的启动用户也改成这个用户,除了nginx的master process是root外,worker process也是这个用户。如果不修改xray.service的话,就需要给证书777权限,这样也是可以成功的。

@wjsandy
Copy link

wjsandy commented Mar 19, 2022

● XrayR.service - XrayR Service
Loaded: loaded (/etc/systemd/system/XrayR.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Sat 2022-03-19 19:01:06 CST; 1s ago
Process: 11534 ExecStart=/usr/local/XrayR/XrayR -config /etc/XrayR/config.yml (code=exited, status=2)
Main PID: 11534 (code=exited, status=2)

Mar 19 19:01:06 ip-172-31-45-155 systemd[1]: XrayR.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Mar 19 19:01:06 ip-172-31-45-155 systemd[1]: XrayR.service: Failed with result 'exit-code'.

@qthang
Copy link

qthang commented Apr 18, 2022

● XrayR.service - XrayR Service Loaded: loaded (/etc/systemd/system/XrayR.service; enabled; vendor preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Sat 2022-03-19 19:01:06 CST; 1s ago Process: 11534 ExecStart=/usr/local/XrayR/XrayR -config /etc/XrayR/config.yml (code=exited, status=2) Main PID: 11534 (code=exited, status=2)

Mar 19 19:01:06 ip-172-31-45-155 systemd[1]: XrayR.service: Main process exited, code=exited, status=2/INVALIDARGUMENT Mar 19 19:01:06 ip-172-31-45-155 systemd[1]: XrayR.service: Failed with result 'exit-code'.

i have same error. Can you help me

@fredfany
Copy link

果然有效,非常感谢!

@gitHubDujianfeng
Copy link

请输入选择 [0-13]: 7
● XrayR.service - XrayR Service
Loaded: loaded (/etc/systemd/system/XrayR.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2024-06-26 09:47:57 CST; 14min ago
Main PID: 805 (XrayR)
CGroup: /system.slice/XrayR.service
└─805 /usr/local/XrayR/XrayR --config /etc/XrayR/config.yml
【版本用的是v0.9.1】

我也遇到了这个问题、有人知道怎么解决吗 、用什么命令

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests