GitHub Release / release (push) Canceled after 0s
ci / ci (22, ubuntu-latest) (push) Canceled after 0s
Publish Docker image / build (linux/amd64, ubuntu-latest, amd64) (push) Canceled after 0s
Publish Docker image / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Canceled after 0s
Publish Docker image / merge (push) Canceled after 0s
102 lines
4.5 KiB
Markdown
102 lines
4.5 KiB
Markdown
PicHost 支持通过环境变量(Docker / `.env`)与后台 **设置** 页配置。管理员在 **设置与偏好**(`/settings`)左侧切换 **基础设置**、**域名与路径**、**访问控制**、**操作日志**;多数项 **SQLite 优先**;部分项环境变量可覆盖或锁定后台编辑。
|
||
|
||
## 优先级总览
|
||
|
||
| 配置项 | 优先级(高 → 低) | 环境变量覆盖后台 |
|
||
| ------ | ----------------- | ---------------- |
|
||
| API 上传 Token | 环境变量 → SQLite | **是**(设了则后台无法重新生成) |
|
||
| WebP 质量 | SQLite → 环境变量 → 默认 80 | 否(未在 DB 存时读 env) |
|
||
| 防盗链白名单 | SQLite → 环境变量 | 否 |
|
||
| 网站 / 图片域名 | SQLite → 环境变量(设置 API 配置值);直链生成另用 `effective*` 或请求 origin | 否 |
|
||
| 简短图片链接 | SQLite → 环境变量 → 默认 false | 否 |
|
||
| 按年/月分组存储 | SQLite → 环境变量 → 默认 true | 否 |
|
||
| 全局自动删除天数 | SQLite → 环境变量 → 默认 0 | 否 |
|
||
|
||
## 变量说明
|
||
|
||
### `API_UPLOAD_TOKEN`
|
||
|
||
外部脚本上传 Token(Twikoo / 油猴 / 博客)。请求头:`Auth-Token: <token>`;表单上传仍可用 `token` 字段。
|
||
|
||
- 未配置时可在后台 **API** 页生成
|
||
- **环境变量一旦设置,优先级最高**,后台显示「由环境变量覆盖」且无法重新生成
|
||
- 别名:`NUXT_API_UPLOAD_TOKEN`
|
||
|
||
### `ALLOWED_REFERER_HOSTS`
|
||
|
||
防盗链白名单,逗号分隔域名。自身域名自动放行。可选;不填可在设置页配置。若环境变量有值且 SQLite 未存,则使用环境变量。
|
||
|
||
### `SITE_BASE_URL` / `IMAGE_BASE_URL`
|
||
|
||
- **网站域名**:管理后台、API、Twikoo 上传入口
|
||
- **图片域名**:复制链接与直链使用的公网地址
|
||
|
||
双域名分离需两者主机名不同,详见 [双域名分离](./domain-separation.md) 与 [Cloudflare / CF 优选部署](./cloudflare-deployment.md)。填写后须与反代 `server_name` 一致;**勿**通过 `localhost`、IP 或未配置的域名访问生产后台。
|
||
|
||
在后台 **设置** 中保存时须显式勾选「启用后台与图片域名分离」,并同时填写两个域名;关闭双域名会清除网站域配置(需确认)。设置 API 返回的配置值与「当前生效」直链地址已分离,详见 [更新日志](./changelog.md#1-2-2-2026-08-30)。
|
||
|
||
### `HIDE_FOLDER_IN_URL`
|
||
|
||
`true` 时使用简短图片链接(仅域名 + 文件名,如 `img.example.com/a8K3xP.webp`);`false` 时保留日期或自定义目录(如 `img.example.com/2026/08/a8K3xP.webp`)。对外 URL **不会** 暴露内部 `images/` 前缀;旧版含 `images/` 的直链仍兼容。
|
||
|
||
### `STORAGE_USE_DATE_PATH` / `STORAGE_LAYOUT`
|
||
|
||
- `STORAGE_USE_DATE_PATH=true`(默认)或 `STORAGE_LAYOUT=date`:新图保存为 `images/年/月/随机ID.webp`
|
||
- `false` 或 `STORAGE_LAYOUT=flat`:保存为 `images/随机ID.webp`
|
||
|
||
也可在设置页切换。
|
||
|
||
### `DATA_DIR`
|
||
|
||
图片与 SQLite 根目录。默认 `./data`,容器内为 `/data`。
|
||
|
||
### `WEBP_QUALITY`
|
||
|
||
服务端 WebP 压缩质量 1–100,默认 **80**。
|
||
|
||
### `AUTO_DELETE_DAYS`
|
||
|
||
全局自动删除超过 N 天的图片,`0` 表示关闭。启用后仅影响**之后新上传**的图片(与按用户策略一致)。也可在设置页配置。
|
||
|
||
### `DEV_BYPASS_ACCESS`
|
||
|
||
仅本地开发:`true` 绕过登录验证。生产环境勿用。
|
||
|
||
### 存储后端(可选)
|
||
|
||
管理员通常在 **存储** 页添加后端;也可用环境变量引导(如 `STORAGE_BACKEND=s3` 与 `S3_*`)。详见 [存储](./storage.md)。
|
||
|
||
## Docker Compose 示例
|
||
|
||
```yaml
|
||
services:
|
||
pichost:
|
||
image: muxui/pichost:latest
|
||
ports:
|
||
- "6892:6892"
|
||
volumes:
|
||
- ./data:/data
|
||
environment:
|
||
SITE_BASE_URL: https://admin.example.com
|
||
IMAGE_BASE_URL: https://pic.example.com
|
||
API_UPLOAD_TOKEN: your-secret-token
|
||
WEBP_QUALITY: "85"
|
||
```
|
||
|
||
修改环境变量后需 **重启容器** 才能生效(Token、质量等读取在启动时或请求时按实现读取)。
|
||
|
||
## 与后台设置对照
|
||
|
||
| 后台设置项 | 对应环境变量 |
|
||
| ---------- | ------------ |
|
||
| API Token | `API_UPLOAD_TOKEN` |
|
||
| 防盗链 | `ALLOWED_REFERER_HOSTS` |
|
||
| 网站域名 | `SITE_BASE_URL` |
|
||
| 图片域名 | `IMAGE_BASE_URL` |
|
||
| 隐藏目录前缀 | `HIDE_FOLDER_IN_URL` |
|
||
| 按年/月分组 | `STORAGE_USE_DATE_PATH` / `STORAGE_LAYOUT` |
|
||
| WebP 质量 | `WEBP_QUALITY` |
|
||
| 自动删除 | `AUTO_DELETE_DAYS` |
|
||
|
||
完整模板见仓库根目录 [`.env.example`](https://github.com/O96u/PicHost/blob/main/.env.example)。
|