参与开源贡献|如何向 1Panel 官方应用商店添加应用

👋
本文由 小王 @wan92hen 供稿,首发于 3703.wang
原文地址:https://3703.wang/archives/1panel-openldap

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。
相比于直接通过命令行方式来运维管理 Linux 服务器,1Panel 的优势主要体现在:

高效管理:用户可以通过 Web 图形界面轻松管理 Linux 服务器,实现主机监控、文件管理、数据库管理、容器管理等功能;
快速建站:深度集成开源建站软件 WordPress 和 Halo,域名绑定、SSL 证书配置等操作一键搞定;
应用商店:精选上架各类高质量的开源工具和应用软件,协助用户轻松安装并升级;
安全可靠:基于容器管理并部署应用,实现最小的漏洞暴露面,同时提供防火墙和日志审计等功能;
一键备份:支持一键备份和恢复,用户可以将数据备份到各类云端存储介质,永不丢失。

前段时间在进行项目测试时需要一个 LDAP 服务器,去 1Panel 应用商店里搜了下发现没有,又去 1Panel GitHub 代码仓库的 Issue 里搜了下,看到也有其他人有这样的需求。

https://github.com/1Panel-dev/1Panel/issues/768

既然如此那就立马开干,搞个 1Panel 应用商店的 OpenLDAP 应用,给 1Panel 项目刷一波贡献值。

1Panel 应用商店中的应用提交流程

首先先看下 1Panel 应用商店的官方文档 如何提交自己想要的应用 1Panel-dev/appstore Wiki (github.com),了解下大概的应用编写和提交流程。可以概括为如下几个步骤:

  1. fork 本项目
  2. clone 代码到本地
  3. 创建一个新的分支
  4. 创建应用文件
  5. 脚本
  6. 本地测试
  7. 提交文件 提
  8. 交 Pull Request

一个典型的 1Panel 应用商店应用目录结构如下:

├──halo // 以 halo 的 key 命名 ,下面解释什么是 key 
	├── logo.png // 应用 logo , 最好是 180 * 180 px
	├── data.yml // 应用声明文件
	├── README.md // 应用的 README
	├── 2.2.0 // 应用版本 注意不要以 v 开头
	│   ├── data.yml // 应用的参数配置,下面有详细介绍
	│   ├── data // 挂载出来的目录 
	|   ├── scripts // 脚本目录 存放 init.sh upgrade.sh uninstall.sh
	│   └── docker-compose.yml // docker-compose 文件
	└── 2.3.2
	    ├── data.yml
	    ├── data
	    └── docker-compose.yml

大体上是在 docker-compose.yml 文件的基础上增加了一些应用元数据,并进行了一些参数化处理。

寻找 OpenLDAP 容器化部署方案

了解完 1Panel 应用商店应用的机制和结构,接下来需要找一个靠谱的 OpenLDAP 容器化部署方案。一开始瞄准 OpenLDAP 项目官网,在官网上没有找到容器化相关的内容。

接下来直接在 Docker Hub 镜像仓库中搜索 OpenLDAP,排在首位的是 Bitnami 团队制作的镜像https://hub.docker.com/r/bitnami/openldap

Bitnami 作为 VMware 旗下团队,制作维护了很多开源项目的容器镜像以及 Helm Chart,质量和更新速度都比较有保障。在没有 OpenLDAP 官网镜像的情况下,这里就直接选择使用 Bitnami 团队的 OpenLDAP 镜像了。

创建本地应用

初始化

为了方便在编写应用的过程中进行调试,我们先不管 1Panel Appstore 的代码仓库,直接找一台部署了 1Panel 的服务器,参照 如何提交自己想要的应用 中本地测试步骤说明,在 1Panel 上直接创建一个 OpenLDAP 本地应用。

在 1Panel 文件管理页面去到 /opt/1panel/resource/apps 目录,选择 VS Code 打开 local 文件夹,填写好当前服务器的连接信息后,便会使用本地电脑安装的 VS Code 打开这个服务器目录。

