Запускаем мессенджер Max в песочнице linux Firejail или Docker

Недавно появилась необходимость поставить Max под Linux.
Но так как мы все наслышаны про его возможности не хотелось его запускать на хосте, и как славно что на linux'e есть docker и всякого рода утилиты для простого создания песочниц, одна из таких это firejail.


Зачем вообще Firejail


    Основная идея была простой:
  • не давать приложению доступ ко всему $HOME;
  • изолировать сеть;
  • ограничить доступ к устройствам;
  • скрыть часть информации о системе;
  • убрать лишние capability;
  • минимизировать количество того, что приложение вообще может увидеть.
0. Устанавливаем firejail
sudo apt install -y firejail
Теперь делаем все из под User'a, не из под рута

1. Скачиваем Max для debian/ubuntu и распаковываем
mkdir /tmp/max
cd /tmp/max
wget https://download.max.ru/linux/deb/pool/main/m/max/MAX-26.15.4.69919.deb
7z x MAX-26.15.4.69919.deb
tar xf data.tar
2. После распаковки получаем каталог usr/share в котором лежат потроха max'a. раскидываем по каталогам
mv usr/share/max/ ~/
mv usr/share/icons/* ~/.local/share/icons/
sed "s#Exec=.*#Exec=firejail --profile=Max /home/$USER/max/bin/max %U#" usr/share/applications/max.desktop > ~/.local/share/applications/max.desktop
chmod -x ~/max/bin/max-service/bin/max-service
3. Настраиваем профиль firejail'a
Я внутри sandbox'a создавал сетевый интерфейс который вешал на интерфейс докера, у вас докера может не быть поэтому вам надо будет поднастроить

mkdir -p ~/.config/firejail/  /home/$USER/Downloads/Max /home/$USER/.local/share/ONEME

FIREJAIL_INT=docker0
FIREJAIL_IP=172.17.0.212
FIREJAIL_GW=172.17.0.1

cat <<EOF > ~/.config/firejail/Max.profile
whitelist /home/$USER/max/
whitelist /home/$USER/.local/share/ONEME
whitelist /home/$USER/Downloads/Max
tmpfs /home/$USER/.local/share/ONEME/logs

whitelist /home/$USER/.themes
whitelist /home/$USER/.config/gtk*
whitelist /home/$USER/.local/share/fonts

include whitelist-run-common.inc

private-tmp
private-dev
private-cache
private-bin /bin/bwrap
private-lib yes
private-etc ssl,ca-certificates,fonts,mime.types,nsswitch.conf,ld.so.cache


blacklist /var
blacklist /usr/src
blacklist /opt

# network
net $FIREJAIL_INT
ip $FIREJAIL_IP
netmask 255.255.255.0
defaultgw $FIREJAIL_GW
mac 1c:1a:df:f7:13:35
dns 77.88.8.8
dns 77.88.8.1
hostname $HOSTNAME


nosound # отключает звуковую систему полностью
novideo

caps.drop all

machine-id
disable-mnt
#rmenv ENVIRONMENT # удалить env из sandbox
#env PATH=/home/$USER/.local/bin:/usr/bin # задать env
EOF
4. Пробуем запускаем
firejail --profile=Max /home/$USER/max/bin/max
5. Если появилось окно, поздравляю/соболезную вам. Регистрация все равно должно произойти с мобильного устройства, потом считываем QR.

6. Проблемы которые заметил
  • Звонки не работают, там не может запуститься служба max-service, не стал разбираться, поэтому просто отобрал у него права на запуск
  • [10-05-2026 23:23:08.018] [Warning] [CallsSDK]processResponse(): GetStatus RPC failed: failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:58680: Failed to connect to remote host: Connection refused (/components/calls/native/src/calls_manager.cpp:91)

Docker


В докере его запускать никакого желания не было, хотя по сути это было бы гораздо проще, по идее только прокинуть переменные для X11, потому что версии MAX 26.14.2 почему то не хочет/может работать с wayland.

Для докера такое должно сработать:
docker run --name max -it -v /home/$USER/Max:/home/$USER/Max -u 1000 -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -h $HOSTNAME -e WAYLAND_DISPLAY=$WAYLAND_DISPLAY -e LANG="ru_RU.UTF-8" -e DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS -v $XDG_RUNTIME_DIR:$XDG_RUNTIME_DIR -v $HOME/.Xauthority:/home/$USER/.Xauthority ubuntu:24.04 bash
ну и не забыть поставить кучу зависимостей...
docker exec -it -u 0 max bash
apt update
apt install -y libglx0 libopengl0 libxkbcommon0 libglib2.0-0 libgl1 libpulse0 libgssapi-krb5-2 libegl1 libfontconfig1 libnss3 libxcomposite1 libxdamage1 libxfixes3 libxrender1 libxrandr2 libxtst6 libxi6 libasound2t64 libxkbfile1 libnotify4 locales libxcb-cursor0  libxcb-cursor0   libxcb-icccm4   libxcb-image0   libxcb-keysyms1   libxcb-randr0   libxcb-render-util0   libxcb-xfixes0   libxcb-xinerama0   libxkbcommon-x11-0   libpipewire-0.3-0 libxcb-cursor0 x11-utils libsecret-1-0 libgcrypt20 libsecret-1-dev
echo -e "ru_RU.UTF-8 UTF-8\nen_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen
и можно запускать МАКС… если что секреты он хранит в keyring'e

В заметке могут быть неточности :-)

Комментарии ()

    Авторизация

    GitHubGoogleVkontakteYandex
    Есть вопрос или предложение пиши в Telegram @cloudsv

    Прямой эфир

    cloudsv 07 января 2026, 07:20
    Установка и настройка minidlna 5
    zkutlin 29 мая 2025, 06:14
    Обновление Scala Rider G4 53
    cloudsv 26 октября 2024, 11:31
    MySQL Workbench падает при подключении 4
    Diego mont 25 мая 2023, 07:04
    Полезные боты в Telegram 2
    cloudsv 03 ноября 2022, 03:42
    Настройка прокси mtproto для Telegram 52
    cloudsv 03 января 2022, 10:50
    Let's Encrypt это легко и просто 4
    cloudsv 05 августа 2020, 11:57
    Мне вчера стукнуло 34 4
    cloudsv 23 июля 2025, 20:25
    Linux В Proton 10.x перестал работать gamepad 0
    cloudsv 05 октября 2024, 14:14
    Linux Отключение gvfs wsdd (Web Service Discovery) 0
    cloudsv 07 августа 2023, 22:56
    Linux Asus ROG x13 flow 2022 GV301RE и Linux 0
    cloudsv 15 апреля 2023, 16:23
    Linux Уведомление о смены workspace в X11 Linux 0
    cloudsv 17 октября 2020, 09:55
    Linux Отключить DHCP IPv6 в systemd 0
    cloudsv 30 июля 2020, 21:54
    О жизни Мне вчера стукнуло 34 4
    cloudsv 15 апреля 2020, 15:45
    Linux Основные hotkeys редактора Vim 0