RIDM Apps 應用程式託管

連結 GitHub 儲存庫後,每次 push 都會自動建置、部署,並以 <name>.ridm.ai 網址公開。每個應用程式都附有專屬的 PostgreSQL 資料庫,可以立即儲存會員、文章與紀錄。無論是用八字 API 做的應用程式,還是完全不用 API 的一般網頁應用程式,都能放上來。

在我的應用程式申請 部署指南 方案與價格 搜尋網域

部署只要四個步驟

  1. 申請 — 在主控台的「我的應用程式」選擇方案與網址(子網域)。
  2. 連結 GitHub — 安裝 GitHub App ridm-apps-builder,選擇儲存庫與分支。權限只有儲存庫的讀取權。
  3. Push — 每次 push 到連結的分支都會開始建置,建置紀錄與失敗日誌會顯示在應用程式畫面上。
  4. 公開 — 建置成功後會經過自動檢查,隨即公開。第一次部署公開之前,不會扣除付費方案的費用。

只有 HTML、CSS、JS 的靜態網站,也一樣以容器(Dockerfile)部署。把檔案放在 public/,並在儲存庫根目錄放入下面的 Dockerfile 即可。連接埠 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、圖片靜態網站

像 three.js 遊戲這樣模型(.glb)與材質達數十 MB 的網站,請改用 nginx:alpine 而非 busybox。busybox 的 httpd 無法設定快取標頭,而且會把 .glb、.ktx2 當成一般檔案格式傳送。把下面兩個檔案放在儲存庫根目錄,建置結果(以 Vite 為例是 dist/)就會直接提供服務。

# 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;
        }
    }
}

包含的功能

方案

各方案的價格、記憶體、資料庫容量、每月傳輸量請見 價格頁面。解約後,應用程式會在已付款期間結束當天停止,之後 30 天內仍可下載資料或還原。

需要知道的限制

完整條件請見 部署指南 與 服務條款 第3章(韓文)。

想從零開始做做看?

用 AI 打造會員制網頁應用程式(韓文)是一本免費的實作型電子書:只要給 AI 程式開發工具一句起始指令,就能一路引導您完成註冊與登入、會員專屬記事本,直到在 RIDM Apps 上公開。想做八字應用程式,請見 整合運勢 AI 解決方案(韓文);想從八字 API 串接開始,請見 開發者入門指南。

想不寫程式就做出來,可以在 Baro(組合式應用程式製作) 挑選八字、運勢積木組合出應用程式,再把下載的部署套件直接上傳到 RIDM Apps。

若想一次搞定製作、伺服器、資料庫與網域,請見 一站式應用程式開發。

聯絡我們:contact@float.do · 營運:FLOAT Co., Ltd.