Обновление Doc-v

Предупреждение

Cистема находится в статусе бета-версии и может содержать ошибки и недоработки.


Doc-v (Дóкви) доступна для следующих операционных систем:

  1. Linux x64
  2. Windows x64
  3. FreeBSD x64

Настройка базы данных

Для работы системы необходима установленная СУБД MySQL / MariaDB. Если у вас уже установлена эта СУБД, есть выделенный пользователь и база данных, переходите сразу к установке.

Если СУБД установлена и есть пользователь, обладающий привилегией создания новой базы данных, этот шаг также можно пропустить, т.к. установщик Doc-v сможет сам создать базу данных. Если нет, то сначала установите СУБД. Для Linux достаточно выполнить команду sudo apt install mysql-server, для Windows загрузить инсталлятор и запустив установочный файл.

Создание пользователя и базы данных MySQL может выполняться разными способами, и вы можете использовать любой из них; ниже приводится вариант с использованием командной строки.

Запустите командную строку MySQL

Для Linux:
sudo mysql

Для Windows:
mysql.exe

Если вы получите ошибку о том, что Windows не может найти исполняемый файл mysql.exe добавьте в системную переменную операционной системы PATH полный путь к исполняемым файлам MySQL (каталог bin).

В зависимости от настроек, вы можете получить ошибку аутентификации. В этом случае запустите команду с параметрами:

mysql -uПОЛЬЗОВАТЕЛЬ -p

Успешно открыв командную строку MySQL, вы сможете выполнить нижеприведенные SQL-запросы для создания пользователя и базы данных.

Если у вас еще нет пользователя базы данных для работы Doc-v, создайте его (имя может быть любым, в дальнейших примерах используется doc-v):

CREATE USER 'doc-v'@'localhost' IDENTIFIED BY 'ВАШ_ПАРОЛЬ';

для MySQL8:

ALTER USER 'doc-v'@'localhost' IDENTIFIED WITH mysql_native_password BY ' ВАШ_ПАРОЛЬ ';

После чего можно создать базу данных следующими запросами:

CREATE DATABASE docv CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON docv . * TO ' doc-v '@'localhost';
FLUSH PRIVILEGES;
quit;

База данных готова и можно приступить непосредственно к установке Дóкви.

Установка

Есть два варианта:

  1. Обновление существующей системы Documentov 1 версии.
  2. Установка новой "чистой" системы.

Начало у обоих вариантов одинаковое - создаем каталог для системы и устанавливаем права.

LINUX Ubuntu

Во второй команде замените USERNAME на имя своего пользователя. Не стоит использовать пользователя root.

sudo mkdir -p /opt/doc-v
sudo chown USERNAME /opt/doc-v
cd /opt/doc-v
su USERNAME

Копируем дистрибутив системы в /opt/doc-v вручную или при помощи команды:

wget https://www.doc-v.com/download/doc-v.linux.tar.gz

И распаковываем:

tar xzvf doc-v.linux.tar.gz

WINDOWS

Загрузите дистрибутив для Windows по адресу

и скопируйте его в созданный на свое усмотрение новый каталог своего сервера.

Запустите командую строку, перейдите в созданный каталог и выполните команду:

tar xf doc-v.windows.tar.gz

Установка новой системы

Запускаем установку командой:

Для Linux:
/opt/doc-v/doc-v

Для Windows:
/каталог_системы/doc-v.exe:

В процессе установки необходимо будет ввести:

Адрес сервера MySQL (по умолчанию, 127.0.0.1): если MySQL на том же сервере просто нажимаем Enter
Номер порта сервера MySQL (по умолчанию, 3306): если порт не изменяли, нажимаем Enter
Название базы данных MySQL: docv
Имя пользователя MySQL: doc-v
Пароль пользователя MySQL: ВАШ_ПАРОЛЬ

Имя пользователя Doc-v (рекомендуется e-mail)
Пароль пользователя Doc-v не менее 8 символов

Будет автоматически создан конфигурационный файл, и Дóкви запустится. Но он будет привязан к консоли, поэтому, как только вы ее закроете, Дóкви остановится. Поэтому перезапустите его в режиме демона:

Ctrl+C для остановки и

Для Linux:
/opt/doc-v/doc-v start

Для Windows:
doc-v.exe start

В консоли никаких сообщений больше не будет, вся информация в логах в каталоге /opt/doc-v/log

Обновление существующей систем

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

Создаем новую базу данных:

sudo mysql
CREATE DATABASE docv CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON docv . * TO 'ВАШ_ПОЛЬЗОВАТЕЛЬ'@'localhost';
FLUSH PRIVILEGES;
quit;

Импортируем данные в новую базу:

mysqldump -u ВАШ_ПОЛЬЗОВАТЕЛЬ -p БАЗА_ПЕРВОЙ_ВЕРСИИ > db.sql mysql -u ВАШ_ПОЛЬЗОВАТЕЛЬ -p docv < db.sql

Копируем файловое хранилище из существующей версии:

