树洞剪藏#剪藏#树洞剪藏

将 akile_monitor 服务端和客户端打包到Docker部署(已提交PR)

2024 年 12 月 9 日1 分钟
分享Twitter / XTelegram微博

同步来源:树洞剪藏 源站剪藏 ID:266 原文地址:https://www.nodeseek.com/post-215131-1

打开原文 · 打开源站剪藏快照


将 akile_monitor 服务端和客户端打包到Docker部署(已提交PR)

NodeSeek beta 日常 技术 情报 测评 交易 拼车 推广

将 akile_monitor 服务端和客户端打包到Docker部署(已提交PR)

nili 楼主 1day ago edited 8h 42min ago in 技术 #0

项目地址

Docker 部署介绍

将前端 akile_monitor_fe ,主控服务 ak_monitor 以及被控客户端 ak_client 打包进容器,并利用 GitHub Actions 自动构建Docker镜像并推送至Docker Hub

前端 端口80 主控服务端 端口3000 可自行映射到宿主机或反向代理TLS加密

支持架构

linux/amd64

linux/arm64

准备工作

以下所有 /CHANGE_PATH 替换为你的宿主机路径

SQLite 数据库需要提前创建,避免Docker自动创建文件夹导致失败

Docker 安装

主控服务端

SQLite数据库 /CHANGE_PATH/akile_monitor/ak_monitor.db

compose文件

主控服务端

环境变量(默认) 与 配置文件 二选一即可

如需映射配置文件,请提前创建文件并挂载至目录 /CHANGE_PATH/akile_monitor/server/config.json:/app/config.json

主控服务端配置文件参考

Docker Cli 部署

docker run -it --name akile_monitor_server --restart always -v /CHANGE_PATH/akile_monitor/server/ak_monitor.db:/app/ak_monitor.db -e AUTH_SECRET="auth_secret" -e LISTEN=":3000" -e ENABLE_TG=false -e TG_TOKEN="your_telegram_bot_token" -e HOOK_URI="/hook" -e UPDATE_URI="/monitor" -e WEB_URI="/ws" -e HOOK_TOKEN="hook_token" -e TG_CHAT_ID=0 -p 3000:3000 -e TZ="Asia/Shanghai" niliaerith/akile_monitor_server

Docker Compose 部署

cat < server-compose.yml services: akile_monitor_server: image: niliaerith/akile_monitor_server container_name: akile_monitor_server hostname: akile_monitor_server restart: always ports:

  • 3000:3000 #主控服务端 端口 volumes:
  • /CHANGE_PATH/akile_monitor/server/ak_monitor.db:/app/ak_monitor.db environment: TZ: "Asia/Shanghai" AUTH_SECRET: "auth_secret" LISTEN: ":3000" ENABLE_TG: false TG_TOKEN: "your_telegram_bot_token" HOOK_URI: "/hook" UPDATE_URI: "/monitor" WEB_URI: "/ws" HOOK_TOKEN: "hook_token" TG_CHAT_ID: 0 EOF docker compose -f server-compose.yml up -d

前端 部署

环境变量(默认) 与 配置文件 二选一即可

如需映射配置文件,请提前创建文件并挂载至目录 /CHANGE_PATH/akile_monitor/caddy/config.json:/usr/share/caddy/config.json

前端配置文件参考如下

{ "socket": "ws://192.168.31.64:3000/ws", "apiURL": "http://192.168.31.64:3000" }

Docker Cli 部署

docker run -it --name akile_monitor_server --restart always -e SOCKET="ws://192.168.31.64:3000/ws" -e APIURL="http://192.168.31.64:3000" -p 80:80 -e TZ="Asia/Shanghai" niliaerith/akile_monitor_fe

Docker Compose 部署

cat < fe-compose.yml services: akile_monitor_fe: image: niliaerith/akile_monitor_fe container_name: akile_monitor_fe hostname: akile_monitor_fe restart: always ports:

  • 80:80 #前端 端口 environment: TZ: "Asia/Shanghai" SOCKET: "ws://192.168.31.64:3000/ws" APIURL: "http://192.168.31.64:3000" EOF docker compose -f fe-compose.yml up -d

被控客户端 部署

必须添加 host 网络模式,否则识别的流量为容器内的

必须添加 /var/run/docker.sock 卷,否则识别的系统为容器内的

环境变量(默认) 与 配置文件 二选一即可

如需映射配置文件,请提前创建文件并挂载至目录 /CHANGE_PATH/akile_monitor/client/client.json:/app/client.json

被控客户端配置文件参考

Docker Cli 部署

docker run -it --name akile_monitor_client --restart always -e AUTH_SECRET="auth_secret" -e URL="ws://localhost:3000/monitor" -e NET_NAME="eth0" -e NAME="HK-Akile" -v /var/run/docker.sock:/var/run/docker.sock --net host -e TZ="Asia/Shanghai" niliaerith/akile_monitor_client

Docker Compose 部署

