前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Docker项目实战】使用Docker部署Docspell文档管理系统

【Docker项目实战】使用Docker部署Docspell文档管理系统

原创
作者头像
江湖有缘
发布2024-02-04 21:56:32
4900
发布2024-02-04 21:56:32
举报
文章被收录于专栏:Linux成长之路Linux成长之路

一、Docspell介绍

1.1 Docspell简介

  • Docspell简介

Docspell 是一个个人文档管理器。或者有时称为 “文档管理系统”(DMS)。您需要扫描仪进行转换 您的论文归档。然后,Docspell 可以协助组织 导致混乱😉.它可以统一来自扫描仪、电子邮件的文件 和其他来源。它针对家庭使用,即家庭、 家庭以及较小的团体/公司。

1.2 Docspell特点

  • 每个帐户多用户:每个帐户(集合体)可以有多个用户共享 相同的文件。例如,您家庭中的每个人都可以与您的 文件,同时使用自己的帐户和自己的设置。
  • 使用 OCR 提取文本:从所有文件中提取文本。对于扫描的文档/图像,OCR 通过使用 tesseract 来使用。对文本进行分析,并可用于全文检索。
  • 文本分析:使用 ML 算法分析提取的文本,以查找可以自动注释到文档的属性。
  • 支持多个文件:Docspell 可以读取多种文件类型。提取 ZIP 和 EML(电子邮件文件格式)文件并导入其内容。
  • 转换为 PDF:所有文件都转换为 PDF。不要担心原件。原始文件也被存储起来,可以原封不动地下载。从图像数据(通常从扫描仪返回)创建 PDF 时,生成的 PDF 包含提取的文本并且可搜索。
  • 全文搜索:所有文件的提取文本和某些属性(如名称和注释)都可用于全文搜索。全文搜索还可用于进一步约束搜索菜单的结果,您可以在其中按标签、通讯员等进行搜索。
  • 通过电子邮件发送:用户可以在应用程序中定义 SMTP 设置,然后能够通过电子邮件发送项目。这通常对与其他人共享很有用。当然,您的地址簿中有电子邮件地址补全。
  • 导入邮箱:用户可以定义 IMAP 设置,以便 docspell 可以导入他们的电子邮件。这可以根据计划定期完成。导入的邮件可以移出到另一个文件夹或删除。
  • 通知:用户可以通过电子邮件、Matrix 或 Gotify 收到定期执行的查询产生的文档通知。还可以为特定事件配置通知。

二、本地环境介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为centos7.6。

hostname

IP地址

操作系统版本

Docker版本

jeven

192.168.3.166

centos 7.6

2 20.10.17

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎;

2.在Docker环境下部署Docspell文档管理系统。

三、本地环境检查

3.1 检查Docker服务状态

检查Docker服务是否正常运行,确保Docker正常运行。

代码语言:bash
复制
[root@jeven ~]#  systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-02-01 21:12:38 CST; 3 days ago
     Docs: https://docs.docker.com
 Main PID: 11384 (dockerd)
    Tasks: 171
   Memory: 2.0G
   CGroup: /system.slice/docker.service

3.2 检查Docker版本

检查Docker版本

代码语言:bash
复制
[root@jeven ~]# docker -v
Docker version 20.10.17, build 100c701

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

代码语言:bash
复制
[root@jeven ~]# docker compose version
Docker Compose version v2.6.0

四、下载Docspell源码

4.1 下载Docspell源码

下载Docspell源码

代码语言:bash
复制
git clone https://github.com/eikek/docspell.git

4.2 查看Docspell源码目录

查看Docspell源码目录

代码语言:bash
复制
[root@jeven ~]# tree -L 1 ./docspell
./docspell
├── artwork
├── build.sbt
├── Changelog.md
├── Contributing.md
├── docker
├── kubernetes
├── LICENSE.txt
├── modules
├── nix
├── NOTICE.txt
├── project
├── README.md
├── tools
├── version.sbt
└── website

8 directories, 7 files

4.3 查看docker-compose.yaml文件

进入./docspell/docker/docker-compose目录

代码语言:bash
复制
cd docspell/docker/docker-compose/

查看docker-compose.yaml文件

