首页龙虾技能列表 › FastapiAdmin WSL 自动部署 — 技能工具

FastapiAdmin WSL 自动部署 — 技能工具

v1.0.0

将 FastapiAdmin 在 Windows WSL2 Ubuntu 环境下自动部署。包括环境检查、依赖安装(pip/pnpm/MySQL/Redis/Nginx)、前后端代码克隆与构建、Nginx SPA 路由修复(alias+try_files 循环问题)、WSL2 网络访问(宿主机浏览器访问)、SSL...

0· 49·0 当前·0 累计
by @bamboo-art·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/31
安全扫描
VirusTotal
无害
查看报告
OpenClaw
可疑
medium confidence
The instructions largely match the stated goal of deploying FastapiAdmin on WSL2, but they ask you to perform wide-reaching, privileged system changes (install packages, overwrite /etc/nginx/nginx.conf, create DB users with a hardcoded weak password, generate private keys, and suggest mapping hosts) and contain small inconsistencies — proceed only after review and modifications.
评估建议
This SKILL.md is coherent with deploying FastapiAdmin on WSL2 but contains high-impact, privileged commands and some unsafe defaults. Before running anything: 1) Review every shell command line-by-line and run them manually (don’t run the whole script as-is). 2) Replace the hardcoded DB password with a strong unique password and store it securely. 3) Back up existing /etc/nginx/nginx.conf before overwriting. 4) Consider using proper TLS (Let’s Encrypt) or generate certs with correct CN/server_na...
详细分析 ▾
用途与能力
Name/description (WSL2 FastapiAdmin deployment) match the instructions: they install system packages, clone repo, build frontend/backend, configure Nginx and SSL, and enable host access. Required items declared (none) are consistent with an instruction-only skill.
指令范围
The SKILL.md instructs the agent/operator to run many privileged system changes: apt installs, start system services, run sudo cp to /etc/nginx/nginx.conf, generate and place private keys under /etc/nginx/ssl, create a MySQL user and grant privileges, and modify frontend env files. Those are within deployment scope, but they are high-impact operations and include risky guidance (hardcoded DB password 'fastapiadmin123', suggestion to edit Windows hosts to map WSL2 IP to localhost). There are minor inconsistencies (Nginx server_name service.fastapiadmin.com vs self-signed cert CN=localhost and the hosts mapping guidance).
安装机制
Instruction-only skill — no install spec. Commands download get-pip.py from bootstrap.pypa.io and clone from gitee.com; these are standard but will write files and install packages when run. No opaque external binary downloads or archive extractions beyond git/apt/npm/openssl usage.
凭证需求
The skill does not request environment variables, but it instructs creating credentials and files on-disk: it creates a MySQL user with a hardcoded weak password and writes a private key to /etc/nginx/ssl. Those secret-handling choices are disproportionate/unprotected by default. The instructions do not recommend using unique strong passwords, secret storage, or verifying remote repo integrity before cloning.
持久化与权限
Although the skill itself is not persistent (always:false), the runtime actions it prescribes require root privileges and modify system-wide configuration (installing services, overwriting /etc/nginx/nginx.conf, placing SSL keys). That gives the procedure a high blast radius if executed blindly; this is appropriate for deployment but risky without review and backups.
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/31

Initial release: Automates FastapiAdmin deployment in WSL2 Ubuntu, covering environment setup, service installation, and cross-platform access. - Supports automated installation of pip, pnpm, MySQL, Redis, and Nginx within WSL2. - Guides cloning, configuring, and initializing both backend and frontend of FastapiAdmin. - Provides Nginx configuration with SPA routing fix (alias + try_files loop issue workaround). - Includes instructions for setting up SSL certificates and configuring network for host access. - Summarizes troubleshooting steps and essential operational commands.

● 无害

安装命令 点击复制

官方npx clawhub@latest install faa-wsl
镜像加速npx clawhub@latest install faa-wsl --registry https://cn.clawhub-mirror.com

技能文档

环境要求

组件版本说明
Python≥ 3.10WSL2 Ubuntu 默认 3.12
Node.js≥ 20.0WSL2 已装 v22
pnpm≥ 9.0需单独安装
MySQL≥ 8.0需单独安装
Redis≥ 7.0需单独安装
Nginx任意需单独安装

工作目录

统一使用 ~/workdir(即 /home//workdir)作为部署根目录。


Step 1:安装系统依赖(pip/pnpm/MySQL/Redis/Nginx)

# 安装 pip(Ubuntu 强制模式)
curl -sS https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py
python3 /tmp/get-pip.py --break-system-packages

# 安装 pnpm npm install -g pnpm

# 安装 MySQL + Redis + Nginx sudo apt-get update sudo apt-get install -y mysql-server redis-server nginx

# 安装 python3-venv(venv 创建必需) sudo apt-get install -y python3.12-venv

# 启动服务 sudo service mysql start sudo service redis-server start

Step 2:配置 MySQL 数据库

sudo mysql -e "CREATE DATABASE IF NOT EXISTS fastapiadmin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER IF NOT EXISTS 'fastapiadmin'@'localhost' IDENTIFIED BY 'fastapiadmin123';"
sudo mysql -e "GRANT ALL PRIVILEGES ON fastapiadmin.* TO 'fastapiadmin'@'localhost'; FLUSH PRIVILEGES;"

Step 3:克隆代码

mkdir -p ~/workdir && cd ~/workdir
git clone https://gitee.com/fastapiadmin/FastapiAdmin.git
git clone https://gitee.com/fastapiadmin/FastDocs.git

Step 4:后端初始化

cd ~/workdir/FastapiAdmin/backend

# 创建虚拟环境 python3 -m venv venv ./venv/bin/pip install -r requirements.txt

# 配置环境变量 cp env/.env.dev.example env/.env.dev # 编辑 env/.env.dev,修改: # DATABASE_USER = "fastapiadmin" # DATABASE_PASSWORD = "fastapiadmin123" # REDIS_PASSWORD = ""(无密码则留空)

# 生成并执行迁移 ./venv/bin/python main.py revision --env=dev ./venv/bin/python main.py upgrade --env=dev

Step 5:前端构建

cd ~/workdir/FastapiAdmin/frontend

# 安装依赖 pnpm install

# 创建生产环境配置 cat > .env.production << 'EOF' VITE_APP_ENV=production VITE_APP_TITLE=FastapiAdmin VITE_API_BASE_URL=http:// VITE_APP_BASE_API=/api/v1 VITE_TIMEOUT=10000 VITE_APP_WS_ENDPOINT=ws:// EOF

# 构建 pnpm run build

Step 6:Nginx 配置(关键)

Nginx 配置源码位于 ~/workdir/FastapiAdmin/devops/nginx/nginx.conf,部署时复制到 /etc/nginx/nginx.conf

6.1 生成自签名 SSL 证书

sudo mkdir -p /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/nginx/ssl/server.key -out /etc/nginx/ssl/server.pem \
  -subj "/C=CN/ST=Beijing/L=Beijing/O=FastapiAdmin/OU=Dev/CN=localhost"
sudo chmod 600 /etc/nginx/ssl/server.key

6.2 Nginx 配置模板

⚠️ 关键修复:原配置中 alias + try_files 组合会导致重定向循环。必须用精确匹配 location = /web/index.html 作为内部 fallback,而非 named location 或路径重写。

编辑 ~/workdir/FastapiAdmin/devops/nginx/nginx.conf,替换 location /web 部分:

# HTTP server块
server {
    listen 80;
    server_name service.fastapiadmin.com;

location = /web { return 301 /web/; } location /web/ { alias /usr/share/nginx/html/frontend/; index index.html; try_files $uri $uri/ /web_fallback.html; } location = /web_fallback.html { internal; alias /usr/share/nginx/html/frontend/index.html; }

location /api/v1 { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://127.0.0.1:8001; } }

6.3 部署 Nginx 配置

sudo cp ~/workdir/FastapiAdmin/devops/nginx/nginx.conf /etc/nginx/nginx.conf
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t && sudo nginx

Step 7:启动后端服务

cd ~/workdir/FastapiAdmin/backend
./venv/bin/python main.py run --env=dev &

宿主机访问

WSL2 IP 不固定,每次重启后可能变化。获取方式:

hostname -I | awk '{print $1}'

宿主机 Windows 浏览器访问:

  • 前端:http:///web/
  • API 文档:http:///api/v1/docs
💡 部署后如果 WSL2 IP 变化,只需更新 Nginx 中 .env.productionVITE_API_BASE_URL 并重建前端即可。

故障排查

详见 references/troubleshooting.md

快速命令汇总

# 一键启动
cd ~/workdir/FastapiAdmin/backend && ./venv/bin/python main.py run --env=dev

# 查看 WSL2 IP hostname -I | awk '{print $1}'

# Nginx 配置测试与重载 sudo nginx -t && sudo nginx -s reload

# 查看 Nginx 错误日志 sudo tail /var/log/nginx/error.log

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务