MCPcopy Index your code
hub / github.com/ermak-dev/cloudpub

github.com/ermak-dev/cloudpub @v3.0.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.0.2 ↗ · + Follow
467 symbols 1,045 edges 58 files 74 documented · 16%

Browse by type

Functions 376 Types & classes 91
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

CloudPub

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

  • Сайт проекта: https://cloudpub.ru
  • Документация: https://cloudpub.ru/docs

Звезды на 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/python - 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 admin@example.com:admin -A user@example.com: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("user@example.com", "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="user@example.com",
    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 от Юджиа Цяо

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Method 265
Function 111
Class 66
Enum 18
Interface 7

Languages

Rust98%
TypeScript1%
Python1%

Modules by API surface

sdk/python/src/lib.rs27 symbols
common/src/transport/websocket.rs25 symbols
common/src/fair_channel.rs25 symbols
common/src/transport/rustls.rs23 symbols
common/src/protocol.rs23 symbols
common/src/transport/tcp.rs22 symbols
client/src/upgrade/mod.rs22 symbols
sdk/rust/src/connection.rs19 symbols
client/src/config.rs17 symbols
common/src/lease.rs16 symbols
common/src/utils.rs15 symbols
common/src/unix_tcp/socket_addr.rs15 symbols

For agents

$ claude mcp add cloudpub \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page