- PVSM.RU - https://www.pvsm.ru -

Форки Firefox. Поднимаем собственный сервер синхронизации

Форки Firefox. Поднимаем собственный сервер синхронизации - 1

Firefox — последний независимый браузер на собственном движке, который противостоит монополии Chrome. Однако некоторые пользователи недовольны политикой организации Mozilla: она собирает телеметрию, угрожает внедрять ИИ [1], искать новые источники дохода и использовать персональные данные пользователей.

Так что для безопасности есть смысл переключиться на безопасный форк Firefox. Правда, в этом случае мы лишаемся некоторых удобных централизованных сервисов, таких как синхронизация браузера между разными устройствами.

Но эту проблему можно исправить. В частности, сервер синхронизации Firefox можно установить на собственном хостинге [2].

Продажа персональных данных

Действия Mozilla в последнее время разочаровали [3] многих пользователей. Например, в анонсе от 19 февраля [1] организация заявила о «диверсификации» бизнеса, так что разработка Firefox перестаёт быть единственным основным направлением Mozilla. Теперь больше усилий будет направляться на «инвестирование в рекламу с соблюдением конфиденциальности для роста новых доходов, разработку надёжного ИИ с открытым исходным кодом и создание кампаний по сбору средств в интернете». Руководство заявило, что новые источники дохода «необходимы для выживания Mozilla».

Но самым пугающим сигналом стало изменение условий пользования Firefox [4], откуда исчез запрет на продажу персональных данных пользователей.

Потом организация пошла на попятную [5] и изменила формулировки, но доверие к Mozilla было подорвано.

В связи с этим некоторые начали присматриваться к независимым форкам Firefox.

Независимые форки

Форки Firefox существуют давно, но в связи с последними событиями стали максимально актуальны. Среди них можно назвать GNU IceCat [6] (под Linux), Floorp [7], LibreWolf [8] и Zen [9].

GNU IceCat [6] — наверное, самый старый из действующих форков, он поддерживается с 2005 года, первая версия вышла на базе Firefox 1.5.0. Его отличия от оригинального браузера:

  • Расширение LibreJS [10] для блокировки «несвободного нетривиального JavaScript». При этом он разрешает исполнение «свободного и/или тривиального JavaScript». На практике это означает, что значительное количество сайтов не будет работать, если не добавить их в исключения;

  • Расширение JShelter [11], которое пытается блокировать не только вредоносное ПО, но также отпечатки браузера и отслеживание пользователей. Оно изменяет окружение JavaScript для веб-страниц, чтобы запутать средства фингерпринтинга. Может блокировать API или возвращать фальшивые значения;

  • Форк расширения Third-party Request Blocker [12], которое блокирует соединения со сторонними ресурсами без согласия пользователя.

Установить GNU IceCat не так просто. Бинарники не распространяются в целях безопасности, но скачать пакет можно под Linux через пакетный менеджер GNU Guix [13].

Сам менеджер можно установить с помощью скрипта:

cd /tmp
wget 'https://git.savannah.gnu.org/gitweb/?p=guix.git;a=blob_plain;f=etc/guix-install.sh;hb=HEAD'
chmod +x guix-install.sh
./guix-install.sh

Под Debian/Ubintu через менеджер пакетов:

sudo apt install guix

Браузер устанавливается следующей командой (после обязательного обновления пакетного менеджера guix pull и guix package -u, это длительная процедура):

guix install icecat
Форки Firefox. Поднимаем собственный сервер синхронизации - 2

Затем нужно обновить его до последней версии:

guix upgrade icecat

Последняя версия браузера 115.24.0.1 [14] вышла совсем недавно, то есть браузер активно поддерживается и своевременно обновляется в соответствии с Firefox той же версии, практически день в день.

Проект Floorp [7] зародился значительно позже, разработка ведётся на Github. Форк отличается бóльшими возможностями по настройке браузера, в том числе интерфейса:

Floorp

Floorp

Ещё один форк LibreWolf [8] — возможно, самый популярный среди всех. Первая версия вышла в 2020 году. Разработчики постарались вычистить из кода Firefox все следящие функции, такие как телеметрия и DRM, а также другие сомнительные функции, которые не очень хорошо были восприняты пользователями, вроде интеграции с Pocker [15].

