commit 58f31e698d9a856ef4c8b096c2beb0e13cd5affd Author: tech Date: Fri Mar 20 15:58:32 2026 +0800 init commit diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..a4e38ac --- /dev/null +++ b/.env.example @@ -0,0 +1,16 @@ +# Gitea 版本 +GITEA_VERSION=1.25.4 + +# 端口配置 +HTTP_PORT=3000 +SSH_PORT=2222 + +# 时区 +TZ=Asia/Shanghai + +# Git LFS 配置 +GITEA__lfs__START_SERVER=true +GITEA__lfs__PATH=/data/git/lfs + +# 禁用公开注册(仅管理员可创建账号) +GITEA__service__DISABLE_REGISTRATION=true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bd459af --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +# 数据目录 +data/ + +# 环境变量(可能包含敏感信息) +.env + +# macOS +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..ed5f630 --- /dev/null +++ b/README.md @@ -0,0 +1,91 @@ +# Gitea 局域网部署 + +使用 Docker Compose 部署的 Gitea Git 服务。 + +## 快速开始 + +### 1. 配置环境变量 + +复制并编辑 `.env` 文件: + +```bash +cp .env.example .env +``` + +修改端口等配置: + +```env +HTTP_PORT=3000 # Web 界面端口 +SSH_PORT=2222 # SSH 端口 +``` + +### 2. 启动服务 + +```bash +docker compose up -d +``` + +### 3. 初始配置 + +首次访问 `http://<服务器IP>:3000` 会进入安装向导: + +1. 设置管理员账户 +2. 配置服务器域名(可选) +3. 数据库已默认使用 SQLite + +## 访问方式 + +| 方式 | 地址 | +|-----|------| +| Web 界面 | `http://:3000` | +| HTTP 克隆 | `git clone http://:3000/<用户>/<仓库>.git` | +| SSH 克隆 | `git clone ssh://git@:2222/<用户>/<仓库>.git` | + +## Git LFS + +已启用 Git LFS 支持,使用方法: + +```bash +git lfs install +git lfs track "*.psd" +git add .gitattributes +git commit -m "Track PSD files with LFS" +git push +``` + +## 数据备份 + +备份 `data/` 目录: + +```bash +# 备份 +tar -czvf gitea-backup-$(date +%Y%m%d).tar.gz data/ + +# 恢复 +tar -xzvf gitea-backup-20260320.tar.gz +``` + +重要文件: +- `data/gitea/gitea.db` - 用户和配置数据 +- `data/git/repositories/` - 仓库数据 +- `data/git/lfs/` - LFS 文件 + +## 常用命令 + +```bash +# 启动 +docker compose up -d + +# 停止 +docker compose down + +# 查看日志 +docker compose logs -f + +# 重启 +docker compose restart + +# 更新版本 +# 修改 .env 中的 GITEA_VERSION 后 +docker compose up -d +``` diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..c793011 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,19 @@ +services: + gitea: + image: gitea/gitea:${GITEA_VERSION} + container_name: gitea + environment: + - TZ=${TZ} + - GITEA__lfs__START_SERVER=${GITEA__lfs__START_SERVER} + - GITEA__lfs__PATH=${GITEA__lfs__PATH} + - GITEA__service__DISABLE_REGISTRATION=${GITEA__service__DISABLE_REGISTRATION} + restart: always + volumes: + - ./data:/data + ports: + - "${HTTP_PORT}:3000" + - "${SSH_PORT}:22" + +networks: + default: + driver: bridge diff --git a/docs/superpowers/plans/2026-03-20-gitea-lan-deployment.md b/docs/superpowers/plans/2026-03-20-gitea-lan-deployment.md new file mode 100644 index 0000000..9202a7c --- /dev/null +++ b/docs/superpowers/plans/2026-03-20-gitea-lan-deployment.md @@ -0,0 +1,282 @@ +# Gitea 局域网部署实现计划 + +> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** 使用 Docker Compose 部署 Gitea Git 服务,支持 HTTP/SSH 访问和 Git LFS + +**Architecture:** 单容器部署,SQLite 数据库,宿主机目录挂载持久化数据,通过 .env 文件配置端口和环境变量 + +**Tech Stack:** Docker Compose, Gitea 1.25.4, SQLite + +--- + +## 文件结构 + +| 文件 | 职责 | +|-----|------| +| `docker-compose.yml` | 容器编排配置:镜像、端口、卷、环境变量 | +| `.env` | 可配置参数:版本、端口、时区、LFS 配置 | +| `.gitignore` | 忽略数据目录和环境变量文件 | +| `README.md` | 使用说明:启动、访问、备份 | + +--- + +## Chunk 1: 基础配置文件 + +### Task 1: 创建 .env 环境变量文件 + +**Files:** +- Create: `.env` + +- [ ] **Step 1: 创建 .env 文件** + +```env +# Gitea 版本 +GITEA_VERSION=1.25.4 + +# 端口配置 +HTTP_PORT=3000 +SSH_PORT=2222 + +# 时区 +TZ=Asia/Shanghai + +# Git LFS 配置 +GITEA__lfs__START_SERVER=true +GITEA__lfs__PATH=/data/git/lfs +``` + +- [ ] **Step 2: 验证文件创建成功** + +Run: `cat .env` +Expected: 显示上述内容 + +--- + +### Task 2: 创建 docker-compose.yml + +**Files:** +- Create: `docker-compose.yml` + +- [ ] **Step 1: 创建 docker-compose.yml 文件** + +```yaml +services: + gitea: + image: gitea/gitea:${GITEA_VERSION} + container_name: gitea + environment: + - TZ=${TZ} + - GITEA__lfs__START_SERVER=${GITEA__lfs__START_SERVER} + - GITEA__lfs__PATH=${GITEA__lfs__PATH} + restart: always + volumes: + - ./data:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: + - "${HTTP_PORT}:3000" + - "${SSH_PORT}:22" + +networks: + default: + driver: bridge +``` + +- [ ] **Step 2: 验证 Docker Compose 配置语法** + +Run: `docker compose config` +Expected: 无错误,显示解析后的配置 + +--- + +### Task 3: 创建 .gitignore + +**Files:** +- Create: `.gitignore` + +- [ ] **Step 1: 创建 .gitignore 文件** + +```gitignore +# 数据目录 +data/ + +# 环境变量(可能包含敏感信息) +.env + +# macOS +.DS_Store +``` + +- [ ] **Step 2: 验证文件创建成功** + +Run: `cat .gitignore` +Expected: 显示上述内容 + +--- + +### Task 4: 创建 README.md 使用说明 + +**Files:** +- Create: `README.md` + +- [ ] **Step 1: 创建 README.md 文件** + +```markdown +# Gitea 局域网部署 + +使用 Docker Compose 部署的 Gitea Git 服务。 + +## 快速开始 + +### 1. 配置环境变量 + +复制并编辑 `.env` 文件: + +```bash +cp .env.example .env +``` + +修改端口等配置: + +```env +HTTP_PORT=3000 # Web 界面端口 +SSH_PORT=2222 # SSH 端口 +``` + +### 2. 启动服务 + +```bash +docker compose up -d +``` + +### 3. 初始配置 + +首次访问 `http://<服务器IP>:3000` 会进入安装向导: + +1. 设置管理员账户 +2. 配置服务器域名(可选) +3. 数据库已默认使用 SQLite + +## 访问方式 + +| 方式 | 地址 | +|-----|------| +| Web 界面 | `http://:3000` | +| HTTP 克隆 | `git clone http://:3000/<用户>/<仓库>.git` | +| SSH 克隆 | `git clone ssh://git@:2222/<用户>/<仓库>.git` | + +## Git LFS + +已启用 Git LFS 支持,使用方法: + +```bash +git lfs install +git lfs track "*.psd" +git add .gitattributes +git commit -m "Track PSD files with LFS" +git push +``` + +## 数据备份 + +备份 `data/` 目录: + +```bash +# 备份 +tar -czvf gitea-backup-$(date +%Y%m%d).tar.gz data/ + +# 恢复 +tar -xzvf gitea-backup-20260320.tar.gz +``` + +重要文件: +- `data/gitea/gitea.db` - 用户和配置数据 +- `data/git/repositories/` - 仓库数据 +- `data/git/lfs/` - LFS 文件 + +## 常用命令 + +```bash +# 启动 +docker compose up -d + +# 停止 +docker compose down + +# 查看日志 +docker compose logs -f + +# 重启 +docker compose restart + +# 更新版本 +# 修改 .env 中的 GITEA_VERSION 后 +docker compose up -d +``` +``` + +- [ ] **Step 2: 验证文件创建成功** + +Run: `cat README.md` +Expected: 显示上述内容 + +--- + +## Chunk 2: 创建示例配置和验证 + +### Task 5: 创建 .env.example 示例文件 + +**Files:** +- Create: `.env.example` + +- [ ] **Step 1: 创建 .env.example 文件** + +```env +# Gitea 版本 +GITEA_VERSION=1.25.4 + +# 端口配置 +HTTP_PORT=3000 +SSH_PORT=2222 + +# 时区 +TZ=Asia/Shanghai + +# Git LFS 配置 +GITEA__lfs__START_SERVER=true +GITEA__lfs__PATH=/data/git/lfs +``` + +- [ ] **Step 2: 验证文件创建成功** + +Run: `cat .env.example` +Expected: 显示上述内容 + +--- + +### Task 6: 最终验证 + +- [ ] **Step 1: 检查所有文件已创建** + +Run: `ls -la` +Expected: 显示 `docker-compose.yml`, `.env`, `.env.example`, `.gitignore`, `README.md` + +- [ ] **Step 2: 验证 Docker Compose 配置** + +Run: `docker compose config` +Expected: 无错误输出,显示完整配置 + +- [ ] **Step 3: (可选)启动服务测试** + +Run: `docker compose up -d` +Expected: 容器启动成功 + +--- + +## 完成标准 + +- [ ] 所有配置文件已创建 +- [ ] `docker compose config` 验证通过 +- [ ] 服务可以正常启动 +- [ ] 可以通过 Web 界面访问安装向导 diff --git a/docs/superpowers/specs/2026-03-20-gitea-lan-deployment-design.md b/docs/superpowers/specs/2026-03-20-gitea-lan-deployment-design.md new file mode 100644 index 0000000..fe9bbbd --- /dev/null +++ b/docs/superpowers/specs/2026-03-20-gitea-lan-deployment-design.md @@ -0,0 +1,122 @@ +# Gitea 局域网部署设计 + +## 概述 + +使用 Docker Compose 在局域网中部署 Gitea Git 服务,支持 HTTP 和 SSH 访问,启用 Git LFS 支持。 + +## 需求 + +- 仅局域网使用 +- Docker Compose 容器化部署 +- 数据库:SQLite(简单可靠) +- 访问方式:HTTP + SSH +- 端口配置:通过 `.env` 文件灵活配置 +- 数据存储:宿主机目录挂载 +- 支持 Git LFS +- 镜像版本:固定版本(避免 latest) + +## 技术选型 + +| 组件 | 选择 | 说明 | +|-----|------|-----| +| Gitea 版本 | 1.25.4 | 当前最新稳定版 | +| 数据库 | SQLite | 零配置,适合小规模使用 | +| 容器镜像 | gitea/gitea:1.25.4 | 官方镜像,固定版本 | + +## 目录结构 + +``` +gitea/ +├── docker-compose.yml # 容器编排配置 +├── .env # 环境变量(端口等配置) +├── .gitignore # 忽略数据目录和敏感文件 +└── data/ # Gitea 数据(挂载目录) + ├── git/ # Git 仓库数据 + │ ├── repositories/ # 仓库存储 + │ └── lfs/ # LFS 文件存储 + ├── gitea/ # Gitea 配置和数据库 + │ ├── gitea.db # SQLite 数据库(用户数据) + │ └── conf/app.ini # 配置文件 + └── ssh/ # SSH 密钥 +``` + +## 配置文件 + +### .env - 环境变量 + +```env +# 镜像版本 +GITEA_VERSION=1.25.4 + +# 端口配置 +HTTP_PORT=3000 +SSH_PORT=2222 + +# 时区 +TZ=Asia/Shanghai + +# Git LFS 配置 +GITEA__lfs__START_SERVER=true +GITEA__lfs__PATH=/data/git/lfs +``` + +### docker-compose.yml + +- 镜像:`gitea/gitea:${GITEA_VERSION}` +- 端口映射: + - `${HTTP_PORT}:3000` - Web 界面和 HTTP Git 操作 + - `${SSH_PORT}:22` - SSH Git 操作 +- 数据卷挂载:`./data:/data` +- 环境变量:从 `.env` 文件读取 +- 重启策略:`always` +- 网络:bridge 模式 + +### .gitignore + +忽略 `data/` 目录和 `.env` 文件(避免敏感信息提交) + +## 数据存储说明 + +| 数据类型 | 容器内路径 | 宿主机路径 | +|---------|-----------|-----------| +| 用户账户、权限 | /data/gitea/gitea.db | ./data/gitea/gitea.db | +| Git 仓库 | /data/git/repositories/ | ./data/git/repositories/ | +| SSH 密钥 | /data/git/.ssh/ | ./data/git/.ssh/ | +| LFS 文件 | /data/git/lfs/ | ./data/git/lfs/ | +| 配置文件 | /data/gitea/conf/app.ini | ./data/gitea/conf/app.ini | + +## 使用方式 + +### 启动服务 + +```bash +docker compose up -d +``` + +### 访问方式 + +- Web 界面:`http://<服务器IP>:3000` +- HTTP 克隆:`git clone http://<服务器IP>:3000/用户/仓库.git` +- SSH 克隆:`git clone ssh://git@<服务器IP>:2222/用户/仓库.git` + +### 初始配置 + +首次访问 Web 界面会进入安装向导,需要: +1. 设置管理员账户 +2. 配置服务器域名等基本信息 +3. 数据库已使用 SQLite,无需额外配置 + +### 备份 + +备份 `./data/` 目录即可,特别是: +- `./data/gitea/gitea.db` - 用户和配置数据 +- `./data/git/repositories/` - 仓库数据 +- `./data/git/lfs/` - LFS 文件 + +## 文件清单 + +需要创建的文件: +1. `docker-compose.yml` - Docker Compose 配置 +2. `.env` - 环境变量配置 +3. `.gitignore` - Git 忽略规则 +4. `README.md` - 使用说明文档