diff --git a/apps/safeline/2.4.0/.env.sample b/apps/safeline/2.4.0/.env.sample
new file mode 100644
index 00000000..8e6b293b
--- /dev/null
+++ b/apps/safeline/2.4.0/.env.sample
@@ -0,0 +1,12 @@
+CONTAINER_NAME="safeline"
+MGT_PORT="40080"
+POSTGRES_DB="safeline"
+POSTGRES_HOST="postgres"
+POSTGRES_PASSWORD="password_xxJdZD"
+POSTGRES_PORT="5432"
+POSTGRES_USER="postgresql"
+REDIS_HOST="redis"
+REDIS_PASSWORD=""
+REDIS_PORT="6379"
+SAFELINE_DIR="./data"
+SUBNET_PREFIX="169.254.0"
diff --git a/apps/safeline/2.4.0/data.yml b/apps/safeline/2.4.0/data.yml
new file mode 100644
index 00000000..29ec2c05
--- /dev/null
+++ b/apps/safeline/2.4.0/data.yml
@@ -0,0 +1,88 @@
+additionalProperties:
+ formFields:
+ - default: ""
+ edit: true
+ envKey: REDIS_HOST
+ key: redis
+ labelEn: Redis Service
+ labelZh: Redis服务
+ required: true
+ type: service
+ - default: "6379"
+ edit: true
+ envKey: REDIS_PORT
+ labelEn: Redis Service Port
+ labelZh: Redis服务端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: REDIS_PASSWORD
+ labelEn: Redis Service Password
+ labelZh: Redis服务密码
+ required: true
+ rule: paramCommon
+ type: password
+ - default: ""
+ edit: true
+ envKey: POSTGRES_HOST
+ key: postgresql
+ labelEn: Postgres database Service
+ labelZh: Postgres数据库服务
+ required: true
+ type: service
+ - default: "5432"
+ edit: true
+ envKey: POSTGRES_PORT
+ labelEn: Postgres database Service Port
+ labelZh: Postgres数据库服务端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: safeline
+ edit: true
+ envKey: POSTGRES_DB
+ labelEn: Postgres database Name
+ labelZh: Postgres数据库名
+ required: true
+ rule: paramCommon
+ type: text
+ - default: ""
+ edit: true
+ envKey: POSTGRES_USER
+ labelEn: Postgres database User Name
+ labelZh: Postgres数据库用户名
+ required: true
+ rule: paramCommon
+ type: text
+ - default: ""
+ edit: true
+ envKey: POSTGRES_PASSWORD
+ labelEn: Postgres database User Password
+ labelZh: Postgres数据库密码
+ required: true
+ rule: paramCommon
+ type: password
+ - default: 40080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: ./data
+ edit: true
+ envKey: SAFELINE_DIR
+ labelEn: Data storage folder
+ labelZh: 数据存放文件夹
+ required: true
+ type: text
+ - default: 169.254.0
+ edit: true
+ envKey: SUBNET_PREFIX
+ labelEn: Subnet prefix
+ labelZh: 子网前缀
+ required: true
+ type: text
diff --git a/apps/safeline/2.4.0/docker-compose.yml b/apps/safeline/2.4.0/docker-compose.yml
new file mode 100644
index 00000000..2927e156
--- /dev/null
+++ b/apps/safeline/2.4.0/docker-compose.yml
@@ -0,0 +1,98 @@
+version: '3'
+services:
+ safeline-management:
+ container_name: ${CONTAINER_NAME}-mgt-api
+ restart: always
+ networks:
+ safeline-ce:
+ ipv4_address: ${SUBNET_PREFIX}.4
+ image: chaitin/safeline-mgt-api:2.4.0
+ volumes:
+ - ${SAFELINE_DIR}/resources/management:/resources/management
+ - ${SAFELINE_DIR}/resources/nginx:/resources/nginx
+ - ${SAFELINE_DIR}/logs:/logs
+ - /etc/localtime:/etc/localtime:ro
+ ports:
+ - ${PANEL_APP_PORT_HTTP:-9443}:1443
+ environment:
+ - MANAGEMENT_RESOURCES_DIR=/resources/management
+ - NGINX_RESOURCES_DIR=/resources/nginx
+ - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
+ - MARIO_URL=http://safeline-mario:3335
+ - DETECTOR_URL=http://safeline-detector:8001
+ - MANAGEMENT_LOGS_DIR=/logs/management
+ cap_drop:
+ - net_raw
+ labels:
+ createdBy: Apps
+
+ safeline-detector:
+ container_name: ${CONTAINER_NAME}-detector
+ restart: always
+ networks:
+ safeline-ce:
+ ipv4_address: ${SUBNET_PREFIX}.5
+ image: chaitin/safeline-detector:2.4.0
+ volumes:
+ - ${SAFELINE_DIR}/resources/detector:/resources/detector
+ - ${SAFELINE_DIR}/logs/detector:/logs/detector
+ - /etc/localtime:/etc/localtime:ro
+ environment:
+ - LOG_DIR=/logs/detector
+ cap_drop:
+ - net_raw
+ labels:
+ createdBy: Apps
+
+ safeline-mario:
+ container_name: ${CONTAINER_NAME}-mario
+ restart: always
+ networks:
+ safeline-ce:
+ ipv4_address: ${SUBNET_PREFIX}.6
+ image: chaitin/safeline-mario:2.4.0
+ volumes:
+ - ${SAFELINE_DIR}/resources/mario:/resources/mario
+ - ${SAFELINE_DIR}/logs/mario:/logs/mario
+ - /etc/localtime:/etc/localtime:ro
+ environment:
+ - LOG_DIR=/logs/mario
+ - GOGC=100
+ - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
+ - REDIS_URL=redis://:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}/0
+ cap_drop:
+ - net_raw
+ labels:
+ createdBy: Apps
+
+ safeline-tengine:
+ container_name: ${CONTAINER_NAME}-tengine
+ restart: always
+ image: chaitin/safeline-tengine:2.4.0
+ volumes:
+ - ${SAFELINE_DIR}/resources/nginx:/etc/nginx
+ - ${SAFELINE_DIR}/resources/management:/resources/management
+ - ${SAFELINE_DIR}/resources/detector:/resources/detector
+ - ${SAFELINE_DIR}/logs/nginx:/var/log/nginx
+ - /etc/localtime:/etc/localtime:ro
+ - ${SAFELINE_DIR}/resources/cache:/usr/local/nginx/cache
+ - /etc/resolv.conf:/etc/resolv.conf
+ environment:
+ - MGT_ADDR=${SUBNET_PREFIX}.4:9002
+ ulimits:
+ nofile: 131072
+ network_mode: host
+ labels:
+ createdBy: Apps
+
+networks:
+ safeline-ce:
+ name: safeline-ce
+ driver: bridge
+ ipam:
+ driver: default
+ config:
+ - gateway: ${SUBNET_PREFIX:?SUBNET_PREFIX required}.1
+ subnet: ${SUBNET_PREFIX}.0/24
+ driver_opts:
+ com.docker.network.bridge.name: safeline-ce
\ No newline at end of file
diff --git a/apps/safeline/README.md b/apps/safeline/README.md
new file mode 100644
index 00000000..e0a8e156
--- /dev/null
+++ b/apps/safeline/README.md
@@ -0,0 +1,118 @@
+
+
+
+雷池 - 广受好评的社区 WAF
+
+
+
+
+
+
+
+
+
+
+ 官方网站 |
+ 在线 Demo |
+ 技术文档 |
+ For English
+
+
+一款足够简单、足够好用、足够强的免费 WAF。基于业界领先的语义引擎检测技术,作为反向代理接入,保护你的网站不受黑客攻击。
+
+核心检测能力由智能语义分析算法驱动,专为社区而生,不让黑客越雷池半步。
+
+
+
+相关源码仓库
+
+ 语义分析自动机引擎 |
+ 流量分析插件 |
+ T1K 协议 |
+ 测试工具
+
+
+## 相关特性
+
+#### 便捷性
+
+采用容器化部署,一条命令即可完成安装,0 成本上手。安全配置开箱即用,无需人工维护,可实现安全躺平式管理。
+
+#### 安全性
+
+首创业内领先的智能语义分析算法,精准检测、低误报、难绕过。语义分析算法无规则,面对未知特征的 0day 攻击不再手足无措。
+
+#### 高性能
+
+无规则引擎,线性安全检测算法,平均请求检测延迟在 1 毫秒级别。并发能力强,单核轻松检测 2000+ TPS,只要硬件足够强,可支撑的流量规模无上限。
+
+#### 高可用
+
+流量处理引擎基于 Nginx 开发,性能与稳定性均可得到保障。内置完善的健康检查机制,服务可用性高达 99.99%。
+
+## 🚀 安装
+
+### 配置需求
+
+- 操作系统:Linux
+- 指令架构:x86_64
+- 软件依赖:Docker 20.10.6 版本以上
+- 软件依赖:Docker Compose 2.0.0 版本以上
+- 最小化环境:1 核 CPU / 1 GB 内存 / 10 GB 磁盘
+
+
+### 一键安装
+
+```
+bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
+```
+
+> 更多安装方式请参考 安装雷池
+
+## 🕹️ 快速使用
+
+### 登录
+
+浏览器打开后台管理页面 `https://:9443`。根据界面提示,使用 **支持 TOTP 的认证软件** 扫描二维码,然后输入动态口令登录:
+
+
+
+### 配置防护站点
+
+雷池以反向代理方式接入,优先于网站服务器接收流量,对流量中的攻击行为进行检测和清洗,将清洗过后的流量转发给网站服务器。
+
+
+
+💡 TIPS: 添加后,执行 `curl -H "Host: <域名>" http://:<端口>` 应能获取到业务网站的响应。
+
+### 测试效果
+
+使用以下方式尝试模拟黑客攻击,看看雷池的防护效果如何
+
+- 浏览器访问 `http://:<端口>/?id=1%20AND%201=1`
+- 浏览器访问 `http://:<端口>/?a=`
+
+
+
+> 如果你需要进行深度测试,请参考 测试防护效果
+
+### FAQ
+
+- [安装问题](https://waf-ce.chaitin.cn/posts/faq_install)
+- [登录问题](https://waf-ce.chaitin.cn/posts/faq_login)
+- [网站无法访问](https://waf-ce.chaitin.cn/posts/faq_access)
+- [配置问题](https://waf-ce.chaitin.cn/posts/faq_config)
+- [其他问题](https://waf-ce.chaitin.cn/posts/faq_other)
+
+## 🏘️ 联系我们
+
+1. 可以通过 GitHub Issue 直接进行 Bug 反馈和功能建议
+2. 可以扫描下方二维码加入雷池社区版用户讨论群
+
+
+
+## Star History
+
+
+
+
diff --git a/apps/safeline/data.yml b/apps/safeline/data.yml
new file mode 100644
index 00000000..13dd5d37
--- /dev/null
+++ b/apps/safeline/data.yml
@@ -0,0 +1,20 @@
+name: 雷池
+tags:
+ - 工具
+title: 一款足够简单、足够好用、足够强的免费 WAF
+type: 工具
+description: 一款足够简单、足够好用、足够强的免费 WAF
+additionalProperties:
+ key: safeline
+ name: 雷池
+ tags:
+ - Tool
+ shortDescZh: 一款足够简单、足够好用、足够强的免费 WAF
+ shortDescEn: A simple and easy to use WAF tool
+ type: tool
+ crossVersionUpdate: true
+ limit: 1
+ recommend: 0
+ website: https://waf-ce.chaitin.cn/
+ github: https://github.com/chaitin/safeline
+ document: https://waf-ce.chaitin.cn/posts/guide_introduction
diff --git a/apps/safeline/latest-1p-network-bug/.env.sample b/apps/safeline/latest-1p-network-bug/.env.sample
new file mode 100644
index 00000000..baa2be42
--- /dev/null
+++ b/apps/safeline/latest-1p-network-bug/.env.sample
@@ -0,0 +1,12 @@
+CONTAINER_NAME="safeline"
+MGT_PORT="40080"
+POSTGRES_DB="safeline"
+POSTGRES_HOST="postgres"
+POSTGRES_PASSWORD="password_xxJdZD"
+POSTGRES_PORT="5432"
+POSTGRES_USER="postgresql"
+REDIS_HOST="redis"
+REDIS_PASSWORD=""
+REDIS_PORT="6379"
+SAFELINE_DIR="./data"
+SUBNET_PREFIX="172.18.0"
diff --git a/apps/safeline/latest-1p-network-bug/data.yml b/apps/safeline/latest-1p-network-bug/data.yml
new file mode 100644
index 00000000..aadbb33f
--- /dev/null
+++ b/apps/safeline/latest-1p-network-bug/data.yml
@@ -0,0 +1,88 @@
+additionalProperties:
+ formFields:
+ - default: ""
+ edit: true
+ envKey: REDIS_HOST
+ key: redis
+ labelEn: Redis Service
+ labelZh: Redis服务
+ required: true
+ type: service
+ - default: "6379"
+ edit: true
+ envKey: REDIS_PORT
+ labelEn: Redis Service Port
+ labelZh: Redis服务端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: REDIS_PASSWORD
+ labelEn: Redis Service Password
+ labelZh: Redis服务密码
+ required: true
+ rule: paramCommon
+ type: password
+ - default: ""
+ edit: true
+ envKey: POSTGRES_HOST
+ key: postgresql
+ labelEn: Postgres database Service
+ labelZh: Postgres数据库服务
+ required: true
+ type: service
+ - default: "5432"
+ edit: true
+ envKey: POSTGRES_PORT
+ labelEn: Postgres database Service Port
+ labelZh: Postgres数据库服务端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: safeline
+ edit: true
+ envKey: POSTGRES_DB
+ labelEn: Postgres database Name
+ labelZh: Postgres数据库名
+ required: true
+ rule: paramCommon
+ type: text
+ - default: ""
+ edit: true
+ envKey: POSTGRES_USER
+ labelEn: Postgres database User Name
+ labelZh: Postgres数据库用户名
+ required: true
+ rule: paramCommon
+ type: text
+ - default: ""
+ edit: true
+ envKey: POSTGRES_PASSWORD
+ labelEn: Postgres database User Password
+ labelZh: Postgres数据库密码
+ required: true
+ rule: paramCommon
+ type: password
+ - default: 40080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: ./data
+ edit: true
+ envKey: SAFELINE_DIR
+ labelEn: Data storage folder
+ labelZh: 数据存放文件夹
+ required: true
+ type: text
+ - default: 172.18.0
+ edit: false
+ envKey: SUBNET_PREFIX
+ labelEn: Subnet prefix
+ labelZh: 子网前缀
+ required: true
+ type: text
diff --git a/apps/safeline/latest-1p-network-bug/docker-compose.yml b/apps/safeline/latest-1p-network-bug/docker-compose.yml
new file mode 100644
index 00000000..169c01f6
--- /dev/null
+++ b/apps/safeline/latest-1p-network-bug/docker-compose.yml
@@ -0,0 +1,90 @@
+version: '3'
+services:
+ safeline-management:
+ container_name: ${CONTAINER_NAME}-mgt-api
+ restart: always
+ networks:
+ 1panel-network:
+ ipv4_address: ${SUBNET_PREFIX}.234
+ image: chaitin/safeline-mgt-api:latest
+ volumes:
+ - ${SAFELINE_DIR}/resources/management:/resources/management
+ - ${SAFELINE_DIR}/resources/nginx:/resources/nginx
+ - ${SAFELINE_DIR}/logs:/logs
+ - /etc/localtime:/etc/localtime:ro
+ ports:
+ - ${PANEL_APP_PORT_HTTP:-9443}:1443
+ environment:
+ - MANAGEMENT_RESOURCES_DIR=/resources/management
+ - NGINX_RESOURCES_DIR=/resources/nginx
+ - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
+ - MARIO_URL=http://safeline-mario:3335
+ - DETECTOR_URL=http://safeline-detector:8001
+ - MANAGEMENT_LOGS_DIR=/logs/management
+ cap_drop:
+ - net_raw
+ labels:
+ createdBy: Apps
+
+ safeline-detector:
+ container_name: ${CONTAINER_NAME}-detector
+ restart: always
+ networks:
+ 1panel-network:
+ ipv4_address: ${SUBNET_PREFIX}.235
+ image: chaitin/safeline-detector:latest
+ volumes:
+ - ${SAFELINE_DIR}/resources/detector:/resources/detector
+ - ${SAFELINE_DIR}/logs/detector:/logs/detector
+ - /etc/localtime:/etc/localtime:ro
+ environment:
+ - LOG_DIR=/logs/detector
+ cap_drop:
+ - net_raw
+ labels:
+ createdBy: Apps
+
+ safeline-mario:
+ container_name: ${CONTAINER_NAME}-mario
+ restart: always
+ networks:
+ 1panel-network:
+ ipv4_address: ${SUBNET_PREFIX}.236
+ image: chaitin/safeline-mario:latest
+ volumes:
+ - ${SAFELINE_DIR}/resources/mario:/resources/mario
+ - ${SAFELINE_DIR}/logs/mario:/logs/mario
+ - /etc/localtime:/etc/localtime:ro
+ environment:
+ - LOG_DIR=/logs/mario
+ - GOGC=100
+ - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
+ - REDIS_URL=redis://:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}/0
+ cap_drop:
+ - net_raw
+ labels:
+ createdBy: Apps
+
+ safeline-tengine:
+ container_name: ${CONTAINER_NAME}-tengine
+ restart: always
+ image: chaitin/safeline-tengine:latest
+ volumes:
+ - ${SAFELINE_DIR}/resources/nginx:/etc/nginx
+ - ${SAFELINE_DIR}/resources/management:/resources/management
+ - ${SAFELINE_DIR}/resources/detector:/resources/detector
+ - ${SAFELINE_DIR}/logs/nginx:/var/log/nginx
+ - /etc/localtime:/etc/localtime:ro
+ - ${SAFELINE_DIR}/resources/cache:/usr/local/nginx/cache
+ - /etc/resolv.conf:/etc/resolv.conf
+ environment:
+ - MGT_ADDR=${SUBNET_PREFIX}.234:9002
+ ulimits:
+ nofile: 131072
+ network_mode: host
+ labels:
+ createdBy: Apps
+
+networks:
+ 1panel-network:
+ external: true
\ No newline at end of file
diff --git a/apps/safeline/latest/.env.sample b/apps/safeline/latest/.env.sample
new file mode 100644
index 00000000..8e6b293b
--- /dev/null
+++ b/apps/safeline/latest/.env.sample
@@ -0,0 +1,12 @@
+CONTAINER_NAME="safeline"
+MGT_PORT="40080"
+POSTGRES_DB="safeline"
+POSTGRES_HOST="postgres"
+POSTGRES_PASSWORD="password_xxJdZD"
+POSTGRES_PORT="5432"
+POSTGRES_USER="postgresql"
+REDIS_HOST="redis"
+REDIS_PASSWORD=""
+REDIS_PORT="6379"
+SAFELINE_DIR="./data"
+SUBNET_PREFIX="169.254.0"
diff --git a/apps/safeline/latest/data.yml b/apps/safeline/latest/data.yml
new file mode 100644
index 00000000..29ec2c05
--- /dev/null
+++ b/apps/safeline/latest/data.yml
@@ -0,0 +1,88 @@
+additionalProperties:
+ formFields:
+ - default: ""
+ edit: true
+ envKey: REDIS_HOST
+ key: redis
+ labelEn: Redis Service
+ labelZh: Redis服务
+ required: true
+ type: service
+ - default: "6379"
+ edit: true
+ envKey: REDIS_PORT
+ labelEn: Redis Service Port
+ labelZh: Redis服务端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: REDIS_PASSWORD
+ labelEn: Redis Service Password
+ labelZh: Redis服务密码
+ required: true
+ rule: paramCommon
+ type: password
+ - default: ""
+ edit: true
+ envKey: POSTGRES_HOST
+ key: postgresql
+ labelEn: Postgres database Service
+ labelZh: Postgres数据库服务
+ required: true
+ type: service
+ - default: "5432"
+ edit: true
+ envKey: POSTGRES_PORT
+ labelEn: Postgres database Service Port
+ labelZh: Postgres数据库服务端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: safeline
+ edit: true
+ envKey: POSTGRES_DB
+ labelEn: Postgres database Name
+ labelZh: Postgres数据库名
+ required: true
+ rule: paramCommon
+ type: text
+ - default: ""
+ edit: true
+ envKey: POSTGRES_USER
+ labelEn: Postgres database User Name
+ labelZh: Postgres数据库用户名
+ required: true
+ rule: paramCommon
+ type: text
+ - default: ""
+ edit: true
+ envKey: POSTGRES_PASSWORD
+ labelEn: Postgres database User Password
+ labelZh: Postgres数据库密码
+ required: true
+ rule: paramCommon
+ type: password
+ - default: 40080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: ./data
+ edit: true
+ envKey: SAFELINE_DIR
+ labelEn: Data storage folder
+ labelZh: 数据存放文件夹
+ required: true
+ type: text
+ - default: 169.254.0
+ edit: true
+ envKey: SUBNET_PREFIX
+ labelEn: Subnet prefix
+ labelZh: 子网前缀
+ required: true
+ type: text
diff --git a/apps/safeline/latest/docker-compose.yml b/apps/safeline/latest/docker-compose.yml
new file mode 100644
index 00000000..437fae37
--- /dev/null
+++ b/apps/safeline/latest/docker-compose.yml
@@ -0,0 +1,98 @@
+version: '3'
+services:
+ safeline-management:
+ container_name: ${CONTAINER_NAME}-mgt-api
+ restart: always
+ networks:
+ safeline-ce:
+ ipv4_address: ${SUBNET_PREFIX}.4
+ image: chaitin/safeline-mgt-api:latest
+ volumes:
+ - ${SAFELINE_DIR}/resources/management:/resources/management
+ - ${SAFELINE_DIR}/resources/nginx:/resources/nginx
+ - ${SAFELINE_DIR}/logs:/logs
+ - /etc/localtime:/etc/localtime:ro
+ ports:
+ - ${PANEL_APP_PORT_HTTP:-9443}:1443
+ environment:
+ - MANAGEMENT_RESOURCES_DIR=/resources/management
+ - NGINX_RESOURCES_DIR=/resources/nginx
+ - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
+ - MARIO_URL=http://safeline-mario:3335
+ - DETECTOR_URL=http://safeline-detector:8001
+ - MANAGEMENT_LOGS_DIR=/logs/management
+ cap_drop:
+ - net_raw
+ labels:
+ createdBy: Apps
+
+ safeline-detector:
+ container_name: ${CONTAINER_NAME}-detector
+ restart: always
+ networks:
+ safeline-ce:
+ ipv4_address: ${SUBNET_PREFIX}.5
+ image: chaitin/safeline-detector:latest
+ volumes:
+ - ${SAFELINE_DIR}/resources/detector:/resources/detector
+ - ${SAFELINE_DIR}/logs/detector:/logs/detector
+ - /etc/localtime:/etc/localtime:ro
+ environment:
+ - LOG_DIR=/logs/detector
+ cap_drop:
+ - net_raw
+ labels:
+ createdBy: Apps
+
+ safeline-mario:
+ container_name: ${CONTAINER_NAME}-mario
+ restart: always
+ networks:
+ safeline-ce:
+ ipv4_address: ${SUBNET_PREFIX}.6
+ image: chaitin/safeline-mario:latest
+ volumes:
+ - ${SAFELINE_DIR}/resources/mario:/resources/mario
+ - ${SAFELINE_DIR}/logs/mario:/logs/mario
+ - /etc/localtime:/etc/localtime:ro
+ environment:
+ - LOG_DIR=/logs/mario
+ - GOGC=100
+ - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
+ - REDIS_URL=redis://:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}/0
+ cap_drop:
+ - net_raw
+ labels:
+ createdBy: Apps
+
+ safeline-tengine:
+ container_name: ${CONTAINER_NAME}-tengine
+ restart: always
+ image: chaitin/safeline-tengine:latest
+ volumes:
+ - ${SAFELINE_DIR}/resources/nginx:/etc/nginx
+ - ${SAFELINE_DIR}/resources/management:/resources/management
+ - ${SAFELINE_DIR}/resources/detector:/resources/detector
+ - ${SAFELINE_DIR}/logs/nginx:/var/log/nginx
+ - /etc/localtime:/etc/localtime:ro
+ - ${SAFELINE_DIR}/resources/cache:/usr/local/nginx/cache
+ - /etc/resolv.conf:/etc/resolv.conf
+ environment:
+ - MGT_ADDR=${SUBNET_PREFIX}.4:9002
+ ulimits:
+ nofile: 131072
+ network_mode: host
+ labels:
+ createdBy: Apps
+
+networks:
+ safeline-ce:
+ name: safeline-ce
+ driver: bridge
+ ipam:
+ driver: default
+ config:
+ - gateway: ${SUBNET_PREFIX:?SUBNET_PREFIX required}.1
+ subnet: ${SUBNET_PREFIX}.0/24
+ driver_opts:
+ com.docker.network.bridge.name: safeline-ce
\ No newline at end of file
diff --git a/apps/safeline/logo.png b/apps/safeline/logo.png
new file mode 100644
index 00000000..b58a7ce9
Binary files /dev/null and b/apps/safeline/logo.png differ