添加 1Panel 第三方应用商店
简介
okxlin/appstore 的 localApps 分支 提供适配 1Panel 本地应用商店的 Docker 应用配置。应用模板、镜像与面板版本仍需逐项核对,导入成功不代表所有应用都已适配当前主机架构。
本文于 2026-10-24 核对上游目录。RustDesk 的版本文件位于 apps/rustdesk/latest/,没有 versions 层;以下示例按这一实际结构编写。
使用方式
先确认 1Panel 安装目录、当前节点及本地应用目录。以下使用常见的 /opt/1panel/resource/apps/local,自定义安装位置必须修改变量。以有权写入该目录的账户操作;使用 Git 方式需要 git,压缩包方式需要 curl、unzip,两种方式都需要 tar 备份。
下面所有步骤在同一 Bash 会话执行。先检查目标目录存在,找不到时停止并核对面板设置,不要盲目创建另一个目录:
bash
set -eu
panel_local='/opt/1panel/resource/apps/local'
test -d "$panel_local"
appstore_stage=$(mktemp -d)从下面四种下载方式中只选一种,成功后再执行“复制与刷新”。下载或解压失败时停止;不要继续从旧的解压目录复制文件。首次可在终端完成核对,再考虑把同样的流程放入 1Panel 的 Shell 计划任务。
国内网络
以下地址通过第三方 GitHub 下载代理访问。同样需要保留 HTTPS 校验,并确认下载来源和内容;能直连 GitHub 时可使用下一节的直接地址。
使用 git 命令获取应用
bash
git clone --depth 1 --branch localApps \
https://ghfast.top/https://github.com/okxlin/appstore \
"$appstore_stage/repo"使用压缩包方式获取应用
bash
curl -fL --retry 3 \
https://ghfast.top/https://github.com/okxlin/appstore/archive/refs/heads/localApps.zip \
-o "$appstore_stage/localApps.zip"
unzip -q "$appstore_stage/localApps.zip" -d "$appstore_stage"
mv "$appstore_stage/appstore-localApps" "$appstore_stage/repo"国际互联网络
使用 git 命令获取应用
bash
git clone --depth 1 --branch localApps \
https://github.com/okxlin/appstore \
"$appstore_stage/repo"使用压缩包方式获取应用
bash
curl -fL --retry 3 \
https://github.com/okxlin/appstore/archive/refs/heads/localApps.zip \
-o "$appstore_stage/localApps.zip"
unzip -q "$appstore_stage/localApps.zip" -d "$appstore_stage"
mv "$appstore_stage/appstore-localApps" "$appstore_stage/repo"复制与刷新
先查看下载到的应用,再备份原本地应用目录。复制会覆盖同名模板,自己改过的 Compose 文件要先比较;不需要全量导入时可只复制所需应用目录。
bash
test -d "$appstore_stage/repo/apps"
ls "$appstore_stage/repo/apps"
appstore_backup="${panel_local%/}-backup-$(date +%Y%m%d-%H%M%S).tar.gz"
umask 077
tar -czf "$appstore_backup" -C "$panel_local" .
cp -a "$appstore_stage/repo/apps/." "$panel_local/"回到应用商店刷新本地应用,检查目标应用和版本是否出现。模板更新不会自动更新已安装应用,也不应覆盖已有应用的实际配置和数据。确认导入成功后可删除本次临时目录,备份继续保留:
bash
rm -r -- "$appstore_stage"备注
应用未显示时,检查复制位置、目录结构、模板元数据及面板版本;部分项目未完成面板适配,可按其自身 Compose 配置手工部署。不要将“不显示”直接判断为可正常在终端启动。
以下以 RustDesk 为例。先检查主机实际安装的 Compose 入口:
bash
docker compose version本文后续采用 docker compose。若主机安装的是独立 docker-compose 且与模板兼容,用 docker-compose version 确认后将后续入口统一替换;带连字符的命令本身并不是语法错误。
先进入正确目录,仅在 .env 不存在时复制示例,保留已有配置:
bash
cd "$panel_local/rustdesk/latest"
test -f .env || cp .env.sample .env
nano .env按 实际 .env 模板 填写可被客户端访问的 HOST_ADDRESS、容器名前缀及端口。默认的 172.17.0.1 不是可直接套用的公网地址。
启动前还需检查 docker-compose.yml:
- 模板依赖已有的外部网络
1panel-network。用docker network inspect 1panel-network核对;不存在时先确认面板的实际网络配置。 hbbs的-r应指定客户端可达的 hbbr 中继地址和端口。当前模板写成${HOST_ADDRESS}:${HBBS_PORT},采用其默认端口划分时应编辑为${HOST_ADDRESS}:${HBBR_PORT},不要把注册服务端口当成中继端口。hbbs与hbbr都将./data挂载到/root。此版本生成的公钥位于宿主机./data/id_ed25519.pub,不在./data/hbbs/下;不要覆盖已有的服务端密钥。- 根据实际映射放行所需端口,并确认镜像支持主机架构。具体连接关系可对照 RustDesk Docker 文档。
bash
docker compose config --quiet
docker compose up -d
docker compose ps
docker compose logs --tail 50 hbbs hbbr配置检查失败时先修复,不继续启动。两个服务启动后读取公钥用于客户端配置;公钥可用于连接,私钥文件不要外发。
bash
cat ./data/id_ed25519.pub最后在 RustDesk 客户端配置服务器地址和公钥,并实际验证连接及中继。只看到容器运行不代表外部端口、NAT 或客户端配置都已正确。
应用一览图
下图为应用目录示意,当前可用应用以下载到的分支和面板列表为准。
