Роутер коротких ссылок Discourse | Упростите URL поддержки

Бывало ли у вас желание иметь кнопку «Установить эту тему на ваш сайт» для всего? Я разработал сайт для этого! Вы можете воспользоваться им по адресу https://discourserouter.pyxfluff.dev.

Вместо того чтобы писать что-то вроде:

Вы можете посмотреть это по адресу example.com/admin/config/emoji/settings.

… теперь вы можете сделать так:

Вот где вы можете изменить это: https://discourserouter.pyxfluff.dev/admin/config/emoji/settings

При первом посещении сайта вам будет предложено добавить ваш сайт, но эта информация будет сохранена в cookie, поэтому вы сможете использовать тот же сайт в дальнейшем. Это прямая замена пути, префикс пути не требуется. Просто замените URL вашего форума на discourserouter.pyxfluff.dev!

Демонстрация


Обратите внимание, что это всё ещё новый продукт, и могут возникать проблемы! Вы можете сообщать обо всех проблемах, идеях и другой обратной связи в этой теме. Я протестировал продукт на сколько мог, но стопроцентной уверенности быть не может.

Исходный код доступен на GitHub как проект на Python (FastAPI), и pull-реквесты всегда приветствуются.

Операционные расходы

В настоящее время запуск этого сервиса ничего не стоит, так как я размещаю его на своём домашнем сервере, поэтому нет облачных расходов, кроме $10 в год за домен. Однако я планирую в будущем перенести его на отдельный домен. У меня пока нет публичной ссылки для пожертвований, но если вы хотите спонсировать покупку отдельного домена, напишите мне в личные сообщения, и мы обсудим детали.

Наслаждайтесь и дайте знать, что вы думаете! :slight_smile:

2 лайка

По сути, если кто-то подписался на это, вы получаете информацию о том, кто и куда перешел по ссылке здесь :thinking: Или как это работает?

В целях прозрачности вот логи сервера, которые я получил при локальном тестировании:

Я случайно оставил включённым логирование для разработки; однако в продакшене оно отключено начиная с этого коммита. Я мало что могу сделать с логированием Uvicorn обращений к конечным точкам (и не уверен, что хочу этого ради безопасности), но моя цель — не логировать URL конечных точек, поскольку я верю в конфиденциальность. В любом случае, логи сервера находятся в юните systemd, который я не планирую извлекать, если это не будет строго необходимо для поиска ошибки или чего-то подобного.

Веб-сайт также подключён к моему собственному экземпляру Plausible Analytics, так что я могу видеть, сколько людей его используют, без вторгающейся аналитики. Главный итог: я не отслеживаю ваш IP-адрес, URL сайта или вообще что-либо ещё. Я вижу лишь то, что кто-то посетил сайт и был перенаправлен. Не стесняйтесь сообщить мне, если у вас есть какие-либо опасения, но вся история с «логированием перенаправляющих запросов Uvicorn» — это просто ошибка дизайна, связанная с тем, как я решил создать приложение (с помощью куки и Jinja2).

Очевидно, что если вы по какой-то причине не доверяете мне, вы можете просто разместить его самостоятельно (завтра я подготовлю инструкцию), но вы также можете проверить код сами: контейнер синхронизирован с GitHub. :slight_smile:

Очевидно, я тебе не доверяю. И доверять тебе должны далеко не многие. Ты — просто ещё одно безликое имя в интернете.

Но я принимаю это как «да, ты получишь эту информацию»?

1 лайк

Нет, URL сайта находится в куки-файле браузера, который не сохраняется в серверных логах.

Лучшее, что я могу сделать, — опубликовать зеркальную копию исходного кода, показать логи и четко описать используемые технологии (всё это на моей собственной инфраструктуре). Если вы решите не изучать эту информацию или всё равно не поверите мне, я мало что могу для вас сделать :man_shrugging:

1 лайк

Всем привет! Я провел краткий опрос, чтобы решить, сколько ресурсов я выделю на этот проект (время на личное сопровождение, денежные средства и т.д.). Независимо от вашего мнения о проекте в его текущем состоянии, заполнение формы мне очень поможет (если вы ответите «нет» на первый вопрос, там есть место, где можно указать, что вам не нравится). Спасибо! :slight_smile:

Проблема с подобными сервисами в том, что они могут быть прекращены в будущем, а ссылки могут быть перенаправлены на что-то вредоносное.

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


  1. На одном форуме, который я мигрировал, многие изображения хранились на стороннем сервисе, который через несколько лет подменил все ссылки на изображения :upside_down_face: ↩︎

2 лайка

Всем привет, из-за низкой активности я решил заранее закрыть официально размещённый экземпляр. Я поступаю так, потому что нет никаких свидетельств того, что он где-либо использовался (что подтверждается нулевыми посещениями в аналитике на этой неделе), поэтому я не хочу, чтобы кто-то наткнулся на него, начал использовать, а потом столкнулся с нерабочими ссылками.

Это был просто весёлый небольшой проект на выходные, поэтому я не слишком расстроен. Репозиторий GitHub останется доступным, и я исправлю любые критические проблемы, если мне о них сообщат, но пока что новых изменений не будет. Для запуска требуется почти никаких ресурсов, поэтому любой, кто может запускать современный Python, сможет запустить и это. Его можно адаптировать практически под любые задачи; я просто назвал его “discourse router”, потому что такова была первоначальная цель.

2 лайка

Мне казалось, что я обещал написать README ранее, но, видимо, нет. В любом случае, я опубликовал простое руководство по самостоятельному размещению или переиспользованию! Репозиторий всё ещё находится на GitHub, но я вставлю его ниже, на случай если вы по какой-то причине не хотите уходить отсюда.

Инструкции

Настройка

Убедитесь, что у вас есть venv и Python 3.13 или новее (тестировалось только на 3.14, но 3.13 не должно вызывать проблем; если у вас возникают ошибки компиляции, просто обновите Python):

uv venv
source .venv/bin/activate
uv pip install .

При необходимости отредактируйте файл конфигурации:

nano src/backend_config.jsonc

Большинство настроек понятны из контекста. web.hostname нужен лишь для визуального отображения в интерфейсе и не влияет на функциональность.

Всё! Запустите:

python3 -m src

Вам не нужно вручную запускать приложение uvicorn — модуль Python сделает это автоматически.

1 лайк