Skip to content

ermak-dev/cloudpub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 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 от Юджиа Цяо

About

NAT traversal client

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •