← 返回 Skills 市场
bamboo-art

FastapiAdmin WSL 自动部署

作者 bamboo-art · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
87
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install faa-wsl
功能描述
将 FastapiAdmin 在 Windows WSL2 Ubuntu 环境下自动部署。包括环境检查、依赖安装(pip/pnpm/MySQL/Redis/Nginx)、前后端代码克隆与构建、Nginx SPA 路由修复(alias+try_files 循环问题)、WSL2 网络访问(宿主机浏览器访问)、SSL...
使用说明 (SKILL.md)

FastapiAdmin WSL2 部署

环境要求

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

工作目录

统一使用 ~/workdir(即 /home/\x3Cuser>/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 \x3C\x3C 'EOF'
VITE_APP_ENV=production
VITE_APP_TITLE=FastapiAdmin
VITE_API_BASE_URL=http://\x3CWSL2_IP>
VITE_APP_BASE_API=/api/v1
VITE_TIMEOUT=10000
VITE_APP_WS_ENDPOINT=ws://\x3CWSL2_IP>
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://\x3CWSL2_IP>/web/
  • API 文档:http://\x3CWSL2_IP>/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
安全使用建议
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_name instead of the provided self-signed CN=localhost. 5) Avoid mapping a remote IP to 'localhost' on Windows — prefer using a custom host name and update server_name accordingly. 6) Verify the git repositories (confirm authors and commit history on gitee) before cloning and building. 7) Run package installs and service starts interactively so you can observe and revert changes. If you want, I can: produce a reviewed, safer step-by-step script with prompts for secrets, or highlight exact lines you should change before running.
功能分析
Type: OpenClaw Skill Name: faa-wsl Version: 1.0.0 The skill bundle provides a comprehensive set of instructions for automating the deployment of the FastapiAdmin project on WSL2 Ubuntu. It covers environment preparation (pip, pnpm, MySQL, Redis, Nginx), database initialization, code cloning from Gitee, and Nginx configuration including SSL setup. While the script performs high-privilege actions such as using sudo and modifying system-level Nginx configurations, these behaviors are entirely consistent with the stated goal of automated service deployment and show no signs of malicious intent or data exfiltration.
能力评估
Purpose & Capability
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.
Instruction Scope
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).
Install Mechanism
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.
Credentials
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.
Persistence & Privilege
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.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install faa-wsl
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /faa-wsl 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
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.
元数据
Slug faa-wsl
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

FastapiAdmin WSL 自动部署 是什么?

将 FastapiAdmin 在 Windows WSL2 Ubuntu 环境下自动部署。包括环境检查、依赖安装(pip/pnpm/MySQL/Redis/Nginx)、前后端代码克隆与构建、Nginx SPA 路由修复(alias+try_files 循环问题)、WSL2 网络访问(宿主机浏览器访问)、SSL... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 87 次。

如何安装 FastapiAdmin WSL 自动部署?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install faa-wsl」即可一键安装,无需额外配置。

FastapiAdmin WSL 自动部署 是免费的吗?

是的,FastapiAdmin WSL 自动部署 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

FastapiAdmin WSL 自动部署 支持哪些平台?

FastapiAdmin WSL 自动部署 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 FastapiAdmin WSL 自动部署?

由 bamboo-art(@bamboo-art)开发并维护,当前版本 v1.0.0。

💬 留言讨论