BlueGradientHorizon/cloudpub

NAT traversal client

★ 0Forks 0GitHub ↗Compare

Project website ↗

README

CloudPub

Платформа безопасной публикации локальных сервисов в интернете. Открытый клиент под лицензией Apache 2.0.

Звезды на GitHub Лицензия Образ для Docker Rust SDK Python SDK

Что такое CloudPub

CloudPub – это отечественная альтернатива Ngrok, представляющая собой комбинацию прокси-сервера, шлюза и туннеля в локальную сеть. Его основная задача заключается в предоставлении публичного доступа к локальным ресурсам через защищенный канал.

Возможности

  • Поддержка множества протоколов: HTTP, HTTPS, TCP, UDP, 1C, WebDAV, Minecraft, RTSP
  • Плагинная архитектура: Легкое добавление новых протоколов
  • Безопасность: Шифрование трафика через TLS, управление доступом
  • Простота: Публикация сервиса одной командой
  • Кроссплатформенность: Windows, Linux, macOS
  • Автозапуск: Установка в качестве системного сервиса
  • API и SDK: Программная интеграция для Rust и Python

Компоненты проекта

  • client/ - CLI клиент (clo) для управления публикациями
  • common/ - Общие компоненты и описание протокола
  • sdk/rust - SDK для Rust
  • sdk/pytrhon - SDK для Python

Быстрый старт

Установка

Готовые бинарные файлы

Скачайте последнюю версию с cloudpub.ru для вашей платформы.

Из исходного кода

cargo build --release --package cloudpub-client

Установка через Cargo

cargo install cloudpub-client

Использование

1. Регистрация и авторизация

# Создайте аккаунт на https://cloudpub.ru/dashboard
# Затем авторизуйтесь через CLI:
clo login

2. Публикация сервиса

# HTTP сервер на порту 8080
clo publish http 8080

# С именем и авторизацией
clo publish -n "Мой сервис" -a basic http 8080

# TCP сервис (например, база данных)
clo publish tcp 5432

# Файлы (через WebDAV)
clo publish webdav /path/to/files

3. Управление публикациями

# Список активных публикаций
clo ls

# Остановить публикацию
clo stop <guid>

# Удалить публикацию
clo unpublish <guid>

Основные команды

Команда Описание
login Авторизация на сервере
logout Завершение сессии
publish Добавить и запустить публикацию
unpublish Удалить публикацию
ls Список публикаций
run Запустить агент с сохраненными публикациями
start/stop Управление конкретной публикацией
clean Удалить все публикации
service Управление системным сервисом
upgrade Обновить клиент

Примеры

HTTP/HTTPS сервисы

# Локальный веб-сервер
clo publish http 3000

# HTTPS на другом хосте
clo publish https 192.168.1.100:443

# С заголовками
clo publish -H "X-Custom:value" http 8080

Управление доступом

# Базовая авторизация
clo publish -a basic http 8080

# ACL правила (email:role)
clo publish -a form -A [email protected]:admin -A [email protected]:reader http 8080

Системный сервис

# Установить (требует sudo)
sudo clo service install

# Запустить
sudo clo service start

# Статус
clo service status

SDK

Rust SDK

use cloudpub_sdk::Connection;
use cloudpub_common::protocol::{Protocol, Auth};

#[tokio::main]
async fn main() -> Result<()> {
    let mut conn = Connection::builder()
        .credentials("[email protected]", "password")
        .build()
        .await?;

    let endpoint = conn.publish(
        Protocol::Http,
        "localhost:8080".to_string(),
        Some("Мой сервис".to_string()),
        Some(Auth::None),
    ).await?;

    println!("Опубликовано: {}", endpoint.as_url());
    Ok(())
}

Python SDK

from cloudpub_python_sdk import Connection, Protocol, Auth

# Создание подключения
conn = Connection(
    config_path="/tmp/cloudpub.toml",
    log_level="info",
    verbose=True,
    email="[email protected]",
    password="password"
)

# Публикация HTTP сервиса
endpoint = conn.publish(
    Protocol.HTTP,
    "localhost:8080",
    "Мой сервис",
    Auth.NONE
)

print(f"Опубликовано: {endpoint.url}")

# Управление сервисами
services = conn.ls()
conn.start(endpoint.guid)
conn.stop(endpoint.guid)
conn.unpublish(endpoint.guid)

Сборка

Docker (все архитектуры)

docker build --target artifacts --output type=local,dest=. .

Результат в директории artifacts:

  • x86_64/clo - Linux x86_64
  • aarch64/clo - Linux ARM64
  • arm/clo - Linux ARM
  • win64/clo.exe - Windows x86_64

Локальная сборка

# CLI клиент
cargo build -p cloudpub-client --release

# SDK
cargo build -p cloudpub-sdk --release

Документация

Лицензия

Apache License 2.0

Поддержка

Благодарности

На основе RatHole от Юджиа Цяо

Contributors

ermak-devdiqipibermakus

Issues