在这里插入图片描述
在 /opt/1panel/resource/apps/local 目录下新建 openldap 目录并增加必要的文件。

└── openldap
    ├── 2.6.8
    │   ├── data.yml
    │   └── docker-compose.yml
    ├── data.yml
    ├── logo.png
    └── README.md

其中 README.md 为应用的说明文件,用于展示在 1Panel 应用商店的应用详情页面。
在这里插入图片描述
data.yml 为应用的元数据定义,包括应用的名称、描述、类型等信息。

2.6.8 为应用具体的版本目录,其中 data.yml 主要定义了安装应用时需要填写的参数信息,docker-compose.yml 则是最终用来启动应用使用的 docker compose 定义文件。

安装测试

参考 Bitnami OpenLDAP 镜像仓库中的示例,使用一个最小可运行的 Docker Compose 文件,修改 2.6.8/docker-compose.yml 文件的内容。

version: '3'

networks:
  1panel-network:
    external: true
services:
  openldap:
    image: bitnami/openldap:2.6.8
    ports:
      - '1389:1389'
      - '1636:1636'
    environment:
      - LDAP_ADMIN_USERNAME=admin
      - LDAP_ADMIN_PASSWORD=adminpassword
      - LDAP_USERS=user01,user02
      - LDAP_PASSWORDS=password1,password2
    networks:
      - 1panel-network
    volumes:
      - './data:/bitnami/openldap'

同时参考应用商店其他应用的 data.yml 元数据定义补充相关内容后,点击应用商店页面的 更新应用列表 即可在应用列表中搜索到新添加的 OpenLDAP 这个本地应用。

参数化处理

根据常见的使用场景,我们一般期望在安装 OpenLDAP 时可以自定义监听端口、根路径、默认用户名及默认密码等参数,这里可以通过在 2.6.8/data.yml 中定义安装参数,并在 2.6.8/docker-compose.yml 中引用这些参数的方式实现这一效果。

修改完成后可以再次点击应用商店页面的 更新应用列表 ,重新部署修改后的应用,不断重复该过程直至应用安装所填参数可以满足需求并能正常生效。

最终文件内容可以参考:feat: 增加 OpenLDAP 应用 by wan92hen · Pull Request #1664 · 1Panel-dev/appstore (github.com)。

补充初始化脚本

在安装 OpenLDAP 本地应用进行测试的过程中,出现了容器内 OpenLDAP 没有权限操作挂在上的数据目录的问题。这是因为应用部署后的数据目录 data 默认所有者是 root ,而 Bitnami 提供的 OpenLDAP 镜像是使用 uid 为 1001 的用户运行的,这种情况便可通过补充脚本的方式来进行处理。在 2.6.8/scripts/ 目录增加 init.sh 、upgrade.sh 两个脚本,用于修改数据目录所有者及权限。

#!/bin/bash

DIR="./data/"

if [ -d "$DIR" ]; then
  echo "目录 $DIR 已存在"
else
  echo "目录 $DIR 不存在,正在创建..."
  mkdir -p "$DIR"
  if [ $? -eq 0 ]; then
    echo "目录 $DIR 创建成功"
  else
    echo "目录 $DIR 创建失败"
  fi
fi

chown -R 1001:1001 $DIR

提交到官方仓库

本地应用测试完成没有问题后,便可根据官方文档 如何提交自己想要的应用 中的步骤,fork 项目后将服务器上创建的本地应用目录,整个拷贝到本地的 appstore 代码仓库提交 Pull Request 到官方仓库。

针对 OpenLDAP 应用的完整 PR 内容可以参考:https://github.com/1Panel-dev/appstore/pull/1664


☘️ 如果你希望为 1Panel 开源项目提交贡献,或是在 1Panel 官方应用市场没有找到自己想要的应用,希望这篇文章可以帮助到你~

ps:如果你觉得这篇文章还不错,别忘了去原博 3703.wang 为作者打气。

  • 30
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值