Brave
@47c132035ed7a1105a867946b99d67af 人工智能研究 公开
讨论 OpenCode + FileBrowser Docker 部署指南

OpenCode + FileBrowser Docker 部署指南

在服务器或 NAS 上通过 Docker 部署 OpenCode AI 编程代理,配合 FileBrowser 实现"终端 AI 写代码 + 网页管理文件"的远程开发工作流。


一、认识 OpenCode

1.1 OpenCode 是什么?

OpenCode 是一款开源的终端 AI 编程代理(Coding Agent),使用 Go 语言编写。它能够直接读取、修改、创建文件,并与你的代码库深度交互。

与本地安装不同,本方案将 OpenCode 部署在 Docker 容器中,你通过 docker exec 命令从终端进入容器与 AI 交互。这种方式适合:

  • 🖥️ 在远程服务器或 NAS 上运行 AI 开发环境
  • 🔒 隔离 AI 操作环境,避免影响宿主机
  • 🔄 便于环境迁移和备份

1.2 核心特性

特性说明
🤖 多模型支持支持 75+ 种 AI 模型(Claude、GPT、Gemini、本地模型等)
🔐 隐私优先不存储任何代码或上下文数据
💸 免费可用内置免费模型,无需订阅即可使用
🎫 订阅兼容可绑定 Claude Pro/Max 或 ChatGPT Plus/Pro
📡 LSP 支持自动加载语言服务器,提供代码智能感知

项目数据(2026年1月):GitHub 72K+ Stars,500+ 贡献者,65万+ 月活开发者

官方网站https://opencode.ai


🏗️ 二、架构说明

2.1 部署架构

 
┌─────────────────────────────────────────────────────────┐
│                      宿主机 / 服务器                      │
├─────────────────────────────────────────────────────────┤
│                                                         │
│   ┌─────────────────┐       ┌─────────────────┐        │
│   │   OpenCode 容器  │       │ FileBrowser 容器│        │
│   │                 │       │                 │        │
│   │  /work ◄────────┼───────┼─► /srv          │        │
│   │                 │       │                 │        │
│   │  通过终端访问    │       │  通过浏览器访问   │        │
│   │  docker exec    │       │  http://IP:8080 │        │
│   └─────────────────┘       └─────────────────┘        │
│            │                         │                  │
│            └────────┬────────────────┘                  │
│                     ▼                                   │
│           ┌─────────────────┐                          │
│           │  ./data 共享目录 │                          │
│           └─────────────────┘                          │
│                                                         │
└─────────────────────────────────────────────────────────┘

2.2 工作流程

  1. 通过终端执行 docker exec -it opencode opencode 进入 AI 交互界面
  2. AI 在容器内的 /work 目录读写文件
  3. 文件同步到宿主机的 ./data 目录
  4. FileBrowser 通过网页展示 ./data 目录内容
  5. 在浏览器中查看、下载、编辑 AI 生成的文件

🐳 三、Docker Compose 配置

创建 docker-compose.yml

services:
  opencode:
    image: ubuntu:22.04
    container_name: opencode
    tty: true
    stdin_open: true
    volumes:
      - ./data:/work
      - ./opencode-config:/root/.config/opencode
      - ./opencode-share:/root/.local/share/opencode
      - ./opencode-bin:/root/.opencode
    working_dir: /work
    environment:
      - TZ=Asia/Shanghai
    command: >
      /bin/bash -c "
        apt-get update && apt-get install -y curl git ca-certificates &&
        if [ ! -f /root/.opencode/bin/opencode ]; then
          curl -fsSL https://opencode.ai/install | bash
        fi &&
        ln -sf /root/.opencode/bin/opencode /usr/bin/opencode 2>/dev/null || true &&
        tail -f /dev/null
      "
    restart: unless-stopped
  filebrowser:
    image: filebrowser/filebrowser:latest
    container_name: filebrowser
    user: 0:0
    volumes:
      - ./data:/srv
      - ./filebrowser-config:/database
    command:
      - --database
      - /database/filebrowser.db
      - --root
      - /srv
    ports:
      - 8080:80
    restart: unless-stopped
