Skip to content

Commit 29296c5

Browse files
committed
feat(config): enhance .env.example and config files with new app settings and update sandbox gateway configurations
1 parent 3ff50af commit 29296c5

File tree

9 files changed

+160
-65
lines changed

9 files changed

+160
-65
lines changed

.env.example

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,24 @@
11
###==== Service start====
22

3+
4+
# App
5+
APP_ID=
6+
APP_SECRET=
7+
APP_CODE=
8+
APP_NAME=magic_service
9+
APP_ENV=dev
10+
APP_HOST=http://magic-caddy
11+
12+
13+
# 操作系统
14+
PLATFORM=
15+
316
# Service version tag
417
MAGIC_SERVICE_TAG=latest
518

6-
719
# Git Repository URL (Default using GitHub)
820
921

10-
1122
# MySQL Configuration
1223
MYSQL_USER=magic
1324
MYSQL_PASSWORD=magic123456
@@ -60,9 +71,6 @@ OPENSEARCH_NOFILE_HARD=65536
6071
# Qdrant Configuration
6172
QDRANT_API_KEY=magic123456
6273

63-
APP_NAME=magic_service
64-
APP_ENV=dev
65-
APP_HOST=http://magic-caddy
6674

6775
MAGIC_API_DEFAULT_ACCESS_TOKEN=
6876
MAGIC_PRIVILEGED_PASSWORD=
@@ -80,10 +88,6 @@ ENABLE_CHAT_SEQ=true
8088
# Enable Magic Watchdog (can be disabled for local development)
8189
ENABLE_MAGIC_WATCHDOG=false
8290

83-
84-
85-
86-
8791
# Proxy required for Google search
8892
HTTP_PROXY=
8993
GOOGLE_SEARCH_API_KEY=
@@ -102,11 +106,6 @@ AZURE_OPENAI_35_TURBO_API_BASE=
102106
AZURE_OPENAI_35_TURBO_API_VERSION=2023-08-01-preview
103107
AZURE_OPENAI_35_TURBO_DEPLOYMENT_NAME=
104108

105-
# App
106-
APP_ID=
107-
APP_SECRET=
108-
APP_CODE=
109-
110109
# Qdrant
111110
ODIN_QDRANT_BASE_URI=
112111
ODIN_QDRANT_API_KEY=
@@ -124,11 +123,6 @@ MIRACLE_VISION_SECRET=
124123

125124

126125

127-
128-
129-
# Git Repository URL (Default using GitHub)
130-
GIT_REPO_URL=[email protected]:dtyq
131-
132126
# File Driver
133127
FILE_DRIVER=local
134128

@@ -229,9 +223,6 @@ MAGIC_FLOW_MODEL_AES_KEY=MAGIC_FLOW_MODEL_AES_KEY
229223
###==== Service end====
230224

231225

232-
233-
234-
235226
###==== Super Magic start====
236227
SUPER_MAGIC_TAG=latest
237228
SANDBOX_GATEWAY=http://sandbox-gateway:39003
@@ -240,7 +231,6 @@ SANDBOX_MESSAGE_MODE=consume
240231
###==== Super Magic end====
241232

242233

243-
244234
###==== Web start====
245235
# Web version tag
246236
MAGIC_WEB_TAG=latest

backend/sandbox-gateway/app/services/sandbox_service.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,15 +313,17 @@ async def _create_agent_container(self, sandbox_id: str) -> str:
313313

314314
# 创建并启动容器
315315
# 挂载配置文件,判断/app/config/config.yaml是否存在
316-
config_file_path = "/Users/rockli/go/src/github/magic/config/config.yaml"
317-
if os.path.exists(config_file_path):
316+
config_file_path = os.environ.get("SUPER_MAGIC_CONFIG_FILE_PATH")
317+
if config_file_path:
318318
volumes = {
319319
config_file_path: {
320320
'bind': '/app/config/config.yaml',
321321
'mode': 'rw'
322322
}
323323
}
324+
logger.info(f"使用配置文件: {config_file_path}")
324325
else:
326+
logger.warning(f"SUPER_MAGIC_CONFIG_FILE_PATH 配置文件不存在: {config_file_path}")
325327
volumes = {}
326328

