Проверен полностью13 032

Закладки и архивирование

Wallabag

Wallabag хранит читаемые копии статей с тегами, избранным, прогрессом чтения и аннотациями. Библиотека доступна в браузере и мобильных клиентах. Рецепт использует официальный образ и SQLite, закрывает регистрацию и меняет стандартный пароль до запуска веб-сервера.

Вместо Raindrop.ioMITВерсия 2.6.15

Обзор

Wallabag сохраняет читаемые копии статей на потом. Теги, избранное, прогресс чтения и аннотации помогают превратить очередь чтения в полезный справочник. Официальные клиенты Android и iOS подключаются к собственному серверу; есть расширения браузера, а отдельное настольное приложение не входит в комплект.

Для общей библиотеки закладок сравните коллекции и архивирование с Linkwarden и Karakeep. Wallabag сосредоточен на чтении. Сохранение URL не гарантирует извлечение страницы за платным доступом, входом, полностью JavaScript-сайта или любой разметки издателя.

Рецепт запускает Wallabag 2.6.15 с SQLite и отдельными томами для базы/данных и кешированных изображений. Кратковременный инициализатор создаёт базу, применяет миграции и задаёт пароль администратора до запуска веб-сервера. Регистрация остаётся закрытой. Планируйте одно ядро, минимум 512 МБ RAM (рекомендуется 1 ГБ) и 2 ГБ диска плюс материалы; это ориентиры, а не результат нагрузочного теста.

Бесплатная self-hosted сборка поддерживает пароль и встроенную аутентификацию вторым фактором. TOTP, отправка почты, мобильные клиенты и внешние reverse proxy здесь не настроены и не проверены. Приложение предоставляет OAuth2 API; это не означает вход через OIDC или SAML. Вход по доверенному заголовку не настроен.

Лицензия приложения и рецепта — MIT. Карточка остаётся экспериментальной до появления более широкого опыта эксплуатации. Надёжный уровень не поддерживается: в этой конфигурации одного сервера с SQLite нет отдельной базы, мониторинга и лимитов ресурсов.

Оценка безопасности

В проверенной конфигурации шаблонные данные отклоняются, стандартный пароль upstream меняется до приёма HTTP-запросов, регистрация закрыта, веб-порт привязан к loopback. Развёртывание задаёт пароль администратора wallabag из .env; изменение через интерфейс заменяется при инициализации. Допускайте к добавлению статей доверенных пользователей и ограничьте исходящий трафик. Данные и копии не защищены сквозным шифрованием. Этот обзор конфигурации не является аудитом безопасности.

Источники: проект и клиенты, официальная документация, Docker-образ и инициализация, релиз 2.6.15, OAuth API, лицензия.

Отслеживание обновлений

Это сохранённые результаты отдельных проверок, а не данные в реальном времени. Неизвестный статус означает, что проверка ещё не выполнялась.

Новые релизы

Сравнение версии рецепта с последним известным релизом upstream. Это номер версии, а не разбор изменений.

Актуальная версия 2.6.1529 окт. 2026 г., 15:37 UTC

Несовместимые обновления

Новый major находится сравнением номеров версий. Вердикт о совместимости заносится вручную после чтения release notes и порядка миграции.

Не провереноПроверка не выполнялась

compose.yaml

Изменения upstream Compose относительно проверенного рецепта.

Upstream Compose не отслеживаетсяПроверка не выполнялась

Устаревшие Docker-образы

Проверка закреплённых тегов образов на наличие новых версий.

Не провереноПроверка не выполнялась

От наблюдения к действию

План обновления

Рецепт уже закрепляет последний известный релиз. Ниже показаны сохранённые основания для этой версии.

2.6.152.6.15
  1. Открыть основания релиза

    Открыть релиз на GitHub ↗ Ссылка нужна для ревизии и сама по себе не доказывает совместимость.

  2. Проверить границу версий

    Номера версий не пересекают major-границу совместимости. Вердикт о совместимости не записан.

  3. Подготовить смену тегов образов

    Смена тегов образов сейчас не планируется.

  4. Следовать документированной схеме миграции

    Смена тега и перезапуск. Шаги конкретного релиза всё равно берутся из release notes и инструкции по установке.

  5. Защитить точку отката

    Смена версии сейчас не планируется. Рецепт содержит процедуру backup. Restore проверен.

  6. Проверить обновлённый рецепт

    Точная проверка уровня «Проверен полностью» для этой версии записана 2026-10-29.

Прочитать порядок обновления в инструкции по установке ↓

