RIDM Apps โฮสติ้งแอป

เมื่อเชื่อมต่อ GitHub repository จะบิลด์·ดีพลอยทุกครั้งที่ push และเผยแพร่ที่ที่อยู่ <name>.ridm.ai แต่ละแอปมี PostgreSQL DB เฉพาะ จึงบันทึกสมาชิก·โพสต์·บันทึกได้ทันที นำขึ้นได้ทั้งแอปที่สร้างด้วย API ซาจู และเว็บแอปทั่วไปที่ไม่ใช้ API

สมัครที่แอปของฉัน คู่มือการดีพลอย แพลน·ราคา ค้นหาโดเมน

ดีพลอยใน 4 ขั้นตอน

  1. สมัคร — เลือกแพลนและที่อยู่ (ซับโดเมน) ในแอปของฉันในคอนโซล
  2. เชื่อมต่อ GitHub — ติดตั้ง GitHub App ridm-apps-builder แล้วเลือก repository และ branch สิทธิ์มีเพียงการอ่าน repository
  3. Push — ทุกครั้งที่ push ไปยัง branch ที่เชื่อมต่อ การบิลด์จะเริ่มขึ้น ประวัติการบิลด์และล็อกที่ล้มเหลวจะแสดงในหน้าจอแอป
  4. เผยแพร่ — เมื่อบิลด์สำเร็จจะผ่านการตรวจสอบอัตโนมัติแล้วเผยแพร่ทันที ก่อนการดีพลอยครั้งแรกจะเผยแพร่ จะไม่มีการหักค่าบริการแบบชำระเงิน

เว็บไซต์แบบสแตติกที่มีเพียง HTML·CSS·JS ก็นำขึ้นด้วยคอนเทนเนอร์ (Dockerfile) วางไฟล์ไว้ใน public/ แล้วใส่ Dockerfile ด้านล่างไว้ที่รากของ repository ก็ได้ เงื่อนไขอย่างพอร์ต 3000 ผู้ใช้ 1000 อยู่ในคู่มือการดีพลอย

FROM busybox:1.36
COPY --chown=1000:1000 public /www
USER 1000:1000
EXPOSE 3000
CMD ["httpd", "-f", "-p", "3000", "-h", "/www"]

นำเว็บไซต์สแตติกที่มี 3D·รูปภาพขนาดใหญ่ขึ้นระบบ

เว็บไซต์ที่มีโมเดล (.glb)·เท็กซ์เจอร์ขนาดหลายสิบ MB อย่างเกม three.js ให้ใช้ nginx:alpine แทน busybox เพราะ busybox httpd กำหนดเฮดเดอร์แคชไม่ได้ และส่ง .glb·.ktx2 เป็นไฟล์ประเภททั่วไป วางสองไฟล์ด้านล่างไว้ที่รากของ repository แล้วผลการบิลด์ (dist/ ตาม Vite) จะถูกให้บริการตามเดิม

# Dockerfile
FROM node:22-alpine AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM nginx:1.27-alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=build --chown=1000:1000 /app/dist /usr/share/nginx/html
USER 1000:1000
EXPOSE 3000
ENTRYPOINT ["nginx", "-g", "daemon off;"]
# nginx.conf — runs as user 1000 on a read-only file system: only /tmp is writable.
worker_processes 1;
pid /tmp/nginx.pid;
error_log /dev/stderr warn;

events { worker_connections 1024; }

http {
    include /etc/nginx/mime.types;
    # 3D types missing from the stock mime.types (.wasm is already there).
    types {
        model/gltf-binary glb;
        model/gltf+json   gltf;
        image/ktx2        ktx2;
    }
    default_type application/octet-stream;

    client_body_temp_path /tmp/client_temp;
    proxy_temp_path       /tmp/proxy_temp;
    fastcgi_temp_path     /tmp/fastcgi_temp;
    uwsgi_temp_path       /tmp/uwsgi_temp;
    scgi_temp_path        /tmp/scgi_temp;

    access_log off;
    server_tokens off;
    sendfile on;
    tcp_nopush on;

    # Text formats only. .glb / .ktx2 / images are already compressed.
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_comp_level 5;
    gzip_types text/css application/javascript text/javascript application/json
               image/svg+xml model/gltf+json application/wasm text/plain;

    # /assets/ = bundler output whose names carry a content hash (Vite default).
    map $uri $cache_control {
        ~^/assets/ "public, max-age=31536000, immutable";
        ~*\.(?:glb|gltf|bin|ktx2|basis|hdr|webp|avif|png|jpe?g|svg|mp3|ogg|wasm|js|css|woff2?)$ "public, max-age=3600";
        default    "no-cache";
    }
    # Errors (404 etc.) are never cached, so a file added later shows up at once.
    map $status $cache_header {
        ~^(200|206|304)$ $cache_control;
        default          "no-store";
    }

    server {
        listen 3000;
        root /usr/share/nginx/html;

        add_header Cache-Control $cache_header always;
        # Keeps the site out of search results. Delete this line to be indexed.
        add_header X-Robots-Tag "noindex, nofollow" always;

        location / {
            try_files $uri $uri/ =404;
        }
    }
}

สิ่งที่มีให้

แพลน

ราคา·หน่วยความจำ·ความจุ DB·ปริมาณการรับส่งข้อมูลรายเดือนของแต่ละแพลนดูได้ที่หน้าราคา หากยกเลิก จะหยุดในวันที่สิ้นสุดระยะเวลาที่ชำระเงินไว้แล้ว และหลังจากนั้น 30 วันยังดาวน์โหลดหรือกู้คืนข้อมูลได้

ข้อจำกัดที่ควรรู้

เงื่อนไขทั้งหมดดูได้ที่คู่มือการดีพลอยและข้อกำหนดการใช้งาน หมวด 3 (ภาษาเกาหลี)

หากอยากลองสร้างตั้งแต่ต้น

เว็บแอประบบสมาชิกด้วย AI (ภาษาเกาหลี) เป็นอีบุ๊กแบบลงมือทำฟรีที่เมื่อให้ประโยคเริ่มต้นหนึ่งบรรทัดกับเครื่องมือเขียนโค้ด AI จะแนะนำตั้งแต่การสร้างการสมัคร·เข้าสู่ระบบและสมุดบันทึกเฉพาะสมาชิก จนถึงการเผยแพร่บน RIDM Apps หากจะสร้างแอปซาจูให้ดูโซลูชัน AI ดูดวงแบบรวม (ภาษาเกาหลี) หากจะเริ่มจากการเชื่อมต่อ API ซาจูให้ดูคู่มือเริ่มต้นใช้งานสำหรับนักพัฒนา

หากอยากสร้างโดยไม่ต้องเขียนโค้ด เลือกบล็อกซาจู·ดูดวงใน Baro (สร้างแอปแบบประกอบ) เพื่อประกอบแอป แล้วอัปโหลดแพ็กเกจดีพลอยที่ดาวน์โหลดไปยัง RIDM Apps ได้ทันที

หากอยากดูทุกอย่างตั้งแต่การสร้างจนถึงเซิร์ฟเวอร์·DB·โดเมนในครั้งเดียว ดูได้ที่พัฒนาแอปแบบครบวงจร

ติดต่อ: contact@float.do · ดำเนินการโดย: FLOAT Co., Ltd.