Spaces:
Paused
Paused
Commit ·
1e1c8d3
1
Parent(s): 629dbc0
Create Helpme.md
Browse files
Helpme.md
ADDED
|
@@ -0,0 +1,293 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Полная инструкция по развертыванию x-ui с использованием Hugging Face, VDS1, Nginx и Chisel
|
| 2 |
+
Эта инструкция описывает полный процесс развертывания x-ui панели, доступной через Hugging Face Space, с использованием VDS1 в качестве прокси и Chisel для туннелирования трафика.
|
| 3 |
+
|
| 4 |
+
1. Настройка VDS1 (vds1.iri1968.dpdns.org)
|
| 5 |
+
1.1. Установка Nginx
|
| 6 |
+
sudo apt update
|
| 7 |
+
sudo apt install nginx -y
|
| 8 |
+
sudo systemctl enable nginx
|
| 9 |
+
sudo systemctl start nginx
|
| 10 |
+
1.2. Настройка Nginx для проксирования
|
| 11 |
+
Создайте файл /etc/nginx/sites-available/x-ui.conf со следующим содержимым:
|
| 12 |
+
|
| 13 |
+
server {
|
| 14 |
+
listen 80;
|
| 15 |
+
server_name vds1.iri1968.dpdns.org; # Замените на ваш домен
|
| 16 |
+
|
| 17 |
+
# Перенаправление HTTP на HTTPS
|
| 18 |
+
return 301 https://$host$request_uri;
|
| 19 |
+
|
| 20 |
+
# Certbot challenge
|
| 21 |
+
location /.well-known/acme-challenge/ {
|
| 22 |
+
root /var/www/certbot;
|
| 23 |
+
}
|
| 24 |
+
}
|
| 25 |
+
|
| 26 |
+
server {
|
| 27 |
+
listen 443 ssl;
|
| 28 |
+
server_name vds1.iri1968.dpdns.org; # Замените на ваш домен
|
| 29 |
+
|
| 30 |
+
ssl_certificate /etc/letsencrypt/live/vds1.iri1968.dpdns.org/fullchain.pem; # Укажите правильный путь
|
| 31 |
+
ssl_certificate_key /etc/letsencrypt/live/vds1.iri1968.dpdns.org/privkey.pem; # Укажите правильный путь
|
| 32 |
+
|
| 33 |
+
# Certbot challenge
|
| 34 |
+
location /.well-known/acme-challenge/ {
|
| 35 |
+
root /var/www/certbot;
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
# Расположение по умолчанию - Nginx только для Certbot.
|
| 39 |
+
# Здесь не должно быть проксирования к Chisel.
|
| 40 |
+
location / {
|
| 41 |
+
try_files $uri $uri/ =404;
|
| 42 |
+
}
|
| 43 |
+
}
|
| 44 |
+
Затем включите сайт и перезапустите Nginx:
|
| 45 |
+
|
| 46 |
+
sudo ln -s /etc/nginx/sites-available/x-ui.conf /etc/nginx/sites-enabled/
|
| 47 |
+
sudo nginx -t
|
| 48 |
+
sudo systemctl restart nginx
|
| 49 |
+
1.3. Установка Certbot и получение SSL-сертификатов (Let's Encrypt)
|
| 50 |
+
sudo apt install certbot python3-certbot-nginx -y
|
| 51 |
+
sudo certbot --nginx -d vds1.iri1968.dpdns.org # Замените на ваш домен и следуйте инструкциям
|
| 52 |
+
1.4. Настройка Chisel Server
|
| 53 |
+
# Установите chisel на VDS1 (если еще не установлен)
|
| 54 |
+
# Загрузите последнюю версию chisel с https://github.com/jpillora/chisel/releases
|
| 55 |
+
# Пример для v1.10.1:
|
| 56 |
+
CHISEL_VERSION=1.10.1
|
| 57 |
+
wget https://github.com/jpillora/chisel/releases/download/v${CHISEL_VERSION}/chisel_${CHISEL_VERSION}_linux_amd64.gz -O /tmp/chisel.gz
|
| 58 |
+
gunzip /tmp/chisel.gz
|
| 59 |
+
mv /tmp/chisel /usr/local/bin/chisel
|
| 60 |
+
chmod +x /usr/local/bin/chisel
|
| 61 |
+
|
| 62 |
+
# Запустите Chisel сервер в фоновом режиме
|
| 63 |
+
# Он должен слушать на порту 80. Nginx будет проксировать к нему.
|
| 64 |
+
# Флаг --reverse важен для обратных туннелей.
|
| 65 |
+
# Для mTLS серверу необходимо верифицировать сертификат клиента.
|
| 66 |
+
# Предполагается, что client.crt, client.key, ca.crt присутствуют на VDS1.
|
| 67 |
+
nohup /usr/local/bin/chisel server --port 443 --reverse --tls-cert /etc/letsencrypt/live/vds1.iri1968.dpdns.org/fullchain.pem --tls-key /etc/letsencrypt/live/vds1.iri1968.dpdns.org/privkey.pem --tls-ca /home/igor04091968/ca.crt > /dev/null 2>&1 &
|
| 68 |
+
# Примечание: --tls-ca используется для проверки сертификата клиента. Предполагается, что /home/igor04091968/ca.crt является корневым CA, подписавшим client.crt.
|
| 69 |
+
2. Настройка Hugging Face Space
|
| 70 |
+
2.1. Подготовка Dockerfile
|
| 71 |
+
Создайте файл Dockerfile в директории huggingface-x-ui-final/ со следующим содержимым:
|
| 72 |
+
|
| 73 |
+
FROM debian:bullseye-slim
|
| 74 |
+
|
| 75 |
+
# Install necessary packages and clean up
|
| 76 |
+
RUN apt-get update && apt-get install -y \
|
| 77 |
+
dos2unix \
|
| 78 |
+
wget \
|
| 79 |
+
curl \
|
| 80 |
+
tar \
|
| 81 |
+
bash \
|
| 82 |
+
ca-certificates \
|
| 83 |
+
--no-install-recommends && \
|
| 84 |
+
rm -rf /var/lib/apt/lists/*
|
| 85 |
+
|
| 86 |
+
SHELL ["/bin/bash", "-c"]
|
| 87 |
+
|
| 88 |
+
# Install chisel
|
| 89 |
+
ARG CHISEL_VERSION=1.10.1
|
| 90 |
+
RUN wget https://github.com/jpillora/chisel/releases/download/v${CHISEL_VERSION}/chisel_${CHISEL_VERSION}_linux_amd64.gz -O /tmp/chisel.gz && \
|
| 91 |
+
gunzip /tmp/chisel.gz && \
|
| 92 |
+
mv /tmp/chisel /usr/local/bin/chisel && \
|
| 93 |
+
chmod +x /usr/local/bin/chisel
|
| 94 |
+
|
| 95 |
+
# Download and extract 3x-ui
|
| 96 |
+
RUN ARCH=$(uname -m) && \
|
| 97 |
+
if [ "$ARCH" = "x86_64" ]; then ARCH="amd64"; fi && \
|
| 98 |
+
if [ "$ARCH" = "aarch64" ]; then ARCH="arm64"; fi && \
|
| 99 |
+
wget -O /usr/local/x-ui-linux-${ARCH}.tar.gz \
|
| 100 |
+
"https://github.com/MHSanaei/3x-ui/releases/latest/download/x-ui-linux-${ARCH}.tar.gz" && \
|
| 101 |
+
mkdir -p /usr/local/x-ui/ && \
|
| 102 |
+
tar -zxvf /usr/local/x-ui-linux-*.tar.gz -C /usr/local/x-ui/ --strip-components=1 && \
|
| 103 |
+
rm /usr/local/x-ui-linux-*.tar.gz && \
|
| 104 |
+
chmod +x /usr/local/x-ui/x-ui && \
|
| 105 |
+
cp /usr/local/x-ui/x-ui.sh /usr/bin/x-ui
|
| 106 |
+
|
| 107 |
+
# Create directory for chisel certs and copy them
|
| 108 |
+
RUN mkdir -p /etc/chisel
|
| 109 |
+
COPY client.crt /etc/chisel/client.crt
|
| 110 |
+
COPY client.key /etc/chisel/client.key
|
| 111 |
+
COPY ca.crt /etc/chisel/ca.crt
|
| 112 |
+
|
| 113 |
+
# Copy the startup script
|
| 114 |
+
COPY start.sh /usr/local/bin/start.sh
|
| 115 |
+
|
| 116 |
+
# Make the script executable
|
| 117 |
+
RUN chmod +x /usr/local/bin/start.sh
|
| 118 |
+
|
| 119 |
+
# Expose the x-ui port
|
| 120 |
+
EXPOSE 2023
|
| 121 |
+
|
| 122 |
+
# Set the entrypoint to our startup script
|
| 123 |
+
RUN chmod -R 777 /usr/local/x-ui/
|
| 124 |
+
ENTRYPOINT ["/bin/bash", "-c", "/usr/local/bin/start.sh"]
|
| 125 |
+
2.2. Подготовка start.sh скрипта
|
| 126 |
+
Создайте файл start.sh в директории huggingface-x-ui-final/ со следующим содержимым:
|
| 127 |
+
|
| 128 |
+
#!/bin/bash
|
| 129 |
+
|
| 130 |
+
# Set a writable directory for the x-ui database
|
| 131 |
+
export XUI_DB_FOLDER=/tmp
|
| 132 |
+
|
| 133 |
+
# Function to run chisel client in a loop
|
| 134 |
+
run_chisel() {
|
| 135 |
+
while true; do
|
| 136 |
+
echo "Starting chisel client with mTLS..."
|
| 137 |
+
/usr/local/bin/chisel client -v --auth "cloud:2025" --tls-cert /etc/chisel/client.crt --tls-key /etc/chisel/client.key --tls-ca /etc/chisel/ca.crt https://vds1.iri1968.dpdns.org:443 R:2023:127.0.0.1:2023
|
| 138 |
+
echo "Chisel client exited. Restarting in 5 seconds..."
|
| 139 |
+
sleep 5
|
| 140 |
+
ne
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
# Start chisel in the background
|
| 144 |
+
run_chisel &
|
| 145 |
+
|
| 146 |
+
# Wait a moment for the background process to start
|
| 147 |
+
sleep 2
|
| 148 |
+
|
| 149 |
+
# Set x-ui port
|
| 150 |
+
/usr/local/x-ui/x-ui setting -port 2023
|
| 151 |
+
|
| 152 |
+
# Set webBasePath
|
| 153 |
+
/usr/local/x-ui/x-ui setting -webBasePath /
|
| 154 |
+
|
| 155 |
+
# Reset x-ui admin credentials
|
| 156 |
+
/usr/local/x-ui/x-ui setting -username prog10 -password 04091968
|
| 157 |
+
|
| 158 |
+
# Start x-ui in the foreground
|
| 159 |
+
echo "Starting x-ui panel..."
|
| 160 |
+
cd /usr/local/x-ui
|
| 161 |
+
./x-ui
|
| 162 |
+
2.3. Развертывание на Hugging Face
|
| 163 |
+
Создайте новый Hugging Face Space:
|
| 164 |
+
|
| 165 |
+
Перейдите на Hugging Face Spaces.
|
| 166 |
+
Нажмите "Create new Space".
|
| 167 |
+
Выберите "Docker" в качестве SDK.
|
| 168 |
+
Укажите имя Space, например, your-username/x-ui-tunnel.
|
| 169 |
+
Выберите аппаратное обеспечение (например, CPU Basic).
|
| 170 |
+
Нажмите "Create Space".
|
| 171 |
+
Загрузите файлы в ваш Space:
|
| 172 |
+
|
| 173 |
+
Клонируйте ваш новый Space локально:
|
| 174 |
+
git clone https://huggingface.co/spaces/your-username/x-ui-tunnel cd x-ui-tunnel
|
| 175 |
+
|
| 176 |
+
* Скопируйте `Dockerfile`, `start.sh`, `client.crt`, `client.key`, `ca.crt` из вашей локальной директории `cloud-google-marzban-settings-repo/huggingface-x-ui-final/` в клонированную директорию Space.
|
| 177 |
+
* Создайте файл `README.md` в корневой директории Space со следующим содержимым:
|
| 178 |
+
```markdown
|
| 179 |
+
---
|
| 180 |
+
license: mit
|
| 181 |
+
title: x-ui-tunnel
|
| 182 |
+
sdk: docker
|
| 183 |
+
emoji: 🚀
|
| 184 |
+
colorFrom: gray
|
| 185 |
+
colorTo: indigo
|
| 186 |
+
pinned: true
|
| 187 |
+
app_port: 2023 # This is the port that x-ui is listening on inside the Docker container
|
| 188 |
+
persistent_storage: true
|
| 189 |
+
---
|
| 190 |
+
# x-ui Tunnel
|
| 191 |
+
|
| 192 |
+
This Hugging Face Space runs an x-ui panel accessible via a Chisel reverse tunnel.
|
| 193 |
+
**Примечание:** `app_port` в `README.md` должен соответствовать удаленному порту обратного туннеля, который равен `8000` в нашем `start.sh` (`R:8000:127.0.0.1:2023`). Это порт, который будет открыт Hugging Face.
|
| 194 |
+
Отправьте изменения в Hugging Face:
|
| 195 |
+
git add . git commit -m "Initial x-ui tunnel setup" git push
|
| 196 |
+
|
| 197 |
+
Hugging Face автоматически начнет сборку Docker образа и развертывание вашего Space. Вы можете отслеживать прогресс на странице вашего Space.
|
| 198 |
+
|
| 199 |
+
## 3. Дополнительные настройки и устранение неполадок
|
| 200 |
+
|
| 201 |
+
### 3.1. Настройка DNS
|
| 202 |
+
|
| 203 |
+
Убедитесь, что DNS запись для вашего домена (например, `vds1.iri1968.dpdns.org`) указывает на IP-адрес вашего VDS1.
|
| 204 |
+
|
| 205 |
+
### 3.2. Проверка и отладка
|
| 206 |
+
|
| 207 |
+
* **Проверка Nginx:**
|
| 208 |
+
```bash
|
| 209 |
+
sudo nginx -t
|
| 210 |
+
sudo systemctl status nginx
|
| 211 |
+
Проверка Chisel Server на VDS1:
|
| 212 |
+
ps aux | grep chisel sudo ss -tulnp | grep 80 # Проверьте, слушает ли chisel на порту 80
|
| 213 |
+
|
| 214 |
+
* **Проверка Hugging Face Space logs:**
|
| 215 |
+
На странице вашего Hugging Face Space перейдите во вкладку "Logs" для просмотра логов Docker контейнера. Это поможет отладить проблемы с запуском `chisel client` или `x-ui`.
|
| 216 |
+
* **Проверка доступности x-ui:**
|
| 217 |
+
Попробуйте получить доступ к вашей x-ui панели через домен `https://vds1.iri1968.dpdns.org`.
|
| 218 |
+
|
| 219 |
+
## 4. Настройка Git для Hugging Face
|
| 220 |
+
|
| 221 |
+
Для эффективной работы с репозиториями Hugging Face (Spaces, Models) необходимо правильно настроить Git, особенно для работы с большими файлами через Git LFS.
|
| 222 |
+
|
| 223 |
+
### 4.1. Установка и настройка Git LFS
|
| 224 |
+
|
| 225 |
+
Git Large File Storage (LFS) — это расширение Git, которое позволяет версионировать большие файлы, такие как наборы данных, модели и видео, не сохраняя их непосредственно в репозитории Git.
|
| 226 |
+
|
| 227 |
+
1. **Установите Git LFS:**
|
| 228 |
+
* **Debian/Ubuntu:**
|
| 229 |
+
```bash
|
| 230 |
+
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
|
| 231 |
+
sudo apt-get install git-lfs
|
| 232 |
+
```
|
| 233 |
+
* **macOS (с Homebrew):**
|
| 234 |
+
```bash
|
| 235 |
+
brew install git-lfs
|
| 236 |
+
```
|
| 237 |
+
* **Windows (с Chocolatey):**
|
| 238 |
+
```bash
|
| 239 |
+
choco install git-lfs
|
| 240 |
+
```
|
| 241 |
+
* **Другие ОС:** См. [официальную документацию Git LFS](https://git-lfs.com/).
|
| 242 |
+
|
| 243 |
+
2. **Инициализируйте Git LFS для вашего пользователя:**
|
| 244 |
+
```bash
|
| 245 |
+
git lfs install
|
| 246 |
+
Эту команду нужно выполнить один раз для вашей системы.
|
| 247 |
+
Настройте Git LFS для отслеживания больших файлов в вашем репозитории: Перейдите в корневую директорию вашего репозитория Hugging Face (например, your-username/x-ui-tunnel) и укажите, какие типы файлов должны отслеживаться Git LFS. Например, для отслеживания всех файлов .bin и .safetensors:
|
| 248 |
+
git lfs track ".bin" git lfs track ".safetensors"
|
| 249 |
+
|
| 250 |
+
Добавьте другие типы файлов по необходимости, например:
|
| 251 |
+
git lfs track "*.zip"
|
| 252 |
+
git lfs track "*.tar.gz"
|
| 253 |
+
Эти команды создадут или обновят файл `.gitattributes` в вашем репозитории. Убедитесь, что вы закоммитили этот файл:
|
| 254 |
+
```bash
|
| 255 |
+
git add .gitattributes
|
| 256 |
+
git commit -m "Add Git LFS tracking for large files"
|
| 257 |
+
4.2. Аутентификация с Hugging Face (использование токена)
|
| 258 |
+
Для взаимодействия с репозиториями Hugging Face вам потребуется токен доступа.
|
| 259 |
+
|
| 260 |
+
Получите ваш токен доступа:
|
| 261 |
+
|
| 262 |
+
Перейдите на Hugging Face Settings -> Access Tokens.
|
| 263 |
+
Создайте новый токен с правами "write" (для загрузки файлов) или используйте существующий. Скопируйте его.
|
| 264 |
+
Настройте Git для использования токена: Вы можете использовать huggingface-cli login (если у вас установлен пакет huggingface_hub для Python) или настроить Git вручную.
|
| 265 |
+
|
| 266 |
+
Использование huggingface-cli (рекомендуется):
|
| 267 |
+
pip install huggingface_hub huggingface-cli login
|
| 268 |
+
|
| 269 |
+
Введите ваш токен, когда будет предложено
|
| 270 |
+
Это сохранит ваш токен в безопасном месте и настроит Git для его использования.
|
| 271 |
+
|
| 272 |
+
* **Ручная настройка Git (менее безопасно для токена):**
|
| 273 |
+
Вы можете добавить токен непосредственно в URL репозитория при клонировании или настроить Git credential helper.
|
| 274 |
+
Пример клонирования с токеном (не рекомендуется для постоянного использования):
|
| 275 |
+
```bash
|
| 276 |
+
git clone https://oauth-token-goes-here@huggingface.co/your-username/your-repo
|
| 277 |
+
Лучше использовать `huggingface-cli login` или настроить Git credential helper.
|
| 278 |
+
4.3. Клонирование и отправка изменений
|
| 279 |
+
После настройки Git LFS и аутентификации вы можете работать с репозиториями Hugging Face как с обычными Git-репозиториями.
|
| 280 |
+
|
| 281 |
+
Клонирование репозитория:
|
| 282 |
+
git clone https://huggingface.co/spaces/your-username/your-space-name
|
| 283 |
+
|
| 284 |
+
или для моделей:
|
| 285 |
+
git clone https://huggingface.co/your-username/your-model-name
|
| 286 |
+
|
| 287 |
+
2. **Внесение изменений и отправка:**
|
| 288 |
+
```bash
|
| 289 |
+
# Внесите изменения в файлы
|
| 290 |
+
git add .
|
| 291 |
+
git commit -m "Your commit message"
|
| 292 |
+
git push
|
| 293 |
+
Git LFS автоматически обработает большие файлы при `git push`.
|