В стандартную комплектацию входит блокировщик рекламы uBlock Origin [16]. Как известно, его отключили для пользователей Chrome, но Mozilla продолжает поддерживать расширения по старому стандарту Manifest V2 и обещает делать это в будущем [17].

По внешнему виду LibreWolf никак не отличается от Firefox, но продвинутый антитрекинг выгодно его отличает, поскольку эффективно отключает фингерпринтинг пользователей. Так что при прочих равных LibreWolf выигрывает у Firefox благодаря лучшей безопасности.

Браузер Zen [9] — один из самых свежих форков Firefox, разработка которого началась в прошлом году [18], он до сих пор в бете. Вот этот браузер выглядит совершенно иначе по сравнению с Firefox. Интерфейс, панель закладок, боковая панель с табами, поиск — всё интересно переосмыслено:

Форки Firefox. Поднимаем собственный сервер синхронизации - 4

Из названия понятно, что задача «Дзена» — уменьшить стресс, снизить уровень «шума» в интернете. Элементы интерфейса скрываются, когда они не нужны, а остальные занимают минимум места, так что содержание веб-страницы занимает максимальную часть экрана, по сравнению с Firefox или Chrome. Плюс дополнительные фичи, такие как префетчинг ссылок и предварительный показ страницы до перехода по ссылке, разделение экрана и др. Всё выглядит очень красиво, а для дополнительной настройки предназначены моды [19] (расширения). В общем, приятная игрушка для тех, кто хочет поэкспериментировать с браузером и подогнать его максимально под свои предпочтения. Большинство расширений Firefox также работают в Zen.

Свой сервер синхронизации, сложная версия

Важно понимать, что все форки Firefox всё равно зависят от Mozilla. Все они обновляются на базе новых версий браузера Firefox, которые разрабатывает Mozilla. В этом их слабость, потому что если Mozilla пойдёт по тому неприглядному пути [1], о котором говорилось в начале статьи, то разработчики форков мало что смогут сделать [20]. Слишком многое придётся исправлять, а с каждой новой версией разница будет накапливаться.

Кроме того, форки зависят от инфраструктуры Mozilla для различных функций, в том числе синхронизации. Это один из тех недостатков, которые пользователи могут устранить своими силами. Например, установив собственный сервер синхронизации [21] на своём хостинге [2] или VPS [2].

Для этого подойдёт VPS [2] минимальной конфигурации, включая сервер из линейки «Старт» [22] за 139 рублей в месяц (97,3 руб при оплате за год до 30 июня 2025 года). Минимальная конфигурация включает в себя ОС Linux, CPU 1 ядро 2,2 ГГц, RAM 512 МБ, HDD 10 ГБ, выбираем операционную систему Debian 12:

Форки Firefox. Поднимаем собственный сервер синхронизации - 5

Получаем IP-адрес:

Форки Firefox. Поднимаем собственный сервер синхронизации - 6

Подключаемся к серверу:

Форки Firefox. Поднимаем собственный сервер синхронизации - 7

Затем устанавливаем Mozilla Sync Storage [23]. Для этого нужно установить все зависимости, вот список системных требований [24]:

  • cmake

  • gcc

  • golang

  • libcurl4-openssl-dev

  • libssl-dev

  • make

  • pkg-config

  • Rust stable

  • python 3.9+

  • MySQL 5.7

    • libmysqlclient (brew install mysql на macOS, apt install libmysqlclient-dev на Ubuntu, apt install libmariadb-dev-compat на Debian)

Затем следовать инструкциям [25] в официальном репозитории. В качестве БД предлагается MySQL или Spanner, поэтому возможны два варианта установки.

Альтернативный и более простой вариант установки — в докер-контейнере. Для этого выбираем в маркетплейсе [26] образ Docker CE (c Ubuntu 18.04), он обойдётся несколько дороже, потому что нам понадобится сервер с большим количеством памяти для сборки проекта, в котором используются модули с большим количеством зависимостей, такие как gprcio [27]. Это современный фреймворк Remote Procedure Call (RPC) для доступа к сервисам в дата-центрах и облаках.

