Created
October 2, 2025 13:09
-
-
Save voleoo/c93eef6adebb1156b83547fa6bfd6f18 to your computer and use it in GitHub Desktop.
vnc services
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Автозапуск віртуального дисплея `:99` з XFCE (і опціонально VNC) на Linux | |
| Цей гайд налаштовує **Xvfb** як віртуальний X-сервер на дисплеї `:99`, запускає **XFCE** як сесію поверх нього та (за потреби) додає **x11vnc** для віддаленого доступу. Усе оформлено у вигляді `systemd` сервісів, щоб все стартувало автоматично при завантаженні системи. | |
| --- | |
| ## Вимоги | |
| - Debian/Ubuntu-подібна система з `systemd` | |
| - Встановлений XFCE (в тебе вже встановлено) | |
| - Пакети: `xvfb`, `x11vnc` (опціонально) | |
| ### Встановлення пакетів | |
| ```bash | |
| sudo apt update | |
| sudo apt install -y xvfb x11vnc | |
| ``` | |
| > Якщо VNC не потрібен — `x11vnc` можна не ставити. | |
| --- | |
| ## 1) Сервіс `[email protected]` — піднімає віртуальний X-сервер | |
| Створити юніт: | |
| ```bash | |
| sudo tee /etc/systemd/system/[email protected] >/dev/null <<'EOF' | |
| [Unit] | |
| Description=Start Xvfb on display %i | |
| After=network.target | |
| [Service] | |
| ExecStart=/usr/bin/Xvfb :%i -screen 0 1920x1080x24 -ac +extension GLX +render | |
| Restart=always | |
| # User буде задано у конкретному інстансі або заміни на конкретного юзера: | |
| # User=root | |
| # Або прибери цей рядок і запусти як root-сервіс | |
| [Install] | |
| WantedBy=multi-user.target | |
| EOF | |
| ``` | |
| > **Примітка:** Якщо хочеш запускати від конкретного користувача (наприклад `superman`), **заміни** рядок `# User=root` на `User=superman`. | |
| > Якщо хочеш запустити як root — розкоментуй `User=root`. | |
| > Якщо рядок `User=` не вказаний — сервіс буде виконуватись як root. | |
| **Увімкнути та запустити для дисплея `:99`:** | |
| ```bash | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable [email protected] | |
| sudo systemctl start [email protected] | |
| ``` | |
| Перевірити статус: | |
| ```bash | |
| systemctl status [email protected] | |
| ``` | |
| --- | |
| ## 2) Сервіс `[email protected]` — запускає XFCE-сесію на віртуальному дисплеї | |
| Створити юніт: | |
| ```bash | |
| sudo tee /etc/systemd/system/[email protected] >/dev/null <<'EOF' | |
| [Unit] | |
| Description=XFCE desktop on Xvfb display %i | |
| After=xvfb@%i.service | |
| [Service] | |
| Environment=DISPLAY=:%i | |
| ExecStart=/usr/bin/startxfce4 | |
| Restart=always | |
| # Дивись примітку щодо User у попередньому сервісі: | |
| # User=superman | |
| # або User=root | |
| [Install] | |
| WantedBy=multi-user.target | |
| EOF | |
| ``` | |
| **Увімкнути та запустити:** | |
| ```bash | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable [email protected] | |
| sudo systemctl start [email protected] | |
| ``` | |
| Статус: | |
| ```bash | |
| systemctl status [email protected] | |
| ``` | |
| --- | |
| ## 3) (Опціонально) `[email protected]` — VNC-доступ до дисплея `:99` | |
| > **Безпека:** За замовчуванням приклад нижче запускає VNC **без пароля** (`-nopw`). Для продуктивного використання рекомендую створити файл пароля: | |
| > ```bash | |
| > x11vnc -storepasswd | |
| > # створить файл ~/.vnc/passwd | |
| > ``` | |
| > і **замінити** у `ExecStart` ключ `-nopw` на `-rfbauth /home/<USER>/.vnc/passwd`. | |
| Створити юніт: | |
| ```bash | |
| sudo tee /etc/systemd/system/[email protected] >/dev/null <<'EOF' | |
| [Unit] | |
| Description=VNC server on display %i | |
| After=xfce@%i.service | |
| [Service] | |
| Environment=DISPLAY=:%i | |
| # Заміни -nopw на -rfbauth /home/<USER>/.vnc/passwd для пароля | |
| ExecStart=/usr/bin/x11vnc -display :%i -nopw -forever -listen 0.0.0.0 -xkb | |
| Restart=always | |
| # User=superman | |
| # або User=root | |
| [Install] | |
| WantedBy=multi-user.target | |
| EOF | |
| ``` | |
| **Увімкнути та запустити:** | |
| ```bash | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable [email protected] | |
| sudo systemctl start [email protected] | |
| ``` | |
| За замовчуванням `x11vnc` слухає порт `5900`. Підключайся VNC-клієнтом до `IP:5900`. | |
| --- | |
| ## Приклади корисних команд | |
| ```bash | |
| # Журнали конкретного сервісу | |
| journalctl -u [email protected] -e -f | |
| journalctl -u [email protected] -e -f | |
| journalctl -u [email protected] -e -f | |
| # Перезапуск | |
| sudo systemctl restart [email protected] | |
| sudo systemctl restart [email protected] | |
| sudo systemctl restart [email protected] | |
| # Вимкнути автозапуск | |
| sudo systemctl disable [email protected] | |
| ``` | |
| --- | |
| ## Типові проблеми і рішення | |
| - **Чорний екран у VNC / немає панелі XFCE** | |
| Переконайся, що `DISPLAY=:%i` вказано у `[email protected]` та що `xvfb@99` запущено раніше. Дивись `After=xvfb@%i.service`. | |
| - **`startxfce4` не знаходиться** | |
| Встанови `xfce4` пакет: `sudo apt install -y xfce4 xfce4-goodies`. | |
| - **Клавіатура/розкладка у VNC** | |
| Додай `-xkb` у `x11vnc` (вже додано). За потреби встанови `x11-xkb-utils` і налаштуй `setxkbmap` у автозапуск XFCE. | |
| - **Права користувача** | |
| Якщо запускаєш від не-root користувача, задекларуй `User=<ім'я>` в юнітах, і переконайся, що у нього є права читати `~/.vnc/passwd` (якщо використовуєш пароль). | |
| --- | |
| ## Зміна роздільної здатності | |
| Змініть параметр `-screen 0 1920x1080x24` у `[email protected]` на бажаний, наприклад `2560x1440x24`. | |
| --- | |
| ## Швидкий старт (копіпаст) | |
| ```bash | |
| # 1) Пакети | |
| sudo apt update && sudo apt install -y xvfb x11vnc | |
| # 2) Xvfb (як root або вкажи User=... у файлі) | |
| sudo tee /etc/systemd/system/[email protected] >/dev/null <<'EOF' | |
| [Unit] | |
| Description=Start Xvfb on display %i | |
| After=network.target | |
| [Service] | |
| ExecStart=/usr/bin/Xvfb :%i -screen 0 1920x1080x24 -ac +extension GLX +render | |
| Restart=always | |
| # User=root | |
| [Install] | |
| WantedBy=multi-user.target | |
| EOF | |
| # 3) XFCE | |
| sudo tee /etc/systemd/system/[email protected] >/dev/null <<'EOF' | |
| [Unit] | |
| Description=XFCE desktop on Xvfb display %i | |
| After=xvfb@%i.service | |
| [Service] | |
| Environment=DISPLAY=:%i | |
| ExecStart=/usr/bin/startxfce4 | |
| Restart=always | |
| # User=root | |
| [Install] | |
| WantedBy=multi-user.target | |
| EOF | |
| # 4) (Опційно) VNC | |
| sudo tee /etc/systemd/system/[email protected] >/dev/null <<'EOF' | |
| [Unit] | |
| Description=VNC server on display %i | |
| After=xfce@%i.service | |
| [Service] | |
| Environment=DISPLAY=:%i | |
| ExecStart=/usr/bin/x11vnc -display :%i -nopw -forever -listen 0.0.0.0 -xkb | |
| Restart=always | |
| # User=root | |
| [Install] | |
| WantedBy=multi-user.target | |
| EOF | |
| # 5) Увімкнення сервісів | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable [email protected] [email protected] | |
| sudo systemctl start [email protected] [email protected] | |
| # 6) (Опційно) Увімкнути VNC | |
| sudo systemctl enable [email protected] && sudo systemctl start [email protected] | |
| ``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment