Skip to main content

Офлайн-развёртывание

Целевая аудитория: ИТ-администраторы и технические руководители, отвечающие за развёртывание. Обычным пользователям достаточно открыть внутренний адрес, который предоставит администратор, — читать эту страницу им не требуется.

Когда это нужно: корпоративные интрасети, сети государственных учреждений, банки и финансовые организации с требованиями локализации персональных данных (152-ФЗ), закрытые контуры и объекты КИИ, изолированные от интернета сегменты, кампусные сети и любые другие среды, где доступ во внешний интернет отсутствует или ограничен.

Без бэкенда, без регистрации — все данные хранятся локально в браузере. После развёртывания сотрудникам достаточно открыть браузер, и можно сразу работать.

Как работать в команде

Офлайн-версия — это полностью статический сайт. После развёртывания на внутреннем сервере участники команды открывают внутренний адрес в браузере:

  1. Администратор разворачивает офлайн-версию на внутреннем сервере (например, http://192.168.1.100:3000)
  2. Участники команды открывают этот адрес в браузере и могут просматривать, искать и копировать промпты
  3. Коллекции и собственные промпты каждого пользователя хранятся в его собственном браузере и полностью изолированы друг от друга
  4. Регистрация не нужна, устанавливать ничего не требуется — открыли и пользуетесь

Архитектура данных офлайн-версии: один сервер в корпоративной сети размещает общую библиотеку промптов только для чтения; коллекции, промпты, порядок сортировки и теги каждого пользователя хранятся в localStorage его собственного браузера — независимо и без аккаунта

Подсказка

Библиотека промптов (отобранные промпты) — это статические данные, упакованные на этапе сборки, поэтому все пользователи видят одинаковое содержимое. Коллекции, собственные промпты, порядок сортировки и теги каждого пользователя хранятся в localStorage его браузера и полностью независимы.

Отличия от онлайн-версии

ВозможностьОнлайн-версияОфлайн-версия
Просмотр, поиск и фильтрация промптовДаДа
Копирование промптовДаДа
Управление коллекциямиХранение на сервереЛокальное хранилище браузера
Собственные промптыХранение на сервереЛокальное хранилище браузера
Моя коллекция (сортировка перетаскиванием, теги)ДаДа
Поддержка многоязычности (18 языков)ДаДа
Импорт и экспорт данныхДаДа (форматы совместимы)
Страницы детальной информации о промптахДаДа (статические данные, без комментариев)
Регистрация и вход пользователейДаНет (аккаунты не нужны)
Список промптов сообщества и голосованиеДаНет
Комментарии и обратная связьДаНет

Хранение данных

Данные каждого пользователя сохраняются в localStorage его собственного браузера независимо от какого-либо сервера:

ДанныеКлюч хранилищаОписание
Список коллекцииlocal_favoritesМассив идентификаторов сохранённых промптов
Собственные промптыlocal_user_promptsДанные промптов, созданных пользователем
Порядок отображенияlocal_myspace_orderПорядок карточек в «Моей коллекции»
Пользовательские тегиlocal_custom_tagsОпределения тегов и их назначения
Внимание
  • Локальное хранилище браузера ограничено примерно 5 МБ — для обычного использования этого достаточно.
  • Очистка данных браузера приведёт к потере персональных данных пользователя — рекомендуйте регулярно делать резервные копии через «Мой аккаунт → Управление данными → Экспорт».
  • При смене компьютера или браузера данные потребуется импортировать заново.

Развёртывание

Офлайн-версия живёт в ветке offline. После однократного развёртывания администратором участникам команды не нужно выполнять никаких дополнительных действий.

Развёртывание через Docker (рекомендуется)

Самый простой способ — одна команда поднимает сервис на любом внутреннем сервере:

# Использовать готовый образ офлайн-версии
docker run -d -p 3000:3000 --name aishort-offline ghcr.io/rockbenben/chatgpt-shortcut:offline

# Или загрузить с Docker Hub
docker run -d -p 3000:3000 --name aishort-offline rockben/chatgpt-shortcut:offline

После развёртывания участники команды обращаются по адресу http://<IP-сервера>:3000.

С использованием docker-compose:

services:
aishort-offline:
container_name: aishort-offline
image: ghcr.io/rockbenben/chatgpt-shortcut:offline
ports:
- "3000:3000"
restart: unless-stopped

Сборка из исходного кода

Если вам нужно настроить содержимое промптов или изменить конфигурацию:

# Клонировать ветку offline
git clone -b offline https://github.com/rockbenben/ChatGPT-Shortcut.git
cd ChatGPT-Shortcut

# Установить зависимости
yarn

# Локальная разработка
yarn start

# Собрать одноязычную версию (русский)
yarn build --locale ru

# Собрать все языки
yarn build

Результат сборки находится в каталоге build/ и может быть размещён на любом веб-сервере для статических файлов (Nginx, Apache, Caddy и т. п.).

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

server {
listen 3000;
server_name _;
root /path/to/build;
index index.html;

location / {
try_files $uri $uri/ /index.html;
}
}

Развёртывание на платформах

При развёртывании на Vercel, Cloudflare Pages и подобных платформах достаточно выбрать ветку offline — остальные шаги совпадают с онлайн-версией. Подробнее см. Развёртывание проекта.

Импорт и экспорт данных

Экспорт

Перейдите в «Мой аккаунт → Управление данными → Экспорт», чтобы сохранить ваши коллекции и собственные промпты в JSON-файл.

Импорт

Поддерживаются следующие форматы JSON-файлов:

  • Файлы, экспортированные из офлайн-версии: полностью восстанавливают коллекции, промпты, порядок сортировки и теги
  • Файлы, экспортированные из онлайн-версии: автоматически преобразуются для совместимости
    • Пользовательские промпты → объединяются локально (дедупликация по заголовку)
    • Отобранные коллекции (card) → объединяются с локальной коллекцией
    • Коллекции сообщества (community) → автоматически конвертируются в локальные собственные промпты
    • Порядок MySpace → восстанавливается локально
    • Пользовательские теги → добавляются (существующие теги не перезаписываются)

Миграция из онлайн-версии

  1. Экспортируйте данные на странице «Мой аккаунт» в онлайн-версии (aishort.top)
  2. Импортируйте этот JSON-файл через «Мой аккаунт → Управление данными → Импорт» в офлайн-версии
  3. Коллекции сообщества автоматически преобразуются в локальные промпты, отобранные коллекции синхронизируются как обычно

Частые вопросы

Как команде работать после развёртывания?

После того как администратор развернул сервис на внутреннем сервере, передайте сотрудникам адрес доступа (например, http://192.168.1.100:3000). Каждый открывает его в браузере — без установки и регистрации.

Будут ли данные пользователей пересекаться?

Нет. Коллекции и собственные промпты каждого пользователя хранятся в localStorage его собственного браузера и полностью изолированы. На сервере находится только общая библиотека промптов (только для чтения).

Могут ли данные потеряться?

К потере персональных данных пользователя приведут следующие действия:

  • Очистка данных или кэша браузера
  • Использование приватного режима или режима «инкогнито»
  • Переход на другой компьютер или браузер

Рекомендуем регулярно создавать резервные копии важных данных в виде JSON-файла через «Мой аккаунт → Управление данными → Экспорт».

Можно ли делиться собственными промптами внутри команды?

Да. Один сотрудник экспортирует JSON-файл, а остальные импортируют его через «Мой аккаунт → Управление данными → Импорт» — дубликаты обрабатываются автоматически.

Как обновлять библиотеку промптов?

Библиотека промптов — это статические данные, упакованные на этапе сборки. Чтобы обновить её:

  1. Администратор подтягивает последнюю версию кода из ветки offline
  2. Пересобирает и переразворачивает сервис (или скачивает свежий Docker-образ)
  3. Участникам команды достаточно обновить страницу в браузере, чтобы увидеть новое содержимое, — персональные данные при этом не затрагиваются

Совместим ли формат данных офлайн-версии с онлайн-версией?

Да. Экспортируемый JSON-формат одинаков, и файл можно импортировать в обоих направлениях. Идентификаторы промптов различаются (онлайн-версия использует серверные ID, офлайн-версия — ID на основе временной метки), но импорт делает дедупликацию по заголовку, поэтому конфликтов не возникает.