十分钟构建高可用档案管理系统云计算实操方案

环境准备与基础组件安装

本方案采用Docker容器化技术,在云服务器(如阿里云ECS、腾讯云CVM或AWS EC2)上快速部署一套企业级档案管理系统。系统核心选用Paperless-ngx,这是一个开源的文档管理系统,支持OCR识别、标签分类和全文检索。底层存储依赖PostgreSQL数据库和Redis消息队列队列。

安装Docker及Docker Compose

执行以下命令一键安装Docker和Compose插件,无需手动配置环境变量:

curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker
sudo apt-get update && sudo apt-get install docker-compose-plugin -y

安装完成后,输入docker info确认服务正常运行。

第一步:创建持久化数据目录

为了避免容器重启导致数据丢失,需要在宿主机创建专门的目录挂载到容器中。执行以下命令创建标准目录结构:

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

目录说明:

  • consume:监控目录,放入此处的文件会被自动导入并归档。
  • export:导出目录,用于存放系统导出的原始文档。
  • media:核心数据目录,存放处理后文档、缩略图及whoosh索引库。
  • db:存放PostgreSQL数据库文件。
  • redis:存放Redis持久化数据。

第二步:编写Docker Compose编排文件

/data/paperless目录下创建docker-compose.yml文件。该文件定义了Web服务、数据库、缓存、OCR转换器及索引服务。请直接复制以下完整配置:

version: "3.8"
services:
broker:
image: docker.io/library/redis:7
restart: always
volumes:
- ./redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 5
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
healthcheck:
test: ["CMD-SHELL", "pg_isready -U paperless -d paperless"]
interval: 30s
timeout: 10s
retries: 5
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: always
depends_on:
db:
condition: service_healthy
broker:
condition: service_healthy
gotenberg:
condition: service_started
tika:
condition: service_started
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:
- .env
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
gotenberg:
image: docker.io/gotenberg/gotenberg:7.10
restart: always
command:
- "gotenberg"
- "--chromium-disable-rpc"
- "--chromium-disable-javascript"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 5
tika:
image: ghcr.io/paperless-ngx/tika:latest
restart: always
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9998/meta"]
interval: 30s
timeout: 10s
retries: 5
tika:
image: ghcr.io/paperless-ngx/tika:latest
restart: always

第三步:配置环境变量

在同一目录下创建.env文件,用于控制系统核心参数。请务必修改PAPERLESS_ADMIN_PASSWORD的值:

 基础配置
PAPERLESS_URL=http://localhost:8000
PAPERLESS_TIMEZONE=Asia/Shanghai
管理员账号密码 (首次启动生效)
PAPERLESS_ADMIN_USER=admin
PAPERLESS_ADMIN_PASSWORD=your_secure_password_here
OCR识别语言包设置 (chi_sim为简体中文)
PAPERLESS_OCR_LANGUAGE=chi_sim+eng
OCR引擎设置 (使用Tesseract)
PAPERLESS_OCR_ENGINE=tesseract
自动重命名已存在的文档
PAPERLESS_FILENAME_FORMAT={created}_{title}_{correspondent}_{tag}
禁用遥测数据上传
PAPERLESS_ENABLE_HTTP_REMOTE_USER=false
PAPERLESS_CSRF_TRUSTED_ORIGINS=http://localhost:8000

第四步:启动服务容器

进入项目目录并执行启动命令。Docker会自动拉取镜像并创建容器网络:

cd /data/paperless
docker compose up -d

首次启动需要下载约1.5GB的镜像文件,请耐心等待。使用docker compose logs -f查看日志,当出现Listening on http://0.0.0.0:8000时表示启动成功。

第五步:配置Nginx反向代理与HTTPS

十分钟构建高可用档案管理系统云计算实操方案

为了公网安全访问,必须配置Nginx进行SSL加密。假设你的域名是archive.example.com,且已解析至服务器IP。

安装Nginx并生成SSL证书(使用Certbot):

sudo apt install nginx certbot python3-certbot-nginx -y
sudo certbot --nginx -d archive.example.com

修改Nginx配置文件/etc/nginx/sites-available/archive.example.com,内容如下:

server {
listen 80;
server_name archive.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name archive.example.com;
ssl_certificate /etc/letsencrypt/live/archive.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/archive.example.com/privkey.pem;
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;
proxy_redirect off;
}
location /static/ {
alias /data/paperless/media/static/;
}
}

执行sudo nginx -t检查配置无误后,运行sudo systemctl reload nginx生效。现在即可通过https://archive.example.com访问系统。

第六步:加载中文OCR识别库

默认容器包含英文库,需手动下载中文训练数据以支持中文档案识别。进入Webserver容器执行:

docker exec -it paperless-webserver-1 bash
apt-get update && apt-get install -y tesseract-ocr-chi-sim
exit

下载完成后,重启容器使配置生效:

docker compose restart webserver

进入系统后台设置(Settings -> OCR Settings),确保OCR Language已选为chi_sim+eng。此时上传扫描版中文PDF,系统将自动提取文字内容。

第七步:自动化备份策略

数据安全至关重要,编写Shell脚本/data/backup.sh实现数据库和文件的自动打包:

!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/data/backups"
mkdir -p $BACKUP_DIR
备份数据库
docker exec paperless-db-1 pg_dump -U paperless paperless > $BACKUP_DIR/db_$DATE.sql
打包核心数据
tar -czf $BACKUP_DIR/media_$DATE.tar.gz /data/paperless/media
删除7天前的备份
find $BACKUP_DIR -type f -mtime +7 -delete

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

chmod +x /data/backup.sh
crontab -e

添加以下行,实现每天凌晨2点自动备份:

0 2    /data/backup.sh
AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

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

微信扫码关注安答联动

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

安答联动档案管理系统