在Ubuntu/Debian环境下安装AppNode

在Ubuntu/Debian环境下安装AppNode

九月 25, 2019

AppNode的集群管理功能很实用,但仅支持CentOS,还没有支持debian/ubuntu的计划。于是我尝试在ubuntu系统上手动安装了AppNode,虽然安装后只能使用文件管理、同步、内存监控等基本功能,但已经足够了。

手动安装

环境准备

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

1
apt-get install yum yum-utils -y

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

1
2
3
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手动安装:

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 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,为了保证软件最新最好也装一下。

配置连接

依次执行以下命令:

1
2
3
4
5
6
7
8
9
10
11
12
#端口
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服务器为例:

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

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

bug

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

Alias

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

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

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

1
2
yumm appnode-app-frps
yumm frp-server

一键脚本

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/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不会

至少我本人需要的文件管理和对传功能可以正常使用,已经达到我的要求了(

测试结果

在阿里云Ubuntu16.04.6上成功安装在阿里云Ubuntu16.04.6上成功安装
在ProxmoxVE6(Debian)上成功安装在ProxmoxVE6(Debian)上成功安装