Индекс журналаDockup / заметка с места
Note / self-host-shiori

Как разместить Shiori самостоятельно в 2026 году: архивы, аккаунты и постоянное хранилище

Практическое руководство по самостоятельному размещению Shiori: Docker, порты, постоянные данные, TLS, безопасность, резервные копии и проблемы, препятствующие использованию в production. Пошаговая инструкция.

Неудачное развёртывание Shiori не всегда приводит к падению сервиса. Страница входа может открываться, а архивация — не работать из-за неправильных зависимостей Chromium или разрешений файловой системы. Вместо этого начните с end-to-end проверки: сохраните закладку с архивированным содержимым, найдите её, измените теги и убедитесь, что архив остаётся доступным после изменения исходной страницы.

Такая проверка соответствует заявленному назначению Shiori — менеджера закладок, который архивирует содержимое страниц. Кроме того, она раньше, чем uptime-проверка, выявляет отсутствующие зависимости, неверные предположения о proxy и эфемерные данные.

Определите границу выполнения Shiori

Состояние процесса и состояние продукта для Shiori — разные вещи. Порт 8080 может отвечать, пока пользовательский сценарий по-прежнему не работает. Внешние требования Shiori — доступный для записи volume с данными и исходящий доступ к архивируемым страницам. Проверяйте исходящие DNS, TLS и поведение провайдера, не публикуя ещё один входящий сервис.

Выполняйте эту проверку готовности после существенных изменений конфигурации: сохраните закладку с архивированным содержимым, найдите её, измените теги и убедитесь, что архив остаётся доступным после изменения исходной страницы. Не включайте дорогостоящие внешние проверки в liveness probes, чтобы сбой у провайдера не вызвал цикл перезапусков. При работе с capacity учитывайте захват страниц через browser, размер архива, thumbnails и исходящие запросы — это точнее отражает реальные нагрузки Shiori, чем запросы к страницам.

Восстановите Shiori на пустом хосте

До создания первой реальной записи перечислите всё состояние: database, содержимое архивированных страниц, thumbnails и конфигурацию. Подключите /shiori до bootstrap, запишите безвредные тестовые данные и замените container, чтобы доказать фактическую persistence этого пути. Проверьте mount: запишите безвредные данные, замените Shiori и прочитайте их обратно.

Snapshots удобны для быстрого rollback, но при исчезновении хоста или volume нужна независимая backup-копия. Выполните восстановление в пустом окружении с pinned image и убедитесь, что закладки, теги, файлы архивов и аккаунты восстановились, а недоступная исходная ссылка по-прежнему открывает сохранённое содержимое. Используйте persistent volumes и snapshots, чтобы разделять эти два механизма восстановления.

Решения по безопасности, специфичные для Shiori

Специфический для приложения риск безопасности — оставить неизменным initial account на публичном instance. Операционное решение: заменить initial account, ограничить public sharing и считать архивированные private URL конфиденциальным содержимым. Завершите bootstrap через ограниченный route и сразу после этого удалите временный доступ для настройки.

SHIORI_DIR управляет поведением, а не конфиденциальностью; проверьте его тип и значение, а настоящие credentials Shiori храните отдельно. Предоставьте процессу Shiori только документированные mounts и routes к зависимостям; не давайте доступ к host root и Docker socket. Записывайте неудачные попытки аутентификации и ошибки конфигурации, но удаляйте из логов tokens, connection strings и пользовательское содержимое.

Приёмочное тестирование Shiori перед production

Release candidate для Shiori получает production-трафик только после прохождения фиксированного сценария: сохраните закладку с архивированным содержимым, найдите её, измените теги и убедитесь, что архив остаётся доступным после изменения исходной страницы. Зафиксируйте image digest, итоговую конфигурацию без секретов, public origin и timestamps этого сценария. Тестовые данные должны быть disposable, но достаточно реалистичными, чтобы проходить тот же путь, что и пользовательские данные.

Запустите этот сценарий после замены runtime, а затем пересоберите сервис из database, содержимого архивированных страниц, thumbnails и конфигурации. Восстановление считается успешным, если закладки, теги, файлы архивов и аккаунты вернулись, а недоступная исходная ссылка по-прежнему открывает сохранённое содержимое. Сравните показатели ресурсов для захвата страниц через browser, размера архива, thumbnails и исходящих запросов с предыдущим release и до promotion разберитесь с существенными отклонениями.

Наконец, выполните контролируемый сбой: временно запретите тестовый путь, используемый writable data volume, и исходящий доступ к архивируемым страницам. Убедитесь, что Shiori объясняет причину сбоя, не повреждает существующее состояние и возобновляет работу после восстановления корректного условия. Сохраните редактированный фрагмент лога и время восстановления. Вместе эти проверки охватывают поведение, durability и operability, а не только uptime процесса.

