Compare commits
12
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6bdd590d1a | ||
|
|
35a52529ff | ||
|
|
61be0e0405 | ||
|
|
6ee15ba226 | ||
|
|
03d9b1156d | ||
|
|
5adbdbdcee | ||
|
|
a9f9703eaa | ||
|
|
854ed6da5f | ||
|
|
214f94f8b5 | ||
|
|
0a7499c373 | ||
|
|
23ad2174ab | ||
|
|
ce2e8543cf |
@@ -0,0 +1,7 @@
|
|||||||
|
Boost Software License - Version 1.0 - August 17th, 2003
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:
|
||||||
|
|
||||||
|
The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
@@ -1,135 +1,82 @@
|
|||||||
# Yonote Onprem Charts
|
# Yonote Helm Chart
|
||||||
|
|
||||||
## Важная информация
|
**Критическое изменение**
|
||||||
|
|
||||||
### Статус веток
|
Данный чарт предназначен только для новых развертываний!
|
||||||
В настоящее время доступны **2 ветки**:
|
|
||||||
|
|
||||||
| Ветка | Версия | Статус |
|
Версия 2.x.x не совместима с предыдущими версиями 1.x.x данного чарта. Если вы попытаетесь использовать этот чарт для обновления существующего развертывания Yonote, это приведет к потере данных.
|
||||||
|--------|---------|--------|
|
|
||||||
| `master` | yonote Helm Charts v1.x.x | Устаревшая |
|
|
||||||
| `2.0.0` | yonote Helm Charts v2.x.x | Актуальная |
|
|
||||||
|
|
||||||
> **⚠️ Важно:** между этими версиями чартов **нет прямого пути миграции**. При обновлении необходимо внимательно выбирать подходящую версию чарта.
|
Руководство по миграции будет предоставлено в ближайшее время.
|
||||||
|
|
||||||
### Рекомендации по развёртыванию
|
|
||||||
- **Новые развёртывания**: необходимо использовать чарты версии `2.0.0`.
|
|
||||||
- **Существующие развёртывания**: продолжайте использовать текущую версию.
|
|
||||||
- **Предстоящие изменения**: в ближайшее время ветка `2.0.0` будет повышена до `master`. Текущая ветка `master` будет перемещена в ветку с пометкой «устаревшая».
|
|
||||||
|
|
||||||
---
|
## Обзор
|
||||||
|
|
||||||
## Быстрый старт
|
Этот Helm chart позволяет развернуть **Yonote** в Kubernetes. Он предоставляет быстрый и простой способ установки, настройки и управления приложением с помощью Helm.
|
||||||
|
|
||||||
|
Мы запускаем сервисы Yonote в отдельных подах, что улучшает отказоустойчивость и стабильность системы. Такой подход позволяет каждому сервису иметь свою собственную среду выполнения и управлять ресурсами более эффективно.
|
||||||
|
|
||||||
|
## Требования
|
||||||
|
|
||||||
|
- Kubernetes cluster
|
||||||
|
- Helm
|
||||||
|
- Ingress Controller (nginx/traefik)
|
||||||
|
|
||||||
|
## Установка
|
||||||
|
|
||||||
|
### 1. Добавление репозиториев Helm
|
||||||
|
|
||||||
|
Перед установкой зависимостей необходимо добавить репозитории, из которых будут загружаться чарты:
|
||||||
|
|
||||||
### Добавление репозитория
|
|
||||||
```bash
|
```bash
|
||||||
helm repo add yonote https://artifacts.wilix.dev/repository/helm-yonote
|
helm repo add dysnix https://dysnix.github.io/charts
|
||||||
|
helm repo add bitnami https://charts.bitnami.com/bitnami
|
||||||
helm repo update
|
helm repo update
|
||||||
```
|
```
|
||||||
|
|
||||||
### Сравнение чартов
|
### 2. Выполните сборку зависимостей Helm chart
|
||||||
|
|
||||||
| Характеристика | yonote-helm-chart |
|
|
||||||
|----------------|-------------------------|
|
|
||||||
| Сервер yonote | ✅ Включён | ✅ Включён |
|
|
||||||
| PostgreSQL | ✅ Включён |
|
|
||||||
| MinIO | ✅ Включён |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Матрица версий
|
|
||||||
|
|
||||||
| Версия чарта | Ветка | Статус | Рекомендуется для |
|
|
||||||
|--------------|-------|--------|-------------------|
|
|
||||||
| v1.x.x | master | Устаревшая | Существующие развёртывания v1 |
|
|
||||||
| v2.x.x | 2.0.0 | Актуальная | Все новые развёртывания |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Уведомление о миграции
|
|
||||||
|
|
||||||
> **Прямого пути обновления между v1.x.x и v2.x.x не существует**
|
|
||||||
|
|
||||||
Если вы сейчас используете чарты v1.x.x:
|
|
||||||
- **НЕ** пытайтесь выполнить обновление на месте до v2.x.x
|
|
||||||
- Путь обновления будет предоставлен в будущем
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Документация
|
|
||||||
|
|
||||||
Подробные параметры конфигурации и значения см. в:
|
|
||||||
|
|
||||||
- [yonote-helm-chart/README.md](./yonote-helm-chart/README.md)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
###
|
|
||||||
|
|
||||||
# yonote Onprem Charts
|
|
||||||
|
|
||||||
## Important Information
|
|
||||||
|
|
||||||
### Branch Status
|
|
||||||
There are currently **2 branches** available:
|
|
||||||
|
|
||||||
| Branch | Version | Status |
|
|
||||||
|--------|---------|--------|
|
|
||||||
| `master` | yonote Helm Charts v1.x.x | Legacy |
|
|
||||||
| `2.0.0` | yonote Helm Charts v2.x.x | Current |
|
|
||||||
|
|
||||||
> **⚠️ Important:** These charts do **not** have a direct migration path between versions. Care must be taken to use the correct chart version for upgrades.
|
|
||||||
|
|
||||||
### Deployment Recommendations
|
|
||||||
- **New deployments**: Must use version `2.0.0` charts
|
|
||||||
- **Existing deployments**: Continue using your current version
|
|
||||||
- **Upcoming changes**: The `2.0.0` branch will be promoted to `master` in the near future. The current `master` will be moved to a deprecated branch.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Quick Start
|
|
||||||
|
|
||||||
### Add Repository
|
|
||||||
```bash
|
```bash
|
||||||
helm repo add yonote https://artifacts.wilix.dev/repository/helm-yonote
|
helm dependency build
|
||||||
helm repo update
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
### 3. Настройка значений
|
||||||
|
|
||||||
## Chart Features
|
Перед развертыванием приложения через Helm необходимо внести валидные значения в файлы values.yaml и secret-values.yaml. Эти файлы содержат параметры конфигурации, которые будут использованы при установке приложения.
|
||||||
|
|
||||||
| Feature | yonote-helm-chart |
|
Настройте необходимые параметры. В файлах values.yaml и secret-values.yaml вы найдете различные секции, каждая из которых соответствует определенной части конфигурации приложения. Внимательно изучите комментарии в этих файлах; они указывают на места, где необходимо внести изменения. Обратите особое внимание на секцию ingress, так как её настройка важна для правильной работы приложения. Вам потребуется заменить или настроить значения в этой секции в соответствии с вашими требованиями.
|
||||||
|---------|------------------------|
|
Также обратите внимание на все строки с доменом example.com — его необходимо заменить на ваше собственное доменное имя, которое будет использоваться для работы приложения. Учтите, что путь в переменных и в конфигурации Ingress менять не нужно, заменяйте только сам домен.
|
||||||
| yonote Server | ✅ Included |
|
|
||||||
| PostgreSQL | ✅ Included |
|
|
||||||
| MinIO | ✅ Included |
|
|
||||||
|
|
||||||
---
|
Более подробно ознакомиться с переменными вы можете по следующей ссылке: https://yo.yonote.ru/share/onprem/doc/peremennye-okruzheniya-mOI8Jl6B05
|
||||||
|
|
||||||
## Version Matrix
|
### 4. Запуск приложения
|
||||||
|
|
||||||
| Chart Version | Branch | Status | Recommended For |
|
После настройки значений выполните команду:
|
||||||
|---------------|--------|--------|-----------------|
|
|
||||||
| v1.x.x | `master` | Legacy | Existing v1 deployments |
|
|
||||||
| v2.x.x | `2.0.0` | Current | All new deployments |
|
|
||||||
|
|
||||||
---
|
```bash
|
||||||
|
helm install app -f values.yaml -f secret-values.yaml -n yonote-onprem .
|
||||||
|
```
|
||||||
|
После выполнения команды начнётся установка приложения и всех дополнительных сервисов к нему. Остаётся только подождать, пока все сервисы запустятся.
|
||||||
|
|
||||||
## Migration Notice
|
### 5. Keycloak
|
||||||
|
|
||||||
> **No direct upgrade path exists between v1.x.x and v2.x.x**
|
Перед первым входом в Yonote необходимо обновить поле **Valid redirect URIs** клиента yonote в области (realm) Yonote в системе Keycloak.
|
||||||
|
|
||||||
If you are currently using v1.x.x charts:
|
Уже существуют две записи, поэтому достаточно просто скопировать их и отредактировать.
|
||||||
- **DO NOT** attempt an in-place upgrade to v2.x.x
|
|
||||||
|
|
||||||
The upgrade path will be provided in the future.
|
Например:
|
||||||
|
|
||||||
---
|
Существующие записи:
|
||||||
|
* http://example.com/*
|
||||||
|
* https://example.com/*
|
||||||
|
|
||||||
## Documentation
|
Добавить следующие:
|
||||||
|
* http://app.example.com/*
|
||||||
|
* https://app.example.com/*
|
||||||
|
* https://app.example.com/auth/oidc.callback/*
|
||||||
|
* https://team.example.com/*
|
||||||
|
|
||||||
For detailed configuration options and values, refer to:
|
Примечание: символы * в URL-адресах являются подстановочными знаками и обозначают любые дополнительные пути после указанного базового URL.
|
||||||
- [yonote-helm-chart/README.md](./yonote-helm-chart/README.md)
|
|
||||||
|
|
||||||
---
|
### Обратная связь
|
||||||
|
|
||||||
|
Если у вас есть вопросы или вам нужна помощь, пишите на email: hello@yonote.ru
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: app
|
||||||
|
repository: https://dysnix.github.io/charts
|
||||||
|
version: 0.3.15
|
||||||
|
- name: app
|
||||||
|
repository: https://dysnix.github.io/charts
|
||||||
|
version: 0.3.15
|
||||||
|
- name: app
|
||||||
|
repository: https://dysnix.github.io/charts
|
||||||
|
version: 0.3.15
|
||||||
|
- name: app
|
||||||
|
repository: https://dysnix.github.io/charts
|
||||||
|
version: 0.3.15
|
||||||
|
- name: app
|
||||||
|
repository: https://dysnix.github.io/charts
|
||||||
|
version: 0.3.15
|
||||||
|
- name: postgres
|
||||||
|
repository: https://groundhog2k.github.io/helm-charts/
|
||||||
|
version: 0.3.9
|
||||||
|
- name: redis
|
||||||
|
repository: https://groundhog2k.github.io/helm-charts/
|
||||||
|
version: 0.7.0
|
||||||
|
- name: minio
|
||||||
|
repository: https://charts.min.io/
|
||||||
|
version: 5.4.0
|
||||||
|
- name: keycloakx
|
||||||
|
repository: https://codecentric.github.io/helm-charts
|
||||||
|
version: 1.3.2
|
||||||
|
digest: sha256:ad0128ad6d526a8946d659481ec5dc19d1faf785919efbcc689a37ae80bc820e
|
||||||
|
generated: "2025-10-30T14:17:59.001901626+03:00"
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
name: yonote-chart
|
name: yonote-chart
|
||||||
version: 1.2.0
|
version: 2.0.0
|
||||||
description:
|
description:
|
||||||
Generic application Helm chart.
|
Generic application Helm chart.
|
||||||
This chart includes multiple dependencies. The base of this chart is derived from the Dynix app chart.
|
This chart includes multiple dependencies. The base of this chart is derived from the Dysnix app chart.
|
||||||
maintainers:
|
maintainers:
|
||||||
- name: Dysnix
|
- name: Dysnix
|
||||||
email: support@dysnix.com
|
email: support@dysnix.com
|
||||||
@@ -35,26 +35,26 @@ dependencies:
|
|||||||
repository: https://dysnix.github.io/charts
|
repository: https://dysnix.github.io/charts
|
||||||
alias: yonote-collaboration
|
alias: yonote-collaboration
|
||||||
|
|
||||||
- name: postgresql
|
- name: postgres
|
||||||
version: "11.6.6"
|
version: "0.3.9"
|
||||||
repository: https://charts.bitnami.com/bitnami
|
repository: https://groundhog2k.github.io/helm-charts/
|
||||||
condition: yonoteDatabase.enabled
|
condition: postgres.enabled
|
||||||
alias: yonoteDatabase
|
alias: postgres
|
||||||
|
|
||||||
- name: redis
|
- name: redis
|
||||||
version: "16.12.1"
|
version: "0.7.0"
|
||||||
repository: https://charts.bitnami.com/bitnami
|
repository: https://groundhog2k.github.io/helm-charts/
|
||||||
condition: yonote-redis.enabled
|
condition: redis.enabled
|
||||||
alias: yonote-redis
|
alias: redis
|
||||||
|
|
||||||
- name: minio
|
- name: minio
|
||||||
version: "12.7.0"
|
version: "5.4.0"
|
||||||
repository: https://charts.bitnami.com/bitnami
|
repository: https://charts.min.io/
|
||||||
condition: minio.enabled
|
condition: minio.enabled
|
||||||
alias: minio
|
alias: minio
|
||||||
|
|
||||||
- name: keycloak
|
- name: keycloakx
|
||||||
version: "14.0.0"
|
version: "1.3.2"
|
||||||
repository: https://charts.bitnami.com/bitnami
|
repository: https://codecentric.github.io/helm-charts
|
||||||
condition: keycloak.enabled
|
condition: keycloak.enabled
|
||||||
alias: keycloak
|
alias: keycloak
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
global:
|
||||||
|
yonote:
|
||||||
|
config:
|
||||||
|
secret:
|
||||||
|
stringData:
|
||||||
|
DATABASE_URL: 'postgres://{{ .Values.postgres.userDatabase.user }}:{{ .Values.postgres.userDatabase.password }}@yonote-database:5432/{{ .Values.postgres.userDatabase.name }}'
|
||||||
|
POSTGRES_PASSWORD: "{{ .Values.postgres.userDatabase.password }}"
|
||||||
|
AWS_ACCESS_KEY_ID: "qwer12314q" # Ваш идентификатор ключа доступа к AWS.
|
||||||
|
AWS_SECRET_ACCESS_KEY: "qwer-12314q-qwersa" # Ваш секретный ключ доступа AWS.
|
||||||
|
OIDC_CLIENT_SECRET: "{{ .Values.keycloak.secrets.secrets.stringData.OIDC_CLIENT_SECRET }}" # Секретный ключ клиента для аутентификации по OpenID Connect (OIDC).
|
||||||
|
SECRET_KEY: "659a8881b186198c3146e316f6dab67df25496534d1fa156d624b037260df688" # Сгенерируйте 32-байтовый случайный ключ в шестнадцатеричном коде. Вам следует использовать `openssl rand -hex 32` в вашем терминале для генерации случайного значения.
|
||||||
|
SMTP_PASSWORD: "1234"
|
||||||
|
UTILS_SECRET: "7bd5e9ac4415dd0dbf6b7721e2a21e9427b268cd0140c7516d13dece5024d479" # Сгенерируйте уникальный случайный ключ. Формат не важен, но вы все равно можете использовать`openssl rand -hex 32` в вашем терминале, чтобы создать это.
|
||||||
|
TELEGRAM_BOT_TOKEN: "1234"
|
||||||
|
UNSPLASH_API_ACCESS_KEY: "a-yGo6HpRP6jNfravx4Bz-oiPrRnH_5-24Xa9ZPlePE"
|
||||||
|
LICENSE_KEY: "" # Обратитесь в отдел продаж для получения
|
||||||
|
SERVICE_WORKER_PUBLIC_KEY: "1234"
|
||||||
|
SERVICE_WORKER_PRIVATE_KEY: "1234"
|
||||||
|
# Генерация ключей (web-push) Service Worker
|
||||||
|
# 1) Установить Node.js и npm
|
||||||
|
# 2) Выполнить команду для генерации ключей
|
||||||
|
# npx web-push generate-vapid-keys
|
||||||
|
# 3) Полученные значения ввести в .env файл (SERVICE_WORKER_PUBLIC_KEY, SERVICE_WORKER_PRIVATE_KEY)
|
||||||
|
|
||||||
|
postgres:
|
||||||
|
settings:
|
||||||
|
superuserPassword: "QQYw4UjOU"
|
||||||
|
userDatabase:
|
||||||
|
password: "wsGZ6kXhr5"
|
||||||
|
|
||||||
|
redis:
|
||||||
|
args:
|
||||||
|
- "--user redis:redis"
|
||||||
|
|
||||||
|
minio:
|
||||||
|
rootPassword: "qwettaas"
|
||||||
|
|
||||||
|
keycloak:
|
||||||
|
database:
|
||||||
|
password: keycloakdbpassword
|
||||||
|
secrets:
|
||||||
|
secrets:
|
||||||
|
stringData:
|
||||||
|
KEYCLOAK_ADMIN_PASSWORD: secret
|
||||||
|
OIDC_CLIENT_SECRET: "iS3jOA3Z7zXBwSN8EzJm36ybz57JNgpR"
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: postgres-init-scripts
|
||||||
|
data:
|
||||||
|
init-keycloak-db.sh: |
|
||||||
|
!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||||
|
CREATE DATABASE {{ .Values.keycloak.database.database }};
|
||||||
|
CREATE USER {{ .Values.keycloak.database.username }} WITH PASSWORD '{{ .Values.keycloak.database.password }}';
|
||||||
|
GRANT ALL PRIVILEGES ON DATABASE keycloak TO {{ .Values.keycloak.database.username }};
|
||||||
|
EOSQL
|
||||||
@@ -13,54 +13,22 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: mc-client
|
- name: mc-client
|
||||||
image: "docker.io/bitnami/minio-client:2024.8.13-debian-12-r0"
|
image: "minio/mc:RELEASE.2025-01-17T23-25-50Z"
|
||||||
command: ["/bin/sh", "-c"]
|
command: ["/bin/sh", "-c"]
|
||||||
args:
|
args:
|
||||||
- |
|
- |
|
||||||
until mc alias set myminio http://yonote-minio:9000 {{ .Values.minio.auth.rootUser }} {{ .Values.minio.auth.rootPassword }}; do
|
until mc alias set myminio http://yonote-minio:9000 {{ .Values.minio.rootUser }} {{ .Values.minio.rootPassword }}; do
|
||||||
echo "Waiting for MinIO to be ready..."
|
echo "Waiting for MinIO to be ready..."
|
||||||
sleep 5
|
sleep 5
|
||||||
done
|
done
|
||||||
echo "MinIO is ready and alias is set."
|
echo "MinIO is ready and alias is set."
|
||||||
|
|
||||||
# Создание пользователя
|
|
||||||
if ! mc admin user add myminio {{ .Values.minio.customUser }} {{ .Values.minio.customAccessKey }}; then
|
|
||||||
echo "User {{ .Values.minio.customUser }} already exists or failed to create."
|
|
||||||
else
|
|
||||||
echo "User {{ .Values.minio.customUser }} created successfully."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Назначение политики для нового пользователя
|
|
||||||
cat <<EOF > /tmp/minio-user-policy.json
|
|
||||||
{
|
|
||||||
"Version": "2012-10-17",
|
|
||||||
"Statement": [
|
|
||||||
{
|
|
||||||
"Sid": "VisualEditor",
|
|
||||||
"Effect": "Allow",
|
|
||||||
"Action": [
|
|
||||||
"s3:DeleteObject",
|
|
||||||
"s3:GetObject",
|
|
||||||
"s3:PutObject"
|
|
||||||
],
|
|
||||||
"Resource": [
|
|
||||||
"arn:aws:s3:::yonote-bucket/*"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
echo "User policy JSON file created."
|
|
||||||
|
|
||||||
mc admin policy create myminio yonote-policy /tmp/minio-user-policy.json
|
|
||||||
echo "User policy created and applied."
|
|
||||||
|
|
||||||
# Создание бакета
|
# Создание бакета
|
||||||
if ! mc ls myminio/yonote-bucket; then
|
if ! mc ls myminio/{{ .Values.global.yonote.config.plain.data.AWS_S3_UPLOAD_BUCKET_NAME }}; then
|
||||||
mc mb myminio/yonote-bucket
|
mc mb myminio/{{ .Values.global.yonote.config.plain.data.AWS_S3_UPLOAD_BUCKET_NAME }}
|
||||||
echo "Bucket yonote-bucket created successfully."
|
echo "Bucket {{ .Values.global.yonote.config.plain.data.AWS_S3_UPLOAD_BUCKET_NAME }} created successfully."
|
||||||
else
|
else
|
||||||
echo "Bucket yonote-bucket already exists."
|
echo "Bucket {{ .Values.global.yonote.config.plain.data.AWS_S3_UPLOAD_BUCKET_NAME }} already exists."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Установка политик для бакета
|
# Установка политик для бакета
|
||||||
@@ -79,7 +47,7 @@ spec:
|
|||||||
"s3:GetBucketLocation"
|
"s3:GetBucketLocation"
|
||||||
],
|
],
|
||||||
"Resource": [
|
"Resource": [
|
||||||
"arn:aws:s3:::yonote-bucket"
|
"arn:aws:s3:::{{ .Values.global.yonote.config.plain.data.AWS_S3_UPLOAD_BUCKET_NAME }}"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -93,7 +61,7 @@ spec:
|
|||||||
"s3:GetObject"
|
"s3:GetObject"
|
||||||
],
|
],
|
||||||
"Resource": [
|
"Resource": [
|
||||||
"arn:aws:s3:::yonote-bucket/*"
|
"arn:aws:s3:::{{ .Values.global.yonote.config.plain.data.AWS_S3_UPLOAD_BUCKET_NAME }}/*"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -101,12 +69,9 @@ spec:
|
|||||||
EOF
|
EOF
|
||||||
echo "Bucket policy JSON file created."
|
echo "Bucket policy JSON file created."
|
||||||
|
|
||||||
mc anonymous set-json /tmp/minio-bucket-policy.json myminio/yonote-bucket
|
mc anonymous set-json /tmp/minio-bucket-policy.json myminio/{{ .Values.global.yonote.config.plain.data.AWS_S3_UPLOAD_BUCKET_NAME }}
|
||||||
echo "Bucket policy applied."
|
echo "Bucket policy applied."
|
||||||
|
|
||||||
mc admin policy attach myminio yonote-policy --user={{ .Values.minio.customUser }}
|
|
||||||
echo "Policy attached to user {{ .Values.minio.customUser }}."
|
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
memory: "128Mi"
|
memory: "128Mi"
|
||||||
@@ -7,6 +7,7 @@ global:
|
|||||||
config:
|
config:
|
||||||
plain:
|
plain:
|
||||||
data:
|
data:
|
||||||
|
DEBUG: debug
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
FORCE_HTTPS: "false"
|
FORCE_HTTPS: "false"
|
||||||
PGSSLMODE: disable # Отключает SSL подключение к базе данных. Уберите эту строку, если вы используете SSL подключение к PostgreSQL
|
PGSSLMODE: disable # Отключает SSL подключение к базе данных. Уберите эту строку, если вы используете SSL подключение к PostgreSQL
|
||||||
@@ -15,7 +16,7 @@ global:
|
|||||||
BIND_HOST: 0.0.0.0 # Хост по умолчанию
|
BIND_HOST: 0.0.0.0 # Хост по умолчанию
|
||||||
PORT: "3000" # Порт по умолчанию
|
PORT: "3000" # Порт по умолчанию
|
||||||
|
|
||||||
REDIS_URL: redis://yonote-redis-master:6379
|
REDIS_URL: redis://yonote-redis:6379
|
||||||
|
|
||||||
DEFAULT_LANGUAGE: ru_RU # Язык по умолчанию
|
DEFAULT_LANGUAGE: ru_RU # Язык по умолчанию
|
||||||
ENABLE_UPDATES: "false"
|
ENABLE_UPDATES: "false"
|
||||||
@@ -23,8 +24,10 @@ global:
|
|||||||
AI_URL: "1234"
|
AI_URL: "1234"
|
||||||
AI_API_KEY: "1234"
|
AI_API_KEY: "1234"
|
||||||
|
|
||||||
URL: 'https://app.{{ .Values.global.yonote.baseListenAddress }}' # Базовый url приложения
|
URL: 'https://app.{{ .Values.global.yonote.baseListenAddress }}' # Базовый url приложения
|
||||||
COLLABORATION_URL: 'wss://app.{{ .Values.global.yonote.baseListenAddress }}' # Cервер, для нормальной работы это не нужно устанавливать
|
COLLABORATION_URL: 'wss://app.{{ .Values.global.yonote.baseListenAddress }}' # Cервер, для нормальной работы это не нужно устанавливать
|
||||||
|
|
||||||
|
#DEPLOYMENT: 'hosted'
|
||||||
|
|
||||||
OIDC_DISPLAY_NAME: email
|
OIDC_DISPLAY_NAME: email
|
||||||
OIDC_SCOPES: openid email
|
OIDC_SCOPES: openid email
|
||||||
@@ -35,7 +38,7 @@ global:
|
|||||||
OIDC_USERINFO_URI: 'https://auth.example.com/realms/yonote/protocol/openid-connect/userinfo' # URL для получения информации о пользователе. Используется для получения данных профиля пользователя на основе его токена.
|
OIDC_USERINFO_URI: 'https://auth.example.com/realms/yonote/protocol/openid-connect/userinfo' # URL для получения информации о пользователе. Используется для получения данных профиля пользователя на основе его токена.
|
||||||
|
|
||||||
AWS_S3_ACL: private
|
AWS_S3_ACL: private
|
||||||
AWS_S3_UPLOAD_BUCKET_URL: 'https://api-s3.example.com' # Адрес API S3 хранилища
|
AWS_S3_UPLOAD_BUCKET_URL: 'https://s3.example.com' # Адрес API S3 хранилища
|
||||||
AWS_S3_UPLOAD_BUCKET_NAME: yonote-bucket # Имя хранилища
|
AWS_S3_UPLOAD_BUCKET_NAME: yonote-bucket # Имя хранилища
|
||||||
AWS_REGION: "RU"
|
AWS_REGION: "RU"
|
||||||
AWS_S3_UPLOAD_MAX_SIZE: "226214400" # Максимальный размер хранилища
|
AWS_S3_UPLOAD_MAX_SIZE: "226214400" # Максимальный размер хранилища
|
||||||
@@ -53,11 +56,11 @@ global:
|
|||||||
|
|
||||||
RESERVED_SUBDOMAINS: about,account,admin,advertising,api,app,assets,archive,beta,billing,blog,cache,cdn,code,community,dashboard,developer,developers,forum,help,home,http,https,imap,localhost,mail,marketing,mobile,multiplayer,new,news,newsletter,ns1,ns2,ns3,ns4,password,profile,realtime,sandbox,script,scripts,setup,signin,signup,site,smtp,support,status,static,stats,test,update,updates,ws,wss,web,websockets,www,www1,www2,www3,www4
|
RESERVED_SUBDOMAINS: about,account,admin,advertising,api,app,assets,archive,beta,billing,blog,cache,cdn,code,community,dashboard,developer,developers,forum,help,home,http,https,imap,localhost,mail,marketing,mobile,multiplayer,new,news,newsletter,ns1,ns2,ns3,ns4,password,profile,realtime,sandbox,script,scripts,setup,signin,signup,site,smtp,support,status,static,stats,test,update,updates,ws,wss,web,websockets,www,www1,www2,www3,www4
|
||||||
|
|
||||||
SMTP_HOST: ""
|
SMTP_HOST: "smtp.wilix.dev"
|
||||||
SMTP_USERNAME: ""
|
SMTP_USERNAME: ""
|
||||||
SMTP_FROM_EMAIL: ""
|
SMTP_FROM_EMAIL: ""
|
||||||
SMTP_REPLY_EMAIL: ""
|
SMTP_REPLY_EMAIL: ""
|
||||||
SMTP_PORT: ""
|
SMTP_PORT: "456"
|
||||||
SMTP_SECURE: "" # connection will be upgraded: https://nodemailer.com/smtp/
|
SMTP_SECURE: "" # connection will be upgraded: https://nodemailer.com/smtp/
|
||||||
SMTP_REQUIRE_TLS: ""
|
SMTP_REQUIRE_TLS: ""
|
||||||
|
|
||||||
@@ -75,58 +78,58 @@ ingress:
|
|||||||
namespace: yonote-onprem
|
namespace: yonote-onprem
|
||||||
ingressClassName: traefik
|
ingressClassName: traefik
|
||||||
tls:
|
tls:
|
||||||
secretName: "you_tls_secret"
|
secretName: "example.com-tls"
|
||||||
hosts:
|
hosts:
|
||||||
- "app.example.com"
|
- "app.example.com"
|
||||||
- "team.example.com"
|
- "team.example.com"
|
||||||
rules:
|
rules:
|
||||||
- host: "app.example.com"
|
- host: "app.example.com"
|
||||||
paths:
|
paths:
|
||||||
- path: /
|
- path: /
|
||||||
pathType: Prefix
|
pathType: Prefix
|
||||||
service:
|
service:
|
||||||
name: yonote-web
|
name: yonote-web
|
||||||
port: 80
|
port: 80
|
||||||
- path: /realtime
|
- path: /realtime
|
||||||
pathType: Prefix
|
pathType: Prefix
|
||||||
service:
|
service:
|
||||||
name: yonote-websockets
|
name: yonote-websockets
|
||||||
port: 80
|
port: 80
|
||||||
- path: /whiteboard
|
- path: /whiteboard
|
||||||
pathType: Prefix
|
pathType: Prefix
|
||||||
service:
|
service:
|
||||||
name: yonote-whiteboard
|
name: yonote-whiteboard
|
||||||
port: 80
|
port: 80
|
||||||
- path: /collaboration
|
- path: /collaboration
|
||||||
pathType: Prefix
|
pathType: Prefix
|
||||||
service:
|
service:
|
||||||
name: yonote-collaboration
|
name: yonote-collaboration
|
||||||
port: 80
|
port: 80
|
||||||
- host: "team.example.com"
|
- host: "team.example.com"
|
||||||
paths:
|
paths:
|
||||||
- path: /
|
- path: /
|
||||||
pathType: Prefix
|
pathType: Prefix
|
||||||
service:
|
service:
|
||||||
name: yonote-web
|
name: yonote-web
|
||||||
port: 80
|
port: 80
|
||||||
- path: /realtime
|
- path: /realtime
|
||||||
pathType: Prefix
|
pathType: Prefix
|
||||||
service:
|
service:
|
||||||
name: yonote-websockets
|
name: yonote-websockets
|
||||||
port: 80
|
port: 80
|
||||||
- path: /whiteboard
|
- path: /whiteboard
|
||||||
pathType: Prefix
|
pathType: Prefix
|
||||||
service:
|
service:
|
||||||
name: yonote-whiteboard
|
name: yonote-whiteboard
|
||||||
port: 80
|
port: 80
|
||||||
- path: /collaboration
|
- path: /collaboration
|
||||||
pathType: Prefix
|
pathType: Prefix
|
||||||
service:
|
service:
|
||||||
name: yonote-collaboration
|
name: yonote-collaboration
|
||||||
port: 80
|
port: 80
|
||||||
|
|
||||||
annotations:
|
#annotations:
|
||||||
# cert-manager.io/cluster-issuer: letsencrypt.example.com # Если используете
|
# cert-manager.io/cluster-issuer: # Если используете
|
||||||
|
|
||||||
yonote-web:
|
yonote-web:
|
||||||
fullnameOverride: yonote-web
|
fullnameOverride: yonote-web
|
||||||
@@ -136,7 +139,7 @@ yonote-web:
|
|||||||
image:
|
image:
|
||||||
registry: images.updates.yonote.ru
|
registry: images.updates.yonote.ru
|
||||||
repository: yonote
|
repository: yonote
|
||||||
tag: 1.45.33-1
|
tag: 1.22.11
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
command: ["/bin/sh", "-c"]
|
command: ["/bin/sh", "-c"]
|
||||||
@@ -144,7 +147,7 @@ yonote-web:
|
|||||||
|
|
||||||
initContainers:
|
initContainers:
|
||||||
- name: yonote-migration
|
- name: yonote-migration
|
||||||
image: images.updates.yonote.ru/yonote:1.45.33-1
|
image: images.updates.yonote.ru/yonote:1.22.11
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
command:
|
command:
|
||||||
- /bin/sh
|
- /bin/sh
|
||||||
@@ -220,7 +223,7 @@ yonote-websocket:
|
|||||||
image:
|
image:
|
||||||
registry: images.updates.yonote.ru
|
registry: images.updates.yonote.ru
|
||||||
repository: yonote
|
repository: yonote
|
||||||
tag: 1.45.33-1
|
tag: 1.22.11
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
command: ["/bin/sh", "-c"]
|
command: ["/bin/sh", "-c"]
|
||||||
@@ -289,7 +292,7 @@ yonote-whiteboard:
|
|||||||
image:
|
image:
|
||||||
registry: images.updates.yonote.ru
|
registry: images.updates.yonote.ru
|
||||||
repository: yonote
|
repository: yonote
|
||||||
tag: 1.45.33-1
|
tag: 1.22.11
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
command: ["/bin/sh", "-c"]
|
command: ["/bin/sh", "-c"]
|
||||||
@@ -358,7 +361,7 @@ yonote-worker:
|
|||||||
image:
|
image:
|
||||||
registry: images.updates.yonote.ru
|
registry: images.updates.yonote.ru
|
||||||
repository: yonote
|
repository: yonote
|
||||||
tag: 1.45.33-1
|
tag: 1.22.11
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
command: ["/bin/sh", "-c"]
|
command: ["/bin/sh", "-c"]
|
||||||
@@ -427,7 +430,7 @@ yonote-collaboration:
|
|||||||
image:
|
image:
|
||||||
registry: images.updates.yonote.ru
|
registry: images.updates.yonote.ru
|
||||||
repository: yonote
|
repository: yonote
|
||||||
tag: 1.45.33-1
|
tag: 1.22.11
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
command: ["/bin/sh", "-c"]
|
command: ["/bin/sh", "-c"]
|
||||||
@@ -488,104 +491,106 @@ yonote-collaboration:
|
|||||||
path: /_health
|
path: /_health
|
||||||
port: app
|
port: app
|
||||||
|
|
||||||
yonoteDatabase:
|
postgres:
|
||||||
enabled: true
|
enabled: true
|
||||||
global:
|
#settings:
|
||||||
postgresql:
|
# Default postgres
|
||||||
auth:
|
# superuser:
|
||||||
database: "yonote"
|
|
||||||
username: "yonote"
|
userDatabase:
|
||||||
name: yonote-database
|
name: yonote
|
||||||
|
user: yonote
|
||||||
|
|
||||||
fullnameOverride: yonote-database
|
fullnameOverride: yonote-database
|
||||||
nameOverride: yonote-database
|
nameOverride: yonote-database
|
||||||
|
|
||||||
primary:
|
storage:
|
||||||
persistence:
|
requestedSize: 5Gi
|
||||||
size: 5Gi
|
className: ""
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: 2
|
|
||||||
memory: 8Gi
|
|
||||||
requests:
|
|
||||||
cpu: 500m
|
|
||||||
memory: 512Mi
|
|
||||||
|
|
||||||
extraVolumes:
|
resources:
|
||||||
- name: init-scripts
|
limits:
|
||||||
configMap:
|
cpu: 2
|
||||||
name: postgres-init-scripts
|
memory: 5Gi
|
||||||
|
requests:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 512Mi
|
||||||
|
|
||||||
extraVolumeMounts:
|
extraScripts: postgres-init-scripts
|
||||||
- name: init-scripts
|
|
||||||
mountPath: /docker-entrypoint-initdb.d
|
|
||||||
readOnly: true
|
|
||||||
|
|
||||||
yonote-redis:
|
redis:
|
||||||
enabled: true
|
enabled: true
|
||||||
fullnameOverride: yonote-redis
|
fullnameOverride: yonote-redis
|
||||||
nameOverride: redis
|
nameOverride: redis
|
||||||
architecture: standalone
|
|
||||||
image:
|
|
||||||
tag: 7.2.0-debian-11-r0
|
|
||||||
|
|
||||||
auth:
|
storage:
|
||||||
enabled: false
|
requestedSize: 1Gi
|
||||||
|
className: ""
|
||||||
master:
|
resources:
|
||||||
persistence:
|
limits:
|
||||||
size: 5Gi
|
cpu: 1
|
||||||
resources:
|
memory: 4Gi
|
||||||
limits:
|
requests:
|
||||||
cpu: 1
|
cpu: 500m
|
||||||
memory: 4Gi
|
memory: 512Mi
|
||||||
requests:
|
|
||||||
cpu: 500m
|
|
||||||
memory: 512Mi
|
|
||||||
|
|
||||||
minio:
|
minio:
|
||||||
enabled: true
|
enabled: true
|
||||||
name: minio
|
name: minio
|
||||||
fullnameOverride: yonote-minio
|
fullnameOverride: yonote-minio
|
||||||
customUser: yonote
|
|
||||||
nameOverride: yonote-minio
|
nameOverride: yonote-minio
|
||||||
auth:
|
mode: standalone
|
||||||
rootUser: admin
|
rootUser: admin
|
||||||
|
|
||||||
image:
|
policies:
|
||||||
tag: 2024.8.3-debian-12-r1
|
- name: yonote_user_policy
|
||||||
|
statements:
|
||||||
|
- resources:
|
||||||
|
- 'arn:aws:s3:::yonote-bucket/*'
|
||||||
|
actions:
|
||||||
|
- "s3:GetObject"
|
||||||
|
- "s3:PutObject"
|
||||||
|
- "s3:DeleteObject"
|
||||||
|
|
||||||
|
users:
|
||||||
|
- accessKey: qwer12314q
|
||||||
|
secretKey: qwer-12314q-qwersa
|
||||||
|
policy: yonote_user_policy
|
||||||
|
|
||||||
persistence:
|
persistence:
|
||||||
enabled: true
|
enabled: true
|
||||||
size: 5Gi
|
annotations:
|
||||||
|
helm.sh/resource-policy: keep
|
||||||
|
size: 1Gi
|
||||||
|
storageClass: ""
|
||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
hostname: 's3.example.com'
|
hosts:
|
||||||
|
- s3.example.com
|
||||||
ingressClassName: traefik
|
ingressClassName: traefik
|
||||||
path: '/'
|
path: '/'
|
||||||
pathType: ImplementationSpecific
|
|
||||||
annotations:
|
annotations:
|
||||||
kubernetes.io/ingress.class: traefik
|
kubernetes.io/ingress.class: traefik
|
||||||
# cert-manager.io/cluster-issuer: letsencrypt.example.com # Если используете
|
#cert-manager.io/cluster-issuer: letsencrypt.rancher.wilix.dev # Если используете
|
||||||
extraTls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- "s3.example.com"
|
- "s3.example.com"
|
||||||
secretName: "you_tls_secret"
|
secretName: "example.com-tls"
|
||||||
|
|
||||||
apiIngress:
|
consoleIngress:
|
||||||
enabled: true
|
enabled: true
|
||||||
hostname: 'api-s3.example.com'
|
hosts:
|
||||||
|
- s3-console.example.com
|
||||||
ingressClassName: traefik
|
ingressClassName: traefik
|
||||||
path: '/'
|
path: '/'
|
||||||
pathType: ImplementationSpecific
|
|
||||||
servicePort: minio-api
|
|
||||||
annotations:
|
annotations:
|
||||||
kubernetes.io/ingress.class: traefik
|
kubernetes.io/ingress.class: traefik
|
||||||
# cert-manager.io/cluster-issuer: letsencrypt.example.com # Если используете
|
#cert-manager.io/cluster-issuer: letsencrypt.rancher.wilix.dev # Если используете
|
||||||
extraTls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- "api-s3.example.com"
|
- "s3-console.example.com"
|
||||||
secretName: "api-s3.example.com"
|
secretName: "example.com-tls"
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
@@ -599,36 +604,53 @@ mcJob:
|
|||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
keycloak:
|
keycloak:
|
||||||
|
enabled: true
|
||||||
fullnameOverride: yonote-keycloak
|
fullnameOverride: yonote-keycloak
|
||||||
nameOverride: yonote-keycloak
|
nameOverride: yonote-keycloak
|
||||||
|
|
||||||
auth:
|
image:
|
||||||
adminUser: root
|
repository: images.updates.yonote.ru/yonote-keycloak
|
||||||
|
tag: latest
|
||||||
|
|
||||||
proxy: "edge"
|
args:
|
||||||
|
- start-dev --spi-login-protocol-openid-connect-legacy-logout-redirect-uri=true --import-realm
|
||||||
|
|
||||||
command:
|
cache:
|
||||||
- /bin/bash
|
stack: custom
|
||||||
- -c
|
|
||||||
- |
|
|
||||||
/opt/bitnami/keycloak/bin/kc.sh start --import-realm --hostname={{ .Values.ingress.hostname }} --hostname-strict=true --hostname-strict-backchannel=true --https-protocols=TLSv1.2 --proxy=edge --db postgres --db-url-host yonote-database --db-username postgres --db-password="$(DB_PASSWORD)"
|
|
||||||
|
|
||||||
extraEnvVars:
|
proxy:
|
||||||
- name: DB_PASSWORD
|
enabled: "false"
|
||||||
|
|
||||||
|
extraEnv: |
|
||||||
|
- name: KEYCLOAK_ADMIN
|
||||||
|
value: root
|
||||||
|
- name: KEYCLOAK_ADMIN_PASSWORD
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: yonote-database
|
name: {{ include "keycloak.fullname" . }}-secrets
|
||||||
key: postgres-password
|
key: KEYCLOAK_ADMIN_PASSWORD
|
||||||
|
- name: OIDC_CLIENT_SECRET
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ include "keycloak.fullname" . }}-secrets
|
||||||
|
key: OIDC_CLIENT_SECRET
|
||||||
|
- name: BASENAME_FOR_SUBDOMAIN
|
||||||
|
value: example.com
|
||||||
|
- name: KC_HOSTNAME_STRICT
|
||||||
|
value: "false"
|
||||||
|
- name: KC_HOSTNAME
|
||||||
|
value: auth.example.com
|
||||||
|
- name: KC_HOSTNAME_STRICT_HTTPS
|
||||||
|
value: "false"
|
||||||
|
- name: KC_HOSTNAME_PATH
|
||||||
|
value: "/"
|
||||||
|
- name: KC_HTTP_ENABLED
|
||||||
|
value: "true"
|
||||||
|
- name: PROXY_ADDRESS_FORWARDING
|
||||||
|
value: "true"
|
||||||
|
|
||||||
extraVolumes:
|
http:
|
||||||
- name: realm-export
|
relativePath: "/"
|
||||||
configMap:
|
|
||||||
name: realm-export
|
|
||||||
|
|
||||||
extraVolumeMounts:
|
|
||||||
- name: realm-export
|
|
||||||
mountPath: /opt/bitnami/keycloak/data/import/realm-export.json
|
|
||||||
subPath: realm-export.json
|
|
||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -637,20 +659,21 @@ keycloak:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- "auth.example.com"
|
- "auth.example.com"
|
||||||
secretName: "auth.example.com-tls"
|
secretName: "example.com-tls"
|
||||||
annotations:
|
annotations:
|
||||||
kubernetes.io/ingress.class: traefik
|
kubernetes.io/ingress.class: traefik
|
||||||
# cert-manager.io/cluster-issuer: letsencrypt.example.com #Если используете
|
#cert-manager.io/cluster-issuer: #Если используете
|
||||||
|
|
||||||
rules:
|
rules:
|
||||||
- host: "auth.example.com"
|
- host: "auth.example.com"
|
||||||
paths:
|
paths:
|
||||||
- path: /
|
- path: /
|
||||||
pathType: Prefix
|
pathType: ImplementationSpecific
|
||||||
service:
|
service:
|
||||||
name: yonote-keycloak
|
name: yonote-keycloak
|
||||||
port: http
|
port: http
|
||||||
- path: /admin
|
- path: /admin
|
||||||
pathType: Prefix
|
pathType: ImplementationSpecific
|
||||||
service:
|
service:
|
||||||
name: yonote-keycloak
|
name: yonote-keycloak
|
||||||
port: http
|
port: http
|
||||||
@@ -663,19 +686,27 @@ keycloak:
|
|||||||
cpu: 250m
|
cpu: 250m
|
||||||
memory: 256Mi
|
memory: 256Mi
|
||||||
|
|
||||||
postgresql:
|
dbchecker:
|
||||||
enabled: false
|
enabled: "true"
|
||||||
|
|
||||||
externalDatabase:
|
database:
|
||||||
host: jdbc:postgresql://yonote-database
|
vendor: postgres
|
||||||
|
hostname: yonote-database
|
||||||
port: 5432
|
port: 5432
|
||||||
user: postgres
|
|
||||||
database: keycloak
|
database: keycloak
|
||||||
|
username: keycloak
|
||||||
|
|
||||||
livenessProbe:
|
livenessProbe: |
|
||||||
|
httpGet:
|
||||||
|
path: '{{ trimSuffix "/" .Values.http.relativePath}}/'
|
||||||
|
port: http
|
||||||
initialDelaySeconds: 240
|
initialDelaySeconds: 240
|
||||||
timeoutSeconds: 5
|
timeoutSeconds: 5
|
||||||
|
|
||||||
readinessProbe:
|
# Readiness probe configuration
|
||||||
|
readinessProbe: |
|
||||||
|
httpGet:
|
||||||
|
path: '{{ trimSuffix "/" .Values.http.relativePath}}/realms/master'
|
||||||
|
port: http
|
||||||
initialDelaySeconds: 120
|
initialDelaySeconds: 120
|
||||||
timeoutSeconds: 5
|
timeoutSeconds: 1
|
||||||
@@ -1,145 +0,0 @@
|
|||||||
########## Обязательные переменные ##########
|
|
||||||
|
|
||||||
# Система Yonote поставляется с несколькими дополнительными сервисами:
|
|
||||||
# - PostgreSQL - основная БД для хранения данных
|
|
||||||
# - Keycloak - сервер авторизации
|
|
||||||
# - Minio - S3 файловое хранилище
|
|
||||||
# - Redis - key-value хранилище
|
|
||||||
# - Nginx - используется как reverse-proxy для всех сервисов
|
|
||||||
#
|
|
||||||
# Мы рекомендуем для каждого сервиса (кроме nginx) создать поддомены:
|
|
||||||
# Если мы хотим, чтобы Yonote был доступен по адресу domain.ru -> 80.11.121.12 (пример),
|
|
||||||
# то необходимо также создать следующие DNS записи для корректной работы системы:
|
|
||||||
# - domain.ru -> 80.11.121.12
|
|
||||||
# - auth.domain.ru -> domain.ru
|
|
||||||
# - s3.domain.ru -> domain.ru
|
|
||||||
#
|
|
||||||
# Если вы запускаете сервис с HTTPS,
|
|
||||||
# необходимо соответсвенно поменять на https:// и wss://
|
|
||||||
|
|
||||||
### Keycloak
|
|
||||||
AUTH_VERSION=19-0.1.0
|
|
||||||
|
|
||||||
# Адрес сервера авторизации (с http/https)
|
|
||||||
KC_YNT_HOST=auth.domain.ru
|
|
||||||
KC_YNT_HOST_PROTOCOL=http://
|
|
||||||
KC_YNT_URL=${KC_YNT_HOST_PROTOCOL}${KC_YNT_HOST}
|
|
||||||
# Подключение к базе данных (база создается автоматически)
|
|
||||||
KC_DB=keycloak
|
|
||||||
KC_DB_USERNAME=keycloak
|
|
||||||
KC_DB_PASSWORD=keycloak
|
|
||||||
|
|
||||||
# Адрес сервера S3/Minio (с http/https)
|
|
||||||
MINIO_YNT_HOST=s3.domain.ru
|
|
||||||
MINIO_ADMIN_YNT_HOST=s3-admin.domain.ru
|
|
||||||
MINIO_YNT_HOST_PROTOCOL=http://
|
|
||||||
MINIO_YNT_URL=${MINIO_YNT_HOST}${MINIO_YNT_HOST_PROTOCOL}
|
|
||||||
# Логин и пароль для администратора S3 (пользователь создается автоматически)
|
|
||||||
MINIO_ADMIN_USERNAME=admin
|
|
||||||
MINIO_ADMIN_PASSWORD=adminadmin
|
|
||||||
|
|
||||||
# Адрес для Yonote (укажите домен или адрес сервера)
|
|
||||||
BASENAME_FOR_SUBDOMAIN=domain.ru
|
|
||||||
YNT_HTTP_PROTOCOL=http://
|
|
||||||
YNT_WEBSOCKET_PROTOCOL=ws://
|
|
||||||
|
|
||||||
### OAuth/OIDC (Keycloak) - сервер авторизации
|
|
||||||
KC_USERNAME=admin
|
|
||||||
KC_PASSWORD=adminadmin
|
|
||||||
|
|
||||||
### S3 совместимое хранилище (Minio)
|
|
||||||
MINIO_ACCESS_KEY_ID=yonote
|
|
||||||
MINIO_SECRET_ACCESS_KEY=service-account-pass
|
|
||||||
|
|
||||||
### Yonote
|
|
||||||
APP_VERSION=1.45.33-1
|
|
||||||
|
|
||||||
# Данные для подключения к БД (БД и пользователь будут созданны автоматически)
|
|
||||||
YNT_DB_NAME=yonote
|
|
||||||
YNT_DB_USER=postgres
|
|
||||||
YNT_DB_PASSWORD=azsxdc
|
|
||||||
|
|
||||||
# Максимальный размер одно файла для загрузки в хранилище (в байтах)
|
|
||||||
AWS_S3_UPLOAD_MAX_SIZE=226214400
|
|
||||||
# Проксирование загузки/выгрузки на S3-хранилище, false (выключено) по умолчанию
|
|
||||||
S3_PROXY_ENABLED=false
|
|
||||||
# Размер части для Multipart загрузки, значение в мегабайтах, 1GB (1000) по умолчанию
|
|
||||||
S3_MULTIPART_PART_SIZE=1000
|
|
||||||
|
|
||||||
# Ключ шифрования (32 байта). Рекомендуем использовать команду ниже для генерации ключа:
|
|
||||||
# `openssl rand -hex 32`
|
|
||||||
# храните данный ключ в надежном месте
|
|
||||||
SECRET_KEY=
|
|
||||||
|
|
||||||
# Уникальный random ключ. Используется для различных крипто-функций,
|
|
||||||
# рекомендуем так же использовать команду ниже для генерации ключа:
|
|
||||||
# `openssl rand -hex 32`
|
|
||||||
UTILS_SECRET=
|
|
||||||
|
|
||||||
# SMTP сервер
|
|
||||||
SMTP_HOST=
|
|
||||||
SMTP_PORT=
|
|
||||||
SMTP_USERNAME=
|
|
||||||
SMTP_PASSWORD=
|
|
||||||
SMTP_FROM_EMAIL=
|
|
||||||
SMTP_REPLY_EMAIL=
|
|
||||||
SMTP_TLS_CIPHERS=
|
|
||||||
SMTP_SECURE=true
|
|
||||||
|
|
||||||
# Лицензионный ключ
|
|
||||||
# Для получения, обратитесь в отдел продаж hello@yonote.ru
|
|
||||||
LICENSE_KEY=
|
|
||||||
LICENSE_EXP_REMINDER=
|
|
||||||
|
|
||||||
############ OPTIONAL ################
|
|
||||||
|
|
||||||
# Производить редирект на HTTPS если запрос пришел на HTTP
|
|
||||||
FORCE_HTTPS=false
|
|
||||||
|
|
||||||
# Отслеживать появление новых версий
|
|
||||||
ENABLE_UPDATES=false
|
|
||||||
|
|
||||||
# Как много подпроцессов множно запускать.
|
|
||||||
# Самый простой вариант подсчета: разделить доступный объем памяти сервера на 512Мб
|
|
||||||
WEB_CONCURRENCY=1
|
|
||||||
|
|
||||||
# Максимальный размер файла импорта (Для импорта из Notion, Confluence и тд)
|
|
||||||
MAXIMUM_IMPORT_SIZE=5120000
|
|
||||||
|
|
||||||
# Логировать HTTP запросы.
|
|
||||||
# DEBUG=http
|
|
||||||
|
|
||||||
# Список почтовых доменов с которых разрешена регистрация. Домены разделяются запятыми.
|
|
||||||
# По умолчанию разрешены любые домены
|
|
||||||
# ALLOWED_DOMAINS=
|
|
||||||
|
|
||||||
# Отправка отчетов об ошибках разработчикам.
|
|
||||||
# Закомментируйте, если не хотите делиться отчетами об ошибках
|
|
||||||
SENTRY_DSN=https://5bdaaba1cf8043ba9cc43933b65f3b46@sentry.wilix.dev/7
|
|
||||||
|
|
||||||
# Логотип команды, который будет отображаться при входе в систему.
|
|
||||||
# Будет уменьшен до height: 60px
|
|
||||||
# TEAM_LOGO=https://example.com/images/logo.png
|
|
||||||
|
|
||||||
# Язык по умолчанию
|
|
||||||
DEFAULT_LANGUAGE=ru_RU
|
|
||||||
|
|
||||||
# Ключи для отправки WEB Push уведомлений
|
|
||||||
# Инструкция по получению ключей https://yo.yonote.ru/share/onprem/doc/ustanovka-i-nastrojka-KbTxPbAUoo#h-generaciya-klyuchej-web-push-service-worker
|
|
||||||
SERVICE_WORKER_PUBLIC_KEY=
|
|
||||||
SERVICE_WORKER_PRIVATE_KEY=
|
|
||||||
|
|
||||||
# Интеграция с Telegram. Если TELEGRAM_BOT_TOKEN не указан, то интеграция отключена
|
|
||||||
# Инструкция по настройке https://yo.yonote.ru/share/onprem/doc/integraciya-s-telegram-9d2l0erXGN
|
|
||||||
# TELEGRAM_BOT_TOKEN=
|
|
||||||
# TELEGRAM_BOT_URL=
|
|
||||||
|
|
||||||
# Интеграция с Loop https://loop.ru/. Если LOOP_KEY не указан, то интеграция отключена
|
|
||||||
# LOOP_KEY=
|
|
||||||
# LOOP_SECRET=
|
|
||||||
# LOOP_VERIFICATION_TOKEN=
|
|
||||||
# LOOP_MESSAGE_ACTIONS=true
|
|
||||||
|
|
||||||
# Feature flags
|
|
||||||
YN_FEATURE_DOCUMENTS_CUSTOM_EMOJI_ENABLED=true
|
|
||||||
YN_FEATURE_DATABASES_GALLERY_ENABLED=true
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
# Docker‑Compose для yonote‑сервера
|
|
||||||
|
|
||||||
## Обзор
|
|
||||||
|
|
||||||
В этом репозитории содержатся файлы конфигурации Docker Compose и файлы для развёртывания сервера yonote.
|
|
||||||
|
|
||||||
## Быстрый старт
|
|
||||||
|
|
||||||
### 1. Клонируйте репозиторий
|
|
||||||
```bash
|
|
||||||
git clone https://git.wilix.dev/yonote/onprem-deploy.git
|
|
||||||
cd yonote-docker-compose
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Настройка окружения
|
|
||||||
```bash
|
|
||||||
cp .env.example .env
|
|
||||||
```
|
|
||||||
Отредактируйте файл `.env`, указав нужные значения конфигурации.
|
|
||||||
|
|
||||||
### 3. Настройка окружения yonote‑сервера
|
|
||||||
|
|
||||||
Проверьте и при необходимости отредактируйте файл `docker-compose.yml` в соответствии с вашими требованиями к конфигурации. Текущие значения — по умолчанию, они обеспечат работоспособное развёртывание. Некоторые значения будут подставлены при развёртывании из файла `.env`.
|
|
||||||
|
|
||||||
### 4. Запуск сервисов
|
|
||||||
```bash
|
|
||||||
docker-compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5. Проверка развёртывания
|
|
||||||
```bash
|
|
||||||
docker-compose ps
|
|
||||||
docker-compose logs -f [имя_сервиса]
|
|
||||||
```
|
|
||||||
|
|
||||||
## Полезные команды
|
|
||||||
|
|
||||||
| Действие | Команда |
|
|
||||||
| --- | --- |
|
|
||||||
| Запуск сервисов | `docker-compose up -d` |
|
|
||||||
| Остановка сервисов | `docker-compose down` |
|
|
||||||
| Просмотр логов | `docker-compose logs -f` |
|
|
||||||
| Перезапуск сервисов | `docker-compose restart` |
|
|
||||||
|
|
||||||
## Устранение неполадок
|
|
||||||
|
|
||||||
* **Просмотр логов сервиса**: `docker-compose logs [имя_сервиса]`
|
|
||||||
|
|
||||||
## Лицензия
|
|
||||||
|
|
||||||
[Тип лицензии] — подробности см. в файле LICENSE.
|
|
||||||
|
|
||||||
#####
|
|
||||||
|
|
||||||
# yonote Server Docker Compose
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
This repository contains the Docker Compose configuration and deployment files for the yonote server.
|
|
||||||
|
|
||||||
## Quick Start
|
|
||||||
|
|
||||||
### 1. Clone the Repository
|
|
||||||
```bash
|
|
||||||
git clone https://git.wilix.dev/yonote/onprem-deploy.git
|
|
||||||
cd yonote-docker-compose
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Environment Configuration
|
|
||||||
```bash
|
|
||||||
cp .env.example .env
|
|
||||||
```
|
|
||||||
Edit the `.env` file with your specific configuration values.
|
|
||||||
|
|
||||||
### 3. yonote Server Environment Configuration
|
|
||||||
|
|
||||||
Check and edit, if required, the `docker-compose.yml` file for your specific configuration requirements. The current values are default and will ensure a working deployment. Some values will be populated on deployment from the `.env` file.
|
|
||||||
|
|
||||||
|
|
||||||
### 4. Start the Services
|
|
||||||
```bash
|
|
||||||
docker-compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5. Verify Deployment
|
|
||||||
```bash
|
|
||||||
docker-compose ps
|
|
||||||
docker-compose logs -f [service-name]
|
|
||||||
```
|
|
||||||
|
|
||||||
## Useful Commands
|
|
||||||
|
|
||||||
| Action | Command |
|
|
||||||
|--------|---------|
|
|
||||||
| Start services | `docker-compose up -d` |
|
|
||||||
| Stop services | `docker-compose down` |
|
|
||||||
| View logs | `docker-compose logs -f` |
|
|
||||||
| Restart services | `docker-compose restart` |
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
- **View service logs**: `docker-compose logs [service_name]`
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
[License type] - See LICENSE file for details.
|
|
||||||
@@ -1,167 +0,0 @@
|
|||||||
version: "3"
|
|
||||||
services:
|
|
||||||
yonote:
|
|
||||||
container_name: yonote
|
|
||||||
image: images.updates.yonote.ru/yonote:${APP_VERSION}
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
ports:
|
|
||||||
- "3000"
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
- redis
|
|
||||||
- keycloak
|
|
||||||
- s3-client
|
|
||||||
command: yarn start:selfhosted
|
|
||||||
environment:
|
|
||||||
BIND_HOST: 0.0.0.0
|
|
||||||
PORT: 3000
|
|
||||||
URL: ${YNT_HTTP_PROTOCOL}${BASENAME_FOR_SUBDOMAIN}
|
|
||||||
COLLABORATION_URL: ${YNT_WEBSOCKET_PROTOCOL}${BASENAME_FOR_SUBDOMAIN}
|
|
||||||
DATABASE_URL: postgres://${YNT_DB_USER}:${YNT_DB_PASSWORD}@postgres:5432/${YNT_DB_NAME}
|
|
||||||
OIDC_CLIENT_ID: yonote
|
|
||||||
OIDC_CLIENT_SECRET: ${KC_CLIENT_SECRET}
|
|
||||||
OIDC_AUTH_URI: ${KC_YNT_URL}/realms/yonote/protocol/openid-connect/auth
|
|
||||||
OIDC_TOKEN_URI: ${KC_YNT_URL}/realms/yonote/protocol/openid-connect/token
|
|
||||||
OIDC_USERINFO_URI: ${KC_YNT_URL}/realms/yonote/protocol/openid-connect/userinfo
|
|
||||||
OIDC_LOGOUT_URI: ${KC_YNT_URL}/realms/yonote/protocol/openid-connect/logout
|
|
||||||
AWS_S3_UPLOAD_BUCKET_URL: ${MINIO_YNT_URL}
|
|
||||||
AWS_ACCESS_KEY_ID: ${MINIO_ACCESS_KEY_ID}
|
|
||||||
AWS_SECRET_ACCESS_KEY: ${MINIO_SECRET_ACCESS_KEY}
|
|
||||||
AWS_S3_UPLOAD_BUCKET_NAME: yonote-bucket
|
|
||||||
AWS_REGION: xx-xxxx-x
|
|
||||||
TELEGRAM_API_URL: https://api.telegram.org
|
|
||||||
OIDC_DISPLAY_NAME: email
|
|
||||||
OIDC_SCOPES: openid email
|
|
||||||
REDIS_URL: redis://redis:6379
|
|
||||||
PGSSLMODE: disable
|
|
||||||
USE_LEGACY_LOGOUT: true
|
|
||||||
AWS_S3_FORCE_PATH_STYLE: true
|
|
||||||
AWS_S3_ACL: private
|
|
||||||
volumes:
|
|
||||||
- ./License.key:/opt/yonote/License.key
|
|
||||||
networks:
|
|
||||||
- yonote-network
|
|
||||||
external_links:
|
|
||||||
- "nginx:${KC_YNT_HOST}"
|
|
||||||
- "nginx:${MINIO_YNT_HOST}"
|
|
||||||
|
|
||||||
redis:
|
|
||||||
container_name: redis
|
|
||||||
image: redis:7-alpine
|
|
||||||
restart: unless-stopped
|
|
||||||
user: "redis:redis"
|
|
||||||
networks:
|
|
||||||
- yonote-network
|
|
||||||
|
|
||||||
postgres:
|
|
||||||
container_name: postgres
|
|
||||||
image: postgres:14
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
POSTGRES_DB: ${YNT_DB_NAME}
|
|
||||||
POSTGRES_USER: ${YNT_DB_USER}
|
|
||||||
POSTGRES_PASSWORD: ${YNT_DB_PASSWORD}
|
|
||||||
KC_DB_USERNAME: ${KC_DB_USERNAME}
|
|
||||||
KC_DB_PASSWORD: ${KC_DB_PASSWORD}
|
|
||||||
user: "postgres:postgres"
|
|
||||||
volumes:
|
|
||||||
- db:/var/lib/postgresql/data
|
|
||||||
- ./postgres/init-keycloak-db.sh:/docker-entrypoint-initdb.d/init-keycloak-db.sh
|
|
||||||
networks:
|
|
||||||
- yonote-network
|
|
||||||
|
|
||||||
s3:
|
|
||||||
container_name: minio
|
|
||||||
image: minio/minio:RELEASE.2022-08-26T19-53-15Z
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
- MINIO_ROOT_USER=${MINIO_ADMIN_USERNAME}
|
|
||||||
- MINIO_ROOT_PASSWORD=${MINIO_ADMIN_PASSWORD}
|
|
||||||
command: server --address :9000 --console-address :9001 /data
|
|
||||||
ports:
|
|
||||||
- "9000"
|
|
||||||
- "9001"
|
|
||||||
volumes:
|
|
||||||
- minio:/data
|
|
||||||
networks:
|
|
||||||
- yonote-network
|
|
||||||
|
|
||||||
s3-client:
|
|
||||||
container_name: minio-client
|
|
||||||
image: minio/mc:RELEASE.2022-08-28T20-08-11Z
|
|
||||||
volumes:
|
|
||||||
- ./minio:/tmp/policies
|
|
||||||
environment:
|
|
||||||
MINIO_ACCESS_KEY_ID: ${MINIO_ACCESS_KEY_ID}
|
|
||||||
MINIO_SECRET_ACCESS_KEY: ${MINIO_SECRET_ACCESS_KEY}
|
|
||||||
MINIO_ADMIN_USERNAME: ${MINIO_ADMIN_USERNAME}
|
|
||||||
MINIO_ADMIN_PASSWORD: ${MINIO_ADMIN_PASSWORD}
|
|
||||||
entrypoint: >
|
|
||||||
/bin/sh -c "
|
|
||||||
/usr/bin/mc config host add myminio http://minio:9000 ${MINIO_ADMIN_USERNAME} ${MINIO_ADMIN_PASSWORD};
|
|
||||||
/usr/bin/mc mb myminio/yonote-bucket;
|
|
||||||
/usr/bin/mc policy set-json /tmp/policies/minio-bucket-policy.json myminio/yonote-bucket;
|
|
||||||
/usr/bin/mc admin user add myminio ${MINIO_ACCESS_KEY_ID} ${MINIO_SECRET_ACCESS_KEY};
|
|
||||||
/usr/bin/mc admin policy add myminio yonote-policy /tmp/policies/minio-user-policy.json;
|
|
||||||
/usr/bin/mc admin policy set myminio yonote-policy user=${MINIO_ACCESS_KEY_ID};
|
|
||||||
exit 0;
|
|
||||||
"
|
|
||||||
networks:
|
|
||||||
- yonote-network
|
|
||||||
depends_on:
|
|
||||||
- s3
|
|
||||||
|
|
||||||
keycloak:
|
|
||||||
container_name: keycloak
|
|
||||||
image: images.updates.yonote.ru/yonote-keycloak:${AUTH_VERSION}
|
|
||||||
ports:
|
|
||||||
- "8080"
|
|
||||||
environment:
|
|
||||||
KC_HOSTNAME: ${KC_YNT_HOST}
|
|
||||||
OIDC_CLIENT_SECRET: ${KC_CLIENT_SECRET}
|
|
||||||
YNT_HTTP_PROTOCOL: ${YNT_HTTP_PROTOCOL}
|
|
||||||
BASENAME_FOR_SUBDOMAIN: ${BASENAME_FOR_SUBDOMAIN}
|
|
||||||
KEYCLOAK_ADMIN: ${KC_USERNAME}
|
|
||||||
KEYCLOAK_ADMIN_PASSWORD: ${KC_PASSWORD}
|
|
||||||
KC_DB: postgres
|
|
||||||
KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
|
|
||||||
KC_DB_USERNAME: ${KC_DB_USERNAME}
|
|
||||||
KC_DB_PASSWORD: ${KC_DB_PASSWORD}
|
|
||||||
PROXY_ADDRESS_FORWARDING: true
|
|
||||||
command: start-dev --spi-login-protocol-openid-connect-legacy-logout-redirect-uri=true --import-realm
|
|
||||||
networks:
|
|
||||||
- yonote-network
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
|
|
||||||
nginx:
|
|
||||||
container_name: nginx
|
|
||||||
image: nginx
|
|
||||||
ports:
|
|
||||||
- 80:80
|
|
||||||
environment:
|
|
||||||
BASENAME_FOR_SUBDOMAIN: ${BASENAME_FOR_SUBDOMAIN}
|
|
||||||
MINIO_YNT_HOST: ${MINIO_YNT_HOST}
|
|
||||||
MINIO_ADMIN_YNT_HOST: ${MINIO_ADMIN_YNT_HOST}
|
|
||||||
KC_YNT_HOST: ${KC_YNT_HOST}
|
|
||||||
DOLLAR: "$"
|
|
||||||
volumes:
|
|
||||||
- ./nginx/default.conf.tmpl:/etc/nginx/conf.d/default.conf.tmpl
|
|
||||||
networks:
|
|
||||||
yonote-network:
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
- redis
|
|
||||||
- keycloak
|
|
||||||
- s3-client
|
|
||||||
- yonote
|
|
||||||
command: /bin/bash -c "envsubst < /etc/nginx/conf.d/default.conf.tmpl > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
|
|
||||||
|
|
||||||
networks:
|
|
||||||
yonote-network:
|
|
||||||
name: yonote-internal-network
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
db:
|
|
||||||
minio:
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
"Version": "2012-10-17",
|
|
||||||
"Statement": [
|
|
||||||
{
|
|
||||||
"Effect": "Allow",
|
|
||||||
"Principal": {
|
|
||||||
"AWS": [
|
|
||||||
"*"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Action": [
|
|
||||||
"s3:GetBucketLocation"
|
|
||||||
],
|
|
||||||
"Resource": [
|
|
||||||
"arn:aws:s3:::yonote-bucket"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Effect": "Allow",
|
|
||||||
"Principal": {
|
|
||||||
"AWS": [
|
|
||||||
"*"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Action": [
|
|
||||||
"s3:GetObject"
|
|
||||||
],
|
|
||||||
"Resource": [
|
|
||||||
"arn:aws:s3:::yonote-bucket/*"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"Version": "2012-10-17",
|
|
||||||
"Statement": [
|
|
||||||
{
|
|
||||||
"Sid": "VisualEditor",
|
|
||||||
"Effect": "Allow",
|
|
||||||
"Action": [
|
|
||||||
"s3:DeleteObject",
|
|
||||||
"s3:GetObject",
|
|
||||||
"s3:PutObject"
|
|
||||||
],
|
|
||||||
"Resource": [
|
|
||||||
"arn:aws:s3:::yonote-bucket/*"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
server {
|
|
||||||
server_name ${BASENAME_FOR_SUBDOMAIN};
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_busy_buffers_size 512k;
|
|
||||||
proxy_buffers 4 512k;
|
|
||||||
proxy_buffer_size 256k;
|
|
||||||
proxy_connect_timeout 75s;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass http://yonote:3000;
|
|
||||||
proxy_set_header Host ${DOLLAR}host;
|
|
||||||
proxy_set_header Connection '';
|
|
||||||
chunked_transfer_encoding off;
|
|
||||||
proxy_cache off;
|
|
||||||
}
|
|
||||||
|
|
||||||
location ^~/realtime {
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_set_header Upgrade ${DOLLAR}http_upgrade;
|
|
||||||
proxy_set_header Connection "Upgrade";
|
|
||||||
proxy_set_header Host ${DOLLAR}host;
|
|
||||||
proxy_pass http://yonote:3000;
|
|
||||||
}
|
|
||||||
location ^~/collaboration {
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_set_header Upgrade ${DOLLAR}http_upgrade;
|
|
||||||
proxy_set_header Connection "Upgrade";
|
|
||||||
proxy_set_header Host ${DOLLAR}host;
|
|
||||||
proxy_pass http://yonote:3000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
server_name ${MINIO_YNT_HOST};
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_busy_buffers_size 512k;
|
|
||||||
proxy_buffers 4 512k;
|
|
||||||
proxy_buffer_size 256k;
|
|
||||||
proxy_read_timeout 300s;
|
|
||||||
proxy_connect_timeout 75s;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass http://s3:9000;
|
|
||||||
proxy_set_header Connection '';
|
|
||||||
chunked_transfer_encoding off;
|
|
||||||
proxy_set_header Host ${DOLLAR}host;
|
|
||||||
proxy_cache off;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
server_name ${MINIO_ADMIN_YNT_HOST};
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_busy_buffers_size 512k;
|
|
||||||
proxy_buffers 4 512k;
|
|
||||||
proxy_buffer_size 256k;
|
|
||||||
proxy_read_timeout 300s;
|
|
||||||
proxy_connect_timeout 75s;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass http://s3:9001;
|
|
||||||
proxy_set_header Connection '';
|
|
||||||
chunked_transfer_encoding off;
|
|
||||||
proxy_cache off;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
server_name ${KC_YNT_HOST};
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_busy_buffers_size 512k;
|
|
||||||
proxy_buffers 4 512k;
|
|
||||||
proxy_buffer_size 256k;
|
|
||||||
proxy_read_timeout 300s;
|
|
||||||
proxy_connect_timeout 75s;
|
|
||||||
|
|
||||||
proxy_set_header X-Forwarded-For ${DOLLAR}proxy_protocol_addr; # To forward the original client's IP address
|
|
||||||
proxy_set_header X-Forwarded-Proto ${DOLLAR}scheme; # to forward the original protocol (HTTP or HTTPS)
|
|
||||||
proxy_set_header Host ${DOLLAR}host; # to forward the original host requested by the client
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass http://keycloak:8080;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
|
||||||
CREATE DATABASE keycloak;
|
|
||||||
CREATE USER ${KC_DB_USERNAME} WITH PASSWORD '${KC_DB_PASSWORD}';
|
|
||||||
GRANT ALL PRIVILEGES ON DATABASE keycloak TO ${KC_DB_USERNAME};
|
|
||||||
EOSQL
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
dependencies:
|
|
||||||
- name: app
|
|
||||||
repository: https://dysnix.github.io/charts
|
|
||||||
version: 0.3.15
|
|
||||||
- name: app
|
|
||||||
repository: https://dysnix.github.io/charts
|
|
||||||
version: 0.3.15
|
|
||||||
- name: app
|
|
||||||
repository: https://dysnix.github.io/charts
|
|
||||||
version: 0.3.15
|
|
||||||
- name: app
|
|
||||||
repository: https://dysnix.github.io/charts
|
|
||||||
version: 0.3.15
|
|
||||||
- name: app
|
|
||||||
repository: https://dysnix.github.io/charts
|
|
||||||
version: 0.3.15
|
|
||||||
- name: postgresql
|
|
||||||
repository: https://charts.bitnami.com/bitnami
|
|
||||||
version: 11.6.6
|
|
||||||
- name: redis
|
|
||||||
repository: https://charts.bitnami.com/bitnami
|
|
||||||
version: 16.12.1
|
|
||||||
- name: minio
|
|
||||||
repository: https://charts.bitnami.com/bitnami
|
|
||||||
version: 12.7.0
|
|
||||||
- name: keycloak
|
|
||||||
repository: https://charts.bitnami.com/bitnami
|
|
||||||
version: 14.0.0
|
|
||||||
digest: sha256:928723e189de54fafe19316743b8f9d08d7c74f9728b0c4afb1f5cd3ee1e83dc
|
|
||||||
generated: "2024-08-25T00:46:01.648512702+03:00"
|
|
||||||
@@ -1,171 +0,0 @@
|
|||||||
# Yonote Onprem Charts
|
|
||||||
|
|
||||||
## Важная информация
|
|
||||||
|
|
||||||
### Статус веток
|
|
||||||
В настоящее время доступны **2 ветки**:
|
|
||||||
|
|
||||||
| Ветка | Версия | Статус |
|
|
||||||
|--------|---------|--------|
|
|
||||||
| `master` | yonote Helm Charts v1.x.x | Устаревшая |
|
|
||||||
| `2.0.0` | yonote Helm Charts v2.x.x | Актуальная |
|
|
||||||
|
|
||||||
> **⚠️ Важно:** между этими версиями чартов **нет прямого пути миграции**. При обновлении необходимо внимательно выбирать подходящую версию чарта.
|
|
||||||
|
|
||||||
### Рекомендации по развёртыванию
|
|
||||||
- **Новые развёртывания**: необходимо использовать чарты версии `2.0.0`.
|
|
||||||
- **Существующие развёртывания**: продолжайте использовать текущую версию.
|
|
||||||
- **Предстоящие изменения**: в ближайшее время ветка `2.0.0` будет повышена до `master`. Текущая ветка `master` будет перемещена в ветку с пометкой «устаревшая».
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Быстрый старт
|
|
||||||
|
|
||||||
### Добавление репозитория
|
|
||||||
```bash
|
|
||||||
helm repo add yonote https://artifacts.wilix.dev/repository/helm-yonote
|
|
||||||
helm repo update
|
|
||||||
```
|
|
||||||
|
|
||||||
### Сравнение чартов
|
|
||||||
|
|
||||||
| Характеристика | yonote-helm-chart |
|
|
||||||
|----------------|-------------------------|
|
|
||||||
| Сервер yonote | ✅ Включён | ✅ Включён |
|
|
||||||
| PostgreSQL | ✅ Включён |
|
|
||||||
| MinIO | ✅ Включён |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Матрица версий
|
|
||||||
|
|
||||||
| Версия чарта | Ветка | Статус | Рекомендуется для |
|
|
||||||
|--------------|-------|--------|-------------------|
|
|
||||||
| v1.x.x | master | Устаревшая | Существующие развёртывания v1 |
|
|
||||||
| v2.x.x | 2.0.0 | Актуальная | Все новые развёртывания |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Уведомление о миграции
|
|
||||||
|
|
||||||
> **Прямого пути обновления между v1.x.x и v2.x.x не существует**
|
|
||||||
|
|
||||||
Если вы сейчас используете чарты v1.x.x:
|
|
||||||
- **НЕ** пытайтесь выполнить обновление на месте до v2.x.x
|
|
||||||
- Путь обновления будет предоставлен в будущем
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Настройка значений
|
|
||||||
|
|
||||||
Перед развертыванием приложения через Helm необходимо внести валидные значения в файлы values.yaml и secret-values.yaml. Эти файлы содержат параметры конфигурации, которые будут использованы при установке приложения.
|
|
||||||
|
|
||||||
Настройте необходимые параметры. В файлах values.yaml и secret-values.yaml вы найдете различные секции, каждая из которых соответствует определенной части конфигурации приложения. Внимательно изучите комментарии в этих файлах; они указывают на места, где необходимо внести изменения. Обратите особое внимание на секцию ingress, так как её настройка важна для правильной работы приложения. Вам потребуется заменить или настроить значения в этой секции в соответствии с вашими требованиями.
|
|
||||||
Также обратите внимание на все строки с доменом example.com — его необходимо заменить на ваше собственное доменное имя, которое будет использоваться для работы приложения. Учтите, что путь в переменных и в конфигурации Ingress менять не нужно, заменяйте только сам домен.
|
|
||||||
|
|
||||||
Более подробно ознакомиться с переменными вы можете по следующей ссылке: https://yo.yonote.ru/share/onprem/doc/peremennye-okruzheniya-mOI8Jl6B05
|
|
||||||
|
|
||||||
### Запуск приложения
|
|
||||||
|
|
||||||
После настройки значений выполните команду:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm install app -f values.yaml -f secret-values.yaml -n yonote-onprem .
|
|
||||||
```
|
|
||||||
После выполнения команды начнётся установка приложения и всех дополнительных сервисов к нему. Остаётся только подождать, пока все сервисы запустятся.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Обратная связь
|
|
||||||
|
|
||||||
Если у вас есть вопросы или вам нужна помощь, пишите на email: hello@yonote.ru
|
|
||||||
|
|
||||||
###
|
|
||||||
|
|
||||||
# yonote Onprem Charts
|
|
||||||
|
|
||||||
## Important Information
|
|
||||||
|
|
||||||
### Branch Status
|
|
||||||
There are currently **2 branches** available:
|
|
||||||
|
|
||||||
| Branch | Version | Status |
|
|
||||||
|--------|---------|--------|
|
|
||||||
| `master` | yonote Helm Charts v1.x.x | Legacy |
|
|
||||||
| `2.0.0` | yonote Helm Charts v2.x.x | Current |
|
|
||||||
|
|
||||||
> **⚠️ Important:** These charts do **not** have a direct migration path between versions. Care must be taken to use the correct chart version for upgrades.
|
|
||||||
|
|
||||||
### Deployment Recommendations
|
|
||||||
- **New deployments**: Must use version `2.0.0` charts
|
|
||||||
- **Existing deployments**: Continue using your current version
|
|
||||||
- **Upcoming changes**: The `2.0.0` branch will be promoted to `master` in the near future. The current `master` will be moved to a deprecated branch.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Quick Start
|
|
||||||
|
|
||||||
### Add Repository
|
|
||||||
```bash
|
|
||||||
helm repo add yonote https://artifacts.wilix.dev/repository/helm-yonote
|
|
||||||
helm repo update
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Chart Features
|
|
||||||
|
|
||||||
| Feature | yonote-helm-chart |
|
|
||||||
|---------|------------------------|
|
|
||||||
| yonote Server | ✅ Included |
|
|
||||||
| PostgreSQL | ✅ Included |
|
|
||||||
| MinIO | ✅ Included |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Version Matrix
|
|
||||||
|
|
||||||
| Chart Version | Branch | Status | Recommended For |
|
|
||||||
|---------------|--------|--------|-----------------|
|
|
||||||
| v1.x.x | `master` | Legacy | Existing v1 deployments |
|
|
||||||
| v2.x.x | `2.0.0` | Current | All new deployments |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Migration Notice
|
|
||||||
|
|
||||||
> **No direct upgrade path exists between v1.x.x and v2.x.x**
|
|
||||||
|
|
||||||
If you are currently using v1.x.x charts:
|
|
||||||
- **DO NOT** attempt an in-place upgrade to v2.x.x
|
|
||||||
|
|
||||||
The upgrade path will be provided in the future.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Configuring the Values
|
|
||||||
|
|
||||||
Before deploying the application via Helm, you need to enter valid values in the values.yaml and secret-values.yaml files. These files contain configuration parameters that will be used when installing the application.
|
|
||||||
|
|
||||||
Configure the required parameters. In the values.yaml and secret-values.yaml files, you’ll find various sections — each corresponds to a specific part of the application’s configuration. Carefully review the comments in these files; they indicate where changes need to be made.
|
|
||||||
|
|
||||||
Pay special attention to the ingress section, as its configuration is crucial for the proper operation of the application. You’ll need to replace or adjust the values in this section according to your requirements.
|
|
||||||
|
|
||||||
Also, note all the lines containing the example.com domain — you must replace it with your own domain name that will be used for the application. Keep in mind that you don’t need to change the path in the variables and Ingress configuration; only replace the domain itself.
|
|
||||||
|
|
||||||
You can learn more about the variables using the following link.: https://yo.yonote.ru/share/onprem/doc/peremennye-okruzheniya-mOI8Jl6B05
|
|
||||||
|
|
||||||
### Application Launch
|
|
||||||
|
|
||||||
After configuring the values, run the following command:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm install app -f values.yaml -f secret-values.yaml -n yonote-onprem .
|
|
||||||
```
|
|
||||||
Once the command is executed, the installation of the application and all additional services will begin. Just wait until all the services are up and running.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Feedback
|
|
||||||
|
|
||||||
If you have any questions or need assistance, please send an email to:: hello@yonote.ru
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
global:
|
|
||||||
yonote:
|
|
||||||
config:
|
|
||||||
secret:
|
|
||||||
stringData:
|
|
||||||
DATABASE_URL: 'postgres://{{ .Values.yonoteDatabase.global.postgresql.auth.username }}:{{ .Values.yonoteDatabase.global.postgresql.auth.password }}@yonote-database:5432/{{ .Values.yonoteDatabase.global.postgresql.auth.database }}'
|
|
||||||
POSTGRES_PASSWORD: "{{ .Values.yonoteDatabase.global.postgresql.auth.password }}"
|
|
||||||
AWS_ACCESS_KEY_ID: "{{ .Values.minio.customUser }}" # Ваш идентификатор ключа доступа к AWS.
|
|
||||||
AWS_SECRET_ACCESS_KEY: "{{ .Values.minio.customAccessKey }}" # Ваш секретный ключ доступа AWS.
|
|
||||||
OIDC_CLIENT_SECRET: "Kdq8rk5Pv5RW1c5kHXpnyfrmMRzI9xSD" # Секретный ключ клиента для аутентификации по OpenID Connect (OIDC).
|
|
||||||
SECRET_KEY: "659a8881b186198c3146e316f6dab67df25496534d1fa156d624b037260df688" # Сгенерируйте 32-байтовый случайный ключ в шестнадцатеричном коде. Вам следует использовать `openssl rand -hex 32` в вашем терминале для генерации случайного значения.
|
|
||||||
SMTP_PASSWORD: "1234"
|
|
||||||
UTILS_SECRET: "7bd5e9ac4415dd0dbf6b7721e2a21e9427b268cd0140c7516d13dece5024d479" # Сгенерируйте уникальный случайный ключ. Формат не важен, но вы все равно можете использовать`openssl rand -hex 32` в вашем терминале, чтобы создать это.
|
|
||||||
TELEGRAM_BOT_TOKEN: "1234"
|
|
||||||
UNSPLASH_API_ACCESS_KEY: "a-yGo6HpRP6jNfravx4Bz-oiPrRnH_5-24Xa9ZPlePE"
|
|
||||||
LICENSE_KEY: "qwerty-123456-zxcvb" # Обратитесь в отдел продаж для получения
|
|
||||||
SERVICE_WORKER_PUBLIC_KEY: "1234"
|
|
||||||
SERVICE_WORKER_PRIVATE_KEY: "1234"
|
|
||||||
# Генерация ключей (web-push) Service Worker
|
|
||||||
# 1) Установить Node.js и npm
|
|
||||||
# 2) Выполнить команду для генерации ключей
|
|
||||||
# npx web-push generate-vapid-keys
|
|
||||||
# 3) Полученные значения ввести в .env файл (SERVICE_WORKER_PUBLIC_KEY, SERVICE_WORKER_PRIVATE_KEY)
|
|
||||||
|
|
||||||
yonoteDatabase:
|
|
||||||
global:
|
|
||||||
postgresql:
|
|
||||||
auth:
|
|
||||||
password: "wsGZ6kXhr5"
|
|
||||||
postgresPassword: "QQYw4UjOU"
|
|
||||||
|
|
||||||
# yonote-redis: # Если используете auth для redis
|
|
||||||
# auth:
|
|
||||||
# password: "12345678"
|
|
||||||
|
|
||||||
minio:
|
|
||||||
customAccessKey: "qwer-12314q-qwersa"
|
|
||||||
auth:
|
|
||||||
rootPassword: "qwettaas"
|
|
||||||
|
|
||||||
keycloak:
|
|
||||||
auth:
|
|
||||||
adminPassword: "root"
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: postgres-init-scripts
|
|
||||||
data:
|
|
||||||
init.sql: |
|
|
||||||
CREATE DATABASE "{{ .Values.keycloak.externalDatabase.database }}";
|
|
||||||
@@ -1,169 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: realm-export
|
|
||||||
data:
|
|
||||||
realm-export.json: |
|
|
||||||
{
|
|
||||||
"realm": "yonote",
|
|
||||||
"enabled": true,
|
|
||||||
"notBefore": 1647809856,
|
|
||||||
"defaultSignatureAlgorithm": "RS256",
|
|
||||||
"revokeRefreshToken": false,
|
|
||||||
"refreshTokenMaxReuse": 0,
|
|
||||||
"accessTokenLifespan": 300,
|
|
||||||
"accessTokenLifespanForImplicitFlow": 900,
|
|
||||||
"ssoSessionIdleTimeout": 1800,
|
|
||||||
"ssoSessionMaxLifespan": 36000,
|
|
||||||
"ssoSessionIdleTimeoutRememberMe": 0,
|
|
||||||
"ssoSessionMaxLifespanRememberMe": 0,
|
|
||||||
"offlineSessionIdleTimeout": 2592000,
|
|
||||||
"offlineSessionMaxLifespanEnabled": false,
|
|
||||||
"offlineSessionMaxLifespan": 5184000,
|
|
||||||
"clientSessionIdleTimeout": 0,
|
|
||||||
"clientSessionMaxLifespan": 0,
|
|
||||||
"clientOfflineSessionIdleTimeout": 0,
|
|
||||||
"clientOfflineSessionMaxLifespan": 0,
|
|
||||||
"accessCodeLifespan": 60,
|
|
||||||
"accessCodeLifespanUserAction": 300,
|
|
||||||
"accessCodeLifespanLogin": 1800,
|
|
||||||
"actionTokenGeneratedByAdminLifespan": 43200,
|
|
||||||
"actionTokenGeneratedByUserLifespan": 300,
|
|
||||||
"oauth2DeviceCodeLifespan": 600,
|
|
||||||
"oauth2DevicePollingInterval": 5,
|
|
||||||
"sslRequired": "external",
|
|
||||||
"registrationAllowed": true,
|
|
||||||
"registrationEmailAsUsername": true,
|
|
||||||
"rememberMe": true,
|
|
||||||
"verifyEmail": false,
|
|
||||||
"loginWithEmailAllowed": true,
|
|
||||||
"duplicateEmailsAllowed": false,
|
|
||||||
"resetPasswordAllowed": true,
|
|
||||||
"editUsernameAllowed": false,
|
|
||||||
"bruteForceProtected": false,
|
|
||||||
"permanentLockout": false,
|
|
||||||
"maxFailureWaitSeconds": 900,
|
|
||||||
"minimumQuickLoginWaitSeconds": 60,
|
|
||||||
"waitIncrementSeconds": 60,
|
|
||||||
"quickLoginCheckMilliSeconds": 1000,
|
|
||||||
"maxDeltaTimeSeconds": 43200,
|
|
||||||
"failureFactor": 30,
|
|
||||||
"clients": [
|
|
||||||
{
|
|
||||||
"clientId": "{{ .Values.global.yonote.config.plain.data.OIDC_CLIENT_ID }}",
|
|
||||||
"secret": "{{ .Values.global.yonote.config.secret.stringData.OIDC_CLIENT_SECRET }}",
|
|
||||||
"redirectUris": [
|
|
||||||
"https://*.{{ .Values.global.yonote.baseListenAddress }}/*",
|
|
||||||
"http://*.{{ .Values.global.yonote.baseListenAddress }}/*",
|
|
||||||
"http://app.{{ .Values.global.yonote.baseListenAddress }}/*",
|
|
||||||
"https://app.{{ .Values.global.yonote.baseListenAddress }}/*",
|
|
||||||
"https://app.{{ .Values.global.yonote.baseListenAddress }}/auth/oidc.callback/*"
|
|
||||||
],
|
|
||||||
"baseUrl": "https://app.{{ .Values.global.yonote.baseListenAddress }}",
|
|
||||||
"enabled": true,
|
|
||||||
"publicClient": false,
|
|
||||||
"protocol": "openid-connect",
|
|
||||||
"attributes": {
|
|
||||||
"client.secret": "{{ .Values.global.yonote.config.secret.stringData.OIDC_CLIENT_SECRET }}",
|
|
||||||
"display.on.consent.screen": "true"
|
|
||||||
},
|
|
||||||
"authenticationFlowBindingOverrides": {},
|
|
||||||
"fullScopeAllowed": false,
|
|
||||||
"protocolMappers": [
|
|
||||||
{
|
|
||||||
"name": "oidc-display-name",
|
|
||||||
"protocol": "openid-connect",
|
|
||||||
"protocolMapper": "oidc-usermodel-attribute-mapper",
|
|
||||||
"consentRequired": false,
|
|
||||||
"config": {
|
|
||||||
"userinfo.token.claim": "true",
|
|
||||||
"user.attribute": "{{ .Values.global.yonote.config.plain.data.OIDC_DISPLAY_NAME }}",
|
|
||||||
"id.token.claim": "true",
|
|
||||||
"access.token.claim": "true",
|
|
||||||
"claim.name": "{{ .Values.global.yonote.config.plain.data.OIDC_DISPLAY_NAME }}",
|
|
||||||
"jsonType.label": "String"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"defaultClientScopes": ["openid", "email"]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"identityProviders": [],
|
|
||||||
"internationalizationEnabled": true,
|
|
||||||
"clientScopes": [
|
|
||||||
{
|
|
||||||
"name": "openid",
|
|
||||||
"protocol": "openid-connect",
|
|
||||||
"attributes": {
|
|
||||||
"include.in.token.scope": "true",
|
|
||||||
"display.on.consent.screen": "true",
|
|
||||||
"consent.screen.text": "{{ .Values.global.yonote.config.plain.data.OIDC_DISPLAY_NAME }}"
|
|
||||||
},
|
|
||||||
"protocolMappers": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "email",
|
|
||||||
"protocol": "openid-connect",
|
|
||||||
"attributes": {
|
|
||||||
"include.in.token.scope": "true",
|
|
||||||
"display.on.consent.screen": "true"
|
|
||||||
},
|
|
||||||
"protocolMappers": [
|
|
||||||
{
|
|
||||||
"id": "56fe6d23-690a-465c-bc36-99bff8fef6eb",
|
|
||||||
"name": "email verified",
|
|
||||||
"protocol": "openid-connect",
|
|
||||||
"protocolMapper": "oidc-usermodel-property-mapper",
|
|
||||||
"consentRequired": false,
|
|
||||||
"config": {
|
|
||||||
"userinfo.token.claim": "true",
|
|
||||||
"user.attribute": "emailVerified",
|
|
||||||
"id.token.claim": "true",
|
|
||||||
"access.token.claim": "true",
|
|
||||||
"claim.name": "email_verified",
|
|
||||||
"jsonType.label": "boolean"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "2c6acd0e-b776-48f5-9c3b-7bfdbbe712dc",
|
|
||||||
"name": "email",
|
|
||||||
"protocol": "openid-connect",
|
|
||||||
"protocolMapper": "oidc-usermodel-property-mapper",
|
|
||||||
"consentRequired": false,
|
|
||||||
"config": {
|
|
||||||
"userinfo.token.claim": "true",
|
|
||||||
"user.attribute": "email",
|
|
||||||
"id.token.claim": "true",
|
|
||||||
"access.token.claim": "true",
|
|
||||||
"claim.name": "email",
|
|
||||||
"jsonType.label": "String"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"browserSecurityHeaders": {
|
|
||||||
"contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';"
|
|
||||||
},
|
|
||||||
"webAuthnPolicyRpEntityName": "keycloak",
|
|
||||||
"webAuthnPolicySignatureAlgorithms": ["ES256"],
|
|
||||||
"webAuthnPolicyRpId": "",
|
|
||||||
"webAuthnPolicyAttestationConveyancePreference": "not specified",
|
|
||||||
"webAuthnPolicyAuthenticatorAttachment": "not specified",
|
|
||||||
"webAuthnPolicyRequireResidentKey": "not specified",
|
|
||||||
"webAuthnPolicyUserVerificationRequirement": "not specified",
|
|
||||||
"webAuthnPolicyCreateTimeout": 0,
|
|
||||||
"webAuthnPolicyAvoidSameAuthenticatorRegister": false,
|
|
||||||
"webAuthnPolicyAcceptableAaguids": [],
|
|
||||||
"webAuthnPolicyPasswordlessRpEntityName": "keycloak",
|
|
||||||
"webAuthnPolicyPasswordlessSignatureAlgorithms": ["ES256"],
|
|
||||||
"webAuthnPolicyPasswordlessRpId": "",
|
|
||||||
"webAuthnPolicyPasswordlessAttestationConveyancePreference": "not specified",
|
|
||||||
"webAuthnPolicyPasswordlessAuthenticatorAttachment": "not specified",
|
|
||||||
"webAuthnPolicyPasswordlessRequireResidentKey": "not specified",
|
|
||||||
"webAuthnPolicyPasswordlessUserVerificationRequirement": "not specified",
|
|
||||||
"webAuthnPolicyPasswordlessCreateTimeout": 0,
|
|
||||||
"webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister": false,
|
|
||||||
"webAuthnPolicyPasswordlessAcceptableAaguids": [],
|
|
||||||
"smtpServer": {}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user