Skip to content

OlaresManifest 规范

每一个 Olares 应用的 Chart 根目录下都必须有一个名为 OlaresManifest.yaml 的文件。OlaresManifest.yaml 描述了一个 Olares 应用的所有基本信息。Olares 应用市场协议和 Olares 系统依赖这些关键信息来正确分发和安装应用。

提示

最新的 Olares 系统使用的 Manifest 版本为: 0.10.0

  • 修改 categories 分类
  • 增加 Permission 部分中 provider 权限的申请
  • 增加 Provider 部分,用于让应用对集群内暴露指定服务接口
  • 移除 Spec 部分已不支持的一些配置项
  • 移除 Option 部分已不支持的一些配置项
  • 增加 allowMultipleInstall 配置,允许应用克隆出多个独立的实例
  • 增加 Envs 部分,支持应用声明需要的环境变量
Changelog

0.9.0

  • options 中增加 conflict 字段, 用于声明不兼容的应用
  • 移除 optionsanalytics 配置项
  • 修改 tailscale 字段的配置格式
  • 增加 allowedOutboundPorts 配置,允许通过指定端口进行非 HTTP 协议的对外访问
  • 修改 ports 部分的配置

0.8.3

  • dependencies 配置项里增加 mandatory 字段以表示该依赖应用必须安装。
  • 增加 tailscaleAcls 配置项,允许 Tailscale 为应用开放指定端口

0.8.2

  • 添加 runAsUser 选项,用于限制应用程序在非root权限的用户下运行

0.8.1

  • 添加 ports 选项以指定 UDP 或 TCP 的暴露端口

0.7.1

  • 添加新的 authLevelinternal
  • spec>language 改为 spec>locale 并支持 i18n

一个 OlaresManifest.yaml 文件的示例如下:

OlaresManifest.yaml 示例
yaml
olaresManifest.version: '0.10.0'
olaresManifest.type: app
metadata:
  name: helloworld
  title: Hello World
  description: app helloworld
  icon: https://app.cdn.olares.com/appstore/default/defaulticon.webp
  version: 0.0.1
  categories:
  - Utilities
entrances:
- name: helloworld
  port: 8080
  title: Hello World
  host: helloworld
  icon: https://app.cdn.olares.com/appstore/default/defaulticon.webp
  authLevel: private
permission:
  appCache: true
  appData: true
  userData:
  - Home/Documents/
  - Home/Pictures/
  - Home/Downloads/BTDownloads/
spec:
  versionName: '0.0.1'
  featuredImage: https://link.to/featured_image.webp
  promoteImage:
  - https://link.to/promote_image1.webp
  - https://link.to/promote_image2.webp
  fullDescription: |
    A full description of your app.
  upgradeDescription: |
    Describe what is new in this upgraded version.
  developer: Developer's Name
  website: https://link.to.your.website
  sourceCode: https://link.to.sourceCode
  submitter: Submitter's Name
  language:
  - en
  doc: https://link.to.documents
  supportArch:
  - amd64
  limitedCpu: 1000m
  limitedMemory: 1000Mi
  requiredCpu: 50m
  requiredDisk: 50Mi
  requiredMemory: 12Mi

options:
  dependencies:
  - name: olares
    type: system
    version: '>=0.1.0'

olaresManifest.type

  • 类型:string
  • 有效值: apprecommendmiddleware

Olares 市场目前支持 3 种类型的应用,各自对应不同场景。本文档以 “app” 为例来解释各个字段。其他类型请参考相应的配置指南。

提示

Olares Market 目前不展示 recommend 类型的应用,但你可以上传自定义 Chart 来给 Wise 安装推荐算法

olaresManifest.version

  • 类型:string

随着 Olares 更新,OlaresManifest.yaml 的配置规范可能会发生变化。你可以通过检查 olaresManifest.version 来确定这些更改是否会影响你的应用程序。 olaresManifest.version 由三个用英文句点分隔的整数组成。

  • 第 1 位数字增加意味着引入了不兼容的配置项,未升级对应 OlaresManifest.yaml 的应用将无法分发或安装。
  • 第 2 位数字增加意味着分发和安装必须字段存在变化,但 Olares 系统仍兼容之前所有版本配置的应用分发与安装。我们建议开发者尽快更新升级应用的 OlaresManifest.yaml 文件。
  • 第 3 位数字的改变,不影响应用分发和安装。

开发者可以使用 1-3 位的版本号来标识该应用遵循的配置版本。以下是有效版本的一些示例:

yaml
olaresManifest.version: 1
olaresManifest.version: 1.1.0
olaresManifest.version: '2.2'
olaresManifest.version: "3.0.122"

Metadata

应用的基本信息,用于在 Olares 系统和应用市场中展示应用。

示例

yaml
metadata:
  name: nextcloud
  title: Nextcloud
  description: The productivity platform that keeps you in control
  icon: https://app.cdn.olares.com/appstore/nextcloud/icon.png
  version: 0.0.2
  categories:
  - Utilities
  - Productivity

name

  • 类型:string
  • Accepted Value: [a-z][a-z0-9]?

Olares 中的应用的命名空间,仅限小写字母数字字符。最多 30 个字符,需要与 Chart.yaml 中的 FolderNamename 字段保持一致。

title

  • 类型:string

在应用市场中显示的应用标题。长度不超过 30 个字符。

description

  • 类型:string

Olares 应用市场中的应用名称下方显示的简短说明。

icon

  • 类型:url

应用图标。

图标必须是 PNGWEBP 格式文件,最大为 512 KB,尺寸为 256x256 px

version

  • 类型:string

应用的 Chart Version,每次改变 Chart 目录里的内容时应递增。需遵循语义化版本规范,需要与 Chart.yaml 中的 version 字段一致。

categories

  • 类型: list<string>

描述在应用市场的哪个类别下展示应用。

OS 1.11 有效值:

  • Blockchain, Utilities, Social Network, Entertainment, Productivity

OS 1.12 有效值:

  • Creativity:设计创作
  • Productivity_v112:工作效率
  • Developer Tools:开发工具
  • Fun:休闲娱乐
  • Lifestyle:生活方式
  • Utilities_v112:实用工具
  • AI:AI

提示

Olares OS 1.12.0 版本对应用商店的应用分类进行了调整,因此如果应用需要同时兼容 1.11 和 1.12 版本,请同时填写两个版本所需的分类。

Entrances

指定此应用访问入口的数量。每个应用允许最少 1 个,最多 10 个入口 。

示例

yaml
entrances:
- name: a
  host: firefox
  port: 3000
  title: Firefox
  authLevel: public
  invisible: false
- name: b
  host: firefox
  port: 3001
  title: admin

name

  • 类型:string

  • Accepted Value: [a-z]([-a-z0-9]*[a-z0-9])?

    入口的名称,长度不超过 63 个字符。一个应用内不能重复。

port

  • 类型: int
  • 有效值: 0-65535

host

  • 类型:string

  • 有效值: [a-z]([-a-z0-9]*[a-z0-9])?

    当前入口的 Ingress 名称,只包含小写字母和数字和中划线-,长度不超过 63 个字符。

title

  • 类型:string

安装后 Olares 桌面的显示名称。长度不超过 30 个字符。

icon

  • 类型: url
  • 可选

应用安装后 Olares 桌面上的图标。图片文件必须是 PNGWEBP 格式,不超过 512 KB,尺寸为 256x256 px

authLevel

  • 类型:string
  • 有效值: public, private, internal
  • 默认值: private
  • 可选

指定入口的认证级别。

  • Public:互联网上的任何人都可以不受限制地访问。
  • Private:需要从内部和外部网络访问的授权。
  • Internal:需要授权才能从外部网络访问。从内部网络(通过 LAN/VPN)访问时不需要身份验证。

invisible

  • 类型: boolean
  • 默认值:false
  • 可选

invisible true 时,该入口不会显示在 Olares 桌面上。

openMethod

  • 类型:string
  • 有效值: default, iframe, window
  • 默认值: default
  • 可选

指定该入口在桌面的打开方式。

iframe 代表在桌面的窗口内通过 iframe 新建一个窗口,window 代表在浏览器新的 Tab 页打开。default 代表跟随系统的默认选择,系统默认的选择是iframe

windowPushState

  • 类型: boolean
  • 默认值:false
  • 可选

将应用嵌入到桌面上的 iframe 中时,应用的 URL 可能会动态更改。由于浏览器的同源策略,桌面(父窗口)无法直接检测到 iframe URL 中的这些变化。因此,如果你重新打开应用程序选项卡,它将显示初始 URL,而不是更新后的 URL。