networks: {}

也可以使用带server的版本:

services:
  opencode:
    image: ubuntu:22.04
    container_name: opencode
    tty: true
    stdin_open: true
    volumes:
      - ./data:/work
      - ./opencode-config:/root/.config/opencode
      - ./opencode-share:/root/.local/share/opencode
      - ./opencode-bin:/root/.opencode
    working_dir: /work
    environment:
      - TZ=Asia/Shanghai
      - OPENCODE_SERVER_PASSWORD=your_secure_password
      - OPENCODE_SERVER_USERNAME=opencode
    ports:
      - 4096:4096
    command: >
      /bin/bash -c "
        apt-get update && apt-get install -y curl git ca-certificates &&
        if [ ! -f /root/.opencode/bin/opencode ]; then
          curl -fsSL https://opencode.ai/install | bash
        fi &&
        ln -sf /root/.opencode/bin/opencode /usr/bin/opencode 2>/dev/null || true &&
        echo '启动 OpenCode Server...' &&
        /root/.opencode/bin/opencode serve --port 4096 --hostname 0.0.0.0
      "
    restart: unless-stopped
  filebrowser:
    image: filebrowser/filebrowser:latest
    container_name: filebrowser
    user: 0:0
    volumes:
      - ./data:/srv
      - ./filebrowser-config:/database
    command:
      - --database
      - /database/filebrowser.db
      - --root
      - /srv
    ports:
      - 8080:80
    restart: unless-stopped
networks: {}

🚀 四、部署与使用

4.1 启动服务

docker compose up -d

4.2 等待安装完成

首次启动需等待 1-2 分钟:

docker logs -f opencode

4.3 通过终端访问 OpenCode

进入交互式 AI 对话界面:

docker exec -it opencode opencode

如果报错 executable file not found,使用完整路径:

docker exec -it opencode /root/.opencode/bin/opencode

执行单条 AI 指令(无需进入交互界面):

docker exec -it opencode opencode "你的指令" 

4.4 通过浏览器访问 FileBrowser

打开 http://你的服务器IP:8080

  • 默认用户名:admin
  • 默认密码:查看终端提示

五、终端操作命令

5.1 基础命令

操作命令
进入 AI 交互界面docker exec -it opencode opencode
执行单条指令docker exec -it opencode opencode "指令内容"
查看版本docker exec -it opencode opencode --version
进入容器 Shelldocker exec -it opencode /bin/bash

5.2 AI 交互界面内命令

进入 OpenCode 后,可使用:

命令说明
/init让 AI 分析当前目录结构
/providers配置 AI 模型提供商
/sessions查看会话历史
/help显示帮助
/exitCtrl+D退出

5.3 实战示例

生成代码文件:

docker exec -it opencode opencode "创建一个 index.html 个人主页" 

分析项目:

docker exec -it opencode opencode "分析当前目录的代码结构" 

重构代码:

docker exec -it opencode opencode "重构 main.py 并添加错误处理" 

生成文档:

docker exec -it opencode opencode "为这个项目生成 README.md" 

执行后,刷新 FileBrowser 网页即可看到生成的文件。


六、常见问题

问题1:找不到 opencode 命令

 
exec: "opencode": executable file not found in $PATH

解决: 使用完整路径或创建软链接

bash
# 方法一:完整路径 docker exec -it opencode /root/.opencode/bin/opencode

# 方法二:创建软链接(一次性) docker exec -it opencode ln -sf /root/.opencode/bin/opencode /usr/bin/opencode

问题2:网络超时

解决: 添加代理环境变量

environment:   - HTTP_PROXY=http://proxy:port   - HTTPS_PROXY=http://proxy:port