代码语言:bash
复制
version: '3.8'
services:

  # The restserver and joex containers defined here are configured
  # using env variables. Both must connect to the same database and
  # solr instance. More information on configuring can be found here:
  # https://docspell.org/docs/configure
  #
  # Please replace the values of the following with a custom secret
  # string:
  #
  # - DOCSPELL_SERVER_ADMIN__ENDPOINT_SECRET
  # - DOCSPELL_SERVER_AUTH_SERVER__SECRET
  # - DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE
  #   (use the same value at the consumedir container!)
  #
  # After creating an account, you may want to set signup mode to
  # "closed" or to "invite". When using invite, you must also set
  # DOCSPELL_SERVER_BACKEND_SIGNUP_NEW__INVITE__PASSWORD to some
  # secret.
  restserver:
    image: docspell/restserver:latest
    container_name: docspell-restserver
    restart: unless-stopped
    ports:
      - "7880:7880"
    environment:
      - TZ=Europe/Berlin
      - DOCSPELL_SERVER_INTERNAL__URL=http://docspell-restserver:7880
      - DOCSPELL_SERVER_ADMIN__ENDPOINT_SECRET=admin123
      - DOCSPELL_SERVER_AUTH_SERVER__SECRET=
      - DOCSPELL_SERVER_BACKEND_JDBC_PASSWORD=dbpass
      - DOCSPELL_SERVER_BACKEND_JDBC_URL=jdbc:postgresql://db:5432/dbname
      - DOCSPELL_SERVER_BACKEND_JDBC_USER=dbuser
      - DOCSPELL_SERVER_BIND_ADDRESS=0.0.0.0
      - DOCSPELL_SERVER_FULL__TEXT__SEARCH_ENABLED=true
      - DOCSPELL_SERVER_FULL__TEXT__SEARCH_SOLR_URL=http://docspell-solr:8983/solr/docspell
      - DOCSPELL_SERVER_INTEGRATION__ENDPOINT_ENABLED=true
      - DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_ENABLED=true
      - DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE=integration-password123
      - DOCSPELL_SERVER_BACKEND_SIGNUP_MODE=open
      - DOCSPELL_SERVER_BACKEND_SIGNUP_NEW__INVITE__PASSWORD=
      - DOCSPELL_SERVER_BACKEND_ADDONS_ENABLED=false
    depends_on:
      - solr
      - db

  joex:
    image: docspell/joex:latest
    container_name: docspell-joex
    ## For more memory add corresponding arguments, like below. Also see
    ## https://docspell.org/docs/configure/#jvm-options
    # command:
    #   - -J-Xmx3G
    restart: unless-stopped
    environment:
      - TZ=Europe/Berlin
      - DOCSPELL_JOEX_APP__ID=joex1
      - DOCSPELL_JOEX_PERIODIC__SCHEDULER_NAME=joex1
      - DOCSPELL_JOEX_SCHEDULER_NAME=joex1
      - DOCSPELL_JOEX_BASE__URL=http://docspell-joex:7878
      - DOCSPELL_JOEX_BIND_ADDRESS=0.0.0.0
      - DOCSPELL_JOEX_FULL__TEXT__SEARCH_ENABLED=true
      - DOCSPELL_JOEX_FULL__TEXT__SEARCH_SOLR_URL=http://docspell-solr:8983/solr/docspell
      - DOCSPELL_JOEX_JDBC_PASSWORD=dbpass
      - DOCSPELL_JOEX_JDBC_URL=jdbc:postgresql://db:5432/dbname
      - DOCSPELL_JOEX_JDBC_USER=dbuser
      - DOCSPELL_JOEX_ADDONS_EXECUTOR__CONFIG_RUNNER=docker,trivial
      - DOCSPELL_JOEX_CONVERT_HTML__CONVERTER=weasyprint
    ports:
      - "7878:7878"
    depends_on:
      - solr
      - db
    ## Uncomment when using the "docker" runner with addons
    # volumes:
    #   - /var/run/docker.sock:/var/run/docker.sock
    #   - /tmp:/tmp

  # The consumedir container watches a directory for files to upload
  # to docspell restserver. This uses the `dsc` tool. For information
  # on the available options, see `dsc --help`.
  # https://github.com/docspell/dsc
  #
  # The value after `Docspell-Integration` must match the secret
  # specified at the restserver via
  # DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE.
  #
  # The --not-matches "**/.*" option is to exclude hidden files.
  consumedir:
    image: docspell/dsc:latest
    container_name: docspell-consumedir
    command:
      - dsc
      - "-d"
      - "http://docspell-restserver:7880"
      - "watch"
      - "--delete"
      - "-ir"
      - "--not-matches"
      - "**/.*"
      - "--header"
      - "Docspell-Integration:integration-password123"
      - "/opt/docs"
    restart: unless-stopped
    volumes:
      - ./docs:/opt/docs
    depends_on:
      - restserver

  db:
    image: postgres:16.1
    container_name: postgres_db
    restart: unless-stopped
    volumes:
      - docspell-postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=dbuser
      - POSTGRES_PASSWORD=dbpass
      - POSTGRES_DB=dbname

  solr:
    image: solr:9
    container_name: docspell-solr
    restart: unless-stopped
    volumes:
      - docspell-solr_data:/var/solr
    command:
      - bash
      - -c
      - 'precreate-core docspell; exec solr -f -Dsolr.modules=analysis-extras'
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8983/solr/docspell/admin/ping"]
      interval: 1m
      timeout: 10s
      retries: 2
      start_period: 30s