为了确保无缝的用户体验,你可以通过将其设置为 true 来启用此选项。此操作会提示网关自动将以下代码注入到 iframe 中。每当 iframe 的 URL 发生更改时,此代码都会向父窗口(桌面)发送一个事件。因此,桌面可以跟踪 URL 更改并打开正确的页面。

代码
Javascript
<script>
  (function () {
    if (window.top == window) {
        return;
    }
    const originalPushState = history.pushState;
    const pushStateEvent = new Event("pushstate");
    history.pushState = function (...args) {
      originalPushState.apply(this, args);
      window.dispatchEvent(pushStateEvent);
    };
    window.addEventListener("pushstate", () => {
      window.parent.postMessage(
        {type: "locationHref", message: location.href},
        "*"
      );
    });
  })();
</script>

Ports

定义暴露的端口

示例

yaml
ports:
- name: rdp-tcp             # 提供服务的入口名称
  host: windows-svc         # 提供服务的 Ingress 主机名称
  port: 3389                # 提供服务的端口号
  protocol: udp             # 暴露端口使用的协议 
  exposePort: 46879         # 暴露的端口,在集群内一次只能分配给一个应用程序
  addToTailscaleAcl: true   # 自动添加到 Tailscale 的 ACL 列表中

Olares 会为你的应用暴露指定的端口,这些端口可通过应用域名在本地网络下访问,如84864c1f.your_olares_id.olares.com:46879。对于每个公开的端口,Olares 会自动配置相同端口号的 TCP 和 UDP。

当将 addToTailscaleAcl 字段设置为 true 时,系统会为该端口分配一个随机端口,并自动将其加入到 Tailscale 的 ACL 中。

提示

暴露的端口只能通过本地网络或 Olares 专用网络访问。

Permission

示例

yaml
permission:
  appCache: true
  appData: true
  userData:
    - /Home/

appCache

  • 类型: boolean
  • 可选

是否需要在 Cache 目录创建应用的目录。如需要在部署 yaml 文件中使用.Values.userspace.appCache, appCache 必须设为 true

appData

  • 类型: boolean
  • 可选

是否需要在 Data 目录创建应用的目录。如需要在部署 yaml 中使用.Values.userspace.appData, appData 必须设为 true

userData

  • 类型:string
  • 可选

应用是否需要对用户的 Home 文件夹进行读写权限。列出应用需要访问的用户 Home 下的所有目录。部署 YAML 中配置的所有 userData 目录都必须包含在此处。

sysData

  • 类型:list<map>
  • 可选

声明该应用程序需要访问的 API 列表。

提示

从 1.12.0 版本开始,该权限配置已经被废弃。

示例

yaml
  sysData:
  - group: service.bfl
    dataType: app
    version: v1
    ops:
    - InstallDevApp
  - dataType: legacy_prowlarr
    appName: prowlarr
    port: 9696
    group: api.prowlarr
    version: v2
    ops:
    - All

所有系统 API providers 如下:

GroupversiondataTypeops
service.appstorev1appInstallDevApp, UninstallDevApp
message-disptahcer.system-serverv1eventCreate, List
service.desktopv1ai_messageAIMessage
service.didv1didResolveByDID, ResolveByName, Verify
api.intentv1legacy_apiPOST
service.intentv1intentRegisterIntentFilter, UnregisterIntentFilter, SendIntent, QueryIntent, ListDefaultChoice, CreateDefaultChoice, RemoveDefaultChoice, ReplaceDefaultChoice
service.messagev1messageGetContactLogs, GetMessages, Message
service.notificationv1messageCreate
service.notificationv1tokenCreate
service.searchv1searchInput, Delete, InputRSS, DeleteRSS, QueryRSS, QuestionAI
secret.infisicalv1secretCreateSecret, RetrieveSecret
secret.vaultv1keyList, Info, Sign

provider

  • 类型:list<map>
  • 可选

用于声明本应用需访问的其他应用接口。被访问的应用需在其 provider 部分声明对外开放的 providerName,详见下方 Provider 章节。

此处 appName 应填写目标应用的 nameproviderName 填写目标应用 provider 配置中的 name 字段。podSelectors 字段用于指定本应用中哪些 pod 需要访问目标应用。如果未声明此字段,则默认为本应用的所有 pod 注入 outbound envoy sidecar

