Altailab/safevm
GitHub: Altailab/safevm
SafeVM 是一个自托管的浏览器流式 Linux 桌面平台,通过持久工作区和一次性 microVM 沙箱为企业提供安全的远程办公与高风险文件隔离引爆环境。
Stars: 0 | Forks: 0
# SafeVM(工作名称)
(port 80, or 443 with TLS_EMAIL)
Login:
Password:
```
仪表板由 nginx 在 **`HTTP_PORT`**(默认为 **80**;如果设置了 `TLS_EMAIL`,则在
**443** 上使用 HTTPS)上提供服务;API 在同一个 origin 上进行反向代理,因此
不需要开放额外端口。随时可以使用
`systemctl status safevm-control-plane safevm-node-agent safevm-agent` 检查服务。
## 本地开发
```
# backing services
cp deploy/.env.example .env
docker compose -f deploy/docker-compose.yml up -d
# 安装 + 生成 Prisma client
bun install
bun run db:generate
bun run db:migrate # creates the schema
# 运行服务(独立终端)
bun run dev:cp # control plane -> :3001
bun run dev:agent # node agent (RUNTIME=mock | docker | firecracker)
bun run dev:web # dashboard -> :3000
```
冒烟测试:
```
curl localhost:3001/health
```
## 更新
要将服务器安装实例升级到新版本(在服务器上以 root 身份运行):
```
sudo bash /opt/safevm/deploy/update-ubuntu.sh
```
与安装程序不同,这会**保留您的配置和数据**:它会保留 `.env`
(因此 `JWT_SECRET` 保持不变,现有登录仍然有效),**不**
重新进行 seed,并在应用迁移之前**备份 Postgres**。它会拉取新
代码,重新安装依赖,重新生成 Prisma client,重新构建仪表板,
应用新的迁移,并重启服务(停机时间仅为
迁移 + 重启的窗口期)。标志:
| 标志 | 效果 |
|---|---|
| `SAFEVM_REF=v1.2.0` | 更新到特定分支/标签/commit(默认为 `main`) |
| `SKIP_BACKUP=1` | 跳过迁移前的 `pg_dump` |
| `FORCE=1` | 即使已处于目标版本也重新构建 |
脚本完成时,会打印旧→新版本号和回滚提示(以及它所创建的
数据库备份的路径)。
## 故障排除
### 重置 / 忘记管理员密码
如果您因为忘记了管理员密码或在安装时输入错误而
无法登录(`invalid credentials`),请使用新密码重新运行 seed。该 seed 操作执行的是
**upsert**,因此它会在原地更新现有管理员的密码哈希——不会丢失
任何数据:
```
cd /opt/safevm/packages/control-plane
set -a; . /opt/safevm/.env; set +a
SEED_ADMIN_EMAIL=admin@example.com SEED_ADMIN_PASSWORD='new-password' \
/opt/bun/bin/bun run prisma/seed.ts
```
在 `SEED_ADMIN_EMAIL` 中使用您的管理员邮箱。然后验证其是否有效(应该返回
一个 token):
```
curl -s localhost:3001/api/auth/login -H 'content-type: application/json' \
-d '{"email":"admin@example.com","password":"new-password"}'; echo
```
### 页面加载正常但登录失败
在服务器上直接测试 API 以隔离出问题层:
```
systemctl is-active safevm-control-plane # API up?
curl -s localhost:3001/health # control plane healthy?
docker compose -f /opt/safevm/deploy/docker-compose.yml ps # Postgres/Redis/RabbitMQ up?
journalctl -u safevm-control-plane -n 50 --no-pager # recent errors
```
## 卸载
要撤销服务器安装(在服务器上以 root 身份运行):
```
sudo bash /opt/safevm/deploy/uninstall-ubuntu.sh
```
这会停止并移除 systemd 服务、所有桌面会话容器、
支撑服务(Postgres/Redis/RabbitMQ)、nginx 站点、Bun 以及克隆的
仓库。**默认情况下会保留数据卷。** 标志:
| 标志 | 效果 |
|---|---|
| `PURGE_DATA=1` | 同时删除 Postgres/Redis/RabbitMQ 数据卷 + 拉取的桌面镜像(**会破坏工作区数据**) |
| `KEEP_REPO=1` | 将仓库保留在 `/opt/safevm` |
| `REMOVE_DOCKER=1` | 同时 apt-purge Docker Engine 及其 apt 仓库/密钥 |
| `REMOVE_NGINX=1` | 同时 apt-purge nginx |
| `REMOVE_NODE=1` | 同时 apt-purge Node.js(为 Prisma CLI 安装) |
完全擦除(install-ubuntu.sh 触及的所有内容,包括数据和 Docker):
```
sudo PURGE_DATA=1 REMOVE_DOCKER=1 REMOVE_NGINX=1 REMOVE_NODE=1 bash /opt/safevm/deploy/uninstall-ubuntu.sh
```
## 许可证
SafeVM 归 **Rufat Mammadli, founder of Altailab LLC** 所有,并基于
**[SafeVM 社区许可证](./LICENSE)** 授权——这是一种源代码可见的许可证:
- ✅ 当您运行**未经修改的**
社区版(本仓库中有限的、单租户功能集)时,**可免费使用,包括商业用途**。
- 🚫 **对_已修改_版本进行商业使用需要获取商业许可证**
来自 Altailab LLC。对于非商业用途,修改后的版本免费。
如需获取商业许可证(修改版本使用、企业条款或
多租户云版),请通过
[项目仓库](https://github.com/Altailab/safevm) 联系 Altailab LLC。
请注意,SafeVM 发布或构建的**客户机 OS 镜像**带有其各自的组件
许可证(Linux 内核为 GPLv2);这些许可证独立于 SafeVM
社区许可证。参见 [`docs/os-and-licensing.md`](./docs/os-and-licensing.md)。
标签:DAST, 微虚拟机, 恶意软件分析, 搜索引擎查询, 沙箱, 测试用例, 自动化攻击, 虚拟桌面, 请求拦截, 远程浏览器隔离