## Настройка VNC Ubuntu Server 20.04 Rspberry PI 4

*Установку и настройку ОС выполнял по документации*
[How to install Ubuntu on your Raspberry PI](https://ubuntu.com/tutorials/how-to-install-ubuntu-on-your-raspberry-pi#1-overview)

**Установим DE**
```bash
sudo apt update
sudo apt upgrade
sudo apt install xubuntu-desktop
sudo reboot

```

**TightVNC Server**
*За основу взял эти статьи:*  
[Установка и настройка VNC в Ubuntu 20.04](https://www.8host.com/blog/ustanovka-i-nastrojka-vnc-v-ubuntu-20-04/)  
[Как настроить и использовать сервер TigerVNC в Linux](https://zalinux.ru/?p=3905)  
*TigerVNC настроить не получилось, сервер не пускал к себе никого*  

`sudo apt install tightvncserver`  

*при первом запуске нужно задать пароль*  
`vncserver`  

*Если в будущем понадобиться изменить пароль или добавить пароль для просмотра, это можно сделать с помощью команды vncpasswd:* 
`vncpasswd`

*При первом запуске VNC использует порт 5901. Чтобы изменить настройки сервера VNC, нужно остановить экземпляр, использующий порт 5901.*  
`vncserver -kill :1`

*Резервная копия файла xstartup:*  
`mv ~/.vnc/xstartup ~/.vnc/xstartup.bak`

*Затем создать новый файл xstartup*
`nano ~/.vnc/xstartup`

```bash
#!/bin/bash
 
PATH=/usr/bin:/usr/sbin
unset SESSION*MANAGER
unset DBUS*SESSION*BUS*ADDRESS
exec ЗАПУСК &
```
*Вместо слова `ЗАПУСК` должен быть указан исполнимый файл, запускающий X сессию.*  

*Для Cinnamon:* `cinnamon-session-cinnamon`  
*Для XFCE:* `startxfce4`  
*Для GNOME:* `/usr/bin/gnome-session`  
*Для Kodi:* `kodi-standalone`  
*Для Mate:* `mate-session`  
*Для lxqt:* `startlxqt`  
*Узнать исполняемый файл для любого окружения рабочего стола установленного в системе -*  `ls /usr/share/xsessions/`  
*В этой папке лежат файлы с расширением `.desktop`, например:*
`cinnamon2d.desktop  cinnamon.desktop  gnome.desktop  gnome-xorg.desktop  kodi.desktop`
*Открыть любой, найти там строку, которая начинается на «Exec», например для файла xfce.desktop:*  
`Exec=cinnamon-session-cinnamon`
*сделать файл исполняемым:* `chmod +x ~/.vnc/xstartup`  

**Настройка VNC как сервиса systemd**
`sudo nano /etc/systemd/system/vncserver@.service`
```bash
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=da2001
Group=da2001
WorkingDirectory=/home/da2001
PIDFile=/home/da2001/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x720 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
```
*сохранить, закрыть*  

*Затем сообщите системе про новый юнит-файл.*  
`sudo systemctl daemon-reload`  
*И включите его:*  
`sudo systemctl enable vncserver@1.service`  
*Цифра 1, идущая за @, определяет, какой номер дисплея должен отображаться в сервисе, в этом случае это значение по умолчанию :1.*  
*Остановите текущий экземпляр сервера VNC, если он еще запущен.*  
`vncserver -kill :1`  
*Теперь попробуйте запустить его как любой другой сервис systemd:*  
`sudo systemctl start vncserver@1`  
*Чтобы убедиться, что сервер запущен, проверьте его состояние:*  
`sudo systemctl status vncserver@1`