自建Synology社群套件中心

很多企业仅允许NAS内网访问可以尝试在内网建立一个社群套件中心来让内网NAS统一进行套件的更新。

NAS在请求第三方社区套件时大致会使用以下请求:

http://10.61.21.246:30080/?package_update_channel=beta&unique=synology_broadwell_3617xs&build=72806&major=7&language=enu&micro=2&arch=broadwell&minor=2&timezone=Taipei&group_id=1&nano=3

为了方便处理,仅获取系统架构unique=synology_broadwell_3617xs中的unique=synology_broadwell以及获取版本号build=72806进行判断并返回支持的套件。

测试站:
https://www.synopkg.com/

添加方式,在套件中心的设置 -> 套件来源 -> 新增 输入自建服务器的域名或者IP,支持http以及https :

添加后就可以查看:

搭建社群套件中心

NAS需要安装WebStation以及PHP 8.2套件

配置共享文件夹

创建共享文件夹:

将以下文件上传到新建共享文件夹:
通过网盘分享的文件:pkgserver.zip
链接: https://pan.baidu.com/s/1_ITFlAQLoB_nQ12nQIXHIA?pwd=8k92 提取码: 8k92 复制这段内容后打开百度网盘手机App,操作更方便哦

并使用解压缩至此目录:

配置WebStation

在脚本语言设置的PHP中新增配置文件,选择php版本为8.2

启用pdo_sqlite与sqlit3支持:

fpm与核心设置保持默认:

网页服务中新增本机语言网站,选择PHP 8.2以及之前创建的配置文件:

选择文档根目录为之前的共享文件夹:

点击确认赋予默认权限:

网页门户中创建新的网页服务门户:

服务选择之前新增的本机语言网站,类型选择基于端口这边使用的是30080:

套件中心访问

在套件中心的套件来源中选择新增,填写搭建套件中心NAS的IP和服务端口:

查看是否可以正常列出套件:

测试请求

http://10.61.21.246:30080/?package_update_channel=beta&unique=synology_broadwell_3617xs&build=72806&major=7&language=enu&micro=2&arch=broadwell&minor=2&timezone=Taipei&group_id=1&nano=3

返回json:

{
    "packages": [
        {
            "package": "DiagnosisTool",
            "version": "4.0.0-4124",
            "dname": "DiagnosisTool",
            "desc": "Tool collection for diagnosis",
            "price": 0,
            "download_count": 1000,
            "recent_download_count": 0,
            "link": "http:\/\/10.61.21.246:30080\/packages\/DiagnosisTool\/4.0.0\/DiagnosisTool-broadwell-4.0.0-4124.spk",
            "size": 4090000,
            "md5": "83f7a7796d10bab021b661b013fa42e4",
            "thumbnail": [
                "http:\/\/10.61.21.246:30080\/ico\/DiagnosisTool\/syno72.png",
                "http:\/\/10.61.21.246:30080\/ico\/DiagnosisTool\/syno256.png"
            ],
            "snapshot": [
                "http:\/\/10.61.21.246:30080\/ico\/DiagnosisTool\/synosnapshot.png"
            ],
            "qinst": false,
            "qstart": false,
            "qupgrade": false,
            "depsers": null,
            "deppkgs": null,
            "conflictpkgs": null,
            "start": false,
            "maintainer": "Synology Inc.",
            "maintainer_url": "https:\/\/www.synology.com\/",
            "distributor": "Synology Inc.",
            "distributor_url": "https:\/\/www.synology.com\/",
            "support_url": null,
            "changelog": "test pkg",
            "thirdparty": false,
            "category": 0,
            "subcategory": 0,
            "type": 0,
            "silent_install": false,
            "silent_uninstall": false,
            "silent_upgrade": false,
            "auto_upgrade_from": null
        }
    ]
}

数据库说明

修改数据库推荐使用SQliteStudio
https://sqlitestudio.pl/

devicesmode

unique_key
系统架构
e.g.
synology_broadwell

modid
架构映射ID
e.g.
11

versions

build
版本号
e.g.
72806

verid
版本映射ID
e.g.
3

packages

package
套件名称

version
版本号

dname
套件全名

desc
描述

download_count
下载次数

link
下载地址

size
大小

md5
套件安装包MD5,安装时会校验

thumbnail1
套件图标 72×72

thumbnail2
套件图标大图 256×256

maintainer
开发者

maintainer_url
开发者网址

distributor
发布者

distributor_url
发布者网址

changelog
更新信息

snapshot
套件展示图

deppkgs
依赖套件,如果没有依赖套件则需要填写null

modid
架构映射ID

verid
版本映射ID

提供官方套件下载安装服务

如果需要提供官方套件下载安装服务则需要修改套件的名称与全称,如果名称与全称相同则不会显示,这边范例是在官方名称后额外增加-1:

由于社区套件名称与实际安装名称不一致所以会导致安装后会一直显示下载中,这边只需要手动取消即可: