---
url: https://eoht.net/notes/1panel-third-party-app-store.md
description: >-
  将 okxlin/appstore 的 localApps 分支导入 1Panel 本地应用商店，核对安装目录、备份已有模板，并以 RustDesk
  为例检查 Compose 参数、数据挂载和运行状态。
---

# 添加 1Panel 第三方应用商店 {#add-third-party-app-store-to-1panel}

## 简介 {#overview}

[okxlin/appstore 的 localApps 分支](https://github.com/okxlin/appstore/tree/localApps) 提供适配 1Panel 本地应用商店的 Docker 应用配置。应用模板、镜像与面板版本仍需逐项核对，导入成功不代表所有应用都已适配当前主机架构。

本文于 2026-10-24 核对上游目录。RustDesk 的版本文件位于 `apps/rustdesk/latest/`，没有 `versions` 层；以下示例按这一实际结构编写。

## 使用方式 {#usage}

先确认 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 计划任务。

## 国内网络 {#mainland-china-network}

以下地址通过第三方 GitHub 下载代理访问。同样需要保留 HTTPS 校验，并确认下载来源和内容；能直连 GitHub 时可使用下一节的直接地址。

### 使用 git 命令获取应用 {#clone-apps-with-git-in-china}

```bash
git clone --depth 1 --branch localApps \
  https://ghfast.top/https://github.com/okxlin/appstore \
  "$appstore_stage/repo"
```

### 使用压缩包方式获取应用 {#download-app-archive-in-china}

```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"
```

## 国际互联网络 {#international-network}

### 使用 git 命令获取应用 {#clone-apps-with-git-internationally}

```bash
git clone --depth 1 --branch localApps \
  https://github.com/okxlin/appstore \
  "$appstore_stage/repo"
```

### 使用压缩包方式获取应用 {#download-app-archive-internationally}

```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"
```

### 复制与刷新 {#copy-and-refresh-local-apps}

先查看下载到的应用，再备份原本地应用目录。复制会覆盖同名模板，自己改过的 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"
```

## 备注 {#notes}

应用未显示时，检查复制位置、目录结构、模板元数据及面板版本；部分项目未完成面板适配，可按其自身 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 模板](https://github.com/okxlin/appstore/blob/localApps/apps/rustdesk/latest/.env.sample) 填写可被客户端访问的 `HOST_ADDRESS`、容器名前缀及端口。默认的 `172.17.0.1` 不是可直接套用的公网地址。

启动前还需检查 [docker-compose.yml](https://github.com/okxlin/appstore/blob/localApps/apps/rustdesk/latest/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 文档](https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/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 或客户端配置都已正确。

## 应用一览图 {#application-gallery}

下图为应用目录示意，当前可用应用以下载到的分支和面板列表为准。

[点击查看原图](https://i.eoht.net/docs/app-list.png)

![1Panel =688x](https://i.eoht.net/docs/app-list.png "应用一览图")
