Техническая документация

Как поднять NaiveProxy-сервер

NaiveProxy можно разместить как inbound в sing-box с TLS и доменным именем. Ниже описана структура узла, настройка и базовые проверки.

1. DNS и ACME

Создайте DNS-only A-запись, например naive.example.com, направленную на IP сервера. Для автоматической выдачи сертификата домен должен резолвиться на этот узел, а TCP 80 и 443 должны быть доступны извне. Не публикуйте служебный API sing-box в интернет.

2. Установка sing-box

Используйте официальный репозиторий sing-box и актуальную версию, в которой есть нужный тип NaiveProxy. После установки проверьте бинарник и конфигурацию штатной командой.

sing-box version
sing-box check -C /etc/sing-box

3. Минимальная структура конфигурации

{
  "inbounds": [{ "type": "naive", "listen": "::", "listen_port": 443,
    "users": [{"username": "ACCOUNT", "password": "GENERATE_ME"}],
    "tls": {"enabled": true, "server_name": "naive.example.com",
      "acme": {"domain": ["naive.example.com"]}}
  }], "outbounds": [{"type": "direct", "tag": "direct"}]
}

В production задайте email ACME, ограничения логов, cache-файл и отдельный случайный секрет для локального API. Пароли пользователей генерируйте криптографически случайно и не переиспользуйте.

4. Пул аккаунтов

Предварительная загрузка

Пользователи inbound загружаются из конфигурации. Для масштабирования подготовьте пул аккаунтов и план управляемой перезагрузки.

Состояние доступа

Храните сервер, порт, server name, username и password в защищённом хранилище. Освобождение просроченных аккаунтов должно быть идемпотентным.

5. Мониторинг и проверка

  • Проверяйте статус sing-box и TLS-сертификата.
  • Снимайте CPU, RAM, активные соединения и скорость трафика.
  • Храните локальный API только на localhost и закрывайте его firewall.
  • Проверяйте внешний порт 443 и тестовый профиль отдельным клиентом.

Для per-user статистики требуется отдельная поддержка в сборке и агенте. Снимок server-wide трафика сам по себе не доказывает активность конкретного пользователя.

Безопасность

Не помещайте секреты в frontend, Git, публичные инструкции или URL. Используйте отдельные секреты для API, SSH-ключи, резервные копии конфигурации и регулярную ротацию. Для production сначала протестируйте конфигурацию на отдельном домене.