darkfire514 commited on
Commit
75f1ae1
·
verified ·
1 Parent(s): 38370dd

Upload 3 files

Browse files
Files changed (3) hide show
  1. Dockerfile +4 -26
  2. README.md +94 -112
  3. start.sh +11 -11
Dockerfile CHANGED
@@ -11,7 +11,6 @@ ENV PATH=$HOME/.local/bin:$PATH
11
  # - build-essential, cmake: Required for compiling software like OpenClaw
12
  # - curl, wget, git: Basic tools for downloading and version control
13
  # - vim, nano: Text editors
14
- # - python3: For auth proxy
15
  RUN apt-get update && apt-get install -y \
16
  curl \
17
  wget \
@@ -25,18 +24,14 @@ RUN apt-get update && apt-get install -y \
25
  build-essential \
26
  cmake \
27
  pkg-config \
28
- python3 \
29
- python3-pip \
30
- python3-venv \
31
  && apt-get clean && rm -rf /var/lib/apt/lists/*
32
 
33
- # Install ttyd (Web Terminal) to access the VPS via browser
34
- # Using a specific version to ensure stability
35
  RUN wget https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.x86_64 -O /usr/bin/ttyd \
36
  && chmod +x /usr/bin/ttyd
37
 
38
  # Create a non-root user 'user' (UID 1000) for security and Hugging Face compatibility
39
- # Grant sudo privileges without password for easy administration
40
  RUN useradd -m -u 1000 user && \
41
  echo 'user ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
42
 
@@ -46,29 +41,12 @@ WORKDIR $HOME
46
  # Switch to the non-root user
47
  USER user
48
 
49
- # Install Python dependencies for Auth Proxy
50
- # Using --break-system-packages because we are in a container environment
51
- RUN pip3 install --break-system-packages \
52
- fastapi \
53
- uvicorn[standard] \
54
- httpx \
55
- websockets \
56
- authlib \
57
- itsdangerous \
58
- jinja2 \
59
- python-multipart \
60
- aiofiles
61
-
62
- # Copy Authentication Proxy files
63
- COPY --chown=user:user auth_proxy.py .
64
  COPY --chown=user:user start.sh .
65
- COPY --chown=user:user templates/ templates/
66
-
67
- # Make start script executable
68
  RUN chmod +x start.sh
69
 
70
  # Expose port 7860 (Standard for Hugging Face Spaces)
71
  EXPOSE 7860
72
 
73
- # Start Auth Proxy (which starts ttyd)
74
  CMD ["./start.sh"]
 
11
  # - build-essential, cmake: Required for compiling software like OpenClaw
12
  # - curl, wget, git: Basic tools for downloading and version control
13
  # - vim, nano: Text editors
 
14
  RUN apt-get update && apt-get install -y \
15
  curl \
16
  wget \
 
24
  build-essential \
25
  cmake \
26
  pkg-config \
 
 
 
27
  && apt-get clean && rm -rf /var/lib/apt/lists/*
28
 
29
+ # Install ttyd (Web Terminal)
 
30
  RUN wget https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.x86_64 -O /usr/bin/ttyd \
31
  && chmod +x /usr/bin/ttyd
32
 
33
  # Create a non-root user 'user' (UID 1000) for security and Hugging Face compatibility
34
+ # Grant sudo privileges without password
35
  RUN useradd -m -u 1000 user && \
36
  echo 'user ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
37
 
 
41
  # Switch to the non-root user
42
  USER user
43
 
44
+ # Copy startup script
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  COPY --chown=user:user start.sh .
 
 
 
46
  RUN chmod +x start.sh
47
 
48
  # Expose port 7860 (Standard for Hugging Face Spaces)
49
  EXPOSE 7860
50
 
51
+ # Start ttyd via script
52
  CMD ["./start.sh"]
README.md CHANGED
@@ -1,112 +1,94 @@
1
- ---
2
- title: VPS Linux
3
- emoji: 🐨
4
- colorFrom: red
5
- colorTo: green
6
- sdk: docker
7
- pinned: false
8
- license: mit
9
- ---
10
-
11
- # Simplified Linux VPS on Hugging Face Spaces
12
-
13
- 这是一个用于在 Hugging Face Spaces 上运行简化版 Linux VPS 的配置模板。它基于轻量级的 Debian Bookworm Slim,预装了基本的开发工具和 `ttyd` 网页终端,允许你在浏览器中直接访问命令行。
14
-
15
- 此环境配置了 `sudo` 权限,方便你在运行时安装所需的软件(如 OpenClaw)。
16
-
17
- **新特性:支持 GitHub Google 账号鉴权登录。**
18
-
19
- ## 🚀 快速开始
20
-
21
- ### 1. 创建 Hugging Face Space
22
- 1. 登录 Hugging Face。
23
- 2. 点击右上角的头像 -> **New Space**。
24
- 3. 输入 Space 名称(例如 `my-linux-vps`)。
25
- 4. **Select the Space SDK**: 选择 **Docker**。
26
- 5. **Docker Template**: 选择 **Blank**。
27
- 6. 点击 **Create Space**。
28
-
29
- ### 2. 上传文件
30
- 将本仓库中的所有文件(包括 `Dockerfile`, `README.md`, `auth_proxy.py`, `start.sh`, `templates/` 目录)上传到你的 Space 仓库中。
31
-
32
- ### 3. 配置鉴权环境变量 (重要!)
33
- 在 Space 的 **Settings** -> **Variables and secrets** 中添加以下环境变量。如果不配置所有人都能访问你终端!
34
-
35
- | 变量名 | 描述 | 示例 |
36
- |--------|------|------|
37
- | `ALLOWED_USERS` | **必填**。允许登录的 GitHub 用户名 Google 邮箱,逗号分隔。 | `yourgithubuser,youremail@gmail.com` |
38
- | `AUTH_SECRET` | **必填**。用于加Session 的随机字符串。 | `randomstring123` |
39
- | `GITHUB_CLIENT_ID` | (可选) GitHub OAuth Client ID | `Ov23li...` |
40
- | `GITHUB_CLIENT_SECRET` | (可选) GitHub OAuth Client Secret | `a1b2c3...` |
41
- | `GOOGLE_CLIENT_ID` | (可选) Google OAuth Client ID | `123456...apps.googleusercontent.com` |
42
- | `GOOGLE_CLIENT_SECRET` | (可选) Google OAuth Client Secret | `GOCSPX-...` |
43
-
44
- **如何获取 OAuth Client ID/Secret:**
45
-
46
- * **GitHub**:
47
- 1. 访问 [GitHub Developer Settings](https://github.com/settings/developers)。
48
- 2. New OAuth App
49
- 3. **Homepage URL**: `https://<你的用户名>-<你的Space名>.hf.space` (例如 `https://huggingface.co/spaces/user/my-vps` -> `https://user-my-vps.hf.space`)
50
- 4. **Authorization callback URL**: `https://<你的户名>-<你的Space名>.hf.space/oauth2/callback`。
51
- * **注意**: 必须配置为 `/oauth2/callback` 才能正常登录
52
-
53
- * **Google (YouTube)**:
54
- 1. 访问 [Google Cloud Console](https://console.cloud.google.com/apis/credentials)。
55
- 2. 创建凭据 -> OAuth 客户ID -> Web 应用
56
- 3. **已获授权的 JavaScript 来源**: `https://darkfire514-vps-linux.hf.space` (请替换为你的实际 Space 地址)
57
- 4. **已获授权的重定向 URI**: `https://darkfire514-vps-linux.hf.space/api/auth/callback`。
58
- * **注意**: 回调路径是 `/api/auth/callback`。
59
-
60
- ### 4. 访问 VPS
61
- 配置好环境变量后,Space 会自动重启。
62
- 点击 **App** 标签页,你会看到一个登录界面。使用你的 GitHub 或 Google 账号登录即可进入终端。
63
-
64
- ## 🛠️ 功能特性
65
- - **基础系统**: Debian Bookworm Slim (轻量且兼容性好)。
66
- - **Root 权限**: 默认用户 `user` 拥有免密 `sudo` 权限。
67
- - **开发工具**: 预装 `git`, `curl`, `wget`, `vim`, `nano`, `build-essential`, `cmake`, `python3`。
68
- - **Web 终端**: 使用 `ttyd` 提供流畅的浏览器终端体验。
69
- - **安全鉴权**: 支持 GitHub 和 Google (YouTube) OAuth 登录,防止未经授权的访问。
70
-
71
- ## 🎮 如何运行 OpenClaw
72
-
73
- OpenClaw 是一个图形化游戏,需要在 VPS 上安装相关依赖才能编译或运行。由于 Hugging Face Spaces 默认没有图形界面(Display),你通常只能进行**编译**或**服务端运行**(如果支持)。若要运行图形界面,你需要自行配置 VNC 或 X11 转发(较为复杂,且可能受限于网络)。
74
-
75
- ### 安装 OpenClaw 依赖
76
- 在终端中运行以下命令安装编译 OpenClaw 所需的
77
-
78
- ```bash
79
- # 更新软件源
80
- sudo apt-get update
81
-
82
- # 安装 SDL2 及相关依赖 (OpenClaw 核心需求)
83
- sudo apt-get install -y \
84
- libsdl2-dev \
85
- libsdl2-image-dev \
86
- libsdl2-mixer-dev \
87
- libsdl2-ttf-dev \
88
- libxml2-dev \
89
- zlib1g-dev
90
- ```
91
-
92
- ### 获取并编译 OpenClaw
93
- ```bash
94
- # 克隆 OpenClaw 仓库
95
- git clone https://github.com/pjasicek/OpenClaw.git
96
- cd OpenClaw
97
-
98
- # 创建构建目录
99
- mkdir build && cd build
100
-
101
- # 编译
102
- cmake ..
103
- make -j$(nproc)
104
- ```
105
-
106
- ### 注意事项
107
- - **图形界面限制**: 直接运行 `./OpenClaw` 可能会报错 `Could not initialize SDL: No available video device`,因为 Space 没有连接显示器。
108
- - **持久化存储**: Hugging Face Spaces 重启后,非 `/data` 目录下的文件会丢失。建议将重要数据保存在 `/data` 目录(如果启用了 Persistent Storage)或使用 Git 同步代码。
109
-
110
- ## ⚠️ 安全警告
111
- - 此 VPS 拥有 root 权限,请勿在其中存储敏感密钥。
112
- - 请务必设置 `ALLOWED_USERS`,否则虽然有登录界面,但无法通过验证。
 
1
+ ---
2
+ title: VPS Linux
3
+ emoji: 🐨
4
+ colorFrom: red
5
+ colorTo: green
6
+ sdk: docker
7
+ pinned: false
8
+ license: mit
9
+ ---
10
+
11
+ # Simplified Linux VPS on Hugging Face Spaces
12
+
13
+ 这是一个用于在 Hugging Face Spaces 上运行简化版 Linux VPS 的配置模板。它基于轻量级的 Debian Bookworm Slim,预装了基本的开发工具和 `ttyd` 网页终端,允许你在浏览器中直接访问命令行。
14
+
15
+ 此环境配置了 `sudo` 权限,方便你在运行时安装所需的软件(如 OpenClaw)。
16
+
17
+ **新特性:已切换至稳定可靠的 HTTP Basic Auth 鉴权。**
18
+
19
+ ## 🚀 快速开始
20
+
21
+ ### 1. 创建 Hugging Face Space
22
+ 1. 登录 Hugging Face。
23
+ 2. 点击右上角的头像 -> **New Space**。
24
+ 3. 输入 Space 名称(例如 `my-linux-vps`)。
25
+ 4. **Select the Space SDK**: 选择 **Docker**。
26
+ 5. **Docker Template**: 选择 **Blank**。
27
+ 6. 点击 **Create Space**。
28
+
29
+ ### 2. 上传文件
30
+ 将本仓库中的所有文件(`Dockerfile`, `README.md`, `start.sh`)上传到你的 Space 仓库中。
31
+
32
+ ### 3. 配置鉴权环境变量 (重要!)
33
+ 在 Space 的 **Settings** -> **Variables and secrets** 中添加以下环境变量,用于设置登录用户名和密码。
34
+
35
+ | 变量名 | 描述 | 默认值 |
36
+ |--------|------|--------|
37
+ | `TTYD_USER` | 登录用户名 | `admin` |
38
+ | `TTYD_PASSWORD` | 登录 | `admin123456` |
39
+
40
+ **⚠️ 警告**: 请务必修改默认密码,否则所有人都能访问你的 VPS!
41
+
42
+ ### 4. 访问 VPS
43
+ 配置好环境变量后,Space 会自动重启。
44
+ 点击 **App** 标签页,浏览器会弹出原生的登录对话框。输入你设置的用户名和密码即可进入终端。
45
+
46
+ ## 🛠️ 功能特性
47
+ - **基础系统**: Debian Bookworm Slim (轻量且兼容性好)。
48
+ - **Root 权限**: 默认用户 `user` 拥有免密 `sudo` 权限
49
+ - **开发工具**: 预装 `git`, `curl`, `wget`, `vim`, `nano`, `build-essential`, `cmake`
50
+ - **Web 终端**: 使 `ttyd` 提供流畅的浏览器终端体验
51
+ - **安全鉴权**: 采用 HTTP Basic Auth,简单稳定,拒绝未授权访问
52
+
53
+ ## 🎮 如何运行 OpenClaw
54
+
55
+ OpenClaw 是一个图形化游戏,需要在 VPS 上安装相关依赖才能编译或运行。由于 Hugging Face Spaces 默认没有图形界面(Display),你通常只能进行**编译**或**服务运行**(如果支持)。若要运行图形界面,你需要自行配置 VNC X11 转发(较为复杂,且可能受限于网络)
56
+
57
+ ### 安装 OpenClaw 依赖
58
+ 在终端中运行以下命令安装编译 OpenClaw 所需的库:
59
+
60
+ ```bash
61
+ # 更新软件源
62
+ sudo apt-get update
63
+
64
+ # 安装 SDL2 及相关依赖 (OpenClaw 核心需求)
65
+ sudo apt-get install -y \
66
+ libsdl2-dev \
67
+ libsdl2-image-dev \
68
+ libsdl2-mixer-dev \
69
+ libsdl2-ttf-dev \
70
+ libxml2-dev \
71
+ zlib1g-dev
72
+ ```
73
+
74
+ ### 获取并编译 OpenClaw
75
+ ```bash
76
+ # 克隆 OpenClaw
77
+ git clone https://github.com/pjasicek/OpenClaw.git
78
+ cd OpenClaw
79
+
80
+ # 创建构建目录
81
+ mkdir build && cd build
82
+
83
+ # 编译
84
+ cmake ..
85
+ make -j$(nproc)
86
+ ```
87
+
88
+ ### 注意事项
89
+ - **图形界面限制**: 直接运行 `./OpenClaw` 可能会报错 `Could not initialize SDL: No available video device`,因为 Space 没有连接显示器。
90
+ - **持久化存储**: Hugging Face Spaces 重启后,非 `/data` 目录下的文件会丢失。建议将重要数据保存在 `/data` 目录(如果启用了 Persistent Storage)或使用 Git 同步代码。
91
+
92
+ ## ⚠️ 安全警告
93
+ - 此 VPS 拥有 root 权限,请勿在其中存储敏感密钥。
94
+ - 请务必设置强密码。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
start.sh CHANGED
@@ -1,15 +1,15 @@
1
  #!/bin/bash
2
 
3
- # Start ttyd in background
4
- # -W: Writeable
5
- # -p 7681: Local port
6
- # -i lo: Bind to localhost only
7
- echo "Starting ttyd on localhost:7681..."
8
- ttyd -p 7681 -i lo -W bash &
9
 
10
- # Wait for ttyd to be ready
11
- sleep 2
12
 
13
- # Start Authentication Proxy
14
- echo "Starting Auth Proxy on port 7860..."
15
- uvicorn auth_proxy:app --host 0.0.0.0 --port 7860
 
 
 
 
1
  #!/bin/bash
2
 
3
+ # 获取环境变量,如果没有设置则使用默认值(建议在 HF Space Settings 中设置)
4
+ USER=${TTYD_USER:-"admin"}
5
+ PASSWORD=${TTYD_PASSWORD:-"admin123456"}
 
 
 
6
 
7
+ echo "Starting ttyd with Basic Auth..."
8
+ echo "Username: $USER"
9
 
10
+ # 启动 ttyd
11
+ # -p 7860: 监听 HF 要求的端口
12
+ # -c user:pass: 启用 Basic Auth 鉴权
13
+ # -W: 允许写入(操作终端)
14
+ # bash: 启动的 shell
15
+ exec ttyd -p 7860 -c "${USER}:${PASSWORD}" -W bash