Характеристики

Безопасность и публикация

Уровни установки

Статус показывает, насколько опубликованный рецепт покрывает требования каждого уровня.

Готово

Для дома

Минимальная конфигурация для локальной сети или доступа через VPN.

  • Один сервер
  • Локальный доступ
  • Минимум компонентов

Рецепт закрывает все требования этого уровня.

Готово

Для VPS

Публичная установка с защищённым доступом и резервными копиями.

  • Домен
  • HTTPS через reverse proxy
  • Backup вне сервера

Рецепт закрывает все требования этого уровня.

Не поддерживается

Надёжная

Конфигурация для предсказуемой эксплуатации и наблюдаемости.

  • Отдельная БД
  • Healthcheck
  • Внешний мониторинг
  • Лимиты CPU и памяти

Нужно добавить вручную: отдельная бд, внешний мониторинг, лимиты cpu и памяти.

Собрать под свой сервер

Генератор конфигурации

Ответьте на пять вопросов и скачайте готовый комплект Wallabag.

Работает локально
01 Есть домен?
02 Какой reverse proxy?
03 Архитектура сервера
04 Где хранить данные?

Укажите абсолютный путь для отдельного диска, например /srv/wallabag.

05 Требуется VPN-доступ?

Комплект готов к сборке

Архив создаётся в браузере. Ответы никуда не отправляются.

Те же файлы одним shell-скриптом, обычными heredoc, чтобы всё читалось до запуска. Скрипт проверяет Docker, архитектуру, память, диск и нужные порты и без --apply ничего не пишет.

Скриншоты

Быстрый запуск

Сначала прочитайте полную инструкцию: в ней описаны доступ извне, backup и расположение данных.

Подготовить настройкиcp .env.example .env
Запуститьdocker compose up -d
Проверить состояниеdocker compose ps

Пошаговая инструкция

Подготовка сервера

Используйте Ubuntu 22.04+ или Debian 12+, Docker Engine и Compose v2.24+. Планируйте одно ядро, минимум 512 МБ RAM (рекомендуется 1 ГБ) и 2 ГБ диска плюс статьи и изображения. Образы ARM64 и ARMv7 существуют, но в этом прогоне не проверялись.

mkdir -p ~/services/wallabag
cd ~/services/wallabag
# Скопируйте сюда все файлы рецепта, включая proxy/ и скрипты.
cp .env.example .env
chmod 600 .env
openssl rand -hex 32
openssl rand -hex 24

Запишите первое значение в WALLABAG_SECRET, второе — в WALLABAG_ADMIN_PASSWORD. Значения должны различаться. Инициализатор отклоняет шаблонный пароль, стандартный пароль upstream и пароли короче 16 символов. Шаблонный секрет приложения также отклоняется. Скрипты подключают .env как доверенную конфигурацию shell; рекомендуемым шестнадцатеричным значениям экранирование не нужно.

Параметр Назначение
WALLABAG_VERSION Точный тег образа, первоначально 2.6.15.
WALLABAG_PORT Порт хоста на loopback, по умолчанию 8087.
WALLABAG_URL Канонический origin браузера, первоначально http://localhost:8087; за прокси задайте внешний HTTPS-origin.
WALLABAG_SECRET Случайный секрет приложения и сессий; сохраняйте вместе с копией.
WALLABAG_ADMIN_PASSWORD Пароль администратора, задаваемый инициализацией. Сохраняйте имя учётной записи wallabag; для смены пароля измените это поле и пересоздайте стек.
WALLABAG_LOCALE Язык интерфейса по умолчанию: en или ru для этих руководств. Личные настройки могут его переопределять.
TZ Часовой пояс ОС контейнера, по умолчанию Etc/UTC; PHP использует UTC для сохраняемых дат.
WALLABAG_BACKUP_DIR Необязательный абсолютный каталог копий; пустое значение использует backups/ рядом с рецептом.

Именованный том data содержит SQLite в /var/www/wallabag/data/db и другие данные приложения. images хранит кешированные изображения в /var/www/wallabag/web/assets/images. Оба тома привязаны к проекту Compose; сохраняйте имя проекта. Конфигурация контейнера и кеш пересоздаются из закреплённого образа и .env.

Запуск и вход

docker compose config --quiet
docker compose pull
docker compose up -d --wait --wait-timeout 600
curl --fail http://127.0.0.1:8087/api/info

Сервис initialize должен успешно завершиться до запуска wallabag. Он выполняет официальную команду миграции, затем меняет стандартный пароль администратора. Опубликованный веб-сервис не принимает стандартные учётные данные upstream ни на одном этапе запуска. Регистрация остаётся закрытой.

