AppNode的集群管理功能很实用,我现在就是拿他来做我的探针。但仅支持CentOS,还没有支持debian/ubuntu的计划。

于是我尝试在ubuntu系统上手动强行安装了AppNode,虽然安装后只能使用文件管理、同步、内存监控等基本功能,但已经足够了。

手动安装

环境准备

AppNode使用yum来管理软件包,所以首先就得

apt-get update
apt-get install curl
apt-get install yum yum-utils -y

必须安装curl,不然后面rpm命令无法执行成功,虽然不安装curl后执行rpm的报错和curl没啥联系

之后,通过安装rpm包的方式安装AppNode的软件源:

rpm -Uvh --nodeps http://repo.appnode.com/stable/el/7/x86_64/appnode-release-1.1-1.el7.noarch.rpm
rpm -Uvh --nodeps http://dl.appnode.com/stable/centos/7/agent/x86_64/appnode-agent-release-1.2-1.el7.x86_64.rpm
rpm -Uvh --nodeps http://dl.appnode.com/stable/centos/7/agent/x86_64/appnode-extras-release-1.1-1.el7.noarch.rpm

此后便可以安装appnode-agent包了。

安装软件

但当手动安装软件包的时候,会遇到一些问题:
没有依赖项。
由于yum里只有AppNode的软件源,yum会提示缺少所有依赖项:各种.so,内核模块,甚至/bin/sh。
而yum并没有提供跳过找不到的依赖的参数,所以需要使用rpm –nodeps手动安装:

rpm -Uvh --nodeps $(repoquery --location appnode-ccenter)

但这样会跳过所有的依赖项,所以必须手动安装所有依赖:

# yum deplist appnode-agent
Finding dependencies: 
package: appnode-agent.x86_64 1.10.10-1.el7
  dependency: /bin/sh
   Unsatisfied dependency
  dependency: appnode-agent-appmarket-db >= 20170409
   provider: appnode-agent-appmarket-db.x86_64 20190912-1.el7
  dependency: appnode-agent-changelog-db >= 20170424
   provider: appnode-agent-changelog-db.noarch 20190910-1.el7
  dependency: appnode-agent-release >= 1.2
   provider: appnode-agent-release.x86_64 1.2-1.el7
  dependency: appnode-app-procmgr >= 1.1.0
   provider: appnode-app-procmgr.x86_64 1.1.2-1.el7
  dependency: appnode-cli >= 1.1.0
   provider: appnode-cli.x86_64 1.1.0-2.el7
  dependency: appnode-extras-release >= 1.1
   provider: appnode-extras-release.noarch 1.1-1.el7
  dependency: appnode-release >= 1.1
   provider: appnode-release.noarch 1.1-1.el7
  dependency: bzip2
   Unsatisfied dependency
  dependency: libc.so.6(GLIBC_2.14)(64bit)
   Unsatisfied dependency
  dependency: libdl.so.2()(64bit)
   Unsatisfied dependency
  dependency: libdl.so.2(GLIBC_2.2.5)(64bit)
   Unsatisfied dependency
  dependency: libmagic.so.1()(64bit)
   Unsatisfied dependency
  dependency: libpthread.so.0()(64bit)
   Unsatisfied dependency
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
   Unsatisfied dependency
  dependency: libpthread.so.0(GLIBC_2.3.2)(64bit)
   Unsatisfied dependency
  dependency: pv
   provider: pv.x86_64 1.4.6-1.el7
  dependency: rtld(GNU_HASH)
   Unsatisfied dependency
  dependency: socat
   Unsatisfied dependency
  dependency: unzip
   Unsatisfied dependency
  dependency: wget
   Unsatisfied dependency
  dependency: xz
   Unsatisfied dependency
  dependency: zip
   Unsatisfied dependency

将所有存在的依赖项使用上面的命令依次安装,不存在的依赖项用apt安装(事实上一般不需要),即可启动appnode。
需要安装的依赖有:

appnode-agent-appmarket-db
appnode-agent-changelog-db
appnode-app-procmgr
appnode-app-rsyncd
appnode-ccenter-fake
appnode-cli
appnode-extras-release
appnode-release
appnode-agent-release

其中最下方三个release是前面安装过的repo,为了保证软件最新最好也装一下。

配置连接

依次执行以下命令:

#端口
appnode agent config agent_port 9998
#协议
appnode agent config agent_protocol http
#网络连接,而非本地
appnode agent config agent_network tcp
#API Key,这里随机生成
appnode agent config agent_sign_key $(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 30)
#启动agent
appnode agent start
#看看状态
appnode agent status

之后就可以在控制中心按正常流程添加服务器了

其他软件安装

通过此方法安装的AppNode的软件中心是不能使用的,所有插件也必须手动安装。
以安装frp服务器为例:

rpm -Uvh --nodeps $(repoquery --location appnode-app-frps)
rpm -Uvh --nodeps $(repoquery --location frp-server)

然后再到软件中心点击安装,更新缓存。

bug

通过此法安装的插件不会在AppNode的桌面显示,但可以从软件中心打开。

偷懒

上面命令不方便记忆,为了日后使用可以给它一个别名,如yumm:

echo '#!/bin/bash' >/sbin/yumm
echo 'rpm -Uvh --nodeps $(repoquery --location $1)' >> /sbin/yumm
chmod +x /sbin/yumm

这样安装frp服务器就变成了

yumm appnode-app-frps
yumm frp-server

一键脚本

将上面的手动安装步骤进行整合,就会得到下面的脚本:

#!/bin/bash
apt-get install yum -y
apt-get install yum-utils -y
rpm -Uvh --nodeps http://repo.appnode.com/stable/el/7/x86_64/appnode-release-1.1-1.el7.noarch.rpm
rpm -Uvh --nodeps http://dl.appnode.com/stable/centos/7/agent/x86_64/appnode-agent-release-1.2-1.el7.x86_64.rpm
rpm -Uvh --nodeps http://dl.appnode.com/stable/centos/7/agent/x86_64/appnode-extras-release-1.1-1.el7.noarch.rpm
yum makecache
echo '#!/bin/bash' >/sbin/yumm
echo 'rpm -Uvh --nodeps $(repoquery --location $1)' >> /sbin/yumm
chmod +x /sbin/yumm
yumm appnode-extras-release
yumm appnode-release
yumm appnode-agent-release
yum makecache
yum update
yumm appnode-agent-appmarket-db
yumm appnode-agent-changelog-db
yumm appnode-app-procmgr
yumm appnode-app-rsyncd
yumm appnode-ccenter-fake
yumm appnode-cli
yumm appnode-agent
yumm pv
appnode agent config agent_port 9998
appnode agent config agent_protocol http
appnode agent config agent_network tcp
appnode agent config agent_sign_key $(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 30)
appnode agent start
appnode agent config

执行之后如果在shell里看到了appnode agent config的输出(即配置信息),就可以尝试用控制中心连接了。

测试结果及已知问题

已知问题

  1. 强制安装的插件不会在AppNode的桌面显示,但可以从软件中心打开。
  2. 进程管理无法使用
  3. Ubuntu会在控制中心显示图标,但是pve-debian不会
    至少我本人需要的文件管理和对传功能可以正常使用,已经达到我的要求了OωO

测试结果

Ubuntu16.04.6

appnode-ubuntu-test.jpg

ProxmoxVE6(Debian)

appnode-pve-test.jpg


参考:
在Ubuntu/Debian环境下安装AppNode

最后修改:2020 年 01 月 08 日 05 : 16 PM