下载docker-compose文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
给他一个执行权限
sudo chmod +x /usr/local/bin/docker-compose
Paperless-ngx 部署需要用到非常多外部服务,如数据库等,采用docker compose方式,可以一次性把所有的服务全部部署好,简化安装过程,下面开始进行安装。
1. 部署Paperless-ngx
在Linux 中创建一个文件夹,创建后进入该文件夹
sudo vim /usr/local/ngx/docker-compose.yml
把下面参数复制进去docker-compose.yml 文件里面,
version: "3.6"
services:
broker:
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- /home/paperless_ngx/redisdata:/data
db:
image: docker.io/library/mariadb:10
restart: unless-stopped
volumes:
- /home/paperless_ngx/dbdata:/var/lib/mysql
environment:
MARIADB_HOST: paperless
MARIADB_DATABASE: paperless
MARIADB_USER: paperless
MARIADB_PASSWORD: paperless
MARIADB_ROOT_PASSWORD: paperless
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
ports:
- "8000:8000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
interval: 60s
timeout: 60s
retries: 5
volumes:
- /home/paperless_ngx/data:/usr/src/paperless/data
- /home/paperless_ngx/media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBENGINE: mariadb
PAPERLESS_DBHOST: db
PAPERLESS_DBUSER: paperless
PAPERLESS_DBPASS: paperless
PAPERLESS_DBPORT: 3306
PAPERLESS_TIKAURL: http://tika_container:9998
PAPERLESS_MAX_UPLOAD_SIZE: 1024MB # 设置上传文件大小限制为100MB
paperless_tika_enabled: 1
paperless_tika_gotenberg_endpoint: http://gotenberg:3000
paperless_tika_endpoint: http://tika:9998
gotenberg:
image: docker.io/gotenberg/gotenberg:7.10
restart: unless-stopped
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/.*"
tika:
image: ghcr.io/paperless-ngx/tika:latest
restart: unless-stopped
volumes:
data:
media:
dbdata:
redisdata:
设置挂载目录
mkdir -p data media dbdata redisdata consume export
postgres数据库把下面参数复制进去docker-compose.yml 文件里面,
version: "3.6"
services:
broker:
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- /home/paperless_ngx/redisdata:/data
db:
image: docker.io/library/postgres:15
restart: unless-stopped
volumes:
- /home/paperless_ngx/pgdata:/var/lib/postgresql/data
environment:
postgres_db: paperless
postgres_user: paperless
postgres_password: paperless
POSTGRES_HOST_AUTH_METHOD: trust
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
- gotenberg
- tika
ports:
- "8000:8000"
volumes:
- /home/paperless_ngx/data:/usr/src/paperless/data
- /home/paperless_ngx/media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
env_file: docker-compose.env
environment:
paperless_redis: redis://broker:6379
paperless_dbhost: db
paperless_tika_enabled: 1
paperless_tika_gotenberg_endpoint: http://gotenberg:3000
paperless_tika_endpoint: http://tika:9998
gotenberg:
image: docker.io/gotenberg/gotenberg:7.10
restart: unless-stopped
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/.*"
tika:
image: ghcr.io/paperless-ngx/tika:latest
restart: unless-stopped
volumes:
data:
media:
pgdata:
redisdata:
复制进去后记得保存
一、使用命令行启动容器时配置
docker run --name some-postgres -e POSTGRES_HOST_AUTH_METHOD=trust -d postgres
version: '3'
services:
postgres:
image: postgres
environment:
POSTGRES_HOST_AUTH_METHOD: trust
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
以下是一个在docker - compose.env文件中配置PAPERLESS_TIKA_ENABLED的例子:
假设你已经安装好了Tika,并且希望启用它用于文本提取。在docker - compose.env文件中添加以下行: PAPERLESS_TIKA_ENABLED=true 如果你的Tika服务运行在非默认的位置(比如自定义的IP地址或者端口),还需要配置PAPERLESS_TIKA_URL。例如,如果Tika服务运行在IP地址为192.168.1.10,端口为8888的服务器上,那么可以在docker - compose.env文件中添加如下内容: PAPERLESS_TIKA_ENABLED=true PAPERLESS_TIKA_URL=http://192.168.1.10:8888 这些配置可以让Paperless - ngx知道要使用Tika服务来提取文本,并且能找到该服务的位置。
然后运行下面命令进行启动,执行后等待运行完成,如果卡顿或者卡主不动,可以ctrl+c 退出 重新执行下面命令
docker compose up -d
运行后,输入docker ps
命令,即可看到我们运行的Paperless-ngx服务,对外访问端口为8000
若使用Docker部署,需先安装Docker和Docker Compose,然后创建docker-compose.yml文件,将相关参数复制进去,运行docker compose up -d命令启动服务,再通过docker compose run --rm webserver createsuperuser设置登录用户名和密码.
下面我们进行设置登录的用户名和密码,运行下面命令
docker-compose run --rm webserver createsuperuser
然后按提示设置用户名,邮箱,密码,本例设置的用户名为test,具体可以自己设置,然后按提示输入邮箱,和设置用户名对应的密码,设置后回车提示successful表示成功,下面我们进行访问
2. 本地访问Paperless-ngx
上面运行服务且设置好登录用户名密码后,我们使用Linux局域网IP加端口8000,即可看到Paperless-ngx登录界面
配置 Paperless - ngx 使用 Tika 进行 Office 文件处理
- 确保已经成功部署并运行了
Apache Tika
服务。如果是通过docker - compose
部署,Tika
服务的配置可能如下:
tika_service:
image: apache/tika:latest
container_name: tika_container
volumes:
-./tika_data:/tika_data
ports:
- "9998:9998"
- 可以通过
docker ps -a
查看Tika
容器是否正在运行。同时,检查容器内的Tika
服务是否正常响应请求。可以使用curl
命令进行简单测试,例如curl -I http://localhost:9998
(假设在本地测试且端口映射正确),如果返回状态码为200
左右的响应,说明Tika
服务可访问。
- 通过环境变量设置(推荐)
- 在
Paperless - ngx
的docker - compose.yml
文件中,设置PAPERLESS_TIKAURL
环境变量。这个变量应该指向Tika
服务的正确位置。例如,如果Tika
容器名称是tika_container
,并且端口映射为9998
,环境变量设置如下:
paperless_ngx:
image: ghcr.io/paperless - ngx/paperless - ngx:latest
container_name: paperless_ngx_container
ports:
- "8000:8000"
volumes:
-./paperless_data:/usr/src/paperless/data
-./paperless_media:/usr/src/paperless/media
-./paperless_consume:/usr/src/paperless/consume
environment:
PAPERLESS_TIKAURL: http://tika_container:9998
- 确保
docker - compose.yml
文件中的服务名称(如tika_container
)与实际运行的Tika
容器名称一致。 - 检查其他相关环境变量(可选)
- 根据
Paperless - ngx
的具体需求,可能还需要检查和设置其他与文件处理相关的环境变量。例如,可能存在控制文件大小限制、文件类型过滤等环境变量。参考Paperless-ngx
官方文档来确定是否需要额外设置这些变量。
- 在修改了
Paperless-ngx
的docker-compose.yml
文件后,需要重新启动Paperless-ngx
服务,以使新的配置生效。在包含docker - compose.yml
文件的目录下,使用docker - compose up -d
命令重新启动Paperless - ngx
容器。 - 等待
Paperless-ngx
服务重新启动完成。可以通过查看docker-compose logs -f
来监控启动过程,确保没有出现错误。
- 通过
Paperless-ngx
的 Web 界面(通常通过http://<服务器IP地址>:<端口>
访问,如http://12.34.56.78:8000
)登录到系统。 - 上传一个 Office 文件(如
.docx
、.xlsx
、.pptx
等)。在上传过程中,Paperless-ngx
应该能够自动调用Tika
服务来提取文件内容、元数据等信息。 - 检查文件上传后的索引和预览功能是否正常。例如,查看是否能够正确搜索文件中的文字内容、是否能够正确显示文件的预览(如文档中的文字、表格等内容)。如果出现问题,可以再次查看
Paperless-ngx
和Tika
的容器日志,查找可能的错误原因。