PlotVault PDM 配置说明

本文档介绍 PlotVault PDM 的各项配置参数。

环境变量

核心配置

变量名默认值说明
DATA_DIR/data图纸数据目录(library 真实目录 + blobs 版本归档),主机上可直接浏览
CONFIG_DIR/config软件缓存目录(dxf_cache + tmp)
DATABASE_URLpostgres://postgres:postgres@localhost:5432/plotvault_pdmPostgreSQL 连接串(compose 里指向 db 容器)
BIND0.0.0.0:8642监听地址
API_TOKEN设置后所有 API 需 Authorization: Bearer <token>

即使是局域网私有环境,也建议设置 API_TOKEN

Docker Compose 配置示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
version: '3.8'

services:
  db:
    image: postgres:18
    environment:
      POSTGRES_DB: plotvault_pdm
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: <数据库密码>
    volumes:
      - <PGDATA_HOST_PATH>:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  plotvault-pdm:
    image: <DOCKERHUB_USER>/plotvault-pdm-server:latest
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "<HOST_PORT>:8642"
    environment:
      DATABASE_URL: postgres://postgres:<数据库密码>@db:5432/plotvault_pdm
      API_TOKEN: <API_TOKEN>
      DATA_DIR: /data
      CONFIG_DIR: /config
      BIND: 0.0.0.0:8642
    volumes:
      - <DATA_HOST_PATH>:/data
      - <CONFIG_HOST_PATH>:/config

  converter:
    image: <DOCKERHUB_USER>/plotvault-pdm-converter:latest
    ports:
      - "8000:8000"

数据目录结构

DATA_DIR(图纸数据)

data/
├── library/          # 真实目录结构,与客户端看到的文件夹树一致
│   ├── 项目A/
│   │   ├── 零件1.step
│   │   └── 零件1.step
│   └── 项目B/
│       └── 图纸1.dwg
└── blobs/            # 版本归档
    ├── v1/
    │   └── <hash>
    └── v2/
        └── <hash>

CONFIG_DIR(软件缓存)

config/
├── dxf_cache/        # DWG 转 DXF 的缓存
└── tmp/              # 临时文件

安全建议

1. 设置 API Token

即使在局域网环境,也建议设置 API Token:

1
2
3
4
5
# 生成一个随机 token
openssl rand -hex 32

# 将生成的 token 设置到环境变量
API_TOKEN=your_generated_token_here

2. 使用 HTTPS

如果暴露到公网,建议使用反向代理(如 Nginx)配置 HTTPS:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
server {
    listen 443 ssl;
    server_name plotvault.example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://localhost:8642;
        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;
    }
}

3. 限制访问

可以通过防火墙规则限制只允许特定 IP 访问:

1
2
3
# 只允许 192.168.1.0/24 网段访问
iptables -A INPUT -p tcp --dport 8642 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 8642 -j DROP

性能调优

PostgreSQL 优化

对于大量文件的场景,可以调整 PostgreSQL 配置:

# postgresql.conf
shared_buffers = 256MB
effective_cache_size = 1GB
work_mem = 16MB
maintenance_work_mem = 128MB

文件存储优化

  • DATA_DIR 放在 SSD 上可以提高文件读写速度
  • 使用 RAID 配置可以提高数据安全性

备份与恢复

备份

1
2
3
4
5
# 备份图纸数据
cp -r /path/to/data /backup/data

# 备份数据库
docker exec -t db pg_dump -U postgres plotvault_pdm > /backup/plotvault_pdm.sql

恢复

1
2
3
4
5
# 恢复图纸数据
cp -r /backup/data /path/to/data

# 恢复数据库
cat /backup/plotvault_pdm.sql | docker exec -i db psql -U postgres plotvault_pdm

清空重建

1
2
3
4
5
6
7
# 删除配置和数据库(保留图纸文件)
rm -rf /path/to/config
docker exec -t db dropdb -U postgres plotvault_pdm
docker exec -t db createdb -U postgres plotvault_pdm

# 连图纸一起清空
rm -rf /path/to/data