Для работы Mozilla Sync Storage нужен доступ к крейту Google Cloud Rust (raw) [28]. Это набор клиентских библиотек для взаимодействия с различными сервисами Google Cloud Platform. Доступ осуществляется через интерфейсы Google API на базе grpcio [29].

В общем, Google Cloud Rust (raw) использует grpcio и protobuf, так что их нужно установить предварительно, причём конкретных версий: grpcio 0.13.0 и protobuf 2.28.0, из-за внутренних зависимостей grpcio [30].

Для установки запускаем сервер, подключаемся по SSH и выполняем команды, описанные в документации [31].

  1. Скопировать содержимое mozilla-rust-sdk в корневой каталог на сервере.

  2. Закомментировать значение image в строке syncserver файла docker-compose.mysql.yml или docker-compose.spanner.yml (смотря какую БД мы используем: MySQL или Spanner) и заменить его на следующие строки:

      build:
        context: .
  3. При использовании MySQL настроить учётные данные MySQL в файле docker-compose.mysql.yml, чтобы они соответствовали локальной настройке.

  4. Запустить БД командой make docker_start_mysql или make docker_start_spanner, после этого сервер синхронизации станет доступен по адресу 194.87.239.198:8000/heartbeat [32].

Старый проект Firefox Sync Server на Python доступен здесь [21]. В связи с появлением новой версии на Rust старая больше не поддерживается. Однако для связи БД с Firefox его всё-таки надо установить (опять же, после установки всех зависимостей).

Сначала нужно осуществить указанные правки в syncserver.ini [33], чтобы сервер был доступен на 194.87.239.198:5000.

Потом собрать сервер:

git clone https://github.com/mozilla-services/syncserver
cd syncserver
make build

И запустить его:

make serve

Когда сервер запущен, изменить настройки в браузере Firefox: в about:config изменить значение identity.sync.tokenserver.uri на http://194.87.239.198:5000/1.0/sync/1.5 [34].

Форки Firefox. Поднимаем собственный сервер синхронизации - 8

Перезапустить браузер и попробовать синхронизироваться.

Простой неофициальный контейнер

Инструкции в официальном репозитории довольно сложные и немного странные, потому что отдельные вещи не автоматизированы и нужно делать вручную.

Можно поступить гораздо проще и установить неофициальный докер-контейнер syncstorage-rs-docker [35] для сервера синхронизации. Там всё стандартно: редактируем файл Docker Compose, а потом запускаем контейнер, который сделает всю необходимую работу: загрузит MariaDB и соберёт приложение сервера синхронизации:

Образец [36] файла docker-compose.yaml:

services:
  firefox_mariadb:
    container_name: firefox_mariadb
    image: linuxserver/mariadb:10.6.13
    volumes:
      - /data/ffsync/dbdata:/config
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: syncstorage
      MYSQL_USER: sync
      MYSQL_PASSWORD: syncpass
      MYSQL_ROOT_PASSWORD: rootpass

  firefox_syncserver:
    container_name: firefox_syncserver
    build:
      context: /root/ffsync
      dockerfile: Dockerfile
      args:
        BUILDKIT_INLINE_CACHE: "1"
    restart: unless-stopped
    ports:
      - "8000:8000"
    depends_on:
      - firefox_mariadb
    environment:
      LOGLEVEL: info
      SYNC_URL: https://mydomain/sync
      SYNC_CAPACITY: 5
      SYNC_MASTER_SECRET: mastersecret
      METRICS_HASH_SECRET: metricssecret
      SYNC_SYNCSTORAGE_DATABASE_URL: mysql://sync:usersync@firefox_mariadb:3306/syncstorage_rs
      SYNC_TOKENSERVER_DATABASE_URL: mysql://sync:usersync@firefox_mariadb:3306/tokenserver_rs

После этого Firefox Sync Server станет доступен по адресу, который мы указали в переменной .env и настройках about:config в браузере.

К сожалению, сервер синхронизации всё равно зависит от инфраструктуры Mozilla для некоторых функций [37], а именно для аутентификации, получения метаданных аккаунта и др. Хотя теоретически возможен и полный самохостинг Mozilla Accounts Server [38], документация для этого есть в открытом доступе.

