自从开始ai coding之后,工作时有了更多的空闲时间。正好最近也在用ai coding做一些个人项目,我就在想能不能在工作时间偶尔摸摸鱼,看看ai coding的运行情况。刚好看到opencode有web能力,可以通过浏览器访问,而家里有一台一直开机的nas。一拍即合,那就在nas上搭建一个opencode开发环境

准备工作

Dockerfile

opencode本身是直接支持通过docker安装的,但是开发时我们需要使用的git等工具,在官方的镜像中是没有包含的,因此我们需要自己创建一个Docker镜像,将需要用到的工具打包到镜像中去

1
2
FROM ghcr.io/anomalyco/opencode:latest
RUN apk add --no-cache git openssh-client

docker-compose.yaml

创建一个docker-compose文件,端口根据需要进行修改。environment中的相关环境变量,放到.env 文件中,.env文件和docker-compose.yaml文件在同一个目录中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
services:
opencode:
build:
context: .
dockerfile: Dockerfile.opencode
container_name: opencode
ports:
- "4096:4096"
environment:
- OPENCODE_SERVER_PASSWORD=${OPENCODE_SERVER_PASSWORD}
- OPENCODE_SERVER_USERNAME=${OPENCODE_SERVER_USERNAME}
- GIT_AUTHOR_NAME=${GIT_AUTHOR_NAME}
- GIT_AUTHOR_EMAIL=${GIT_AUTHOR_EMAIL}
- GIT_COMMITTER_NAME=${GIT_COMMITTER_NAME}
- GIT_COMMITTER_EMAIL=${GIT_COMMITTER_EMAIL}
volumes:
- ./.root:/root/
- ./workspace:/workspace
working_dir: /workspace
command: ["web", "--hostname", "0.0.0.0", "--port", "4096"]
restart: unless-stopped

.env文件

环境变量配置模板如下

1
2
3
4
5
6
OPENCODE_SERVER_USERNAME=opencode
OPENCODE_SERVER_PASSWORD=xxxx
GIT_AUTHOR_NAME=<username>
GIT_AUTHOR_EMAIL=<email>
GIT_COMMITTER_NAME=<username>
GIT_COMMITTER_EMAIL=<email>

OpenCode启动与验证

在nas上完成上一步的准备工作后,启动docker, 通过 4096 端口就可以访问opencode的web服务。按照opencode官方文档进行大模型接入配置,就可以快乐开始vibe coding了。
OpenCode界面

Git配置

进行git配置前需要进入docker容器。

SSH配置

  1. 创建ssh key: ssh-keygen -t ed25519 -C "email@example.com" , 其中 passphrase 可以直接留空
  2. 将生成的公钥, 文件以.pub结尾,配置到github: Setting -> SSH and GPG keys 页面中的SSH keys. Key Type为Authentication Key
  3. 尝试通过ssh来clone一下仓库,验证配置的正确性

commit签名配置

github支持ssh签名和gpg签名,其中ssh签名配置比较简单,我也选择使用了ssh签名

  1. 创建ssh key: ssh-keygen -t ed25519 -C "email@example.com" , 其中 passphrase 可以直接留空, 注意文件名修改下,不要和ssh登录的文件名相同,否则会覆盖之前生成的key。 这里我们命名为 sign_ed25519
  2. 将生成的公钥, 文件以.pub结尾,配置到github: Setting -> SSH and GPG keys 页面中的SSH keys. Key Type为Signing Key
  3. 开启commit加签配置
    1. git config --global user.signingkey ~/.ssh/sign_ed25519.pub
    2. git config --global user.signingkey
    3. git config --global commit.gpgsign true
  4. 尝试做一个提交验证配置的正确性,在github上查看commit是否有签名

如此,再利用内网穿透,就可以在上班的时候打开浏览器,随时看下ai打工人的进度啦