feat: rebuild xiteng.site homelab platform
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
node_modules
|
||||
.git
|
||||
*.md
|
||||
start-local-ai.bat
|
||||
/tmp
|
||||
@@ -0,0 +1,43 @@
|
||||
# CAT-BODHI Sprite Segmentation API
|
||||
# Node.js + Python + PyTorch in one container
|
||||
#
|
||||
# Build (CPU, default):
|
||||
# docker build -t cat-bodhi .
|
||||
# Build (GPU, requires nvidia-container-toolkit):
|
||||
# docker build --build-arg TORCH_INDEX=https://download.pytorch.org/whl/cu126 -t cat-bodhi .
|
||||
|
||||
FROM python:3.11-slim
|
||||
|
||||
ARG NODE_MAJOR=22
|
||||
ARG TORCH_INDEX=https://download.pytorch.org/whl/cpu
|
||||
ARG PIP_MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
|
||||
# 中科大 Debian 镜像源
|
||||
RUN sed -i 's|http://deb.debian.org/debian|https://mirrors.ustc.edu.cn/debian|g' /etc/apt/sources.list.d/debian.sources \
|
||||
&& sed -i 's|http://deb.debian.org/debian-security|https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list.d/debian.sources
|
||||
|
||||
# 安装 Node.js LTS
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates curl gnupg \
|
||||
&& mkdir -p /etc/apt/keyrings \
|
||||
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
|
||||
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_MAJOR}.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \
|
||||
&& apt-get update && apt-get install -y --no-install-recommends nodejs \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 安装 PyTorch(从官方 index)+ 其他 Python 包(从清华镜像)
|
||||
RUN pip install --no-cache-dir \
|
||||
--index-url ${TORCH_INDEX} \
|
||||
--extra-index-url ${PIP_MIRROR} \
|
||||
torch torchvision \
|
||||
opencv-python-headless \
|
||||
numpy \
|
||||
Pillow
|
||||
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
RUN mkdir -p assets/ai/cats assets/ai/beads
|
||||
|
||||
EXPOSE 8080
|
||||
ENV PORT=8080
|
||||
CMD ["node", "server.mjs"]
|
||||
@@ -0,0 +1,71 @@
|
||||
services:
|
||||
cat-bodhi:
|
||||
build:
|
||||
context: .
|
||||
# GPU 加速:取消下面注释(需先安装 nvidia-container-toolkit)
|
||||
# args:
|
||||
# TORCH_INDEX: https://download.pytorch.org/whl/cu126
|
||||
container_name: cat-bodhi
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
- PORT=8080
|
||||
- SPRITE_SEG_ROOT=/opt/sprite_alpha_seg_pytorch
|
||||
- SPRITE_SEG_PYTHON=/usr/local/bin/python
|
||||
- SPRITE_SEG_CHECKPOINT=/opt/sprite_alpha_seg_pytorch/checkpoints/unet_sprite_ft.pt
|
||||
- SPRITE_SEG_OUT_DIR=/opt/sprite_alpha_seg_pytorch/outputs/cat_match
|
||||
volumes:
|
||||
# 模型文件目录(需要手动放入 infer_spritesheet_hybrid.py + checkpoints/)
|
||||
- ./sprite_alpha_seg_pytorch:/opt/sprite_alpha_seg_pytorch:rw
|
||||
# AI 生成图片持久化(可选,不挂载则容器重启后丢失)
|
||||
- ./data/assets-ai:/app/assets/ai:rw
|
||||
networks:
|
||||
- homelab_net
|
||||
# GPU 支持:取消下面注释(需先安装 nvidia-container-toolkit)
|
||||
# deploy:
|
||||
# resources:
|
||||
# reservations:
|
||||
# devices:
|
||||
# - driver: nvidia
|
||||
# count: 1
|
||||
# capabilities: [gpu]
|
||||
|
||||
labels:
|
||||
# ========== Traefik ==========
|
||||
- "traefik.enable=true"
|
||||
|
||||
# HTTPS router (cert management)
|
||||
- "traefik.http.routers.cat-bodhi.rule=Host(`cat-bodhi.xiteng.site`)"
|
||||
- "traefik.http.routers.cat-bodhi.entrypoints=websecure"
|
||||
- "traefik.http.routers.cat-bodhi.tls=true"
|
||||
- "traefik.http.routers.cat-bodhi.tls.certresolver=cfresolver"
|
||||
- "traefik.http.services.cat-bodhi.loadbalancer.server.port=8080"
|
||||
|
||||
# HTTP router (Cloudflare Tunnel ingress)
|
||||
- "traefik.http.routers.cat-bodhi-http.rule=Host(`cat-bodhi.xiteng.site`)"
|
||||
- "traefik.http.routers.cat-bodhi-http.service=cat-bodhi"
|
||||
- "traefik.http.routers.cat-bodhi-http.entrypoints=web"
|
||||
- "xiteng.site.cache.cat-bodhi.enabled=true"
|
||||
- "xiteng.site.cache.cat-bodhi.routers=cat-bodhi,cat-bodhi-http"
|
||||
- "xiteng.site.cache.cat-bodhi.paths=/assets/,/data/assets-ai/"
|
||||
- "xiteng.site.cache.cat-bodhi.edge-ttl=604800"
|
||||
- "xiteng.site.cache.cat-bodhi.stale-while-revalidate=86400"
|
||||
|
||||
- "xiteng.site.component.cat-bodhi.enabled=true"
|
||||
- "xiteng.site.component.cat-bodhi.name=猫猫盘珠日记"
|
||||
- "xiteng.site.component.cat-bodhi.description=文玩手串与猫咪主题游戏,以及 Sprite 抠图导入工具。"
|
||||
- "xiteng.site.component.cat-bodhi.section=services"
|
||||
- "xiteng.site.component.cat-bodhi.category=作品与实验"
|
||||
- "xiteng.site.component.cat-bodhi.url=https://cat-bodhi.xiteng.site"
|
||||
- "xiteng.site.component.cat-bodhi.access=public"
|
||||
- "xiteng.site.component.cat-bodhi.access-label=无需登录"
|
||||
- "xiteng.site.component.cat-bodhi.icon=猫"
|
||||
- "xiteng.site.component.cat-bodhi.accent=yellow"
|
||||
- "xiteng.site.component.cat-bodhi.order=300"
|
||||
- "xiteng.site.component.cat-bodhi.navigation=new-tab"
|
||||
- "xiteng.site.component.cat-bodhi.portal-link=embedded"
|
||||
|
||||
networks:
|
||||
homelab_net:
|
||||
external: true
|
||||
Reference in New Issue
Block a user