本文将基于Linux环境(推荐Ubuntu 22.04 LTS)部署Paperless-ngx,这是一个开源的企业级文档管理系统,其功能完全覆盖并超越市面上大多数大型档案管理软件的核心功能。我们需要确保系统环境干净并安装必要的依赖。
执行以下命令更新系统并安装Docker及Docker Compose。Docker是确保服务隔离与易于迁移的关键:
```bash sudo apt-get update sudo apt-get install -y curl git curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER ```安装完成后,务必注销当前用户并重新登录,以使Docker用户组权限生效。接着验证安装:
```bash docker --version docker compose version ```为了保证数据的安全性和可维护性,我们不能随意放置文件。请在系统根目录或数据盘下创建统一的工程目录。这里我们选择/opt/paperless作为根目录:
接下来,创建数据持久化所需的子目录。这些目录将分别存储消费文档、导出文件、媒体资源及数据库数据:
```bash mkdir -p consume export media data db redis ```这是整个部署的核心。我们将创建一个docker-compose.yml文件,定义Web服务、PostgreSQL数据库、Redis缓存以及Brokers服务。请完整复制以下内容,不要遗漏任何配置项:
特别注意:请将PAPERLESS_ADMIN_PASSWORD的值修改为您自己的强密码。该配置文件集成了Tika和Gotenberg,这意味着系统不仅能处理PDF,还能完美转换Word、Excel、PowerPoint等Office文档为可归档格式,这是大型档案软件的标准能力。
配置文件保存后,在/opt/paperless目录下执行以下命令拉取镜像并启动所有容器:
首次启动需要下载镜像,大小约为1GB,请耐心等待。启动后,使用docker compose ps查看状态,确保所有服务的Status均为Up (healthy)。
如果Web服务显示healthy,即可通过浏览器访问http://服务器IP:8000。使用配置文件中设置的admin和您修改后的密码登录。
虽然我们在配置中开启了chi_sim(简体中文),但为了达到“规模大”级别的档案管理精度,建议下载额外的中文字库以提升识别率。进入Web容器执行以下操作:

进入容器后,下载并安装中文增强字库:
```bash apt-get update && apt-get install -y tesseract-ocr-chi-sim exit ```现在,上传的任何扫描件或图片,系统都会自动提取其中的中文文字并建立索引。您可以在界面上方的搜索框直接搜索图片中的文字内容,这是实现“知识库”而非简单“文件堆”的关键步骤。
企业级应用必须支持HTTPS。如果您的服务器已拥有域名,建议配置Nginx反向代理。首先安装Nginx:
```bash sudo apt-get install -y nginx certbot python3-certbot-nginx ```创建一个新的站点配置文件:
```bash sudo nano /etc/nginx/sites-available/paperless ```输入以下配置内容(将your_domain.com替换为您的实际域名):
启用配置并申请SSL证书:
```bash sudo ln -s /etc/nginx/sites-available/paperless /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx sudo certbot --nginx -d your_domain.com ``>配置完成后,您即可通过https://your_domain.com安全访问档案系统。
对于档案管理,数据安全是底线。我们需要编写一个自动备份脚本,将数据库和文档目录打包。创建脚本backup.sh:
写入以下内容:
```bash !/bin/bash DATE=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="/backup/paperless" mkdir -p $BACKUP_DIR 备份数据库 docker compose exec -T db pg_dump -U paperless paperless > $BACKUP_DIR/db_$DATE.sql 打包媒体数据和配置 tar -czf $BACKUP_DIR/data_$DATE.tar.gz ./data ./media ./export 删除7天前的备份 find $BACKUP_DIR -name ".sql" -mtime +7 -delete find $BACKUP_DIR -name ".tar.gz" -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天前的旧备份,实现了企业级的数据生命周期管理。