开源档案管理系统搭建:Docker一键部署实战指南

环境依赖安装

在开始部署档案管理系统之前,必须确保服务器环境已安装 Docker 和 Docker Compose。本指南以 Linux 系统为例,Windows 用户可直接安装 Docker Desktop。

更新系统软件包源并安装必要依赖:

```bash sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg lsb-release ```

接着,添加 Docker 官方 GPG 密钥并设置稳定版仓库:

```bash sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ```

执行安装命令,安装 Docker Engine、Docker Compose 插件及容器运行时:

```bash sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin ```

安装完成后,将当前用户添加到 docker 组,避免每次使用 sudo:

```bash sudo usermod -aG docker $USER newgrp docker ``>

验证安装是否成功:

```bash docker --version docker compose version ```

目录结构规划

为了保证数据持久化和配置管理的便捷性,需要在服务器上创建专门的目录结构。执行以下命令创建项目目录及子目录:

```bash mkdir -p /data/paperless/{data,export,media,consume,db} ```

目录用途说明如下:

  • data:存储 Paperless-ngx 的配置文件及索引数据。
  • export:用于导出文档的临时目录。
  • media:存储原始文档文件及处理后的缩略图。
  • consume:监听目录,放入此处的文件会自动被系统摄取并归档。
  • db:存储 PostgreSQL 数据库文件。

设置目录权限,确保容器内的应用进程有读写权限:

```bash chmod -R 755 /data/paperless ```

核心配置文件编写

进入项目根目录并创建 docker-compose.yml 文件:

```bash cd /data/paperless nano docker-compose.yml ```

将以下完整配置粘贴到文件中。该配置集成了 Web 服务、数据库、Redis、任务队列及文档转换工具,是生产环境推荐的标准配置:

```yaml version: "3.8" services: broker: image: docker.io/library/redis:7 restart: always volumes: - ./data/redis:/data db: image: docker.io/library/postgres:15 restart: always volumes: - ./db:/var/lib/postgresql/data environment: POSTGRES_DB: paperless POSTGRES_USER: paperless POSTGRES_PASSWORD: paperless webserver: image: ghcr.io/paperless-ngx/paperless-ngx:latest restart: always depends_on: - db - broker ports: - "8000:8000" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000"] interval: 30s timeout: 10s retries: 5 volumes: - ./data:/usr/src/paperless/data - ./media:/usr/src/paperless/media - ./export:/usr/src/paperless/export - ./consume:/usr/src/paperless/consume env_file: - .env environment: PAPERLESS_REDIS: redis://broker:6379 PAPERLESS_DBHOST: db PAPERLESS_TIKA_ENABLED: 1 PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000 PAPERLESS_ALLOWED_HOSTS: localhost,192.168.1.100 gotenberg: image: docker.io/gotenberg/gotenberg:7 restart: always command: - "gotenberg" - "--chromium-disable-javascript=true" - "--chromium-allow-list=file:///tmp/." tika: image: apache/tika:latest restart: always ```

注意:请将 `PAPERLESS_ALLOWED_HOSTS` 中的 IP 地址替换为你的服务器实际 IP 或域名。

接着创建环境变量文件 .env:

```bash nano .env ```

填入以下关键配置,特别是时区和管理员密码设置:

```ini 设置时区为上海时间 PAPERLESS_TIME_ZONE=Asia/Shanghai 设置 OCR 识别语言,中英文混合 PAPERLESS_OCR_LANGUAGE=chi_sim+eng 设置管理员用户名和密码(首次启动生效) PAPERLESS_ADMIN_USER=admin PAPERLESS_ADMIN_PASSWORD=your_secure_password 禁用自动更新,防止生产环境意外崩溃 PAPERLESS_ENABLE_UPDATE_CHECK=false ```

服务启动与验证

配置文件准备就绪后,执行以下命令拉取镜像并启动所有容器:

```bash docker compose up -d ```

查看容器运行状态,确保所有服务均为 Up 状态:

```bash docker compose ps ```

