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](https://pic.roven.cc) | API | Gallery | | :--: | :-----: | | ![API](docs/screenshots/api.png) | ![Gallery](docs/screenshots/gallery.png) | | Storage | Settings | | :-----: | :-------: | | ![Storage](docs/screenshots/storage.png) | ![Settings](docs/screenshots/settings-en.png) | ## 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); hybrid `proxy` / `public` URLs - **Gallery** — browse, search, filter by storage/source, grid/list views, batch delete; stats overview and source breakdown - **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](https://nuxt.com) · [Nuxt UI 4](https://ui.nuxt.com) · [Vue 3](https://vuejs.org) · [Tailwind CSS 4](https://tailwindcss.com) · TypeScript | | Backend | [Nitro](https://nitro.build) (`node-server`) · REST API | | Data | SQLite · local `data/pichost.db` | | Images | [sharp](https://sharp.pixelplumbing.com) (server-side WebP) | | Storage | Local disk · S3-compatible ([AWS SDK](https://aws.amazon.com/sdk-for-javascript/) · R2 / COS / OSS, etc.) | | i18n | [@nuxtjs/i18n](https://i18n.nuxtjs.org) (zh-CN / English) | | Quality & docs | [Vitest](https://vitest.dev) · [VitePress](https://vitepress.dev) docs site | | Deploy | Docker · Node.js 22 | ## Quick Start ```bash docker run -d \ --name pichost \ -p 6892:6892 \ -v ./data:/data \ --restart unless-stopped \ muxui/pichost:latest ``` Open `http://:6892` and complete the setup wizard. **Full guide** (env vars, upgrades, dual-domain setup, API, Twikoo, reverse proxy, local dev, etc.): **[Documentation](https://o96u.github.io/PicHost/en/)**. | Branch | Notes | | ------ | ----- | | [**main**](https://github.com/O96u/PicHost/tree/main) | Default: multi-backend, dual-domain, unified `images/` storage | | [**cloudflare**](https://github.com/O96u/PicHost/tree/cloudflare) | Cloudflare R2 only; live demo [pic.roven.cc](https://pic.roven.cc) | ## License [GPL-3.0](LICENSE) ## Friend links [LINUX DO](https://linux.do/)