欢迎为 kejilion.sh 贡献应用!通过在 apps/ 目录下创建 .conf 配置文件,您的应用将自动集成到脚本的应用市场中。
在 apps/ 目录下创建一个以应用名命名的配置文件,例如:myapp.conf。
每个配置文件应严格遵循以下结构,确保变量和函数命名规范:
# --- 基础信息 / Basic Information ---
local app_id="My File Name" # 和文件名一致,用于安装状态检测 / Same as the filename, used for installation status detection.
local app_name="My App Name" # 应用显示名称
local app_text="A brief description" # 一句话简介,说明应用用途
local app_url="https://github.com/..." # 官网链接 / Official URL
local docker_name="myapp_container" # 容器启动后的名称 / Container Name
local docker_port="8080" # 默认访问端口 / Default Port
local app_size="1" # 占用空间大小(GB) / Size in GB required (1-10)
# --- 核心逻辑 / Core Logic ---
docker_app_install() {
# 必须在 /home/docker/ 下创建应用目录 / Directory creation (Mandatory)
mkdir -p /home/docker/myapp && cd /home/docker/myapp
# 下载并配置 compose 文件 / Download compose file
# 务必使用 gh_proxy 变量 / Use gh_proxy for China access
curl -L -o docker-compose.yml "${gh_proxy}https://raw.githubusercontent.com/..."
# 端口处理(使用变量以便用户自定义)/ Port configuration (Customizable)
sed -i "s/8080:8080/${docker_port}:8080/g" docker-compose.yml
# 启动容器 / Start container
docker compose up -d
echo "安装完成 / Install Complete"
# 显示访问地址的函数保留即可 / Show the function that is reserved
check_docker_app_ip
}
docker_app_update() {
cd /home/docker/myapp
docker compose pull
docker compose up -d
echo "更新完成 / Update Complete"
}
docker_app_uninstall() {
cd /home/docker/myapp
# 停止并删除镜像 / Stop and remove images
docker compose down --rmi all
# 彻底物理删除目录 / Clean up directory
rm -rf /home/docker/myapp
echo "卸载完成 / Uninstall Complete"
}
# --- 注册 (必须包含) / Registration (Mandatory) ---
docker_app_plus
核心原则:数据不入系统盘,统一归档。
- 【必须】:所有持久化数据(Volume/Bind Mount)必须存储在
/home/docker/[应用名]目录下。 - 【禁止】:严禁将数据存放在
/root、/etc、/var/lib或其他非指定根目录。 - 【理由】:统一路径方便用户进行一键备份、整机迁移以及权限的统一管理。
- 开机自启:生成的
docker-compose.yml中必须包含restart: always或restart: unless-stopped。 - 干净卸载:
docker_app_uninstall函数必须执行闭环操作,包含:- 停止并删除容器 (
docker compose down) - 删除对应的镜像 (
--rmi all) - 彻底物理删除
/home/docker/[应用名]目录。
- 停止并删除容器 (
- App ID:当前版本已弱化 ID 概念,您可以省略或填入任意数值,系统目前主要以
.conf文件名作为唯一识别依据。 - Local 关键字:由于配置文件是在函数内部被
source加载的,请务必保留local声明,这能有效防止变量污染脚本的全局环境。
- 镜像加速:下载 GitHub 资源(如
.yml或脚本)时,请务必在 URL 前加上${gh_proxy}变量,以确保国内服务器的访问成功率。
一旦您的 .conf 文件被合入仓库,该应用将自动进入 “第三方应用入驻” 模块。此外,开发者可以向用户提供专属的极简安装指令:
bash <(curl -sL kejilion.sh) app [文件名]示例:如果您的配置文件名为 myapp.conf,则调用指令为: bash <(curl -sL kejilion.sh) app myapp
- 本地自测:把
[应用名].conf放到 VPS 的~/apps-local/目录(见第 6 节),在自己的 VPS 上完整运行安装、更新、卸载流程,确保无报错。 - 路径审计:检查
/home/docker/目录下是否正确生成了应用文件夹,且没有文件“溢出”到其他地方。 - 提交申请:将您的
[应用名].conf文件通过 Pull Request 提交至本仓库的sh/apps/目录。 - 审核发布:维护者审核逻辑安全后,您的应用将正式上线
kejilion.sh菜单。
不想公开、或还在调试的应用,可以只放在自己的服务器上,无需提交 PR:
- 按第 2 节模板写好配置,保存为
~/apps-local/[应用名].conf(root 用户即/root/apps-local/)。 - 收紧权限:文件必须属于当前用户,且不能被其他用户写入,软链接会被忽略:
chown root:root /root/apps-local/myapp.conf && chmod 644 /root/apps-local/myapp.conf - 打开
kejilion.sh应用市场,应用出现在 “本地应用列表” 中;KPanel 应用市场点击“刷新状态”后出现在 “本地应用” 分类,两边读的是同一个目录。 - 安装、更新、卸载与正式应用完全一致,也可直接运行:
bash <(curl -sL kejilion.sh) app [文件名]。
注意事项:
- 官方优先:与本仓库中的应用同名时以官方配置为准,本地配置会被忽略,请换一个文件名。
- 安全自负:本地应用未经审核,会以 root 身份执行,请只使用自己编写或信任的配置。
- 版本要求:需要支持
~/apps-local的新版kejilion.sh;KPanel 检测到旧脚本时会禁用本地应用的安装与管理按钮。 - 自测通过后,把同一个
.conf按第 5 节提交 PR,即可上架给所有用户。