Развертывание ArchiveBox: архивирование веб‑страниц
Пошаговая инструкция по развёртыванию ArchiveBox в Docker. Сохраняйте ссылки, страницы, закладки и организуйте личную библиотеку интернет-контента.
Установка Docker и Docker Compose
Обновите системные пакеты и установите Docker и Docker Compose для управления контейнерами.
sudo apt update
sudo apt install docker.io docker-compose -y
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
# Перелогиньтесь после выполнения команды usermodСоздание директории и файла docker-compose.yml
Создайте папку для хранения данных и конфигурационный файл Docker Compose.
mkdir -p ~/archivebox && cd ~/archivebox
# Создайте файл docker-compose.yml с содержимым нижеСодержимое docker-compose.yml
Создайте файл docker-compose.yml с настройками контейнера. Замените 'your_secret_key_here' на сгенерированную строку (мин. 32 символа).
version: '3.8'
services:
archivebox:
image: archivebox/archivebox:latest
container_name: archivebox
ports:
- "8000:8000"
volumes:
- ./data:/data
environment:
- ALLOWED_HOSTS=*
- SECRET_KEY=your_secret_key_here
restart: unless-stopped
deploy:
resources:
limits:
memory: 2GЗапуск контейнера
Запустите контейнер ArchiveBox в фоновом режиме и проверьте его статус.
docker-compose up -d
docker psИнициализация ArchiveBox
Войдите в контейнер и выполните инициализацию системы архивации.
docker exec -it archivebox bash
archivebox init
exitСоздание администратора
Сгенерируйте учетные данные для доступа к веб-интерфейсу.
docker exec -it archivebox archivebox manage createsuperuserДобавление первой ссылки
Добавьте ссылку через командную строку или веб-интерфейс для проверки работы системы.
docker exec -it archivebox archivebox add "https://example.com"Доступ к веб-интерфейсу
Откройте браузер и перейдите по адресу сервера, используя порт 8000.
http://localhost:8000Руководство: Как развернуть собственный сервер Archiving — ArchiveBox — для архивации веб-страниц, страниц из браузера, закладок и Pocket
Введение
Зачем архивировать веб-контент?
Интернет динамичен: страницы меняются, исчезают или блокируются. Архивация веб-контента позволяет сохранить копии для личного использования, исследования, избежания потери информации. Это важно для студентов, исследователей, журналистов и всех, кто хочет сохранить важные материалы. Архивирование помогает предотвратить потерю данных из-за "битых" ссылок или удаления контента.
Архивирование как услуга vs. самопроверка (самохостинг)
Существуют платные и бесплатные сервисы архивации (например, Wayback Machine, но они ограничены в частоте запросов и приватности). Самохостинг (самопроверка) дает полный контроль: данные хранятся на вашем сервере, обеспечивается конфиденциальность, нет ограничений на объем и частоту архивирования. ArchiveBox — это открытая альтернатива для самостоятельного развертывания.
Представление ArchiveBox
ArchiveBox — это мощный инструмент для архивации веб-страниц с открытым исходным кодом. Он поддерживает различные форматы: HTML, PDF, скриншоты, архивные копии (WARC). ArchiveBox позволяет импортировать ссылки из множества источников, включая экспорты из браузеров, Pocket, и работа через командную строку или веб-интерфейс. Ключевые возможности: автоматизация, поиск по метаданным, обновление архивов и простое управление.
Требования и подготовка окружения
Минимальные требования к серверу
- Процессор: 2+ ядра (ARM или x86)
- Оперативная память: 2+ GB (рекомендуется 4 GB для больших архивов)
- Хранилище: 10+ GB (рекомендуется 50+ GB для архивирования множества страниц; зависит от объема контента)
- Операционная система: Linux (Ubuntu/Debian, CentOS, или дистрибутивы на базе Debian для Docker)
- Сеть: Стабильный интернет (желателен статический IP или домен для веб-интерфейса, если требуется доступ извне)
- Дополнительно: Python 3.8+ (для ручной установки), Docker (для рекомендуемого способа)
Подготовка окружения
-
Обновите систему:
sudo apt update && sudo apt upgrade -y # Для Debian/UbuntuДля CentOS/RHEL:
sudo yum update -y. -
Установите зависимости:
- Для Docker:
sudo apt install docker.io docker-compose -y(Debian/Ubuntu). - Для ручной установки:
sudo apt install python3 python3-pip python3-venv git -y.
- Для Docker:
-
Проверьте доступность портов: ArchiveBox использует порт 8000 для веб-интерфейса по умолчанию. Убедитесь, что он свободен (если развертываете локально, это не критично).
-
Создайте пользователя для ArchiveBox (опционально, но рекомендуется для безопасности):
sudo adduser archivebox --disabled-password --gecos "" sudo usermod -aG sudo archivebox sudo su - archivebox
Варианты установки
ArchiveBox предлагает два основных способа: Docker (рекомендуемый) и ручная установка на сервер. Docker проще, изолирован и обновляется легче. Ручная установка подходит для продвинутых пользователей, желающих интегрировать систему с существующим окружением.
Развертывание с помощью Docker (рекомендуемый способ)
Шаг 1: Установите Docker и Docker Compose
Если Docker еще не установлен:
# Для Debian/Ubuntu
sudo apt update
sudo apt install docker.io docker-compose -y
sudo systemctl start docker
sudo systemctl enable docker
# Добавьте текущего пользователя в группу docker (чтобы не использовать sudo)
sudo usermod -aG docker $USER
# Перелогиньтесь
exit
Проверьте: docker --version и docker-compose --version.
Шаг 2: Создайте директорию для ArchiveBox
mkdir -p ~/archivebox && cd ~/archivebox
Шаг 3: Создайте файл docker-compose.yml
Создайте файл docker-compose.yml с содержимым:
version: '3.8'
services:
archivebox:
image: archivebox/archivebox:latest
container_name: archivebox
ports:
- "8000:8000"
volumes:
- ./data:/data
environment:
- ALLOWED_HOSTS=*
- SECRET_KEY=your_secret_key_here # Замените на случайную строку (min 32 символов)
restart: unless-stopped
# Опционально: добавьте ограничения ресурсов
deploy:
resources:
limits:
memory: 2G
./data:/data: монтирует папкуdataна хосте в контейнер для сохранения архивов.SECRET_KEY: сгенерируйте с помощьюopenssl rand -hex 32и вставьте.ALLOWED_HOSTS=*: разрешает доступ с любых хостов (для продакшена ограничьте конкретными IP).
Шаг 4: Запустите контейнер
docker-compose up -d
Проверьте статус: docker ps. Если все ок, контейнер будет работать в фоне.
Шаг 5: Первичная инициализация
Войдите в контейнер для инициализации:
docker exec -it archivebox bash
archivebox init
Выход: exit.
Шаг 6: Получите токен администратора
Сгенерируйте токен для веб-интерфейса:
docker exec -it archivebox archivebox manage createsuperuser
Следуйте инструкциям (логин, пароль). Токен можно также получить через archivebox token после входа.
Шаг 7: Проверка доступа
Откройте в браузере: http://localhost:8000 (или IP сервера). Войдите с созданным токеном или логином/паролем.
Ручная установка на сервер (Linux)
Шаг 1: Установите Python и зависимости
sudo apt update && sudo apt install python3 python3-pip python3-venv git -y
Шаг 2: Создайте виртуальное окружение
python3 -m venv ~/archivebox/venv
source ~/archivebox/venv/bin/activate
Шаг 3: Установите ArchiveBox
pip install archivebox
Проверьте: archivebox --version.
Шаг 4: Создайте директорию и инициализируйте
mkdir -p ~/archivebox/data
cd ~/archivebox/data
archivebox init
Шаг 5: Настройте переменные окружения
Добавьте в ~/.bashrc:
export SECRET_KEY=$(openssl rand -hex 32)
export ALLOWED_HOSTS=*
Примените: source ~/.bashrc.
Шаг 6: Запуск веб-сервера
archivebox server --port 8000
Для фонового запуска используйте screen или systemd (пример службы systemd ниже).
Шаг 7: Создайте суперпользователя
В отдельном терминале:
archivebox manage createsuperuser
Следуйте инструкциям для создания логина/пароля.
Базовая конфигурация и запуск
Конфигурация ArchiveBox
Конфигурационный файл находится в ~/.config/archivebox.conf или ./data/ArchiveBox.conf. Пример настроек:
SECRET_KEY=your_secret_key_here
OUTPUT_DIR=./data
TIMEZONE=Europe/Moscow
USE_COLORS=True
Для Docker: измените через переменные окружения в docker-compose.yml.
Запуск сервисов
- Docker:
docker-compose up -d(уже запущен). - Ручная установка:
- Локально:
archivebox server --port 8000. - Как служба (systemd): создайте файл
/etc/systemd/system/archivebox.service:
Запустите:[Unit] Description=ArchiveBox Server After=network.target [Service] User=archivebox WorkingDirectory=/home/archivebox/archivebox/data ExecStart=/home/archivebox/archivebox/venv/bin/archivebox server --port 8000 Restart=always [Install] WantedBy=multi-user.targetsudo systemctl enable --now archivebox.
- Локально:
Использование: добавление ссылок
Через командную строку
- Войдите в контейнер или активируйте venv.
- Добавьте ссылки:
Поддерживаемые форматы: просто URL, JSON (экспорты), текстовые файлы со ссылками.archivebox add "https://example.com" archivebox add --depth=1 "https://example.com" # с дочерними ссылками
Через веб-интерфейс
- Откройте
http://localhost:8000. - Нажмите "Добавить" (Add) в меню.
- Вставьте ссылки или загрузите файл (например,
.htmlэкспорта из браузера).
Импорт из внешних источников
- Pocket: Экспортируйте закладки из Pocket в формате HTML или JSON, затем добавьте через
archivebox add --import-file=export.json. - Браузерные экспорты: Chrome/Edge экспортируют в
.html; Firefox — в.json. Используйтеarchivebox add --import-file=export.html.
Интеграция с браузером (расширения, экспорты)
Расширения для браузера
- Chrome/Edge: Установите расширение "SingleFile" или "ArchiveBox Extension" (если доступно) или используйте "Save to ArchiveBox" (доступно в Chrome Web Store, настройте URL сервера).
- Firefox: Аналогичные расширения, например, "MarkDownload" для экспорта в Markdown, затем добавляйте в ArchiveBox.
- Настройка: В настройках расширения укажите ваш URL:
http://server_ip:8000/add(API ArchiveBox).
Ручные экспорты
- В Chrome: Настройки → Экспорт → Закладки → Сохраните как HTML.
- В Firefox: История → Показать все историю → Экспорт → JSON.
- Загрузите файл на сервер и выполните
archivebox add --import-file=export.html.
Дополнительные возможности (поиск, метаданные, обновление)
Поиск и метаданные
- Поиск через CLI:
archivebox list --search="ключевое слово". - Веб-интерфейс: Вкладка "Search" — полнотекстовый поиск по архивам, включая извлеченный текст и метаданные (дата, автор, теги).
- Метаданные: Каждая запись содержит JSON с информацией: URL, дата архивации, размер, хеш. Доступ через
archivebox info <ID>.
Обновление архивов
Периодически обновляйте архивы, чтобы отразить изменения:
archivebox update --all
Для Docker: docker exec archivebox archivebox update --all. Настройте cron для автоматизации:
# Добавьте в crontab (crontab -e)
0 2 * * * docker exec archivebox archivebox update --all # Ежедневно в 2:00
Управление (капс, поиск, статистика)
Капс (ограничение ресурсов)
Используйте --size или настройки Docker:
archivebox add --size=50M https://example.com # Ограничение размера архива
В Docker: добавьте mem_limit: 1G в docker-compose.yml под секцией deploy.
Поиск
- CLI:
archivebox list --search="python" --format=json. - Веб: Используйте поиск в интерфейсе, поддерживает регулярные выражения.
Статистика
archivebox stats
Выведет: количество записей, общий размер, даты архивирования. В веб-интерфейсе — дашборд с графиками.
Бекап и безопасность
Бекап
- Файловый: Архивируйте папку
data(Docker) или~/archivebox/data(ручная установка):tar -czf archivebox_backup_$(date +%Y%m%d).tar.gz ~/archivebox/data - Регулярно: Настройте cron для еженедельного бекапа.
- Cloud: Используйте
rcloneдля синхронизации с S3/Google Drive.
Безопасность
- HTTPS: Для доступа извне настройте Nginx с Let's Encrypt:
Настройте прокси на порт 8000.sudo apt install nginx certbot python3-certbot-nginx -y sudo certbot --nginx -d yourdomain.com - Аутентификация: Используйте сильные пароли, токены. Отключите
ALLOWED_HOSTS=*в продакшене. - Файрвол:
sudo ufw allow 8000/tcp(и 80/443 для HTTPS). - Данные: Храните архивы на зашифрованном диске (LUKS). Регулярно обновляйте ArchiveBox и систему.
Альтернативные решения
Сuder
- Описание: Легковесный архиватор, фокус на PDF и скриншоты. Простой CLI, без веб-интерфейса.
- Когда использовать: Для минимальных требований без потребности в поиске или групповом управлении.
- Установка:
pip install suder. Пример:suder --url https://example.com --output ./.
Kottle
- Описание: Инструмент для архивации из браузера с поддержкой расширений, интегрируется с Pocket и Notion.
- Когда использовать: Если нужна тесная интеграция с браузером и другими сервисами.
- Установка: Доступен как расширение для Chrome/Firefox или CLI. Установка:
pip install kottle, затемkottle init.
Сравнение: ArchiveBox — самый полный для самостоятельного сервера; Suder — для простых задач; Kottle — для интеграции с браузером.
Частые проблемы и их решения
Проблема: Ошибка подключения к базе данных
Причина: Неправильный путь к хранилищу или отсутствие прав. Решение:
- Docker: Проверьте монтирование volumes (
docker logs archivebox). - Ручная установка: Убедитесь, что
OUTPUT_DIRуказан правильно, и права на папку:chmod -R 755 ~/archivebox/data.
Проблема: Сайты не архивируются (ошибки загрузки)
Причина: Блокировка ботами, отсутствие зависимостей.
Решение: Установите playwright для JS-сайтов:
pip install playwright
playwright install chromium
В Docker: добавьте в docker-compose.yml image: archivebox/archivebox:latest и пересоберите.
Проблема: Медленная работа при большом объеме
Причина: Недостаток ресурсов или неоптимизированная база.
Решение: Увеличьте RAM/CPU. Для Docker: docker-compose down && docker-compose up -d --scale archivebox=1 (если нужно). Очистите кэш: archivebox cleanup.
Проблема: Доступ к веб-интерфейсу только с localhost
Причина: Ограничение хостов.
Решение: Измените ALLOWED_HOSTS на конкретный IP или домен. Для Docker: перестройте с новыми переменными.
Проблема: Обновление ArchiveBox
Решение (Docker): docker-compose pull && docker-compose up -d. (Ручная): pip install --upgrade archivebox.
Заключение и призыв к действию
ArchiveBox — надежное решение для самопроведенной архивации веб-контента, обеспечивающее полный контроль и гибкость. Начните с Docker для быстрого старта: разверните сервер, добавьте первые ссылки и интегрируйте с браузером. Регулярно делайте бекапы и настраивайте безопасность. Если вы исследователь, журналист или просто цените информацию — собственный сервер архивации станет неотъемлемым инструментом. Попробуйте развернуть ArchiveBox уже сегодня и защитите свои данные от непредсказуемого интернета! Для получения дополнительной помощи посетите официальный репозиторий на GitHub (archivebox/archivebox).