调用应用示例

yaml
# 需要调用其他应用的应用,如 sonarr
permission:  
  provider:
  - appName: bazarr
    providerName: bazarr-svc
    podSelectors:
      - matchLabels:
          io.kompose.service: api

被调用应用示例

yaml
# 被调用方应用,如 bazarr
provider:
- name: bazarr-svc
  entrance: bazarr-svc
  paths: ["/*"]
  verbs: ["*"]

Tailscale

  • 类型:map
  • 可选

允许应用在 Tailscale 的ACL(Access Control Lists)中开放指定端口。

示例

yaml
tailscale:
  acls:
  - proto: tcp
    dst:
    - "*:46879"
  - proto: "" # 可选, 如果未指定,则允许使用所有支持的协议
    dst:
    -  "*:4557"

Spec

记录额外的应用信息,主要用于应用商店的展示。

示例

yaml
spec:
  versionName: '10.8.11' 
  # 此 Chart 包含的应用程序的版本。建议将版本号括在引号中。该值对应于 Chart.yaml 文件中的 appVersion 字段。请注意,它与 version 字段无关。

  featuredImage: https://app.cdn.olares.com/appstore/jellyfin/promote_image_1.jpg
  # 当应用在应用市场上推荐时,会显示特色图像。

  promoteImage:
  - https://app.cdn.olares.com/appstore/jellyfin/promote_image_1.jpg
  - https://app.cdn.olares.com/appstore/jellyfin/promote_image_2.jpg
  - https://app.cdn.olares.com/appstore/jellyfin/promote_image_3.jpg
  fullDescription: |
    Jellyfin is the volunteer-built media solution that puts you in control of your media. Stream to any device from your own server, with no strings attached. Your media, your server, your way.
  upgradeDescription: |
    upgrade descriptions
  developer: Jellyfin
  website: https://jellyfin.org/
  doc: https://jellyfin.org/docs/
  sourceCode: https://github.com/jellyfin/jellyfin
  submitter: Olares
  locale:
  - en-US
  - zh-CN
  # 列出该应用支持的语言和地区

  requiredMemory: 256Mi
  requiredDisk: 128Mi
  requiredCpu: 0.5
  # 指定安装和运行应用所需的最少资源。安装应用后,系统将保留这些资源以确保最佳性能。

  limitedDisk: 256Mi
  limitedCpu: 1
  limitedMemory: 512Mi
  # 指定应用的最大资源限制。如果应用超出这些限制,它将暂时暂停,以防止系统过载并确保稳定性。

  legal:
  - text: Community Standards
    url: https://jellyfin.org/docs/general/community-standards/
  - text: Security policy
    url: https://github.com/jellyfin/jellyfin/security/policy
  license:
  - text: GPL-2.0
    url: https://github.com/jellyfin/jellyfin/blob/master/LICENSE
  supportClient:
  - android: https://play.google.com/store/apps/details?id=org.jellyfin.mobile
  - ios: https://apps.apple.com/us/app/jellyfin-mobile/id1480192618

i18n

要在 Olares 应用市场中为应用添加多语言支持:

  1. 在 Olares Application Chart 根目录中创建一个 i18n 文件夹。
  2. i18n 文件夹中,为每个支持的语言环境创建单独的子目录。
  3. 在每个语言环境子目录中,放置 OlaresManifest.yaml 文件的本地化版本。

Olares 应用市场将根据用户的区域设置自动显示相应的 OlaresManifest.yaml 文件的内容。

示例

.
├── Chart.yaml
├── README.md
├── OlaresManifest.yaml
├── i18n
│   ├── en-US
│   │   └── OlaresManifest.yaml
│   └── zh-CN
│       └── OlaresManifest.yaml
├── owners
├── templates
│   └── deployment.yaml
└── values.yaml

目前,你可以为以下字段添加 i18n 内容:

yaml
metadata:
  description:
  title:
spec:
  fullDescription:
  upgradeDescription:

supportArch

  • 类型: list<string>
  • 有效值: amd64, arm64
  • 可选

该字段用于声明应用程序支持的 CPU 架构。目前仅支持 amd64arm64 两种类型。

示例

