Telegram webhook cherrypy Connection timed out

Хочу запустить бота Telegram через Webhooks, cherrypy. Все выполняю по инструкции из документации. Но при выборе всех портов кроме 8443, выходит ошибка:

> [20/Nov/2021:11:18:42] ENGINE Listening for SIGTERM.
> [20/Nov/2021:11:18:42] ENGINE Listening for SIGHUP.
> [20/Nov/2021:11:18:42] ENGINE Listening for SIGUSR1.
> [20/Nov/2021:11:18:42] ENGINE Bus STARTING [20/Nov/2021:11:18:42]
> ENGINE Started monitor thread 'Autoreloader'. [20/Nov/2021:11:18:42]
> ENGINE Error in HTTP server: shutting down Traceback (most recent call
> last):   File
> "/home/ubuntu/.local/lib/python3.8/site-packages/cherrypy/process/servers.py",
> line 225, in _start_http_thread
>     self.httpserver.start()   File "/home/ubuntu/.local/lib/python3.8/site-packages/cheroot/server.py",
> line 1836, in start
>     self.prepare()   File "/home/ubuntu/.local/lib/python3.8/site-packages/cheroot/server.py",
> line 1791, in prepare
>     raise socket.error(msg) OSError: No socket could be created -- (('0.0.0.0', 443): [Errno 13] Permission denied)
> 
> [20/Nov/2021:11:18:42] ENGINE Bus STOPPING [20/Nov/2021:11:18:42]
> ENGINE HTTP Server cherrypy._cpwsgi_server.CPWSGIServer(('0.0.0.0',
> 443)) already shut down [20/Nov/2021:11:18:42] ENGINE Stopped thread
> 'Autoreloader'. [20/Nov/2021:11:18:42] ENGINE Bus STOPPED
> [20/Nov/2021:11:18:42] ENGINE Bus EXITING [20/Nov/2021:11:18:42]
> ENGINE Bus EXITED

Если же выбрать 8443, вроде все правильно

> [20/Nov/2021:11:20:31] ENGINE Listening for SIGTERM.
> [20/Nov/2021:11:20:31] ENGINE Listening for SIGHUP.
> [20/Nov/2021:11:20:31] ENGINE Listening for SIGUSR1.
> [20/Nov/2021:11:20:31] ENGINE Bus STARTING [20/Nov/2021:11:20:31]
> ENGINE Started monitor thread 'Autoreloader'. [20/Nov/2021:11:20:31]
> ENGINE Serving on https://0.0.0.0:8443 [20/Nov/2021:11:20:31] ENGINE
> Bus STARTED

Но если пишешь боту, то нет ответа не в консоли, не от бота

Перешел по ссылке https://api.telegram.org/bot/getWebhookInfo Получил:

> {"ok":true,"result":{"url":"https://3.128.173.18:8443/token/","has_custom_certificate":true,"pending_update_count":9,"last_error_date":1637407323,"last_error_message":"Connection
> timed out","max_connections":40,"ip_address":"3.128.173.18"}}

что делать?

Вот код:

import telebot
import logging
import cherrypy

token = 'token'
logger = telebot.logger
telebot.logger.setLevel(logging.INFO)

bot = telebot.TeleBot(token)

WEBHOOK_HOST = '3.128.173.18'
WEBHOOK_PORT = 8443
WEBHOOK_LISTEN = '0.0.0.0'
WEBHOOK_SSL_CERT = 'webhook_cert.pem'  # Имя сертификата
WEBHOOK_SSL_PRIV = 'webhook_key.pem'  # Имя ключа
WEBHOOK_URL_BASE = "https://%s:%s" % (WEBHOOK_HOST, WEBHOOK_PORT)
WEBHOOK_URL_PATH = "/%s/" % (token)


class WebhookServer(object):
    @cherrypy.expose
    def index(self):
        if 'content-length' in cherrypy.request.headers and \
                'content-type' in cherrypy.request.headers and \
                cherrypy.request.headers['content-type'] == 'application/json':

            length = int(cherrypy.request.headers['content-length'])
            json_string = cherrypy.request.body.read(length).decode("utf-8")
            update = telebot.types.Update.de_json(json_string)

            bot.process_new_updates([update])

            return ''

        else:
            raise cherrypy.HTTPError(403)


@bot.message_handler(commands=['start']) 
def sta(message):
    bot.send_message(message.chat.id, 'Hey')


@bot.message_handler(regexp='buy') 
def by(message):
    bot.send_message(message.chat.id, 'Whats you want?')


bot.remove_webhook()
bot.set_webhook(url=WEBHOOK_URL_BASE + WEBHOOK_URL_PATH,
                certificate=open(WEBHOOK_SSL_CERT, 'r'))

cherrypy.config.update({
    'server.socket_host': WEBHOOK_LISTEN,
    'server.socket_port': WEBHOOK_PORT,
    'server.ssl_module': 'builtin',
    'server.ssl_certificate': WEBHOOK_SSL_CERT,
    'server.ssl_private_key': WEBHOOK_SSL_PRIV
})

cherrypy.quickstart(WebhookServer(), WEBHOOK_URL_PATH, {'/': {}})

Ответы (1 шт):

Автор решения: Menso Massanin

В операционных системах(mac OS X, bsd etc, linux) порты до 1024(включ.) зарезервированны системой и могут использоваться только суперпользователями, попробуйте запустить код python от имени sudo

→ Ссылка