Ставьте libreoffice-core в зависимости от сборки, удаляйте конфликты с onlyoffice-desktopeditors. Затем проверьте наличие xdg-utils – без них не откроется ни один файл по MIME-типу.
Чтобы подключить редакторы как приложения по умолчанию, пропишите в ~/.config/mimeapps.list:
[Default Applications]
application/vnd.oasis.opendocument.text=myoffice.desktop;
application/msword=r7office.desktop;
Для R7 под Red OS потребуется отредактировать файл /usr/share/applications/r7office.desktop. Проверьте, не заблокирован ли доступ к /tmp, иначе запуск из браузера просто не сработает. А он часто туда кидает временные файлы – DOCX, XLSX, всё подряд.
Внимание! Если вы работаете в защищённом контуре – заблаговременно настройте правила SELinux и AppArmor. Без них редакторы могут вообще не стартовать.
Интеграция с браузером требует подмены скриптов обработки. Для Chromium:
xdg-mime default r7office.desktop application/vnd.openxmlformats-officedocument.wordprocessingml.document
МойОфис в режиме ограниченной функциональности требует явной передачи ключей запуска. Пример:
/opt/myoffice/office --no-sandbox --enable-features=UseOzonePlatform
В Red OS можно настроить совместное открытие файлов через D-Bus, но потребуется написать обёртку. Пример файла:
#!/bin/bash
dbus-send --session --dest=org.r7office.Service --type=method_call /org/r7office/Service org.r7office.Service.OpenDocument string:"$1"
Работает? Да. Удобно? Не всегда. Но быстрее, чем вручную копировать каждый документ.
Важно помнить: без кастомизации MIME-типов и десктоп-файлов совместное использование с другими программами может ломаться непредсказуемо.
Проверьте системный журнал journalctl -xe, если открытие документов срывается. Часто виноват не редактор, а оболочка – XFCE, GNOME, всё ведут себя по-разному.
И не забывайте – в Red OS всё можно обойти. Но сначала разберитесь, где именно оно ломается.
Содержание статьи
Настройка совместного доступа к документам через Р7-Офис
Сразу. Выставляем права в OnlyOffice Document Server (если разворачивали в Red OS) – всё управление через nginx и JWT. Без этого не будет контроля доступа. Документы увидят все. Хотите катастрофу? Не ставьте токены.
Важно! Включайте JWT-авторизацию в конфиге OnlyOffice. Без неё любой сможет открыть файл напрямую по URL. Даже без логина.
Настраиваем:
- Правим конфигурацию Document Server:
/etc/onlyoffice/documentserver/local.json - Ищем блок
"token":и задаем ключ:"secret": "свой_секретный_ключ" - Перезапускаем сервис:
systemctl restart onlyoffice-documentserver
Теперь надо шифровать токены на стороне сервера авторизации. Red OS? Значит, используем Apache или nginx в связке с PHP или Go. Пример генерации JWT на PHP:
$token = array(
"document" => array("fileType" => "docx", "key" => "123456", "title" => "report.docx", "url" => "https://example.com/files/report.docx"),
"permissions" => array("edit" => true)
);
$jwt = JWT::encode($token, 'свой_секретный_ключ');
Сервер отдаёт iframe с URL редактора и подписью. Всё. Работает. Открытие – с правами, которые выдали. Хотите только на чтение? Меняйте "edit" => false.
Внимание! Без HTTPS всё бессмысленно. Генерация токенов и передача документов по HTTP – дыра, через которую вытечет всё.
Теперь про совместный доступ. Кто отвечает за синхронизацию прав? Ваш backend. Нет автоматической магии. Надо реализовать:
- Авторизацию пользователей
- Разграничение ролей (админ, редактор, читатель)
- Логику выдачи ссылок на документы с JWT
Поддерживается одновременное редактирование. Но! Не путайте с Google Docs. Здесь фиксируются сессии, и если пользователь вышел – его изменения могут потеряться. Отслеживайте сессии. Логируйте действия. Используйте WebSocket для уведомлений о коллизиях.
Еще нюанс. Храните документы локально или в Nextcloud. Для Nextcloud отдельный коннектор, ставится через snap или rpm. Настройка проста, но требует прав root. В Red OS ставим:
dnf install onlyoffice-nextcloud
После чего в админке Nextcloud подключаем внешний редактор. Всё, пользователи могут делиться файлами и редактировать одновременно. С учётом прав.
Автоматизация? Пишите скрипты. Bash, Python, Go – что ближе. Главное – централизованный контроль доступа и мониторинг. И никаких общедоступных ссылок. Только токены. Только логика.
Механизмы обмена файлами между МойОфис и внутренними системами
Используйте WebDAV. Самый прямолинейный способ подключения хранилища документов к корпоративной сети на Red OS. Настроили точку монтирования, прописали автостарт в fstab – и забыли. Работает как локальный каталог. Но! Только если права доступа расставлены без ошибок. SELinux может все сломать. Проверьте контекст:
ls -Z /mnt/myoffice
semanage fcontext -a -t mount_t "/mnt/myoffice(/.*)?"
restorecon -Rv /mnt/myoffice
Если WebDAV душит по скорости – берите REST API. Да, документации мало. Да, местами криво. Но зато можно на ходу цеплять файлы, передавать токены, автоматизировать выгрузки. Особенно удобно для CI/CD процессов. Подключили bash-скрипт – гоните документы хоть по ночам.
Важно! Убедитесь, что сервер отдаёт правильные заголовки CORS, иначе браузер с фронтенда заблокирует доступ.
Для замкнутых контуров, где воздух свеж и интернет запрещён, используйте локальные агенты синхронизации. В Red OS такие агенты часто работают только в рамках snap или flatpak. Не ставьте rpm из сомнительных источников – получите конфликт библиотек и утечку памяти.
Если нужно триггерить отправку файлов из учетных систем – d-bus и inotify вам в помощь. Слежка за каталогом:
inotifywait -m /mnt/myoffice -e create -e modify | while read line; do /usr/local/bin/send-to-myoffice "$line"; done
Такой хук быстрее всех планировщиков и надежнее cron. Особенно при работе с десятками одновременных сессий.
И ещё. Не надейтесь на samba. Под CIFS ломается кодировка, метаданные исчезают, файлы превращаются в тыкву. Только если под виндой сидит бухгалтерия – тогда да, временно допустимо.
Внимание! Не используйте rsync по ssh без ограничения ключей и прав. Это прямая дыра в периметре безопасности.
Подключение модулей редактирования Р7-Офис к веб-интерфейсам
Подключать редакторы логичнее через iframe, используя механизм documentserver. Обязательное условие – настроенный reverse proxy через nginx с поддержкой WebSocket и корректной маршрутизацией запросов к API и ресурсам редактора.
Пример конфигурации nginx:
location /ds-vpath/ {
proxy_pass http://127.0.0.1:8000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 3600;
}
Для корректного отображения редакторов у клиента должен быть доступ к директориям /web-apps и /ds-vpath. Встроенный веб-клиент взаимодействует с API, передавая JSON с параметрами документа. Без этого работать не будет.
Важно: если используете Red OS, убедитесь, что в SELinux добавлены исключения для проксируемых портов и разрешена работа nginx с loopback-интерфейсом.
Конфигурация JSON для передачи в iframe:
const config = {
document: {
fileType: 'docx',
title: 'document.docx',
url: 'https://example.com/path/document.docx',
permissions: { edit: true }
},
editorConfig: {
callbackUrl: 'https://example.com/callback',
lang: 'ru',
mode: 'edit'
}
};
Загружается редактор по URL: https://ваш_сервер/web-apps/apps/api/documents/api.js. Подключается через стандартный <iframe> с передачей параметров через JS API. Убедитесь, что HTTPS-сертификаты валидны, иначе ничего не загрузится.
Ошибки чаще всего:
- WebSocket не работает (проверь nginx)
- JSON с ошибками (валидируй перед отправкой)
- Неверный callbackUrl (редактор не сохранит изменения)
Внимание! Без правильно настроенного CORS большинство браузеров заблокируют взаимодействие с iframe. Добавьте заголовки явно!
Для контроля прав доступа – авторизацию держите на своей стороне, не перекладывайте это на редактор. Он не проверяет, кто открыл документ – он просто редактирует.
Если запускаете на Red OS с SELinux в enforcing, не забудьте про политику httpd_can_network_connect и открытые порты в firewalld. Без этого редактор тупо не загрузится. Проверка:
# setsebool -P httpd_can_network_connect on
# firewall-cmd --add-port=8000/tcp --permanent
# firewall-cmd --reload
Замените localhost в proxy_pass на 127.0.0.1 – иначе systemd-nspawn и SELinux устроят вам веселую жизнь с отказами и тайм-аутами.
Импорт и экспорт документов между МойОфис и сторонними платформами
Сразу: используйте формат ODF (OpenDocument) для устойчивой передачи контента между системами. Он читается без искажений как на Linux, так и на Windows-средах, включая Web-версии и десктопные клиенты.
При работе на Red OS, не полагайтесь на автосохранение – особенно при экспорте в проприетарные форматы DOCX, XLSX, PPTX. Конвертация может разрушить стили, таблицы и формулы. Проверка результата – обязательна. Нет, не после, а сразу.
Для пакетной обработки используйте unoconv или soffice --convert-to. Пример:
soffice --headless --convert-to docx /opt/documents/source.odt --outdir /tmp/export
Да, это кривовато. Но работает стабильно. Особенно при вызове из системных скриптов через cron или systemd юниты. Никаких GUI – только CLI.
Важно учитывать: таблицы, созданные в XLSX, могут съехать при открытии в отечественных решениях. Особенно если в них используются вложенные функции Excel. Упрощайте. И используйте CSV, если важны только данные.
Внимание! PDF, экспортированный из среды МойОфис, не всегда корректно индексируется сторонними DMS. Проверяйте видимость текста:
pdftotextпокажет, есть ли текстовый слой.
Обратный импорт с Google Docs и MS365 – тоже не сахар. Скачивайте документы в формате ODT или XLS, а не DOCX/XLSX. Почему? Потому что сложные стили, формулы, поля слияния – всё это ломается в XML-парсерах стороннего ПО.
Работа с изображениями – отдельная боль. PNG и JPEG держатся. SVG – нет. При экспорте из других платформ SVG часто теряется. Поэтому всё, что нужно сохранить точно – преобразуйте заранее в растровый формат.
Важно помнить: файлы, переименованные вручную без корректной переконвертации (например, DOCX → ODT просто переименованием расширения), вызывают ошибку чтения в большинстве приложений. Проверяйте MIME-тип, а не расширение.
И наконец: если требуется массовая миграция архива – задействуйте libreoffice --headless через пайп с find или xargs. Пример:
find /mnt/archive -type f -name "*.docx" | xargs -I{} libreoffice --headless --convert-to odt --outdir /mnt/converted
Быстро, грубо, надёжно. В бой – без лишних слов.

