Vo Hoang Minh commited on
Commit
bb5d0b2
·
1 Parent(s): 897cfe5
Files changed (5) hide show
  1. Dockerfile +28 -60
  2. README.md +40 -5
  3. entrypoint.sh +11 -24
  4. package.json +2 -1
  5. src/server.mjs +4 -1
Dockerfile CHANGED
@@ -1,22 +1,17 @@
1
- # Sử dụng Debian Slim để giảm kích thước image nhưng vẫn giữ sự tương thích
2
- FROM node:22
3
-
4
- # Đảm bảo cài đặt Node.js và npm trước
5
- RUN corepack enable && \
6
- corepack prepare pnpm@latest --activate && \
7
- apt-get update && \
8
- apt-get install -y curl sudo && \
9
- npm install -g bun
10
 
11
- # Thiết lập môi trường
12
- ENV DEBIAN_FRONTEND=noninteractive \
 
 
13
  DISPLAY=:0
14
 
15
- # Cài đặt dependencies cần thiết trong một lệnh duy nhất để giảm số lượng layer
16
- RUN ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime && \
17
- apt-get update && \
18
  apt-get install -y --no-install-recommends \
19
- tzdata x11vnc xvfb zip wget curl psmisc \
20
  gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 \
21
  libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 \
22
  libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 \
@@ -25,61 +20,34 @@ RUN ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime && \
25
  libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 \
26
  libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates \
27
  fonts-liberation libappindicator1 libnss3 lsb-release \
