使用Nextcloud集成OnlyOffice和Elasticsearch来构建最强大的在线存储服务器

首先

如果Markdown写作文化普及开来,构建一个可全文搜索的文档服务器并不是太困难的事情。但问题在于这并非现状。

作为技术人员,我可能会想到使用Markdown,但是观察同事和合作的系统供应商,几乎没有人使用这种方式,而更多地使用Word、Excel和PDF等形式来输出。在这种情况下,虽然可以进行宣传活动,但如果能够建立能处理MS Office文档等服务,那么这更加快捷,而且大家也会更加满意。

作为基于本地服务器构建的在线存储服务器,Nextcloud与OnlyOffice组合使用处理办公文档,以及引入ElasticSearch进行全文搜索的方法都很有名。然而,这些介绍的信息有些零零散散,有些过时,不太容易操作。因此,我想介绍一种通过公式镜像进行改进后能够实现的方法。

安装

安装Nextcloud

请克隆上述仓库。

git clone https://github.com/higebobo/docker-nextcloud.git

可以创建和编辑.env文件以更改数据库服务器的连接信息等,但可以使用默认信息(在Makefile的开头中记录)直接构建。
如果无法使用GNU Make,则可以参考Makefile的任务,并在命令行中执行它。

make up

过一段时间后,您可以在浏览器中访问Nextcloud(默认为http://localhost:8080),完成操作。

FireShot Capture 007 - Nextcloud - localhost.png

输入任意的用户名和密码,然后点击“存储和数据库”。

FireShot Capture 008 - Nextcloud - localhost.png

在环境变量中输入设置的数据库信息。在最后的主机部分,使用”db”而不是”localhost”或其他以docker-compose指定的数据库服务名称。

接下来安装应用程序。

FireShot Capture 009 - Nextcloud - localhost.png

点击“安装推荐应用”并等待片刻即可完成。

FireShot Capture 010 - ダッシュボード - Nextcloud - localhost.png

仅需要一个选项,用中文将以下内容进行释义:OnlyOffice的设置

既完成 Nextcloud 的安装后,现在要进行 OnlyOffice 的配置。
虽然可以从仪表盘中进行配置,但建议使用官方提供的脚本(请参考 Makefile 的任务)。

make onlyoffice

输出结果

+ docker exec -u www-data app-server php occ --no-warnings config:system:get trusted_domains
+ grep -q nginx trusted_domain.tmp
+ cat trusted_domain.tmp
+ wc -l
+ TRUSTED_INDEX=1
+ docker exec -u www-data app-server php occ --no-warnings config:system:set trusted_domains 1 --value=nginx
System config value trusted_domains => 1 set to string nginx
+ rm trusted_domain.tmp
+ docker exec -u www-data app-server php occ --no-warnings app:install onlyoffice
onlyoffice 7.3.0 installed
onlyoffice enabled
+ docker exec -u www-data app-server php occ --no-warnings config:system:set onlyoffice DocumentServerUrl --value=/ds-vpath/
System config value onlyoffice => DocumentServerUrl set to string /ds-vpath/
+ docker exec -u www-data app-server php occ --no-warnings config:system:set onlyoffice DocumentServerInternalUrl --value=http://onlyoffice-document-server/
System config value onlyoffice => DocumentServerInternalUrl set to string http://onlyoffice-document-server/
+ docker exec -u www-data app-server php occ --no-warnings config:system:set onlyoffice StorageUrl --value=http://nginx/
System config value onlyoffice => StorageUrl set to string http://nginx/
+ docker exec -u www-data app-server php occ --no-warnings config:system:set allow_local_remote_servers --value=true
System config value allow_local_remote_servers set to string true

通过管理界面可以查看OnlyOffice的设置。

FireShot Capture 011 - 設定 - Nextcloud - localhost.png

设置全文搜索

从仪表板应用程序中搜索”全文”。

FireShot Capture 013 - アプリ - Nextcloud - localhost.png

嵌入以下内容

    • Full text search

 

    • Full text search – Elasticsearch Platform

 

    Full text search – Files

通过仪表盘 > 设置显示“全文搜索”设置界面。

FireShot Capture 014 - 設定 - Nextcloud - localhost.png

设定如下

    • 検索プラットフォーム: Elasticsearch

 

    • サーブレットのアドレス: http://elasticsearch:9200/

インデックス: nextclud(任意の名称)
アナライザトークナイザ: kuromoji_tokenizer

创建搜索索引

make index

输出结果 (shū chū jié guǒ)

Options: []
Memory:
┌─ Indexing  ────
│ Action:
│ Provider:                      Account:
│ Document:
│ Info:
│ Title:
Options: []

...略

┌─ Results ────
│ Result:     30/30
│ Index: files:18
│ Status: ok
│ Message: {"_index":"nextcloud","_type":"_doc","_id":"files:18","_version":1,
│ "result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":
│ 29,"_primary_term":1}
└──
┌─ Errors ────
│ Error:      0/0
│ Index:
│ Exception:
│ Message:
│
│
└──
## x:first result ## c/v:prec/next result ## b:last result
## f:first error ## h/j:prec/next error ## d:delete error ## l:last error
## q:quit ## p:pause

成功しているが、最初はここが30/30となり、うまくいかなかった。

make index-init

或者

make index-reset

也许做这种事情能使人感到幸福。

需要注意的是,由于需要在每次文档注册时执行索引的创建,因此应将其批量化并定期执行,例如将其集成到批处理程序中。

确认动作

从右上角的搜索图标处输入“自托管”(为什么选择这个关键词将在后文中说明)。

FireShot Capture 015 - ダッシュボード - Nextcloud - localhost.png

以下是可編輯的畫面。

FireShot Capture 016 - ファイル - Nextcloud - localhost.png

本次的案例中,我們進行了從最初的內嵌文件中進行搜索,當然還可以進行日文搜索。試著上傳一個帶有「レンタル」一詞的Excel文件進行索引建立後進行搜索,結果顯示可以正確地進行搜索。

FireShot Capture 017 - ファイル - Nextcloud - localhost.png

如果在显示办公文档时遇到“无法连接到ONLYOFFICE,请与管理员联系”的提示,这意味着onlyoffice-server启动需要一些时间,请耐心等待一段时间后再次尝试访问。

最后

使用docker-compose可以一键安装多个服务(Nginx/Nextcloud(PHP)/Mariadb/OnlyOffice/ElasticSearch/Kibana),这非常方便且具有高度的可移植性。
以前,我们需要一个一个地安装、配置(还需要进行验证)这些服务,因此在构建新系统或更新、迁移服务器时都是一项非常繁重的工作。

请将docker-compose.yaml最后附上。
我尽量不开放端口,并且这次我注释掉了Kibana,因为它会变得很重,但如果您喜欢,可以根据自己的需要使用。

version: "3.7"

services:
  app:
    image: nextcloud:23.0-fpm-alpine
    container_name: ${APP_CONTAINER}
    restart: always
    environment:
      - extra_params="--o:ssl.enable=false"
    depends_on:
      - db
      - onlyoffice-document-server
      - elasticsearch
    volumes:
      - "$PWD/data/web:/var/www/html"
  db:
    image: mariadb:10.7-focal
    container_name: ${DB_CONTAINER}
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed
    restart: always
    volumes:
      - "$PWD/data/db:/var/lib/mysql"
    #ports:
    #  - ${MYSQL_PORT}:3306
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
  onlyoffice-document-server:
    image: onlyoffice/documentserver:7.0
    container_name: ${DOC_CONTAINER}
    restart: always
    volumes:
      - "$PWD/data/log/onlyoffice:/var/log/onlyoffice"
      - "$PWD/data/onlyoffice:/var/www/onlyoffice/Data"
  nginx:
    image: nginx:1.21
    container_name: ${WEB_CONTAINER}
    restart: always
    ports:
      - "${WEB_PORT}:80"
      #- "${SSL_PORT}:443"
    volumes:
      - "$PWD/config/nginx.conf:/etc/nginx/nginx.conf"
      - "$PWD/data/web:/var/www/html"
  elasticsearch:
    build: ./elasticsearch
    container_name: ${SEARCH_CONTAINER}
    restart: always
    environment:
      - discovery.type=single-node
#    ports:
#      - "${SEARCH_PORT}:9200"
#      #- "${ELASTICSEARCH_NODE_PORT}:9300"
#  kibana:
#    image: docker.elastic.co/kibana/kibana:7.17.0
#    container_name: ${MONITOR_CONTAINER}
#    restart: always
#    depends_on:
#      - "elasticsearch"
#    ports:
#      - "${MONITOR_PORT}:5601"

如果要使用kibana,请确保elasticsearch和版本匹配

FROM docker.elastic.co/elasticsearch/elasticsearch:7.17.0

RUN elasticsearch-plugin install --batch ingest-attachment &&\
    elasticsearch-plugin install --batch analysis-kuromoji &&\
    elasticsearch-plugin install --batch analysis-icu

提供的唯一选择。

    • ONLYOFFICE/docker-onlyoffice-nextcloud

 

    docker composeを使ってonlyofficeが使用できるnextcloudを構築する | mebee
广告
将在 10 秒后关闭
bannerAds