Files
KohakuHub/docs/deployment/docker.md
2026-04-29 21:03:37 +08:00

141 lines
3.2 KiB
Markdown

---
title: Docker Deployment
description: Complete Docker Compose setup guide for KohakuHub.
icon: i-carbon-container-services
---
# Docker Deployment
This guide provides a complete walkthrough for deploying KohakuHub using Docker Compose.
## Quick Deploy (Recommended)
This is the easiest and fastest way to get KohakuHub running.
### 1. Clone the Repository
```bash
git clone https://github.com/KohakuBlueleaf/KohakuHub.git
cd KohakuHub
```
### 2. Configure and Deploy
First, run the interactive script to generate your `docker-compose.yml` file. This will guide you through setting up the database, storage, and other services.
```bash
python scripts/generate_docker_compose.py
```
Then, run the deployment script. This will automatically build the frontend applications and start all the Docker services.
```bash
python scripts/deploy.py
```
That's it! The application is now running.
## Step-by-Step Setup
If you need more control over the setup process, you can follow these manual steps.
### 1. Clone the Repository
```bash
git clone https://github.com/KohakuBlueleaf/KohakuHub.git
cd KohakuHub
```
### 2. Generate `docker-compose.yml`
Copy the example file and manually edit it to fit your environment.
```bash
cp docker-compose.example.yml docker-compose.yml
```
### 3. Build the Frontend
Before starting the services, you need to build the frontend applications:
```bash
pnpm install
pnpm run build
```
### 4. Start the Services
To start all services in detached mode, run:
```bash
docker-compose up -d --build
```
## Security Configuration
It is **critical** to change the default secrets before deploying to production.
### Generate Secret Keys
You can generate secure random strings for your secrets using the following commands:
```bash
# Generate a 64-character random string for session and admin tokens
python scripts/generate_secret.py 64
# Or use openssl
openssl rand -base64 48
```
Update the following variables in your `docker-compose.yml` with the generated secrets:
- `KOHAKU_HUB_SESSION_SECRET`
- `KOHAKU_HUB_ADMIN_SECRET_TOKEN`
- `LAKEFS_AUTH_ENCRYPT_SECRET_KEY`
## Services
The Docker Compose setup includes the following services:
- **hub-ui**: Nginx server for the frontend application (port `28080`).
- **hub-api**: The main FastAPI backend (port `48888`).
- **postgres**: PostgreSQL database for metadata (port `5432`).
- **lakefs**: LakeFS for data versioning (port `28000`). Pinned to
`treeverse/lakefs:latest`; **minimum supported LakeFS is v0.54.0**
(2021-11-08) because the file-list `expand=true` path uses
`logCommits`'s `objects=` / `prefixes=` / `limit=` filters introduced
in that release.
- **minio**: MinIO for S3-compatible object storage (ports `29000` and `29001`).
## Managing the Application
### View Logs
To view the logs for all services, use:
```bash
docker-compose logs -f
```
To view the logs for a specific service, use:
```bash
docker-compose logs -f hub-api
```
### Stop the Services
To stop all running services, use:
```bash
docker-compose down
```
## Accessing the Application
- **Web UI**: `http://localhost:28080`
- **Admin Portal**: `http://localhost:28080/admin`
- **API Docs**: `http://localhost:48888/docs`
- **LakeFS UI**: `http://localhost:28000`
- **MinIO Console**: `http://localhost:29000`