Как установить Stirling-PDF: мощный PDF‑редактор на сервер
Установка и настройка Stirling-PDF — бесплатного open-source редактора PDF. Пошаговое руководство по развёртыванию на собственном сервере.
Подготовка сервера
Обновление системы и установка необходимых пакетов
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl gitУстановка Docker
Установка Docker и добавление пользователя в группу docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker ${USER}Установка Docker Compose
Установка Docker Compose плагина
sudo apt install -y docker-compose-pluginНастройка Stirling-PDF
Создание директории и файла docker-compose.yml
mkdir stirling-pdf
cd stirling-pdf
nano docker-compose.ymlКонфигурация docker-compose.yml
Базовая конфигурация контейнера с аутентификацией
version: '3.8'
services:
stirling-pdf:
container_name: stirling-pdf
image: frooodle/s-pdf:latest
restart: always
ports:
- "8080:8080"
environment:
- DOCKER_ENABLE_SECURITY=true
- SECURITY_ENABLE_LOGIN=true
- SECURITY_USER_NAME=ваше_имя_пользователя
- SECURITY_USER_PASSWORD=ваш_пароль
- TIMEZONE=Europe/Moscow
volumes:
- ./logs:/logs
networks:
- stirling-pdf-network
networks:
stirling-pdf-network:
driver: bridgeЗапуск контейнера
Запуск Stirling-PDF в фоновом режиме
docker-compose up -dНастройка SSL/TLS
Настройка обратного прокси Nginx и SSL через Let's Encrypt
sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/stirling-pdf
# Конфиг Nginx:
server {
listen 80;
server_name ваше_доменное_имя;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo ln -s /etc/nginx/sites-available/stirling-pdf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
# Установка Certbot:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d ваше_доменное_имяНастройка автоматического обновления SSL
Настройка cron для автоматического обновления сертификатов
sudo crontab -e
# Добавить строку:
45 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"Обновление Stirling-PDF
Процесс обновления до последней версии
cd stirling-pdf
docker-compose down
docker-compose pull
docker-compose up -dРезервное копирование
Создание скрипта и настройка автоматического резервного копирования
# Скрипт ~/backup-stirling-pdf.sh:
#!/bin/bash
BACKUP_DIR=~/backups/stirling-pdf
STIRLING_DIR=~/stirling-pdf
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="stirling-pdf_$TIMESTAMP.tar.gz"
tar -czf $BACKUP_DIR/$BACKUP_FILE \
-C $STIRLING_DIR \
--exclude=logs/*.log \
--exclude=cache \
--exclude=temp \
.
find $BACKUP_DIR -name "stirling-pdf_*.tar.gz" -mtime +30 -delete
echo "Бэкап создан: $BACKUP_DIR/$BACKUP_FILE"
# Настройка cron:
crontab -e
# Добавить строку:
0 2 * * * ~/backup-stirling-pdf.shРуководство: Как самостоятельно разместить Stirling-PDF - №1 приложение на GitHub для редактирования PDF файлов на любом устройстве в любом месте
Введение
Stirling-PDF — это мощное приложение с открытым исходным кодом для работы с PDF файлами. На сегодняшний день это самый популярный проект на GitHub в своей категории, предлагающий широкий спектр функций включая объединение, разделение, преобразование, сжатие и защиту PDF документов.
Размещая это приложение на собственном сервере, вы получаете полный контроль над вашими документами, не зависите от сторонних сервисов и можете работать с файлами в безопасной среде. Это особенно важно для тех, кто обрабатывает конфиденциальные документы или просто хочет иметь свой собственный центр для работы с PDF.
Требования
Для успешного развертывания Stirling-PDF вам потребуется:
- Сервер с Linux (рекомендуется Ubuntu 20.04 или новее)
- Не менее 2 ГБ оперативной памяти
- Не менее 10 ГБ свободного места на диске
- Docker и Docker Compose
- Доменное имя (не обязательно, но рекомендуется для удобного доступа)
Установка
1. Подготовка сервера
Сначала обновим систему и установим необходимые пакеты:
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl git
2. Установка Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker ${USER}
После добавления пользователя в группу docker выйдите из системы и войдите снова, чтобы изменения вступили в силу.
3. Установка Docker Compose
sudo apt install -y docker-compose-plugin
4. Скачивание и настройка Stirling-PDF
Создадим директорию для проекта:
mkdir stirling-pdf
cd stirling-pdf
Создадим файл docker-compose.yml:
nano docker-compose.yml
Добавим в файл следующее содержимое:
version: '3.8'
services:
stirling-pdf:
container_name: stirling-pdf
image: frooodle/s-pdf:latest
restart: always
ports:
- "8080:8080"
environment:
- DOCKER_ENABLE_SECURITY=true
- SECURITY_ENABLE_LOGIN=true
- SECURITY_USER_NAME=ваше_имя_пользователя
- SECURITY_USER_PASSWORD=ваш_пароль
- TIMEZONE=Europe/Moscow
volumes:
- ./logs:/logs
networks:
- stirling-pdf-network
networks:
stirling-pdf-network:
driver: bridge
Сохраняем файл (Ctrl+O, Enter, Ctrl+X).
5. Запуск контейнера
Запускаем Stirling-PDF:
docker-compose up -d
Подождем несколько минут, пока контейнер будет загружаться.
Настройка
После запуска приложения можно получить доступ к нему через веб-браузер по адресу:
http://ваш_IP_адрес:8080
Если используете доменное имя, настроенное для вашего сервера, доступ будет через:
http://ваше_доменное_имя:8080
Настройка безопасности
По умолчанию в файле docker-compose.yml включена аутентификация. Можно изменить имя пользователя и пароль, отредактировав соответствующие переменные в файле docker-compose.yml.
Для изменения порта редактируем строку ports в файле docker-compose.yml, заменив 8080 на нужный порт.
Настройка SSL/TLS (рекомендуется)
Для безопасного доступа через HTTPS настроим обратный прокси с использованием Nginx.
Сначала установим Nginx:
sudo apt install -y nginx
Создадим конфигурационный файл для нашего домена:
sudo nano /etc/nginx/sites-available/stirling-pdf
Добавим следующее содержимое, заменив ваше_доменное_имя на ваше доменное имя:
server {
listen 80;
server_name ваше_доменное_имя;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Создадим символическую ссылку для активации сайта:
sudo ln -s /etc/nginx/sites-available/stirling-pdf /etc/nginx/sites-enabled/
Проверим конфигурацию и перезапустим Nginx:
sudo nginx -t
sudo systemctl restart nginx
Теперь настроим SSL с помощью Let's Encrypt:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d ваше_доменное_имя
Следуем инструкциям на экране для завершения настройки SSL.
Важно: Сертификаты Let's Encrypt действуют 90 дней. Чтобы они автоматически обновлялись, установим и настроим cron-задачу:
sudo crontab -e
Добавим следующую строку для автоматического обновления сертификатов каждый день в 3:45 утра:
45 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"
Сохраняем файл и выходим.
Использование
После успешной установки и настройки можно использовать Stirling-PDF для работы с PDF файлами:
- Открываем браузер и переходим на адрес нашего Stirling-PDF сервера.
- Входим с использованием имени пользователя и пароля, заданных при установке.
- Выбираем нужную операцию из списка на главной странице.
- Загружаем PDF файл(ы), выполняем необходимые операции.
- Скачиваем результат.
Основные возможности Stirling-PDF:
- Объединение нескольких PDF в один
- Разделение PDF на отдельные страницы
- Сжатие PDF уменьшение размера файла
- Преобразование PDF в другие форматы (Word, Excel, PowerPoint и др.)
- Преобразование других форматов в PDF
- Извлечение текста и изображений из PDF
- Добавление или удаление страниц
- Поворот страниц
- Добавление водяных знаков
- Защита паролем и удаление паролей
- Заполнение форм PDF
- OCR (распознавание текста)
- Подпись PDF
- И многие другие функции
Работа с большими файлами
Stirling-PDF может обрабатывать большие PDF файлы, но для этого необходимо правильно настроить окружение:
Настройка ресурсов Docker
Для обработки больших файлов увеличим лимиты памяти и процессорного времени для контейнера. Отредактируем файл docker-compose.yml:
nano docker-compose.yml
Добавим параметры для ограничения ресурсов:
services:
stirling-pdf:
container_name: stirling-pdf
image: frooodle/s-pdf:latest
restart: always
ports:
- "8080:8080"
environment:
- DOCKER_ENABLE_SECURITY=true
- SECURITY_ENABLE_LOGIN=true
- SECURITY_USER_NAME=ваше_имя_пользователя
- SECURITY_USER_PASSWORD=ваш_пароль
- TIMEZONE=Europe/Moscow
- MAX_FILE_SIZE=100MB # Максимальный размер файла
- JVM_MAX_MEMORY=2G # Максимальная память для Java
deploy:
resources:
limits:
memory: 4G
reservations:
memory: 2G
volumes:
- ./logs:/logs
networks:
- stirling-pdf-network
Настройка swap-памяти
Если у вас ограниченная оперативная память, можно настроить swap-файл:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Чтобы swap-файл включался автоматически после перезагрузки, добавим его в /etc/fstab:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Резервное копирование
Регулярное резервное копирование данных — важная часть обслуживания любого сервера. Для резервного копирования Stirling-PDF нам нужно сохранять настройки, логи и, при необходимости, загруженные файлы.
Создание скрипта резервного копирования
Создадим директорию для бэкапов:
mkdir -p ~/backups/stirling-pdf
Создадим скрипт резервного копирования:
nano ~/backup-stirling-pdf.sh
Добавим следующий код:
#!/bin/bash
# Директории
BACKUP_DIR=~/backups/stirling-pdf
STIRLING_DIR=~/stirling-pdf
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="stirling-pdf_$TIMESTAMP.tar.gz"
# Создаем бэкап
tar -czf $BACKUP_DIR/$BACKUP_FILE \
-C $STIRLING_DIR \
--exclude=logs/*.log \
--exclude=cache \
--exclude=temp \
.
# Удаляем бэкапы старше 30 дней
find $BACKUP_DIR -name "stirling-pdf_*.tar.gz" -mtime +30 -delete
echo "Бэкап создан: $BACKUP_DIR/$BACKUP_FILE"
Сделаем скрипт исполняемым:
chmod +x ~/backup-stirling-pdf.sh
Настройка автоматического резервного копирования
Добавим задачу в cron для автоматического резервного копирования каждый день в 2:00 ночи:
crontab -e
Добавим следующую строку:
0 2 * * * ~/backup-stirling-pdf.sh
Сохраняем файл и выходим.
Мониторинг
Для отслеживания работы сервера и Stirling-PDF рекомендуется настроить мониторинг.
Установка и настройка Prometheus
Сначала установим Prometheus:
sudo apt update
sudo apt install -y prometheus
Отредактируем конфигурационный файл Prometheus:
sudo nano /etc/prometheus/prometheus.yml
Добавим конфигурацию для сбора метрик с Stirling-PDF:
scrape_configs:
- job_name: 'stirling-pdf'
static_configs:
- targets: ['localhost:8080']
metrics_path: /metrics
scrape_interval: 15s
Перезапустим Prometheus:
sudo systemctl restart prometheus
Установка и настройка Grafana
Установим Grafana:
sudo apt install -y grafana
Перезапустим Grafana:
sudo systemctl restart grafana-server
Откроем Grafana в браузере по адресу http://ваш_IP_адрес:3000 и авторизуемся с логином admin и паролем admin.
Добавим источник данных Prometheus:
- Перейдем в Configuration → Data Sources → Add data source.
- Выберем Prometheus.
- В поле URL укажем
http://localhost:9090. - Нажмем "Save & Test".
Создадим дашборд для мониторинга Stirling-PDF:
- Перейдем в Dashboards → New Dashboard.
- Добавим необходимые графики и метрики.
Мониторинг ресурсов Docker
Для мониторинга ресурсов Docker установим ctop:
sudo apt install -y curl git
curl -L https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -o /usr/local/bin/ctop
sudo chmod +x /usr/local/bin/ctop
Запустим ctop для мониторинга контейнеров:
ctop
Обновление
Для обновления Stirling-PDF выполните следующие шаги:
- Переходим в директорию проекта:
cd stirling-pdf
- Останавливаем текущий контейнер:
docker-compose down
- Обновляем образ Docker:
docker-compose pull
- Запускаем контейнер с новым образом:
docker-compose up -d
Stirling-PDF будет автоматически обновлен до последней версии.
Устранение неполадок
Проблемы с запуском контейнера
Если контейнер не запускается, проверьте логи:
docker logs stirling-pdf
Общие причины проблем:
- Недостаточно ресурсов (увеличьте выделенную память в docker-compose.yml)
- Конфликт портов (измените порт в конфигурации)
- Некорректные параметры окружения (проверьте переменные в docker-compose.yml)
Проблемы с памятью
Если приложение работает медленно или вылетает при обработке больших файлов:
-
Увеличьте лимит памяти в docker-compose.yml:
environment: - JVM_MAX_MEMORY=4G -
Настройте swap-файл, как описано выше.
-
Ограничьте максимальный размер файла:
environment: - MAX_FILE_SIZE=50MB
Проблемы с SSL
Если HTTPS не работает:
-
Проверьте конфигурацию Nginx:
sudo nginx -t -
Проверьте статус certbot:
sudo certbot certificates -
Проверьте корректность путей в конфигурации Nginx.
Проблемы с доступом
Если нет доступа к приложению:
-
Проверьте, что порт открыт:
sudo ufw status -
Проверьте работу контейнера:
docker ps -
Проверьте логи брандмауэра:
sudo tail -f /var/log/ufw.log
Заключение
Размещение Stirling-PDF на собственном сервере предоставляет надежное решение для работы с PDF файлами с полным контролем над вашими данными. Благодаря Docker установка и обслуживание приложения становятся простыми и не требуют глубоких технических знаний.
Stirling-PDF регулярно обновляется и пополняется новыми функциями, что делает его отличным выбором как для личного, так и для небольшого офисного использования.
Теперь вы можете работать с PDF файлами в любом месте и с любого устройства, имеющего доступ к вашему серверу, не беспокоясь о безопасности и конфиденциальности ваших данных.