yaml
spec:
  supportArch:
  - amd64
  - arm64

提示

Olares 目前不支持混合架构的集群。

onlyAdmin

  • 类型: boolean
  • 默认值: false
  • 可选

设置为 true 时,只有管理员可以安装此应用程序。

runAsUser

  • 类型: boolean
  • 可选

当设置为 true 时,Olares 会强制以用户 ID “1000”(非 root 用户)运行应用程序。

Middleware

  • 类型:map
  • 可选

系统提供了高可用的中间件服务,开发者无需重复安装中间件,只需在此填写对应的中间件信息即可,然后可以直接使用应用程序的 deployment YAML 文件中相应的中间件信息。

使用 scripts 字段指定创建数据库后应执行的脚本。此外,使用 extension 字段在数据库中添加相应的扩展名。

提示

MongoDB,MySQL,MariaDB,MinIO,RabbitMQ 需要管理员从 Market 安装后才能被其他应用使用

PostgreSQL

示例

yaml
middleware:
  postgres:
    username: immich
    databases:
    - name: immich
      extensions:
      - vectors
      - earthdistance
      scripts:
      - BEGIN;                                           
      - ALTER DATABASE $databasename SET search_path TO "$user", public, vectors;
      - ALTER SCHEMA vectors OWNER TO $dbusername;
      - COMMIT;
      # 操作系统提供了两个变量 $databasename 和 $dbusername,命令执行时会被 Olares 应用运行时替换。

使用 deployment YAML 中的中间件信息:

yaml
# 对于 PostgreSQL,对应值如下
- env:
  - name: DB_POSTGRESDB_DATABASE # 你在 OlaresManifest 中配置的数据库名称,在 middleware.postgres.databases[i].name 中指定
    value: {{ .Values.postgres.databases.<dbname> }}
  - name: DB_POSTGRESDB_HOST
    value: {{ .Values.postgres.host }}
  - name: DB_POSTGRESDB_PORT
    value: "{{ .Values.postgres.port }}"
  - name: DB_POSTGRESDB_USER
    value: {{ .Values.postgres.username }}
  - name: DB_POSTGRESDB_PASSWORD
    value: {{ .Values.postgres.password }}

Redis

示例

yaml
middleware:
  redis:
    password: password
    namespace: db0

使用 deployment YAML 中的中间件信息:

yaml
# 对于 Redis,对应的值如下
host --> {{ .Values.redis.host }}For Redis, the corresponding value is as follow
port --> "{{ .Values.redis.port }}"
password --> "{{ .Values.redis.password }}"

MongoDB

示例

yaml
middleware:    
  mongodb:
    username: chromium
    databases:
    - name: chromium
      script:
      - 'db.getSiblingDB("$databasename").myCollection.insertOne({ x: 111 });'
      # 请确保每一行都是完整的查询。

使用 deployment YAML 中的中间件信息:

yaml
# 对于 MongoDB,对应的值如下
host --> {{ .Values.mongodb.host }}
port --> "{{ .Values.mongodb.port }}"  # yaml 文件中的端口和密码需要用双引号括起来。
username --> {{ .Values.mongodb.username }}
password --> "{{ .Values.mongodb.password }}" # yaml 文件中的端口和密码需要用双引号括起来。
databases --> "{{ .Values.mongodb.databases }}" # 数据库的值类型是 map。你可以使用 {{ .Values.mongodb.databases.<dbname> }} 获取数据库。 <dbname> 是你在 OlaresManifest 中配置的名称,在 middleware.mongodb.databases[i].name 中指定

MinIO

示例

yaml
middleware: 
  minio:
    username: miniouser
    buckets:
    - name: mybucket

使用 deployment YAML 中的中间件信息:

yaml
# 对于 MinIO,对应的值如下
- env:
  - name: MINIO_ENDPOINT
    value: '{{ .Values.minio.host }}:{{ .Values.minio.port }}'
  - name: MINIO_PORT
    value: "{{ .Values.minio.port }}"
  - name: MINIO_ACCESS_KEY
    value: {{ .Values.minio.username }}
  - name: MINIO_SECRET_KEY
    value: {{ .Values.minio.password }}
  - name: MINIO_BUCKET
    value: {{ .Values.minio.buckets.mybucket }}

RabbitMQ

示例

