从零搭建 Antigravity 开发环境:Ubuntu VPS + Linux Desktop + tmux + 云端工作流
一套适合独立开发者的 Antigravity 开发环境搭建记录。
前言
作为一名独立开发者,我一直在寻找一种更加稳定、独立的 AI 编程环境。
本地电脑虽然方便,但也存在一些问题:
- 本地网络环境可能影响 AI 服务的访问
- Google Gemini / Antigravity 等服务可能存在区域限制
- 本地电脑关机后,AI 编程任务无法继续运行
- CLI 会话容易因为终端关闭而中断
- 开发环境迁移和备份比较麻烦
因此,我最终选择搭建一台长期使用的 Linux VPS,并在 VPS 上配置完整的桌面环境,通过远程桌面连接进行开发。
最终的架构大致如下:
本地电脑
│
│ Tailscale / RDP / SSH
▼
Ubuntu VPS
│
├── XFCE Desktop
├── XRDP
├── Zsh
├── Node.js
├── Git
├── tmux
└── Antigravity CLI
│
▼
AI Coding Workflow
这篇文章记录整个搭建过程,以及过程中遇到的一些问题。
1. 为什么选择 VPS 而不是本地运行?
最开始,我是在本地 Linux 环境中尝试使用 Gemini CLI 和 Antigravity。
但是很快遇到了几个问题。
1.1 区域限制
部分 AI 服务会根据以下信息判断用户所在地区:
- IP 地址
- Google Account 地区
- Google Play 国家或地区
- 账号历史信息
- 登录环境
即使更换网络,也不一定能够完全解决问题。
因此,我希望使用一个更加稳定的海外 Linux 环境作为长期开发环境。
1.2 让开发环境独立运行
使用 VPS 的最大优势之一,就是:
开发环境不再依赖本地电脑。
即使关闭自己的电脑:
- Git 项目仍然保留在 VPS
- tmux 会话仍然运行
- AI CLI 不会因为 SSH 断开而立即终止
- 可以随时从其他设备重新连接
对于独立开发者来说,这种体验非常方便。
2. 选择 Ubuntu VPS
最终我选择了一台 Ubuntu VPS。
主要考虑以下几个因素:
- 价格相对便宜
- 可以长期运行
- 支持 SSH
- 可以安装 Linux Desktop
- 可以运行 Node.js
- 可以运行 AI Coding CLI
- 可以通过 Tailscale 建立安全的私有网络
系统选择 Ubuntu。
Ubuntu 的优点是:
- 软件生态成熟
- 文档非常多
- Node.js、Git、Docker 等开发工具支持完善
- 大多数 AI CLI 都优先支持 Linux
3. 安装 Linux Desktop
VPS 默认通常只有命令行环境。
为了获得更加接近本地电脑的体验,我在 VPS 上安装了 XFCE Desktop。
安装:
sudo apt update
sudo apt install xfce4 xfce4-goodies -y
XFCE 非常适合 VPS 环境。
相比 GNOME 或 KDE:
- 占用资源更少
- 对低配置 VPS 更友好
- 远程桌面体验不错
- 稳定性较高
4. 安装 XRDP
安装 XRDP:
sudo apt install xrdp -y
启动并设置开机启动:
sudo systemctl enable xrdp
sudo systemctl start xrdp
检查状态:
systemctl status xrdp
如果看到:
active (running)
说明 XRDP 已经正常运行。
XRDP 默认监听:
3389
端口。
5. 使用 Tailscale 保护 VPS
直接暴露 RDP 端口到公网并不是一个理想方案。
因此,我选择使用 Tailscale。
Tailscale 可以让:
本地电脑
│
│ 私有加密网络
▼
VPS
设备之间直接建立安全连接。
安装完成后,可以查看状态:
tailscale status
获取当前设备 IP:
tailscale ip
之后可以通过 Tailscale IP 使用:
- SSH
- RDP
- 其他内部服务
这样就不需要直接暴露 RDP 到公网。
6. 安装 Zsh
为了获得更好的终端体验,我使用 Zsh。
安装:
sudo apt install zsh -y
设置默认 Shell:
chsh -s $(which zsh)
重新登录后检查:
echo $SHELL
应该看到类似:
/usr/bin/zsh
7. 安装 Node.js
Antigravity CLI 依赖 Node.js 环境。
我使用 NVM 管理 Node.js。
安装 NVM 后,可以安装 Node.js:
nvm install 22
检查:
node -v
npm -v
我的环境中使用的是:
Node.js v22.x
建议使用 NVM 管理 Node.js,而不是直接通过系统包管理器安装。
原因是:
- 可以安装多个 Node.js 版本
- 可以快速切换版本
- 不会污染系统环境
- 更适合开发环境
8. 安装 Antigravity CLI
在 Node.js 环境准备完成之后,就可以安装 Antigravity CLI。
安装完成后,可以检查:
antigravity --version
如果终端提示:
command not found
通常需要检查:
which antigravity
以及:
echo $PATH
如果通过 npm 全局安装,也可以检查:
npm root -g
npm config get prefix
常见问题通常来自:
- Node.js 环境没有加载
- NVM 没有在
.zshrc中初始化 - npm 全局 bin 路径没有加入
$PATH
9. 使用 tmux 保持 Antigravity 会话
这是整个环境中非常重要的一部分。
如果直接通过 SSH 或远程终端运行:
antigravity
一旦:
- 网络断开
- SSH 关闭
- 本地电脑休眠
- RDP 连接中断
可能导致终端任务受到影响。
因此,我使用 tmux。
安装:
sudo apt install tmux -y
创建一个新的会话:
tmux new -s antigravity
然后启动 Antigravity:
antigravity
9.1 退出 tmux 但保持程序运行
按:
Ctrl + B
然后按:
D
即可 Detach 当前 tmux。
此时:
SSH 关闭
RDP 关闭
本地电脑关闭
tmux 内部的程序仍然继续运行。
9.2 查看 tmux 会话
tmux ls
例如:
antigravity: 1 windows
重新连接:
tmux attach -t antigravity
这样就可以恢复之前的工作环境。
10. 推荐的 Antigravity 工作流
我目前比较推荐以下结构。
~/projects
│
├── project-a
│ ├── tmux
│ └── antigravity
│
├── project-b
│ ├── tmux
│ └── antigravity
│
└── project-c
├── tmux
└── antigravity
每个项目使用独立的 tmux Session。
例如:
tmux new -s project-a
进入项目:
cd ~/projects/project-a
然后运行:
antigravity
这样不同项目之间不会互相干扰。
查看所有 Session:
tmux ls
重新进入:
tmux attach -t project-a
11. Antigravity CLI 会话管理
在使用 AI Coding CLI 时,一个非常容易忽略的问题就是:
CLI 会话记录通常不应该只依赖本地缓存。
因为 VPS 可能:
- 被误删除
- 系统损坏
- 重装系统
- 更换服务器
因此建议定期备份。
例如:
~/.cache/
~/.config/
~/.local/
以及项目目录:
~/projects/
根据 Antigravity 实际的数据存储位置,可以将相关目录加入备份脚本。
例如:
tar -czf antigravity-backup.tar.gz \
~/.cache/antigravity \
~/projects
然后将备份上传到安全的云端存储。
12. 推荐的目录结构
我的 VPS 开发环境建议按照下面的方式组织:
/home/daniel
│
├── projects
│ ├── PulseTimer
│ ├── IndieResizer
│ └── UnixTimestampConverter
│
├── backups
│
├── scripts
│
└── workspace
这样会比较清晰。
例如:
mkdir -p ~/projects
mkdir -p ~/backups
mkdir -p ~/scripts
mkdir -p ~/workspace
13. 自动备份思路
可以创建一个简单的备份脚本:
nano ~/scripts/backup.sh
示例:
#!/bin/bash
BACKUP_DIR="$HOME/backups"
mkdir -p "$BACKUP_DIR"
tar -czf \
"$BACKUP_DIR/projects-$(date +%F).tar.gz" \
"$HOME/projects"
增加执行权限:
chmod +x ~/scripts/backup.sh
手动执行:
~/scripts/backup.sh
之后可以通过:
crontab -e
设置每天自动备份。
例如每天凌晨 3 点:
0 3 * * * /home/daniel/scripts/backup.sh
14. 常见问题
14.1 command not found: antigravity
首先检查:
which antigravity
然后检查 Node.js:
node -v
npm -v
如果使用 NVM,需要确认 .zshrc 中已经加载:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
重新加载:
source ~/.zshrc
14.2 如何确认当前是否在 tmux?
执行:
echo $TMUX
如果返回类似:
/tmp/tmux-1000/default,12345,0
说明当前正在 tmux 中。
如果没有任何输出,则通常不在 tmux Session 中。
14.3 tmux 如何恢复会话?
查看:
tmux ls
恢复:
tmux attach -t session-name
例如:
tmux attach -t antigravity
15. 最终架构
最终,我的开发环境大致如下:
┌───────────────────────────────┐
│ 本地电脑 │
│ │
│ Browser / VS Code / Terminal │
└───────────────┬───────────────┘
│
│ Tailscale
▼
┌───────────────────────────────┐
│ Ubuntu VPS │
│ │
│ ┌─────────────────────────┐ │
│ │ XFCE Desktop │ │
│ └─────────────────────────┘ │
│ │
│ ┌─────────────────────────┐ │
│ │ XRDP │ │
│ └─────────────────────────┘ │
│ │
│ ┌─────────────────────────┐ │
│ │ Zsh │ │
│ │ Node.js │ │
│ │ Git │ │
│ │ tmux │ │
│ └─────────────┬───────────┘ │
│ │ │
│ ▼ │
│ Antigravity CLI │
│ │ │
│ ▼ │
│ AI Development │
└───────────────────────────────┘
总结
通过 VPS + Linux Desktop + Tailscale + tmux,我最终搭建了一套相对独立的 AI 开发环境。
这套环境最大的优势是:
- VPS 长期运行
- 开发环境与本地电脑分离
- 可以从多个设备访问
- tmux 可以保持 CLI 会话
- Tailscale 可以减少公网暴露
- 项目和开发环境可以统一管理
- 可以通过脚本自动备份
对于独立开发者来说,这种模式非常适合作为长期的开发工作站。
最终,你得到的并不仅仅是一台 VPS。
而是一个:
可以随时访问、长期运行、独立维护,并且可以持续扩展的 AI Development Workspace。
未来还可以继续加入:
- Docker
- k3s
- GitHub Actions
- 自动部署
- HTTPS
- CI/CD
- 云端备份
- 多项目 AI Agent
- 自动化开发工作流
让这台 VPS 从单纯的远程服务器,逐渐变成属于自己的 个人 AI 开发基础设施。
