# huasenjio-compose: a Docker Compose stack for a personal start page

> huasenjio-compose packages a Vue front end, an Express and MongoDB back end, Redis, Nginx and Jenkins into one containerised application with URL navigation, a blog, an admin panel and an AI chat layer. The one-command installer is simple, and the compose file ships default database passwords that you are expected to change.

**huasenjio/huasenjio-compose** — 花森起始页是一款开源的 AI 导航与内容聚合平台，集网址导航、博客、AI 助手、插件授权与后台管理于一体，帮助个人和团队快速搭建智能化上网入口。

- Repository: https://github.com/huasenjio/huasenjio-compose
- Website: https://www.huasenjio.top/
- Stars: 612 · Forks: 121
- Language: JavaScript
- License: Apache-2.0
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/huasenjio-huasenjio-compose

## One stack for a start page, a blog and an admin panel

huasenjio-compose is the container edition of a family of projects by the same author. The project description calls it an open source AI navigation and content aggregation platform, bringing URL navigation, a blog, an AI assistant, plugin licensing and backend management together so that individuals and teams can quickly stand up an intelligent entry point for the web.

The platform itself is described as three parts: the URL navigation site, the blog system, and the administration system. The content covers everyday life, entertainment, study, film and television, postgraduate study, work, technology and practical tools, and the aim is a public interest platform that aggregates an efficient browsing environment.

The scope is much wider than a bookmark manager. On the front end the README lists a responsive interface, offline local storage with no login required and support for data migration and restore, cloud backup with multi-device sync, custom site collection, a right-click colour change for skinning with wallpaper, brightness, blur and custom themes, a minimal mode, aggregation of mainstream search engines with hot word suggestions, in-site link search across site names and descriptions, email login and registration, related tags, link collections, columns and feed sources, a live clock and weather display, and Markdown article reading with a three level anchor table of contents. On top of that sits an AI application for conversation with a knowledge base.

It is a big product, and the repository is one compose project rather than a library.

## Vue and ElementUI on the front, Express and Mongo behind it

The technical architecture section names the stack precisely. The front end is a web application built on Vue.js at version 2.6.x, with ElementUI, Tailwindcss and Axios. The server side is a service framework built on Node.js, Mongodb, Redis and Express. Nginx is used as the proxy that forwards requests, Jenkins implements CI/CD, and Docker provides the one-click containerised deployment.

Vue 2.6 with ElementUI is the detail that dates the project, and it matters for anyone evaluating it now. Vue 2 is the previous major line of the framework, and ElementUI is the component library built for it, so the front end is pinned to an older ecosystem rather than the current one.

The repository layout matches the architecture and is easy to read. At the top level there are huasen-frontend/ for the web client, huasen-server/ for the service, huasen-nginx/ for the proxy configuration, huasen-lib/ for shared library code, huasen-store/ for storage, plus docker-compose.yml, a.env file, a bin/ directory of shortcut scripts, and two copy scripts for mirroring the project to Gitee and other remotes.

The separation is sensible. A compose file can be split into one service per directory, so the front end can be rebuilt without touching the server, and the nginx configuration can be changed without rebuilding either.

## The one-command installer and what it expects

Three deployment routes are documented, and the first is a shell script downloaded from the project site.

```sh
curl -O https://www.huasenjio.top/bin/install.sh && \
curl -O https://www.huasenjio.top/bin/env-lib.sh && \
chmod +x install.sh && \
bash ./install.sh
```

The script is stated to apply to CentOS 7 and 8, OpenCloudOS 9.x, Debian 12 and Ubuntu 22. If it fails, you run it again, and the README points at the documentation in huasenjio-compose/bin/readme.md for questions.

The hardware floor is stated up front: a cloud server with at least 1 core and 2 GB of memory and 2 Mbps or more of bandwidth, otherwise the first load is slow. That is a genuinely small requirement for a stack with a database, a cache, a proxy and a front end, and it tells you the deployment is aimed at a single small server rather than a scaled platform.

