Собрал клиент AmneziaVPN для Ubuntu 22
...и сделал это через Dockerfile, который Вы можете отредактировать для любого дистрибутива
Зачем понадобилось
Свежие блокировки Роскомнадзора отрезали меня от различных VPN, которыми я периодически пользовался для доступа к зарубежным продуктам, официально в РФ не представленным. Например, к Gemini.
Моей последней надеждой стала self-hosted Амнезия. Я восстановил доступ на всех своих устройствах, кроме одного - домашнего ПК под GPU-вычисления, работающего на Ubuntu 22.04.
Последние версии клиента AmneziaVPN 22-ю убунту не поддерживают: релизы для Linux собираются на Ubuntu 24.04, поэтому есть ограничения в поддержке дистрибутивов из-за версии glibc.
Как это может помочь другим
22-я убунта - это всего лишь пример. Если Ваши вкусы специфичны, да настолько, что AmneziaVPN не работает на выбранном дистрибутиве, докерфайл с лёгкостью можно адаптировать. Единственная дистрибутиво-зависимая часть в докерфайле - вызов apt-get
Что сделано
Я подготовил докерфайл, который из чистого образа ubuntu:22.04 устанавливает Qt и все прочие зависимости, качает репозиторий клиента AmneziaVPN, собирает проект и готовит инсталлятор. Выходная сборка, for my best knowledge, аналогична релизам авторов проекта. Вот здесь PR в официальный репозиторий со всеми объяснениями.
Я писал докерфайл в личных целях, мог что-то не учесть, открыт к критике и предложениям.
Как воспользоваться
Подготовка
Докерфайл качает официальный Qt-инсталлятор (я работал по инструкции вот здесь), поэтому потребуются активный Qt-аккаунт и IP-адрес не из РФ. Qt запрещает скачивания по российским IP-адресам. Нужно либо включить VPN, либо собирать на хостинге за пределами РФ (например, Казахстан). Да, я знаю, что это недостаток - пока не придумал, что с этим делать.
По умолчанию инсталлятор Qt смотрит на учётные данные в файле $HOME/.local/share/Qt/qtaccount.ini. Этот файл прокидывается в докер, поэтому он должен быть на машине для сборки. Если этого файла нет, можно перед запуском докера скачать любой GUI/CLI установщик Qt и пройти в нём страницу логина. Если не хочется возиться с инициализацией аккаунта на машине, то я оставил лазейку по прямой передаче логопасса в докер.
Сборка
Скачать мой форк репозитория, перейти в папку с ним и запустить докер.
Если настраивали аккаунт Qt:
DOCKER_BUILDKIT=1 docker build \ --secret id=qt_credentials,src=$HOME/.local/share/Qt/qtaccount.ini \ --file docker/ubuntu-22.04.Dockerfile --tag amnezia-ubuntu22 \ --output=./.build-dockerfile/ .
Если раскомментировали в докерфайле поддержку прямой передачи логопасса:
DOCKER_BUILDKIT=1 docker build \ --build-arg QT_CREDENTIAL_LOGIN="****@gmail.com" \ --build-arg QT_CREDENTIAL_PASSWORD="********" \ --file docker/ubuntu-22.04.Dockerfile --tag amnezia-ubuntu22 \ --output=./.build-dockerfile/ .
Клиент будет лежат в папке, указанной в --output
По умолчанию репозиторий использует ветку dev:
# Can use either branch or tag ARG REPO_REVISION="dev"
(из того же докерфайла)
Это основная ветка проекта, соот-но возьмётся самый последний коммит, что может привести к ошибкам. Можно выбрать тэг с версией через
--build-arg REPO_REVISION="4.8.15.4"

Запуск
Клиент AmneziaVPN для работы требует несколько зависимостей, которые нужно установить через пакетный менеджер. Выдержка из официальной инструкции:
For Ubuntu you need to install xcb plugin: apt install libxcb-cursor0 libxcb-xinerama0 libxcb-icccm4 libxcb-keysyms1 libopengl0 libxkbcommon-x11-0









