Перейти к содержимому

Friendica на собственном сервере

Машинный перевод

Купил недорогой VPS за 9 долларов в год. Последние дни разбирался с его настройками, я всё-таки разработчик, а не девопс или сисадмин, поэтому приходилось тратить много времени на руководства и устранять базовые ошибки, которые сам же и допустил :)

Зато перенёс свой сервер Friendica whitelion.me из Москвы в Атланту. Ещё меньше связей с РФ, а то вообще было неспокойно хранить там копию моих сообщений из соцсетей...

Хотя с обновлениями Friendica тоже пришлось повозиться, но теперь процесс наладил.

Развертывание с GitHub

Теперь я могу легко и быстро вносить необходимые изменения в код на GitHub и сразу отправлять их на сервер.

Впоследствии, возможно, некоторые из моих исправлений я предложу в основной репозиторий. Пока нет опыта в контрибуции к открытым проектам.

Обновление инстанса

Обновил свой инстанс Friendica — как всегда, не без проблем. Сначала обновление зависло, потому что сбивалось из-за попытки обновить контакт с ID 0, а обновлять контакты с нулевым ID запрещено в коде. Проверку на 0 в коде убрал. Раньше системный контакт создавался с ID 0, но, возможно, при миграции какого-то обновления его убрали, но, видимо, у меня она провалилась на инстансе. Затем изображения перестали загружаться, так как плагин, работающий с хранилищем AWS, начал требовать, чтобы регион обязательно был указан. А у меня регион по умолчанию был — после обновления он стал пустой строкой. Весело с открытым исходным кодом — прокачивает навыки. Поэтому и решил хостить инстанс децентрализованной соцсети на языке программирования, который знаю.

Боты и автопостинг

После обновления Friendica ещё оказалось, что автоматическая публикация в инстансе перестала работать. В логах был только код ошибки 403 — пришлось изменять код логирования, чтобы помимо кода был текст. Оказалось, что боты забанены, потому что после обновления плагина, блокирующего ботов, он начал блокировать HTTP-библиотеки, отправляющие запросы. А я, честно говоря, использую такую библиотеку и не подменяю user-agent. В настройках плагина отключил блокировку библиотек — помогло. Это заняло бы меньше времени, если бы в логах с самого начала выводился текст ошибки.

Перенос хранилища на Cloudflare R2

Перенёс хранилище Friendica с Amazon S3 на Cloudflare R2 — и здесь не обошлось без приключений. Библиотека от Akeeba, работающая с хранилищами, совместимыми с S3, использует сигнатуры версии 2 для всех, кроме Amazon, а Cloudflare поддерживает только версию 4. Пришлось в коде заменить 2 на 4 для неамазонского хранилища — заработало. Странно, что авторы библиотеки в комментариях пишут, что их реализация сигнатур версии 4 совместима только с Amazon, хотя сейчас на практике проверил, что с Cloudflare всё работает. Создать Issue в GitHub библиотеки?

Репозиторий Cloudflare R2 был создан в Восточной Европе, тогда как инстанс Friendica находится на VPS на востоке США — нужно попробовать ещё раз перенести Friendica на виртуальный хостинг в Германии.

Категории и определение языка

Попытался выяснить, почему после прошлогоднего обновления Friendica категория к сообщениям перестала добавляться, тогда как раньше достаточно было параметра category. Причину не нашёл, но обнаружил в коде, что для добавления категории она должна быть указана в квадратных скобках в параметре file. Это не очевидно, и я не обращал внимания на это в документации.

Заодно наткнулся на код, который определяет язык сообщения. Оказывается, если сообщение короткое, то к нему добавляется описание профиля, и на его основе определяется язык сообщения. Вот почему у меня все короткие сообщения в свойствах имеют английский язык — у меня биография в Friendica написана на английском. Оригинальный метод определения языка коротких сообщений)

Включите комментарии, приняв куки.

Необходимые куки работают всегда. Куки для статистики и комментариев используются только с вашего согласия. Подробнее