小型工作室AI绘画解决方案Stable Diffusion v1.5多用户共享部署实战想象一下在一个小型设计工作室里几位设计师正围在一起讨论新项目的视觉方案。有人需要生成几张概念草图有人想试试不同的艺术风格还有人要批量制作社交媒体配图。如果每个人都用自己的电脑跑AI绘画不仅显卡风扇呼呼作响电费蹭蹭上涨模型版本还五花八门管理起来简直是一场噩梦。但要是大家共用一个AI绘画服务呢问题又来了——小张刚调好一组完美的参数准备出图小李刷新了一下页面所有设置瞬间清零历史记录也不见了。这种“打架”的体验任谁都会抓狂。今天我就来分享一个切实可行的解决方案为小型工作室搭建一套Stable Diffusion v1.5多用户共享服务。简单来说就是部署一套AI绘画系统让团队所有成员都能同时使用但每个人的操作界面、历史记录、生成参数都是完全独立、互不干扰的。就像给每个设计师分配了一个独立的“数字画室”大家共用背后的“超级画板”GPU服务器但各自的门锁、画具和作品都是私有的。1. 为什么小型工作室需要共享AI绘画服务在动手部署之前我们先搞清楚这个方案到底能解决什么问题以及它适合哪些场景。1.1 共享部署的四大核心价值硬件成本大幅降低这是最直接的好处。一张像样的RTX 4090显卡要一万多如果团队里五六个人每人配一张光硬件投入就要六七万。而租用或购买一台搭载A100或H100的云服务器月费用可能只要几千块却能同时服务整个团队。一份投入多人受益性价比极高。运维管理变得简单只需要维护一套服务环境、一个模型版本。软件升级、安全补丁、插件安装所有操作一次完成所有用户即刻生效。再也不用挨个检查每台电脑的CUDA版本、Python环境省去了大量重复劳动。创作体验完全独立这是Session隔离的核心价值。每个用户登录后看到的是自己专属的工作空间独立的提示词历史你上次写的“赛博朋克城市夜景”还在不会被同事的“田园风光小狗”覆盖。独立的参数设置你习惯的Steps25CFG Scale7.5尺寸768x512这些偏好会被浏览器记住下次打开依然有效。独立的生成结果你生成的所有图片和对应的参数文件都只属于你的会话隐私和创作成果得到保护。团队知识可以沉淀虽然会话隔离但我们可以通过建立共享提示词库、优秀作品画廊等方式让团队内好的创作思路和参数配置能够被借鉴和学习。新人可以快速上手老手的方法也能传承促进团队整体创作水平的提升。1.2 典型适用场景小型设计/广告公司3-10人的团队设计师、文案共用AI工具进行头脑风暴、概念设计和初稿制作。游戏/动漫开发团队概念美术师、角色原画师需要快速生成大量风格参考图和素材统一管理可以保证风格一致性。自媒体/内容工作室运营、编辑人员批量生成文章配图、社交媒体封面、视频缩略图等提升内容生产效率。教育机构与实验室老师或研究员部署一套服务供多个学生或组员进行AI绘画相关课程实践或项目研究便于统一指导和成果收集。如果你的团队符合以上任何一种情况那么这套共享部署方案就值得认真考虑。2. 基础环境搭建与Stable Diffusion v1.5部署我们的目标是搭建一个稳定、易维护的基础服务。这里选择使用Supervisor进行进程守护确保服务能够7x24小时稳定运行即使意外崩溃也能自动重启。2.1 服务器环境准备假设我们已经准备好了一台Linux服务器Ubuntu 20.04/22.04为例并且配备了合适的NVIDIA GPU。以下是基础环境检查与准备步骤# 1. 检查NVIDIA驱动和CUDA是否安装 nvidia-smi # 应该能看到GPU信息和CUDA版本 nvcc --version # 检查CUDA编译器 # 2. 如果没有安装先安装驱动和CUDA以Ubuntu 22.04为例 # 添加NVIDIA官方仓库 sudo apt update sudo apt install -y software-properties-common sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update # 安装驱动这里以525版本为例具体版本请根据GPU型号选择 sudo apt install -y nvidia-driver-525 # 安装CUDA Toolkit 11.8Stable Diffusion常用版本 wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run sudo sh cuda_11.8.0_520.61.05_linux.run # 3. 设置环境变量 echo export PATH/usr/local/cuda-11.8/bin:$PATH ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc2.2 部署Stable Diffusion WebUI我们将使用最流行的Automatic1111 WebUI作为前端界面它功能丰富、社区活跃非常适合团队使用。# 1. 创建工作目录 mkdir -p /opt/ai-studio/sd-webui cd /opt/ai-studio/sd-webui # 2. 克隆Stable Diffusion WebUI仓库 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui # 3. 下载Stable Diffusion v1.5模型 # 这里使用Comfy-Org维护的v1.5存档版本稳定可靠 mkdir -p models/Stable-diffusion wget -O models/Stable-diffusion/v1-5-pruned-emaonly.safetensors \ https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors # 4. 安装Python依赖使用虚拟环境隔离 python3 -m venv venv source venv/bin/activate # 安装PyTorch匹配CUDA 11.8 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 安装WebUI依赖 pip install -r requirements_versions.txt2.3 配置Supervisor守护进程为了让WebUI服务在后台稳定运行我们需要使用Supervisor来管理它。# 1. 安装Supervisor sudo apt update sudo apt install -y supervisor # 2. 创建WebUI启动脚本 cat /opt/ai-studio/launch_webui.sh EOF #!/bin/bash cd /opt/ai-studio/sd-webui/stable-diffusion-webui source venv/bin/activate # 启动参数说明 # --listen: 允许网络访问 # --port 7860: 指定服务端口 # --enable-insecure-extension-access: 允许安装扩展 # --api: 启用API接口可选方便后续集成 python launch.py --listen --port 7860 --enable-insecure-extension-access --api EOF chmod x /opt/ai-studio/launch_webui.sh # 3. 创建Supervisor配置文件 sudo cat /etc/supervisor/conf.d/sd-webui.conf EOF [program:sd-webui] command/opt/ai-studio/launch_webui.sh directory/opt/ai-studio/sd-webui/stable-diffusion-webui autostarttrue autorestarttrue startretries3 user$USER stdout_logfile/opt/ai-studio/logs/sd-webui.log stdout_logfile_maxbytes10MB stdout_logfile_backups5 stderr_logfile/opt/ai-studio/logs/sd-webui-error.log stderr_logfile_maxbytes10MB stderr_logfile_backups5 environmentPYTHONUNBUFFERED1 EOF # 4. 创建日志目录 mkdir -p /opt/ai-studio/logs # 5. 更新Supervisor配置并启动服务 sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start sd-webui # 6. 检查服务状态 sudo supervisorctl status sd-webui如果看到状态显示RUNNING说明基础服务已经成功启动。现在通过服务器IP:7860端口任何人都可以访问同一个WebUI了。但这只是“共享”还没有“隔离”。所有人共用同一个会话操作会相互干扰。3. 实现多用户Session隔离的两种方案要实现真正的隔离核心是让每个用户访问一个“独一无二”的入口并且后端服务能区分这些请求来自不同的用户。这里我提供两种方案轻量级路径隔离和严格多进程隔离。3.1 方案一轻量级路径隔离推荐大多数团队这个方案利用Nginx反向代理和浏览器LocalStorage特性实现前端会话隔离。部署简单资源消耗低适合5人以下的小团队。3.1.1 安装并配置Nginx# 1. 安装Nginx sudo apt install -y nginx # 2. 创建Nginx配置文件 sudo cat /etc/nginx/sites-available/sd-multi-user EOF server { listen 80; # 请替换为你的服务器域名或IP server_name your-server-ip-or-domain.com; # 用户1的专属路径 location /sd/user1/ { # 将请求代理到后端的7860端口 proxy_pass http://localhost:7860/; # 设置代理请求头 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; # 最关键的一行告诉WebUI当前的基础路径 proxy_set_header X-Script-Name /sd/user1; # 重写请求路径去掉/sd/user1/前缀 rewrite ^/sd/user1/(.*)$ /$1 break; } # 用户2的专属路径 location /sd/user2/ { proxy_pass http://localhost:7860/; 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_set_header X-Script-Name /sd/user2; rewrite ^/sd/user2/(.*)$ /$1 break; } # 用户3的专属路径按需添加更多用户 location /sd/user3/ { proxy_pass http://localhost:7860/; 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_set_header X-Script-Name /sd/user3; rewrite ^/sd/user3/(.*)$ /$1 break; } # 默认页面提示用户使用专属路径 location / { return 200 欢迎使用团队AI绘画服务请使用您的专属路径访问例如/sd/您的用户名/; add_header Content-Type text/plain; } } EOF # 3. 启用站点配置 sudo ln -s /etc/nginx/sites-available/sd-multi-user /etc/nginx/sites-enabled/ sudo rm -f /etc/nginx/sites-enabled/default # 禁用默认站点 # 4. 测试配置并重启Nginx sudo nginx -t sudo systemctl restart nginx3.1.2 配置WebUI支持路径前缀为了让WebUI正确识别不同的路径前缀我们需要修改它的启动参数# 修改之前的启动脚本 cat /opt/ai-studio/launch_webui.sh EOF #!/bin/bash cd /opt/ai-studio/sd-webui/stable-diffusion-webui source venv/bin/activate # 关键修改添加--gradio-root-path参数支持路径前缀 # 这个参数让WebUI知道它被代理在哪个路径下 python launch.py --listen --port 7860 \ --enable-insecure-extension-access \ --api \ --gradio-root-path /sd/shared EOF # 重启服务使配置生效 sudo supervisorctl restart sd-webui现在团队成员可以通过不同的URL访问服务用户1:http://your-server-ip-or-domain.com/sd/user1/用户2:http://your-server-ip-or-domain.com/sd/user2/用户3:http://your-server-ip-or-domain.com/sd/user3/这个方案的工作原理浏览器为每个不同的URL路径创建独立的LocalStorageWebUI的会话数据提示词历史、参数设置保存在浏览器的LocalStorage中不同路径对应不同的LocalStorage自然实现了会话隔离所有用户共享同一个后端进程和GPU资源优点部署简单只需要配置Nginx资源利用率高只有一个WebUI进程维护方便升级一次全部生效缺点输出目录默认是共享的可通过修改WebUI配置实现分离如果某个用户的任务崩溃可能影响其他用户概率较低3.2 方案二严格多进程隔离适合对隔离性要求高的团队如果团队需要更严格的隔离或者GPU内存足够大如24GB以上可以为每个用户启动独立的WebUI进程。3.2.1 为每个用户创建独立配置# 创建用户专用目录结构 mkdir -p /opt/ai-studio/users/{user1,user2,user3}/{models,outputs,extensions} # 为每个用户创建启动脚本 for user in user1 user2 user3; do cat /opt/ai-studio/launch_${user}.sh EOF #!/bin/bash cd /opt/ai-studio/sd-webui/stable-diffusion-webui source venv/bin/activate # 为每个用户分配不同端口 PORT\$(case $USER in user1) echo 7861 ;; user2) echo 7862 ;; user3) echo 7863 ;; *) echo 7860 ;; esac) # 用户独立的数据目录 USER_DATA_DIR/opt/ai-studio/users/\$USER python launch.py --listen --port \$PORT \ --enable-insecure-extension-access \ --data-dir \$USER_DATA_DIR \ --outdir-samples \$USER_DATA_DIR/outputs \ --ckpt-dir \$USER_DATA_DIR/models EOF chmod x /opt/ai-studio/launch_${user}.sh done3.2.2 配置多个Supervisor进程# 为每个用户创建Supervisor配置 for i in {1..3}; do sudo cat /etc/supervisor/conf.d/sd-user${i}.conf EOF [program:sd-user${i}] command/opt/ai-studio/launch_user${i}.sh directory/opt/ai-studio/sd-webui/stable-diffusion-webui autostarttrue autorestarttrue startretries3 user$USER environmentUSERuser${i} stdout_logfile/opt/ai-studio/logs/sd-user${i}.log stdout_logfile_maxbytes10MB stdout_logfile_backups5 stderr_logfile/opt/ai-studio/logs/sd-user${i}-error.log stderr_logfile_maxbytes10MB stderr_logfile_backups5 EOF done # 更新Nginx配置代理到不同端口 sudo cat /etc/nginx/sites-available/sd-multi-process EOF server { listen 80; server_name your-server-ip-or-domain.com; location /sd/user1/ { proxy_pass http://localhost:7861/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; rewrite ^/sd/user1/(.*)$ /$1 break; } location /sd/user2/ { proxy_pass http://localhost:7862/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; rewrite ^/sd/user2/(.*)$ /$1 break; } location /sd/user3/ { proxy_pass http://localhost:7863/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; rewrite ^/sd/user3/(.*)$ /$1 break; } } EOF # 启用新配置 sudo ln -sf /etc/nginx/sites-available/sd-multi-process /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx # 启动所有用户服务 sudo supervisorctl reread sudo supervisorctl update for i in {1..3}; do sudo supervisorctl start sd-user${i} done这个方案的工作原理每个用户有独立的WebUI进程监听不同端口每个用户有独立的数据目录、输出目录、模型缓存Nginx根据访问路径将请求转发到对应的端口完全隔离的进程、内存空间和文件系统优点隔离最彻底一个用户的问题完全不影响他人可以针对不同用户配置不同的模型或扩展性能相对独立不会相互干扰缺点内存占用高每个进程都加载模型管理更复杂需要维护多个配置启动时间更长4. 安全加固与团队使用指南部署完成后还需要考虑安全性和日常使用规范。4.1 基础安全配置# 1. 配置防火墙只开放必要端口 sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS如果启用 sudo ufw allow 22/tcp # SSH sudo ufw --force enable # 2. 启用HTTPS使用Lets Encrypt免费证书 sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d your-server-ip-or-domain.com # 3. 设置HTTP Basic认证可选增加一层密码保护 sudo apt install -y apache2-utils sudo htpasswd -c /etc/nginx/.htpasswd designer1 # 为每个用户设置密码 sudo htpasswd /etc/nginx/.htpasswd designer2 sudo htpasswd /etc/nginx/.htpasswd designer3 # 在Nginx配置的每个location块中添加 # auth_basic Restricted Access; # auth_basic_user_file /etc/nginx/.htpasswd;4.2 日常运维管理命令将常用的管理命令整理成文档方便团队维护# 查看所有服务状态 sudo supervisorctl status # 重启特定用户的服务多进程方案 sudo supervisorctl restart sd-user1 # 重启共享服务单进程方案 sudo supervisorctl restart sd-webui # 查看实时日志 tail -f /opt/ai-studio/logs/sd-webui.log # 查看特定用户日志 tail -f /opt/ai-studio/logs/sd-user1.log # 检查端口占用情况 sudo lsof -i :7860 sudo lsof -i :7861 # 清理日志文件定期执行 find /opt/ai-studio/logs -name *.log -type f -size 100M -exec truncate -s 50M {} \;4.3 给团队成员的使用手册部署完成后需要给团队成员提供清晰的使用指南1. 访问地址设计师A:https://your-server.com/sd/designer1/设计师B:https://your-server.com/sd/designer2/文案C:https://your-server.com/sd/writer1/2. 使用技巧提示词要用英文Stable Diffusion v1.5对英文的理解最好中文效果差很多。可以用翻译工具先把想法翻成英文。参数设置建议Steps采样步数20-30步质量和速度的平衡点CFG Scale引导强度7-9之间太高图片会过饱和图片尺寸512x512或768x51264的倍数效果最好Seed随机种子生成满意的图后记下Seed值可以完全复现善用负面提示词排除不想要的元素比如ugly, blurry, bad anatomy, extra fingers, poorly drawn hands批量生成技巧在提示词框里用|分隔多个描述可以一次生成多个变体3. 文件管理生成的图片默认保存在服务器的/opt/ai-studio/users/[用户名]/outputs/目录建议按项目建立子文件夹如/outputs/project-2024/可以通过WebUI界面直接下载或配置SFTP访问4. 常见问题解决页面打不开检查网络连接确认使用的是专属链接生成速度慢第一次使用需要加载模型稍等片刻可以尝试降低Steps值图片质量差优化提示词描述增加细节调整CFG Scale值内存不足降低图片分辨率或联系管理员增加GPU资源5. 总结通过本文的详细步骤我们成功为小型工作室搭建了一套完整的Stable Diffusion v1.5多用户共享服务。我们探讨了两种核心方案轻量级路径隔离方案利用Nginx路径路由和浏览器LocalStorage特性快速实现前端会话隔离。部署简单资源消耗低适合大多数5人以下的小团队。严格多进程隔离方案为每个用户启动独立的后端进程实现进程、数据和会话的完全隔离。隔离度最高适合对数据安全要求严格或GPU资源充足的团队。选择哪种方案取决于你的具体需求如果团队规模小3-5人对隔离性要求不高追求部署和维护简单 → 选择方案一如果团队需要严格的数据隔离或者GPU内存足够大24GB → 选择方案二无论选择哪种方案这个共享部署方案的核心价值在于用一套标准化的技术栈解决了AI工具在团队内共享时的核心矛盾。它既实现了硬件资源的集中利用和统一管理又保障了每个成员的个性化创作体验。对于小型工作室来说这不仅仅是一个技术方案更是一种生产力提升的策略。它让昂贵的AI算力从个人设备转移到共享服务器让复杂的软件环境从分散管理变为集中维护让创作过程从单打独斗变为协同共享。当技术门槛降低、使用成本减少时团队的创意潜能才能真正释放出来。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
小型工作室AI绘画解决方案:Stable Diffusion v1.5多用户共享部署实战
小型工作室AI绘画解决方案Stable Diffusion v1.5多用户共享部署实战想象一下在一个小型设计工作室里几位设计师正围在一起讨论新项目的视觉方案。有人需要生成几张概念草图有人想试试不同的艺术风格还有人要批量制作社交媒体配图。如果每个人都用自己的电脑跑AI绘画不仅显卡风扇呼呼作响电费蹭蹭上涨模型版本还五花八门管理起来简直是一场噩梦。但要是大家共用一个AI绘画服务呢问题又来了——小张刚调好一组完美的参数准备出图小李刷新了一下页面所有设置瞬间清零历史记录也不见了。这种“打架”的体验任谁都会抓狂。今天我就来分享一个切实可行的解决方案为小型工作室搭建一套Stable Diffusion v1.5多用户共享服务。简单来说就是部署一套AI绘画系统让团队所有成员都能同时使用但每个人的操作界面、历史记录、生成参数都是完全独立、互不干扰的。就像给每个设计师分配了一个独立的“数字画室”大家共用背后的“超级画板”GPU服务器但各自的门锁、画具和作品都是私有的。1. 为什么小型工作室需要共享AI绘画服务在动手部署之前我们先搞清楚这个方案到底能解决什么问题以及它适合哪些场景。1.1 共享部署的四大核心价值硬件成本大幅降低这是最直接的好处。一张像样的RTX 4090显卡要一万多如果团队里五六个人每人配一张光硬件投入就要六七万。而租用或购买一台搭载A100或H100的云服务器月费用可能只要几千块却能同时服务整个团队。一份投入多人受益性价比极高。运维管理变得简单只需要维护一套服务环境、一个模型版本。软件升级、安全补丁、插件安装所有操作一次完成所有用户即刻生效。再也不用挨个检查每台电脑的CUDA版本、Python环境省去了大量重复劳动。创作体验完全独立这是Session隔离的核心价值。每个用户登录后看到的是自己专属的工作空间独立的提示词历史你上次写的“赛博朋克城市夜景”还在不会被同事的“田园风光小狗”覆盖。独立的参数设置你习惯的Steps25CFG Scale7.5尺寸768x512这些偏好会被浏览器记住下次打开依然有效。独立的生成结果你生成的所有图片和对应的参数文件都只属于你的会话隐私和创作成果得到保护。团队知识可以沉淀虽然会话隔离但我们可以通过建立共享提示词库、优秀作品画廊等方式让团队内好的创作思路和参数配置能够被借鉴和学习。新人可以快速上手老手的方法也能传承促进团队整体创作水平的提升。1.2 典型适用场景小型设计/广告公司3-10人的团队设计师、文案共用AI工具进行头脑风暴、概念设计和初稿制作。游戏/动漫开发团队概念美术师、角色原画师需要快速生成大量风格参考图和素材统一管理可以保证风格一致性。自媒体/内容工作室运营、编辑人员批量生成文章配图、社交媒体封面、视频缩略图等提升内容生产效率。教育机构与实验室老师或研究员部署一套服务供多个学生或组员进行AI绘画相关课程实践或项目研究便于统一指导和成果收集。如果你的团队符合以上任何一种情况那么这套共享部署方案就值得认真考虑。2. 基础环境搭建与Stable Diffusion v1.5部署我们的目标是搭建一个稳定、易维护的基础服务。这里选择使用Supervisor进行进程守护确保服务能够7x24小时稳定运行即使意外崩溃也能自动重启。2.1 服务器环境准备假设我们已经准备好了一台Linux服务器Ubuntu 20.04/22.04为例并且配备了合适的NVIDIA GPU。以下是基础环境检查与准备步骤# 1. 检查NVIDIA驱动和CUDA是否安装 nvidia-smi # 应该能看到GPU信息和CUDA版本 nvcc --version # 检查CUDA编译器 # 2. 如果没有安装先安装驱动和CUDA以Ubuntu 22.04为例 # 添加NVIDIA官方仓库 sudo apt update sudo apt install -y software-properties-common sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update # 安装驱动这里以525版本为例具体版本请根据GPU型号选择 sudo apt install -y nvidia-driver-525 # 安装CUDA Toolkit 11.8Stable Diffusion常用版本 wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run sudo sh cuda_11.8.0_520.61.05_linux.run # 3. 设置环境变量 echo export PATH/usr/local/cuda-11.8/bin:$PATH ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc2.2 部署Stable Diffusion WebUI我们将使用最流行的Automatic1111 WebUI作为前端界面它功能丰富、社区活跃非常适合团队使用。# 1. 创建工作目录 mkdir -p /opt/ai-studio/sd-webui cd /opt/ai-studio/sd-webui # 2. 克隆Stable Diffusion WebUI仓库 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui # 3. 下载Stable Diffusion v1.5模型 # 这里使用Comfy-Org维护的v1.5存档版本稳定可靠 mkdir -p models/Stable-diffusion wget -O models/Stable-diffusion/v1-5-pruned-emaonly.safetensors \ https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors # 4. 安装Python依赖使用虚拟环境隔离 python3 -m venv venv source venv/bin/activate # 安装PyTorch匹配CUDA 11.8 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 安装WebUI依赖 pip install -r requirements_versions.txt2.3 配置Supervisor守护进程为了让WebUI服务在后台稳定运行我们需要使用Supervisor来管理它。# 1. 安装Supervisor sudo apt update sudo apt install -y supervisor # 2. 创建WebUI启动脚本 cat /opt/ai-studio/launch_webui.sh EOF #!/bin/bash cd /opt/ai-studio/sd-webui/stable-diffusion-webui source venv/bin/activate # 启动参数说明 # --listen: 允许网络访问 # --port 7860: 指定服务端口 # --enable-insecure-extension-access: 允许安装扩展 # --api: 启用API接口可选方便后续集成 python launch.py --listen --port 7860 --enable-insecure-extension-access --api EOF chmod x /opt/ai-studio/launch_webui.sh # 3. 创建Supervisor配置文件 sudo cat /etc/supervisor/conf.d/sd-webui.conf EOF [program:sd-webui] command/opt/ai-studio/launch_webui.sh directory/opt/ai-studio/sd-webui/stable-diffusion-webui autostarttrue autorestarttrue startretries3 user$USER stdout_logfile/opt/ai-studio/logs/sd-webui.log stdout_logfile_maxbytes10MB stdout_logfile_backups5 stderr_logfile/opt/ai-studio/logs/sd-webui-error.log stderr_logfile_maxbytes10MB stderr_logfile_backups5 environmentPYTHONUNBUFFERED1 EOF # 4. 创建日志目录 mkdir -p /opt/ai-studio/logs # 5. 更新Supervisor配置并启动服务 sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start sd-webui # 6. 检查服务状态 sudo supervisorctl status sd-webui如果看到状态显示RUNNING说明基础服务已经成功启动。现在通过服务器IP:7860端口任何人都可以访问同一个WebUI了。但这只是“共享”还没有“隔离”。所有人共用同一个会话操作会相互干扰。3. 实现多用户Session隔离的两种方案要实现真正的隔离核心是让每个用户访问一个“独一无二”的入口并且后端服务能区分这些请求来自不同的用户。这里我提供两种方案轻量级路径隔离和严格多进程隔离。3.1 方案一轻量级路径隔离推荐大多数团队这个方案利用Nginx反向代理和浏览器LocalStorage特性实现前端会话隔离。部署简单资源消耗低适合5人以下的小团队。3.1.1 安装并配置Nginx# 1. 安装Nginx sudo apt install -y nginx # 2. 创建Nginx配置文件 sudo cat /etc/nginx/sites-available/sd-multi-user EOF server { listen 80; # 请替换为你的服务器域名或IP server_name your-server-ip-or-domain.com; # 用户1的专属路径 location /sd/user1/ { # 将请求代理到后端的7860端口 proxy_pass http://localhost:7860/; # 设置代理请求头 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; # 最关键的一行告诉WebUI当前的基础路径 proxy_set_header X-Script-Name /sd/user1; # 重写请求路径去掉/sd/user1/前缀 rewrite ^/sd/user1/(.*)$ /$1 break; } # 用户2的专属路径 location /sd/user2/ { proxy_pass http://localhost:7860/; 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_set_header X-Script-Name /sd/user2; rewrite ^/sd/user2/(.*)$ /$1 break; } # 用户3的专属路径按需添加更多用户 location /sd/user3/ { proxy_pass http://localhost:7860/; 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_set_header X-Script-Name /sd/user3; rewrite ^/sd/user3/(.*)$ /$1 break; } # 默认页面提示用户使用专属路径 location / { return 200 欢迎使用团队AI绘画服务请使用您的专属路径访问例如/sd/您的用户名/; add_header Content-Type text/plain; } } EOF # 3. 启用站点配置 sudo ln -s /etc/nginx/sites-available/sd-multi-user /etc/nginx/sites-enabled/ sudo rm -f /etc/nginx/sites-enabled/default # 禁用默认站点 # 4. 测试配置并重启Nginx sudo nginx -t sudo systemctl restart nginx3.1.2 配置WebUI支持路径前缀为了让WebUI正确识别不同的路径前缀我们需要修改它的启动参数# 修改之前的启动脚本 cat /opt/ai-studio/launch_webui.sh EOF #!/bin/bash cd /opt/ai-studio/sd-webui/stable-diffusion-webui source venv/bin/activate # 关键修改添加--gradio-root-path参数支持路径前缀 # 这个参数让WebUI知道它被代理在哪个路径下 python launch.py --listen --port 7860 \ --enable-insecure-extension-access \ --api \ --gradio-root-path /sd/shared EOF # 重启服务使配置生效 sudo supervisorctl restart sd-webui现在团队成员可以通过不同的URL访问服务用户1:http://your-server-ip-or-domain.com/sd/user1/用户2:http://your-server-ip-or-domain.com/sd/user2/用户3:http://your-server-ip-or-domain.com/sd/user3/这个方案的工作原理浏览器为每个不同的URL路径创建独立的LocalStorageWebUI的会话数据提示词历史、参数设置保存在浏览器的LocalStorage中不同路径对应不同的LocalStorage自然实现了会话隔离所有用户共享同一个后端进程和GPU资源优点部署简单只需要配置Nginx资源利用率高只有一个WebUI进程维护方便升级一次全部生效缺点输出目录默认是共享的可通过修改WebUI配置实现分离如果某个用户的任务崩溃可能影响其他用户概率较低3.2 方案二严格多进程隔离适合对隔离性要求高的团队如果团队需要更严格的隔离或者GPU内存足够大如24GB以上可以为每个用户启动独立的WebUI进程。3.2.1 为每个用户创建独立配置# 创建用户专用目录结构 mkdir -p /opt/ai-studio/users/{user1,user2,user3}/{models,outputs,extensions} # 为每个用户创建启动脚本 for user in user1 user2 user3; do cat /opt/ai-studio/launch_${user}.sh EOF #!/bin/bash cd /opt/ai-studio/sd-webui/stable-diffusion-webui source venv/bin/activate # 为每个用户分配不同端口 PORT\$(case $USER in user1) echo 7861 ;; user2) echo 7862 ;; user3) echo 7863 ;; *) echo 7860 ;; esac) # 用户独立的数据目录 USER_DATA_DIR/opt/ai-studio/users/\$USER python launch.py --listen --port \$PORT \ --enable-insecure-extension-access \ --data-dir \$USER_DATA_DIR \ --outdir-samples \$USER_DATA_DIR/outputs \ --ckpt-dir \$USER_DATA_DIR/models EOF chmod x /opt/ai-studio/launch_${user}.sh done3.2.2 配置多个Supervisor进程# 为每个用户创建Supervisor配置 for i in {1..3}; do sudo cat /etc/supervisor/conf.d/sd-user${i}.conf EOF [program:sd-user${i}] command/opt/ai-studio/launch_user${i}.sh directory/opt/ai-studio/sd-webui/stable-diffusion-webui autostarttrue autorestarttrue startretries3 user$USER environmentUSERuser${i} stdout_logfile/opt/ai-studio/logs/sd-user${i}.log stdout_logfile_maxbytes10MB stdout_logfile_backups5 stderr_logfile/opt/ai-studio/logs/sd-user${i}-error.log stderr_logfile_maxbytes10MB stderr_logfile_backups5 EOF done # 更新Nginx配置代理到不同端口 sudo cat /etc/nginx/sites-available/sd-multi-process EOF server { listen 80; server_name your-server-ip-or-domain.com; location /sd/user1/ { proxy_pass http://localhost:7861/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; rewrite ^/sd/user1/(.*)$ /$1 break; } location /sd/user2/ { proxy_pass http://localhost:7862/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; rewrite ^/sd/user2/(.*)$ /$1 break; } location /sd/user3/ { proxy_pass http://localhost:7863/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; rewrite ^/sd/user3/(.*)$ /$1 break; } } EOF # 启用新配置 sudo ln -sf /etc/nginx/sites-available/sd-multi-process /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx # 启动所有用户服务 sudo supervisorctl reread sudo supervisorctl update for i in {1..3}; do sudo supervisorctl start sd-user${i} done这个方案的工作原理每个用户有独立的WebUI进程监听不同端口每个用户有独立的数据目录、输出目录、模型缓存Nginx根据访问路径将请求转发到对应的端口完全隔离的进程、内存空间和文件系统优点隔离最彻底一个用户的问题完全不影响他人可以针对不同用户配置不同的模型或扩展性能相对独立不会相互干扰缺点内存占用高每个进程都加载模型管理更复杂需要维护多个配置启动时间更长4. 安全加固与团队使用指南部署完成后还需要考虑安全性和日常使用规范。4.1 基础安全配置# 1. 配置防火墙只开放必要端口 sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS如果启用 sudo ufw allow 22/tcp # SSH sudo ufw --force enable # 2. 启用HTTPS使用Lets Encrypt免费证书 sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d your-server-ip-or-domain.com # 3. 设置HTTP Basic认证可选增加一层密码保护 sudo apt install -y apache2-utils sudo htpasswd -c /etc/nginx/.htpasswd designer1 # 为每个用户设置密码 sudo htpasswd /etc/nginx/.htpasswd designer2 sudo htpasswd /etc/nginx/.htpasswd designer3 # 在Nginx配置的每个location块中添加 # auth_basic Restricted Access; # auth_basic_user_file /etc/nginx/.htpasswd;4.2 日常运维管理命令将常用的管理命令整理成文档方便团队维护# 查看所有服务状态 sudo supervisorctl status # 重启特定用户的服务多进程方案 sudo supervisorctl restart sd-user1 # 重启共享服务单进程方案 sudo supervisorctl restart sd-webui # 查看实时日志 tail -f /opt/ai-studio/logs/sd-webui.log # 查看特定用户日志 tail -f /opt/ai-studio/logs/sd-user1.log # 检查端口占用情况 sudo lsof -i :7860 sudo lsof -i :7861 # 清理日志文件定期执行 find /opt/ai-studio/logs -name *.log -type f -size 100M -exec truncate -s 50M {} \;4.3 给团队成员的使用手册部署完成后需要给团队成员提供清晰的使用指南1. 访问地址设计师A:https://your-server.com/sd/designer1/设计师B:https://your-server.com/sd/designer2/文案C:https://your-server.com/sd/writer1/2. 使用技巧提示词要用英文Stable Diffusion v1.5对英文的理解最好中文效果差很多。可以用翻译工具先把想法翻成英文。参数设置建议Steps采样步数20-30步质量和速度的平衡点CFG Scale引导强度7-9之间太高图片会过饱和图片尺寸512x512或768x51264的倍数效果最好Seed随机种子生成满意的图后记下Seed值可以完全复现善用负面提示词排除不想要的元素比如ugly, blurry, bad anatomy, extra fingers, poorly drawn hands批量生成技巧在提示词框里用|分隔多个描述可以一次生成多个变体3. 文件管理生成的图片默认保存在服务器的/opt/ai-studio/users/[用户名]/outputs/目录建议按项目建立子文件夹如/outputs/project-2024/可以通过WebUI界面直接下载或配置SFTP访问4. 常见问题解决页面打不开检查网络连接确认使用的是专属链接生成速度慢第一次使用需要加载模型稍等片刻可以尝试降低Steps值图片质量差优化提示词描述增加细节调整CFG Scale值内存不足降低图片分辨率或联系管理员增加GPU资源5. 总结通过本文的详细步骤我们成功为小型工作室搭建了一套完整的Stable Diffusion v1.5多用户共享服务。我们探讨了两种核心方案轻量级路径隔离方案利用Nginx路径路由和浏览器LocalStorage特性快速实现前端会话隔离。部署简单资源消耗低适合大多数5人以下的小团队。严格多进程隔离方案为每个用户启动独立的后端进程实现进程、数据和会话的完全隔离。隔离度最高适合对数据安全要求严格或GPU资源充足的团队。选择哪种方案取决于你的具体需求如果团队规模小3-5人对隔离性要求不高追求部署和维护简单 → 选择方案一如果团队需要严格的数据隔离或者GPU内存足够大24GB → 选择方案二无论选择哪种方案这个共享部署方案的核心价值在于用一套标准化的技术栈解决了AI工具在团队内共享时的核心矛盾。它既实现了硬件资源的集中利用和统一管理又保障了每个成员的个性化创作体验。对于小型工作室来说这不仅仅是一个技术方案更是一种生产力提升的策略。它让昂贵的AI算力从个人设备转移到共享服务器让复杂的软件环境从分散管理变为集中维护让创作过程从单打独斗变为协同共享。当技术门槛降低、使用成本减少时团队的创意潜能才能真正释放出来。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。