На своём компьютере выполните ssh -L 8087:127.0.0.1:8087 user@server, откройте http://localhost:8087 и войдите как wallabag с паролем из .env. Измените email администратора в настройках аккаунта. Не удаляйте и не переименовывайте эту управляемую развёртыванием учётную запись. Изменение пароля через интерфейс заменится при следующей инициализации; меняйте его в .env. Дополнительных пользователей можно создавать официальными средствами администратора/консоли.

SMTP, Redis, RabbitMQ, SSO-провайдер и мобильный клиент не настроены. Встроенный второй фактор TOTP/email требует отдельной настройки; проверьте восстановление доступа до включения. Отправка писем недоступна до настройки SMTP.

VPS

Задайте WALLABAG_URL=https://read.example.com, настройте DNS и HTTPS-прокси, затем пересоздайте стек. Разрешите в firewall только SSH, HTTP и HTTPS. Оставьте порт 8087 на loopback. Шифруйте копии и храните экземпляр вне сервера.

Доверенная локальная сеть

Используйте SSH-туннель или HTTPS-прокси, доступный из доверенной LAN/VPN. Если намеренно публикуете приватный интерфейс, ограничьте его firewall и задайте в WALLABAG_URL точный адрес пользователей. Не открывайте парольный вход по HTTP недоверенной сети.

Домен и HTTPS

Выберите пример прокси на хосте в proxy/. Caddy получает сертификаты; Nginx нужны пути к сертификатам; Traefik — точка входа websecure и resolver letsencrypt. Все примеры направляют запросы на 127.0.0.1:8087. Контейнерному прокси нужны общая сеть и адрес wallabag:80, а не собственный loopback.

Замените пример домена, задайте совпадающий HTTPS WALLABAG_URL и выполните docker compose up -d --wait --wait-timeout 600. Правильно передавайте Host и X-Forwarded-Proto. Пример Nginx допускает запросы до 50 МБ. Проверьте вход и получение статьи через итоговый origin; внешний прокси и выдача сертификата не проверялись в native smoke.

Резервная копия

./backup.sh

Сначала дождитесь окончания инициализации. Скрипт останавливает веб-приложение, архивирует оба полных тома с активными .env и Compose и запускает приложение, только если оно работало. Приватный архив — backups/wallabag-<timestamp>.tar. Копируйте SQLite и WAL вместе при остановленной записи; личный экспорт статей не содержит все учётные записи, OAuth-клиенты и настройки.

Зашифруйте архив и скопируйте вне сервера. В нём приватные статьи, кешированные изображения, аккаунты, токены и управляемый развёртыванием пароль администратора.

Восстановление

Восстановление заменяет оба тома. Используйте доверенный архив и совпадающую версию приложения. На новом хосте скопируйте рецепт и сначала сравните архивные configuration.env и compose.yaml с активной конфигурацией. Архивная конфигурация автоматически не активируется; при инициализации задаётся пароль администратора из активного .env.

docker compose up -d --wait --wait-timeout 600
./restore.sh ./backups/wallabag-TIMESTAMP.tar
curl --fail http://127.0.0.1:8087/api/info

Скрипт проверяет состав архива, создаёт страховочную копию, заменяет полные тома данных/изображений и ждёт healthcheck. При ошибке замены приложение остаётся остановленным. Войдите, откройте приватную статью, проверьте теги и кешированные изображения либо API-доступ мобильного клиента. Smoke-тест amd64 удаляет оба исходных тома перед восстановлением и проверяет OAuth-клиент, статью, теги, отклонение анонимного доступа и маркер в томе изображений.

Обновление

Прочитайте release notes, создайте копию вне сервера и измените WALLABAG_VERSION на проверенный точный тег. Затем:

docker compose pull
docker compose up -d --wait --wait-timeout 600
docker compose logs --tail=100 initialize wallabag

Инициализация применяет миграции до запуска веб-приложения и снова задаёт активный пароль администратора. После обновления проверьте вход, сохранённую статью, теги и API-клиент. Храните копию до обновления. Не используйте latest и не предполагайте, что старый образ прочитает мигрировавшую базу.

