# Plan: Time Machine Backup via WireGuard VPN **Date**: 2026-05-14 **Status**: Ready to implement ## Problem Kraken (RPi5) в другой сети — доступен только через SSH-туннель на VPS (91.207.28.205:2223). Time Machine настроен на `smb://timemachine@kraken._smb._tcp.local./TimeMachine` через mDNS — не работает. Последний бэкап: 12 мая 2026. Квота: 3.98 TB. --- ## Топология ``` Eagle (10.99.0.2) ──→ VPS:51820 ←── Kraken (10.99.0.3) 10.99.0.1 ``` **VPS — WireGuard сервер (хаб).** Eagle и Kraken — оба клиенты, оба инициируют исходящий UDP. Kraken не может быть сервером: он за домашним NAT, входящий UDP снаружи недоступен без port forwarding на роутере. Cloudflare туннель не нужен — WireGuard использует UDP, CF его не поддерживает. Идёт напрямую на VPS. Kraken держит два исходящих туннеля на VPS: - уже есть: autossh TCP:2223 (SSH доступ) - новый: wg-quick UDP:51820 (VPN) --- ## Что уже есть | Узел | Статус | |------|--------| | VPS (Debian 6.1) | ✅ kernel module wireguard есть, `wireguard-tools` не установлен | | Kraken (RPi5 6.12) | ✅ `wireguard-tools` в apt, модуль встроен в ядро | | Eagle (macOS) | Нужен WireGuard.app (App Store) или `brew install wireguard-tools` | --- ## Фаза 1 — VPS: сервер (~10 мин) ```bash apt install -y wireguard-tools # Ключи wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub # /etc/wireguard/wg0.conf [Interface] Address = 10.99.0.1/24 ListenPort = 51820 PrivateKey = PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] # Eagle PublicKey = AllowedIPs = 10.99.0.2/32 [Peer] # Kraken PublicKey = AllowedIPs = 10.99.0.3/32 # IP forwarding echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p systemctl enable --now wg-quick@wg0 ``` --- ## Фаза 2 — Kraken: клиент (~5 мин) ```bash sudo apt install -y wireguard-tools # Ключи wg genkey | sudo tee /etc/wireguard/client.key | wg pubkey | sudo tee /etc/wireguard/client.pub # /etc/wireguard/wg0.conf [Interface] Address = 10.99.0.3/24 PrivateKey = [Peer] PublicKey = Endpoint = 91.207.28.205:51820 AllowedIPs = 10.99.0.0/24 PersistentKeepalive = 25 sudo systemctl enable --now wg-quick@wg0 ``` --- ## Фаза 3 — Eagle: клиент (~5 мин) ```bash # Генерация ключей wg genkey | tee ~/eagle.key | wg pubkey > ~/eagle.pub # tunnel.conf (импортировать в WireGuard.app) [Interface] Address = 10.99.0.2/24 PrivateKey = [Peer] PublicKey = Endpoint = 91.207.28.205:51820 AllowedIPs = 10.99.0.0/24 PersistentKeepalive = 25 ``` --- ## Фаза 4 — Тест (~5 мин) ```bash ping 10.99.0.1 # Eagle → VPS ping 10.99.0.3 # Eagle → Kraken smbclient -L //10.99.0.3 -U timemachine ``` --- ## Фаза 5 — Time Machine ```bash sudo tmutil removedestination sudo tmutil setdestination smb://timemachine@10.99.0.3/TimeMachine ``` Или через GUI: System Settings → General → Time Machine → Add Backup Disk → `smb://timemachine@10.99.0.3/TimeMachine` --- ## Фаза 6 — Cloudflare туннель: отключить (не удалять) После того как WireGuard заработает, CF туннель для SSH/SMB больше не нужен — но удалять не стоит, пусть лежит как fallback. Уточнить в CF Zero Trust какие hostname-ы реально активны перед остановкой. ```bash # На Кракене — остановить cloudflared (если хотим освободить ресурсы) sudo docker stop cloudflared # Или оставить работающим — он не мешает, потребляет ~20MB RAM # В CF Zero Trust: просто не добавлять новых hostname-ов под него ``` **Не удалять** туннель в CF Zero Trust dashboard — оставить в состоянии Inactive как fallback. --- ## Заметки - `AllowedIPs = 10.99.0.0/24` — только VPN-трафик через туннель, интернет напрямую - SMB через WireGuard достаточно быстр для TM - VPS = single point of failure для TM, это приемлемо