3X-UI Panel in other Linux

  • Автор темы Автор темы reg1on
  • Дата начала Дата начала
Запуск 3x-ui панели в Devuan. Скрипт по-дефолту проверяет на os-release. Поэтому было решено его портировать в Devuan простыми скриптами...

1. mkdir /etc/x-ui/ (как выяснилось в процессе, здесь лежит x-ui.db со всеми настройками)
2. cd /etc/x-ui/ && wget ... (... - качаем необходимый )
3. Создаем структуру папок:
Код:
root@im:~/x-ui/x-ui# ls -la /etc/x-ui
total 60196
drwxr-xr-x  3 root root     4096 Jul 23 02:08 .
drwxr-xr-x 80 root root     4096 Jul 23 02:07 ..
drwxr-xr-x  2 1001  128     4096 Jul 23 02:08 bin
-rwxr-xr-x  1 1001  128 61569552 Jul  6 22:00 x-ui
-rw-r--r--  1 root root    53248 Jul 23 02:03 x-ui.db
root@im:~/x-ui/x-ui# ls -la /etc/x-ui/bin/
total 147336
drwxr-xr-x 2 1001  128     4096 Jul 23 02:08 .
drwxr-xr-x 3 root root     4096 Jul 23 02:08 ..
-rwxr-xr-x 1 root root     1774 Jul 23 02:03 config.json
-rw-r--r-- 1 1001  128 20502886 Jul  6 01:13 geoip.dat
-rw-r--r-- 1 1001  128 19063244 Jul  6 07:57 geoip_IR.dat
-rw-r--r-- 1 1001  128 21626224 Jul  6 18:42 geoip_RU.dat
-rw-r--r-- 1 1001  128  9487931 Jul  6 01:13 geosite.dat
-rw-r--r-- 1 1001  128  7745578 Jul  6 07:57 geosite_IR.dat
-rw-r--r-- 1 1001  128 42376123 Jul  6 18:42 geosite_RU.dat
-rwxr-xr-x 1 1001  128 30036116 Jan  1  2025 xray-linux-amd64

4. nano /etc/init.d/x-ui (кидаем код + делаем свои настройки)
Bash:
#!/bin/sh
### BEGIN INIT INFO
# Provides:          x-ui
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start x-ui
# Description:       Start x-ui with specified settings
### END INIT INFO

# Параметры
XUI_PATH="/etc/x-ui/x-ui"
USERNAME="admin"
PASSWORD="admin"
PORT="11111"
WEB_BASE_PATH="/3x-ui/"

case "$1" in
    start)
        #echo "Настройка x-ui..."
        $XUI_PATH setting -username "$USERNAME" -password "$PASSWORD" -port "$PORT" -webBasePath "$WEB_BASE_PATH"
        #echo "Запуск x-ui..."
        $XUI_PATH &
        ;;
    stop)
        #echo "Остановка x-ui..."
        pkill -f x-ui
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    status)
        if pgrep -f x-ui > /dev/null; then
            echo "x-ui запущен."
        else
            echo "x-ui не запущен."
        fi
        ;;
    *)
        echo "Использование: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac

exit 0
Bash:
# Параметры
XUI_PATH="/etc/x-ui/"
USERNAME="admin"
PASSWORD="admin"
PORT="11111"
WEB_BASE_PATH="/ss/"

case "$1" in
    start)
        #echo "Настройка x-ui..."
        cd $XUI_PATH
        ./x-ui setting -username "$USERNAME" -password "$PASSWORD" -port "$PORT" -webBasePath "$WEB_BASE_PATH"
        #echo "Запуск x-ui..."
        ./x-ui &
        ;;
    stop)
        #echo "Остановка x-ui..."
        pkill -f x-ui
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    status)
        if pgrep -f x-ui > /dev/null; then
            echo "x-ui запущен."
        else
            echo "x-ui не запущен."
        fi
        ;;
    *)
        echo "Использование: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac

exit 0
5. chmod +x /etc/init.d/x-ui && /etc/init.d/x-ui start
6. update-rc.d x-ui defaults (добавляем в автозагрузку)
 
Прокачанная версия init.d скрипта:
Bash:
#!/bin/bash
### BEGIN INIT INFO
# Provides:          x-ui
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: X-UI Panel Service
# Description:       X-UI Web Panel for managing proxy services
### END INIT INFO

# Параметры
XUI_PATH="/etc/x-ui"
USERNAME="admin"
PASSWORD="admin"
PORT="12221"
WEB_BASE_PATH="/admin12221/"
PIDFILE="/var/run/x-ui.pid"
DAEMON="$XUI_PATH/x-ui"

case "$1" in
    start)
        echo "Настройка x-ui..."
        cd $XUI_PATH
        $DAEMON setting -username "$USERNAME" -password "$PASSWORD" -port "$PORT" -webBasePath "$WEB_BASE_PATH"
        echo "Запуск x-ui..."
        if [ -f $PIDFILE ]; then
            echo "x-ui уже запущен (PID: $(cat $PIDFILE))"
            exit 1
        fi
        $DAEMON &
        echo $! > $PIDFILE
        echo "x-ui запущен с PID: $!"
        ;;
    stop)
        echo "Остановка x-ui..."
        if [ -f $PIDFILE ]; then
            PID=$(cat $PIDFILE)
            kill $PID 2>/dev/null
            rm -f $PIDFILE
            echo "x-ui остановлен"
        else
            echo "x-ui не запущен или PID-файл не найден"
            pkill -f x-ui
        fi
        ;;
    restart)
        $0 stop
        sleep 3
        $0 start
        ;;
    status)
        if [ -f $PIDFILE ]; then
            PID=$(cat $PIDFILE)
            if kill -0 $PID 2>/dev/null; then
                echo "x-ui запущен (PID: $PID)"
                exit 0
            else
                echo "PID-файл существует, но процесс не найден"
                rm -f $PIDFILE
                exit 1
            fi
        else
            if pgrep -f "x-ui" > /dev/null; then
                echo "x-ui запущен (без PID-файла)"
                exit 0
            else
                echo "x-ui не запущен"
                exit 1
            fi
        fi
        ;;
    *)
        echo "Использование: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac

exit 0
 
Назад
Сверху