28
- xdg-utils libgbm-dev nginx libcurl3-gnutls && \
29
- apt-get clean && rm -rf /var/lib/apt/lists/*
30
-
31
-
32
- RUN mkdir -p /home/orbita/.gologin/browser
33
 
34
-
35
- # Tải cài đặt Orbita Browser
36
- RUN wget https://orbita-browser-linux.gologin.com/orbita-browser-latest.tar.gz -O /tmp/orbita-browser.tar.gz && \
37
  tar -xzf /tmp/orbita-browser.tar.gz -C /home/orbita/.gologin && \
38
  mv /home/orbita/.gologin/orbita-browser /home/orbita/.gologin/browser && \
39
- chmod -R 777 /home/orbita/.gologin/browser && \
40
- rm -f /tmp/orbita-browser.tar.gz
 
41
 
42
 
43
- # Cài đặt Node.js dependencies
44
  WORKDIR /opt/orbita
 
45
 
46
- COPY ./ /opt/orbita/
47
-
48
-
49
- # Cấu hình Nginx
50
- COPY orbita.conf /etc/nginx/conf.d/orbita.conf
51
- RUN rm /etc/nginx/sites-enabled/default
52
 
53
- # Tạo file cấu hình nginx.conf mới với user root (sử dụng sudo để tránh lỗi quyền)
54
- RUN echo 'user root;\nworker_processes auto;\npid /run/nginx.pid;\ninclude /etc/nginx/modules-enabled/*.conf;\n\nevents {\n worker_connections 768;\n}\n\nhttp {\n include /etc/nginx/mime.types;\n include /etc/nginx/conf.d/*.conf;\n default_type application/octet-stream;\n sendfile on;\n tcp_nopush on;\n types_hash_max_size 2048;\n keepalive_timeout 65;\n gzip on;\n access_log /var/log/nginx/access.log;\n error_log /var/log/nginx/error.log;\n}' > /etc/nginx/nginx.conf
55
-
56
- # Đảm bảo quyền cho các file Nginx (không sử dụng chmod -R)
57
- RUN mkdir -p /var/lib/nginx && \
58
- mkdir -p /var/log/nginx && \
59
- mkdir -p /var/run/nginx && \
60
- touch /var/log/nginx/access.log && \
61
- touch /var/log/nginx/error.log
62
-
63
- # Cấu hình X11
64
- RUN mkdir /tmp/.X11-unix && chmod 1777 /tmp/.X11-unix
65
-
66
- # Copy các file ứng dụng
67
- COPY entrypoint.sh /entrypoint.sh
68
- # COPY fonts /home/orbita/.gologin/browser/fonts
69
-
70
- # Đảm bảo các thư mục cho orbita có quyền truy cập đúng
71
- RUN mkdir -p /home/orbita/Downloads /home/orbita/.gologin/browser/fonts
72
-
73
- # Cấp quyền cho entrypoint.sh
74
  RUN chmod +x /entrypoint.sh
75
 
76
- # Cài đặt dependencies từ package.json
77
- RUN cd /opt/orbita && npm install
78
-
79
- # Sử dụng user root cho tất cả dịch vụ
80
- USER root
81
 
82
- # Mở cổng dịch vụ
83
- EXPOSE 3000 3500 8080
84
 
 
85
  ENTRYPOINT ["/entrypoint.sh"]
 
1
+ # Sử dụng Node.js image bản
2
+ FROM node:20
3
+ USER root
 
 
 
 
 
 
4
 
5
+ # Thiết lập biến môi trường cho Hugging Face Spaces
6
+ ENV PYTHONUNBUFFERED=1 \
7
+ PORT=8080 \
8
+ DEBIAN_FRONTEND=noninteractive \
9
  DISPLAY=:0
10
 
11
+ # Cài đặt các gói cần thiết cho trình duyệt headless xvfb
12
+ RUN apt-get update && \
 
13
  apt-get install -y --no-install-recommends \
14
+ tzdata wget curl sudo \
15
  gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 \
16
  libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 \
17
  libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 \
 
20
  libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 \
21
  libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates \
22
  fonts-liberation libappindicator1 libnss3 lsb-release \
23
+ xdg-utils libgbm-dev && \
24
+ apt-get clean && \
25
+ rm -rf /var/lib/apt/lists/*
 
 
26
 
27
+ # Cài đặt Orbita Browser
28
+ RUN mkdir -p /home/orbita/.gologin/browser && \
29
+ wget https://orbita-browser-linux.gologin.com/orbita-browser-latest.tar.gz -O /tmp/orbita-browser.tar.gz && \
30
  tar -xzf /tmp/orbita-browser.tar.gz -C /home/orbita/.gologin && \
31
  mv /home/orbita/.gologin/orbita-browser /home/orbita/.gologin/browser && \
32
+ chmod -R 755 /home/orbita/.gologin/browser && \
33
+ rm -f /tmp/orbita-browser.tar.gz && \
34
+ mkdir -p /home/orbita/Downloads
35
 
36
 
37
+ # Thiết lập thư mục làm việc và sao chép mã nguồn
38
  WORKDIR /opt/orbita
39
+ COPY . /opt/orbita/
40
 
41
+ # Cài đặt dependencies
42
+ RUN npm install
 
 
 
 
43
 
44
+ # Cấp quyền thực thi cho entrypoint.sh
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  RUN chmod +x /entrypoint.sh
46
 
47
+ # Mở cổng cho API và WebSocket
48
+ EXPOSE 8080 3000 3500
 
 
 
49
 
50
+ # Thiết lập quyền truy cập
 
51
 
52
+ # Khởi chạy ứng dụng khi container được khởi động
53
  ENTRYPOINT ["/entrypoint.sh"]
README.md CHANGED
@@ -1,11 +1,46 @@
1
  ---
2
- title: Cloudbrowser
3
- emoji: 📚
4
- colorFrom: green
5
- colorTo: red
6
  sdk: docker
7
- pinned: false
8
  app_port: 8080
 
9
  ---
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: Cloud Browser Service
3
+ emoji: 🌐
4
+ colorFrom: blue
5
+ colorTo: indigo
6
  sdk: docker
 
7
  app_port: 8080
8
+ pinned: false
9
  ---
10
 
11
+ # Cloud Browser Service
12
+
13
+ Dịch vụ này cho phép bạn chạy trình duyệt web từ xa thông qua API, sử dụng GoLogin và Orbita Browser.
14
+
15
+ ## Thiết lập cho Hugging Face Spaces
16
+
17
+ 1. Sao chép repository này vào Hugging Face Space của bạn
18
+ 2. Đặt biến môi trường `GOLOGIN_TOKEN` trong cài đặt Space của bạn
19
+ 3. Khởi động Space
20
+
21
+ ## API Endpoints
22
+
23
+ ### `POST /browser/start`
24
+ Khởi động một trình duyệt mới và trả về profile ID và WebSocket URL.
25
+
26
+ ### `POST /browser/navigate`
27
+ Điều hướng trình duyệt đến URL xác định và trả về ảnh chụp màn hình.
28
+ Body: `{ "profileId": "...", "url": "https://example.com" }`
29
+
30
+ ### `POST /browser/stop`
31
+ Đóng trình duyệt.
32
+ Body: `{ "profileId": "..." }`
33
+
34
+ ## Sử dụng Local
35
+
36
+ Để chạy locally, sử dụng file Dockerfile.huggingface:
37
+
38
+ ```bash
39
+ # Build image
40
+ docker build -f Dockerfile.huggingface -t cloudbrowser .
41
+
42
+ # Chạy container
43
+ docker run -p 8080:8080 -p 3000:3000 -e GOLOGIN_TOKEN=your_token_here cloudbrowser
44
+ ```
45
+
46
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
entrypoint.sh CHANGED
@@ -1,31 +1,18 @@
1
  #!/bin/bash
 
 
2
 
3
- # Khởi động Xvfb nền
4
- # Xvfb :0 -screen 0 "${SCREEN_WIDTH:-1280}x${SCREEN_HEIGHT:-720}x16" &
5
-
6
- # Log thông tin về user hiện tại và quyền
7
  echo "Current user: $(whoami)"
8
- echo "Starting services..."
 
9
 
10
  cd /opt/orbita
11
 
12
- # Kiểm tra bun đã được cài đặt đúng chưa
13
- echo "Checking bun installation..."
14
- which bun || echo "Bun not found in PATH"
15
- echo "PATH=$PATH"
16
-
17
- # Kiểm tra file scripts trong package.json
18
- echo "Checking package.json scripts..."
19
- cat package.json | grep scripts -A 10
20
-
21
- # Khởi động ứng dụng với node thay vì bun
22
- echo "Starting application..."
23
- node src/app.mjs &
24
-
25
- # Kiểm tra file nginx.conf
26
- echo "Checking nginx configuration..."
27
- cat /etc/nginx/nginx.conf | head -n 10
28
 
29
- # Khởi động nginx
30
- echo "Starting Nginx..."
31
- /usr/sbin/nginx
 
1
  #!/bin/bash
2
+ # Khởi động Xvfb (Virtual Framebuffer X server)
3
+ echo "Starting Xvfb..."
4
 
5
+ # In thông tin người dùng và hệ thống
 
 
 
6
  echo "Current user: $(whoami)"
7
+ echo "Node version: $(node --version)"
8
+ echo "Starting Cloud Browser Service..."
9
 
10
  cd /opt/orbita
11
 
12
+ # Kiểm tra thư mục hiện tại tệp tin
13
+ echo "Current directory: $(pwd)"
14
+ echo "Files in directory: $(ls -la)"
 
 
 
 
 
 
 
 
 
 
 
 
 
15
 
16
+ # Khởi động server Node.js
17
+ echo "Starting Node.js server..."
18
+ node src/server.mjs
package.json CHANGED
@@ -6,7 +6,8 @@
6
  "type": "module",
7
  "scripts": {
8
  "test": "echo \"Error: no test specified\" && exit 1",
9
- "dev": "bun run --hot src/server.mjs"
 
10
  },
11
  "keywords": [],
12
  "author": "",
 
6
  "type": "module",
7
  "scripts": {
8
  "test": "echo \"Error: no test specified\" && exit 1",
9
+ "dev": "node src/server.mjs",
10
+ "start": "node src/server.mjs"
11
  },
12
  "keywords": [],
13
  "author": "",
src/server.mjs CHANGED
@@ -174,6 +174,9 @@ app.get("/", (c) => {
174
  // Khởi động server
175
  console.log(`Server is starting on port ${PORT}...`);
176
 
177
- console.log(`Server running at http://localhost:${PORT}`);
 
 
 
178
 
179
  export default app;
 
174
  // Khởi động server
175
  console.log(`Server is starting on port ${PORT}...`);
176
 
177
+ // Bắt đầu lắng nghe kết nối
178
+ app.listen(PORT, () => {
179
+ console.log(`Server running at http://localhost:${PORT}`);
180
+ });
181
 
182
  export default app;