Документация
Быстрый старт
В собранном проекте выполните одну команду. Аккаунт не нужен: сайт живёт 6 часов, если вы не войдёте и не заберёте его.
npx lobsite
Папка — это аргумент, dir в lobsite.toml или первая существующая из dist/, build/, out/, _site/, public/. Загружаются только изменённые файлы.
ИИ-агенты
Агенты для программирования (Claude Code, Cursor, Codex и другие) деплоят той же командой. Под агентом CLI никогда не задаёт вопросов, а его вывод заканчивается строкой «Tell the user:» с URL и, для сайта без аккаунта, ссылкой для получения, по которой его можно сохранить.
npx -y lobsite --yes
Есть также MCP-сервер для агентов программирования, удалённый сервер для ChatGPT и Claude.ai и команда curl для песочниц без Node. Настройте своего агента.
Перетаскивание
Войдите и перетащите папку или zip в любое место панели. Перед загрузкой выполняются те же проверки; секретные файлы всегда исключаются.
lobsite.toml
site = "quiet-fox-4821"
dir = "dist"
spa = false # true: paths that aren't files open index.html
[[redirects]]
from = "/blog/:slug"
to = "/posts/:slug"
status = 301 # 301 | 302 | 307 | 308
[[headers]]
for = "/assets/*"
[headers.values]
Cache-Control = "public, max-age=31536000, immutable"
[forms.contact]
required = ["email", "message"]
redirect = "/thanks"
Неизвестные ключи — ошибка, с подсказкой ближайшего правильного ключа. Настройки едут вместе с каждым деплоем, поэтому откат их восстанавливает.
Одностраничные приложения
Приложения с маршрутизацией на стороне клиента, например React Router, Vue Router или TanStack Router, имеют один index.html и рисуют каждую страницу в браузере. Если открыть /dashboard/settings напрямую или обновить страницу, сервер получит запрос к несуществующему файлу. Одностраничный режим отвечает на такие пути вашим index.html, и дальше работает роутер приложения. Включить его можно тремя способами:
spa = trueвlobsite.toml. Настройка едет с каждым деплоем, поэтому откат её восстанавливает. Нужен lobsite 0.1.8 или новее; более старые версии останавливаются с «Unknown key».- Одностраничное приложение в настройках сайта в панели. Это способ для сайтов, загружаемых перетаскиванием, ведь перетащенная папка не передаёт
lobsite.toml. Это настройка сайта, поэтому она не меняется при деплоях и откатах. 200.htmlв корне сайта. Он отдаётся вместоindex.htmlи работает с любой версией CLI и с перетаскиванием. Так это делает Surge.
С Vite (React, Vue, Svelte или Solid) добавьте настройку и деплойте dist/ как обычно:
npm run build
npx lobsite
Приложение получают только запросы страниц: путь, у последней части которого нет расширения (/dashboard, /users/42), или любой запрос браузера, который просит HTML (/users/jane.doe). Отсутствующий файл вроде /assets/index-3f9a.js получает настоящий 404. Это важно сразу после деплоя: посетитель, у которого ещё открыта старая версия, получит понятную ошибку для старого скрипта, а не ваш HTML вместо него.
| На сайте есть | Отсутствующая страница (/dashboard) |
Отсутствующий файл (/old.js) |
|---|---|---|
| ничего | «Not found» от Lobsite, 404 | «Not found» от Lobsite, 404 |
404.html |
404.html, 404 |
404.html, 404 |
| одностраничный режим | index.html, 200 |
«Not found» от Lobsite, 404 |
одностраничный режим и 404.html |
index.html, 200 |
404.html, 404 |
200.html (с настройкой или без) |
200.html, 200 |
404.html, если есть, иначе «Not found», 404 |
При переезде с Netlify правило _redirects /* /index.html 200 равнозначно spa = true; с Vercel то же самое — rewrite /(.*) на /index.html.
.lobsiteignore
Файлы, подходящие под шаблон из .lobsiteignore, не деплоятся. Синтаксис тот же, что у .gitignore:
drafts/
*.psd
/notes.txt
!keep.psd
Файл читается из деплоемой папки и из корня проекта (рядом с lobsite.toml); шаблоны в файле корня считаются относительно корня. .git, node_modules, .DS_Store и сам .lobsiteignore исключаются всегда.
Секретные файлы (.env*, приватные ключи вроде *.pem и id_rsa, .npmrc, .netrc и подобные) останавливают деплой, пока их не удалят или не добавят в игнор. В терминале CLI предлагает добавить их в .lobsiteignore и задеплоить без них.
Формы
<form action="/_lobsite/forms/contact" method="POST">
<input name="email" type="email" required>
<textarea name="message" required></textarea>
<button>Send</button>
</form>
Формы находятся при деплое. Защита от спама (поле-ловушка, проверка времени и ограничение частоты) добавляется за вас. Заявки приходят на страницу «Заявки» в панели и на почту. Подробнее о формах: примеры, отправка через JavaScript, фреймворки и настройки.
На бесплатном тарифе формы работают в ограниченном режиме: месячная квота на сайт, уведомления только на почту аккаунта и без вебхуков. Тариф Standard добавляет вебхуки, любой подтверждённый адрес для уведомлений и более высокую квоту.
Свои домены
Свои домены доступны в любом аккаунте, включая бесплатный. lobsite domain add www.example.com выводит запись, которую нужно добавить: CNAME на cname.lobsite.app. Сертификаты выпускаются и продлеваются за вас. Если домен добавил и другой аккаунт, TXT-запись подтвердит, что он ваш.
Предпросмотры и откат
У каждого деплоя свой URL — <id>--<site>.lobsite.app. lobsite deploy --preview не трогает продакшен; lobsite rollback и lobsite promote переключают рабочий деплой без загрузки файлов.
CLI
lobsite [dir] | Задеплоить папку (команда по умолчанию) |
lobsite deploy --preview | Загрузить, не меняя продакшен |
lobsite deploys | Список сохранённых деплоев |
lobsite rollback [id] | Опубликовать предыдущий деплой |
lobsite promote <id> | Опубликовать любой деплой |
lobsite login / logout / whoami | Ваш аккаунт |
lobsite claim [site] | Сохранить анонимный сайт |
lobsite account [use <email>|me] | Переключиться на аккаунт, в котором вы состоите |
lobsite token create|ls|revoke | CI-токены для LOBSITE_TOKEN (Standard) |
lobsite ls / open / rm | Ваши сайты |
lobsite domain add|status|rm | Свои домены |
lobsite forms ls / export <name> --csv | Заявки с форм |
lobsite mcp | MCP-сервер для ИИ-агентов |
Лимиты
| Аноним | Free | Standard | |
|---|---|---|---|
| Сайты | Без ограничения | 1 | 5 |
| Файлов на сайт | 100 | 100 | 10 000 |
| На файл | 5 MB | 5 MB | 100 MB |
| Размер сайта | 50 MB | 50 MB | 2 GB |
| Хранилище | — | 1 GB | 20 GB |
| Деплоев в час | 10 | 30 | 100 |
| Деплоев в день на сайт | 3 | Без ограничения | Без ограничения |
| История деплоев | Live deploy only | 7 days | 30 days |
| Своих доменов на аккаунт | — | 1 | 5 |
| Своих доменов на сайт | — | 1 | 1 |
| Трафик | 1 GB | 10 GB | Unlimited, fair use |
| Заявок с форм в месяц | — | 25 | Unlimited |
| Аналитика | — | — | Yes |
| Автоматизации (Zapier, n8n) | — | — | Yes |
| Значок «Powered by lobsite!» | Yes | Yes | No |
Bandwidth is per month per account (per site lifetime for anonymous sites). At the limit, free and anonymous sites stop serving until the next month; on Standard there's no cap and sites keep serving: past 1 TB a month, we contact you.