mirror of
https://github.com/oqyude/nixos.git
synced 2026-10-07 20:47:14 +03:00
todo removed
This commit is contained in:
@@ -1,52 +0,0 @@
|
|||||||
# Состояние и следующий шаг (после /compact)
|
|
||||||
|
|
||||||
## Где мы
|
|
||||||
- В `modules/containers/3x-ui.nix`:
|
|
||||||
- `patchScript` (костыльник patcher) **заменён** на `migrateScript` — идемпотентная миграция БД, перемещает `publicKey/fingerprint/serverName/spiderX/mldsa65Verify` из nested `realitySettings.settings` в **top-level** `realitySettings`
|
|
||||||
- systemd-сервис `patch-3xui-xray-config` **заменён** на `migrate-3xui-reality` (oneshot, after=`podman-3xui_app.service`)
|
|
||||||
- **timer удалён** (больше не нужен)
|
|
||||||
- Image остался `v3.8.5` (но v3.8.5 и v3.9.0 имеют один баг — раздельные поля на top-level в БД решают)
|
|
||||||
- Комментарий к image обновлён — объясняет что баг в обоих версиях, лечится миграцией
|
|
||||||
|
|
||||||
## Что делать (А → Б → В)
|
|
||||||
|
|
||||||
### A. Доразвернуть текущий rebuild
|
|
||||||
Текущая команда зависла с `nixos-rebuild-switch-to-configuration.service was already loaded` (предыдущий прогон не очистился).
|
|
||||||
Что сделать:
|
|
||||||
```bash
|
|
||||||
sudo systemctl stop nixos-rebuild-switch-to-configuration.service 2>/dev/null
|
|
||||||
sudo pkill -f switch-to-configuration 2>/dev/null
|
|
||||||
sleep 3
|
|
||||||
sudo nixos-rebuild switch
|
|
||||||
```
|
|
||||||
|
|
||||||
### Б. Проверить что миграция работает
|
|
||||||
После успешного rebuild и старта контейнера:
|
|
||||||
1. `sudo systemctl status migrate-3xui-reality` — должен быть `inactive (dead)` (success)
|
|
||||||
2. `sudo journalctl -u migrate-3xui-reality --since 5m` — должно быть `migrated=0` (idempotent, второй раз)
|
|
||||||
3. `sudo podman exec 3xui_app python3 -c "import json; c=json.load(open('/app/bin/config.json')); ib=c['inbounds'][1]; rs=ib['streamSettings']['realitySettings']; print(rs.get('publicKey','MISSING')[:25])"` — должно быть `K0Ra5yH4Ll_bB-dBmwZcPvYxr`
|
|
||||||
4. `sudo podman exec 3xui_app python3 -c "import sqlite3,json; c=sqlite3.connect('/etc/x-ui/x-ui.db'); rs=json.loads(c.execute('SELECT stream_settings FROM inbounds WHERE id=53').fetchone()[0])['realitySettings']; print('top publicKey:', 'YES' if rs.get('publicKey') else 'NO'); print('nested settings:', rs.get('settings','NONE'))"` — должно быть `YES` и `NONE`
|
|
||||||
|
|
||||||
### В. Итоговый commit
|
|
||||||
После успешного теста:
|
|
||||||
```bash
|
|
||||||
cd /etc/nixos
|
|
||||||
sudo git add modules/containers/3x-ui.nix
|
|
||||||
sudo git commit -m "3x-ui: migrate Reality fields to top-level (root-cause fix for panel config-gen bug)"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Контекст
|
|
||||||
- Container: `ghcr.io/mhsanaei/3x-ui:v3.8.5`, xray 26.9.30
|
|
||||||
- nginx stream :8443 → podman-proxy :15380 → xray :8443 (ранее подтверждена)
|
|
||||||
- DB уже мигрирована (поля на top-level) — миграция только идемпотентно проверяет на повторе
|
|
||||||
- Тест с 5 регенерациями подтвердил: publicKey/fingerprint/spiderX/mldsa65Verify остаются в config.json
|
|
||||||
- Otreca (VDS) — ssh затянут на tailscale-only, deploy-rs деплоит
|
|
||||||
|
|
||||||
## Ключевые файлы
|
|
||||||
- `/etc/nixos/modules/containers/3x-ui.nix` — NixOS-модуль (требует deploy)
|
|
||||||
- `/etc/nixos/configurations/vds.nix` — VDS ssh на tailscale (уже закоммичен и задеплоен)
|
|
||||||
- `/mnt/services/nodes/sapphira/3x-ui/db/x-ui.db` — БД панели (миграция уже применена)
|
|
||||||
- `/etc/nixos/deploy/default.nix` — deploy-rs конфиг (otreca → vds config)
|
|
||||||
|
|
||||||
## Известное замечание
|
|
||||||
Внутри podman exec bash tool убивает backgrounded процессы. Для тестов с долгоживущим xray-клиентом используй systemd-run --scope или делай inline тесты (без background). Для проверки config.json хватает быстрого `podman exec python3 -c`.
|
|
||||||
Reference in New Issue
Block a user