环境准备与基础配置
本指南基于Ubuntu 22.04 LTS系统进行演示,目标是在虚拟机中部署Paperless-ngx。这是一款开源的、基于AI的文档管理系统,支持OCR识别、标签管理和自动归档,完全满足企业档案管理需求。
1. 虚拟机规格与系统安装
在VMware Workstation或VirtualBox中创建新虚拟机,具体配置建议如下:
- 操作系统:选择Ubuntu 22.04 LTS Server版本(下载地址:
https://releases.ubuntu.com/22.04/ubuntu-22.04.4-live-server-amd64.iso)。
- 硬件配置:建议分配4核CPU、8GB内存(OCR处理较吃内存)、50GB磁盘空间。
- 网络模式:推荐使用NAT模式或桥接模式,确保虚拟机能访问外网以下载依赖包。
2. 系统基础环境初始化
安装系统完成后,首先登录终端,执行以下命令更新系统源并安装基础工具:
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git gnupg2 software-properties-common apt-transport-https ca-certificates lsb-release
```
为了防止Docker容器占用过多内存导致系统崩溃,建议配置Swap交换空间:
```bash
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
```
Docker环境安装
Paperless-ngx依赖Docker和Docker Compose运行。执行以下脚本一键安装最新版Docker:
```bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
```
安装完成后,将当前用户添加到docker组,避免每次使用sudo:
```bash
sudo usermod -aG docker $USER
newgrp docker
```
验证安装是否成功:
```bash
docker --version
docker compose version
```
部署Paperless-ngx核心服务
我们将创建一个专门的目录来存放配置文件和数据,保证数据持久化。
1. 创建目录结构
```bash
mkdir -p ~/paperless/data
mkdir -p ~/paperless/export
mkdir -p ~/paperless/media
mkdir -p ~/paperless/consume
mkdir -p ~/paperless/db
cd ~/paperless
```
2. 编写Docker Compose配置文件
在~/paperless目录下创建docker-compose.yml文件。该文件定义了Web服务、数据库、缓存、OCR转换工具等组件。请直接复制以下完整内容:
```yaml
version: "3.4"
services:
broker:
image: docker.io/library/redis:7
restart: always
volumes:
- ./data/redis:/data
db:
image: docker.io/library/postgres:15
restart: always
volumes:
- ./data/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
添加OCR依赖
command: ["sh", "-c", "paperless-ngx migrate && gunicorn paperless.asgi:application --bind 0.0.0.0:8000"]
gotenberg:
image: docker.io/gotenberg/gotenberg:7.12
restart: always
environment:
- DISABLE_GOOGLE_CHROME=1
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/."
tika:
image: apache/tika:latest
restart: always
```
3. 配置环境变量
在同一目录下创建.env文件。这是系统的核心配置,包含时区、管理员密码等敏感信息。请务必修改以下配置中的密码部分:
```ini
设置为系统管理员用户名和密码
PAPERLESS_ADMIN_USER=admin
PAPERLESS_ADMIN_PASSWORD=your_secure_password_here
设置时区,OCR识别和文档时间将依赖此项
PAPERLESS_TIME_ZONE=Asia/Shanghai
设置系统允许访问的域名或IP,表示允许所有
PAPERLESS_URL=http://192.168.1.100:8000
设置OCR语言包,默认包含英语和简体中文
PAPERLESS_OCR_LANGUAGE=chi_sim+eng
启用自动重命名已存在的文档
PAPERLESS_ENABLE_DELETE_IF_ALREADY_ARCHIVED=true
配置OCR处理引擎
PAPERLESS_OCR_THREADS=4
``>
注意:请将PAPERLESS_URL中的IP地址替换为你虚拟机的实际IP地址,可通过ip addr命令查看。
4. 启动服务
配置文件就绪后,执行以下命令拉取镜像并启动所有容器:
```bash
docker compose up -d
```

首次启动需要下载镜像,耗时取决于网络速度。启动成功后,查看容器状态:
```bash
docker compose ps
``>
确保所有服务的Status均为Up (healthy)。
配置Nginx反向代理(可选)
为了更安全地访问系统,建议在宿主机或虚拟机内配置Nginx作为反向代理,实现SSL加密访问。
1. 安装Nginx
```bash
sudo apt install nginx -y
```
2. 配置站点文件
创建配置文件/etc/nginx/sites-available/paperless:
```nginx
server {
listen 80;
server_name _;
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;
}
}
```
启用配置并重启Nginx:
```bash
sudo ln -s /etc/nginx/sites-available/paperless /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
```
系统初始化与使用
服务启动后,打开浏览器,访问http://<虚拟机IP>:8000(如果配置了Nginx,则直接访问虚拟机IP)。
1. 创建超级管理员
如果在.env中未预设密码,或需要手动创建管理员,请在~/paperless目录下执行:
```bash
docker compose run --rm webserver createsuperuser
``>
按照提示输入用户名、邮箱和密码。
2. 基础操作流程
- 上传文档:登录Dashboard后,点击右上角“Upload”按钮,将PDF或图片拖入上传区。
- OCR识别:文档上传后会自动进入处理队列,系统会自动提取文字内容。处理完成后,可在右侧边栏看到识别后的文本。
- 自动归档:在“Settings” -> “Document Types”中定义文档类型,并在“Settings” -> “Automation Rules”中设置规则,例如“如果文档包含‘发票’,则自动打上‘财务’标签并归档到‘财务文档’类型”。
数据备份与恢复策略
档案数据至关重要,必须建立定期备份机制。
1. 数据库备份
创建脚本backup.sh,用于导出PostgreSQL数据库:
```bash
!/bin/bash
BACKUP_DIR="./backups"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
docker compose exec -T db pg_dump -U paperless paperless > $BACKUP_DIR/db_backup_$DATE.sql
echo "Database backed up to $BACKUP_DIR/db_backup_$DATE.sql"
```
赋予执行权限并运行:chmod +x backup.sh && ./backup.sh。
2. 文件与数据恢复
恢复时,首先恢复数据库:
```bash
cat ./backups/db_backup_xxx.sql | docker compose exec -T db psql -U paperless paperless
``>
由于docker-compose.yml中已将./data、./media等目录挂载到了本地,因此文件数据实际上已经持久化在虚拟机本地。只需确保这些目录不被删除即可。若迁移服务器,直接打包~/paperless目录到新服务器,执行docker compose up -d即可恢复运行。