The second route is a panel based install, and the third is a fully manual one with Docker, Docker Compose, git and the registry mirror configuration, where the README shows the full sequence of installing Docker on CentOS, setting a mirror source in /etc/docker/daemon.json, and installing docker-compose from a release archive.

## The compose file ships default credentials

Reading docker-compose.yml is the fastest way to understand the runtime shape, and it also shows what you must change before this goes anywhere near the internet.

The MongoDB service runs the image mongo:4.2.2, mounts a host directory at /data/db, and the container command creates a database user with a readWrite role on the huasen database, using environment variables with defaults of huasenjio for the user name and Mongo12345* for the password. The root credentials default to root and guaiMongo233*. The container port 27017 is published on the host as 37017.

The Redis service runs redis:6.0.10-alpine with privileged: true, publishes 6379 as 7379 on the host, and mounts a host directory for its data.

```yaml
  redis:
    image: redis:6.0.10-alpine
    container_name: redis
    restart: always
    privileged: true
```

Three things follow from those lines. The default passwords are in the file, so they are in version control and in any clone of the project, and they have to be replaced in your .env before the first start. The privileged flag on Redis widens the container's capabilities beyond what a cache needs. And the pinned images are old, so a deployment inherits whatever is in mongo 4.2.2 and redis 6.0.10 rather than current versions.

The rest of the file follows the same pattern with a custom bridge network named huasenNetwork, and both services set the timezone to Asia/Shanghai.

## npm scripts wrap the compose workflow

The root package.json is thin and exists to drive Docker Compose.

```json
    "base": "docker-compose stop && docker-compose up redis mongo -d",
    "build:open": "cd ./huasen-frontend && npm install && npm run build",
    "rdd:open": "npm run build:open && docker-compose build --no-cache && docker-compose up -d",
    "build": "cd ./huasen-lib && npm install && npm run build && cd ../huasen-frontend && npm install && npm run build",
    "rdd": "npm run build && docker-compose build --no-cache && docker-compose up -d"
```

The naming is worth learning, because the README does not spell it out. base brings up only the two stateful services, redis and mongo, in the background. The open variants build only the front end, which skips the shared library build. rdd is the full cycle: build the JavaScript, rebuild the images with no cache, and start everything detached.

So a normal development loop is npm run base to get the database and cache up, then npm run rdd after a code change, and the shortcut scripts in bin/ do the same thing with a bit more convenience. The open variants exist because the full build is the slow path, and for front end work you do not need the library rebuilt every time.

One inconsistency to note. The repository licence field says Apache-2.0, while the root package.json declares its licence as MIT, and a LICENSE file sits in the repository root. Which of those governs is not something the README settles, and it is the kind of detail to raise with the project or to resolve yourself before redistributing.

## The admin panel and backend services

The administration side of the platform is where the feature list is longest, and it gives a fair sense of what the project is for.

The admin system covers live visitor and online user statistics with the ability to force a user offline, recording page views, unique visitors, IP addresses, referrers and devices, and monitoring of CPU, memory and disk usage on the server. It publishes Markdown articles with right-click image paste, manages feed sources, columns and link collections, handles users, permissions and IP blacklists, and provides file management for images, video, PDF, documents and archives. Icons for a link can be produced in three ways: by text, by upload, or by crawling the site. There are debugging tools including a runtime script execution panel, JSON formatting and object literal conversion, and a configuration screen that covers the brand name, logo, keywords, description, city, announcement articles, redirect addresses, the JWT key, headHTML and bodyHTML, the footer, the mail service, search engines and wallpaper. Routes are displayed with tags and pages are cached.