cat < client-compose.yml services: akile_monitor_client: image: niliaerith/akile_monitor_client container_name: akile_monitor_client hostname: akile_monitor_client restart: always network_mode: host volumes:

  • /var/run/docker.sock:/var/run/docker.sock environment: TZ: "Asia/Shanghai" AUTH_SECRET: "auth_secret" URL: "ws://localhost:3000/monitor" NET_NAME: "eth0" NAME: "HK-Akile" EOF docker compose -f client-compose.yml up -d

Github Actions 自动构建镜像

Fork项目

Settings > Secrets and variables > Actions > New repository secret 添加 DOCKER_USERNAME (你的 Docker Hub 用户名) 和 DOCKER_PASSWORD (你的 Docker Hub 密码) 两个变量

Actions 中手动开始工作流 或者 主页Star 或者 修改任意README文档后push触发

Docker Build 本地构建镜像

git clone https://github.com/akile-network/akile_monitor cd akile_monitor docker build --target server --tag akile_monitor_server . docker build --target fe --tag akile_monitor_fe . docker build --target client --tag akile_monitor_client .

已知问题

因为被控客户端在Docker alpine容器内,所以虚拟化始终显示为 docker 。

解决方法1: 被控客户端采用 二进制部署,详见 被控端

解决方法2: 忽略虚拟化显示内容

2 0 10 引用 回复

1 2 3

nili 楼主 20h 6min ago

#7

@0fb6bya #6 发布于2024/12/8 02:32:50,编辑于2024/12/8 03:38:34

前端和主控不应该打包在一个镜像里,改一下吧

感谢提议,已做修改

1 0 引用 回复

nili 楼主 13h 11min ago edited 7h 53min ago

#10

@0fb6bya #9 发布于2024/12/8 19:04:04

官方我看已经是0.0.2了,可以跟进一下版本吗

你是说页面显示的 v0.0.1 嘛,这个不影响的,前端主控被控三个都是用最新源码编译的,官方前端代码没改还是0.0.1 image 我去提个PR

1 0 引用 回复

nili 楼主 13h 2min ago

#11

@0fb6bya #8 发布于2024/12/8 13:41:38

@nili #7 很好,感谢!

还有可以把参数写进环境变量,然后在entry中把环境变量写进json,这样可以少几个文件,改参数也更方便些

好思路 ,等我改一下entrypoint

1 0 引用 回复

nili 楼主 8h 42min ago

#14

新增 主控服务端/被控客户端/前端 环境变量部署,保留原本配置文件映射方法,二选一即可

1 0 引用 回复

nili 楼主 8h 40min ago

#16

@0fb6bya #12 发布于2024/12/8 20:57:59

@nili #11 https://github.com/akile-network/akile_monitor_fe/blob/main/vite.config.js#L9 这里似乎已经有了实现,你看看怎么在docker里调用,我测试了下直接使用好像不行

是的,这个变量在编译前可用,编译完了就是后面的预设值

1 0 引用 回复

nili 楼主 1day ago edited 1day ago #1

感谢@ip88ip 提供隔壁站邀请码

0 0 引用 回复

Volt Dev 1day ago #2

支持⬆️

@yosebyte | Nezha-cgent-demo | Passport认证穿透转发

0 0 引用 回复

smit 1day ago #3

感谢分享

0 0 引用 回复

nili 楼主 1day ago edited 7h 55min ago #4

Docker 服务端 前端 客户端资源占用情况

0 0 引用 回复

0fb6bya 1day ago #5

奥里给,感谢!

0 0 引用 回复

0fb6bya 1day ago edited 1day ago #6

前端和主控不应该打包在一个镜像里,改一下吧

0 0 引用 回复

0fb6bya 18h 46min ago #8

@nili #7 很好,感谢!

还有可以把参数写进环境变量,然后在entry中把环境变量写进json,这样可以少几个文件,改参数也更方便些

0 0 引用 回复

0fb6bya 13h 24min ago #9

官方我看已经是0.0.2了,可以跟进一下版本吗

0 0 引用 回复

1 2 3

内容 预览 对照

支持 markdown语法

鼓励友善发言,禁止人身攻击

xxxxxxxxxx

1

1 ​

AC娘

洋葱头

小黄鸡

发布评论

88

等级 Lv 4 鸡腿 1993 关注 0 通知 0

主题帖 11 评论数 299 粉丝 2 收藏 205 发帖

快捷功能区 推荐阅读 管理记录 幸运抽奖 邀请好友 合作商家 友站链接

所有版块 日常 技术 情报 测评 交易 曝光 拼车 生活 贴图 推广 内版 Dev 无意义 沙盒

📈用户数目📈

目前论坛共有23530位seeker

🎉欢迎新用户🎉

a22194

Captcha

sanjuns

notearnocry

q01

贝塔

BamobooEpic

相关网站 LowEndTalk LowEndSpirit HostLoc ServerHunter

站内导航 关于本站 隐私协议 RSS订阅 sitemap

商业推广 商家申请规则 Premium Provider 合作商家展示

其他平台 电报频道 电报群组

联系我们

Copyright © 2022 - 2024 All rights Reserved

set 限制解除

相关文章