Установка Paperwork на Ubuntu 18.04
TL;DR
Paperwork — бесплатный открытый менеджер документов для самохостинга. Эта инструкция шаг за шагом показывает, как развернуть Paperwork на Ubuntu 18.04: установить LAMP (Apache, MariaDB, PHP), Node.js, расширение mcrypt, Composer, выполнить миграции, собрать фронтенд и настроить виртуальный хост Apache. В конце — советы по отладке, безопасности и альтернативы.
- Сервер с Ubuntu 18.04.
- Пользователь с sudo (не root).
- Статический IP, например 192.168.0.235 (локальная сеть) — настройте по необходимости.
Важно: Paperwork — старый проект, и его совместимость с новыми версиями PHP/Ubuntu ограничена. Если вы планируете продакшн, рассмотрите контейнеризацию или альтернативы.
Что такое Paperwork
Paperwork — это локальный менеджер сканированных документов и PDF с поддержкой OCR, меток, поиска и быстрых правок. Ключевые возможности: автоматическое определение ориентации страницы, OCR, теги/метки, подсказки ключевых слов и поиск.
Краткое определение: OCR — оптическое распознавание текста, которое превращает изображение в текст для поиска и индексации.
План установки (мини-методология)
- Подготовить сервер и пользователя.
- Установить LAMP (Apache, MariaDB, PHP 7.2 и зависимости).
- Установить Node.js и сборщики фронтенда.
- Установить PHP-расширение mcrypt через PECL.
- Создать базу данных и пользователя MariaDB.
- Скачать Paperwork, установить Composer-зависимости, выполнить миграции.
- Собрать фронтенд (npm, bower, gulp).
- Настроить права и виртуальный хост Apache.
- Открыть веб-интерфейс и завершить установку.
Установка LAMP
Обновите пакеты и установите Apache, MariaDB, PHP 7.2 и необходимые расширения. Выполните эти команды на сервере:
sudo apt-get update -y
sudo apt-get install apache2 mariadb-server php7.2 libapache2-mod-php7.2 php7.2-cli php7.2-gd php7.2-mysql php7.2-curl php7.2-xml php7.2-mbstring php-pear php7.2-zip php-dev git wget libmcrypt-dev php7.2-gd unzip -yПримечание: пакет php7.2 может быть недоступен в более новых релизах. Для Ubuntu 18.04 это стандартный вариант.
Установка Node.js
По умолчанию в репозитории Ubuntu 18.04 может не быть нужной версии Node.js. Добавьте репозиторий NodeSource и установите Node.js 10:
curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
sudo apt-get install nodejs -yУстановка PHP mcrypt
Paperwork требует mcrypt (устаревшее расширение). Установим через PECL:
sudo pecl channel-update pecl.php.net
sudo pecl install mcrypt-1.0.1При запросе подтверждения просто нажмите Enter.
Добавьте расширение mcrypt в конфигурацию PHP CLI и Apache:
sudo sed -i.bak '927iextension=mcrypt.so' /etc/php/7.2/cli/php.ini
sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/cli/conf.d/mcrypt.ini"
sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/apache2/conf.d/mcrypt.ini"Проверьте, что mcrypt загружен:
sudo php -i | grep "mcrypt"Ожидаемый вывод:
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no valueВажно: сообщения вида “Module ‘mcrypt’ already loaded” при запуске PHP можно игнорировать, но это указывает на то, что расширение подключено более одного раза. Убедитесь, что в php.ini и conf.d не дублируются записи.
Перезапустите Apache и MariaDB и включите автозапуск:
sudo systemctl restart apache2
sudo systemctl restart mariadb
sudo systemctl enable apache2
sudo systemctl enable mariadbКонфигурация базы данных
Сначала запустите скрипт безопасности MariaDB:
sudo mysql_secure_installationОтветы (пример):
Enter current password for root (enter for none):
Set root password? [Y/n]: N
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: YЗатем войдите в MariaDB и создайте базу данных и пользователя для Paperwork:
mysql -u root -p
MariaDB [(none)]> CREATE DATABASE paperwork DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON paperwork.* TO 'paperwork'@'localhost' IDENTIFIED BY 'paperwork' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXITЗамените пароль и имя пользователя на более безопасные значения в реальной среде.
Скачивание и установка Paperwork
Скачайте исходники в /var/www/html:
cd /var/www/html
git clone -b 1 https://github.com/twostairs/paperwork.gitВременно подавите сообщение об устаревшем вызове mcrypt в конфигурации приложения:
cd paperwork/frontend/
sudo sed -i.bak '3ierror_reporting(E_ALL ^ E_DEPRECATED);' app/config/app.phpУстановка Composer и PHP-зависимостей
Установите Composer и зависимости проекта:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo composer installЗапуск миграций для заполнения схемы базы данных:
sudo php artisan migrateПример частичного вывода:
PHP Warning: Module 'mcrypt' already loaded in Unknown on line 0
**************************************
* Application In Production! *
**************************************
Do you really wish to run this command? y
Migration table created successfully.
Migrated: 2014_07_22_194050_initialize
... (список миграций)Подтвердите выполнение миграций вводом “y”.
Установка npm, bower и сборка фронтенда
Установите глобально gulp и bower, затем локальные зависимости и соберите ресурсы:
sudo npm install -g gulp bower
sudo npm install
sudo bower install --allow-root
sudo gulpВнимание: при установке npm/bower могут появиться предупреждения. Обычно их можно игнорировать, если сборка проходит успешно.
Права доступа
Дайте правильные права каталогу приложения:
sudo chown www-data:www-data -R /var/www/html/paperwork
sudo chmod -R 755 /var/www/html/paperworkЕсли вы используете SELinux (не типично для Ubuntu), дополнительно настройте контексты.
Конфигурация Apache для Paperwork
Создайте виртуальный хост Apache:
sudo nano /etc/apache2/sites-available/paperwork.confДобавьте в файл следующие строки (сохраните и закройте):
ServerAdmin webmaster@example.com
DocumentRoot /var/www/html/paperwork/frontend/public
ServerName example.com
Options Indexes FollowSymlinks
AllowOverride All
Require all granted
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Включите сайт и mod_rewrite, затем перезапустите Apache:
sudo a2ensite paperwork
sudo a2enmod rewrite
sudo systemctl restart apache2Замените ServerName и ServerAdmin на реальные значения (например, IP или домен).
Доступ к веб-интерфейсу
Откройте в браузере http://example.com (замените на ваш домен/IP). Вы увидите страницу приветствия Paperwork.

