Минималистичный UDP/TCP-туннель без внешних зависимостей для встраиваемых Linux-систем.
Поставляется в виде демона пользовательского пространства и опционального автономного модуля ядра.
Камеры и другие устройства за NAT сами подключаются к одному серверу camex; сервер выдаёт каждому туннельный адрес, а с nginx перед ними открывает веб-интерфейс каждого устройства по имени, со стартовой страницей всех устройств.
- Архитектура клиент/сервер поверх UDP или TCP
- Режим автоконфигурации — клиент получает параметры туннеля от сервера
- Протокол v2 — рукопожатие Noise (
NKpsk0, X25519, ChaCha20-Poly1305, BLAKE2b), новые ключи на каждую сессию и направление, шифрование всегда - Без внешних зависимостей — нужна только libc
- Кроссплатформенная сборка — x86_64, ARM, AArch64, MIPS (через CI)
- Собственный модуль ядра —
camex.koзаменяетtun.koи не имеет внешних зависимостей - Компактный код — всего ~3 500 строк, легко провести аудит
Одна команда ставит сервер: camex из релиза latest, его ключевую пару,
/etc/camex/camex.conf с новым предварительным ключом и службу systemd.
В конце она выводит то, что нужно клиентам:
curl -fsSL https://raw.githubusercontent.com/OpenIPC/camex/master/install.sh | sudo shС --domain ставится ещё и nginx перед клиентами: веб-интерфейс каждого
клиента на http://<ID клиента>.<домен>/, стартовая страница на
http://<домен>/:
curl -fsSL https://raw.githubusercontent.com/OpenIPC/camex/master/install.sh | sudo sh -s -- --domain openipc.clickПовторный запуск обновляет camex; --uninstall выводит все файлы camex и как
их удалить. Шаги, файлы на сервере, ручная установка на других системах:
docs/install.md (на английском).
Камера (или любое Linux-устройство) с camex-<arch> из
постоянных ссылок, с публичным ключом и psk, которые
вывел установщик:
camex --mode client --auto --name 0203A104B5AE \
--server-host vpn.example.org --port 5800 \
--server-pubkey <public_key> --psk <psk>Все опции: docs/usage.md.
Приложение подключается в автоматическом режиме: адрес, маршруты и MTU присылает
сервер (docs/android.md). install.sh печатает ссылку с
настройками сервера: если открыть её на телефоне, приложение заполнит ими экран
настроек, а применятся они после нажатия Save
(docs/android.md).
| Главный экран | Настройки |
|---|---|
![]() |
![]() |
Стартовая страница устройств на http://<домен>/; каждое имя — ссылка на
веб-интерфейс устройства http://<ID клиента>.<домен>/
(docs/nginx.md).
| Стартовая страница | На телефоне |
|---|---|
![]() |
![]() |
Бинарные файлы публикуются одним релизом, latest,
который CI пересобирает при каждом push в master. В его заголовке — версия camex
(Camex X.Y.Z); в именах файлов версии нет, поэтому ссылки не меняются:
- страница релиза:
https://github.com/OpenIPC/camex/releases/latest - файл:
https://github.com/OpenIPC/camex/releases/latest/download/<файл>
| Файл | Платформа |
|---|---|
camex-aarch64 |
Linux AArch64, статически (musl) |
camex-arm |
Linux 32-bit ARM, статически (musl): камеры OpenIPC |
camex-mipsel |
Linux MIPS little-endian, статически (musl, soft-float): камеры Ingenic, роутеры |
camex-x86_64 |
Linux x86_64, статически (musl) |
camex-android.apk |
Android 8.0 и новее |
camex-macos.zip |
macOS (utun): camex, LICENSE, README |
camex-windows-x86_64.zip |
Windows 64-bit: camex.exe и wintun.dll |
camex-windows-i686.zip |
Windows 32-bit: camex.exe и wintun.dll |
URL=https://github.com/OpenIPC/camex/releases/latest/download
curl -fL -O $URL/camex-armИстория изменений — в CHANGELOG.md.
Документация в docs/ — на английском.
| Документ | Содержание |
|---|---|
| Установка | install.sh, ручная установка, файлы на сервере, очистка для чистой установки |
| Использование | командная строка: ключи, режимы, все опции, драйверы TUN |
| Конфигурация сервера | camex.conf, camex --status, автоматический пул и число клиентов |
| nginx перед клиентами | веб-интерфейс каждого устройства по имени, стартовая страница, файрвол, DNS, TLS |
| Модель безопасности | протокол, его границы, рекомендуемое развёртывание |
| Приложение Android | настройки, VPN и маршруты |
| Модуль ядра | camex.ko: устройство, сборка (и для OpenWrt), API, ограничения |
| Сборка | требования, сборка, кросс-компиляция, размер бинарных файлов |
| Версии и релизы | версии, релиз latest, CI |
MIT. Полный текст условий — в файле LICENSE.
- Вопросы и сообщения об ошибках: GitHub Issues
- Документация: openipc.org



