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

Установите, настройте и автоматизируйте Webship.

Настройте, проверьте, разверните и автоматизируйте AI-нативный Webship edge-сервер с краткими примерами TOML и инструкциями по версии 운영ной системы.

Версия документации

Webship 1.1.0Текущая

Выпущено 2026-08-23. Этот URL зафиксирован на выбранном выпуске.

Слушатель по умолчанию
127.0.0.1:4433
Конфигурация
TOML
TLS
TLS 1.3

Обзор продукта

Один сервер между сетью и вашим приложением.

Webship — это самоуправляемый Rust край и статический веб-сервер. Один среда выполнения завершает современные протоколы, применяет политику на краю, обслуживает файлы и проксирует запросы приложений.

Современный транспорт

Принимайте HTTP/1.1, HTTP/2 и HTTP/3, с TLS 1.3 и необязательной конечной точкой WebTransport.

Статическая и проксированная доставка

Обслуживайте статические файлы с валидаторами и заранее сжатыми сопутствующими контейнерами или направляйте трафик приложений через ограниченные пулы верхнего уровня.

Безопасные настройки по умолчанию

Начните с включенного WAF, контроля DDoS, проверки ботов, заголовков безопасности ответа, API Shield и защиты файлов с точками.

Наблюдаемые операции

Используйте аутентифицированную статистику, метрики Prometheus, идентификаторы запросов, плавные перезагрузки и необязательную панель управления MCP.

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

От бинарного релиза до работающего слушателя.

Запускайте на loopback, проверяйте всё перед привязкой и проверяйте встроенный ответ состояния до добавления публичного трафика.

  1. Подготовьте файлы

    Разместите бинарный файл релиза, его конфигурацию TOML, статический корень и любые настроенные файлы сертификата и ключа TLS на хосте.

  2. Проверяйте и осматривайте

    Выполните обе команды конфигурации. Исправьте первую ошибку и проверьте скрытый фактический результат перед запуском.

  3. Запуск в приватном режиме

    Запустите Webship с выбранным файлом TOML. Добавьте полный комплект сертификатов или автоматический TLS, когда сайт будет готов к безопасному открытому доступу.

  4. Проверить время выполнения

    Вызвать GET /health локально. Затем протестировать статические пути, TLS, прокси-маршруты, правила безопасности и аутентифицированный мониторинг.

Минимальный config.toml
listen = "127.0.0.1:4433"
workers = 4
root = "./public"
Проверка перед запуском
/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml
Запуск и проверка
/usr/local/bin/webship --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:4433/health

Руководство быстрого старта для AI-агентов

Подключите AI-агента к Webship в пять строк.

Подключите Claude Code, OpenAI, DeepSeek или любого совместимого клиента MCP через приватный SSH-туннель. Агент получает аутентифицированную поверхность операций без обмена публичным слушателем и без раскрытия учетных данных управления интернет-трафику.

Пятиричная конфигурация клиента MCP
{
  "mcpServers": {
    "webship": { "url": "https://localhost:19443/mcp",
      "headers": { "Authorization": "Bearer <token>" } }
  } }

Статическая доставка

Обслуживайте каталог с настройками по умолчанию, которые учитывают протокол.

Установите root глобально или для каждого сайта. TLS-сайты по умолчанию используют только HTTP/3; сайты без шифрования по умолчанию используют HTTP/1.1 и H2C. Переопределяйте HTTP/1.1, HTTP/2 и HTTP/3 независимо для каждого сайта.

Статический сайт для конкретного домена
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"

[sites.protocols]
h1 = true
h2 = true
h3 = true

Встроенный маршрутизатор поддерживает GET и HEAD, диапазоны байтов, условные запросы, валидаторы, а также сопутствующие файлы .br, .zst и .gz. Пути к файлам, начинающимся с точки, по умолчанию отклоняются; .well-known остается доступным.

Трафик приложения

Маршрутизируйте запросы к одному или нескольким upstream'ам.

Включите обратное проксирование, сопоставьте хост и путь, затем определите итоговую безусловную политику. Webship поддерживает ограниченные пулы, проверки состояния, балансировку нагрузки, прерыватели цепи, безопасные повторные попытки без тела, WebSockets и кэширование.

Маршрут API с двумя источниками
[reverse_proxy]
enabled = true

[[reverse_proxy.routes]]
domain = "app.example.com"
path_prefix = "/api"
strip_path_prefix = true
upstreams = ["127.0.0.1:8080", "127.0.0.1:8081"]

[[reverse_proxy.policies]]
name = "default"
hosts = []
path_prefixes = ["/"]
methods = []
max_body_bytes = 1048576
total_timeout_ms = 30000

TLS и HTTP/3

Используйте ручные сертификаты или позвольте Webship управлять ими.

Webship принимает TLS 1.3. HTTP/3 работает через соответствующий UDP-слушатель; явно включите HTTP/1.1 или HTTP/2, когда TLS-сайт также требует совместимости с TCP.

Автоматический TLS с TLS-ALPN-01
listen = "0.0.0.0:443"

[automatic_tls]
enabled = true
directory_url = "https://acme-v02.api.letsencrypt.org/directory"
cache_dir = "/var/lib/webship/acme"
contacts = ["mailto:ops@example.com"]
accept_terms_of_service = true

[[sites]]
domain = "app.example.com"
root = "/srv/app"