327329
# 挂载配置文件

bin/caddy/Caddyfile

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33
# 上传文件服务根目录
44
root * /srv/files
55

6-
# 启用文件浏览
7-
file_server browse
86

9-
# 为文件服务添加专门的前缀路径
7+
#为文件服务添加专门的前缀路径
108
@static_files {
119
path /files/*
1210
}
@@ -35,16 +33,6 @@
3533
header Access-Control-Max-Age "3600"
3634
}
3735

38-
# 启用压缩
39-
encode gzip
40-
41-
# 启用压缩
42-
encode gzip
43-
44-
# 设置缓存
45-
header {
46-
Cache-Control "public, max-age=3600"
47-
}
4836

4937
# WebSocket处理
5038
@websockets {

bin/magic.sh

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,65 @@ if [ "$SKIP_INSTALLATION" = "false" ]; then
303303
return 0
304304
fi
305305

306+
# Ask if domain name is needed
307+
bilingual "是否需要使用域名访问?" "Do you need to use a domain name for access?"
308+
read -p "$(bilingual "请输入 [y/n]: " "Please enter [y/n]: ")" USE_DOMAIN
309+
310+
if [[ "$USE_DOMAIN" =~ ^[Yy]$ ]]; then
311+
read -p "$(bilingual "请输入域名地址(不含http/https前缀): " "Please enter domain address (without http/https prefix): ")" DOMAIN_ADDRESS
312+
313+
if [ -n "$DOMAIN_ADDRESS" ]; then
314+
bilingual "正在使用域名: $DOMAIN_ADDRESS 更新环境变量..." "Updating environment variables with domain: $DOMAIN_ADDRESS..."
315+
316+
# Update MAGIC_SOCKET_BASE_URL and MAGIC_SERVICE_BASE_URL
317+
if [ "$(uname -s)" == "Darwin" ]; then
318+
# macOS version
319+
sed -i '' "s|^MAGIC_SOCKET_BASE_URL=ws://localhost:9502|MAGIC_SOCKET_BASE_URL=ws://$DOMAIN_ADDRESS:9502|" .env
320+
sed -i '' "s|^MAGIC_SERVICE_BASE_URL=http://localhost:9501|MAGIC_SERVICE_BASE_URL=http://$DOMAIN_ADDRESS:9501|" .env
321+
# Update FILE_LOCAL_READ_HOST and FILE_LOCAL_WRITE_HOST
322+
sed -i '' "s|^FILE_LOCAL_READ_HOST=http://127.0.0.1/files|FILE_LOCAL_READ_HOST=http://$DOMAIN_ADDRESS/files|" .env
323+
sed -i '' "s|^FILE_LOCAL_WRITE_HOST=http://127.0.0.1|FILE_LOCAL_WRITE_HOST=http://$DOMAIN_ADDRESS|" .env
324+
else
325+
# Linux version
326+
sed -i "s|^MAGIC_SOCKET_BASE_URL=ws://localhost:9502|MAGIC_SOCKET_BASE_URL=ws://$DOMAIN_ADDRESS:9502|" .env
327+
sed -i "s|^MAGIC_SERVICE_BASE_URL=http://localhost:9501|MAGIC_SERVICE_BASE_URL=http://$DOMAIN_ADDRESS:9501|" .env
328+
# Update FILE_LOCAL_READ_HOST and FILE_LOCAL_WRITE_HOST
329+
sed -i "s|^FILE_LOCAL_READ_HOST=http://127.0.0.1/files|FILE_LOCAL_READ_HOST=http://$DOMAIN_ADDRESS/files|" .env
330+
sed -i "s|^FILE_LOCAL_WRITE_HOST=http://127.0.0.1|FILE_LOCAL_WRITE_HOST=http://$DOMAIN_ADDRESS|" .env
331+
fi
332+
333+
bilingual "环境变量已更新:" "Environment variables updated:"
334+
echo "MAGIC_SOCKET_BASE_URL=ws://$DOMAIN_ADDRESS:9502"
335+
echo "MAGIC_SERVICE_BASE_URL=http://$DOMAIN_ADDRESS:9501"
336+
echo "FILE_LOCAL_READ_HOST=http://$DOMAIN_ADDRESS/files"
337+
echo "FILE_LOCAL_WRITE_HOST=http://$DOMAIN_ADDRESS"
338+
339+
# 更新Caddyfile中的域名
340+
bilingual "更新Caddyfile配置..." "Updating Caddyfile configuration..."
341+
342+
# 检查Caddyfile是否存在
343+
if [ -f "bin/caddy/Caddyfile" ]; then
344+
# 在Caddyfile文件顶部添加域名
345+
if [ "$(uname -s)" == "Darwin" ]; then
346+
# macOS version
347+
sed -i '' "s|^# 文件服务\n:80 {|# 文件服务\n$DOMAIN_ADDRESS:80 {|" bin/caddy/Caddyfile
348+
else
349+
# Linux version
350+
sed -i "s|^# 文件服务\n:80 {|# 文件服务\n$DOMAIN_ADDRESS:80 {|" bin/caddy/Caddyfile
351+
fi
352+
bilingual "已更新Caddyfile配置,使用域名: $DOMAIN_ADDRESS" "Updated Caddyfile configuration with domain: $DOMAIN_ADDRESS"
353+
else
354+
bilingual "未找到Caddyfile,跳过更新" "Caddyfile not found, skipping update"
355+
fi
356+
357+
return 0
358+
else
359+
bilingual "域名为空,继续使用公网IP配置。" "Domain is empty, continuing with public IP configuration."
360+
fi
361+
else
362+
bilingual "不使用域名,继续使用公网IP配置。" "Not using domain, continuing with public IP configuration."
363+
fi
364+
306365
bilingual "正在检测公网IP..." "Detecting public IP..."
307366

308367
# Try multiple methods to get public IP
@@ -332,6 +391,14 @@ if [ "$SKIP_INSTALLATION" = "false" ]; then
332391
fi
333392
fi
334393

394+
# Method 4: Using checkip.amazonaws.com
395+
if [ -z "$PUBLIC_IP" ]; then
396+
PUBLIC_IP=$(curl -s https://checkip.amazonaws.com 2>/dev/null)
397+
if [ -z "$PUBLIC_IP" ] || [[ $PUBLIC_IP == *"html"* ]]; then
398+
PUBLIC_IP=""
399+
fi
400+
fi
401+
335402
# If successfully obtained public IP, ask user whether to use this IP
336403
if [ -n "$PUBLIC_IP" ]; then
337404
bilingual "检测到公网IP: $PUBLIC_IP" "Detected public IP: $PUBLIC_IP"
@@ -346,15 +413,41 @@ if [ "$SKIP_INSTALLATION" = "false" ]; then
346413
# macOS version
347414
sed -i '' "s|^MAGIC_SOCKET_BASE_URL=ws://localhost:9502|MAGIC_SOCKET_BASE_URL=ws://$PUBLIC_IP:9502|" .env
348415
sed -i '' "s|^MAGIC_SERVICE_BASE_URL=http://localhost:9501|MAGIC_SERVICE_BASE_URL=http://$PUBLIC_IP:9501|" .env
416+
# Update FILE_LOCAL_READ_HOST and FILE_LOCAL_WRITE_HOST
417+
sed -i '' "s|^FILE_LOCAL_READ_HOST=http://127.0.0.1/files|FILE_LOCAL_READ_HOST=http://$PUBLIC_IP/files|" .env
418+
sed -i '' "s|^FILE_LOCAL_WRITE_HOST=http://127.0.0.1|FILE_LOCAL_WRITE_HOST=http://$PUBLIC_IP|" .env
349419
else
350420
# Linux version
351421
sed -i "s|^MAGIC_SOCKET_BASE_URL=ws://localhost:9502|MAGIC_SOCKET_BASE_URL=ws://$PUBLIC_IP:9502|" .env
352422
sed -i "s|^MAGIC_SERVICE_BASE_URL=http://localhost:9501|MAGIC_SERVICE_BASE_URL=http://$PUBLIC_IP:9501|" .env
423+
# Update FILE_LOCAL_READ_HOST and FILE_LOCAL_WRITE_HOST
424+
sed -i "s|^FILE_LOCAL_READ_HOST=http://127.0.0.1/files|FILE_LOCAL_READ_HOST=http://$PUBLIC_IP/files|" .env
425+
sed -i "s|^FILE_LOCAL_WRITE_HOST=http://127.0.0.1|FILE_LOCAL_WRITE_HOST=http://$PUBLIC_IP|" .env
353426
fi
354427

355428
bilingual "环境变量已更新:" "Environment variables updated:"
356429
echo "MAGIC_SOCKET_BASE_URL=ws://$PUBLIC_IP:9502"
357430
echo "MAGIC_SERVICE_BASE_URL=http://$PUBLIC_IP:9501"
431+
echo "FILE_LOCAL_READ_HOST=http://$PUBLIC_IP/files"
432+
echo "FILE_LOCAL_WRITE_HOST=http://$PUBLIC_IP"
433+
434+
# 更新Caddyfile中的IP
435+
bilingual "更新Caddyfile配置..." "Updating Caddyfile configuration..."
436+
437+
# 检查Caddyfile是否存在
438+
if [ -f "bin/caddy/Caddyfile" ]; then
439+
# 在Caddyfile文件顶部添加公网IP
440+
if [ "$(uname -s)" == "Darwin" ]; then
441+
# macOS version
442+
sed -i '' "s|^# 文件服务\n:80 {|# 文件服务\n$PUBLIC_IP:80 {|" bin/caddy/Caddyfile
443+
else
444+
# Linux version
445+
sed -i "s|^# 文件服务\n:80 {|# 文件服务\n$PUBLIC_IP:80 {|" bin/caddy/Caddyfile
446+
fi
447+
bilingual "已更新Caddyfile配置,使用公网IP: $PUBLIC_IP" "Updated Caddyfile configuration with public IP: $PUBLIC_IP"
448+
else
449+
bilingual "未找到Caddyfile,跳过更新" "Caddyfile not found, skipping update"
450+
fi
358451
else
359452
bilingual "保持默认设置。" "Keeping default settings."
360453
fi
@@ -374,15 +467,41 @@ if [ "$SKIP_INSTALLATION" = "false" ]; then
374467
# macOS version
375468
sed -i '' "s|^MAGIC_SOCKET_BASE_URL=ws://localhost:9502|MAGIC_SOCKET_BASE_URL=ws://$MANUAL_IP_ADDRESS:9502|" .env
376469
sed -i '' "s|^MAGIC_SERVICE_BASE_URL=http://localhost:9501|MAGIC_SERVICE_BASE_URL=http://$MANUAL_IP_ADDRESS:9501|" .env
470+
# Update FILE_LOCAL_READ_HOST and FILE_LOCAL_WRITE_HOST
471+
sed -i '' "s|^FILE_LOCAL_READ_HOST=http://127.0.0.1/files|FILE_LOCAL_READ_HOST=http://$MANUAL_IP_ADDRESS/files|" .env
472+
sed -i '' "s|^FILE_LOCAL_WRITE_HOST=http://127.0.0.1|FILE_LOCAL_WRITE_HOST=http://$MANUAL_IP_ADDRESS|" .env
377473
else
378474
# Linux version
379475
sed -i "s|^MAGIC_SOCKET_BASE_URL=ws://localhost:9502|MAGIC_SOCKET_BASE_URL=ws://$MANUAL_IP_ADDRESS:9502|" .env
380476
sed -i "s|^MAGIC_SERVICE_BASE_URL=http://localhost:9501|MAGIC_SERVICE_BASE_URL=http://$MANUAL_IP_ADDRESS:9501|" .env
477+
# Update FILE_LOCAL_READ_HOST and FILE_LOCAL_WRITE_HOST
478+
sed -i "s|^FILE_LOCAL_READ_HOST=http://127.0.0.1/files|FILE_LOCAL_READ_HOST=http://$MANUAL_IP_ADDRESS/files|" .env
479+
sed -i "s|^FILE_LOCAL_WRITE_HOST=http://127.0.0.1|FILE_LOCAL_WRITE_HOST=http://$MANUAL_IP_ADDRESS|" .env
381480
fi
382481

383482
bilingual "环境变量已更新:" "Environment variables updated:"
384483
echo "MAGIC_SOCKET_BASE_URL=ws://$MANUAL_IP_ADDRESS:9502"
385484
echo "MAGIC_SERVICE_BASE_URL=http://$MANUAL_IP_ADDRESS:9501"
485+
echo "FILE_LOCAL_READ_HOST=http://$MANUAL_IP_ADDRESS/files"
486+
echo "FILE_LOCAL_WRITE_HOST=http://$MANUAL_IP_ADDRESS"
487+
488+
# 更新Caddyfile中的手动输入IP
489+
bilingual "更新Caddyfile配置..." "Updating Caddyfile configuration..."
490+
491+
# 检查Caddyfile是否存在
492+
if [ -f "bin/caddy/Caddyfile" ]; then
493+
# 在Caddyfile文件顶部添加手动输入IP
494+
if [ "$(uname -s)" == "Darwin" ]; then
495+
# macOS version
496+
sed -i '' "s|^# 文件服务\n:80 {|# 文件服务\n$MANUAL_IP_ADDRESS:80 {|" bin/caddy/Caddyfile
497+
else
498+
# Linux version
499+
sed -i "s|^# 文件服务\n:80 {|# 文件服务\n$MANUAL_IP_ADDRESS:80 {|" bin/caddy/Caddyfile
500+
fi
501+
bilingual "已更新Caddyfile配置,使用手动输入IP: $MANUAL_IP_ADDRESS" "Updated Caddyfile configuration with manually entered IP: $MANUAL_IP_ADDRESS"
502+
else
503+
bilingual "未找到Caddyfile,跳过更新" "Caddyfile not found, skipping update"
504+
fi
386505
else
387506
bilingual "IP地址为空,保持默认设置。" "IP address is empty, keeping default settings."
388507
fi

bin/web_image.sh

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
#!/usr/bin/env bash
22

3-
43
### web 本地构建镜像
5-
6-
74
set -e
85

96
# determine swoole version to build.
@@ -32,7 +29,7 @@ function publish() {
3229
check_and_install_buildx() {
3330
if ! docker buildx version > /dev/null 2>&1; then
3431
echo "Docker Buildx not detected, attempting to install..."
35-
32+
3633
# 检测操作系统并安装
3734
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
3835
echo "Linux system detected, installing Buildx..."
@@ -62,7 +59,7 @@ check_and_install_buildx() {
6259
echo "Unsupported operating system, please install Docker Buildx manually: https://docs.docker.com/go/buildx/"
6360
exit 1
6461
fi
65-
62+
6663
# 验证安装
6764
if docker buildx version > /dev/null 2>&1; then
6865
echo "Docker Buildx installed successfully: $(docker buildx version | head -n 1)"
@@ -79,16 +76,16 @@ check_and_install_buildx() {
7976
if [[ ${TASK} == "build" ]]; then
8077
# 检查并安装 buildx
8178
check_and_install_buildx
82-
83-
79+
80+
8481
# 启用 BuildKit
8582
export DOCKER_BUILDKIT=1
86-
83+
8784
echo "Building image: ${REGISTRY}/${WEB_IMAGE}:${TAG}"
8885
docker build -t ${REGISTRY}"/"${WEB_IMAGE}":"${TAG} -f ./frontend/magic-web/Dockerfile.web ./frontend/magic-web
8986
fi
9087

9188
if [[ ${TASK} == "publish" ]]; then
9289
# Push base image
93-
publish $TAG
94-
fi
90+
publish $TAG
91+
fi

bin/web_release.sh

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
set -e
33
set -x
44

5-
6-
75
NOW=$(date +%s)
86
VERSION=$1
97
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
@@ -85,4 +83,3 @@ split "frontend/magic-web" magic-web
8583
TIME=$(echo "$(date +%s) - $NOW" | bc)
8684

8785
printf "Execution time: %f seconds" $TIME
88-

0 commit comments

Comments
 (0)