This commit is contained in:
Your Name
2026-07-29 09:34:02 +08:00
parent 0ff8943ee2
commit f913a57529
54 changed files with 2453 additions and 378 deletions
+6
View File
@@ -0,0 +1,6 @@
# 至少 10 位,且同时包含字母和数字。首次登录后仍会要求修改密码。
WECOM_ADMIN_INITIAL_PASSWORD=ChangeThisPassword123
# 本机或 HTTPS 反向代理使用 127.0.0.1;局域网直连使用 0.0.0.0。
BACKEND_BIND_IP=127.0.0.1
BACKEND_PORT=8765
+20
View File
@@ -0,0 +1,20 @@
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1
RUN useradd --create-home --uid 10001 backend \
&& mkdir -p /data \
&& chown backend:backend /data
WORKDIR /app
COPY --chown=backend:backend admin_backend.py /app/admin_backend.py
USER backend
EXPOSE 8765
VOLUME ["/data"]
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8765/health', timeout=3)"
CMD ["python", "/app/admin_backend.py", "--host", "0.0.0.0", "--port", "8765", "--db", "/data/backend.db", "--runtime-file", "/tmp/backend_runtime.json"]
@@ -0,0 +1,2 @@
*
!admin_backend.py
+15
View File
@@ -0,0 +1,15 @@
# 后台部署目录
这里是配置后台的独立部署配置。后台程序只有一个源文件:项目根目录的 `admin_backend.py`,不依赖桌面端组件,也不需要安装项目的 `requirements.txt`
推荐从项目根目录执行:
```powershell
Copy-Item backend_deploy\.env.example backend_deploy\.env
notepad backend_deploy\.env
docker compose --env-file backend_deploy/.env -f backend_deploy/compose.yaml up -d --build
```
完整说明、连接方法、备份与故障排查见项目根目录的 `BACKEND_DEPLOY.md`
使用宝塔面板部署时,请查看项目根目录的 `BAOTA_DEPLOY.md`
@@ -0,0 +1,3 @@
# 至少 10 位,且同时包含字母和数字。首次登录后仍会要求修改密码。
WECOM_ADMIN_INITIAL_PASSWORD=ChangeThisPassword123
BACKEND_PORT=8765
@@ -0,0 +1,20 @@
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1
RUN useradd --create-home --uid 10001 backend \
&& mkdir -p /data \
&& chown backend:backend /data
WORKDIR /app
COPY --chown=backend:backend admin_backend.py /app/admin_backend.py
USER backend
EXPOSE 8765
VOLUME ["/data"]
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8765/health', timeout=3)"
CMD ["python", "/app/admin_backend.py", "--host", "0.0.0.0", "--port", "8765", "--db", "/data/backend.db", "--runtime-file", "/tmp/backend_runtime.json"]
@@ -0,0 +1,18 @@
# 企微客服配置后台 · 宝塔部署包
1. 将整个目录上传并解压到 `/www/wwwroot/wechat-backend`
2.`.env.example` 复制为 `.env`,设置初始管理员强密码。
3. 在宝塔终端进入该目录,执行:
```bash
docker compose --env-file .env up -d --build
curl http://127.0.0.1:8765/health
```
4. 在宝塔创建带 SSL 的网站,将域名反向代理到 `http://127.0.0.1:8765`
5. 登录后台,在“桌面端版本升级”中填写最新版本号、下载地址和更新说明。
6. 开启“强制升级”后,版本不一致的桌面端只能下载新版或退出;未开启时允许稍后继续使用。
首次启用强制升级前,请务必确认下载地址能从客户电脑正常打开。
完整步骤见项目中的 `BAOTA_DEPLOY.md`
@@ -0,0 +1,17 @@
services:
backend:
container_name: wechat-config-backend
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
environment:
WECOM_ADMIN_INITIAL_PASSWORD: ${WECOM_ADMIN_INITIAL_PASSWORD:?请在 .env 中设置初始管理员密码}
ports:
- "127.0.0.1:${BACKEND_PORT:-8765}:8765"
volumes:
- backend-data:/data
volumes:
backend-data:
name: wechat-backend-data
@@ -0,0 +1,33 @@
$ErrorActionPreference = "Stop"
$projectRoot = Split-Path -Parent $PSScriptRoot
$templateRoot = Join-Path $PSScriptRoot "baota_bundle"
$packageStage = Join-Path $PSScriptRoot ".baota-package-stage"
$packageFile = Join-Path $PSScriptRoot "wechat-backend-baota.zip"
$expectedStage = [System.IO.Path]::GetFullPath(
(Join-Path $projectRoot "backend_deploy\.baota-package-stage")
)
if ([System.IO.Path]::GetFullPath($packageStage) -ne $expectedStage) {
throw "临时目录校验失败"
}
if (Test-Path -LiteralPath $packageStage) {
Remove-Item -LiteralPath $packageStage -Recurse -Force
}
try {
New-Item -ItemType Directory -Path $packageStage | Out-Null
Copy-Item -LiteralPath (Join-Path $projectRoot "admin_backend.py") -Destination $packageStage
Copy-Item -LiteralPath (Join-Path $templateRoot "Dockerfile") -Destination $packageStage
Copy-Item -LiteralPath (Join-Path $templateRoot "compose.yaml") -Destination $packageStage
Copy-Item -LiteralPath (Join-Path $templateRoot ".env.example") -Destination $packageStage
Copy-Item -LiteralPath (Join-Path $templateRoot "README.md") -Destination $packageStage
Compress-Archive -Path (Join-Path $packageStage "*") -DestinationPath $packageFile -Force
Write-Output "已生成:$packageFile"
}
finally {
if (Test-Path -LiteralPath $packageStage) {
Remove-Item -LiteralPath $packageStage -Recurse -Force
}
}
+17
View File
@@ -0,0 +1,17 @@
services:
backend:
container_name: wechat-config-backend
build:
context: ..
dockerfile: backend_deploy/Dockerfile
restart: unless-stopped
environment:
WECOM_ADMIN_INITIAL_PASSWORD: ${WECOM_ADMIN_INITIAL_PASSWORD:?请在 backend_deploy/.env 中设置初始管理员密码}
ports:
- "${BACKEND_BIND_IP:-127.0.0.1}:${BACKEND_PORT:-8765}:8765"
volumes:
- backend-data:/data
volumes:
backend-data:
name: wechat-backend-data