后台仪表盘

广受欢迎的开源明星项目

多场景建站
博客 - 流畅的编辑体验,快速记录个人想法、发布企业新闻动态
知识库 - 全局搜索与智能问答,构建可持续演进的知识体系
企业官网 - 模块化内容结构,稳定呈现品牌形象与产品服务
在线商城 - 内置商城模块,低门槛迅捷开启在线销售强大的核心能力
内置编辑器 - 支持富文本与 MD 格式,支持插入多种内容元素
配置表单 - 结构化配置表单,显著提升站点配置效率
日志与监控 - 提供站点运行日志与状态监控
备份与恢复 - 支持站点数据备份与快速恢复
数据迁移 - 支持将站点数据从其他平台迁移至 Halo高度可扩展
插件机制 - 一键启用 / 关停,独立运载,扩展自如
主题模板 - 丰富的主题资源,打造独特站点风格
RESTful API - 完善的 API 支持,便于集成与二次开发
多种存储策略 - 支持本地及 S3 协议对象存储
身份认证 - 支持多种认证方式,构筑企业级安全访问全面拥抱 AI
AI 辅助创作 - 智能生成内容,提升创作效率
AI 问答助手 - 将知识库转化为可交互的问答系统
灵活集成 - 支持多种 AI 模型和服务商自由切换
AI Agents 友好 - 提供 Halo CLI 和配套 Skillscompose下载地址
https://github.com/docker/compose/releases部署halo-compose.yaml镜像自行替换,根据自己需求映射端口
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.27.1
restart: on-failure:3
container_name: halo
depends_on:
halodb:
condition: service_healthy
networks:
halo:
volumes:
- /data/halo:/root/.halo2
- /etc/localtime:/etc/localtime
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
# JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=mysql用户名
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=mysql密码
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
halodb:
image: mysql:8.0.46-bookworm
container_name: halodb
restart: always
volumes:
- /data/mysql:/var/lib/mysql
networks:
halo:
command:
- --default-authentication-plugin=caching_sha2_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
- --binlog_expire_logs_seconds=604800
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
- MYSQL_ROOT_PASSWORD=mysql密码
- MYSQL_DATABASE=halo
cap_add:
- SYS_NICE
haloweb:
image: openresty/openresty:1.27.1.2-12-bookworm-fat
container_name: haloweb
restart: always
networks:
halo:
ports:
- "80:80"
volumes:
- /data/nginx/conf.d:/etc/nginx/conf.d
- /data/nginx/logs:/usr/local/openresty/nginx/logs
- /data/nginx/html:/usr/local/openresty/nginx/html
- /etc/localtime:/etc/localtime
depends_on:
halodb:
condition: service_healthy
halo:
condition: service_healthy
networks:
halo:
name: halodocker-compose -f halo-compose.yaml up -d编辑haloweb代理配置blog.conf,修改server_name对应域名,根据需求做优化
real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;
real_ip_recursive on;
log_format blog '[$time_local] $remote_addr - $remote_user "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
listen 80 default_server;
server_name _;
return 403;
}
server {
server_name xxxxx.com;
listen 80;
client_max_body_size 50M;
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
}
access_log /usr/local/openresty/nginx/logs/blog_access_$year-$month-$day.log blog;
error_log /usr/local/openresty/nginx/logs/blog_error.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://halo:8090/;
}
}将blog.conf放到/data/nginx/conf.d目录下,然后重启haloweb
docker restart haloweb部署后截图
