Onlyoffice 文档服务器
Onlyoffice 文档服务器是一个功能齐全的后端,用于在线在浏览器中编辑不同的办公文档,如 Open Document、Word、Excel 等。该软件是开源的,可以轻松部署并集成到现有的服务器软件中。可用的前端是 Nextcloud 或 Onlyoffice CommunityServer。它也可以在自己的软件中使用,请参阅以下 PHP、Nodejs 等示例。
安装
安装 onlyoffice-documentserver-binAUR 软件包。此外,您还需要 PostgreSQL 或 MariaDB 作为数据库后端,并安装 Redis 和 rabbitmq 服务。
或者,通过 docker 安装并运行
$ docker pull onlyoffice/documentserver $ docker run -i -t -d -p PORT:80 --restart=always onlyoffice/documentserver
其中 PORT 可以是 80(如果未被其他 Web 服务器使用),也可以是其他端口,例如 9980。
配置
local.json
您可以在 /etc/webapps/onlyoffice/documentserver 中创建 local.json,可以在其中覆盖配置的任何部分(以下是包含 rabbitmq、mariadb、redis 和 accesskey 配置的完整 local.json)
/etc/webapps/onlyoffice/documentserver/local.json
{ "queue": { "type": "rabbitmq" }, "rabbitmq": { "url": "amqp://onlyoffice:onlyoffice@127.0.0.1:5672/onlyoffice" }, "services": { "CoAuthoring": { "sql": { "type": "mariadb", "dbHost": "127.0.0.1", "dbPort": 3306, "dbName": "onlyoffice", "dbUser": "onlyoffice", "dbPass": "ONLYOFFICE_DB_PASSWD" }, "redis": { "name": "redis", "host": "127.0.0.1", "port": 6379, "db": "10" }, "server": { "port": 8000, "workerpercpu": 1, "mode": "production" }, "secret": { "browser": {"string": "YOUR SECRET IN NEXTCLOUD"}, "inbox": {"string": "YOUR SECRET IN NEXTCLOUD"}, "outbox": {"string": "YOUR SECRET IN NEXTCLOUD"}, "session": {"string": "YOUR SECRET IN NEXTCLOUD"} }, "token": { "enable": { "browser": true, "request": { "inbox": true, "outbox": true } } } } } }
您不应该编辑 default.json 配置文件。
RabbitMQ
您可以在 RabbitMQ 中为 onlyoffice 创建 vhost,并在 local.json 中选择它。
$ rabbitmqctl add_vhost onlyoffice $ rabbitmqctl add_user onlyoffice onlyoffice $ rabbitmqctl set_permissions -p onlyoffice onlyoffice ".*" ".*" ".*"
数据库
PostgreSQL
需要配置 PostgreSQL 数据库后端。这是一个数据库设置示例
[postgres]$ psql -c "CREATE DATABASE onlyoffice;" [postgres]$ psql -c "CREATE USER onlyoffice WITH password 'onlyoffice';" [postgres]$ psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"
从 PostgreSQL 15 开始,需要在 psql 中为 onlyoffice 用户授予 admin 权限,以便数据库模式迁移命令成功执行。
[postgres]$ psql -c "ALTER DATABASE onlyoffice OWNER TO onlyoffice;"
要迁移 documentserver 数据库模式,请运行以下命令
$ psql -hlocalhost -Uonlyoffice -d onlyoffice -f /usr/share/webapps/onlyoffice/documentserver/server/schema/postgresql/createdb.sql
MariaDB
登录 mariadb 并创建数据库和用户
$ create database onlyoffice; $ create user 'onlyoffice'@'localhost' identified by 'ONLYOFFICE_DB_PASSWD'; $ grant all on onlyoffice.* to 'onlyoffice'@'localhost'; $ flush privileges;
然后导入 schemadb
$ mysql -uonlyoffice -p onlyoffice < /usr/share/webapps/onlyoffice/documentserver/server/schema/mysql/createdb.sql
更改您的 local.json
中的 sql
部分
/etc/webapps/onlyoffice/documentserver/local.json
"sql": { "type": "mariadb", "dbHost": "localhost", "dbPort": "3306", "dbName": "onlyoffice", "dbUser": "onlyoffice", "dbPass": "ONLYOFFICE_DB_PASSWD" },
限制访问
限制对您的文档服务器的访问。
启用安全令牌
/etc/webapps/onlyoffice/documentserver/local.json
"token": { "enable": { "browser": true, "request": { "inbox": true, "outbox":true } }, ... },
设置密钥
/etc/webapps/onlyoffice/documentserver/local.json
"secret": { "browser": {"string": "DOC_SERVER_PASSWD", "file": ""}, "inbox": {"string": "DOC_SERVER_PASSWD", "file": ""}, "outbox": {"string": "DOC_SERVER_PASSWD", "file": ""}, "session": {"string": "DOC_SERVER_PASSWD", "file": ""} },
最后,在 “Nextcloud > 管理设置 > ONLYOFFICE” 中设置相同的密钥。
Web服务器
Nginx / 无 SSL
这是 Nginx Web 服务器的示例
/etc/nginx/sites-available/onlyoffice-documentserver
map $http_host $this_host { "" $host; default $http_host; } map $http_x_forwarded_proto $the_scheme { default $http_x_forwarded_proto; "" $scheme; } map $http_x_forwarded_host $the_host { default $http_x_forwarded_host; "" $this_host; } map $http_upgrade $proxy_connection { default upgrade; "" close; } proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $proxy_connection; proxy_set_header X-Forwarded-Host $the_host; proxy_set_header X-Forwarded-Proto $the_scheme; server { listen 0.0.0.0:80; listen [::]:80 default_server; server_tokens off; rewrite ^\/OfficeWeb(\/apps\/.*)$ /web-apps$1 redirect; location / { proxy_pass https://127.0.0.1:8000; proxy_buffers 4 256k; proxy_max_temp_file_size 0; } location /spellchecker/ { proxy_pass https://127.0.0.1:8080/; } }
Nginx / 使用 SSL 的反向代理
创建如下所示的 Nginx 配置文件
/etc/nginx/conf.d/onlyoffice.conf
upstream docservice { server 127.0.0.1:PORT; } map $http_host $this_host { "" $host; default $http_host; } map $http_x_forwarded_proto $the_scheme { default $http_x_forwarded_proto; "" $scheme; } map $http_x_forwarded_host $the_host { default $http_x_forwarded_host; "" $this_host; } map $http_upgrade $proxy_connection { default upgrade; "" close; } proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $proxy_connection; proxy_set_header X-Forwarded-Host $the_host; proxy_set_header X-Forwarded-Proto $the_scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; server { listen 0.0.0.0:443 ssl; listen [::]:443 ssl default_server; server_name SERVER_NAME server_tokens off; root /usr/share/nginx/html; ssl_certificate SSL_CERT; ssl_certificate_key SSL_KEY; ssl_verify_client off; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_prefer_server_ciphers on; add_header X-Content-Type-Options nosniff; location / { proxy_pass http://docservice; proxy_http_version 1.1; } }
填写 PORT(默认为 8000)、SERVER_NAME、SSL_CERT 和 SSL_KEY。这取自 nginx 参考配置。
重载 Nginx
$ nginx -t $ nginx -s reload
启动
启用/启动以下服务,如果您希望在同一台机器上本地使用它们。
rabbitmq.service
redis.service
postgresql.service
最后,启动 documentserver 服务
onlyoffice-fileconverter.service
onlyoffice-docservice.service
Nextcloud 应用
在 Nextcloud 中安装 ONLYOFFICE 应用。进入 “Nextcloud > 设置 > ONLYOFFICE”,并在 “Onlyoffice Docs address” 中填写 https://SERVER_NAME。
故障排除
ZFS 上的 Onlyoffice Docker 容器
当以 Docker 容器运行 onlyoffice/documentserver 且 data-root
指向 ZFS 设备时(例如,当 /var
挂载为 ZFS 池时),docker run
可能会失败,并显示错误:Error: Daemon failed to copy files
。
在这种情况下,让 Docker 的 data-root
位于 ext4 分区上,例如 /var_ext4/lib/docker
/etc/docker/daemon.json
{ "data-root": "/var_ext4/lib/docker" }
Pkg: 读取文件时出错。
如果 docservice 以以上错误退出,请在构建之前将 /etc/makepkg.conf
中的 OPTIONS 设置为给定的默认值
/etc/makepkg.conf
... OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto !autodeps) ...
升级到 8.2.0 后无法访问 ONLYOFFICE
清空您的 redis 数据库,例如通过执行
$ redis-cli flushall