From 6243163232ef071ce116f75fee2f0417443d59b5 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Fri, 10 Apr 2026 00:38:16 +0700 Subject: [PATCH] Update docker-compose.yml to add telemt-panel service and configure telemt-plus network. Modify SYNC_SETUP.md to change ownership settings from 999:999 to 65532:65532 for improved compatibility and document steps for reconfiguring existing B servers. --- SYNC_SETUP.md | 58 +++++++++++++++++++++++++++++++++++++++++----- docker-compose.yml | 23 ++++++++++++++++++ 2 files changed, 75 insertions(+), 6 deletions(-) diff --git a/SYNC_SETUP.md b/SYNC_SETUP.md index ad456ef..f31c981 100644 --- a/SYNC_SETUP.md +++ b/SYNC_SETUP.md @@ -109,7 +109,7 @@ sync { compress = true, _extra = { "--delete", - "--chown=999:999", + "--chown=65532:65532", "--chmod=Du=rwx,Dg=rx,Do=,Fu=rw,Fg=r,Fo=", "-e", "ssh -i /root/.ssh/telemt_sync -o StrictHostKeyChecking=accept-new" } @@ -129,7 +129,7 @@ sync { compress = true, _extra = { "--delete", - "--chown=999:999", + "--chown=65532:65532", "--chmod=Du=rwx,Dg=rx,Do=,Fu=rw,Fg=r,Fo=", "-e", "ssh -i /root/.ssh/telemt_sync -o StrictHostKeyChecking=accept-new" } @@ -149,7 +149,7 @@ sync { compress = true, _extra = { "--delete", - "--chown=999:999", + "--chown=65532:65532", "--chmod=Du=rwx,Dg=rx,Do=,Fu=rw,Fg=r,Fo=", "-e", "ssh -i /root/.ssh/telemt_sync -o StrictHostKeyChecking=accept-new" } @@ -171,7 +171,7 @@ apt update && apt install -y rsync ```bash # B1: gt1.ivx.su rsync -az --delete \ - --chown=999:999 \ + --chown=65532:65532 \ --chmod=Du=rwx,Dg=rx,Do=,Fu=rw,Fg=r,Fo= \ -e "ssh -i /root/.ssh/telemt_sync -o StrictHostKeyChecking=accept-new" \ /opt/telemt-plus/telemt-data/ \ @@ -179,7 +179,7 @@ rsync -az --delete \ # B2: gt2.ivx.su rsync -az --delete \ - --chown=999:999 \ + --chown=65532:65532 \ --chmod=Du=rwx,Dg=rx,Do=,Fu=rw,Fg=r,Fo= \ -e "ssh -i /root/.ssh/telemt_sync -o StrictHostKeyChecking=accept-new" \ /opt/telemt-plus/telemt-data/ \ @@ -187,7 +187,7 @@ rsync -az --delete \ # B3: gt3.ivx.su rsync -az --delete \ - --chown=999:999 \ + --chown=65532:65532 \ --chmod=Du=rwx,Dg=rx,Do=,Fu=rw,Fg=r,Fo= \ -e "ssh -i /root/.ssh/telemt_sync -o StrictHostKeyChecking=accept-new" \ /opt/telemt-plus/telemt-data/ \ @@ -228,6 +228,52 @@ curl -s http://127.0.0.1:9091/v1/health В ответе ожидается `read_only: true`. +## 8.1) Перенастройка существующих B (slave) на новый `uid/gid` и повторный запуск синхронизации + +Если B-серверы уже были настроены со старым `--chown=999:999`, выполните эти шаги, чтобы синхронизация снова применялась корректно. + +1. На A (`mtg.ivx.su`) обновить конфиг `lsyncd` и перезапустить демон (выполнять на `mtg.ivx.su` от root; желательно сначала остановить `telemt` на всех B по шагу 2, затем вставить блок целиком): + +```bash +sed -i.bak 's/--chown=999:999/--chown=65532:65532/g' /etc/lsyncd/lsyncd.conf.lua +systemctl restart lsyncd +systemctl status lsyncd --no-pager +``` + +2. На каждом B (`gt1.ivx.su`, `gt2.ivx.su`, `gt3.ivx.su`) остановить `telemt` и выставить права под новый `uid/gid`: + +```bash +cd /opt/telemt-plus +docker compose stop telemt +chown -R 65532:65532 telemt-data +find telemt-data -type d -exec chmod 750 {} \; +find telemt-data -type f -exec chmod 640 {} \; +chmod 660 telemt-data/config.toml 2>/dev/null || true +chmod 770 telemt-data/cache 2>/dev/null || true +``` + +3. На A выполнить повторную полную синхронизацию на все B (команды из шага 6 с `--chown=65532:65532`). + +4. На A перезапустить `lsyncd`: + +```bash +systemctl restart lsyncd +systemctl status lsyncd --no-pager +``` + +5. На каждом B поднять контейнер и проверить, что узел в режиме read-only: + +```bash +cd /opt/telemt-plus +docker compose up -d --force-recreate telemt +curl -s http://127.0.0.1:9091/v1/health +``` + +Ожидаемо: +- контейнер `telemt` стартует без ошибок прав доступа; +- в health-ответе `read_only: true`; +- после изменения `config.toml` на A файл автоматически обновляется на всех B. + ## 9) Правило эксплуатации - Мутации (`POST/PATCH/DELETE`) делать только на A (`mtg.ivx.su`). diff --git a/docker-compose.yml b/docker-compose.yml index 8e322e4..99f1fcb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,6 +5,8 @@ services: dockerfile: Dockerfile container_name: telemt-bot restart: unless-stopped + networks: + telemt-plus: environment: TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN} TELEGRAM_ADMIN_CHAT_ID: ${TELEGRAM_ADMIN_CHAT_ID} @@ -15,3 +17,24 @@ services: TELEMT_LINK_HOST: ${TELEMT_LINK_HOST} TELEMT_LINK_PORT: ${TELEMT_LINK_PORT:-9443} TELEMT_TLS_DOMAIN: ${TELEMT_TLS_DOMAIN:-} + + telemt-panel: + image: ghcr.io/amirotin/telemt_panel:latest + container_name: telemt-panel + restart: unless-stopped + user: "0:0" + volumes: + - /opt/telemt-plus/telemt-panel-data:/etc/telemt-panel + networks: + telemt-plus: + ipv4_address: 172.20.0.4 + ports: + - "${TELEMT_PANEL_HTTP_PORT:-8080}:8080" + +networks: + telemt-plus: + driver: bridge + ipam: + config: + - subnet: 172.20.0.0/24 + gateway: 172.20.0.1