volumes:
  docspell-postgres_data:
  docspell-solr_data:

4.4 拉取Docspell相关镜像

拉取Docspell相关镜像

代码语言:bash
复制
[root@jeven docker-compose]# docker compose pull
[+] Running 5/5
 ⠿ joex Pulled                                                                                                         32.9s
 ⠿ consumedir Pulled                                                                                                   35.6s
 ⠿ db Pulled                                                                                                           18.2s
 ⠿ solr Pulled                                                                                                         35.6s
 ⠿ restserver Pulled                                                                                                   33.1s

五、部署Docspell文档管理系统

5.1 创建Docspell相关容器

在./docspell/docker/docker-compose目录下,使用docker-compose.yml部署文件创建Docspell相关容器。

代码语言:bash
复制
[root@jeven docker-compose]# docker compose up -d
[+] Running 5/5
 ⠿ Container docspell-solr        Started                                                                              21.7s
 ⠿ Container postgres_db          Started                                                                              21.7s
 ⠿ Container docspell-joex        Started                                                                              22.0s
 ⠿ Container docspell-restserver  Started                                                                              21.9s
 ⠿ Container docspell-consumedir  Started                                                                              12.3s

5.2 检查Docspell容器状态

检查Docspell容器状态,确保Docspell容器正常启动。

代码语言:bash
复制
[root@jeven docker-compose]# docker compose ps
NAME                  COMMAND                  SERVICE             STATUS               PORTS
docspell-consumedir   "dsc -d http://docsp…"   consumedir          running
docspell-joex         "/opt/joex-entrypoin…"   joex                running (starting)   0.0.0.0:7878->7878/tcp, :::7878->7878/tcp
docspell-restserver   "/opt/docspell-rests…"   restserver          running (starting)   0.0.0.0:7880->7880/tcp, :::7880->7880/tcp
docspell-solr         "docker-entrypoint.s…"   solr                running (starting)   8983/tcp
postgres_db           "docker-entrypoint.s…"   db                  running              5432/tcp

5.3 检查Docspell容器日志

检查docspell-restserver容器日志,确保docspell服务正常运行。

代码语言:bash
复制
docker logs docspell-restserver
在这里插入图片描述
在这里插入图片描述

六、访问Docspell首页

6.1 注册账号

访问地址:http://192.168.3.166:7880,将IP替换为自己服务器IP地址,进入到Docspell登录页。如果无法访问,则检查服务器防火墙是否设置,云服务器的安全组端口是否放行等。

在这里插入图片描述
在这里插入图片描述

点击注册账号,自定义设置账号密码登录即可。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、Docspell的基本使用

7.1 上传文件

在Docspell仪表盘首页,点击上传文件,再选择提交即可。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.2 查看上传文件

在Docspell首页,点击上传的文件名,即可浏览上传文件。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

八、总结

Docspell是一款功能强大的个人文档管理器,可帮助您组织、管理和查找各种类型的文档。它提供多种导入方式和智能搜索功能,同时注重安全性和隐私保护。Docspell能够协助个人组织和管理论文、扫描文档、电子邮件等各种类型的文件,还可以以结构化的方式将这些文档存储在一个集中的位置,并轻松地搜索和访问它们。尽管Docspell不支持中文语言,但对于日常的简单文档管理需求来说,已经足够使用了。

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Docspell介绍
    • 1.1 Docspell简介
      • 1.2 Docspell特点
      • 二、本地环境介绍
        • 2.1 本地环境规划
          • 2.2 本次实践介绍
          • 三、本地环境检查
            • 3.1 检查Docker服务状态
              • 3.2 检查Docker版本
                • 3.3 检查docker compose 版本
                • 四、下载Docspell源码
                  • 4.1 下载Docspell源码
                    • 4.2 查看Docspell源码目录
                      • 4.3 查看docker-compose.yaml文件
                        • 4.4 拉取Docspell相关镜像
                        • 五、部署Docspell文档管理系统
                          • 5.1 创建Docspell相关容器
                            • 5.2 检查Docspell容器状态
                              • 5.3 检查Docspell容器日志
                              • 六、访问Docspell首页
                                • 6.1 注册账号
                                • 七、Docspell的基本使用
                                  • 7.1 上传文件
                                    • 7.2 查看上传文件
                                    • 八、总结
                                    相关产品与服务
                                    容器服务
                                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档