Explorar el Código

Added EnvironmentFile to systemd unit (#3606)

* Added EnvironmentFile to systemd unit

* Added support for older releases

* Remove ARGS

* Fixed copy unit

* Fixed unit filename

* Update update.sh
Mikhail Grigorev hace 4 días
padre
commit
3287fa4d80
Se han modificado 5 ficheros con 50 adiciones y 5 borrados
  1. 4 2
      .github/workflows/release.yml
  2. 12 1
      install.sh
  3. 17 2
      update.sh
  4. 1 0
      x-ui.service.debian
  5. 16 0
      x-ui.service.rhel

+ 4 - 2
.github/workflows/release.yml

@@ -17,7 +17,8 @@ on:
       - '**.go'
       - 'go.mod'
       - 'go.sum'
-      - 'x-ui.service'
+      - 'x-ui.service.debian'
+      - 'x-ui.service.rhel'
 
 jobs:
   build:
@@ -78,7 +79,8 @@ jobs:
           
           mkdir x-ui
           cp xui-release x-ui/
-          cp x-ui.service x-ui/
+          cp x-ui.service.debian x-ui/
+          cp x-ui.service.rhel x-ui/
           cp x-ui.sh x-ui/
           mv x-ui/xui-release x-ui/x-ui
           mkdir x-ui/bin

+ 12 - 1
install.sh

@@ -668,7 +668,18 @@ install_x-ui() {
         rc-update add x-ui
         rc-service x-ui start
     else
-        cp -f x-ui.service /etc/systemd/system/
+        if [ -f "x-ui.service" ]; then
+            cp -f x-ui.service /etc/systemd/system/
+        else
+            case "${release}" in
+                ubuntu | debian | armbian)
+                    cp -f x-ui.service.debian /etc/systemd/system/x-ui.service
+                ;;
+                *)
+                    cp -f x-ui.service.rhel /etc/systemd/system/x-ui.service
+                ;;
+            esac
+        fi
         systemctl daemon-reload
         systemctl enable x-ui
         systemctl start x-ui

+ 17 - 2
update.sh

@@ -615,6 +615,8 @@ update_x-ui() {
         echo -e "${green}Removing old x-ui version...${plain}"
         rm /usr/bin/x-ui -f >/dev/null 2>&1
         rm /usr/local/x-ui/x-ui.service -f >/dev/null 2>&1
+        rm /usr/local/x-ui/x-ui.service.debian -f >/dev/null 2>&1
+        rm /usr/local/x-ui/x-ui.service.rhel -f >/dev/null 2>&1
         rm /usr/local/x-ui/x-ui -f >/dev/null 2>&1
         rm /usr/local/x-ui/x-ui.sh -f >/dev/null 2>&1
         echo -e "${green}Removing old xray version...${plain}"
@@ -677,8 +679,21 @@ update_x-ui() {
         rc-update add x-ui >/dev/null 2>&1
         rc-service x-ui start >/dev/null 2>&1
     else
-        echo -e "${green}Installing systemd unit...${plain}"
-        cp -f x-ui.service /etc/systemd/system/ >/dev/null 2>&1
+        if [ -f "x-ui.service" ]; then
+            echo -e "${green}Installing systemd unit...${plain}"
+            cp -f x-ui.service /etc/systemd/system/ >/dev/null 2>&1
+        else
+            case "${release}" in
+                ubuntu | debian | armbian)
+                    echo -e "${green}Installing debian-like systemd unit...${plain}"
+                    cp -f x-ui.service.debian /etc/systemd/system/x-ui.service >/dev/null 2>&1
+                ;;
+                *)
+                    echo -e "${green}Installing rhel-like systemd unit...${plain}"
+                    cp -f x-ui.service.rhel /etc/systemd/system/x-ui.service >/dev/null 2>&1
+                ;;
+            esac
+        fi
         chown root:root /etc/systemd/system/x-ui.service >/dev/null 2>&1
         systemctl daemon-reload >/dev/null 2>&1
         systemctl enable x-ui >/dev/null 2>&1

+ 1 - 0
x-ui.service → x-ui.service.debian

@@ -4,6 +4,7 @@ After=network.target
 Wants=network.target
 
 [Service]
+EnvironmentFile=-/etc/default/x-ui
 Environment="XRAY_VMESS_AEAD_FORCED=false"
 Type=simple
 WorkingDirectory=/usr/local/x-ui/

+ 16 - 0
x-ui.service.rhel

@@ -0,0 +1,16 @@
+[Unit]
+Description=x-ui Service
+After=network.target
+Wants=network.target
+
+[Service]
+EnvironmentFile=-/etc/sysconfig/x-ui
+Environment="XRAY_VMESS_AEAD_FORCED=false"
+Type=simple
+WorkingDirectory=/usr/local/x-ui/
+ExecStart=/usr/local/x-ui/x-ui
+Restart=on-failure
+RestartSec=5s
+
+[Install]
+WantedBy=multi-user.target