89ea2fb25d2ce3683b7a57d0342c5813d55d9dbd
ci / ci (22, ubuntu-latest) (push) Canceled after 0s
文件床 - 新增 files/ 存储前缀与 media_type 索引列,图片、视频、文件三类资源独立 - 新增文件上传、列表、删除、批量删除接口,禁止 html/htm/svg - 支持公开直链与 Token 访问两种模式,后台可切换,直链强制附件下载 视频床 - 新增 videos/ 存储前缀与视频上传接口,单文件上限 500MB - 接入 ffmpeg 转码队列,并发数与单任务核心数可配,默认串行 - 五档转码质量:直接封装 / 速度 / 平衡 / 质量 / 压缩(压缩档可调码率比例) - 码率控制避免转码后体积反超源文件,音频跟随源音轨不放大不压缩 - 转码进度实时上报,成功后删除源文件,失败时保留源文件与可用链接 - 上传时自动抽帧生成封面,视频与封面各有独立链接 - 删除视频时中断转码并清理切片、封面与源文件 媒体库 - 图库、视频库、文件库三套独立统计,含趋势、占用与来源分布 - 统一筛选、多选、批量删除、批量标签、网格/列表切换,显示方式按类型分别记忆 - 视频详情对齐图片详情,视频库支持在线播放(hls.js,兼容回退原文件) 修复 - 清理无主的切片、封面与开发期遗留的 ffmpeg 进程 - 源文件按设计删除后,索引不再被启动孤儿清理误删 - 视频统计口径与列表一致,转码中的视频不计入统计 - 转码失败时回收已写入的部分切片,避免残留 - 设置页停用检查更新(与上游版本号已不对应) 其他 - Docker 镜像安装 ffmpeg - git remote 指向内网仓库
PicHost
Lightweight personal image hosting · Simple uploads, clean management
Self-hosted / Multi-user / Docker / API / Twikoo · Local disk or object storage
Docs · Screenshots · Features · Tech Stack · Quick Start · 简体中文
Screenshots
main has no public demo. cloudflare branch live demo: pic.roven.cc
| Upload | Gallery |
|---|---|
![]() |
![]() |
| API | Tag management |
|---|---|
![]() |
![]() |
| Storage | Settings |
|---|---|
![]() |
![]() |
| First-time setup | Restore from backup |
|---|---|
![]() |
![]() |
| Activity log |
|---|
![]() |
Features
- Drag, click, or Ctrl+V paste — server-side WebP, Referer hotlink protection
- Multi-user — login with slider, Turnstile, or Cap verification; optional registration; users see only their images
- Multi-backend storage — local disk + S3-compatible (R2 / COS / OSS / AWS) + Telegram channel/group; hybrid
proxy/publicURLs - Gallery — browse, search, filter by storage/source/tags, grid/list views, batch delete and batch tagging; stats overview and source breakdown; image detail modal with link formats
- Tags — per-user colored tags; tag on upload (single or batch); manage in Settings (create, recolor, merge, delete); API supports
tagIdsand batch tagging - Backup & migration — full-site export/restore (
.phost.tar.gz), cross-backend sync; restore from backup on uninitialized/setup - API & Twikoo — global / per-user tokens;
POST /api/index.phpcompatible - Zero-config Docker — first-run web wizard, no secrets upfront
Tech Stack
| Layer | Technologies |
|---|---|
| Frontend | Nuxt 4 · Nuxt UI 4 · Vue 3 · Tailwind CSS 4 · TypeScript |
| Backend | Nitro (node-server) · REST API |
| Data | SQLite · local data/pichost.db |
| Images | sharp (server-side WebP) |
| Storage | Local disk · S3-compatible (AWS SDK · R2 / COS / OSS, etc.) · Telegram channel/group |
| i18n | @nuxtjs/i18n (zh-CN / English) |
| Quality & docs | Vitest · VitePress docs site |
| Deploy | Docker · Node.js 22 |
Quick Start
docker run -d \
--name pichost \
-p 6892:6892 \
-v ./data:/data \
--restart unless-stopped \
muxui/pichost:latest
Open http://<host>:6892 and complete the setup wizard.
Full guide (env vars, upgrades, dual-domain setup, API, Twikoo, reverse proxy, local dev, etc.): Documentation.
| Branch | Notes |
|---|---|
| main | Default: multi-backend, dual-domain, unified images/ storage |
| cloudflare | Cloudflare R2 only; live demo pic.roven.cc |
License
Friend links
Releases
1
PicHost v1.5.3
Latest
Languages
TypeScript
52.3%
Vue
46%
JavaScript
1.2%
CSS
0.3%
Dockerfile
0.1%