Запустите Shiori с наблюдаемыми настройками по умолчанию

Сделайте initial invocation Shiori достаточно воспроизводимым, чтобы его можно было проверить в pull request.

docker run -d \
  --name shiori \
  --restart unless-stopped \
  -p 127.0.0.1:8080:8080 \
  -v shiori-data:/shiori \
  -e SHIORI_DIR=/shiori \
  ghcr.io/go-shiori/shiori:latest

Не полагайтесь на latest после появления реальных данных. Зафиксируйте рабочий digest, пользователя container и владельца mount. Проследите application log через полный тест — сохраните закладку с архивированным содержимым, найдите её, измените теги и убедитесь, что архив остаётся доступным после изменения исходной страницы, — и отметьте все migrations до того, как направлять route на production-трафик.

Домены, proxy headers и порт 8080

Считайте внешний URL Shiori конфигурацией, которая должна сохраняться между redeploy. Сначала направьте UI и API через стабильный HTTPS origin, затем направьте hostname на порт 8080, сохранив исходные host и scheme.

Checklist доступности deployment поможет доказать, что запросы попадают в container. После этого известную проблему — архивация не работает из-за неправильных зависимостей Chromium или разрешений файловой системы — следует искать в Shiori, его состоянии или workload, а не в автоматизации сертификатов.

Обновляйте Shiori без догадок

Первый полезный operational metric для Shiori — возможность сохранить закладку с архивированным содержимым, найти её, изменить теги и убедиться, что архив остаётся доступным после изменения исходной страницы. Дополните его сигналами saturation для захвата страниц через browser, размера архива, thumbnails и исходящих запросов. Probe, проверяющий только процесс, не должен вызывать дорогостоящие зависимости или перезапускать container из-за кратковременной недоступности upstream.

Считайте upgrade изменением данных, поскольку database migrations Shiori и зависимости для захвата страниц могут менять поведение архива. Фиксируйте версии, репетируйте обновление на восстановленном состоянии и храните предыдущий image, пока rollback остаётся возможным. Если архивация не работает из-за неправильных зависимостей Chromium или разрешений файловой системы, сохраните логи до перезапуска: обычно именно в них содержится сообщение о причине.

Что Dockup следует автоматизировать для Shiori

Platform layer для Shiori включает порт 8080, ingress, TLS, runtime-конфигурацию, storage и доступность зависимостей. Dockup может воспроизводить эти компоненты для собственной инфраструктуры или сервера, который подключает клиент.

Затем оператор завершает product layer: направляет UI и API через стабильный HTTPS origin; применяет это правило доступа — заменяет initial account, ограничивает public sharing и считает архивированные private URL конфиденциальным содержимым; а также запускает сценарий «сохранить закладку с архивированным содержимым, найти её, изменить теги и убедиться, что архив остаётся доступным после изменения исходной страницы». Запись результатов этого теста вместе с deployment помогает не путать автоматизированное provisioning с готовностью приложения.

Часто задаваемые вопросы

Что требуется Shiori для deployment в production?

Направьте container Shiori на порту 8080 через один HTTPS origin. Внешние требования для доставки — writable data volume и исходящий доступ к архивируемым страницам. Не объявляйте Shiori готовым, пока не сможете сохранить закладку с архивированным содержимым, найти её, изменить теги и убедиться, что архив остаётся доступным после изменения исходной страницы.

Какие данные Shiori нужно включить в backup?

Сохраняйте /shiori и включайте database, содержимое архивированных страниц, thumbnails и конфигурацию в один recovery manifest. Чистое восстановление Shiori считается успешным только тогда, когда закладки, теги, файлы архивов и аккаунты вернулись, а недоступная исходная ссылка по-прежнему открывает сохранённое содержимое.

Требуется ли Shiori HTTPS за reverse proxy?

Используйте HTTPS для публичного origin Shiori, а порт 8080 оставьте во внутреннем route. Корректно примените настройку Shiori: направьте UI и API через стабильный HTTPS origin. Для Shiori HTTPS защищает credentials и пользовательское содержимое при передаче и обеспечивает согласованное поведение клиентов, зависящее от origin.

Как тестировать upgrade Shiori?

Восстановите текущее состояние Shiori в изолированном deployment, примените candidate version и повторите приёмочный сценарий. Уделите особое внимание тому, что database migrations Shiori и зависимости для захвата страниц могут менять поведение архива. Храните предыдущий image Shiori, пока не будут понятны границы data migration и rollback.