Paperless是一个Python应用程序,它可以接收扫描的文档,对它们进行索引,并在用户的web界面中显示。在本教程中,将在Debian 10上安装带有Nginx HTTPS反向代理的Paperless。
一、需求
Debian 10系统,拥有root访问系统。
一个域名指向您的服务器。
除非另有说明,否则本文档中显示的所有命令都应以root用户身份执行。
将$VISUAL环境变量设置为您选择的文本编辑器。例如,要使用nano:
echo “export VISUAL=nano” >> ~/.bashrc
. ~/.bashrc
二、安装依赖项
Paperless需要几个软件组件来进行安装和操作。按如下方式安装://针狗技术网
apt update
apt install -y gnupg2 python3 python3-dev python3-pip python3-virtualenv tesseract-ocr tesseract-ocr-eng unpaper imagemagick libpoppler-cpp-dev optipng git gcc g++
如果您要使用英语以外的语言的文档,请安装匹配的Tesseract语言文件。例如,对于法语和西班牙语:
apt install -y tesseract-ocr-fra tesseract-ocr-spa
使用以下方法列出所有可用的tesseract软件包:
apt list tesseract-ocr-*
如果您不确定哪种3位字母的代码对应于所需的语言,请参阅此ISO 639-2代码列表。
三、创建系统用户
虽然可以以root用户身份运行Paperless,但强烈建议使用权限较低且已禁用登录的用户。创建名为Paperless的用户和组:
useradd -d /opt/paperless -M -r -s /bin/bash -U -p x paperless
四、安装Paperless
将Paperless Github存储库克隆到/opt/papered
git clone https://github.com/the-paperless-project/paperless.git /opt/paperless
让Paperless用户拥有该目录的所有权:
chown -R paperless:paperless /opt/paperless
复制包含的配置示例作为起点:
cp /opt/paperless/paperless.conf.example /etc/paperless.conf
并在文本编辑器中打开它:
$VISUAL /etc/paperless.conf
选择Paperless将接收扫描文档的目录,并相应地设置Paperless_CONSUMPTION_DIR参数:
PAPERLESS_CONSUMPTION_DIR=”/opt/paperless/paper_in”
查找、取消注释(通过删除#字符)并将以下行的值更改为安全的值:
#PAPERLESS_PASSPHRASE=”secret”
#PAPERLESS_SECRET_KEY=”change-me”
如果您的scanner支持通过电子邮件发送扫描的文档,您可以Paperless地自动从接收收件箱中接收这些文档。要启用此功能,请设置PAPERLESS_CONSUME_MAIL_*选项。出于安全考虑,建议创建一个专用于Paperless的邮件帐户。例如
PAPERLESS_CONSUME_MAIL_HOST=”imap.example.com”
PAPERLESS_CONSUME_MAIL_PORT=”993″
PAPERLESS_CONSUME_MAIL_USER=”paperless@example.com”
PAPERLESS_CONSUME_MAIL_PASS=”imap_password”
保存您的更改并退出,然后将此文件的所有者更改为Paperless文件并收紧其权限:
chown paperless:paperless /etc/paperless.conf
chmod 0400 /etc/paperless.conf
切换到Paperless用户:
su – paperless
创建consumption目录
mkdir /opt/paperless/paper_in
创建一个python虚拟环境。这将提供一个稳定和隔离的环境,我们可以在其中安装Paperless所需的特定python模块和版本。
python3 -m virtualenv –python=/usr/bin/python3 venv
激活它
. venv/bin/activate
安装Paperless所需的python模块:
pip3 install -r requirements.txt
此命令可能需要一段时间。完成后,运行以下命令初始化数据库并为web服务创建静态文件:
cd src/
./manage.py migrate
./manage.py collectstatic
通过运行以下命令并回答提示,为web界面管理员帐户创建登录凭据:
./manage.py createsuperuser
五、初始测试
在设置合适的web服务器和系统服务之前,我们将尝试手动运行Paperless。在这一点上,您仍然应该在虚拟python环境中以Paperless身份登录。
在后台启动web服务器和文档使用者:
./manage.py runserver 0.0.0.0:8000 &
./manage.py document_consumer &
将任何扫描的文档放在步骤3中配置的consumption目录中。例如
wget https://i.imgur.com/DPr5wWG.jpg -O /opt/paperless/paper_in/test1.jpg
浏览到http://IP或者域名:8000/并使用步骤四中选择的凭据登录。在“文档”菜单中,点击“文档”查看文档列表。扫描后的文档应在几分钟内得到处理并可用。
在继续下一步之前停止Paperless:
pkill -f manage.py
六、系统化服务
我们将创建systemd单元文件,以便正确管理web和consumer者服务。退出回到根shell:
exit
为web服务创建单元文件:
$VISUAL /etc/systemd/system/paperless-webserver.service
并输入以下内容:
[Unit]
Description=Paperless Gunicorn Web Server
Requires=network.target
[Service]
User=paperless
Group=paperless
ExecStart=/opt/paperless/venv/bin/gunicorn –pythonpath=/opt/paperless/src paperless.wsgi -w 3 -b 127.0.0.1:8000
Restart=on-failure
[Install]
WantedBy=multi-user.target
注意:您可能需要在ExecStart命令中修改辅助进程的数量。这里显示的服务启动Gunicorn有3个worker(-w 3)。
接下来,为文档使用者流程创建另一个单元文件:
$VISUAL /etc/systemd/system/paperless-consumer.service
并输入以下内容:
[Unit]
Description=Paperless Document Consumer
Requires=network.target
[Service]
User=paperless
Group=paperless
ExecStart=/opt/paperless/venv/bin/python3 /opt/paperless/src/manage.py document_consumer
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动这些服务:
systemctl daemon-reload
systemctl start paperless-webserver.service paperless-consumer.service
确保它们都在运行:
systemctl status paperless-webserver.service paperless-consumer.service
如果您希望paperless在系统启动时自动启动,请执行以下命令:
systemctl enable paperless-webserver.service paperless-consumer.service
七、Nginx反向代理和HTTPS
安装Nginx和certbot:
apt update
apt install -y nginx certbot
确保Nginx已启用并正在运行:
systemctl enable –now nginx.service
使用certbot为您的域获取Let’s Encrypt证书:
certbot certonly –webroot –webroot-path /var/www/html -d your_domain
禁用默认的Nginx配置文件并打开一个新文件:
rm /etc/nginx/sites-enabled/default
$VISUAL /etc/nginx/sites-available/paperless
输入以下内容,将您的_domain替换为您的域名:
server {
listen 80;
server_name your_domain;
return 301 https://$server_name$request_uri;
access_log /var/log/nginx/paperless_access.log;
error_log /var/log/nginx/paperless_error.log;
}
server {
listen 443 ssl;
server_name your_domain;
index index.html index.htm index.php;
access_log /var/log/nginx/paperless_access.log;
error_log /var/log/nginx/paperless_error.log;
ssl on;
ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
location /static {
autoindex on;
alias /opt/paperless/static;
}
location / {
proxy_set_header Host $http_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_pass http://127.0.0.1:8000;
}
}
通过链接到站点启用的Nginx目录中的配置来启用此配置,并检查是否有任何错误:
ln -s /etc/nginx/sites-available/paperless /etc/nginx/sites-enabled
nginx -t
然后加载更改:
systemctl reload nginx.service
您的Paperless现在应该可以访问https://你的域名
八、增强功能
由于Paperless系统用户在初始设置后不需要访问工作shell,我们可以将其更改为/usr/sbin/nologin:
usermod -s /usr/sbin/nologin paperless
故障排除
如果Gunicorn Web服务器无法启动,并显示错误消息[error]Connection in use,请检查是否有任何已绑定到端口8000/tcp的进程:
ss -lntp
如有必要,请杀死/禁用有问题的进程,或修改/etc/systemd/system/paperless-webserver.service和/etc/nginx/sites-enabled/whitered以使用Gunicorn的另一个网络端口。
-
扫码下载安卓APP
-
微信扫一扫关注我们
微信扫一扫打开小程序
手Q扫一扫打开小程序
-
返回顶部
发表评论