kiroproxy / kiro_proxy /docs /05-server-deploy.md
KiroProxy User
chore: repo cleanup and maintenance
0edbd7b
# 服务器部署指南
本文档详细介绍如何在各种服务器环境中部署 Kiro Proxy。
## 目录
- [方式一:预编译二进制(推荐)](#方式一预编译二进制推荐)
- [方式二:从源码运行](#方式二从源码运行)
- [方式三:Docker 部署](#方式三docker-部署)
- [账号配置](#账号配置)
- [开机自启配置](#开机自启配置)
- [反向代理配置](#反向代理配置)
- [常见问题](#常见问题)
---
## 方式一:预编译二进制(推荐)
最简单的方式,不需要安装任何依赖。
### Linux (x86_64)
```bash
# 下载最新版本
wget https://github.com/petehsu/KiroProxy/releases/latest/download/KiroProxy-1.7.1-linux-x86_64
# 添加执行权限
chmod +x KiroProxy-1.7.1-linux-x86_64
# 运行
./KiroProxy-1.7.1-linux-x86_64
# 指定端口
./KiroProxy-1.7.1-linux-x86_64 8081
```
**使用 curl 下载:**
```bash
curl -LO https://github.com/petehsu/KiroProxy/releases/latest/download/KiroProxy-1.7.1-linux-x86_64
chmod +x KiroProxy-1.7.1-linux-x86_64
./KiroProxy-1.7.1-linux-x86_64
```
**Debian/Ubuntu 使用 deb 包:**
```bash
wget https://github.com/petehsu/KiroProxy/releases/latest/download/kiroproxy_1.7.1_amd64.deb
sudo dpkg -i kiroproxy_1.7.1_amd64.deb
# 运行
KiroProxy
```
**Fedora/RHEL/CentOS 使用 rpm 包:**
```bash
wget https://github.com/petehsu/KiroProxy/releases/latest/download/kiroproxy-1.7.1-1.x86_64.rpm
sudo rpm -i kiroproxy-1.7.1-1.x86_64.rpm
# 运行
KiroProxy
```
### macOS
```bash
# Intel Mac
curl -LO https://github.com/petehsu/KiroProxy/releases/latest/download/KiroProxy-1.7.1-macos-x86_64
chmod +x KiroProxy-1.7.1-macos-x86_64
./KiroProxy-1.7.1-macos-x86_64
# 如果提示无法验证开发者,运行:
xattr -d com.apple.quarantine KiroProxy-1.7.1-macos-x86_64
```
### Windows
```powershell
# PowerShell 下载
Invoke-WebRequest -Uri "https://github.com/petehsu/KiroProxy/releases/latest/download/KiroProxy-1.7.1-windows-x86_64.exe" -OutFile "KiroProxy.exe"
# 运行
.\KiroProxy.exe
# 指定端口
.\KiroProxy.exe 8081
```
---
## 方式二:从源码运行
需要 Python 3.9+ 和 Git。
### 安装 Git(如果没有)
**Ubuntu/Debian:**
```bash
sudo apt update
sudo apt install git -y
```
**CentOS/RHEL/Fedora:**
```bash
sudo yum install git -y
# 或
sudo dnf install git -y
```
**macOS:**
```bash
# 安装 Xcode Command Line Tools
xcode-select --install
# 或使用 Homebrew
brew install git
```
**Windows:**
从 https://git-scm.com/download/win 下载安装
### 安装 Python(如果没有)
**Ubuntu/Debian:**
```bash
sudo apt update
sudo apt install python3 python3-pip python3-venv -y
```
**CentOS/RHEL 8+:**
```bash
sudo dnf install python39 python39-pip -y
```
**Fedora:**
```bash
sudo dnf install python3 python3-pip -y
```
**macOS:**
```bash
brew install python@3.11
```
**Windows:**
从 https://www.python.org/downloads/ 下载安装,勾选 "Add to PATH"
### 克隆并运行
```bash
# 克隆项目
git clone https://github.com/petehsu/KiroProxy.git
cd KiroProxy
# 创建虚拟环境(推荐)
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 运行
python run.py
# 指定端口
python run.py 8081
# 或使用 CLI
python run.py serve -p 8081
```
### 更新到最新版本
```bash
cd KiroProxy
git pull origin main
pip install -r requirements.txt
```
---
## 方式三:Docker 部署
### 使用 Dockerfile
创建 `Dockerfile`:
```dockerfile
FROM python:3.11-slim
WORKDIR /app
# 安装依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制代码
COPY . .
# 暴露端口
EXPOSE 8080
# 数据目录
VOLUME ["/root/.kiro-proxy"]
# 启动
CMD ["python", "run.py"]
```
构建并运行:
```bash
docker build -t kiro-proxy .
docker run -d -p 8080:8080 -v kiro-data:/root/.kiro-proxy --name kiro-proxy kiro-proxy
```
### Docker Compose
创建 `docker-compose.yml`:
```yaml
version: '3'
services:
kiro-proxy:
build: .
ports:
- "8080:8080"
volumes:
- kiro-data:/root/.kiro-proxy
restart: unless-stopped
volumes:
kiro-data:
```
运行:
```bash
docker-compose up -d
```
---
## 账号配置
服务器通常没有浏览器,有以下几种方式添加账号:
### 方式一:远程登录链接(推荐)
1. 在服务器上启动 KiroProxy
2. 在本地浏览器打开 `http://服务器IP:8080`
3. 点击「远程登录链接」按钮
4. 复制生成的链接,在本地浏览器打开
5. 完成 Google/GitHub 授权
6. 账号自动添加到服务器
### 方式二:导入导出
**本地电脑:**
```bash
# 运行 KiroProxy 并登录
python run.py
# 导出账号
python run.py accounts export -o accounts.json
```
**服务器:**
```bash
# 上传 accounts.json 到服务器后导入
python run.py accounts import accounts.json
# 或使用 curl
curl -X POST http://localhost:8080/api/accounts/import \
-H "Content-Type: application/json" \
-d @accounts.json
```
### 方式三:手动添加 Token
1. 在本地 Kiro IDE 登录
2. 找到 `~/.aws/sso/cache/` 目录下的 JSON 文件
3. 复制 `accessToken` 和 `refreshToken`
**服务器上:**
```bash
# 交互式添加
python run.py accounts add
# 或使用 API
curl -X POST http://localhost:8080/api/accounts/manual \
-H "Content-Type: application/json" \
-d '{
"name": "我的账号",
"access_token": "eyJ...",
"refresh_token": "eyJ..."
}'
```
### 方式四:扫描本地 Token
如果服务器上安装了 Kiro IDE 并已登录:
```bash
python run.py accounts scan --auto
```
---
## 开机自启配置
### Linux (systemd)
创建服务文件 `/etc/systemd/system/kiro-proxy.service`
```ini
[Unit]
Description=Kiro API Proxy
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/kiro-proxy
ExecStart=/opt/kiro-proxy/KiroProxy
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
```
**使用预编译二进制:**
```bash
# 创建目录并下载
sudo mkdir -p /opt/kiro-proxy
sudo wget -O /opt/kiro-proxy/KiroProxy https://github.com/petehsu/KiroProxy/releases/latest/download/KiroProxy-1.7.1-linux-x86_64
sudo chmod +x /opt/kiro-proxy/KiroProxy
# 创建服务文件
sudo tee /etc/systemd/system/kiro-proxy.service << 'EOF'
[Unit]
Description=Kiro API Proxy
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/kiro-proxy
ExecStart=/opt/kiro-proxy/KiroProxy
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# 启用并启动
sudo systemctl daemon-reload
sudo systemctl enable kiro-proxy
sudo systemctl start kiro-proxy
# 查看状态
sudo systemctl status kiro-proxy
# 查看日志
sudo journalctl -u kiro-proxy -f
```
**使用源码运行:**
```bash
sudo tee /etc/systemd/system/kiro-proxy.service << 'EOF'
[Unit]
Description=Kiro API Proxy
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/KiroProxy
ExecStart=/opt/KiroProxy/venv/bin/python run.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
```
### Linux (使用 screen/tmux)
**screen:**
```bash
# 安装
sudo apt install screen # Debian/Ubuntu
sudo yum install screen # CentOS
# 创建会话并运行
screen -S kiro
./KiroProxy
# 按 Ctrl+A D 退出会话(程序继续运行)
# 重新连接
screen -r kiro
```
**tmux:**
```bash
# 安装
sudo apt install tmux # Debian/Ubuntu
sudo yum install tmux # CentOS
# 创建会话并运行
tmux new -s kiro
./KiroProxy
# 按 Ctrl+B D 退出会话
# 重新连接
tmux attach -t kiro
```
### Linux (使用 nohup)
```bash
# 后台运行
nohup ./KiroProxy > kiro.log 2>&1 &
# 查看日志
tail -f kiro.log
# 停止
pkill -f KiroProxy
```
### macOS (launchd)
创建 `~/Library/LaunchAgents/com.kiro.proxy.plist`
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.kiro.proxy</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/KiroProxy</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/kiro-proxy.log</string>
<key>StandardErrorPath</key>
<string>/tmp/kiro-proxy.err</string>
</dict>
</plist>
```
```bash
# 加载服务
launchctl load ~/Library/LaunchAgents/com.kiro.proxy.plist
# 启动
launchctl start com.kiro.proxy
# 停止
launchctl stop com.kiro.proxy
# 卸载
launchctl unload ~/Library/LaunchAgents/com.kiro.proxy.plist
```
### Windows (任务计划程序)
**方法一:使用 PowerShell 创建计划任务**
```powershell
# 创建计划任务(开机自启)
$action = New-ScheduledTaskAction -Execute "C:\KiroProxy\KiroProxy.exe"
$trigger = New-ScheduledTaskTrigger -AtStartup
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount
Register-ScheduledTask -TaskName "KiroProxy" -Action $action -Trigger $trigger -Principal $principal
# 立即启动
Start-ScheduledTask -TaskName "KiroProxy"
# 停止
Stop-ScheduledTask -TaskName "KiroProxy"
# 删除
Unregister-ScheduledTask -TaskName "KiroProxy" -Confirm:$false
```
**方法二:使用 NSSM 创建 Windows 服务**
1. 下载 NSSM: https://nssm.cc/download
2. 解压并运行:
```cmd
nssm install KiroProxy C:\KiroProxy\KiroProxy.exe
nssm start KiroProxy
# 停止
nssm stop KiroProxy
# 删除
nssm remove KiroProxy confirm
```
**方法三:创建 VBS 启动脚本**
创建 `start-kiro.vbs`
```vbscript
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "C:\KiroProxy\KiroProxy.exe", 0, False
```
将此文件放入启动文件夹:`shell:startup`
---
## 反向代理配置
### Nginx
```nginx
server {
listen 80;
server_name kiro.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# SSE 支持
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 86400;
}
}
```
**启用 HTTPS(使用 Certbot):**
```bash
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d kiro.example.com
```
### Caddy
```caddyfile
kiro.example.com {
reverse_proxy localhost:8080
}
```
Caddy 会自动申请和续期 HTTPS 证书。
### Apache
```apache
<VirtualHost *:80>
ServerName kiro.example.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
# SSE 支持
SetEnv proxy-sendchunked 1
</VirtualHost>
```
---
## 常见问题
### 端口被占用
```bash
# 查看端口占用
lsof -i :8080 # Linux/macOS
netstat -ano | findstr :8080 # Windows
# 使用其他端口
./KiroProxy 8081
```
### 防火墙配置
**Ubuntu/Debian (ufw):**
```bash
sudo ufw allow 8080/tcp
```
**CentOS/RHEL (firewalld):**
```bash
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
```
**Windows:**
```powershell
New-NetFirewallRule -DisplayName "KiroProxy" -Direction Inbound -Port 8080 -Protocol TCP -Action Allow
```
### 权限问题
```bash
# 如果遇到权限问题
chmod +x KiroProxy
sudo chown -R $USER:$USER /opt/kiro-proxy
```
### 查看日志
```bash
# systemd
sudo journalctl -u kiro-proxy -f
# 直接运行时
./KiroProxy 2>&1 | tee kiro.log
```
### 更新版本
**预编译二进制:**
```bash
# 停止服务
sudo systemctl stop kiro-proxy
# 下载新版本
sudo wget -O /opt/kiro-proxy/KiroProxy https://github.com/petehsu/KiroProxy/releases/latest/download/KiroProxy-1.7.1-linux-x86_64
sudo chmod +x /opt/kiro-proxy/KiroProxy
# 启动服务
sudo systemctl start kiro-proxy
```
**源码方式:**
```bash
cd /opt/KiroProxy
git pull origin main
pip install -r requirements.txt
sudo systemctl restart kiro-proxy
```