Metadata-Version: 2.4
Name: printbox
Version: 0.2.51
Summary: Turn a minimal Linux box into a headless print server (CUPS / AirPrint / Mopria / WS-Discovery / WebUI / archive).
License: MIT
Project-URL: Homepage, https://github.com/PaulLiszt/printbox
Project-URL: Repository, https://github.com/PaulLiszt/printbox
Keywords: print,cups,airprint,mopria,print-server,iot
Classifier: Operating System :: POSIX :: Linux
Classifier: Topic :: System :: Systems Administration
Classifier: Environment :: Console
Classifier: Intended Audience :: System Administrators
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# PrintBox

把一台**已经装好精简 Linux（Debian / Ubuntu 等 systemd 发行版）**的主机，变成一台无头打印服务器。

> 产品形态：这是一个 **pip 分发的 Python 应用**，不再包含整个操作系统。
> 网络参数、主机名、系统账号等由底层 Linux 自行管理（与系统一致）；
> PrintBox 只负责把打印服务栈跑起来并提供管理界面。

## 功能

- **一键启动**：`sudo printbox init` 后所有服务开机自启；`printbox start/stop/restart/status` 随时管理。
- **全协议无线/有线打印**：CUPS + IPP Everywhere + AirPrint(iOS/macOS) + Mopria(Android/HarmonyOS) + WS-Discovery(Windows) + LPD。
- **Web 管理界面**：状态 / 打印机 / 打印设置 / 系统 / 关于 / 归档 / 打印历史 / 设置 / 日志，局域网 `http://<主机名>.local` 直接访问。打印设置可改纸张/双面/色彩等可选项并设默认打印机；系统页展示硬件用量、网络/WiFi 与系统升级；关于页展示版本与更新日志。
- **自动安装驱动**：探测到打印机后按厂商自动 `apt` 安装对应驱动包（HP / Brother / Samsung / Canon / Epson …）。
- **打印文件归档**：每次打印的原始文件自动保存，按磁盘容量自动算配额，装满轮替删除最旧文件。
- **打印历史**：可预览(PDF)、可一键再次打印。
- **断电不丢参**：配置落盘 `/etc/printbox`，日志落盘 `/var/log/printbox`。

## 安装

**一行命令从 PyPI 安装：**

```bash
pip install printbox
```

安装后初始化（需 root，会自动装系统依赖、写服务、探测打印机）：

```bash
sudo printbox init
```

**或全自动一键（GitHub 安装脚本，自动建 venv + 安装 + 初始化）：**

```bash
curl -sSL https://raw.githubusercontent.com/PaulLiszt/printbox/main/install.sh | sudo bash
```

或在本仓库目录内离线安装：

```bash
sudo ./install.sh --local
```

安装脚本会：创建独立虚拟环境 `/opt/printbox/venv` → 安装 `printbox` →
建立 `/usr/local/bin/printbox` → 运行 `printbox init`（装系统依赖、写服务、探测打印机）。

> 可靠性：脚本**可重复运行**（重跑自动重建 venv 与服务）；逐包安装依赖，**个别在源中已更名的包会自动跳过**，不影响核心服务；**Web 管理界面始终会启动**（不依赖 CUPS 是否装好），打印功能待 CUPS 就绪后自动可用。

## 使用

```bash
sudo printbox status     # 查看服务状态
sudo printbox detect     # 重新探测/添加打印机（自动装驱动）
sudo printbox restart    # 重启全部服务
printbox version         # 显示版本
```

浏览器打开安装结束时显示的 **本机 IP**（如 `http://192.168.1.100`），或 `<主机名>.local`（如 `http://<box>.local`），
即可在 Web 界面管理打印机、查看打印历史与归档。

## 手动从 PyPI 安装（等价）

```bash
python3 -m venv /opt/printbox/venv
/opt/printbox/venv/bin/pip install printbox
ln -s /opt/printbox/venv/bin/printbox /usr/local/bin/printbox
sudo printbox init
```

## 目录约定（FHS）

| 用途 | 路径 |
|---|---|
| 配置 | `/etc/printbox/config.json` |
| 状态/归档 | `/var/lib/printbox`（含 `archive/`） |
| 日志 | `/var/log/printbox/*.log` |
| 命令 | `/usr/local/bin/printbox` |

## 许可证

MIT