На странице установщика нажмите “Next” и следуйте шагам. Важные экраны:

Проверьте наличие зависимостей и продолжите.

Введите параметры базы данных (имя, логин, пароль, порт).

Настройте приложение и создайте первую учётную запись администратора.


После завершения установки вы попадёте на страницу входа:

И далее — на панель управления:

Отладка и распространённые проблемы (когда это не работает)
- Ошибка “Application In Production” при миграциях: убедитесь, что вы действительно запускаете миграции в нужной среде. Подтвердите вводом “y”.
- Ошибки с mcrypt: проверьте, что файл mcrypt.so существует по пути /usr/lib/php/20170718/mcrypt.so и что запись extension не продублирована в нескольких ini-файлах.
- 500 Internal Server Error при обращении к фронтенду: проверьте права (www-data) и логи Apache (/var/log/apache2/error.log).
- 404 при загрузке ресурсов фронтенда: убедитесь, что gulp успешно собрал ассеты и что DocumentRoot указывает на frontend/public.
- Проблемы с Bower: если bower не устанавливает пакеты, попробуйте запуск без –allow-root под обычным пользователем разработчика и затем поменяйте права.
Полезные команды для диагностики:
sudo tail -n 200 /var/log/apache2/error.log
sudo journalctl -u apache2 -e
sudo php -v
mysql -u paperwork -p -e "SHOW DATABASES;"Безопасность и соответствие (GDPR и прочее)
- Используйте HTTPS: настройте Let’s Encrypt или другой сертификат и включите перенаправление с HTTP на HTTPS.
- Ограничьте доступ к административной панели по IP или двуфакторной аутентификации (если возможно).
- Хранение данных: при обработке персональных данных соблюдайте правила GDPR — документируйте, где хранятся данные и кто имеет доступ.
- Резервное копирование: настройте регулярные бэкапы базы данных и каталога /var/www/html/paperwork.
Важно: Paperwork хранит документы локально — это снижает риски облачных сервисов, но повышает ответственность администратора за безопасность сервера.
Альтернативные подходы и варианты
- Контейнеризация: создайте Docker-контейнеры для PHP, базы и фронтенда — это облегчает деплой на современных системах.
- Использовать современную альтернативу: если Paperwork не критичен, рассмотрите интеграцию с Nextcloud + только-плагином для OCR/сканов.
- Обновление PHP: если вы обязаны запускать Paperwork на новых ОС, используйте контейнер с Ubuntu 18.04 и PHP 7.2 внутри, чтобы сохранить совместимость.
Совместимость и миграция
- Paperwork ориентирован на более старые стеки (PHP 7.2). На Ubuntu 20.04+ PHP 7.2 может отсутствовать, поэтому рекомендуем либо контейнер, либо виртуальную машину с Ubuntu 18.04.
- При миграции данных в другую систему экспортируйте документы и метаданные (если Paperwork не предоставляет прямой экспорт, копируйте папки storage и дамп базы данных).
Роль‑ориентированные чек-листы
Администратор сервера:
- Установить систему и обновления.
- Настроить сеть и DNS.
- Обеспечить HTTPS и резервное копирование.
Разработчик/DevOps:
- Проверить зависимости PHP/Node.
- Сконфигурировать CI для сборки фронта (gulp).
- Описать Dockerfile/Compose (при необходимости).
Оператор/Пользователь:
- Создать учётную запись администратора в установщике.
- Настроить теги/политику хранения документов.
Критерии приёмки
- Веб-интерфейс доступен по HTTPS и отвечает кодом 200.
- Вход под администратором работает, можно создать документ и выполнить поиск по тексту (OCR).
- Регулярные бэкапы базы и файлов настроены.
Короткий словарь
- LAMP: стек Linux, Apache, MariaDB/MySQL, PHP.
- Composer: менеджер зависимостей для PHP.
- Gulp/Bower: инструменты сборки фронтенда.
- OCR: оптическое распознавание текста.
Быстрое дерево принятия решений
flowchart TD
A[Нужен локальный менеджер документов?] -->|Да| B{Поддержка PHP 7.2 доступна?}
B -->|Да| C[Установить Paperwork на Ubuntu 18.04]
B -->|Нет| D[Рассмотреть Docker с Ubuntu 18.04 или альтернативу]
A -->|Нет| E[Использовать облачные сервисы или Nextcloud]Ссылки
- Исходный репозиторий Paperwork: https://github.com/twostairs/paperwork
Резюме
Paperwork удобен для локального управления отсканированными документами, но проект требует устаревшего стека (PHP 7.2 и mcrypt). Вы можете развернуть его на Ubuntu 18.04 по шагам, описанным выше, либо контейнеризировать для будущей переносимости. Обязательно настройте HTTPS, резервное копирование и проверяйте логи при ошибках.