原文链接:https://club.fnnas.com/forum.php?mod=viewthread&tid=13521
起因
因官方应用商店几个在用的应用版本过低或版本不适合且手动更新后导致启动失败(进程一直存在只是无法在飞牛桌面显示或启动)和一些其他小问题
效果图:(来源自原文)


开始
第一步:准前期备,连接飞牛数据库!
使用root登录飞牛ssh


- 切换到数据库用户
su postgres
- 直连数据库进行后续操作
psql -U postgres -d appcenter
(忽略报错) - 创建一个用户superme密码我用的同样的
CREATE USER superme password 'superme';
(记得改一下用户名和密码且不要忘了) - 授予用户访问权限
GRANT CONNECT ON DATABASE appcenter TO superme;
- 授予用户所有表的所有权限
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO superme;
- 授予对所有序列的权限
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO superme;
- 退出 psql 并返回至Linux命令行
\q
- 从Postgres用户退回至root
exit
- 更改数据库配置文件
sudo nano /etc/postgresql/15/main/postgresql.conf
中listen_addresses = '*'
- 退出nano Mac系统依次:
control+O return control+X
Windows系统依次:Ctrl+O enter Ctrl+X
- 更改数据库权限配置文件
中增加sudo nan
o /etc/postgresql/15/main/pg_hba.confhost all all 0.0.0.0/0 md5
- 重启服务
systemctl restart postgresql
- 通过可视化工具连接数据库
注意,命令结尾的”;”号不要忘了,这些命令将:
- 允许
用户连接到superme
appcenter
数据库 - 授予
用户对 public schema 中所有现有表的全部权限superme
- 授予
用户对 public schema 中未来新创建表的全部权限superme
执行每个命令后,应该会收到GRANT
或ALTER DEFAULT PRIVILEGES
的确认信息。
第二步:添加数据实现三方应用等等加到飞牛桌面
用可视化工具链接数据库,我用的是phpstorm
新建一个空白项目并使用superme链接至飞牛数据库
主要修改下面这几个表:app表、app_service表、app_user_group表、app_user_group_record表
app
表中各字段的详细解释:
id | app_name | name | version | version_id | tags | maintainer | distributor | download_count | install_type | path | install_volume_id | data_share_volume_id | data_volume_id | manual_install | is_stop | is_uninstall | is_beta | is_docker | min_size | service_url | source | source_id | status | is_non_manual_stop | is_systemd_uint | disable_authorization_path | created_at | updated_at | features | micro_app | native_app |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
10005 | superme.dpanel | dpanel | 1.0.0 | 1 | Practical Efficiency | superme | superme | 1 | /var/apps/superme.dpanel | 1 | 1 | 1 | false | false | false | false | false | 1,000 | thirdparty | 999 | running | false | false | false | 2025-01-26 11:01:16.730 +0800 | 2025-01-27 11:10:31.829 +0800 | false | false |
基础信息字段
- id:应用的唯一标识符,用于数据库索引和区分不同应用(不用填写自增)。
- app_name:应用的程序名称,通常为带命名空间的标识(示例值:`superme.dpanel`)。
- name:应用的显示名称,面向用户的直观称呼(示例值:`dpanel`)。
- version:应用的版本号,遵循语义化版本规则(示例值:`1.0.0`)。
- version_id:版本的数字标识,用于程序内部比较(示例值:1)。
分类与维护字段
- tags:应用的标签,用于分类和搜索(示例值:`Practical Efficiency`,表示“实用效率”)。
- maintainer:应用的维护者信息(示例值:`superme`)。
- distributor:应用的分发者或发布者(示例值:`superme`)。
统计与安装字段
- download_count:应用的下载次数(示例值为空)。
- install_type:安装类型(示例值为空,可能默认或未定义)。
- path:应用的安装路径(示例值:`/var/apps/superme.dpanel`)。
- install_volume_id:安装卷的ID(示例值:1)。
- data_share_volume_id:数据共享卷的ID(示例值:1)。
- data_volume_id:数据卷的ID(示例值:1)。
- manual_install:是否手动安装(示例值:`false`,表示自动安装)。
状态控制字段
- is_stop:是否停止运行(示例值:`false`,表示正在运行)。
- is_uninstall:是否已卸载(示例值:`false`,表示未卸载)。
- is_beta:是否为测试版(示例值:`false`,表示正式版)。
- is_docker:是否为Docker容器应用(示例值:`false`,表示非Docker应用)。
- min_size:应用的最小安装大小(示例值:1,000,单位可能为KB或MB)。
- service_url:应用服务的访问地址(示例值为空)。
来源与状态字段
- source:应用的来源类型(示例值:`thirdparty`,表示第三方应用)。
- source_id:来源的标识(示例值:999)。
- status:应用的运行状态(示例值:`running`,表示正在运行)。
- is_non_manual_stop:是否非手动停止(示例值:`false`,表示无异常停止)。
- is_systemd_unit:是否为Systemd服务单元(示例值:`false`)。
- disable_authorization_path:禁用授权的路径(示例值为空)。
时间与特性字段
- created_at:应用创建时间(示例值:2025-01-26 11:01:16.730 +0800)。
- updated_at:应用最后更新时间(示例值:2025-01-27 11:10:31.829 +0800)。
- features:应用的功能特性(示例值为空)。
- micro_app:是否为微应用(示例值:`false`)。
- native_app:是否为原生应用(示例值:`false`)。
总结
- 该记录展示了一个名为`dpanel`的应用(程序名为`superme.dpanel`),版本1.0.0,由`superme`维护和分发,安装在路径`/var/apps/superme.dpanel`,当前处于运行状态,属于第三方非Docker应用,无特殊功能标记(如微应用、原生应用)。时间记录显示其创建于2025年1月26日,次日更新过一次。
app_service
表:
id | app_id | service_name | title | desc | icon | type | url | is_admin | created_at | updated_at | default_url | control | full_url |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | 10005 | superme.dpanel.Application | dpanel | dpanel | ui/images/icon_{0}.png | url | http://192.168.188.253:8807/ | true | 2025-01-26 11:01:16.731 +0800 | 2025-01-26 11:13:41.456 +0800 | http://192.168.188.253:8807/ | {“show”:0,”showRoute”:0,”auth”:0,”port”:0,”path”:0,”fullUrl”:0} | https://www.google.com:8807 |
以下是对app_service表中各字段的解释:
基础标识与关联字段
- id:这条服务记录的唯一标识符,用于数据库中区分不同的服务条目,此处值为7(
自动增加不用填写 )。 - app_id:关联的应用ID,表明该服务属于ID为10005的应用。
- service_name:服务的名称,这里是`superme.dpanel.Application`,用于标识服务的类型或具体服务。
展示与描述字段
- title:服务的标题,显示为`dpanel`,是面向用户的直观名称。
- desc:服务的描述,同样为`dpanel`,对服务进行简要说明。
- icon:服务图标的路径,`ui/images/icon_{0}.png`,用于在界面中展示服务的图标。
- type:服务的类型,值为`url`,说明该服务是通过URL访问的类型。
- url:服务的访问URL,`http://192.168.188.253:8807/`,用户可通过此地址访问服务。
权限与时间字段
- is_admin:是否为管理员权限相关,值为`true`,表示该服务可能与管理员权限有关或需要管理员权限。
- created_at:服务的创建时间,`2025-01-26 11:01:16.731 +0800`,记录服务创建的时间点。
- updated_at:服务的最后更新时间,`2025-01-26 11:13:41.456 +0800`,记录服务最后一次更新的时间。
额外URL与控制字段
- default_url:服务的默认URL,`http://192.168.188.253:8807/`,服务的默认访问地址。
- control:控制相关的配置,是一个JSON对象`{“show”:0,”showRoute”:0,”auth”:0,”port”:0,”path”:0,”fullUrl”:0}`,里面包含了显示、路由、授权、端口、路径、完整URL等方面的控制参数,值为0可能表示相关功能处于关闭或默认状态。
- full_url:服务的完整URL,`https://www.google.com:8807`,提供了服务的完整访问地址。
app_user_group
表
id | user_group_id | type | created_at |
---|---|---|---|
15 | 10001,006 | appgroup | 2025-01-26 11:01:16.730 +0800 |
16 | 1000992 | appuser | 2025-01-26 11:01:16.731 +0800 |
app_user_group_record
表
id | app_id | user_group_id | type | created_at |
---|---|---|---|---|
13 | 10005 | 1000992 | appuser | 2025-01-26 11:01:16.731 +0800 |
14 | 10005 | 10001,006 | appgroup | 2025-01-26 11:01:16.731 +0800 |
app_user_group
表和app_user_group_record
表是应用系统中用户组及用户关联相关的数据库表结构,用于管理应用内用户和用户组的关系,支撑权限控制等功能,以下是详细解释:
app_user_group
表
作用:用于定义应用相关的用户组和用户的基础信息,是用户与用户组体系的核心表之一。
字段解释
- id:记录的唯一标识符,用于在表内区分不同的条目,比如第15条、第16条记录。
- user_group_id:用户组的标识ID,确定具体对应的用户组,不同值对应不同用户组。
- type:类型,区分是应用组(`appgroup`)还是应用用户(`appuser`)相关的用户组,明确用户组类别。
- created_at:记录的创建时间,带有时区(+0800为东八区时间),追踪记录创建时刻。
数据示例分析
- 第15条记录,`type`为`appgroup`,说明是应用组相关,`user_group_id`为`10001,006`,关联多个用户组,创建时间与应用初始化时间相近,是应用默认创建的基础用户组。
- 第16条记录,`type`为`appuser`,是应用用户相关,`user_group_id`为`1000992`,是具体用户的标识,创建时间也在应用初始化时段,是应用默认创建的用户。
app_user_group_record
表
作用:作为关联表,建立应用(`app`)与`app_user_group`表中用户组/用户的关联关系,明确哪些用户组和用户属于哪个应用,是实现“应用级用户隔离”的关键。
字段解释:
- id:记录的唯一标识,区分不同关联条目。
- app_id:关联的应用ID,确定所属应用,此处为`10005`,对应前文的`dpanel`应用。
- user_group_id:关联
app_user_group
表中的`user_group_id`,建立与用户组/用户的关联。 - type:同
app_user_group
表的`type`,区分是应用组还是应用用户。 - created_at:记录创建时间,追踪关联关系的建立时间。
数据示例分析:
- 第13条记录,`app_id`为`10005`,`user_group_id`为`1000992`,`type`为`appuser`,表示`dpanel`应用(`app_id=10005`)关联`app_user_group`表中`user_group_id=1000992`的应用用户。
- 第14条记录,`app_id`为`10005`,`user_group_id`为`10001,006`,`type`为`appgroup`,表示`dpanel`应用关联`app_user_group`表中`user_group_id=10001,006`的应用组。
简言之, app_user_group
表定义用户组和用户的基础信息,app_user_group_record
表则将这些用户组和用户与具体应用关联起来,共同构成应用系统中用户与用户组管理、权限控制的基础数据结构。
添加完之后,刷新飞牛桌面,就能看到它了,如果没有就重启一下
添加静态资源,图片目录
具体路径:/var/apps/superme.dpanel/target/ui/images
;你可以看看其他应用同级目录的图标规格作图

本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。