GUI in a LXC without Docker
По этому принципу можно пробовать запускать любое графическое приложение, а подключение к контейнеру будет осуществляться по VNC или noVNC прямо из браузера по ip адресу контейнера. И да, докер нам для этого не понадобится.
————————————————————
00:00 ► Вступление
00:35 ► Создаём LXC контейнер
01:38 ► Обновляем пакеты
02:03 ► Разрешаем SSH для root пользователя
03:04 ► Подключаемся по SSH
03:25 ► Устанавливаем всё что нужно
04:09 ► Проверяем
05:35 ► Настраиваем автозагрузку
06:50 ► Результат
07:43 ► Меняем Firefox на Chrome
————————————————————
*ИСПОЛЬЗОВАННЫЕ КОМАНДЫ:*
Обновляем пакеты и устанавливаем недостающие:
apt update && apt upgrade -y
apt install -y firefox-esr x11vnc xvfb fluxbox git websockify mc wget
git clone https://github.com/novnc/noVNC.git /opt/novnc
Переименовываем для удобства:
cd /opt/novnc
mv vnc.html index.html
Включаем иксы:
Xvfb :1 -screen 0 1920x1080x24 &
export DISPLAY=:1
Проверяем:
echo $DISPLAY
Запускаем оконный менеджер:
fluxbox &
Запускаем VNC:
x11vnc -display :1 -nopw -forever -bg
Доступен по IP_контейнера:5900
Запускаем noVNC:
websockify -D --web /opt/novnc 80 localhost:5900
Доступен по http://IP_контейнера/
АВТОМАТИЗАЦИЯ
Создаём скрипт:
nano start.sh
Копируем, вставляем:
————————————————————
#!/bin/bash
Xvfb :1 -screen 0 1920x1080x24 &
sleep 2
export DISPLAY=:1
fluxbox &
x11vnc -display :1 -nopw -forever -bg -shared
sleep 2
websockify -D --web /opt/novnc 80 localhost:5900
while true; do
/usr/bin/firefox-esr
sleep 2
done &
wait
————————————————————
Делаем файл исполняемым:
chmod +x start.sh
Добавляем в cron:
crontab -e
Добавляем строку:
@reboot /root/start.sh
Перезапуск сервера
reboot now
Установка chrome:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
dpkg -i google-chrome-stable_current_amd64.deb
apt --fix-broken install -y
dpkg -i google-chrome-stable_current_amd64.deb
В скрипте поменять на google-chrome-stable --no-sandbox