在构建企业级档案管理系统之前,需要准备一台干净的服务器环境。本文以Ubuntu 22.04 LTS为例,演示如何从零搭建一套基于Paperless-ngx的高性能档案服务。该方案支持OCR文字识别、标签管理及全文检索,完全满足企业日常档案电子化需求。
更新系统源并安装必要的依赖工具。执行以下命令:
```bash sudo apt-get update sudo apt-get install -y curl git python3-pip ```接下来,安装Docker和Docker Compose。这是运行该服务最核心的容器化环境。执行以下一键安装脚本:
```bash curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER ```安装完成后,重新登录服务器以确保用户组权限生效。然后安装Docker Compose插件:
```bash sudo apt-get install -y docker-compose-plugin ```验证安装是否成功,输入以下命令,若输出版本号则说明环境就绪:
```bash docker --version docker compose version ```为了确保数据的安全性与可维护性,我们需要在宿主机上规划合理的目录结构。不要将数据直接存储在容器内部,否则容器一旦删除,企业档案数据将永久丢失。请在服务器根目录下创建专门的项目文件夹:
```bash sudo mkdir -p /opt/paperless/data sudo mkdir -p /opt/paperless/export sudo mkdir -p /opt/paperless/media sudo mkdir -p /opt/paperless/consume sudo mkdir -p /opt/paperless/db ```上述目录分别对应:应用配置数据、导出文件、原始媒体文件、待处理文档队列及数据库文件。进入项目目录开始配置:
```bash cd /opt/paperless ```这是整个部署过程的核心环节。我们需要创建一个docker-compose.yml文件,定义Web服务、任务队列、数据库、缓存及OCR引擎等组件。使用nano或vim创建并编辑文件:
将以下完整配置复制到文件中。该配置已经针对国内网络环境进行了镜像源优化,并开启了中文OCR支持:
```yaml version: "3.8" services: broker: image: docker.io/library/redis:7 restart: always volumes: - ./redis:/data db: image: docker.io/library/postgres:15 restart: always volumes: - ./db:/var/lib/postgresql/data environment: POSTGRES_USER: paperless POSTGRES_PASSWORD: paperless POSTGRES_DB: paperless webserver: image: ghcr.io/paperless-ngx/paperless-ngx:latest restart: always depends_on: - db - broker ports: - "8000:8000" volumes: - ./data:/usr/src/paperless/data - ./media:/usr/src/paperless/media - ./export:/usr/src/paperless/export - ./consume:/usr/src/paperless/consume env_file: docker-compose.env healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000"] interval: 30s timeout: 10s retries: 5 exporter: image: ghcr.io/paperless-ngx/paperless-ngx:latest restart: always depends_on: - db - broker volumes: - ./data:/usr/src/paperless/data - ./media:/usr/src/paperless/media - ./export:/usr/src/paperless/export env_file: docker-compose.env command: ["document_exporter"] consumer: image: ghcr.io/paperless-ngx/paperless-ngx:latest restart: always depends_on: - db - broker volumes: - ./data:/usr/src/paperless/data - ./media:/usr/src/paperless/media - ./consume:/usr/src/paperless/consume env_file: docker-compose.env command: ["document_consumer", "--polling_interval=10"] tika: image: ghcr.io/paperless-ngx/tika:latest restart: always gotenberg: image: docker.io/gotenberg/gotenberg:7.30.6 restart: always command: - "gotenberg" - "--chromium-disable-routes=true" ```在同级目录下创建环境变量文件docker-compose.env,用于存储敏感信息和系统参数。这一步对于开启中文支持至关重要:
填入以下配置内容。特别注意PAPERLESS_OCR_LANGUAGE参数,这里设置为chi_sim+eng以同时支持简体中文和英文识别:

注意:请务必将your_secure_password_here替换为复杂的高强度密码,以确保企业数据安全。
配置文件准备就绪后,执行以下命令拉取镜像并启动所有服务容器:
```bash docker compose up -d ```首次启动需要下载镜像,可能需要几分钟时间。启动完成后,使用ps命令检查容器状态,确保所有服务的Status均为Up:
如果webserver服务显示正常,即可通过浏览器访问http://服务器IP:8000。登录界面出现后,使用环境变量中配置的admin和密码进行登录。
登录系统后,为了适应企业实际业务流程,需要进行几项关键设置。点击右上角设置图标进入管理后台。
虽然我们在环境变量中开启了中文支持,但为了提高识别准确率,建议在后台设置中确认OCR模式。导航至Settings -> Workflow -> OCR Settings,确保OCR Mode设置为force_ocr(强制重新识别),这样对于任何上传的扫描件或PDF都会进行深度文字提取。
企业档案通常涉及严格的权限控制。在Settings -> Groups中创建不同的部门组,如“财务部”、“人事部”。在Settings -> Users中将对应员工加入组,并分配权限。在Settings -> Document Types中定义标准文档类型,如“合同”、“发票”、“凭证”,以便后续自动打标签。
系统支持“摄入文件夹”功能,即监控指定目录自动处理文件。我们将宿主机的/opt/paperless/consume映射到了容器内。只需将企业的电子文档通过SFTP或SCP上传到服务器的/opt/paperless/consume目录,系统会自动将其抓取、OCR识别并归档,无需手动上传。这对于批量导入历史档案非常有用。
对于企业服务,数据备份是底线。本系统数据主要存储在PostgreSQL数据库和media目录中。编写一个简单的备份脚本backup.sh:
写入以下内容:
```bash !/bin/bash DATE=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="/opt/paperless/backups" mkdir -p $BACKUP_DIR 备份数据库 docker compose exec -T db pg_dump -U paperless paperless > $BACKUP_DIR/db_$DATE.sql 打包媒体文件 tar -czf $BACKUP_DIR/media_$DATE.tar.gz ./media 删除7天前的备份 find $BACKUP_DIR -type f -mtime +7 -delete ```赋予执行权限并设置定时任务:
```bash chmod +x /opt/paperless/backup.sh (crontab -l 2>/dev/null; echo "0 2 /opt/paperless/backup.sh") | crontab -此配置将每天凌晨2点自动执行备份,并保留最近7天的数据。恢复时,只需先导入SQL文件,再将media压缩包解压覆盖即可。