Yeomai 89ea2fb25d
ci / ci (22, ubuntu-latest) (push) Canceled after 0s
feat: 新增视频床与文件床,视频支持 HLS 转码
文件床
- 新增 files/ 存储前缀与 media_type 索引列,图片、视频、文件三类资源独立
- 新增文件上传、列表、删除、批量删除接口,禁止 html/htm/svg
- 支持公开直链与 Token 访问两种模式,后台可切换,直链强制附件下载

视频床
- 新增 videos/ 存储前缀与视频上传接口,单文件上限 500MB
- 接入 ffmpeg 转码队列,并发数与单任务核心数可配,默认串行
- 五档转码质量:直接封装 / 速度 / 平衡 / 质量 / 压缩(压缩档可调码率比例)
- 码率控制避免转码后体积反超源文件,音频跟随源音轨不放大不压缩
- 转码进度实时上报,成功后删除源文件,失败时保留源文件与可用链接
- 上传时自动抽帧生成封面,视频与封面各有独立链接
- 删除视频时中断转码并清理切片、封面与源文件

媒体库
- 图库、视频库、文件库三套独立统计,含趋势、占用与来源分布
- 统一筛选、多选、批量删除、批量标签、网格/列表切换,显示方式按类型分别记忆
- 视频详情对齐图片详情,视频库支持在线播放(hls.js,兼容回退原文件)

修复
- 清理无主的切片、封面与开发期遗留的 ffmpeg 进程
- 源文件按设计删除后,索引不再被启动孤儿清理误删
- 视频统计口径与列表一致,转码中的视频不计入统计
- 转码失败时回收已写入的部分切片,避免残留
- 设置页停用检查更新(与上游版本号已不对应)

其他
- Docker 镜像安装 ffmpeg
- git remote 指向内网仓库
2026-10-17 03:14:57 +08:00
2026-10-10 13:26:42 +08:00
2026-08-22 14:36:57 +08:00
2026-08-22 14:36:57 +08:00
2026-08-22 14:36:57 +08:00
2026-08-22 14:36:57 +08:00
2026-10-10 13:26:42 +08:00
2026-08-27 15:32:31 +08:00
2026-10-10 13:26:42 +08:00
2026-10-09 15:39:24 +08:00
2026-10-09 15:39:24 +08:00
2026-08-22 14:36:57 +08:00
2026-08-22 14:36:57 +08:00

PicHost

PicHost

Lightweight personal image hosting · Simple uploads, clean management

Self-hosted / Multi-user / Docker / API / Twikoo · Local disk or object storage

version CI Nuxt 4 Docker GPL-3.0

Docs · Screenshots · Features · Tech Stack · Quick Start · 简体中文


Screenshots

main has no public demo. cloudflare branch live demo: pic.roven.cc

Upload Gallery
Upload Gallery
API Tag management
API Tags
Storage Settings
Storage Settings
First-time setup Restore from backup
Setup Setup restore
Activity log
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 / public URLs
  • 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 tagIds and 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.php compatible
  • 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

GPL-3.0

LINUX DO

S
Description
No description provided
Readme GPL-3.0
7.8 MiB
0 Stars 1 Watchers 0 Forks
2026-10-18 20:54:03 +08:00
Languages
TypeScript 52.3%
Vue 46%
JavaScript 1.2%
CSS 0.3%
Dockerfile 0.1%