English | 简体中文
A self-hosted personal blogging system with a complete admin dashboard, Markdown editing, built-in analytics, image hosting, and comments.
Website & documentation · Live demo · Changelog
The demo admin username and password are both demo. The documentation and application interface are currently primarily in Chinese; internationalization is on the roadmap.
- A complete blogging system. A public blog, admin dashboard, and backend API, with responsive layouts and automatic light/dark modes for both readers and authors.
- Static pages with incremental updates. The Next.js frontend uses static generation (SSG) and incremental static regeneration (ISR), so content changes do not require rebuilding every page. Pages are CDN-friendly, with lazy-loaded images, customizable article URLs, and support for SEO and accessibility.
- Markdown publishing. A ByteMD editor with Mermaid diagrams, mathematical formulas, custom highlight blocks, an emoji picker, and a shortcut for the
moremarker. Upload local or clipboard images directly from the editor, import Markdown files, and manage posts and drafts in bulk. - Tools for readers. Tables of contents, code copying, categories, tags, search, password-protected articles and categories, friend links, donation links, custom navigation, and RSS feeds.
- Built-in analytics. Visitor statistics and dashboards, plus support for Google Analytics and Baidu Analytics.
- Integrated comments. Waline comments with email notifications and webhooks.
- Image hosting. Built-in image storage and external storage through PicGo, including object storage and GitHub. Images can be compressed and watermarked on upload.
- Customization. Layout settings, custom pages, and custom CSS, HTML, and JavaScript. Extensions can run custom code or call webhooks after selected events. A full theme system and plugin system remain planned work.
- Collaboration and APIs. Collaborator accounts with configurable permissions, token management, and APIs for building a separate frontend or integrating another page generator.
- Deployment and operations. A guided installation script, Docker deployment with AMD64 and ARM64 support, and automatic on-demand HTTPS certificate issuance and renewal through Caddy. The admin dashboard provides import/export, version and update notices, and access to login and Caddy logs.
VanBlog uses an automated AI maintenance workflow to reproduce reported code issues, add regression tests, and open pull requests, with corresponding changelog and documentation updates. The maintainer remains responsible for merging into master and creating release tags. Issues and pull requests are welcome.
Product releases and deployments are triggered by v* tags; documentation deployments are triggered by doc* tags. The live demo and documentation site stay on their latest tagged versions, so they may not yet reflect changes on master.
If you encounter a problem, first check whether it is resolved in the latest published release.
curl -L https://vanblog.mereith.com/vanblog.sh -o vanblog.sh && chmod +x vanblog.sh && ./vanblog.shIf the documentation site is unavailable, use the GitHub raw mirror:
curl -L https://raw.githubusercontent.com/Mereithhh/vanblog/master/scripts/vanblog.sh -o vanblog.sh && chmod +x vanblog.sh && ./vanblog.shTo run the script again later:
./vanblog.shFor other deployment options, see the getting started guide. The default Docker Compose setup runs VanBlog and MongoDB as separate services.
See the reverse proxy guide.
- Backups and migration
- Author logo or images do not load
- HTTP errors after deployment
- Slow Docker image downloads
- Accessing the database externally
- Rolling back
- Upgrading
- Admin errors or continuous loading after an update
- Disabling HTTPS redirects
- More frequently asked questions
VanBlog is a pnpm workspace with a Next.js/React frontend, a NestJS backend using MongoDB, and a Umi/Ant Design admin dashboard. See the development guide and changelog.
Open an issue to report a problem or suggest an improvement. Reproducible code issues enter the automated AI investigation and pull request workflow. Requests to add a site to the showcase are handled by the maintainer, who also handles merges and releases.
Themes and internationalization are long-standing goals for making VanBlog easier to adapt and use across communities. The following items are planned and are not a list of currently available features:
- A custom theme / frontend renderer system
- Internationalization (i18n)
- A plugin system
- Quick sharing buttons
- Browser notifications
- Revision history for posts and drafts
- Simpler configuration, with more settings configurable at runtime
- An ORM layer and support for additional databases
Expanding end-to-end test coverage is also ongoing; server tests and admin end-to-end tests already run for pull requests.
For the historical checklist of completed work, see the Chinese README.
These sites have been shared by the community. To add yours, open an issue.
- Mereith's Blog
- GT 的官方博客
- 無糧不聚兵‘s Blog
- oldmoon
- seek.wiki
- SnailBlog
- Peter's blog
- 我本无罪的博客
- 青菜的杂货铺
- 花菜的博客
- 智芯物联的空间
- Done
- SpaceX
- 没想好的个人博客
- 宁骑播客
- fanyang
If VanBlog is useful to you, donations help support its maintenance. Include your preferred name with your donation if you would like to be listed below.
This historical list may be incomplete: some past records are missing. Please contact the maintainer if your donation was omitted.
| Donor | Amount (CNY) | Date |
|---|---|---|
| Sirit | 6.66 | 2022-09-01 |
| jingcheng | 100 | 2022-09-06 |
| mosuzi | 100 | 2022-09-08 |
| ym679 | 20 | 2022-09-08 |
| wangcw | 100 | 2022-09-13 |
| ziva | 8.80 | 2022-09-15 |
| Velen | 50 | 2022-09-18 |
| pcz | 50 | 2022-10-19 |
| fanyang | 100 | 2025-06-12 |
A historical Lighthouse report is shown below. Results depend on the deployment, content, and test conditions.
VanBlog is licensed under the GNU General Public License v3.0.