cp -Rf /путь_к_первой_версии/system/storage/download /opt/doc-v/storage/
chown -R USERNAME /opt/doc-v/storage

где USERNAME - имя вашего пользователя для запуска Doc-v

И создаем конфигурационный файл

/opt/doc-v/doc-v.conf

со следующим содержимым:

[Network]
Hostname = doc-v.com # для формирования URL-адресов
Port = 8080

[File]
MaxFileSize = 32M

[DB]
Hostname = 127.0.0.1
Name = название базы
User = пользователь
Password = пароль

После запуска системы в лог-файле log/info.log (в Linux можно ввести команду tail -f /opt/doc-v/log/info.log, чтобы наблюдать за изменением этого файла) вы увидите сообщения об обновлении. После завершения обновления сервер будет запущен, но еще некоторое время будут создаваться таблицы для просмотра журналов (информация об этом также будет выводится в файл log/info.log). В зависимости от количества документов в журналах это время может быть продолжительным, а работа с системой будет затруднена, поэтому дождитесь окончания операции и не останавливайте сервер.

Автозагрузка

После перезагрузки сервера Дóкви самостоятельно не запустится. Исправить это упущение пока можно так:

LINUX Ubuntu

/opt/doc-v/doc-v stop
sudo cp /opt/doc-v/data/doc-v.service /etc/systemd/system/

Изменяем файл /etc/systemd/system/doc-v.service:

User=ВАШ_ПОЛЬЗОВАТЕЛЬ

Выполняем команды:

sudo systemctl enable doc-v
sudo systemctl start doc-v
systemctl status doc-v

Получаем похожее сообщение:

doc-v.service - Doc-v
Loaded: loaded (/etc/systemd/system/doc-v.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-12-15 11:45:12 +06; 39s ago

Впредь запуск системы осуществляется командой:

sudo systemctl start doc-v

а остановку:

sudo systemctl stop doc-v

WINDOWS

Загрузите файл и распакуйте его.

Запустите консоль от имени администратора, перейдите в каталог nssm-2.24\win64 и выполните команду

nssm.exe install Doc-v путь_к_Doc-v\doc-v.exe

Изменение порта

По умолчанию, Doc-v запускается на порте 8080. Для запуска на порту с номером меньше 1024, необходимо предоставить сначала доступ к этим портам непривилегированным пользователям. Отредактируйте (или создайте, если его нет) файл:

/etc/sysctl.d/50-unprivileged-ports.conf

добавив в него строку:

net.ipv4.ip_unprivileged_port_start=0

После чего можно изменить файл /opt/doc-v/doc-v.conf:

[Network]
Port = 80

После чего выполнить команду:

sudo sysctl --system

и перезагрузить Doc-v.

Включение HTTPS

Для включения HTTPS необходимо в файле doc-v.conf в секцию Network добавить след настройки:

[Network]
HTTPS = true
Port = 443
SSLCertFile = ssl/www.crt
SSLKeyFile = ssl/private.key
SSLChainFile = ssl/www.ca-bundle

и перезагрузить Doc-v.

Если у вас нет сертификата SSL, его можно приобрести или зарегистрировать бесплатно, например, в центре сертификации Let’s Encrypt. Ниже приводится краткая инструкция по работе с Let’s Encrypt в Linux Ubuntu:

  1. sudo apt install certbot
  2. Если у вас работает на 80-м порту какой-либо веб-сервер, остановите его
  3. certbot certonly --standalone

    Ответьте на вопросы установщика (в DNS для доменного имение, для которого вы регистрируете сертификат, должен быть указан публичный IP-адрес сервера, с которого вы запускаете certbot)

  4. Установите права доступа к папкам /etc/letsencrypt/live /etc/letsencrypt/archive и файлу приватного ключа в /etc/letsencrypt/archive/ВАШЕ ДОМЕННОЕ ИМЯ для пользователя, от имени которого запускается Doc-v, или скопируйте файлы из /etc/letsencrypt/archive/ВАШЕ ДОМЕННОЕ ИМЯ в, например, /opt/doc-v/ssl (в пятом пункте в этом случае подставьте этот путь для файлов SSL)
  5. Исправьте файл doc-v.conf:

    [Network]
    HTTPS = true
    Port = 443
    SSLCertFile = /etc/letsencrypt/live/ВАШЕ ДОМЕННОЕ ИМЯ/cert.pem
    SSLKeyFile = /etc/letsencrypt/live/ВАШЕ ДОМЕННОЕ ИМЯ/privkey.pem
    SSLChainFile = /etc/letsencrypt/live/ВАШЕ ДОМЕННОЕ ИМЯ/fullchain.pem

Обратите внимание, что сертификаты Let’s Encrypt действительны три месяца. Для продления сертификата необходимо будет выполнить команду:

sudo certbot renew --dry-run

Для автоматизации обновления сертификатов можно использовать следующий скрипт (он предполагает, что сертификаты будут копироваться в каталог /opt/doc-v/ssl, этот путь должен быть указан в doc-v.conf для настроек SSL):

#!/bin/sh
certbot renew --dry-run
cp /etc/letsencrypt/live/ВАШЕ ДОМЕННОЕ ИМЯ/* /opt/doc-v/ssl/
chown doc-v /opt/doc-v/ssl/*
systemctl restart doc-v

Если на 80-м порте у вас работает веб-сервер, добавьте команду для его остановки перед certbot renew --dry-run и запуска после нее, т.к. в приведенной конфигурации для certbot необходим свободный 80-й порт.

Настройте в cron запуск этого скрипта каждые три месяца во время наименьшей нагрузки от имени пользователя root.

После включения HTTPS в Doc-v необходимо будет включить HTTPS и для OnlyOffice, если вы используете этот сервис.

Дополнительные приложения

Для работы некоторых функций необходимы следующие приложения, установленные на сервере:

  1. unoconv для работы предварительного просмотра офисных форматов файлов в поле "Файл", в котором включен атрибут предварительного просмотра
  2. wkhtmltopdf для экспорта в PDF в действии "Экспорт в файл"
  3. onlyOffice для редактирования файлов в поле "Файл" в браузере (после установки в в настройках сервиса Doc-v OnlyOffice включить интеграцию и указать сервер: http://Ваш IP:90)

Установка unoconv / LibreOffice

LINUX Ubuntu

sudo apt install unoconv

Однако в состав Ubuntu включены устаревшие версии uniconv / LibreOffice, которые имеют программные ошибки, из-за которых для некоторых файлов может не работать предварительный просмотр. Ниже приводится инструкция по обновлению ( здесь более подробно):

  1. Установка последней версии Unoconv

    cd /opt
    sudo wget https://raw.githubusercontent.com/dagwieers/unoconv/master/unoconv

    Изменить в файле /opt/unoconv первую строку на:

    #!/usr/bin/env python3

    после чего выполнить команды:

    sudo chmod ugo+x /opt/unoconv sudo mv /usr/bin/unoconv /usr/bin/unoconv2 // если не была установлен unoconv, команда выведет ошибку - это нормально
    sudo ln -s /opt/unoconv /usr/bin/unoconv

  2. Обновление до последней версии LibreOffice

    sudo add-apt-repository ppa:libreoffice/ppa
    sudo apt-get update
    sudo apt-get install libreoffice

  3. Проверка результата:

    unoconv --version

    Результат должен быть похожим на следующие строки:

    unoconv 0.8.2
    Written by Dag Wieers < dag@wieers.com <
    Homepage at http://dag.wieers.com/home-made/unoconv/
    platform posix/linux
    python 3.8.10 (default, Nov 26 2021, 20:14:08)
    [GCC 9.3.0]
    LibreOffice 7.2.5.2

WINDOWS

  1. Установить LibreOffice
  2. Загрузить unoconv, распаковать zip архив, например, в С:/unoconv
  3. В папке Windows/System32 создать файл unoconv.cmd со строкой:

    call "c:\Program Files\LibreOffice\program\python.exe" C:\unoconv\unoconv %*

Установка Wkhtmltopdf

LINUX Ubuntu

sudo apt install wkhtmltopdf

WINDOWS

  1. Загрузить и установить дистрибутив
  2. В системную переменную Windows Path добавить путь к wkhtmltopdf\bin
  3. Перезагрузить сервер

Установка OnlyOffice

LINUX Ubuntu

  1. sudo apt install - docker docker.io
  2. sudo docker run -i -t -d -p 90:80 --restart=always onlyoffice/documentserver
  3. В настройках сервиса Doc-v OnlyOffice включить интеграцию и указать сервер: http://Ваш_IP_или_доменное_имя:90 (IP не может быть 127.0.0.1)

При включенном HTTPS в Doc-v необходимо также перевести на HTTPS и OnlyOffice:

  1. sudo mkdir -p /app/onlyoffice/DocumentServer/data/certs
  2. Скопируйте в созданный каталог /app/onlyoffice/DocumentServer/data/certs файлы SSL-сертификата и приватного ключа и дайте им названия: onlyoffice.crt и onlyoffice.key соответственно
  3. Запустите контейнер:

    sudo docker run -i -t -d -p 8443:443 --restart=always -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice onlyoffice/documentserver

  4. В настройках сервиса Doc-v OnlyOffice укажите сервер: https://Ваш_IP_или_доменное_имя:8443 Если при открытии документа OnlyOffice будет выдавать ошибку о невозможности сохранения файла и необходимости проверки соединения, посмотрите лог файл /app/onlyoffice/DocumentServer/logs/documentserver/docservice/out.log. Если в этом файле будет ошибка,похожая на "Error: unable to verify certificate", проблему можно решить перезапуском контейнера с переменной USE_UNAUTHORIZED_STORAGE:

    sudo docker run -i -t -d -e USE_UNAUTHORIZED_STORAGE=true -p 8443:443 --restart=always -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice onlyoffice/documentserver