环境变量
Build docker and publish / prepare (20.15.1) (push) Successful in 3s
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.admin image_name:ppanel-admin name:admin]) (push) Failing after 1m37s
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.api image_name:ppanel-api name:api]) (push) Failing after 1m42s
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.node image_name:ppanel-node name:node]) (push) Failing after 1m42s
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.queue image_name:ppanel-queue name:queue]) (push) Failing after 1m34s
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.scheduler image_name:ppanel-scheduler name:scheduler]) (push) Failing after 1m39s
Build docker and publish / deploy (push) Has been skipped
Build docker and publish / notify (push) Successful in 2s

This commit is contained in:
2026-02-28 04:02:14 -08:00
parent baeb875471
commit 9bdc593db4
21 changed files with 1231 additions and 65 deletions
+14
View File
@@ -0,0 +1,14 @@
PPANEL_REPO=your-registry/zero-ppanel
PPANEL_TAG=latest
MYSQL_DSN=root:password@tcp(127.0.0.1:3306)/ppanel?charset=utf8mb4&parseTime=true
REDIS_HOST=127.0.0.1:6379
REDIS_PASS=
JWT_SECRET=replace-with-strong-secret
JWT_ADMIN_SECRET=replace-with-strong-secret
APP_SECRET=replace-with-strong-secret
SECURITY_SECRET=replace-with-strong-secret
NODE_SECRET=replace-with-strong-secret
CORE_RPC_TARGET=127.0.0.1:8083
+10
View File
@@ -8,6 +8,8 @@ services:
ppanel-api:
image: ${PPANEL_REPO}/ppanel-api:${PPANEL_TAG:-latest}
restart: unless-stopped
env_file:
- ./.env
ports:
- "8080:8080"
volumes:
@@ -21,6 +23,8 @@ services:
ppanel-admin:
image: ${PPANEL_REPO}/ppanel-admin:${PPANEL_TAG:-latest}
restart: unless-stopped
env_file:
- ./.env
ports:
- "8081:8081"
volumes:
@@ -34,6 +38,8 @@ services:
ppanel-node:
image: ${PPANEL_REPO}/ppanel-node:${PPANEL_TAG:-latest}
restart: unless-stopped
env_file:
- ./.env
ports:
- "8082:8082"
volumes:
@@ -47,6 +53,8 @@ services:
ppanel-queue:
image: ${PPANEL_REPO}/ppanel-queue:${PPANEL_TAG:-latest}
restart: unless-stopped
env_file:
- ./.env
volumes:
- ./etc/queue:/app/etc
logging:
@@ -58,6 +66,8 @@ services:
ppanel-scheduler:
image: ${PPANEL_REPO}/ppanel-scheduler:${PPANEL_TAG:-latest}
restart: unless-stopped
env_file:
- ./.env
volumes:
- ./etc/scheduler:/app/etc
logging:
+1 -1
View File
@@ -63,7 +63,7 @@ services:
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_ROOT_PASSWORD: pavR2$mX7*tQ
MYSQL_DATABASE: ppanel
volumes:
- mysql_data:/var/lib/mysql
+51
View File
@@ -0,0 +1,51 @@
Name: zero-ppanel-admin
Host: 0.0.0.0
Port: 8081
Mode: pro
Log:
Mode: file
Encoding: json
Level: info
Path: /var/log/zero-ppanel/admin
KeepDays: 15
Rotation: daily
Telemetry:
Name: zero-ppanel-admin
Endpoint: http://jaeger:4318/v1/traces
Sampler: 0.1
Batcher: otlphttp
DevServer:
Enabled: true
Port: 6161
EnableMetrics: true
EnablePprof: false
JwtAuth:
AccessSecret: "${JWT_ADMIN_SECRET}"
AccessExpire: 28800
MySQL:
DataSource: "${MYSQL_DSN}"
Redis:
Host: "${REDIS_HOST}"
Type: node
Pass: "${REDIS_PASS}"
CacheRedis:
Host: "${REDIS_HOST}"
Type: node
Pass: "${REDIS_PASS}"
AppSignature:
AppSecrets:
android-client: "${APP_SECRET}"
web-client: "${APP_SECRET}"
ios-client: "${APP_SECRET}"
mac-client: "${APP_SECRET}"
ValidWindowSeconds: 300
SkipPrefixes:
- /api/v1/admin/health
+62
View File
@@ -0,0 +1,62 @@
Name: zero-ppanel-api
Host: 0.0.0.0
Port: 8080
Mode: pro
Log:
Mode: file
Encoding: json
Level: info
Path: /var/log/zero-ppanel/api
KeepDays: 15
Rotation: daily
Telemetry:
Name: zero-ppanel-api
Endpoint: http://jaeger:4318/v1/traces
Sampler: 0.1
Batcher: otlphttp
DevServer:
Enabled: true
Port: 6160
EnableMetrics: true
EnablePprof: false
JwtAuth:
AccessSecret: "${JWT_SECRET}"
AccessExpire: 86400
MySQL:
DataSource: "${MYSQL_DSN}"
Redis:
Host: "${REDIS_HOST}"
Type: node
Pass: "${REDIS_PASS}"
CacheRedis:
Host: "${REDIS_HOST}"
Type: node
Pass: "${REDIS_PASS}"
AppSignature:
AppSecrets:
android-client: "${APP_SECRET}"
web-client: "${APP_SECRET}"
ios-client: "${APP_SECRET}"
mac-client: "${APP_SECRET}"
ValidWindowSeconds: 300
SkipPrefixes:
- /api/v1/health
Security:
Enable: true
SecuritySecret: "${SECURITY_SECRET}"
Asynq:
Addr: "${REDIS_HOST}"
Pass: "${REDIS_PASS}"
CoreRpc:
Target: "${CORE_RPC_TARGET}"
+49
View File
@@ -0,0 +1,49 @@
Name: zero-ppanel-node
Host: 0.0.0.0
Port: 8082
Mode: pro
Log:
Mode: file
Encoding: json
Level: info
Path: /var/log/zero-ppanel/node
KeepDays: 15
Rotation: daily
Telemetry:
Name: zero-ppanel-node
Endpoint: http://jaeger:4318/v1/traces
Sampler: 0.1
Batcher: otlphttp
DevServer:
Enabled: true
Port: 6162
EnableMetrics: true
EnablePprof: false
NodeSecret: "${NODE_SECRET}"
MySQL:
DataSource: "${MYSQL_DSN}"
Redis:
Host: "${REDIS_HOST}"
Type: node
Pass: "${REDIS_PASS}"
CacheRedis:
Host: "${REDIS_HOST}"
Type: node
Pass: "${REDIS_PASS}"
AppSignature:
AppSecrets:
android-client: "${APP_SECRET}"
web-client: "${APP_SECRET}"
ios-client: "${APP_SECRET}"
mac-client: "${APP_SECRET}"
ValidWindowSeconds: 300
SkipPrefixes:
- /api/v1/node/health
+28
View File
@@ -0,0 +1,28 @@
Name: zero-ppanel-queue
Mode: pro
Log:
Mode: file
Encoding: json
Level: info
Path: /var/log/zero-ppanel/queue
KeepDays: 15
Rotation: daily
Telemetry:
Name: zero-ppanel-queue
Endpoint: http://jaeger:4318/v1/traces
Sampler: 0.1
Batcher: otlphttp
MySQL:
DataSource: "${MYSQL_DSN}"
Redis:
Host: "${REDIS_HOST}"
Type: node
Pass: "${REDIS_PASS}"
Asynq:
Addr: "${REDIS_HOST}"
Pass: "${REDIS_PASS}"
+28
View File
@@ -0,0 +1,28 @@
Name: zero-ppanel-scheduler
Mode: pro
Log:
Mode: file
Encoding: json
Level: info
Path: /var/log/zero-ppanel/scheduler
KeepDays: 15
Rotation: daily
Telemetry:
Name: zero-ppanel-scheduler
Endpoint: http://jaeger:4318/v1/traces
Sampler: 0.1
Batcher: otlphttp
MySQL:
DataSource: "${MYSQL_DSN}"
Redis:
Host: "${REDIS_HOST}"
Type: node
Pass: "${REDIS_PASS}"
Asynq:
Addr: "${REDIS_HOST}"
Pass: "${REDIS_PASS}"