Запуск в контейнере (Docker / Podman)
Запустите Marinara Engine в контейнере с помощью Docker или Podman. Контейнер – это пакет, в котором лежит само приложение и все, что ему нужно, поэтому Node.js устанавливать не придется. Если вы хотите запустить Marinara с минимальной настройкой, начните отсюда.
Что нужно заранее
Установите одно из двух на компьютер, на котором будет работать Marinara:
- Docker Desktop (Windows или macOS) либо Docker Engine (Linux).
- Podman – замену Docker, которой не нужна фоновая служба и которая работает без прав root.
Термины, которые встретятся дальше:
- Образ (image): скачиваемая копия Marinara только для чтения. Запуская образ, вы создаете контейнер.
- Том (volume): хранилище, которым управляет инструмент контейнеров. Данные в нем сохраняются, даже если контейнер удалить и создать заново.
Официальные образы публикуются в ghcr.io/pasta-devs/marinara-engine.
Запуск Marinara
В проекте уже есть готовый файл docker-compose.yml. Compose – это часть Docker, которая читает этот файл и запускает контейнер. Это рекомендуемый способ.
- Откройте терминал – окно, в котором вводятся команды. Если у вас уже есть рабочая копия Marinara, откройте терминал в этой папке и пропустите два следующих шага.
- Скачайте файлы проекта.
git clone https://github.com/Pasta-Devs/Marinara-Engine.git- Перейдите в новую папку.
cd Marinara-Engine- Запустите контейнер в фоне.
docker compose up -dПри первом запуске скачивается образ ghcr.io/pasta-devs/marinara-engine:latest, это может занять несколько минут. По завершении терминал показывает контейнер в состоянии Started.
- Откройте в браузере
http://127.0.0.1:7860. Загрузится главный экран Marinara.
Если не получилось: возможно, порт 7860 занят другой программой. Выберите свободный порт, например 8080. Создайте в той же папке, где лежит docker-compose.yml, файл с именем .env со строкой PORT=8080, затем снова выполните docker compose up -d. Compose читает этот файл каждый раз, поэтому новый порт сохранится и после обновлений. Затем откройте http://127.0.0.1:8080. Другие решения – в разделе Устранение неполадок.
Остановка Marinara
Выполните эту команду из той же папки. Она останавливает и удаляет контейнер. Данные остаются в томе.
docker compose downДля Podman используйте podman compose down.
Где хранятся данные
Marinara сохраняет чаты, персонажей, загруженные файлы, шрифты и стандартные фоны обычными файлами в томе Compose с именем marinara-data. Compose добавляет перед ним имя папки проекта, поэтому настоящее имя выглядит как PROJECT_marinara-data. Чтобы узнать точное имя и где лежит том, выполните:
docker volume ls --filter name=marinara-data
docker volume inspect PROJECT_marinara-dataВместо PROJECT_marinara-data подставьте имя, которое напечатала первая команда.
При первом запуске Marinara также создает внутри тома пустой файл настроек /app/data/.env. Добавляйте настройки сервера туда. Они сохраняются при перезапусках и обновлениях образа. См. Настройки сервера: справочник.
При каждом запуске контейнер исправляет владельца папки с данными, чтобы приложение могло в нее писать. Он стартует от имени root, исправляет владельца, а затем переключается на обычного пользователя (не root). Это работает и для тома, и для папки, подключенной с вашего компьютера.
Открытие Marinara с другого устройства
По умолчанию Compose разрешает обращаться к Marinara только с этого компьютера. Чтобы открыть ее на телефоне или другом компьютере, опубликуйте порт на всех интерфейсах, но сначала задайте вход. Никогда не открывайте Marinara в сеть без входа.
В Docker Desktop, OrbStack и rootless Docker (Docker без прав root) все устройства видны под одним адресом шлюза. Без входа порт, опубликованный на всех интерфейсах, пускает всех. Когда вход задан, его запрашивают и у этого компьютера. См. Обход для Tailscale и Docker.
- Откройте файл
docker-compose.ymlиз папки Marinara в текстовом редакторе. - В списке
ports:уберите127.0.0.1:.
ports:
- "${PORT:-7860}:7860"- В список
environment:добавьте секрет администратора. Подставьте свое длинное случайное значение.
environment:
- ADMIN_SECRET=another-long-random-value- В тот же список добавьте вход. Подставьте свое имя пользователя и длинный случайный пароль.
- BASIC_AUTH_USER=your-username
- BASIC_AUTH_PASS=another-long-random-password- Сохраните файл и перезапустите контейнер.
docker compose up -d- На другом устройстве откройте
http://YOUR_COMPUTER_IP:7860. Если вы задалиPORT, укажите этот порт. Страница запросит вход.
Если не указывать BASIC_AUTH_USER и BASIC_AUTH_PASS, страница вместо этого попросит одноразовый код настройки. Найдите его в журнале, затем введите на странице вместе с новыми именем пользователя и паролем.
docker logs <container> 2>&1 | grep "setup code"Позже вход в приложение можно изменить в Settings → Advanced → Access (настройки → дополнительно → доступ) в браузере, где вход уже выполнен. Если вы забыли пароль, выполните docker exec <container> node scripts/reset-login.mjs. Эта команда не меняет вход, заданный через BASIC_AUTH_USER и BASIC_AUTH_PASS. Их измените в файле compose и пересоздайте контейнер.
В Docker Desktop, OrbStack и rootless Docker откройте Marinara на этом компьютере по адресу http://localhost:7860, чтобы задать вход в Settings. Список разрешенных IP-адресов там не может различить устройства, поэтому используйте вход. О других способах ограничить доступ и о том, что дает секрет администратора, читайте в руководстве Удаленный доступ: вход и список разрешенных адресов.
Обновление Marinara
Контейнеры сами не обновляются. Сначала сделайте резервную копию (см. Резервное копирование и восстановление Marinara), затем скачайте новый образ и перезапустите контейнер. Выполните эту команду из папки, где лежит docker-compose.yml:
docker compose pull && docker compose up -dДля Podman используйте вместо этого podman compose. В приложении Settings → Advanced → Updates → Check for Updates (обновления → проверить обновления) показывает тег образа и эту команду. Само приложение применить обновление для контейнера не может.
Чтобы вернуться к более старому выпуску, укажите его тег в строке image: файла docker-compose.yml, затем выполните docker compose up -d. Но сначала прочитайте раздел Переход на старую версию. Старые сборки не могут открыть данные, сохраненные новыми.
Выбор тега образа
| Тег | Что это |
latest | Стабильный выпуск. Его использует docker-compose.yml. |
X.Y.Z | Одна фиксированная версия, например ghcr.io/pasta-devs/marinara-engine:2.5.1. |
staging | Нестабильная тестовая сборка из еще не выпущенного кода. Она может ломаться, и вернуть данные в стабильную сборку может не получиться. |
lite | Облегченный образ. См. ниже. |
X.Y.Z-lite | Фиксированная версия образа lite. |
Если вы запускаете staging, используйте отдельный том, чтобы эта сборка не могла изменить стабильные данные:
docker run -d --name marinara-staging \
-p 127.0.0.1:7860:7860 \
-v marinara-staging-data:/app/data \
ghcr.io/pasta-devs/marinara-engine:stagingОбраз lite
Образ lite меньше по размеру и собран на Wolfi – минимальной основе Linux для контейнеров. В нем нет возможностей, которым нужны большие локальные файлы:
| Убрано в lite | Что теряется |
| Встроенная модель | Модель ИИ нельзя запустить на своем оборудовании. |
| Локальная модель эмбеддингов | Эмбеддинги текста на устройстве недоступны. |
| Memory Recall (семантический поиск) | Зависит от локальной модели эмбеддингов. |
| Локальный голосовой ввод Whisper | Распознавание речи для звонков режима Conversation недоступно. |
| Определение настроения для аватаров | 2D- и 3D-аватары выбирают выражение лица по списку слов, а не с помощью небольшой локальной модели эмоций. |
Все остальное работает: чат, ролевая игра, Game Mode, агенты, лорбуки, персонажи и удаленные сервисы ИИ. Для функций ИИ нужно добавить аккаунт внешнего сервиса. См. Подключение к провайдеру ИИ.
docker run -d --name marinara-lite \
-p 127.0.0.1:7860:7860 \
-v marinara-data:/app/data \
ghcr.io/pasta-devs/marinara-engine:liteНекоторые старые образы lite падают на Raspberry Pi 4 и похожих компьютерах на ARM с ошибкой SIGILL (ошибка недопустимой инструкции) во время исходящих обращений к ИИ. На таких устройствах используйте обычный образ latest. Актуальные подробности – в руководстве Устранение неполадок в приложении Marinara Engine.
Podman
Podman запускает те же образы. В большинстве команд достаточно заменить docker на podman.
podman compose up -dЧтобы запустить один контейнер без Compose:
podman run -d \
-p 127.0.0.1:7860:7860 \
-v marinara-data:/app/data \
ghcr.io/pasta-devs/marinara-engine:latestКоманде podman compose нужен вспомогательный пакет podman-compose. Установите его одной из этих команд:
sudo dnf install podman-compose
sudo apt install podman-compose
pip install podman-composeПервая строка – для Fedora, вторая – для Debian или Ubuntu, а третья работает везде, где есть pip.
Самостоятельная сборка образа
Чтобы собрать образ из исходного кода, а не скачивать его:
docker build -t marinara-engine .
docker run -d -p 127.0.0.1:7860:7860 -v marinara-data:/app/data marinara-engineЧтобы собрать образ lite, используйте файл сборки lite:
docker build -f Dockerfile.lite -t marinara-engine:lite .Устранение неполадок
Страница не открывается или порт уже занят. См. решение с портом в разделе Запуск Marinara.
Marinara не может записывать файлы или появляются ошибки доступа. При каждом запуске контейнер исправляет владельца папки. На некоторых файловых системах хоста это исправление не срабатывает, а при MARINARA_SKIP_DATA_CHOWN=true оно пропускается. Если ошибки не проходят, используйте стандартный том marinara-data. Это самый надежный вариант.
Образ lite падает на Raspberry Pi 4. Используйте обычный образ latest.
Если нужна дополнительная помощь, читайте руководство Устранение неполадок в приложении Marinara Engine.
Смежные руководства
- Настройки сервера: справочник
- Удаленный доступ: вход и список разрешенных адресов
- Устранение неполадок в приложении Marinara Engine