Откат

  1. Сохраните архив до обновления и подходящие рецепт и конфигурацию.
  2. Остановите запись: docker compose stop wallabag.
  3. Задайте в .env старую точную версию образа и верните подходящие изменения Compose. Скачайте старый образ.
  4. Выполните docker compose create, не запуская старый инициализатор или приложение на мигрировавшей базе.
  5. Выполните ./restore.sh ./backups/wallabag-BEFORE-UPDATE.tar. Инициализация и приложение запустятся только после замены. Проверьте вход, приватные статьи, теги, изображения и API-доступ.

Страховочная копия читает остановленные тома без запуска старого приложения на новых данных. Восстановление данных не возвращает архивный пароль администратора автоматически: явно сравните активный .env.

Остановка и удаление

docker compose down удаляет контейнеры и сохраняет тома. После проверки зашифрованной внешней копии docker compose down --volumes навсегда удаляет аккаунты, статьи, настройки, OAuth-клиенты и кешированные изображения. Удаление каталога рецепта также удаляет локальные копии и конфигурацию. Не используйте глобальную очистку Docker.

Источники: официальный Docker-образ, документация, консольные команды, OAuth API.

Сообщить о проблеме с рецептом

Рассказать, как прошло на вашем сервере

Откроется предзаполненный issue на GitHub. Нужен аккаунт GitHub; после отправки сообщение будет публичным.

Диагностика

Инициализация завершилась ошибкой, веб-приложение не запустилось

Выполните docker compose ps --all и docker compose logs --tail=200 initialize wallabag. Замените оба шаблонных секрета, задайте пароль администратора не короче 16 символов и сохраняйте имя администратора wallabag. Не обходите инициализатор: он убирает известные учётные данные upstream до запуска HTTP. После исправления .env выполните docker compose up -d --wait --wait-timeout 600.

При ошибке миграции проверьте диск через df -h, RAM через free -m и точную версию образа. Не удаляйте базу ради исправления запуска. Сохраните полную копию до исследования ошибки.

Смена пароля не сохранилась после перезапуска

Инициализатор задаёт WALLABAG_ADMIN_PASSWORD для управляемого развёртыванием администратора. Для смены пароля измените значение в .env и пересоздайте стек. Изменение только через интерфейс будет перезаписано при инициализации. Удаление или переименование этого администратора блокирует инициализацию; восстановите его из подходящей копии или официальными консольными средствами.

Вход перенаправляет на неправильный адрес

Проверьте совпадение WALLABAG_URL с origin браузера и передачу Host и X-Forwarded-Proto прокси. Для первого запуска используйте http://localhost:8087 через SSH-туннель. Не публикуйте полный вывод docker compose config: в нём секреты.

Статья не сохранилась или плохо читается

Платный доступ, аутентификация, полностью JavaScript-страницы, изменения издателя и неподдерживаемая разметка могут мешать извлечению. Проверьте доступность источника, логи приложения и публичную статью. Допускайте доверенных пользователей вместо открытия внутренней сети сервера каждому заданному URL. Если пропадают кешированные изображения, проверьте диск.

Не работает клиент или второй фактор

Создайте OAuth-клиент в настройках API/разработчика и используйте документированный OAuth2-процесс; это не OIDC single sign-on. Токены и секреты клиентов конфиденциальны. Мобильные клиенты, TOTP и SMTP не входят в проверенный сценарий; второй фактор по email не доставит письмо без работающего SMTP. Сохраняйте проверенный способ восстановления доступа до включения.

Ошибка резервного копирования или восстановления

Дождитесь завершения инициализации. Нужны созданные контейнеры и доверенный архив этого рецепта. До восстановления проверьте совпадение версий образов и активных секретов; архивный .env автоматически не активируется. Прерванная замена не означает успешного восстановления. Храните исходный и страховочный архивы до проверки входа, приватных статей, тегов, изображений и API-доступа.

Источники: документация, Docker-образ, консольные команды, OAuth.

Официальные источники

Последний релиз: 2026-10-28 · GitHub Stars: 13 032 · данные проверены 29 окт. 2026 г., 15:37 UTC

Отказ от ответственности

Fossary — независимый информационный каталог, не связанный с разработчиками представленных приложений. Мы собираем сведения из открытых источников и проверяем опубликованные рецепты, но не разрабатываем, не распространяем и не контролируем эти приложения.

Публикация карточки или статус проверки не являются требованием, навязыванием либо персональной рекомендацией использовать приложение. Вы самостоятельно решаете, подходит ли оно вам, и используете его на свой риск. Мы не гарантируем безопасность, доступность или пригодность приложения и, в пределах, допускаемых законом, не отвечаем за вызванные им потери или ущерб. До установки проверьте лицензию, настройки безопасности, обработку данных и резервное копирование.