xtrime-ru / TelegramApiServer

Fast, simple, async php telegram api server: MadelineProto + Amp HTTP Server
https://tg.i-c-a.su
MIT License
576 stars 130 forks source link

Telegram connection error.. Couldn't find message id in the array of outgoing messages. Maybe try to increase its size? #167

Closed YAMER1 closed 1 month ago

YAMER1 commented 1 month ago

Здравствуйте, переношу контейнеры на Centos 9 Stream и при запуске получаю ошибку Couldn't find message id in the array of outgoing messages. Maybe try to increase its size? Сайт выдаёт ошибку "Telegram connection error". Возможно это связано с ошибкой в вашей демо версии "Telegram connection error..", когда раньше вам задавали 3 раза вопрос. Как вы исправляете эту ошибку? Или это разные ошибки.

xtrime-ru commented 1 month ago

"Couldn't find message id in the array of outgoing messages. Maybe try to increase its size?"

Это не ошибка, а WARNING. Насколько мне известно, возникает, когда сервер присылает ответ, когда клиент уже его обработал. Либо был ответ раньше, либо удалил запрос из за таймаута. Не должна влиять на работоспособность.

Как вы исправляете эту ошибку?

Никак не исправляю, вижу эту запись в своих логах каждые несколько секунд.

YAMER1 commented 1 month ago

Распишу как я исправлял.

  1. Остановил docker compose down в обоих папках и TelegramApiServer и TelegramRSS. Возможно достаточно в любой.
  2. Открыл порт 12345. Его раньше точно не было, а потом появился. И в инструкции не видел, что его нужно открывать. Также не работало подключение к бд mysql. исправлял добавляя пользователя root@127.0.0.1 с доступом к БД, полными правами.
  3. При смене аккаунта, всё равно писало ошибку, что он заблокирован. Поэтому я удалил папки в TelegramApiServer: .mysql, mysql, sessions, vendor sudo docker compose down sudo git reset --hard sudo git pull sudo rm -rf vendor/ sudo rm -rf .mysql/ sudo rm -rf mysql/ sudo rm -rf session/ // Или rm в одну строку все папки sudo docker compose pull // Эти 3 команды сначала для TelegramApiServer, потом для TelegramRSS sudo docker compose run --rm api sudo docker compose up -d

У TelegramRSS я повторял команды с docker и выполнял команду systemctl restart contrainerd

  1. Была проблема с правами на папку и что команда docker compose logs -f api ничего не выводила. Все команды от имени sudo, как супер администратор. Возможно это особенность Centos 9 Stream.
  2. Перезапускал ОС, reboot. Заново заходил в TelegramApiServer и заново выполнял sudo docker compose up -d несколько
  3. Писало ошибку Failed Connect to server и потом вдруг само заработало. Я не знал, что так бывает.

Я плохо разбираюсь в docker, так что мог делать не то и делал ненужные излишние действия, но тем не менее вдруг само заработало и в данный момент работает.

YAMER1 commented 1 month ago

Вроде бы пока всё хорошо, проблема с долгими моими мучениями решилась.

xtrime-ru commented 1 month ago

Скорее всего просто разблокировали аккаунт. После разблокировки требуется заново авторизоваться, что вы и сделали. Порт 12345 открывать не надо, это метрики для prometheus, они по умолчанию выключены.

YAMER1 commented 1 month ago

Когда мне писало, что аккаунт заблокирован, я попробовал добавить другой аккаунт, но мне продолжило писать, что прошлый аккаунт заблокирован, хотя в .env.docker я его поменял на новый и повторил процесс из пункта 3. А после удаления папок заработало с другим аккаунтом и тогда я решил вернуть тот, который был раньше, повторив удаление папок и ошибки блокировки не было. Не знаю, может ли это быть совпадением.

Хорошо спасибо, порты закрою. Нужен только порт 9504 public TCP? А 9503 public не нужен? UDP не нужны? Насколько я знаю это плохо, что порты открыты и не используются.

YAMER1 commented 1 month ago

И наверное есть проблема с тем, что непонятно почему не работает. Может ли контейнер запуститься, сессия работать, но при этом аккаунт заблокирован. Может это и есть в логах, но на сайте просто отображается telegram connection failed, без указания причины. И тогда думаешь, что что-то не так сделал, что-то предпринимаешь, хотя надо подождать.

xtrime-ru commented 1 month ago

Что именно делали, что бы "добавить другой аккаунт" ? Без удаления папки сессии в папке sessions авторизация нового аккаунта не запустится.

xtrime-ru commented 1 month ago

порты закрою

Я в последнем коммите убрал порт 12345 из публички. Он для мониторинга прод сервера нужен, я отдельно у себя пропишу его в docker-compose.override.yml. Большинству пользователей он не нужен.

Все остальные порты слушают запросы только с localhost и не светятся наружу. Их не надо закрывать.