Политика на границе

Сохраняйте безопасный базовый уровень без изменений.

Webship включает свои основные уровни защиты по умолчанию. Настройте лимиты для вашей нагрузки и проверяйте после каждого изменения правила или политики заголовка.

Политика DDoS и заголовков ответа
[ddos]
enabled = true
mode = "normal"
requests_per_minute = 600
burst = 100
block_seconds = 300

[security.response_headers]
enabled = true
nosniff = true
frame_deny = true
referrer_no_referrer = true
hsts = "max-age=31536000; includeSubDomains"
content_security_policy = "default-src 'self'; frame-ancestors 'none'"

Используйте обычный режим для обычного трафика, under_attack для более строгой обработки активных атак и lockdown, когда должны оставаться доступными только проверки и явно разрешенные пути.

Частная диагностика

Смотрите на край без раскрытия управляющей плоскости.

Статистика и метрики Prometheus работают на отдельном аутентифицированном слушателе. Инструментация должна быть включена, когда активен любой из этих конечных пунктов.

Аутентифицированная локальная наблюдаемость
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"

Безопасные операции

Перезагружайте сознательно. Держите откат под рукой.

Перезагрузка конфигурации

Отправьте SIGHUP после редактирования конфигурации, основанной на файле. Webship проверяет замену перед установкой и сохраняет текущую конфигурацию, если проверка не удается.

Обновление и откат

Установите новый бинарный файл рядом с предыдущей версией, проверьте конфигурацию в производственной среде с его помощью, затем проверьте работоспособность, TLS, проксирование и метрики. Сохраняйте предыдущий бинарный файл до прохождения всех проверок.

Команды перезагрузки и systemd
kill -HUP "$(pidof webship)"
/usr/local/bin/webship update --config /etc/webship/production.toml
sudo systemctl daemon-reload
sudo systemctl enable --now webship
sudo systemctl status webship

Оптимизация на основе профилей

Собирайте целевые профили, родные для платформы, не смешивая обучение и продукцию.

Каждый Webship 1.1 целевой объект имеет отдельный инструментированный CLI для сбора данных профилирования LLVM, специфичных для целевой платформы, под вашим репрезентативным трафиком. Используйте точную версию и тройку цели, упражняйтесь на маршрутах и протоколах, которые имеют значение, и корректно завершайте процесс, чтобы он смог сбросить каждый файл .profraw.

  1. Выберите точную целевую платформу

    Скачайте PGO CLI для обучения, версия релиза и тройка целей Rust которого точно совпадает с временем выполнения, которое вы намерены оптимизировать. Сначала проверьте его опубликованный SHA-256.

  2. Захватите репрезентативный трафик

    Установите LLVM_PROFILE_FILE в директорию с правами на запись, запустите тренировочный CLI с проверенной копией реальной конфигурации, воспроизведите репрезентативный прямой и обратный прокси-трафик, затем корректно остановите Webship.

  3. Объедините сырые профили

    Используйте llvm-profdata из компиляции, созданной для релиза. Объедините каждый сгенерированный .profraw файл в один разреженный файл webship.profdata.

  4. Пересборка и проверка

    Применяйте объединённый профиль только к точному исходному коду, компилятору, криптопровайдеру, набору функций и цели, которые его сгенерировали. Проведите проверки правильности и производительности перед публикацией.

Linux, macOS и OpenHarmony
mkdir -p ./profiles
export LLVM_PROFILE_FILE="$PWD/profiles/webship-%p-%m.profraw"
./webship-pgo-training-1.1.0-<target> --config ./webship.toml
Windows PowerShell
New-Item -ItemType Directory -Force ./profiles
$env:LLVM_PROFILE_FILE = "$PWD/profiles/webship-%p-%m.profraw"
.\webship-pgo-training-1.1.0-<target>.exe --config .\webship.toml
Объединение с соответствующим набором инструментов LLVM
llvm-profdata merge -sparse ./profiles/*.profraw -o ./webship.profdata

Справка по командной строке

Малый интерфейс, явный запуск.

webship [OPTIONS] | webship update [OPTIONS]

-c, --config PATH
Выберите файл TOML. Если он не существует, Webship создаст его с приватным удостоверением TLS для localhost.
--check-config
Проверьте полную конфигурацию и завершите работу без запуска прослушивателей.
--print-effective-config
Вывести объединённую эффективную конфигурацию без секретов.
update
Проверить подписанный манифест сообщества, выбрать эту точную целевую платформу и установить более новую версию, если она существует.
--help / --version
Вывести помощь по команде или установленную версию Webship.

Общие режимы отказа

Начните с конфигурации, затем двигайтесь наружу.

  1. Запустите --check-config и исправьте первую выявленную ошибку; неизвестные поля TOML отклоняются.
  2. Подтвердите, что настроенные TCP и UDP порты доступны и разрешены брандмауэром.
  3. Подтвердите, что сертификат и ключ существуют, доступны для чтения учетной записи службы и образуют соответствующую пару.
  4. Для автоматического TLS убедитесь, что каждый настроенный домен разрешается в хост Webship.
  5. Вызовите /health на локальном слушателе приложения перед тестированием через DNS или внешнюю нагрузочную маршрутизацию.
  6. Временно включите аутентифицированную наблюдаемость, когда требуется доказательство во время выполнения.