yaml
middleware: 
  rabbitmq:
    username: rabbitmquser
    vhosts:
    - name: aaa

使用 deployment YAML 中的中间件信息:

yaml
# 对于 RabbitMQ,对应的值如下
- env:
  - name: RABBITMQ_HOST
    value: '{{ .Values.rabbitmq.host }}'
  - name: RABBITMQ_PORT
    value: "{{ .Values.rabbitmq.port }}"
  - name: RABBITMQ_USER
    value: "{{ .Values.rabbitmq.username }}"
  - name: RABBITMQ_PASSWORD
    value: "{{ .Values.rabbitmq.password }}"
  - name: RABBITMQ_VHOST
    value: "{{ .Values.rabbitmq.vhosts.aaa }}"    

user := os.Getenv("RABBITMQ_USER")
password := os.Getenv("RABBITMQ_PASSWORD")
vhost := os.Getenv("RABBITMQ_VHOST")
host := os.Getenv("RABBITMQ_HOST")
portMQ := os.Getenv("RABBITMQ_PORT")
url := fmt.Sprintf("amqp://%s:%s@%s:%s/%s", user, password, host, portMQ, vhost)

MariaDB

示例

yaml
middleware:               
  mariadb:
    username: mariadbclient
    databases:
    - name: aaa

使用 deployment YAML 中的中间件信息:

yaml
# 对于 MariaDB,对应的值如下
- env:
  - name: MDB_HOST
    value: '{{ .Values.mariadb.host }}'
  - name: MDB_PORT
    value: "{{ .Values.mariadb.port }}"
  - name: MDB_USER
    value: "{{ .Values.mariadb.username }}"
  - name: MDB_PASSWORD
    value: "{{ .Values.mariadb.password }}"
  - name: MDB_DB
    value: "{{ .Values.mariadb.databases.aaa }}"

MySQL

示例

yaml
middleware:   
  mysql:
    username: mysqlclient
    databases:
    - name: aaa

使用 deployment YAML 中的中间件信息:

yaml
# 对于 MySQL,对应的值如下
- env:
  - name: MDB_HOST
    value: '{{ .Values.mysql.host }}'
  - name: MDB_PORT
    value: "{{ .Values.mysql.port }}"
  - name: MDB_USER
    value: "{{ .Values.mysql.username }}"
  - name: MDB_PASSWORD
    value: "{{ .Values.mysql.password }}"
  - name: MDB_DB
    value: "{{ .Values.mysql.databases.aaa }}"

Options

在此部分配置系统相关的选项。

policies

  • 类型:map
  • 可选

定义应用子域的详细访问控制。

示例

yaml
options:
  policies:
    - uriRegex: /$
      level: two_factor
      oneTime: false
      validDuration: 3600s
      entranceName: gitlab

clusterScoped

  • 类型:map
  • 可选

是否为 Olares 集群中的所有用户安装此应用程序。

服务端示例

yaml
metadata:
  name: gitlab
options:
  appScope:
    clusterScoped: true
    appRef:
      - gitlabclienta # 客户端的应用名称
      - gitlabclientb

客户端示例

yaml
metadata:
  name: gitlabclienta
options:
  dependencies:
    - name: olares
      version: ">=0.3.6-0"
      type: system
    - name: gitlab # 服务器端的应用名称
      version: ">=0.0.1"
      type: application
      mandatory: true

dependencies

  • 类型:list<map>

如果此应用依赖于其他应用或需要特定操作系统版本,请在此处声明。

如果此应用程序需要依赖其他应用程序才能正确安装,则应将 mandatory 字段设置为 true

示例

yaml
options:
  dependencies:
    - name: olares
      version: ">=1.0.0-0"
      type: system
    - name: mongodb
      version: ">=6.0.0-0"
      type: middleware
      mandatory: true # 如果必须先安装此依赖,请将此字段设为 true。

mobileSupported

  • 类型: boolean
  • 默认值: false
  • 可选

确定应用是否与移动网络浏览器兼容并且可以在移动版本的 Olares 桌面上显示。如果应用程序针对移动网络浏览器进行了优化,请启用此选项。这将使该应用程序在移动版 Olares 桌面上可见并可访问。

示例

yaml
mobileSupported: true

oidc

  • 类型:map
  • 可选

Olares 包含内置的 OpenID Connect 身份验证组件,以简化用户的身份验证。启用此选项可在你的应用中使用 OpenID。