The backend service list names a self developed concurrent processing module, a classic MVC architecture with the database and redis decoupled and a direct connection option, permission management with JWT identity checks, encrypted transport including symmetric, asymmetric and digital envelope schemes, a mail service that sends verification codes for registration and login, a logging service that records sensitive operations for security tracing, scheduled task services, WebSocket realtime communication, multi-threaded handling of machine state and access data, file upload with type, size and count limits, CORS, static directories, crawler and blacklist interception middleware, and a graphical captcha on login.

The admin configuration exposes the JWT key, which means whoever can reach the admin panel can read the signing secret for the whole token system. That is a configuration review item, not a flaw, but it is the kind of value that should never sit at a default.

## Two more projects, one paid service, and a gap in the tags

The open source list in the README names the related projects. There is huasen-compose, the all-in-one container edition covered here, a pure front end edition called huasen-portal, a scaffolding tool called huasen-cli, and two items still in the research stage, a low code platform and a workflow engine.

The pure front end edition is the interesting alternative for a specific case. If you want the navigation and blog but not the admin panel, the AI layer, the database and the proxy, the front end only project is the smaller footprint, and it is the one to look at first when the server side of the stack is more than you need.

There is also a paid deployment and upgrade service. The README offers installation and upgrades on a server you provide for a listed price, with question answering and guidance, framed as a donation, and offers paid development for other requirements. A hosted option alongside an open source one is a reasonable way to fund a project, and it is also a signal about who is likely to help you when something breaks.

The maintenance picture is less settled. The last push to the repository was on 2026-06-23, the latest releases are v1.0.0 from 2023-06-18 and 1.0.1 from 2023-11-02, and the interface screenshots are labelled as a snapshot updated on 2024-11-11. The repository is not archived, so work continues, but the published versions are three years old and the demo site is described by the author as running on a weak server, which is why first visits are slow.

## Conclusion

huasenjio-compose suits a self hoster who wants a complete navigation and blog platform with an admin panel and an AI assistant in one stack, and who is comfortable editing a compose file and a MongoDB password before exposing it. It does not suit a team that wants a small, current dependency set, since the shipped images are MongoDB 4.2.2 and Redis 6.0.10 on Vue 2.6. Verify first the default credentials in docker-compose.yml, replace them, and check the licence, because the repository metadata and the root package.json name different licences.

## FAQ

### What server do I need to run huasenjio-compose?

The README asks for at least 1 core and 2 GB of memory with 2 Mbps or more of bandwidth, otherwise the first load is slow. The one-command install script is stated to support CentOS 7 and 8, OpenCloudOS 9.x, Debian 12 and Ubuntu 22.

### How do I install huasenjio-compose with the one-command script?

You download install.sh and env-lib.sh from the project host, make the script executable and run it with bash. If the run fails you run it again, and the README points at the readme in huasenjio-compose/bin for the details.

### Which databases does the huasenjio-compose stack use?

The docker-compose file runs mongo:4.2.2 and redis:6.0.10-alpine as separate services, with the MongoDB user and root credentials taken from environment variables that have defaults in the file, and the container ports published on non-standard host ports.

### What licence does huasenjio-compose use?

The repository licence field says Apache-2.0, while the root package.json declares MIT and a LICENSE file exists in the repository root. The README does not explain the difference, so check the LICENSE file before redistributing.

### Is there a version of huasenjio without the server side?

Yes. The open source list in the README names a pure front end edition, huasen-portal, alongside the container edition and the huasen-cli scaffolding tool, so a navigation and blog site without the admin, AI and database layers is a separate option.

## Sources

- [huasenjio/huasenjio-compose on GitHub](https://github.com/huasenjio/huasenjio-compose)
- [License: Apache-2.0](https://github.com/huasenjio/huasenjio-compose/blob/master/LICENSE)
- [Project website](https://www.huasenjio.top/)
- [README](https://github.com/huasenjio/huasenjio-compose/blob/master/README.md)
- [Releases](https://github.com/huasenjio/huasenjio-compose/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/huasenjio-huasenjio-compose
