初始化换发型项目:3个微服务代码 + 部署脚本

包含:
- hair_service_sd: 换发型/换发色算法服务 (端口 8801)
- photo_service: LoRA 训练调度服务 (端口 32678)
- stable-diffusion-webui: SD WebUI 推理服务 (端口 57860)
- kohya_ss_home: 训练环境代码
- meidaojia: 监控测试脚本
- setup.sh: 一键部署脚本 (conda环境恢复 + 配置生成 + 完整性检查)
- start_all_services.sh: 启动3个服务
- configure.ini.template: 路径模板化 (BASE_DIR自动推导)
- conda_envs/py310.yml: py310 环境定义

大文件 (weights/, models/, data/, conda_envs/*.tar.gz 等) 通过 .gitignore 排除,
由网盘单独上传。
This commit is contained in:
colomi
2026-07-11 18:11:49 +08:00
commit 0eb61f3e60
628 changed files with 120882 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
2024/02/23
Fix popup 127.0.0.1 instead of real ip in some situations.
2023/06/04
Rename packages name with toolchains name.
Fix some toolchain's misconfiguration, which lead to unusable binary.
Add support for drag-drop upload and folder upload.
2022/05/12
Fix a issue when rename a file's name with question mark(?).
2022/03/27
Fix a potential security problem.
Add support for platform armv6.
2022/01/27
Fix unexpected quit when upload file to jffs2 filesystem.
2022/01/24
Fix unexpected quit on windows.
Add back web player, but not enabled by default.
2022/01/10
Fix UI mess up when multiple files selected to upload at once.
2022/01/05
Fix upload error when file > 4G, 64bits versions not affected. Thanks for Mover.
2021/12/02
Some minor UI correction.
Add installation script for Android.
2021/11/30
Fix for __libc_start_main@@GLIBC_2.34
Fix parameter "-c".
2021/11/29
Try fix rename() error on Android.
Fix guest's permission settings.
+1
View File
@@ -0,0 +1 @@
<!doctype html><html><head><meta charset=UTF-8><meta name=viewport content="width=device-width,user-scalable=no"><style>:root{--cl:#036;--clcut:#79C;--clev:#f5f8f3;--clod:#FFF;--cltbh:#dfe6f3;--hvacl:#C00;--hvcl:#FFA;--hvslct:#DFF;--bd:1px solid #a3b5da;--bdl:1px solid #DDE;--clup:#e9967a;--bdupld:1px dashed var(--clup);--fnt:'Microsoft Yahei'}body{font-family:var(--fnt);font-size:14px;color:var(--cl)}video#vd,audio#ado,img#image{display:none}video#vd,img#image{max-width:99%}audio#ado{width:96%}</style><script>"use strict";(function(){function a(b){return document.getElementById(b)}function b(){var c=(location.hash.substr(1)||"??").substr(1).split("?")[0],e=c.substring(c.lastIndexOf(".")+1,c.length).toLowerCase()||c,f=["wav","mp3","wma","ape","ogg","cda","opus"],l=["jpg","jpeg","gif","png","bmp","ico"];(e=-1<["wmv","asf","mp4","avi","mpg","mpeg","mkv","flv","webm"].indexOf(e)?k=j:-1<f.indexOf(e)?k=i:-1<l.indexOf(e)?g:null)&&(e.src=c,f=e.dataset,l=decodeURIComponent,c=c.substring(c.lastIndexOf("/")+1,c.length)||c,f.t=l(c),document.title=e.dataset.t,e.style.display="block",k&&(e.currentTime=o.get(e.dataset.t)))}let g,i,j,k=null;const o={};let f=[];o.get=function(c){for(const a in f=JSON.parse(localStorage.getItem("cTM"))||[],f)if(f[a][0]==c)return f[a][1];return 0},o.set=function(c,a){if(5<a){for(const a in f)f[a][0]==c&&f.splice(a,1);f.unshift([c,parseInt(a)-2]),localStorage.setItem("cTM",JSON.stringify(f.slice(0,25)))}},[["beforeunload",function(){k&&o.set(k.dataset.t,k.currentTime)}],["DOMContentLoaded",function(){g=a("image"),i=a("ado"),j=a("vd"),b()}],["hashchange",b]].forEach(function(b){window.addEventListener(b[0],b[1])})})();</script></head><body><center><img id=image><audio controls autoplay=autoplay id=ado></audio><video controls autoplay=autoplay id=vd></video></center></body></html>
BIN
View File
Binary file not shown.
+74
View File
@@ -0,0 +1,74 @@
# NOTE:
# This file must be encoded in UTF-8.
# Directives and variable definition in this file are case-insensitive.
# Lines that begin with the hash character "#" are considered comments, and are ignored.
# Webd.Root: The directory that webd share on network.
# Example for Linux:
# Webd.Root /mnt/sdb1
# Example for Windows:
# Webd.Root "D:\my share"
# Webd.Listen: Bind webd to specific IP and/or port.
# Also, webd can bind to multiple addresses by use multiple "Webd.Listen" instructions.
# Bind to port 9212 with IPv4:
# Webd.Listen 9212
# Bind to port 9212 with both IPv4 and IPv6:
# Webd.Listen [::]:9212
# User's permissions tag, can be set via one or more tag combinations:
# r: Access files.
# l: List directories.
# u: Upload file.
# m: Delete, move, or rename files.
# S: Show hidden files or directories.
# T: Use webpage to play media files.
# D: Add 'download' atrribute to file link.
# For now, webd supports only two users.
# Each user may have it's own Username Password and Permissions.
# But they share the same web directory.
# user1 has all permissions.
# Webd.User rlumS user1 pass1
# user2 can download and list files.
# Webd.User rl user2 pass2
# Guest can download and list files by default.
# Uncomment to disable all permissions for guest.
# Webd.Guest 0
# Hide tray icon for Windows.
# Webd.Hide
# Specify the path of Browser for Windows if webd can not popup Browser by double clicking tray icon.
# Webd.Browser "C:\Program Files\Mozilla Firefox\firefox.exe"
# Or start Browser with extra paramters that set by a batch file.
# Webd.Browser "C:\Program Files\Mozilla Firefox\myFirefox.cmd"
# Envionment variables for webd.
# These should be set in the command line or system configration.
#
# Write log files to /var/log/webd-YYYY-MM-DD.log
# _LOG_DIR=/var/log/webd-
#
# Write log to syslog.
# _syslog=1
#
# Set the maximum number of open file descriptors, linux only.
# _FD_LIMIT=10240
#
# Switch to non-privileged user after startup, linux only.
# _RUNAS=nobody
#
# chroot after startup, linux only.
# _CHROOT_PATH=/mnt/sda1
+33
View File
@@ -0,0 +1,33 @@
#!/bin/sh
# 本脚本用于向webd的服务器上传文件,需要提供两个参数: 1、上传的文件路径。 2、上传的地址
# bash ./webd_upload.sh abc.png http://nas.zhourunnan.cn:9212/zhourunnan
b36enc() {
local b36=$(echo {0..9} {a..z}); b36=${b36// /}
awk \
'BEGIN { b = split(ARGV[1], D, ""); n = ARGV[2]; do { d = int(n / b); i = D[n - b * d + 1]; r = i r; n = d } while(n != 0); print r}' \
"${b36}" "$1"
}
upload(){
local def_url="http://aaanas.zhourunnan.cn:9212/"
local def_cookie='AcMY8R290zo'
local file="${1}"
local size=$(stat -c %s "${file}")
local time=$(stat -c %Y "${file}")
local url="${2:-${def_url}}"; url="${url%/}/${file##*/}"
local cookie="${3:-${def_cookie}}"
echo -e "\e[1;32mupload: ${url}\e[0m"
wget -vdt1 -O- "${url//#/%23}?N$(b36enc ${time})" \
--header='Content-Type: application/octet-stream' \
--header="Cookie: u=${cookie}" \
--header="RaOff: bytes=0/$(b36enc ${size})" \
--post-file="${file}"
echo -e "\n\e[1;32mfinish: ${url}\e[0m"
}; upload "$@"