yaml
# yaml 中 OpenID 相关变量
{{ .Values.oidc.client.id }}
{{ .Values.oidc.client.secret }}
{{ .Values.oidc.issuer }}

示例

yaml
oidc:
  enabled: true
  redirectUri: /path/to/uri
  entranceName: navidrome

apiTimeout

  • 类型:int
  • 可选

指定 API 提供程序的超时限制(以秒为单位)。默认值为 15。使用 0 允许无限制的 API 连接。

示例

yaml
apiTimeout: 0

allowedOutboundPorts

  • 类型: map
  • 可选

要求开通以下端口进行非 HTTP 协议的对外访问,例如 SMTP 服务等。

示例

yaml
allowedOutboundPorts:
  - 465
  - 587

allowMultipleInstall

  • 类型: boolean
  • 默认值: false
  • 可选

该应用支持在同一 Olares 集群中部署多个独立实例。此设置对付费应用和共享应用客户端无效。

Envs

在此声明应用运行所需的环境变量,既支持用户手动输入,也可以直接引用已有的系统环境变量值。

提示

该配置需要 Olares OS 版本在 1.12.2 及以上才生效

示例

yaml
envs:
  - envName: ENV_NAME
    # 在部署应用时,该键会被注入为.Values.olaresEnv.ENV_NAME

    required: true
    # 是否为必填项
    # 若为true且未设置default,则用户安装应用时必须填写此值,且修改value时不允许清空

    default: "DEFAULT"
    # 环境变量的默认值,开发者可在编写时提供,用户不可修改。

    type: string
    # 环境变量的类型,目前有int/bool/url/ip/domain/email/string/password。如果声明,会对value进行类型校验

    editable: true    
    # 是否可在应用部署后编辑

    options:
    - title: Windows11
      value: "11"
    - title: Windows10
      value: "10"
    # 允许值列表,此环境变量的值只允许从该列表中选择
    # title为展示给用户的名称,value为实际注入系统的值

    remoteOptions: https://xxx.xxx/xx
    # 提供允许值列表的一个url,response body需为JSON编码的options列表

    regex: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
    # 该环境变量的值必须匹配此正则表达式

    valueFrom:
      envName: OLARES_SYSTEM_CLUSTER_DNS_SERVICE
    # 引用系统环境变量的值。如果采用该方式,将不允许用户手动指定/修改其value
    # 引用后,此环境变量的可声明字段(type,editable)将被系统环境变量的对应属性覆盖,default/value字段也会失效
    
    applyOnChange: true
    # 是否在此环境变量的值变化时自动重新部署应用,使变化生效
    # 若该字段为false,在环境变量变化时,即使停止/启动应用,也不会生效,只有升级/重装会生效
    
    description: "DESCRIPTION"
    # 对环境变量的描述

如需在部署 YAML 文件中使用环境变量的值,只需在相应位置使用 .Values.olaresEnv.ENV_NAME 即可。系统会在应用部署时自动将对应的 olaresEnv 变量注入到 values 中。例如

示例

yaml
BACKEND_MAIL_HOST: "{{ .Values.olaresEnv.MAIL_HOST }}"
BACKEND_MAIL_PORT: "{{ .Values.olaresEnv.MAIL_PORT }}"
BACKEND_MAIL_AUTH_USER: "{{ .Values.olaresEnv.MAIL_AUTH_USER }}"
BACKEND_MAIL_AUTH_PASS: "{{ .Values.olaresEnv.MAIL_AUTH_PASS }}"
BACKEND_MAIL_SECURE: "{{ .Values.olaresEnv.MAIL_SECURE }}"
BACKEND_MAIL_SENDER: "{{ .Values.olaresEnv.MAIL_SENDER }}"

Provider

在此声明本应用向其他应用开放的接口。系统会自动为这些接口生成 Service,让集群内其他应用能够通过内部网络访问。如果其他应用要调用这些接口,需要在 permission 部分申请访问该 provider 的权限。

示例

yaml
provider:
- name: bazarr
  entrance: bazarr-svc   # 该服务的入口名称
  paths: ["/api*"]       # 开放的接口路径,不能只包含通配符 *
  verbs: ["*"]           # 支持post,get,put,delete,patch;"*"表示允许所有方法