---
name: setup-zerotier-remote-access
title: ZeroTier + VNC для удалённого доступа к Mac
description: Установка ZeroTier на сервер, подключение к приватной сети и настройка VNC/Screen Sharing для удалённого доступа к MacBook
---

## Когда использовать
Когда нужно получить удалённый доступ к экрану MacBook через VNC, используя ZeroTier как VPN-мост между сервером (Contabo) и Mac.

## Шаги

### 1. Пользователь создаёт сеть ZeroTier
- Зайти на https://my.zerotier.com
- Зарегистрироваться (если нет аккаунта)
- Нажать **Create A Network**
- Скопировать Network ID (16 символов) — скинуть агенту

### 2. Пользователь подключает MacBook
- Установить ZeroTier One с https://www.zerotier.com/download/
- Join Network → ввести Network ID

### 3. Подключить сервер к сети ZeroTier
- Установить `zerotier-one` через официальный APT-репозиторий или скрипт установки
- Запомнить ZeroTier ID (выводится после установки)
- Выполнить `zerotier-cli join <NETWORK_ID>`

### 4. Авторизовать устройства в админке my.zerotier.com
- Вкладка Members → поставить галочку **Auth** ✅ напротив:
  - MacBook пользователя
  - сервера (по его ZeroTier ID)

### 5. Включить Screen Sharing на Mac
- 🍎 → Системные настройки → Sharing → **Screen Sharing** ✅
- Запомнить ZeroTier IP Mac (из Members, обычно 10.x.x.x)

### 6. Создание VNC-пароля на сервере
Пароль — тот же, что установлен в Screen Sharing на Mac:
```bash
echo <пароль> | vncpasswd -f > /tmp/vncpass && chmod 600 /tmp/vncpass
```

### 7. Вариант A — Интерактивное подключение
```bash
apt-get install -y tigervnc-viewer
vncviewer <ZeroTier_IP_Mac>:5900
```

### 7. Вариант B — Скриншот без GUI (vncsnapshot)
- `vncsnapshot` обычно уже предустановлен на Ubuntu (входит в tightvnc-пакеты)
```bash
vncsnapshot -passwd /tmp/vncpass <ZeroTier_IP_Mac>:0 /tmp/macscreen.png
```

### 8. Вариант C — Управление мышью/клавиатурой (vncdotool)

Установка `vncdotool` (Python-библиотека для автоматизации VNC):
```bash
python3 -m pip install vncdotool --break-system-packages
```

Примеры использования `vncdo`:
```bash
# Скриншот
vncdo -s <ZeroTier_IP_Mac>:0 -p <пароль> capture /tmp/screen.png

# Клик в координатах (x, y)
vncdo -s <ZeroTier_IP_Mac>:0 -p <пароль> click 500 400

# Переместить мышь
vncdo -s <ZeroTier_IP_Mac>:0 -p <пароль> moveto 500 400

# Напечатать текст (латиница/кириллица)
vncdo -s <ZeroTier_IP_Mac>:0 -p <пароль> type "привет"

# Нажать клавишу (Enter, Escape, Tab, и т.д.)
vncdo -s <ZeroTier_IP_Mac>:0 -p <пароль> key Enter

# Комбинация: переместить, кликнуть, напечатать
vncdo -s <ZeroTier_IP_Mac>:0 -p <пароль> moveto 200 300 click 1 type "hello" key Enter
```

Важно: координаты зависят от разрешения экрана (смотри через vncsnapshot первым делом).

### 9. Передача файла через SSH (если нет SCP)
```bash
# На сервере (через SSH exec): кодируем
base64 /tmp/macscreen.png
# В контейнере: декодируем
base64 -d /tmp/macscreen.b64 > /tmp/macscreen_local.png
```

### 10. Проверка соединения
```bash
zerotier-cli listpeers | grep <часть_ID_Mac>
zerotier-cli listnetworks
# ping может не работать из-за фаервола macOS — проверяйте VNC-порт:
nc -zv -w3 <ZeroTier_IP_Mac> 5900
```

## Важно
- ZeroTier работает на macOS 10.13+ (если Tailscale не поддерживается)
- Screen Sharing использует порт 5900 (протокол VNC/RFB)
- Все устройства нужно авторизовать в админке — без галочки Auth они не получат IP в сети
- После установки zerotier-one нужно дождаться генерации identity (2-3 сек)
- Ping может не проходить (macOS фаервол), но VNC-порт 5900 может быть открыт
- При подключении VNC на MacBook появляется диалог — пользователь должен подтвердить разрешение
- `vncpasswd -f` создаёт бинарный файл пароля из stdin для VNC-клиентов
