feat: add more

This commit is contained in:
Sun-ZhenXing
2025-10-06 21:48:39 +08:00
parent f330e00fa0
commit 3c609b5989
120 changed files with 7698 additions and 59 deletions

76
src/halo/README.md Normal file
View File

@@ -0,0 +1,76 @@
# Halo
[English](./README.md) | [中文](./README.zh.md)
This service deploys Halo, a powerful and easy-to-use open-source blogging and content management system.
## Services
- `halo`: The main Halo application server.
- `halo-db`: PostgreSQL database for Halo.
## Environment Variables
| Variable Name | Description | Default Value |
| ------------------------ | -------------------------------------------------------------- | ----------------------- |
| HALO_VERSION | Halo image version | `2.21.9` |
| HALO_PORT | Host port mapping for Halo web interface | `8090` |
| POSTGRES_VERSION | PostgreSQL image version | `17.2-alpine3.21` |
| POSTGRES_USER | PostgreSQL username | `postgres` |
| POSTGRES_PASSWORD | PostgreSQL password (required) | `postgres` |
| POSTGRES_DB | PostgreSQL database name | `halo` |
| SPRING_R2DBC_URL | R2DBC connection URL | (auto-configured) |
| SPRING_SQL_INIT_PLATFORM | SQL platform type | `postgresql` |
| HALO_EXTERNAL_URL | External URL for Halo | `http://localhost:8090` |
| HALO_ADMIN_USERNAME | Initial admin username | `admin` |
| HALO_ADMIN_PASSWORD | Initial admin password (leave empty to set during first login) | `""` |
Please create a `.env` file and modify it as needed for your use case.
## Volumes
- `halo_data`: A volume for storing Halo application data.
- `halo_db_data`: A volume for storing PostgreSQL data.
## Getting Started
1. (Optional) Create a `.env` file to customize settings:
```env
POSTGRES_PASSWORD=your-secure-password
HALO_EXTERNAL_URL=https://yourdomain.com
```
2. Start the services:
```bash
docker compose up -d
```
3. Access Halo at `http://localhost:8090`
4. Follow the setup wizard to create your admin account (if `HALO_ADMIN_PASSWORD` is not set)
## Initial Setup
On first access, you'll be guided through the initial setup:
- Set your admin account credentials (if not configured via environment)
- Configure site information
- Choose and install a theme from the marketplace
## Documentation
For more information, visit the [official Halo documentation](https://docs.halo.run).
## Theme and Plugin Marketplace
Visit the [Halo Application Store](https://www.halo.run/store/apps) to browse themes and plugins.
## Security Notes
- Change default database password in production
- Use HTTPS in production environments
- Set a strong admin password
- Regularly backup both data volumes
- Keep Halo and PostgreSQL updated to the latest stable versions

76
src/halo/README.zh.md Normal file
View File

@@ -0,0 +1,76 @@
# Halo
[English](./README.md) | [中文](./README.zh.md)
此服务部署 Halo,一个强大易用的开源博客和内容管理系统。
## 服务
- `halo`: Halo 主应用服务器。
- `halo-db`: Halo 的 PostgreSQL 数据库。
## 环境变量
| 变量名 | 描述 | 默认值 |
| ------------------------ | -------------------------------------- | ----------------------- |
| HALO_VERSION | Halo 镜像版本 | `2.21.9` |
| HALO_PORT | Halo Web 界面的主机端口映射 | `8090` |
| POSTGRES_VERSION | PostgreSQL 镜像版本 | `17.2-alpine3.21` |
| POSTGRES_USER | PostgreSQL 用户名 | `postgres` |
| POSTGRES_PASSWORD | PostgreSQL 密码(必需) | `postgres` |
| POSTGRES_DB | PostgreSQL 数据库名 | `halo` |
| SPRING_R2DBC_URL | R2DBC 连接 URL | (自动配置) |
| SPRING_SQL_INIT_PLATFORM | SQL 平台类型 | `postgresql` |
| HALO_EXTERNAL_URL | Halo 的外部 URL | `http://localhost:8090` |
| HALO_ADMIN_USERNAME | 初始管理员用户名 | `admin` |
| HALO_ADMIN_PASSWORD | 初始管理员密码(留空则在首次登录时设置) | `""` |
请创建 `.env` 文件并根据需要进行修改。
## 数据卷
- `halo_data`: 用于存储 Halo 应用数据的卷。
- `halo_db_data`: 用于存储 PostgreSQL 数据的卷。
## 快速开始
1. (可选)创建 `.env` 文件以自定义设置:
```env
POSTGRES_PASSWORD=your-secure-password
HALO_EXTERNAL_URL=https://yourdomain.com
```
2. 启动服务:
```bash
docker compose up -d
```
3. 访问 `http://localhost:8090`
4. 按照设置向导创建管理员账户(如果未通过 `HALO_ADMIN_PASSWORD` 配置)
## 初始设置
首次访问时,您将看到初始设置向导:
- 设置管理员账户凭据(如果未通过环境变量配置)
- 配置站点信息
- 从应用市场选择并安装主题
## 文档
更多信息请访问 [Halo 官方文档](https://docs.halo.run)。
## 主题和插件市场
访问 [Halo 应用市场](https://www.halo.run/store/apps) 浏览主题和插件。
## 安全提示
- 在生产环境中更改默认数据库密码
- 在生产环境中使用 HTTPS
- 设置强管理员密码
- 定期备份两个数据卷
- 保持 Halo 和 PostgreSQL 更新到最新稳定版本

View File

@@ -0,0 +1,68 @@
x-default: &default
restart: unless-stopped
volumes:
- &localtime /etc/localtime:/etc/localtime:ro
- &timezone /etc/timezone:/etc/timezone:ro
logging:
driver: json-file
options:
max-size: 100m
services:
halo:
<<: *default
image: halohub/halo:${HALO_VERSION:-2.21.9}
container_name: halo
ports:
- "${HALO_PORT:-8090}:8090"
volumes:
- halo_data:/root/.halo2
environment:
- SPRING_R2DBC_URL=${SPRING_R2DBC_URL:-r2dbc:pool:postgresql://halo-db:5432/halo}
- SPRING_R2DBC_USERNAME=${POSTGRES_USER:-postgres}
- SPRING_R2DBC_PASSWORD=${POSTGRES_PASSWORD:-postgres}
- SPRING_SQL_INIT_PLATFORM=${SPRING_SQL_INIT_PLATFORM:-postgresql}
- HALO_EXTERNAL_URL=${HALO_EXTERNAL_URL:-http://localhost:8090}
- HALO_SECURITY_INITIALIZER_SUPERADMINUSERNAME=${HALO_ADMIN_USERNAME:-admin}
- HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=${HALO_ADMIN_PASSWORD:-}
depends_on:
halo-db:
condition: service_healthy
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
reservations:
cpus: '0.5'
memory: 512M
halo-db:
<<: *default
image: postgres:${POSTGRES_VERSION:-17.2-alpine3.21}
container_name: halo-db
environment:
- POSTGRES_USER=${POSTGRES_USER:-postgres}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres}
- POSTGRES_DB=${POSTGRES_DB:-halo}
- PGUSER=${POSTGRES_USER:-postgres}
volumes:
- halo_db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
deploy:
resources:
limits:
cpus: '1.0'
memory: 1G
reservations:
cpus: '0.25'
memory: 256M
volumes:
halo_data:
halo_db_data: