共计 4247 个字符,预计需要花费 11 分钟才能阅读完成。
📖 项目介绍
Admin.IM 是开源的网络检测和服务器管理系统。后台及接口基于 MineAdmin 开发,使用由 Swoole 驱动的 PHP Hyperf 框架,全协程调度 + 异步 I/O 实现,系统性能非常出色,轻松处理大量并发请求。
前端使用 Vue3 + Vite5 + TypeScript + Pinia + Arco Design 开发,自适应多终端。客户端 Agent 使用 Golang 1.22 开发,支持 Linux、Windows、MacOS 等多平台运行。
✨ 系统特点
- 🔥 高性能架构 : 基于 Swoole 的 Hyperf 框架,全协程异步实现
- 🎨 现代化界面 : Vue3 + Arco Design,自适应多终端展示
- 🧩 插件化设计 : ICMP Ping、TCPing,更多插件开发中
- 🌐 多语言支持 : 内置多语言功能,支持英文、简体中文、繁体中文切换
- ⏺️ 日志审计 : 用户登录、系统操作记录随时查询
- 🛡️ 稳定可靠 : 经过严格测试,适合生产环境部署
- 🖥️ 跨平台支持 : Agent 支持 Linux、Windows、MacOS
📦 仓库地址
- 服务端 Admin.IM:Github | Gitee
- 客户端 Adm-Agent:Github | Gitee
- 前端 UI Adm-Frontend-User:Github | Gitee
- 后台 UI Adm-Frontend-Admin:Github | Gitee
🚀 源码安装
环境需求
- Swoole >= 5.0,关闭
Short Name
- PHP >= 8.1 并开启以下扩展:
- curl
- fileinfo
- mbstring
- json
- pdo
- openssl
- redis
- pcntl
- MySQL >= 5.7
- Redis >= 6.2.0
- Composer >= 2.x
- Git >= 2.x
下载项目及依赖
# 克隆项目
git clone https://github.com/AdmUU/Admin.IM.git
# 安装依赖
cd Admin.IM
composer install
# 复制配置文件
cp .env.example .env
配置安装
配置 .env
,填写 MySQL 数据库、Redis 连接等信息,执行安装命令:
# 安装数据库和插件
php bin/hyperf.php mine:install
启动服务
php bin/hyperf.php start
🐳 Docker 部署
线上环境推荐使用 docker compose 方式一键部署。
前置条件
- 系统内存 1G 以上。如果与数据库安装在同一个服务器上,则至少 2G 内存。
- 安装 Docker 和 Docker Compose 插件。
- 安装 MySQL、Redis。(也可以使用内置的 MySQL 和 Redis)
快速部署
- 创建部署目录并进入:
mkdir admin-im && cd admin-im
- 创建并编辑环境配置文件 .env:
vim .env
#.env
ADM_DB_HOST=mysql #MySQL 地址
ADM_DB_PORT=3306 #MySQL 端口
ADM_DB_USERNAME=user #MySQL 用户名
ADM_DB_PASSWORD=password #MySQL 密码
ADM_DB_DATABASE=db_name #MySQL 数据库名
ADM_REDIS_HOST=redis #Redis 地址
ADM_REDIS_PORT=6379 #Redis 端口
ADM_REDIS_PASSWORD=redis_password #Redis 密码
ADM_PORT_HTTP=8090 # 访问的端口号
# ADM_DB_ROOT_PASSWORD=admmysqlrootpwd #内置 MySQL 的 Root 密码
如果没有事先安装 MySQL 和 Redis,将上面的 ADM_DB_ROOT_PASSWORD 配置项取消注释,设置好 MySQL Root 密码,部署时由 docker 自动安装。内置数据库的数据已经持久化,可直接使用。
- 创建并编辑容器编排文件 docker-compose.yml:
vim docker-compose.yml
#docker-compose.yml
x-common-vars: &common-vars
APP_VERSION: ${APP_VERSION:-latest}
TZ: ${TIMEZONE:-Asia/Shanghai}
services:
admin-im:
image: ${DOCKER_REGISTRY:-docker.io}/admuu/admin.im:1
container_name: admin-im
working_dir: /opt/www
volumes:
- ./data:/data
- ./data/upload:/opt/www/public/upload
- ./data/logs:/opt/www/runtime/logs/debug
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
networks:
- server
restart: unless-stopped
depends_on:
mysql:
condition: service_healthy
required: false
redis:
condition: service_healthy
required: false
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:9501/adm/health"]
interval: 5s
timeout: 5s
retries: 5
start_period: 30s
adm-frontend:
image: ${DOCKER_REGISTRY:-docker.io}/admuu/adm-frontend:1
container_name: adm-frontend
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "${ADM_PORT_HTTP:-8090}:8090"
networks:
- server
depends_on:
- admin-im
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:8090/"]
interval: 5s
timeout: 5s
retries: 5
start_period: 30s
mysql:
image: bitnami/mysql:8.4
container_name: adm-mysql
volumes:
- mysql:/bitnami/mysql/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
<<: *common-vars
MYSQL_ROOT_PASSWORD: ${ADM_DB_ROOT_PASSWORD:-admmysqlrootpwd}
MYSQL_USER: ${ADM_DB_USERNAME}
MYSQL_PASSWORD: ${ADM_DB_PASSWORD}
MYSQL_DATABASE: ${ADM_DB_DATABASE}
networks:
- server
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${ADM_DB_ROOT_PASSWORD:-admmysqlrootpwd}"]
interval: 5s
timeout: 5s
retries: 5
start_period: 30s
restart: unless-stopped
profiles:
- mysql
redis:
image: bitnami/redis
container_name: adm-redis
volumes:
- redis:/bitnami/redis/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
<<: *common-vars
REDIS_PASSWORD: ${ADM_REDIS_PASSWORD}
REDIS_AOF_ENABLED: yes
REDIS_RDB_POLICY_DISABLED: no
REDIS_RDB_POLICY: 900#1 600#5 300#10 120#50 60#1000 30#10000
command: /opt/bitnami/scripts/redis/run.sh --maxmemory ${ADM_REDIS_MAX_MEMORY:-512mb} --maxmemory-policy allkeys-lru
sysctls:
net.core.somaxconn: 1024
networks:
- server
healthcheck:
test: ["CMD", "redis-cli", "-a", "${ADM_REDIS_PASSWORD}", "ping"]
interval: 5s
timeout: 3s
retries: 3
start_period: 10s
restart: unless-stopped
profiles:
- redis
name: admuu
networks:
server:
driver: bridge
volumes:
mysql:
driver: local
redis:
driver: local
- 启动服务:
方式一
# 使用外部数据库,直接启动
docker compose up -d
方式二
# 使用内置数据库,自动安装 Mysql 和 Redis
docker compose --profile mysql --profile redis up -d
- 查看安装进度:
系统安装需要等待 1 至 2 分钟的时间。安装成功后,默认用户名是 admin,默认密码需从安装日志中查看。
# 监视安装进度
docker logs -f -n 20 admin-im
# 查看默认密码
docker logs admin-im | grep "Default password"
- 访问系统:
# 前台
http://localhost:8090
# 后台
http://localhost:8090/manage/
系统截图
正文完