Таким образом, можно добавить к официальному форку Firefox вроде LibreWolf [8] службу синхронизации через свой собственный сервер.

P.S. Если нужно синхронизировать между устройствами только закладки и вкладки, то достаточно простой программы вроде Floccus [39], которая тоже умеет работать через свой VPS [2] и устанавливается гораздо проще.

© 2025 ООО «МТ ФИНАНС»

Автор: ru_vds

Источник [40]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/firefox-2/422440

Ссылки в тексте:

[1] внедрять ИИ: https://blog.mozilla.org/en/mozilla/mozilla-leadership-growth-planning-updates/

[2] хостинге: https://www.reg.ru/?rlink=reflink-717

[3] разочаровали: https://lwn.net/Articles/1012453/

[4] изменение условий пользования Firefox: https://blog.mozilla.org/en/firefox/firefox-terms-of-use/

[5] пошла на попятную: https://blog.mozilla.org/en/firefox/update-on-terms-of-use/

[6] GNU IceCat: https://www.gnu.org/software/gnuzilla/

[7] Floorp: https://floorp.app/en

[8] LibreWolf: https://librewolf.net/

[9] Zen: https://zen-browser.app/

[10] LibreJS: https://www.gnu.org/software/librejs/

[11] JShelter: https://jshelter.org/

[12] Third-party Request Blocker: https://addons.mozilla.org/en-US/firefox/addon/tprb/

[13] GNU Guix: https://guix.gnu.org/

[14] 115.24.0.1: https://cgit.git.savannah.gnu.org/cgit/gnuzilla.git/commit/?id=b1da0f01591182b43e179451ce2484d0fee88dd8

[15] Pocker: https://www.mozilla.org/en-US/firefox/pocket/

[16] uBlock Origin: https://ublockorigin.com/

[17] обещает делать это в будущем: https://blog.mozilla.org/en/firefox/firefox-manifest-v3-adblockers/

[18] началась в прошлом году: https://www.reddit.com/r/firefox/comments/1bsm9lu/im_doing_a_new_firefox_based_browser_im_focusing/

[19] моды: https://zen-browser.app/mods/

[20] мало что смогут сделать: https://codeberg.org/librewolf/issues/issues/2252

[21] собственный сервер синхронизации: https://github.com/mozilla-services/syncserver

[22] линейки «Старт»: https://ruvds.com/ru/vps_start/

[23] Mozilla Sync Storage: https://github.com/mozilla-services/syncstorage-rs

[24] список системных требований: https://github.com/mozilla-services/syncstorage-rs#system-requirements

[25] инструкциям: https://github.com/mozilla-services/syncstorage-rs#local-setup

[26] маркетплейсе: https://ruvds.com/ru/mp/

[27] gprcio: https://grpc.io/

[28] Google Cloud Rust (raw): https://crates.io/crates/google-cloud-rust-raw/

[29] grpcio: https://github.com/pingcap/grpc-rs

[30] внутренних зависимостей grpcio: https://github.com/tikv/grpc-rs/issues/584

[31] команды, описанные в документации: https://github.com/mozilla-services/syncstorage-rs?tab=readme-ov-file#running-via-docker

[32] 194.87.239.198:8000/heartbeat: https://194.87.239.198:8000/heartbeat

[33] правки в syncserver.ini: https://github.com/mozilla-services/syncstorage-rs?tab=readme-ov-file#connecting-to-firefox

[34] http://194.87.239.198:5000/1.0/sync/1.5: http://194.87.239.198:5000/1.0/sync/1.5

[35] syncstorage-rs-docker: https://github.com/dan-r/syncstorage-rs-docker

[36] Образец: https://blog.diego.dev/posts/firefox-sync-server/

[37] всё равно зависит от инфраструктуры Mozilla для некоторых функций: https://github.com/dan-r/syncstorage-rs-docker/blob/main/app/entrypoint.sh#L45

[38] полный самохостинг Mozilla Accounts Server: https://ymozilla-services.readthedocs.io/en/latest/howtos/run-fxa.html

[39] Floccus: https://floccus.org/

[40] Источник: https://habr.com/ru/companies/ruvds/articles/917308/?utm_source=habrahabr&utm_medium=rss&utm_campaign=917308