如果 webserver 服务启动失败,使用以下命令查看实时日志排查错误:

```bash docker compose logs -f webserver ```

常见错误通常是数据库连接超时,等待几秒钟后再次查看状态即可。服务完全启动后,通过浏览器访问 http://服务器IP:8000。使用 .env 文件中配置的用户名和密码登录系统。

初始化与OCR设置

开源档案管理系统搭建:Docker一键部署实战指南

登录系统后,首先进入 Settings -> Settings -> Numbering,设置文档归档编号规则。建议使用 {year}-{month}-%{doc_pk:04d} 格式,便于按时间归档。

OCR(光学字符识别)是档案管理的核心功能。默认配置已启用中文识别,但为了提高准确率,建议上传特定字体的测试文档进行验证。

进入 Settings -> Settings -> OCR,确认 "OCR Mode" 设置为 "Skip Archive" 或 "Force OCR"。如果文档已经是可搜索的 PDF,选择 Skip Archive 可以节省 CPU 资源;如果是扫描件或图片,必须选择 Force OCR。

为了测试中文识别效果,可以将一张包含中文的图片放入服务器的 /data/paperless/consume 目录。系统会自动检测并处理该文件。处理完成后,在 Dashboard 的 "Documents" 界面查看该文档,尝试搜索其中的中文字符,验证索引是否建立成功。

生产环境接入Nginx

直接使用 8000 端口仅适合内网测试。若需公网访问,必须配置 Nginx 反向代理并启用 HTTPS。假设已安装 Nginx,创建站点配置文件:

```bash sudo nano /etc/nginx/sites-available/paperless ```

填入以下配置内容,将 server_name 替换为你的域名:

```nginx server { listen 80; server_name your-domain.com; client_max_body_size 100M; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static/ { alias /data/paperless/data/static/; } location /media/ { alias /data/paperless/media/; } } ```

激活配置并重启 Nginx:

```bash sudo ln -s /etc/nginx/sites-available/paperless /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx ```

此时使用域名访问即可。建议使用 Certbot 申请 Let's Encrypt 证书以开启 HTTPS 加密传输。

自动化归档配置

为了实现高效的档案管理,需要配置 "Saved Views"(保存视图)和自动标签规则。

进入 Settings -> Saved Views,创建不同的视图,例如 "财务发票"、"合同文档"、"人事档案"。在设置过滤条件时,可以结合 Correspondent(通信方)、Document Type(文档类型)和 Tags(标签)。

配置自动归档规则,进入 Settings -> Automation -> Document Matching Rules。点击 "Add Rule",设置匹配逻辑:

  • Title:匹配文件名包含 "Invoice" 的文件。
  • Correspondent:自动关联到 "财务部"。
  • Document Type:自动指定为 "发票"。
  • Tags:自动打上 "待审核" 标签。

通过这种方式,上传的文件无需人工干预即可自动分类进入对应的档案视图。

数据备份策略

档案数据的安全性至关重要。必须制定定期备份计划,主要备份数据库和媒体文件。

创建一个备份脚本 backup.sh

```bash nano /data/paperless/backup.sh ```

写入以下内容:

```bash !/bin/bash DATE=$(date +%Y%m%d_%H%M%S) BACKUP_DIR=/data/backups mkdir -p $BACKUP_DIR 备份数据库 docker compose exec -T db pg_dump -U paperless paperless > $BACKUP_DIR/paperless_db_$DATE.sql 打包媒体文件和配置 tar -czf $BACKUP_DIR/paperless_data_$DATE.tar.gz /data/paperless/media /data/paperless/data /data/paperless/export 删除7天前的备份 find $BACKUP_DIR -type f -mtime +7 -delete ```

赋予执行权限并设置定时任务:

```bash chmod +x /data/paperless/backup.sh crontab -e ```

添加每天凌晨 2 点执行备份的定时任务:

```cron 0 2 /data/paperless/backup.sh ```

恢复数据时,先恢复数据库文件,再解压数据文件覆盖原目录,最后重启容器即可。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统