Compare commits

..

51 Commits

Author SHA1 Message Date
Aleksandr Anisin c0f94d4ea7 Обновление названий сервисов 2026-03-09 18:14:00 +03:00
Речкина Елена Валерьевна df88416247 Merge branch 'feature/VEGA-6262-add-static-copy-plugin' into 'main'
VEGA-6267: добавление автоматического обновления шрифтов дизайн-системы и отключение темной темы

See merge request common/vega/beecloud-docs!78
2026-01-20 11:28:37 +00:00
Захаров Дмитрий Анатольевич b948e5a433 VEGA-6267: добавление автоматического обновления шрифтов дизайн-системы и отключение темной темы 2026-01-20 11:28:37 +00:00
Elena Rechkina dfebbc3c45 Форматирование 2026-01-14 12:09:23 +06:00
Речкина Елена Валерьевна 37d1f1f17e Merge branch 'feature/placement-groups' into 'main'
Корректировка раздела "Группы размещения" #VEGA-6214

See merge request common/vega/beecloud-docs!77
2026-01-14 06:07:29 +00:00
Левченко Людмила Алексеевна 968dc9de10 Корректировка раздела "Группы размещения" #VEGA-6214 2026-01-14 06:07:29 +00:00
Речкина Елена Валерьевна d126d05f4d Merge branch 'feature/IP-address' into 'main'
Корректировка раздела IP-адреса #VEGA-6213

See merge request common/vega/beecloud-docs!74
2026-01-13 12:41:24 +00:00
Левченко Людмила Алексеевна 3c441310a4 Корректировка раздела IP-адреса #VEGA-6213 2026-01-13 12:41:24 +00:00
Речкина Елена Валерьевна f5d44a3f8f Merge branch 'feature/disks' into 'main'
Форматирование раздела "Диски" #VEGA-6212

See merge request common/vega/beecloud-docs!70
2026-01-13 09:50:36 +00:00
Левченко Людмила Алексеевна 386e89f8f3 Форматирование раздела "Диски" #VEGA-6212 2026-01-13 09:50:36 +00:00
Elena Rechkina ba4d5e80e2 Форматирование 2026-01-13 13:11:04 +06:00
Бурденко Алексей 8eb2c67453 up ci 2026-01-12 14:33:43 +03:00
Бурденко Алексей 36ba0c1f0a up ci 2026-01-12 12:59:52 +03:00
Бурденко Алексей Иванович a42f281613 Merge branch 'feature/fix-ib' into 'main'
fix-ib-csp-2200

See merge request common/vega/beecloud-docs!67
2026-01-12 09:53:45 +00:00
Бурденко Алексей Иванович e3cf876ccc fix-ib-csp-2200 2026-01-12 09:53:45 +00:00
Речкина Елена Валерьевна f83c928c47 Merge branch 'feature/VEGA-6262-fix-icons' into 'main'
VEGA-6262: исправление отображения иконок

See merge request common/vega/beecloud-docs!75
2025-12-25 10:23:12 +00:00
Дмитрий Захаров f17badaa68 VEGA-6262: исправление отображения иконок 2025-12-25 12:53:31 +03:00
Elena Rechkina 32731bda89 Правка ссылок 2025-12-22 19:28:23 +06:00
Elena Rechkina 4afd915f49 Форматирование 2025-12-22 19:24:21 +06:00
Elena Rechkina 54e7130488 Мелкие правки 2025-12-22 19:06:40 +06:00
Elena Rechkina f66984ced0 version 2025-12-22 19:01:32 +06:00
Elena Rechkina b3a8881074 up version 2025-12-22 16:49:21 +06:00
Elena Rechkina 96e7b4827a Подготовка к публикации 2025-12-22 16:48:37 +06:00
Речкина Елена Валерьевна 4019438a48 Merge branch 'fix/content#VEGA-4928' into 'main'
VEGA-4928 Исправление отображения контента details и размер шрифта в содержании

See merge request common/vega/beecloud-docs!73
2025-12-19 14:27:25 +00:00
Русович Виолетта Игоревна 0ad71bd579 VEGA-4928 Исправление отображения контента details и размер шрифта в содержании 2025-12-19 14:27:25 +00:00
Речкина Елена Валерьевна a7e57c575d Merge branch 'fix/search-content#VEGA-5235' into 'main'
VEGA-5235 Исправление отображения контента при поиске

See merge request common/vega/beecloud-docs!68
2025-12-19 05:34:31 +00:00
Русович Виолетта Игоревна 4270668c7c VEGA-5235 Исправление отображения контента при поиске 2025-12-19 05:34:31 +00:00
Elena Rechkina 9432e755e6 Форматирование 2025-12-18 16:11:12 +06:00
Речкина Елена Валерьевна 5e284757e7 Merge branch 'feature/admin' into 'main'
Корректировка раздела "Администрирование" #VEGA-6215

See merge request common/vega/beecloud-docs!71
2025-12-18 09:30:21 +00:00
Речкина Елена Валерьевна bd08e437b6 Корректировка раздела "Администрирование" #VEGA-6215 2025-12-18 09:30:21 +00:00
Elena Rechkina 49a7b5e0b4 Подготовка к публикации 2025-12-18 14:28:23 +06:00
Речкина Елена Валерьевна 81ee62ef52 Merge branch 'fix/content-docs#VEGA-4929' into 'main'
VEGA-5038 Адаптация контента страниц документации

See merge request common/vega/beecloud-docs!33
2025-12-18 07:42:39 +00:00
Русович Виолетта Игоревна 601bec1af2 VEGA-5038 Адаптация контента страниц документации 2025-12-18 07:42:39 +00:00
Речкина Елена Валерьевна efbdef87fa Merge branch 'feature/vdi' into 'main'
VDI_Подготовка описания сервиса #VEGA-4996

See merge request common/vega/beecloud-docs!36
2025-12-18 07:41:34 +00:00
Речкина Елена Валерьевна b794e5aebd VDI_Подготовка описания сервиса #VEGA-4996 2025-12-18 07:41:34 +00:00
Elena Rechkina 9e3bf98788 Правка инф по ограничениям 2025-12-16 13:50:27 +06:00
Elena Rechkina ef38318ce8 Форматирование после слияния 2025-12-15 17:13:35 +06:00
Речкина Елена Валерьевна 6619c5cc7f Merge branch 'feature/free-period' into 'main'
Бесплатный период #VEGA-6071

See merge request common/vega/beecloud-docs!66
2025-12-15 10:12:45 +00:00
Левченко Людмила Алексеевна 70553ded2f Бесплатный период #VEGA-6071 2025-12-15 10:12:45 +00:00
Речкина Елена Валерьевна 184fe5eb1b Merge branch 'feature/vpn' into 'main'
Документация по настройке VPN #VEGA-6073

See merge request common/vega/beecloud-docs!56
2025-12-15 10:11:41 +00:00
Анисин Александр Александрович f6111628b0 Документация по настройке VPN #VEGA-6073 2025-12-15 10:11:41 +00:00
Elena Rechkina 94bc0035d3 Опечатки 2025-12-10 19:59:15 +06:00
Elena Rechkina d2e654bf25 Опечатки 2025-12-10 19:55:40 +06:00
Elena Rechkina 36f291aba4 Форматирование, ссылки 2025-12-10 15:07:23 +06:00
Речкина Елена Валерьевна 41840e657a Merge branch 'feature/data-center' into 'main'
Внесение адреса для дата-центра #VEGA-6069

See merge request common/vega/beecloud-docs!64
2025-12-10 08:52:41 +00:00
Левченко Людмила Алексеевна 64bbd09f15 Внесение адреса для дата-центра #VEGA-6069 2025-12-10 08:52:41 +00:00
Elena Rechkina 18ad8159cd Правки РК 2025-12-10 14:51:01 +06:00
Elena Rechkina 872b9d519f Правки по резервному копированию 2025-12-09 18:06:33 +06:00
Речкина Елена Валерьевна 702190b65a Merge branch 'feature/backup' into 'main'
Резервное копирование #VEGA-4913

See merge request common/vega/beecloud-docs!40
2025-12-09 10:31:13 +00:00
Анисин Александр Александрович ee6b50cb82 Резервное копирование #VEGA-4913 2025-12-09 10:31:13 +00:00
Elena Rechkina de75b64133 Правка навигации 2025-12-09 16:27:29 +06:00
221 changed files with 4669 additions and 3724 deletions
-1
View File
@@ -17,5 +17,4 @@ packages-list.json
/.vale
/.vscode
/.vale.ini
/VimpelcomCAG2.pem
/.markdownlint.json
+40
View File
@@ -0,0 +1,40 @@
deploy-prod:
stage: deploy
image: harbor.vimpelcom.ru/dockerhub/library/alpine:3.21.2
variables:
stand: beecloud-docs.beecloud-docs.cloud.vimpelcom.ru
rules:
- if: $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE == "merge_request_event"
when: never
- if: $CI_PIPELINE_SOURCE == "push"
when: manual
before_script:
- |
sed -i s%https://dl-cdn.alpinelinux.org/%http://rhrepo.vimpelcom.ru/ext/ya/mirrors/% /etc/apk/repositories && \
apk --no-cache add tzdata ca-certificates curl openssh-client yq jq && \
rm -rf /var/cache/apk/*
- which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)
- eval $(ssh-agent -s)
- mkdir -p ~/.ssh
- echo -n "$TECH_SSH_KEY" | tr -d '\r' > ~/.ssh/id_rsa
- chmod 700 ~/.ssh
- chmod 600 ~/.ssh/id_rsa
- >
echo "stand: ${stand}"
ssh-keyscan "${stand}" >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- PRODUCT="$PRODUCT_DMZ"
script:
- >
echo -e "Connect to ${stand}..." &&
scp -o StrictHostKeyChecking=no ci/deploy/deploy.sh "dorootless@${stand}:~/deploy.sh" &&
ssh "dorootless@${stand}" "export CONTAINER_REGISTRY=$CONTAINER_REGISTRY &&
export PRODUCT=$PRODUCT &&
export PRODUCT_VERSION=$PRODUCT_VERSION &&
export IMAGE_NAME=$IMAGE_NAME &&
chmod 700 ~/deploy.sh &&
~/deploy.sh ${IMAGE_NAME} &&
rm -f ~/deploy.sh"
needs:
- job: build-image
optional: true
+1972 -1342
View File
File diff suppressed because it is too large Load Diff
+12 -11
View File
@@ -1,6 +1,6 @@
{
"name": "docs",
"version": "0.6.4",
"version": "0.6.5-main",
"description": "Beeline Cloud docs",
"main": "index.js",
"scripts": {
@@ -15,16 +15,17 @@
},
"license": "MIT",
"dependencies": {
"@beeline/design-tokens": "^1.31.0",
"vue": "3.4.7"
"@beeline/design-tokens": "^1.31.6",
"vue": "^3.5.0"
},
"devDependencies": {
"@docsearch/css": "3.3.0",
"@types/node": "20.10.7",
"@vitejs/plugin-vue": "4.3.4",
"sass": "1.69.7",
"typescript": "^5.8.3",
"vitepress": "1.0.0-rc.40",
"vitepress-plugin-tabs": "0.5.0"
"@docsearch/css": "4.1.0",
"@types/node": "^22.0.0",
"@vitejs/plugin-vue": "^6.0.3",
"sass": "^1.70.0",
"typescript": "^5.9.3",
"vite-plugin-static-copy": "^3.1.4",
"vitepress": "^1.6.4",
"vitepress-plugin-tabs": "^0.7.3"
}
}
}
+122 -66
View File
@@ -1,6 +1,9 @@
import { defineConfig } from 'vitepress'
import { tabsMarkdownPlugin } from 'vitepress-plugin-tabs'
import { viteStaticCopy } from 'vite-plugin-static-copy'
import { overrideComponents } from './override-components'
import { resolve } from 'node:path'
import { fileURLToPath, URL } from 'node:url'
const gitlab = `<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
@@ -47,6 +50,7 @@ export default defineConfig({
description: "Документация Beeline Cloud",
head: [['link', { rel: 'icon', type: 'image/png', sizes: '32x32', href: '/bee-favicon.png' }]],
base: typeof new_version !== 'undefined' ? '/' : '/docs/',
appearance: false,
markdown: {
config(md) {
md.use(tabsMarkdownPlugin)
@@ -54,8 +58,31 @@ export default defineConfig({
},
vite: {
resolve: {
alias: overrideComponents(),
}
alias: [
...overrideComponents(),
{
find: '@',
replacement: fileURLToPath(new URL('./theme', import.meta.url))
},
],
},
plugins: [
viteStaticCopy({
targets: [
{
src: resolve(__dirname, '../../node_modules/@beeline/design-tokens/assets/fonts'),
dest: 'assets',
},
],
}),
],
css: {
preprocessorOptions: {
scss: {
api: 'modern-compiler',
},
},
},
},
locales: {
root: {
@@ -80,14 +107,8 @@ export default defineConfig({
buttonAriaLabel: 'Поиск'
},
modal: {
noResultsText: 'Не удалось загрузить данные',
noResultsText: 'По вашему запросу ничего не найдено',
resetButtonTitle: 'Сбросить',
displayDetails: 'Показать расширенный список',
footer: {
selectText: 'Выбрать',
closeText: 'Закрыть',
navigateText: 'Перейти',
}
}
}
}
@@ -138,44 +159,25 @@ export default defineConfig({
{text: 'Бесплатный период', link: '/start/trial.md'},
{text: 'Платное использование', link: '/start/organization.md'},
],
// '/billing/': [
// ],
'/backups/': [
{
text: 'Киберпротект', link: '/backups/cyberprotect/about.md',
text: 'Резервное копирование', link: '/backups/index.md',
},
{
text: 'Обзор сервиса', link: '/backups/backups-overview.md',
collapsed: true,
items: [
{ text: 'Обзор', link: '/backups/cyberprotect/overview.md' },
{ text: 'Быстрый старт', link: '/backups/cyberprotect/quick-start.md' },
{
text: 'Планы защиты', link: '/backups/cyberprotect/plans/index.md',
collapsed: true,
items: [
{ text: 'Создать план защиты', link: '/backups/cyberprotect/plans/create-protection-plan.md' },
{ text: 'Удалить план защиты', link: '/backups/cyberprotect/plans/delete-protection-plan.md' },
{ text: 'Редактировать план защиты', link: '/backups/cyberprotect/plans/edit-protection-plan.md' },
]
},
{
text: 'Пользователи', link: '/backups/cyberprotect/users/index.md',
collapsed: true,
items: [
{ text: 'Активировать аккаунт', link: '/backups/cyberprotect/users/activate-account.md' },
{ text: 'Добавить пользователя', link: '/backups/cyberprotect/users/add-user.md' },
{ text: 'Удалить учетную запись', link: '/backups/cyberprotect/users/delete-user.md' },
{ text: 'Отключить учетную запись', link: '/backups/cyberprotect/users/disable-user.md' },
{ text: 'Роли', link: '/backups/cyberprotect/users/roles.md' },
]
},
{
text: 'Работа с серверами', link: '/backups/cyberprotect/vm/index.md',
collapsed: true,
items: [
{ text: 'Установить агент и добавить сервер в Киберпротект', link: '/backups/cyberprotect/vm/install-cyberprotect.md' },
{ text: 'Удалить сервер из Киберпротекта', link: '/backups/cyberprotect/vm/delete-vm-from-cp.md' },
{ text: 'Удалить агент с сервера', link: '/backups/cyberprotect/vm/delete-cyberproject-from-vm.md' },
]
},
]
items: [
{text: 'О сервисе', link: '/backups/about.md'},
{text: 'Квоты и лимиты', link: '/backups/backup-quatos.md'},
]
},
{text: 'Резервное копирование виртуальных машин Beeline Cloud', link: '/backups/backup-internal-infra.md'},
{text: 'Резервное копирование собственной инфраструктуры в Beeline Cloud', link: '/backups/backup-external-infra.md'},
{text: 'Каталог резервных копий', link: '/backups/view-backups.md'},
],
'/vdc/': [
{
@@ -185,8 +187,9 @@ export default defineConfig({
text: 'Обзор сервиса', link: '/vdc/vdc-overview.md',
collapsed: true,
items: [
{ text: 'Техническое описание', link: '/vdc/vdc-tech.md' },
{ text: 'Квоты и лимиты', link: '/vdc/vdc-quatos.md' },
{ text: 'О сервисе', link: '/vdc/vdc-about.md' },
{ text: 'Техническое описание', link: '/vdc/vdc-tech.md' },
{ text: 'Квоты и лимиты', link: '/vdc/vdc-quatos.md' },
]
},
{
@@ -215,15 +218,13 @@ export default defineConfig({
{text: 'VMware Tools', link: '/vdc/vdc-how-to/vm/vmware-tools.md'},
],
},
{ text: 'Диски',
{ text: 'Диски', link: '/vdc/vdc-how-to/disks/disks-index.md',
collapsed: true,
items: [
{text: 'Обзор', link: '/vdc/vdc-how-to/disks/about.md'},
{text: 'Создание диска', link: '/vdc/vdc-how-to/disks/create-disk.md'},
{text: 'Проверка состояния диска', link: '/vdc/vdc-how-to/disks/view-disk.md'},
{text: 'Подключение выделенного диска к ВМ', link: '/vdc/vdc-how-to/disks/attach-disk.md'},
{text: 'Отключение выделенного диска от ВМ', link: '/vdc/vdc-how-to/disks/detach-disk.md'},
{text: 'Изменение владельца выделенного диска', link: '/vdc/vdc-how-to/disks/change-owner.md'},
{text: 'Управление выделенными дисками', link: '/vdc/vdc-how-to/disks/attach-disk.md'},
{text: 'Изменение политики хранения дисков ВМ', link: '/vdc/vdc-how-to/disks/change-storage-policy-of-vm.md'},
{text: 'Редактирование параметров диска', link: '/vdc/vdc-how-to/disks/edit-disk.md'},
{text: 'Удаление диска', link: '/vdc/vdc-how-to/disks/delete-disk.md'},
@@ -237,7 +238,18 @@ export default defineConfig({
{text: 'Подключение ВМ в vApp к сети', link: '/vdc/vdc-how-to/networks/connect-vapp-to-network.md'},
{text: 'Подключение ВМ к интернету', link: '/vdc/vdc-how-to/networks/connect-vm-to-network.md'},
{text: 'Создание сети в организации и подключение к Edge Gateway', link: '/vdc/vdc-how-to/networks/create-network.md'},
{text: 'Подключение сети к Edge Gateway', link: '/vdc/vdc-how-to/networks/isolated-to-routed.md'},
{text: 'Подключение сети к Edge Gateway', link: '/vdc/vdc-how-to/networks/connect-to-edge-gateway.md'},
{text: 'Создание Pre-Shared Key', link: '/vdc/vdc-how-to/networks/create-psk.md'},
{ text: 'Настройка site-to-site подключения с помощью IPSec', link: '/vdc/vdc-how-to/networks/how-to-setup-ipsec-vpn.md',
collapsed: true,
items: [
{text: 'Настройка IPSec VPN', link: '/vdc/vdc-how-to/networks/ipsec/setup-ipsec-vpn.md'},
{text: 'Настройка ASAv', link: '/vdc/vdc-how-to/networks/ipsec/asav.md'},
{text: 'Настройка CSR 1000v', link: '/vdc/vdc-how-to/networks/ipsec/csr1000v.md'},
{text: 'Настройка Fortigate', link: '/vdc/vdc-how-to/networks/ipsec/fortigate.md'},
{text: 'Проверить сетевую связанность', link: '/vdc/vdc-how-to/networks/ipsec/check-vpn-status.md'},
],
},
],
},
{ text: 'Пользователи и роли', link: '/vdc/vdc-how-to/users/users-index.md',
@@ -287,9 +299,34 @@ export default defineConfig({
{ text: 'Управление ВМ', link: '/compute/compute-how-to/compute-servers-manage.md' },
],
},
{ text: 'Диски', link: '/compute/compute-how-to/compute-disks.md' },
{ text: 'IP-адреса', link: '/compute/compute-how-to/compute-ip.md' },
{ text: 'Группы размещения', link: '/compute/compute-how-to/compute-affinity.md' },
{ text: 'Диски', link: '/compute/compute-how-to/compute-disks/compute-disk-index.md',
collapsed: true,
items: [
{ text: 'Обзор', link: '/compute/compute-how-to/compute-disks/compute-disk-about.md' },
{ text: 'Создание диска', link: '/compute/compute-how-to/compute-disks/compute-disk-create.md' },
{ text: 'Управление дисками', link: '/compute/compute-how-to/compute-disks/compute-disk-manage.md' },
{ text: 'Удаление диска', link: '/compute/compute-how-to/compute-disks/compute-disk-del.md' },
]
},
{ text: 'IP-адреса', link: '/compute/compute-how-to/compute-ip/compute-ip-index.md',
collapsed: true,
items: [
{ text: 'Обзор', link: '/compute/compute-how-to/compute-ip/compute-ip-about.md' },
{ text: 'Просмотр IP-адресов', link: '/compute/compute-how-to/compute-ip/compute-ip-view.md' },
{ text: 'Создание IP-адреса', link: '/compute/compute-how-to/compute-ip/compute-ip-create.md' },
{ text: 'Управление IP-адресами', link: '/compute/compute-how-to/compute-ip/compute-ip-manager.md' },
{ text: 'Удаление IP-адреса', link: '/compute/compute-how-to/compute-ip/compute-ip-del.md' },
]
},
{ text: 'Группы размещения', link: '/compute/compute-how-to/compute-placement-groups/compute-placement-groups-index.md',
collapsed: true,
items: [
{ text: 'Обзор', link: '/compute/compute-how-to/compute-placement-groups/compute-placement-groups-about.md'},
{ text: 'Создание группы размещения', link: '/compute/compute-how-to/compute-placement-groups/compute-placement-groups-create.md'},
{ text: 'Управление группами размещения', link: '/compute/compute-how-to/compute-placement-groups/compute-placement-groups-manager.md' },
{ text: 'Удаление группы размещения', link: '/compute/compute-how-to/compute-placement-groups/compute-placement-groups-del.md' },
]
},
{ text: 'Сети', link: '/compute/compute-how-to/compute-network/compute-network-index.md',
collapsed: true,
items: [
@@ -303,20 +340,39 @@ export default defineConfig({
text: 'Администрирование', link: '/admin/index.md',
},
{text: 'Управление ключевыми парами', link: '/admin/ssh.md'},
],
'/billing/': [
{ text: 'Биллинг', link: '/billing/about.md',
collapsed: true,
items: [
{ text: 'Аналитика потребления', link: '/billing/usage-analytics.md' },
],
},
],
'/monitoring/': [
{
text: 'Мониторинг', link: '/monitoring/about.md',
},
],
'/vdi/': [
{
text: 'Виртуальные рабочие столы', link: '/vdi/index.md',
},
{
text: 'Обзор сервиса', link: '/vdi/vdi-overview.md',
collapsed: true,
items: [
{ text: 'О сервисе', link: '/vdi/vdi-about.md' },
{ text: 'Техническое описание', link: '/vdi/vdi-tech.md' },
{ text: 'Квоты и лимиты', link: '/vdi/vdi-quatos.md' },
{ text: 'Тарификация', link: '/vdi/vdi-tarif.md' },
]
},
{
text: 'Заказ виртуальных рабочих столов', link: '/vdi/vdi-how-to/vdi-create.md'
},
{
text: 'Настройка сервиса', link: '/vdi/vdi-how-to/vdi-nastroika.md',
collapsed: true,
items: [
{ text: 'Настройка интеграции с Active Directory', link: '/vdi/vdi-how-to/vdi-connect-to-ad.md' },
{ text: 'Настройка сети', link: '/vdi/vdi-how-to/vdi-interconnect.md' },
]
},
// {
// text: 'Gold-образ', link: '/vdi/vdi-how-to/vdi-gold.md'
// },
{
text: 'Подключение к виртуальному рабочему месту', link: '/vdi/vdi-how-to/vdi-connect.md'
},
],
},
},
}
@@ -54,10 +54,12 @@ const pageName = computed(() =>
<div class="content-container">
<slot name="doc-before" />
<main class="main">
<Content class="vp-doc" :class="[
pageName,
theme.externalLinkIcon && 'external-link-icon-enabled'
]" />
<div class="vp-doc" :class="[
pageName,
theme.externalLinkIcon && 'external-link-icon-enabled'
]">
<Content />
</div>
<SectionLinkList v-if="frontmatter.section_links" :links="frontmatter.section_links" />
</main>
<VPDocFooter>
@@ -74,7 +76,7 @@ const pageName = computed(() =>
</template>
<style scoped lang="scss">
@use 'src/assets/scss/app/helpers/media';
@use '@/scss/helpers/media';
.VPDoc {
padding: 32px 24px 96px;
@@ -6,6 +6,8 @@ import { usePrevNext } from 'vitepress/dist/client/theme-default/composables/pre
import VPIconEdit from 'vitepress/dist/client/theme-default/components/icons/VPIconEdit.vue'
import VPLink from 'vitepress/dist/client/theme-default/components/VPLink.vue'
import VPDocFooterLastUpdated from 'vitepress/dist/client/theme-default/components/VPDocFooterLastUpdated.vue'
import CustomIcon from './CustomIcon.vue'
import { Icons } from '@beeline/design-tokens/js/iconfont/icons'
const { theme, page, frontmatter } = useData()
@@ -43,14 +45,14 @@ const showFooter = computed(() => {
<nav v-if="control.prev?.link || control.next?.link" class="prev-next">
<div class="pager">
<VPLink v-if="control.prev?.link" class="pager-link prev" :href="control.prev.link">
<span class="desc" v-html="theme.docFooter?.prev || 'Previous page'"></span>
<CustomIcon class="desc-prev" :icon="Icons.ArrowRight" />
<span class="title" v-html="control.prev.text"></span>
</VPLink>
</div>
<div class="pager">
<VPLink v-if="control.next?.link" class="pager-link next" :href="control.next.link">
<span class="desc" v-html="theme.docFooter?.next || 'Next page'"></span>
<span class="title" v-html="control.next.text"></span>
<CustomIcon class="desc-next" :icon="Icons.ArrowRight" />
</VPLink>
</div>
</nav>
@@ -59,7 +61,7 @@ const showFooter = computed(() => {
<style lang="scss" scoped>
.VPDocFooter {
margin-top: 64px;
margin-top: 40px;
}
.edit-info {
@@ -98,8 +100,6 @@ const showFooter = computed(() => {
}
.prev-next {
border-top: 1px solid var(--vp-c-divider);
padding-top: 24px;
display: grid;
grid-row-gap: 8px;
}
@@ -115,10 +115,19 @@ const showFooter = computed(() => {
display: block;
border: 1px solid var(--vp-c-divider);
border-radius: 8px;
padding: 11px 16px 13px;
padding: 10px 16px 10px 12px;
width: 100%;
height: 100%;
transition: border-color 0.25s;
display: flex;
gap: 8px;
color: #1a73e8;
&.next {
padding: 10px 12px 10px 16px;
justify-content: flex-end;
}
}
.pager-link:hover {
@@ -136,6 +145,14 @@ const showFooter = computed(() => {
font-size: 14px;
font-weight: 500;
color: var(--vp-c-text-2);
&-next {
rotate: -270deg;
}
&-prev {
rotate: -90deg;
}
}
.title {
@@ -33,6 +33,8 @@ import { escapeRegExp } from 'vitepress/dist/client/shared'
import { useData } from 'vitepress/dist/client/theme-default/composables/data'
import { LRUCache } from 'vitepress/dist/client/theme-default/support/lru'
import { createSearchTranslate } from 'vitepress/dist/client/theme-default/support/translation'
import CustomIcon from './CustomIcon.vue';
import { Icons } from '@beeline/design-tokens/js/iconfont/icons';
const emit = defineEmits<{
(e: 'close'): void
@@ -496,21 +498,7 @@ function formMarkRegex(terms: Set<string>) {
:title="$t('modal.resetButtonTitle')"
@click="resetSearch"
>
<svg
width="18"
height="18"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path
fill="none"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M20 5H9l-7 7l7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2Zm-2 4l-6 6m0-6l6 6"
/>
</svg>
<CustomIcon :icon="Icons.Close" size="large" style="padding: 12px 0;" />
</button>
</div>
</form>
@@ -576,12 +564,6 @@ function formMarkRegex(terms: Set<string>) {
<p class="no-results-text">
{{ $t('modal.noResultsText') }}
</p>
<button
class="no-results-button"
@click="retrySearch(searchIndex, filterText)"
>
Попробовать еще раз
</button>
</ul>
</div>
</div>
@@ -610,7 +592,6 @@ function formMarkRegex(terms: Set<string>) {
background: var(--vp-local-search-bg);
width: min(100vw - 60px, 900px);
height: min-content;
max-height: min(100vh - 128px, 900px);
border-radius: 12px;
}
@@ -679,7 +660,7 @@ function formMarkRegex(terms: Set<string>) {
}
.search-actions button {
padding: 8px;
padding: 0px;
}
.search-actions button:not([disabled]):hover,
@@ -728,11 +709,11 @@ function formMarkRegex(terms: Set<string>) {
overflow-x: hidden;
overflow-y: auto;
overscroll-behavior: contain;
box-shadow: var(--vp-c-shadow-3);
border-radius: 12px;
border: 1px solid rgba(25, 28, 52, 0.18);
padding: 8px 0;
max-height: min(100vh - 214px, 900px);
box-shadow: 0px 6px 38px rgba(0, 0, 0, 0.16), 0px 0px 10px rgba(0, 0, 0, 0.08);
li:hover {
background-color: rgba(25, 28, 52, 0.08);
@@ -745,7 +726,7 @@ function formMarkRegex(terms: Set<string>) {
gap: 8px;
transition: none;
outline: none;
height: 66px;
min-height: 66px;
}
.result > div {
@@ -858,17 +839,18 @@ function formMarkRegex(terms: Set<string>) {
gap: 24px;
align-items: center;
z-index: 100;
box-shadow: 0 0 10 0 rgba(0, 0, 0, 0.16);
box-shadow: 0px 6px 38px rgba(0, 0, 0, 0.16), 0px 0px 10px rgba(0, 0, 0, 0.08);
border-radius: 12px;
border: 1px solid rgba(25, 28, 52, 0.18);
background-color: rgb(255, 255, 255);
}
.no-results-text {
font-weight: 700;
font-weight: 400;
font-size: 17px;
line-height: 22px;
letter-spacing: 0.2px;
color: rgba(25, 28, 52, 0.48);
}
.no-results-button {
@@ -879,6 +861,7 @@ function formMarkRegex(terms: Set<string>) {
font-size: 17px;
line-height: 22px;
letter-spacing: 0.2px;
color: rgba(9, 11, 22, 0.94);
}
svg {
@@ -1,11 +1,329 @@
.custom-block {
padding: 24px;
@use "@beeline/design-tokens/scss/tokens/globals/colors";
@use "@beeline/design-tokens/scss/tokens/themes";
@use '@beeline/design-tokens/scss/tokens/themes/theme-variables' as *;
&-title {
font-size: 18px;
line-height: 22px;
font-weight: 500;
letter-spacing: .2px;
margin-bottom: 12px;
.custom-block {
padding: 24px;
&-title {
font-size: 17px !important;
line-height: 22px !important;
font-weight: 700 !important;
letter-spacing: .2px !important;
margin-bottom: 12px;
}
&.tip a {
color: #1a73e8;
&:hover {
color: #1a73e8;
}
}
}
}
.custom-block {
border: 1px solid transparent;
border-radius: 8px;
padding: 24px 24px 24px 64px;
line-height: 24px;
font-size: var(--vp-custom-block-font-size);
color: var(--vp-c-text-2);
&.custom-block.details {
padding: 0px;
}
}
.custom-block.info {
border-color: var(--vp-custom-block-info-border);
color: var(--vp-custom-block-info-text);
background-color: var(--vp-custom-block-info-bg);
}
.custom-block.info a,
.custom-block.info code {
color: var(--vp-c-brand-1);
}
.custom-block.info a:hover,
.custom-block.info a:hover > code {
color: var(--vp-c-brand-2);
}
.custom-block.info code {
background-color: var(--vp-custom-block-info-code-bg);
}
.custom-block.note {
border-color: var(--vp-custom-block-note-border);
color: var(--vp-custom-block-note-text);
background-color: var(--vp-custom-block-note-bg);
}
.custom-block.note a,
.custom-block.note code {
color: var(--vp-c-brand-1);
}
.custom-block.note a:hover,
.custom-block.note a:hover > code {
color: var(--vp-c-brand-2);
}
.custom-block.note code {
background-color: var(--vp-custom-block-note-code-bg);
}
.custom-block.tip {
border-color: var(--vp-custom-block-tip-border);
color: var(--vp-custom-block-tip-text);
background-color: var(--vp-custom-block-tip-bg);
&::before {
height: 24px;
width: 24px;
background-image: var(--vp-icon-clock);
position: absolute;
left: 24px;
content: '';
}
}
.custom-block.tip a,
.custom-block.tip code {
color: var(--vp-c-tip-1);
}
.custom-block.tip a:hover,
.custom-block.tip a:hover > code {
color: var(--vp-c-tip-2);
}
.custom-block.tip code {
background-color: var(--vp-custom-block-tip-code-bg);
}
.custom-block.important {
border-color: var(--vp-custom-block-important-border);
color: var(--vp-custom-block-important-text);
background-color: var(--vp-custom-block-important-bg);
}
.custom-block.important a,
.custom-block.important code {
color: var(--vp-c-important-1);
}
.custom-block.important a:hover,
.custom-block.important a:hover > code {
color: var(--vp-c-important-2);
}
.custom-block.important code {
background-color: var(--vp-custom-block-important-code-bg);
}
.custom-block.warning {
border-color: var(--vp-custom-block-warning-border);
color: var(--vp-custom-block-warning-text);
background-color: var(--vp-custom-block-warning-bg);
&::before {
height: 24px;
width: 24px;
background-image: var(--vp-icon-info-circled);
position: absolute;
left: 24px;
content: '';
}
}
.custom-block.warning a,
.custom-block.warning code {
color: $color-text-link;
}
.custom-block.warning a:hover,
.custom-block.warning a:hover > code {
color: $color-text-link;
}
.custom-block.warning code {
background-color: var(--vp-custom-block-warning-code-bg);
}
.custom-block.danger {
border-color: var(--vp-custom-block-danger-border);
color: var(--vp-custom-block-danger-text);
background-color: var(--vp-custom-block-danger-bg);
&::before {
height: 24px;
width: 24px;
background-image: var(--vp-icon-warning-triangle);
content: '';
position: absolute;
left: 24px;
}
}
.custom-block.danger a,
.custom-block.danger code {
color: var(--vp-c-danger-1);
}
.custom-block.danger a:hover,
.custom-block.danger a:hover > code {
color: var(--vp-c-danger-2);
}
.custom-block.danger code {
background-color: var(--vp-custom-block-danger-code-bg);
}
.custom-block.caution {
border-color: var(--vp-custom-block-caution-border);
color: var(--vp-custom-block-caution-text);
background-color: var(--vp-custom-block-caution-bg);
}
.custom-block.caution a,
.custom-block.caution code {
color: var(--vp-c-caution-1);
}
.custom-block.caution a:hover,
.custom-block.caution a:hover > code {
color: var(--vp-c-caution-2);
}
.custom-block.caution code {
background-color: var(--vp-custom-block-caution-code-bg);
}
.custom-block.details {
border-color: var(--vp-custom-block-details-border);
color: var(--vp-custom-block-details-text);
background-color: transparent;
border-radius: 12px;
border: 1px solid $color-border;
pre {
border: none !important;
}
div {
margin: 0 !important;
}
&:open {
&.custom-block.details summary {
background-color: $color-background-base-hover;
border-top-left-radius: 12px;
border-top-right-radius: 12px;
&::before {
background-image: var(--vp-icon-nav-arrow-up);
}
}
}
}
.custom-block.details a {
color: var(--vp-c-brand-1);
}
.custom-block.details a:hover,
.custom-block.details a:hover > code {
color: var(--vp-c-brand-2);
}
.custom-block.details code {
background-color: var(--vp-custom-block-details-code-bg);
}
.custom-block-title {
font-weight: 600;
}
.custom-block p + p {
margin: 8px 0;
}
.custom-block.details summary {
margin: 0;
padding: 24px;
font-weight: 500;
cursor: pointer;
user-select: none;
font-size: 19px;
line-height: 24px;
letter-spacing: 0.2px;
display: block;
&::before {
position: absolute;
right: 24px;
content: '';
background-image: var(--vp-icon-nav-arrow-down);
height: 24px;
width: 24px;
}
}
.custom-block.details {
h1, h2, h3, h4, h5, ul, p {
margin: 0 24px;
&:last-child {
margin-bottom: 24px !important;
}
&:first-child {
margin-top: 24px !important;
}
}
ol {
padding: 0 24px;
&:last-child {
margin-bottom: 24px !important;
}
&:first-child {
margin-top: 24px !important;
}
}
}
.custom-block.details summary + p {
padding: 24px;
margin: 0;
}
.custom-block a {
color: inherit;
font-weight: 600;
text-decoration: underline;
text-underline-offset: 2px;
transition: opacity 0.25s;
}
.custom-block a:hover {
opacity: 0.75;
}
.custom-block code {
font-size: var(--vp-custom-block-code-font-size);
}
.custom-block.custom-block th,
.custom-block.custom-block blockquote > p {
font-size: var(--vp-custom-block-font-size);
color: inherit;
}
@@ -4,8 +4,8 @@
.VPDocAside {
.outline-link {
font-weight: 400;
font-size: 17px;
line-height: 22px;
font-size: 15px;
line-height: 18px;
letter-spacing: 0.2px;
padding-top: 8px;
padding-bottom: 8px;
@@ -19,10 +19,11 @@
}
.outline-title {
font-size: 17px;
font-size: 15px;
font-weight: 500;
line-height: 22px;
line-height: 18px;
padding-bottom: 16px;
color: colors.$color-text-black-active;
}
.content {
+534 -103
View File
@@ -1,135 +1,566 @@
@use "@beeline/design-tokens/scss/tokens/globals/colors";
@use "@beeline/design-tokens/scss/tokens/themes";
@use '@beeline/design-tokens/scss/tokens/themes/theme-variables' as *;
@mixin font_style($fontSize, $fontWeight, $lineHeight, $letterSpacing) {
font-size: $fontSize;
font-weight: $fontWeight;
line-height: $lineHeight;
letter-spacing: $letterSpacing;
font-size: $fontSize;
font-weight: $fontWeight;
line-height: $lineHeight;
letter-spacing: $letterSpacing;
}
@mixin generate-numbered-list-styles($start, $end) {
@for $counter from $start through $end {
$counter-name: list + ' ' + ($counter - 1);
ol[start*="#{$counter}"] {
list-style-type: none;
counter-reset: $counter-name;
}
@for $counter from $start through $end {
$counter-name: list + ' ' + ($counter - 1);
ol[start*="#{$counter}"] {
list-style-type: none;
counter-reset: $counter-name;
}
}
}
.vp-doc {
font-size: 17px;
font-size: 17px;
// Titles
h1 {
@include font_style(44px, 500, 46px, 0.3px);
margin-bottom: 24px;
}
// Titles
h1 {
@include font_style(44px, 500, 56px, 0.3px);
margin-bottom: 24px;
}
h2 {
@include font_style(34px, 400, 36px, 0.3px);
margin-bottom: 12px;
}
h2 {
@include font_style(26px, 500, 32px, 0.2px);
margin: 40px 0 24px;
}
h3 {
@include font_style(26px, 500, 32px, 0.2px);
margin-bottom: 12px;
}
h3 {
@include font_style(26px, 500, 32px, 0.2px);
margin-bottom: 12px;
}
h4 {
@include font_style(20px, 700, 28px, 0.2px);
margin-bottom: 12px;
}
h4 {
@include font_style(20px, 700, 28px, 0.2px);
margin-bottom: 12px;
}
h5 {
@include font_style(17px, 500, 22px, 0.2px);
margin-bottom: 12px;
}
h5 {
@include font_style(17px, 500, 22px, 0.2px);
margin-bottom: 12px;
}
// Text
ol {
list-style-type: none;
counter-reset: list;
margin: 0 0 0 50px;
padding: 0 0 5px 0;
font-size: 16px;
// Text
ol {
list-style-type: none;
counter-reset: list;
margin: 0 0 0 50px;
padding: 0;
font-size: 15px;
& > * + * {
margin-top: 50px;
}
& > * + * {
margin-top: 50px;
}
}
@include generate-numbered-list-styles(2, 50);
ol li {
position: relative;
padding: 8px 0 0 0;
line-height: 18px;
}
li + li {
margin-top: 30px;
}
ul li {
padding-bottom: 0;
padding-top: 0;
margin-top: 8px;
@include font_style(15px, 400, 18px, 0.2px);
}
ol li:nth-last-of-type(n+2)::after {
content: '';
border-left: 1px solid rgb(201, 197, 197);
position: absolute;
line-height: 100%;
left: -30px;
top: 43px;
bottom: -25px;
}
ol li::before {
content: counter(list);
counter-increment: list;
display: inline-flex;
position: absolute;
top: 0;
left: -48px;
width: 35px;
height: 35px;
background-color: colors.$color-background-brand;
color: themes.$color-text-active;
@include font_style(15px, 400, 18px, 0.2px);
border-radius: 50%;
justify-content: center;
align-items: center;
}
ul li:nth-last-of-type(n):after {
content: none;
}
ol ul li::before {
counter-increment: list;
content: none;
margin: 0;
padding: 0;
}
ol li:last-child {
margin-bottom: 40px;
}
ul li:last-child {
margin-bottom: 20px;
}
ol li p {
margin-top: 0;
}
p {
@include font_style(15px, 400, 18px, 0.2px);
margin: 24px 0;
}
// Links
a {
color: #1a73e8;
text-decoration: none;
&:hover, &:focus-visible, &:focus, &:active {
color: #1a73e8;
}
@include generate-numbered-list-styles(2, 50);
ol li {
position: relative;
padding: 5px 0 0 0;
line-height: 1.4;
&:visited {
color: #7e00ed;
}
}
}
li + li {
margin-top: 34px;
// Tabs
.plugin-tabs {
border-radius: 12px;
border: 1px solid $color-border;
background-color: revert-layer !important;
&--tab {
border-bottom: 1px solid transparent;
}
&--content {
padding: 24px !important;
.language- {
border: none;
padding: 0px !important;
overflow-y: hidden !important;
overflow-x: hidden !important;
}
}
}
ul li {
padding-bottom: 0;
padding-top: 0;
margin-top: 8px;
}
ol li::before {
content: counter(list);
counter-increment: list;
display: inline-flex;
position: absolute;
top: 0;
left: -48px;
width: 35px;
height: 35px;
background-color: colors.$color-background-brand;
color: themes.$color-text-active;
text-align: center;
line-height: 25px;
font-size: 16px;
border-radius: 50%;
justify-content: center;
align-items: center;
}
// Code
.vp-doc :not(pre, h1, h2, h3, h4, h5, h6) > code {
font-size: var(--vp-code-font-size);
color: var(--vp-code-color);
}
ul li:nth-last-of-type(n):after {
content: none;
}
.vp-doc :not(pre) > code {
border-radius: 4px;
padding: 3px 6px;
background-color: var(--vp-code-bg);
transition:
color 0.25s,
background-color 0.5s;
}
ol ul li::before {
counter-increment: list;
content: none;
margin: 0;
padding: 0;
}
.vp-doc a > code {
color: var(--vp-code-link-color);
}
ol li:last-child, ul li:last-child {
margin-bottom: 40px;
}
.vp-doc a:hover > code {
color: var(--vp-code-link-hover-color);
}
ol li p {
margin-top: 0;
}
.vp-doc h1 > code,
.vp-doc h2 > code,
.vp-doc h3 > code {
font-size: 0.9em;
}
p {
line-height: 22px;
}
.vp-doc div[class*='language-'],
.vp-block {
position: relative;
margin: 16px -24px;
background-color: transparent;
overflow-x: auto;
transition: background-color 0.5s;
}
// Links
a {
color: #1a73e8;
@media (min-width: 640px) {
.vp-doc div[class*='language-'],
.vp-block {
border-radius: 12px;
margin: 16px 0;
}
}
&:hover, &:focus-visible, &:focus, &:active {
color: #1a73e8;
}
@media (max-width: 639px) {
.vp-doc li div[class*='language-'] {
border-radius: 8px 0 0 8px;
}
}
&:visited {
color: #7e00ed;
}
}
}
.vp-doc div[class*='language-'] + div[class*='language-'],
.vp-doc div[class$='-api'] + div[class*='language-'],
.vp-doc div[class*='language-'] + div[class$='-api'] > div[class*='language-'] {
margin-top: -8px;
}
.vp-doc [class*='language-'] pre,
.vp-doc [class*='language-'] code {
/*rtl:ignore*/
direction: ltr;
/*rtl:ignore*/
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
.vp-doc [class*='language-'] pre {
position: relative;
z-index: 1;
margin: 0;
padding: 24px;
overflow-x: auto;
border-radius: 12px;
border: 1px solid $color-border;
}
.vp-doc [class*='language-'] code {
display: block;
padding: 0px;
width: fit-content;
min-width: 100%;
line-height: var(--vp-code-line-height);
font-size: var(--vp-code-font-size);
color: var(--vp-code-color);
transition: color 0.5s;
}
.vp-doc [class*='language-'] code .highlighted {
background-color: var(--vp-code-line-highlight-color);
transition: background-color 0.5s;
margin: 0 -24px;
padding: 0 24px;
width: calc(100% + 2 * 24px);
display: inline-block;
}
.vp-doc [class*='language-'] code .highlighted.error {
background-color: var(--vp-code-line-error-color);
}
.vp-doc [class*='language-'] code .highlighted.warning {
background-color: var(--vp-code-line-warning-color);
}
.vp-doc [class*='language-'] code .diff {
transition: background-color 0.5s;
margin: 0 -24px;
padding: 0 24px;
width: calc(100% + 2 * 24px);
display: inline-block;
}
.vp-doc [class*='language-'] code .diff::before {
position: absolute;
left: 10px;
}
.vp-doc [class*='language-'] .has-focused-lines .line:not(.has-focus) {
filter: blur(0.095rem);
opacity: 0.4;
transition:
filter 0.35s,
opacity 0.35s;
}
.vp-doc [class*='language-'] .has-focused-lines .line:not(.has-focus) {
opacity: 0.7;
transition:
filter 0.35s,
opacity 0.35s;
}
.vp-doc [class*='language-']:hover .has-focused-lines .line:not(.has-focus) {
filter: blur(0);
opacity: 1;
}
.vp-doc [class*='language-'] code .diff.remove {
background-color: var(--vp-code-line-diff-remove-color);
opacity: 0.7;
}
.vp-doc [class*='language-'] code .diff.remove::before {
content: '-';
color: var(--vp-code-line-diff-remove-symbol-color);
}
.vp-doc [class*='language-'] code .diff.add {
background-color: var(--vp-code-line-diff-add-color);
}
.vp-doc [class*='language-'] code .diff.add::before {
content: '+';
color: var(--vp-code-line-diff-add-symbol-color);
}
.vp-doc div[class*='language-'].line-numbers-mode {
/*rtl:ignore*/
padding-left: 32px;
}
.vp-doc .line-numbers-wrapper {
position: absolute;
top: 0;
bottom: 0;
/*rtl:ignore*/
left: 0;
z-index: 3;
/*rtl:ignore*/
border-right: 1px solid var(--vp-code-block-divider-color);
padding-top: 20px;
width: 32px;
text-align: center;
font-family: var(--vp-font-family-mono);
line-height: var(--vp-code-line-height);
font-size: var(--vp-code-font-size);
color: var(--vp-code-line-number-color);
transition:
border-color 0.5s,
color 0.5s;
}
.vp-doc [class*='language-'] > button.copy {
/*rtl:ignore*/
direction: ltr;
position: absolute;
top: 12px;
/*rtl:ignore*/
right: 12px;
z-index: 3;
border: none;
width: 40px;
height: 40px;
background-color: transparent;
opacity: 1;
cursor: pointer;
background-image: var(--vp-icon-copy);
background-position: 50%;
background-size: 20px;
background-repeat: no-repeat;
transition:
border-color 0.25s,
background-color 0.25s,
opacity 0.25s;
}
.vp-doc [class*='language-']:hover > button.copy,
.vp-doc [class*='language-'] > button.copy:focus {
opacity: 1;
}
.vp-doc [class*='language-'] > button.copy:hover,
.vp-doc [class*='language-'] > button.copy.copied {
border: none;
background-color: transparent;
}
.vp-doc [class*='language-'] > button.copy.copied,
.vp-doc [class*='language-'] > button.copy:hover.copied {
/*rtl:ignore*/
background-color: transparent;
background-image: none;
}
.vp-doc [class*='language-'] > button.copy.copied::before,
.vp-doc [class*='language-'] > button.copy:hover.copied::before {
position: relative;
top: -1px;
/*rtl:ignore*/
transform: translateX(calc(-100% - 1px));
display: flex;
justify-content: center;
align-items: center;
border: none;
/*rtl:ignore*/
border-right: 0;
padding: 0 10px;
width: fit-content;
height: 40px;
text-align: center;
font-size: 12px;
font-weight: 500;
color: var(--vp-code-copy-code-active-text);
white-space: nowrap;
content: '';
}
.vp-doc [class*='language-'] > span.lang {
position: absolute;
top: 2px;
/*rtl:ignore*/
right: 8px;
z-index: 2;
font-size: 12px;
font-weight: 500;
color: var(--vp-code-lang-color);
transition:
color 0.4s,
opacity 0.4s;
}
.vp-doc [class*='language-']:hover > button.copy + span.lang,
.vp-doc [class*='language-'] > button.copy:focus + span.lang {
opacity: 0;
}
// Banner
.vp-doc .custom-block {
margin: 40px 0;
}
.vp-doc .custom-block p {
margin: 8px 0;
line-height: 18px;
}
.vp-doc .custom-block p:first-child {
margin: 0;
}
.vp-doc .custom-block div[class*='language-'] {
margin: 8px 0;
border-radius: 12px;
}
.vp-doc .custom-block div[class*='language-'] code {
font-weight: 400;
background-color: transparent;
}
.vp-doc .custom-block .vp-code-group .tabs {
margin: 0;
border-radius: 8px 8px 0 0;
}
// Table
.vp-doc table {
display: block;
border-collapse: collapse;
overflow-x: auto;
border-radius: 12px;
border: 1px solid $color-border;
// width: 100%;
margin: 24px 0;
}
.vp-doc tr {
border-top: hidden;
transition: background-color 0.5s;
}
.vp-doc tr:nth-child(2n) {
background-color: var(--vp-c-bg-soft);
}
.vp-doc th,
.vp-doc td {
padding: 18px 16px;
padding: 18px 16px;
width: 100vh;
background-color: var(--vp-c-bg);
border: none;
}
.vp-doc tbody tr {
border-top: 1px solid $color-border;
&:last-child{
border-bottom: hidden;
}
}
.vp-doc th {
@include font_style(15px, 500, 20px, 0.2px);
color: $color-text-active;
background-color: var(--vp-c-bg);
border-top: 1px solid $color-border;
}
.vp-doc td {
@include font_style(15px, 400, 18px, 0.2px);
padding: 18px 16px;
background-color: var(--vp-c-bg);
border-right: hidden;
border-left: hidden;
color: $color-text-active;
}
// Block
.vp-doc .custom-block {
margin: 16px 0;
}
.vp-doc .custom-block p {
margin: 8px 0;
line-height: 24px;
}
.vp-doc .custom-block p:first-child {
margin: 0;
}
.vp-doc .custom-block div[class*='language-'] {
margin: 40px 0;
border-radius: 12px;
&.vp-doc .custom-block {
margin: 0;
border: none;
}
}
.vp-doc .custom-block div[class*='language-'] code {
font-weight: 400;
background-color: transparent;
}
.vp-doc .custom-block .vp-code-group .tabs {
margin: 0;
border-radius: 8px 8px 0 0;
}
@@ -1,6 +1,6 @@
@use '@beeline/design-tokens/scss/tokens/components/navigationDrawer';
@use '@beeline/design-tokens/scss/tokens/themes/theme-variables' as theme;
@use 'src/assets/scss/app/helpers/media';
@use '@/scss/helpers/media';
.VPSidebar {
--vp-sidebar-bg-color: var(--vp-c-bg);
@@ -1,3 +1,8 @@
@use '@beeline/design-tokens/scss/font-face';
@use "@beeline/design-tokens/scss/iconfont/iconfont" with (
$font-path-iconfont: '../assets/fonts/iconfont'
);
@use "@beeline/design-tokens/scss/iconfont/icons";
@use '@beeline/design-tokens/scss/tokens/themes/dark';
@use '@beeline/design-tokens/scss/tokens/themes';
-57
View File
@@ -1,57 +0,0 @@
@use "@beeline/design-tokens/scss/iconfont/iconfont" with (
$font-path-iconfont: '/fonts/iconfont'
);
@use "@beeline/design-tokens/scss/iconfont/icons";
$font-path-beeline-sans: '/fonts/beeline-sans' !default;
@mixin beeline-sans-font($type, $weight, $style: normal) {
@font-face {
font-family: "Beeline Sans";
src:url('#{$font-path-beeline-sans}/BeelineSans-#{$type}.woff2') format('woff2'),
url('#{$font-path-beeline-sans}/BeelineSans-#{$type}.woff') format('woff'),
url('#{$font-path-beeline-sans}/BeelineSans-#{$type}.ttf') format('truetype');
font-weight: $weight;
font-style: $style;
}
}
@mixin beeline-sans-font-pair($type, $weight) {
@include beeline-sans-font($type, $weight);
}
@include beeline-sans-font-pair(Regular, 400);
@include beeline-sans-font-pair(Medium, 500);
@include beeline-sans-font-pair(Bold, 700);
@include beeline-sans-font-pair(Black, 900);
$font-path-roboto-mono: '/fonts/roboto-mono' !default;
@mixin roboto-mono-font($type, $weight, $style: normal) {
@font-face {
font-family: "Roboto Mono";
src:url('#{$font-path-roboto-mono}/RobotoMono-#{$type}.woff2') format('woff2'),
url('#{$font-path-roboto-mono}/RobotoMono-#{$type}.woff') format('woff'),
url('#{$font-path-roboto-mono}/RobotoMono-#{$type}.ttf') format('truetype');
font-weight: $weight;
font-style: $style;
}
}
@mixin roboto-mono-font-pair($type, $weight) {
@include roboto-mono-font($type, $weight);
}
@include roboto-mono-font-pair(Light, 300);
@include roboto-mono-font-pair(Regular, 400);
@include roboto-mono-font-pair(Medium, 500);
@include roboto-mono-font-pair(Bold, 700);
@@ -0,0 +1 @@
@forward "media";
@@ -1,3 +1,5 @@
@use "sass:map";
// @deprecated
@mixin media($minWidth, $maxWidth) {
@media (min-width: $minWidth) and (max-width: $maxWidth) {
@@ -27,7 +29,7 @@ $breakpoints: (
);
@mixin max($breakpoint) {
$value: map-get($breakpoints, $breakpoint);
$value: map.get($breakpoints, $breakpoint);
@if $value {
@media (max-width: $value) {
+1 -2
View File
@@ -1,4 +1,3 @@
@use "fonts";
@use "design-system";
@use "design-tokens";
@use "vars";
@use "components";
+15 -7
View File
@@ -111,7 +111,7 @@
:root {
--vp-font-family-base: 'Beeline Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
--vp-font-family-mono: 'Roboto Mono', monospace;
--vp-font-family-mono: 'JetBrains Mono', monospace;
// Code
// --vp-code-font-size: ;
@@ -183,16 +183,18 @@
--vp-custom-block-code-font-size: 17px;
--vp-custom-block-tip-border: transparent;
--vp-custom-block-tip-text: var(--vp-c-text-1);
--vp-custom-block-tip-bg: #f1f1f3;
--vp-custom-block-tip-bg: #f9f9f9;
--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
--vp-custom-block-warning-bg: #fff4e1;
--vp-custom-block-danger-bg: #ffecef;
--vp-custom-block-warning-bg: #e3f2ff;
--vp-custom-block-warning-icon: #1a73e8;
--vp-custom-block-danger-bg: #fff4e1;
--vp-custom-block-danger-icon: #ff9419;
}
.dark {
--vp-custom-block-warning-bg: #3d392a;
--vp-custom-block-warning-bg: #132338;
--vp-custom-block-tip-bg: #36383c;
--vp-custom-block-danger-bg: #371313;
--vp-custom-block-danger-bg: #3d392a;
}
/**
@@ -204,5 +206,11 @@
}
:root {
--vp-icon-copy: url('../../../public/icons/copy.svg');
--vp-icon-clock: url('../../../public/icons/clock.svg');
--vp-icon-info-circled: url('../../../public/icons/info_circled.svg');
--vp-icon-warning-triangle: url('../../../public/icons/warning_triangle.svg');
--vp-icon-nav-arrow-down: url('../../../public/icons/nav_arrow_down.svg');
--vp-icon-nav-arrow-up: url('../../../public/icons/nav_arrow_up.svg');
--vp-sidebar-width: 320px;
}
}
-13
View File
@@ -1,13 +0,0 @@
# Матрица региональной доступности
Регион доступности — это один или несколько центров обработки данных (ЦОД), в которых могут быть размещены компоненты облачной инфраструктуры.
| Регион | Статус | Гипервизор | Процессор | HDD| SSD | NVME|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| **ДатаФорт 1** | Доступен | OpenStack | Intel® Xeon® Gold 6248R | &#10008; | &#10008; | ✅ |
Условные обозначения:
✅ — есть возможность выдачи ресурсов.
&#10008; — нет возможности выдачи ресурсов.
-2
View File
@@ -10,5 +10,3 @@ section_links:
При [регистрации пользователя](../start/getting-started.md#1-регистрация-в-beeline-cloud) в Beeline Cloud создается аккаунт и проект в Beeline Cloud.
С помощью аккаунта можно управлять профилем пользователя - добавлять SSH-ключи, чтобы подключаться к виртуальным машинам без ввода пароля.
В проекте можно создавать ресурсы, добавлять пользователей в проект и управлять доступом к ресурсам.
-40
View File
@@ -1,40 +0,0 @@
# Квоты и лимиты
Ограничения включают в себя лимиты и квоты на потребление ресурсов в проекте.
Квоты ограничивают потребление ресурсов в проекте. В проекте на каждый ресурс выделяется квота, не превышающая лимит.
После создания проекту становятся доступны базовые квоты. Для них установлены значения по умолчанию.
**Базовые квоты**
| Название квоты | Количество |
|---------------------|------------|
| Количество виртуальных ВМов | 3 штуки|
| ЦПУ | 200 |
| ОЗУ | 200 Гбайт |
| Хранилище NVME | 5000 Гбайт |
| Объектное хранилище | 100 Гбайт |
## Просмотр квот проекта
1. Перейдите в консоль управления.
2. В шапке выберите **Проекты**.
3. Откроется список проектов, в которых вы являетесь участником.
4. Нажмите на имя нужного проекта.
5. Откройте раздел **Обзор**.
## Редактирование квот проекта
::: tip Информация
Изменить квоты проекта может пользователь с ролью **Владелец проекта**.
:::
1. Перейдите в консоль управления.
2. В шапке выберите **Проекты**.
3. Откроется список проектов, в которых вы являетесь участником.
4. Нажмите на имя нужного проекта.
5. Откройте раздел **Обзор**.
6. В правом верхнем углу нажмите **Изменить квоты**.
7. Увеличите или уменьшите квоты для ресурсов.
8. Нажмите **Сохранить**.
-49
View File
@@ -1,49 +0,0 @@
# Управление проектами
Проект — это структурная единица публичного облака, в которой содержатся ресурсы: виртуальные машины, хранилища, IP-адреса и др.
Ресурсы могут быть вычислительными и аппаратными.
Вычислительные ресурсы:
- оперативная память (ОЗУ);
- ядра процессора (ЦПУ);
- локальные диски;
- сетевые диски;
- IP-адреса.
Аппаратные ресурсы (ВМы, сети, диски) размещены в центрах обработки данных (ЦОД). Каждый дата-центр разделен на модули. Модули оснащены независимыми системами электропитания и охлаждения.
При получении доступа в публичное облако текущий пользователь становится менеджера проектов. Менеджер проектов может создавать новые проекты, в которых он получает роль владельца проекта. Владелец проекта может добавлять пользователей в проект, назначая им роли.
Доступ к проекту осуществляется из консоли управления.
## Создать проект
1. Перейдите в консоль управления.
2. Нажмите кнопку **Создать → Проект** в правом верхнем углу.
3. Заполните информацию о проекте:
- **Название**: введите наименование проекта.
- **Идентификатор**: введите идентификатор проекта:
- допустимы строчные и прописные буквы латинского алфавита, цифры и дефис;
- длина не более 64 символов;
- не должно начинаться или заканчиваться дефисом.
- **Описание**: введите краткое описание проекта.
4. Нажмите **Создать**.
## Изменить имя проекта
::: tip Информация
Изменить имя и описание проекта может только пользователь с ролью **Владелец проекта**.
:::
1. Перейдите в консоль управления.
2. В шапке выберите **Проекты**.
3. Откроется список проектов, в которых вы являетесь участником.
4. Нажмите на имя нужного проекта.
5. Откройте раздел **Настройки → Основное**.
6. Измените имя, описание проекта.
7. Нажмите **Сохранить**.
## Удаление проекта
Функциональность не предусмотрена в публичном облаке.
-49
View File
@@ -1,49 +0,0 @@
# Ролевая модель
Управление проектом основано на ролевой модели.
**Базовые роли**
В проекте предусмотрен базовый набор ролей:
- **Владелец продукта** — управление пользователями проекта, просмотр ресурсов.
- **DevOps-инженер** — управление инфраструктурой, стандартное администрирование ОС UNIX по протоколу ssh и права управления виртуальными ВМами и дисками в консоли управления.
## Матрица ролей
| Действие | Владелец проекта | DevOps-инженер |
|---|---|---|
| Обзор проекта<br> (квоты и количество использованных ресурсов)| &#9989; | &#9989; |
| ВМы: обзор | &#9989; | &#9989; |
| ВМы: мониторинг | &#9989; | &#9989; |
| ВМы: создать ВМ |&#10008; | &#9989; |
| ВМы: подключить диск | &#10008; | &#9989; |
| ВМы: отключить диск | &#10008; | &#9989; |
| ВМы: добавить диск | &#10008; | &#9989; |
| ВМы: теги | &#10008; |&#9989; |
| ВМы: масштабирование ВМа | &#10008; | &#9989; |
| ВМы: выключить ВМ | &#10008; | &#9989; |
| ВМы: включить ВМ | &#10008; | &#9989; |
| ВМы: перезагрузить ВМ | &#10008; | &#9989; |
| ВМы: принудительно перезагрузить ВМ | &#10008; | &#9989; |
| ВМы: удалить ВМ | &#10008; | &#9989; |
| ВМы: группы размещения | &#10008; | &#9989; |
| ВМы: IP-адреса | &#10008; | &#9989; |
| Диски: просмотр дисков | &#9989; | &#9989; |
| Диски: добавление дискового пространства | &#10008; | &#9989; |
| Диски: удалить диск| &#10008; | &#9989; |
| Объектное хранилище: просмотр| &#9989; | &#9989; |
| Объектное хранилище: добавить хранилище | &#10008; | &#9989; |
| Объектное хранилище: удалить хранилище | &#10008; | &#9989;|
| DNS: добавить зону | &#10008; | &#9989; |
| DNS: редактировать зону | &#10008; | &#9989; |
| DNS: удалить зону |&#10008; | &#9989; |
| Настройки проекта: просмотр| &#9989; | &#9989; |
| Настройки проекта: изменить описание проекта |&#9989; | &#10008; |
| Участники: просмотр | &#9989; | &#9989; |
| Участники: добавить участника | &#9989; | &#10008; |
| Участники: удалить участника | &#9989; | &#10008; |
| Участники: назначить роль | &#9989;| &#10008; |
| Квоты: просмотр | &#9989; | &#9989; |
| Веб-обработчики | &#10008; | &#9989; |
| Наблюдаемость | &#9989; | &#9989; |
-47
View File
@@ -1,47 +0,0 @@
# Управление пользователями в проекте
В консоли управления можно добавлять пользователей, управлять ролями пользователей в проекте. Один пользователей может участвовать в нескольких проектах и иметь в них разные роли.
::: tip Информация
Добавлять и удалять пользователей, изменять права пользователей в проекте может только владелец проекта.
:::
## Добавить пользователя
1. Перейдите в консоль управления.
2. Откройте **Настройки → Участники**.
3. Нажмите **Добавить пользователя**.
4. Найдите пользователя по ФИО или email.
5. Назначьте [роль](../admin/roles.md) пользователю.
6. Нажмите **Добавить**.
## Назначить права пользователю
Каждому пользователю проекта должна быть выдана хотя бы одна роль. У пользователя может быть несколько ролей в одном проекте.
1. Перейдите в консоль управления.
2. Откройте **Настройки → Участники**.
3. Найдите пользователя.
4. Нажмите &#10247; в строке с именем пользователя и выберите **Редактировать**.
5. Назначьте [роль](../admin/roles.md) пользователю: установите флажок напротив роли.
6. Нажмите **Сохранить**.
Права на существующие ОС применятся в течение 10 минут.
## Отозвать права у пользователя
1. Перейдите в консоль управления.
2. Откройте **Настройки → Участники**.
3. Найдите пользователя.
4. Нажмите &#10247; в строке с именем пользователя и выберите **Редактировать**.
5. Отзовите роль у пользователя: уберите флажок напротив роли. Оставьте пользователю хотя бы одну роль в проекте.
6. Нажмите кнопку **Сохранить**.
## Удалить пользователя
1. Перейдите в консоль управления.
2. Откройте **Настройки → Участники**.
3. Найдите пользователя.
4. Нажмите &#10247; в строке с именем пользователя и выберите **Удалить**.
Пользователь будет удален из списка участников проекта. Ресурсы проекта станут недоступны пользователю.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-38
View File
@@ -1,38 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/themes' as *;
:root {
--app-navbar-height: #{$app-navbar-height};
}
* {
box-sizing: border-box;
}
html,
body {
margin: 0;
padding: 0;
width: 100%;
height: 100vh;
}
html {
overflow-y: auto;
}
#app {
height: 100vh;
}
html.dark-theme {
background-color: $color-background-base;
color: $color-text-active;
}
a:visited {
color: $color-text-active !important;
}
a:hover {
text-decoration: none !important;
}
-5
View File
@@ -1,5 +0,0 @@
@import 'variables';
@import 'base';
@import 'form';
@import 'helpers';
@import 'components';
-3
View File
@@ -1,3 +0,0 @@
// Navbar
$app-navbar-height: 3.5rem;
$app-header-height: 64px;
-122
View File
@@ -1,122 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/themes' as *;
@use '@beeline/design-tokens/scss/tokens/components/fab' as *;
@use '@beeline/design-tokens/scss/tokens/components/button' as *;
@use '@beeline/design-tokens/scss/tokens/globals' as *;
@use '@beeline/design-tokens/scss/mixin';
@mixin fab_button {
background-color: $button-overlay-background-color;
padding-left: $button-only-text-small-padding-horizontal;
padding-right: $button-only-text-small-padding-horizontal;
letter-spacing: $button-small-text-font-letter-spacing;
line-height: $button-small-text-font-line-height;
font-size: $button-small-text-font-size;
height: $button-small-height;
color: $button-overlay-text-color;
box-shadow: none;
border: 1px solid $button-outline-border-color;
border-radius: $button-border-radius;
&:hover {
cursor: pointer;
background-color: $button-overlay-background-color-hover;
}
}
.app-fab {
height: $fab-standard-height;
width: $fab-standard-width;
position: fixed;
z-index: 50;
display: inline-flex;
align-items: center;
border: 0;
padding: $fab-standard-padding;
letter-spacing: $fab-text-font-letter-spacing;
line-height: $fab-text-font-line-height;
font-size: $fab-text-font-size;
font-weight: $fab-text-font-weight;
box-shadow: $fab-shadow;
background-color: $color-background-inverse;
color: $color-text-active-inverse;
cursor: pointer;
&__icon {
width: 24px;
height: 24px;
}
&:hover {
// background-color: $fab-hover-background-color;
}
&--focused {
border-color: $fab-focused-border-color;
border-width: $fab-focused-border-width;
}
&--mini {
height: $fab-mini-height;
width: $fab-mini-width;
border-radius: $fab-mini-border-radius;
padding: $fab-mini-padding;
}
&--extended {
height: $fab-extended-height;
border-radius: $fab-extended-border-radius;
padding-right: $fab-extended-padding-right;
padding-left: $fab-extended-padding-left;
& &__icon {
margin-right: $fab-extended-icon-spacing;
}
}
.app-fab--extended.app-fab--mini {
height: $fab-mini-height;
}
&--disabled {
opacity: $fab-disabled-opacity;
}
}
.app-fab-dialog {
position: fixed;
bottom: 44px;
right: 0;
// background-color: $color-background-medium;
background-color: transparent;
// border-radius: 12px;
padding: 1rem;
// border: 1px solid $color-border;
// min-width: 300px;
// box-shadow: $elevation-medium;
.icon-contained {
display: inline-flex;
justify-content: center;
align-items: center;
width: 40px;
height: 40px;
background-color: $color-status-neutral-background;
color: $color-status-neutral;
border-radius: 12px;
}
#feedback_button {
@include fab_button();
}
#bug_button {
@include fab_button();
line-height: 38px;
}
a#bug_button,
a#bug_button:visited,
a#bug_button:active {
color: $button-overlay-text-color !important;
}
}
@@ -1 +0,0 @@
@import 'fab';
-1
View File
@@ -1 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/components/formfield' as formfield;
-104
View File
@@ -1,104 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/components/textarea' as *;
@use '@beeline/design-tokens/scss/tokens/components/formfield';
@use '@beeline/design-tokens/scss/tokens/themes';
.textarea-field {
$px: 16px;
display: block;
width: 100%;
position: relative;
padding: $textarea-without-label-medium-text-margin-top $px $textarea-text-margin-bottom;
height: $textarea-without-label-medium-height;
background: formfield.$formfield-background-color;
border: formfield.$formfield-border-width formfield.$formfield-border-style formfield.$formfield-border-color;
border-radius: formfield.$formfield-border-radius;
& &__label {
position: absolute;
top: $textarea-with-label-text-margin-top;
left: $px;
transition: font-size 300ms ease-out;
color: formfield.$formfield-label-color;
}
& textarea {
height: $textarea-medium-text-height;
width: 100%;
outline: none;
border: none;
box-shadow: none;
resize: none;
background-color: transparent;
color: themes.$color-text-active;
}
& &__resizer {
position: absolute;
bottom: $textarea-resizer-margin-bottom;
right: $textarea-resizer-margin-right;
rotate: -45deg;
width: 1em;
height: 1em;
&:hover {
cursor: nwse-resize;
}
&::before {
content: '';
display: flex;
background-color: darkslategrey;
width: 10px;
height: 1px;
}
&::after {
content: '';
display: flex;
position: relative;
right: -3px;
bottom: -2px;
background-color: darkslategrey;
width: 4px;
height: 1px;
}
}
&.textarea-field--with-label {
height: $textarea-with-label-medium-height;
padding-top: $textarea-with-label-text-margin-top;
&.textarea-field--floated .textarea-field__label {
top: $textarea-medium-label-floated-margin-top;
line-height: $textarea-small-label-floated-font-line-height;
font-size: $textarea-small-label-floated-font-size;
}
&.textarea-field--small {
height: $textarea-with-label-small-height;
padding-top: $textarea-small-label-margin-top;
top: $textarea-small-label-floated-margin-top;
& .textarea-field__label {
font-size: $textarea-small-label-font-size;
font-weight: $textarea-small-label-font-weight;
letter-spacing: $textarea-small-label-font-letter-spacing;
}
}
}
&.textarea-field--focused {
border-color: formfield.$formfield-border-color-focus;
background-color: transparent;
}
&.textarea-field--small {
padding-top: $textarea-without-label-small-text-margin-top;
height: $textarea-without-label-small-height;
& textarea {
height: $textarea-small-text-height;
}
}
}
-70
View File
@@ -1,70 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/components/textfield' as *;
@use '@beeline/design-tokens/scss/tokens/globals';
@use '@beeline/design-tokens/scss/tokens/themes' as theme;
.textfield {
display: block;
position: relative;
width: 100%;
height: globals.$size-control-height-medium;
border: globals.$size-border-width-regular solid transparent;
padding-top: $textfield-without-label-medium-text-margin-vertical;
padding-bottom: $textfield-without-label-medium-text-margin-vertical;
background-color: theme.$color-control-background;
border-radius: 12px; // globals.$size-border-radius-x6;
&:hover {
background-color: theme.$color-control-background-hover;
}
// input
input {
outline: none;
box-shadow: none;
}
// label
&--with-label {
// padding-top: $textfield-with-label-medium-text-margin-top;
// padding-bottom: $textfield-with-label-medium-text-margin-bottom;
}
&__label {
// padding-top: $textfield-medium-label-margin-top;
&.textfield__label--floated {
// padding-top: $textfield-medium-label-margin-top-floated;
}
}
// small
&--small {
height: globals.$size-control-height-small;
}
// large
&--large {
height: globals.$size-control-height-large;
padding-top: $textfield-without-label-large-text-margin-vertical;
padding-bottom: $textfield-without-label-large-text-margin-vertical;
&.textfield--with-label {
padding-top: $textfield-with-label-large-text-margin-top;
padding-bottom: $textfield-with-label-large-text-margin-bottom;
}
.textfield__label {
padding-top: $textfield-large-label-margin-top;
&.textfield__label--floated {
padding-top: $textfield-large-label-margin-top-floated;
}
}
}
// states
&--focused {
border-color: theme.$color-border-focus;
background-color: theme.$color-background-base;
}
}
-5
View File
@@ -1,5 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/themes' as *;
.app-bg-status-error {
background-color: $color-status-error-background;
}
-3
View File
@@ -1,3 +0,0 @@
.app-cursor-pointer {
cursor: pointer;
}
-4
View File
@@ -1,4 +0,0 @@
@import 'text';
@import 'color';
@import 'media';
@import 'common';
-80
View File
@@ -1,80 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/themes' as theme;
@use 'src/assets/scss/app/mixins' as mixins;
@mixin truncate {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
@mixin truncate-lines($lines: 2) {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: $lines;
overflow: hidden;
text-overflow: ellipsis;
}
.app-text-active {
color: theme.$color-text-active;
}
.app-text-inactive {
color: theme.$color-text-inactive;
}
// styles for hyperlinks
.app-link {
color: theme.$color-text-active;
&:hover {
color: theme.$color-text-active;
}
}
.app-text-caption {
@include mixins.text-caption;
}
.app-text-truncate {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
// Sizes
.app-text-size-subtitle-3 {
font-size: 15px;
line-height: 20px;
font-weight: 500;
letter-spacing: 0.2px;
}
.app-text-size-body-3 {
font-size: 15px;
line-height: 18px;
letter-spacing: 0.2px;
font-weight: 400;
}
// Colors
.app-text-color-caption {
color: theme.$color-text-inactive;
}
.app-text-warning {
color: theme.$color-status-warning;
}
.app-text-info {
color: theme.$color-status-info;
}
.app-text-error {
color: theme.$color-status-error;
}
.app-text-success {
color: theme.$color-status-success;
}
// Breaks
.app-break-keep-all {
word-break: keep-all;
}
-1
View File
@@ -1 +0,0 @@
@import 'spinner';
@@ -1,6 +0,0 @@
@use 'src/assets/scss/app/variables' as v;
.app-loading-screen {
display: block;
height: calc(100vh - v.$app-header-height);
}
-1
View File
@@ -1 +0,0 @@
@forward 'text';
-29
View File
@@ -1,29 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/themes' as theme;
%text_caption {
font-size: 13px;
line-height: 16px;
}
@mixin text_caption {
@extend %text_caption;
color: theme.$color-text-inactive;
}
@mixin text_caption_error {
@extend %text_caption;
color: theme.$color-status-error;
}
@mixin text_body_2 {
font-style: normal;
font-weight: 400;
font-size: 17px;
line-height: 22px;
}
@mixin truncate {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
-10
View File
@@ -1,10 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/themes';
@use '@beeline/design-tokens/scss/tokens/themes/dark';
:root {
@include themes.theme();
}
.dark-theme {
@include themes.theme(dark.$theme);
}
-3
View File
@@ -1,3 +0,0 @@
@use '@beeline/design-tokens/scss/font-face' with (
$font-path-beeline-sans: '../fonts/beeline-sans'
);
-40
View File
@@ -1,40 +0,0 @@
// @use "@beeline/design-tokens/scss/iconfont/iconfont" with (
// $font-path-iconfont: '../fonts/iconfont'
// );
@use '@beeline/design-tokens/scss/iconfont/icons';
@font-face {
font-display: block;
font-family: 'BeelineIcons';
font-style: normal;
font-weight: 400;
src:
url('../fonts/iconfont/BeelineIcons.woff2') format('woff2'),
url('../fonts/iconfont/BeelineIcons.woff') format('woff'),
url('../fonts/iconfont/BeelineIcons.ttf') format('ttf');
}
.beeline-icons {
font-family: 'BeelineIcons', sans-serif;
font-weight: normal;
font-style: normal;
font-size: 24px; /* Preferred icon size */
display: inline-block;
line-height: 1;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
/* Support for all WebKit browsers. */
-webkit-font-smoothing: antialiased;
/* Support for Safari and Chrome. */
text-rendering: optimizeLegibility;
/* Support for Firefox. */
-moz-osx-font-smoothing: grayscale;
/* Support for IE. */
font-feature-settings: 'liga';
}
-4
View File
@@ -1,4 +0,0 @@
@import 'fonts';
@import 'icons';
@import 'base';
@import 'scrollbar';
-29
View File
@@ -1,29 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/themes';
html {
scrollbar-color: themes.$color-text-inactive transparent;
}
* {
scrollbar-width: thin;
}
body::-webkit-scrollbar {
display: none;
}
::-webkit-scrollbar {
width: 15px;
}
::-webkit-scrollbar-track {
background-color: transparent;
}
::-webkit-scrollbar-thumb {
background-color: themes.$color-text-inactive;
border: 4px solid transparent;
background-clip: content-box;
border-radius: 100px;
min-height: 28px;
}
-51
View File
@@ -1,51 +0,0 @@
@use 'sass:map';
@use '@beeline/design-tokens/scss/tokens/globals';
@use '@beeline/design-tokens/scss/tokens/themes/light';
@use '@beeline/design-tokens/scss/tokens/components/button';
// Colors
$primary: globals.$color-background-brand;
$background: map.get(light.$theme, 'color-background-base');
$info: map.get(light.$theme, 'color-status-info');
$success: map.get(light.$theme, 'color-status-success');
$warning: map.get(light.$theme, 'color-status-warning');
$danger: map.get(light.$theme, 'color-status-error');
// Typography
$family-primary: globals.$font-family-text;
$title-color: map.get(light.$theme, 'color-text-active');
$subtitle-color: map.get(light.$theme, 'color-text-inactive');
// Radius
$radius: globals.$size-border-radius-x6;
// Buttons
$button-padding-vertical: globals.$size-spacing-x4;
$button-padding-horizontal: globals.$size-spacing-x5;
$button-background-color: button.$button-plain-background-color;
$button-focus-border-color: map.get(light.$theme, 'color-background-base-focused');
$button-disabled-opacity: button.$button-opacity-disabled;
// Box
$box-radius: $radius;
$box-shadow: globals.$elevation-low;
$box-padding: globals.$size-spacing-x6;
$box-link-hover-shadow: globals.$elevation-medium;
$box-link-active-shadow: globals.$elevation-medium;
// Form
$input-color: map.get(light.$theme, 'color-text-active');
$input-background-color: map.get(light.$theme, 'color-control-background');
$label-color: map.get(light.$theme, 'color-text-inactive');
$label-weight: globals.$font-weight-caption;
// Table
$table-color: map.get(light.$theme, 'color-text-active');
$table-background-color: map.get(light.$theme, 'color-background-base');
$table-cell-border: 1px solid map.get(light.$theme, 'color-control-background');
$table-cell-padding: 16px 16px;
$table-cell-heading-color: map.get(light.$theme, 'color-text-active');
$table-head-cell-border-width: 1px;
@import 'bulma/bulma';
@import 'overrides';
-12
View File
@@ -1,12 +0,0 @@
@use 'sass:map';
@use '@beeline/design-tokens/scss/tokens/themes/dark';
.box {
.dark-theme & {
background-color: map.get(dark.$theme, 'color-background-low');
&:hover {
background-color: map.get(dark.$theme, 'color-background-medium');
}
}
}
@@ -1,11 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/components/button' as button;
@use '@beeline/design-tokens/scss/tokens/themes';
.button {
font-weight: button.$button-medium-text-font-weight;
color: themes.$color-text-active;
&:hover {
color: themes.$color-text-active;
}
}
@@ -1,16 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/themes';
.dropdown {
&-content {
background-color: themes.$color-background-medium;
}
.dropdown-item {
color: themes.$color-text-active;
&:hover {
background-color: themes.$color-background-base-hover;
color: themes.$color-text-active;
}
}
}
@@ -1,7 +0,0 @@
@import 'button';
@import 'title';
@import 'box';
@import 'form';
@import 'table';
@import 'dropdown';
@import 'text';
@@ -1,42 +0,0 @@
@use 'sass:map';
@use '@beeline/design-tokens/scss/tokens/globals';
@use '@beeline/design-tokens/scss/tokens/themes/light';
@use '@beeline/design-tokens/scss/tokens/themes/dark';
@use '@beeline/design-tokens/scss/tokens/components/button';
.table {
.dark-theme & {
color: map.get(dark.$theme, 'color-text-active');
background-color: map.get(dark.$theme, 'color-background-base');
td,
th {
border: 1px solid map.get(dark.$theme, 'color-control-background');
}
th {
color: map.get(dark.$theme, 'color-text-active');
}
}
td,
th {
border-width: 1px;
border-style: solid;
}
th {
font-weight: globals.$font-weight-medium;
}
tbody {
tr {
&:last-child {
td,
th {
border-bottom-width: 1px;
}
}
}
}
}
@@ -1,15 +0,0 @@
@use '@beeline/design-tokens/scss/tokens/themes' as *;
code {
background-color: $color-background-base;
}
pre {
color: $color-text-active;
background-color: $color-background-base;
}
.help {
font-size: 13px;
line-height: 16px;
}
@@ -1,38 +0,0 @@
@use '@beeline/design-tokens/scss/mixin' as bee;
.title {
@include bee.h3();
&.is-1 {
@include bee.h1();
}
&.is-2 {
@include bee.h2();
}
&.is-3 {
@include bee.h3();
}
&.is-4 {
@include bee.h4();
}
&.is-5 {
@include bee.h5();
}
&.is-6 {
@include bee.h6();
}
}
.subtitle {
@include bee.subtitle2();
&.is-1 {
@include bee.subtitle1();
}
&.is-2 {
@include bee.subtitle2();
}
&.is-3 {
@include bee.subtitle3();
}
}
@@ -1,4 +0,0 @@
@import 'shared';
@import 'select';
@import 'input-textarea';
@import 'title';
@@ -1,46 +0,0 @@
@use 'sass:map';
// @use "@beeline/design-tokens/scss/tokens/globals";
@use '@beeline/design-tokens/scss/tokens/themes/light';
@use '@beeline/design-tokens/scss/tokens/themes/dark';
%input-textarea {
box-shadow: none;
border: 1px solid transparent;
color: map.get(light.$theme, 'color-text-active');
background: map.get(light.$theme, 'color-control-background');
&:hover {
border-color: map.get(light.$theme, 'color-border-focus');
}
.dark-theme & {
color: map.get(dark.$theme, 'color-text-active');
background: map.get(dark.$theme, 'color-control-background');
&:hover {
border-color: map.get(dark.$theme, 'color-border-focus');
}
}
&:focus,
&.is-focused,
&:active,
&.is-active {
box-shadow: none !important;
border-color: map.get(light.$theme, 'color-border-focus');
background: map.get(light.$theme, 'color-background-base');
.dark-theme & {
background: map.get(dark.$theme, 'color-background-base');
border-color: map.get(dark.$theme, 'color-border-focus');
}
}
}
.input {
@extend %input-textarea;
}
.textarea {
@extend %input-textarea;
}
@@ -1,48 +0,0 @@
@use 'sass:map';
@use '@beeline/design-tokens/scss/tokens/themes/dark';
@use '@beeline/design-tokens/scss/tokens/themes/light';
.select {
select {
border: 1px solid transparent;
&:focus,
&:active {
border: 1px solid map.get(light.$theme, 'color-border-focus');
background-color: map.get(light.$theme, 'color-background-base');
box-shadow: none;
}
}
&:not(.is-multiple):not(.is-loading)::after {
content: none;
}
&:focus,
&.is-focused,
&:active,
&.is-active {
select {
border: 1px solid map.get(light.$theme, 'color-border-focus');
background-color: map.get(light.$theme, 'color-background-base');
box-shadow: none;
}
.dark-theme & {
select {
border: 1px solid map.get(dark.$theme, 'color-border-focus');
background-color: map.get(dark.$theme, 'color-background-base');
box-shadow: none;
}
}
}
.dark-theme & {
color: map.get(dark.$theme, 'color-text-active');
& select {
color: map.get(dark.$theme, 'color-text-active');
background-color: map.get(dark.$theme, 'color-control-background');
}
}
}
@@ -1,11 +0,0 @@
@use 'sass:map';
@use '@beeline/design-tokens/scss/tokens/globals';
@use '@beeline/design-tokens/scss/tokens/themes/dark';
.label {
line-height: globals.$font-line-height-caption;
.dark-theme & {
color: map.get(dark.$theme, 'color-text-inactive');
}
}
@@ -1,14 +0,0 @@
@use 'sass:map';
@use '@beeline/design-tokens/scss/tokens/themes/dark';
.title {
.dark-theme & {
color: map.get(dark.$theme, 'color-text-active');
}
}
.subtitle {
.dark-theme & {
color: map.get(dark.$theme, 'color-text-inactive');
}
}
-8
View File
@@ -1,8 +0,0 @@
@use 'beeline';
@use 'bulma';
@use 'app';
.proto {
font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
color: #f55;
}
+8
View File
@@ -0,0 +1,8 @@
# О сервисе
Сервиса **Резервное копирование** — это сервис для сохранения данных и конфигураций виртуальных машин с возможностью последующего восстановления. В облачной среде резервные копии позволяют вернуть систему в рабочее состояние после сбоя и поддерживать доступность сервисов.
Резервное копирование подключается:
- для [виртуальных машин, развернутых в Beeline Cloud](./backup-internal-infra.md);
- для [собственной инфраструктуры](./backup-external-infra.md).
+54
View File
@@ -0,0 +1,54 @@
# Резервное копирование собственной инфраструктуры в Beeline Cloud
## Перед началом работы
- Зарегистрируйтесь в [личном кабинете Beeline Cloud](https://console.cloud.beeline.ru/).
- [Создайте](../vdc/vdc-how-to/vdc-create.md#создание-дата-центра) виртуальный дата-центр.
- [Создайте](../vdc/vdc-how-to/vm/create-vm.md) виртуальную машину в виртуальном дата-центре.
## Подключить резервное копирование
1. Войдите в [личный кабинет Beeline Cloud](https://lk.cloud.beeline.ru/).
2. Выберите нужный проект в верхнем меню **Проекты**.
3. В верхнем меню перейдите в **Сервисы****Резервное копирование**.
4. Нажмите кнопку **Создать хранилище**.
5. В разделе **Инфраструктура для копирования** выберите опцию **Локальная**.
6. В разделе **Тип подключения** выберите способ резервного копирования:
- **Veeam Agent**: резервное копирование в beeline cloud при помощи Veeam Agent.
- **Veeam Cloud Connect**: подключение Veeam к облачному репозиторию beeline cloud.
- **Киберпроект**: резервное копирование в beeline cloud при помощи Киберпротект.
:::tabs
== Veeam Agent / Veeam Cloud Connect
- В разделе **Сетевые подключения** выберите тип подключения:
- **Интернет**: интернет-соединение.
- **L2 или L3 канал**: выделенное интернет-соединение.
- для **L2 или L3 канал** укажите способ связи с вами и удобное время для консультации с менеджером Beeline Cloud.
- В разделе **Параметры** укажите:
- **Количество ВМ**: количество виртуальных машин, которое нужно подключить к сервису.
- **Объем хранилища**: объем хранилища для резервных копий.
== Киберпроект
- В разделе **Общее** выберите [дата-центр](../vdc/vdc-how-to/vdc-create.md#создание-дата-центра), к которому нужно подключить резервное копирование.
- В разделе **Параметры** укажите:
- **ВМ**: количество виртуальных машин, которое нужно подключить к сервису.
- **Базы данных**: количество баз данных, которое нужно подключить к сервису.
- **Серверы**: количество серверов, которое нужно подключить к сервису.
- **Устройства**: количество рабочих столов (VDI), которое нужно подключить к сервису.
- **Объем хранилища**: объем хранилища для резервных копий.
:::
7. Нажмите кнопку **Создать хранилище**.
Подключение резервного копирования занимает до 3 дней. Статус подключения сервиса отображается в личном кабинете Beeline Cloud.
Данные для доступа к ПО для настройки резервного копирования будут отправлены на электронную почту, указанную в личном кабинете Beeline Cloud.
+58
View File
@@ -0,0 +1,58 @@
# Резервное копирование виртуальных машин Beeline Cloud
## Перед началом работы
- Зарегистрируйтесь в [личном кабинете Beeline Cloud](https://console.cloud.beeline.ru/).
- [Создайте](../vdc/vdc-how-to/vdc-create.md#создание-дата-центра) виртуальный дата-центр.
- [Создайте](../vdc/vdc-how-to/vm/create-vm.md) виртуальную машину в виртуальном дата-центре.
## Подключить резервное копирование
1. Войдите в [личный кабинет Beeline Cloud](https://lk.cloud.beeline.ru/).
2. Выберите нужный проект в верхнем меню **Проекты**.
3. В верхнем меню перейдите в **Сервисы****Резервное копирование**.
4. Нажмите кнопку **Создать хранилище**.
5. В разделе **Инфраструктура для копирования** выберите опцию **В облаке**.
6. В разделе **Управление** выберите способ резервного копирования:
- **Самостоятельно**.
- **Провайдером**.
:::: tabs
== Провайдером
- В разделе **Общее** выберите [дата-центр](../vdc/vdc-how-to/vdc-create.md#создание-дата-центра), к которому нужно подключить резервное копирование.
- В разделе **Политика резервного копирования** укажите настройки резервного копирования:
- **Глубина хранения**: время хранения резервных копий.
- **Полное резервное копирование**: количество полных копий в день.
- **Инкрементальное резервное копирование**: количество инкрементальных копий в день.
- **Окно резервного копирования**: выберите время запуска резервного копирования.
::: details Чем полная копия отличается от инкрементной?
Полное резервное копирование — это создание копии всех данных виртуальной машины за одну операцию. Полная копия подходит для восстановления без зависимости от других сохранений.
Инкрементное резервное копирование — это сохранение только измененных данных относительно предыдущей копии. Это уменьшает объем хранения и ускоряет процесс при регулярном копировании.
:::
- В разделе **Параметры** укажите:
- **Количество ВМ**: количество виртуальных машин, которое нужно подключить к сервису.
- **Объем хранилища**: объем хранилища для резервных копий.
== Самостоятельно
- В разделе **Общее** выберите [дата-центр](../vdc/vdc-how-to/vdc-create.md#создание-дата-центра), к которому нужно подключить резервное копирование.
- В разделе **Параметры** укажите:
- **Количество ВМ**: количество виртуальных машин, которое нужно подключить к сервису.
- **Объем хранилища**: объем хранилища для резервных копий.
::::
1. Нажмите кнопку **Создать хранилище**.
Подключение резервного копирования занимает до 3 дней. Статус подключения сервиса отображается в личном кабинете Beeline Cloud.
Данные для доступа к ПО для настройки резервного копирования будут отправлены на электронную почту, указанную в личном кабинете Beeline Cloud.
+27
View File
@@ -0,0 +1,27 @@
# Квоты и лимиты
Квоты — это организационные ограничения на количество доступных ресурсов в сервисе. В некоторых случаях квоты могут быть увеличены или уменьшены по запросу.
Лимиты — это технические ограничения на количество доступных ресурсов в сервисе. Ограничения, обычно, связаны с характеристиками оборудования и особенностями архитектуры.
## Квоты
### Бесплатный период
В [бесплатном периоде](../start/trial.md) использования Beeline Cloud установлены квоты на ресурсы сервиса:
| Вид ограничения | Значение |
| ------------------- | -------- |
| Количество хранилищ | 1 |
| Количество виртуальных машин | 5 |
| Объем хранилища | 1 ПБ |
### Платное использование
| Вид ограничения | Значение |
| ------------------- | ------------- |
| Количество хранилищ | Неограниченно |
| Количество виртуальных машин | 999 |
| Объем хранилища | 1 ПБ |
Если вы заключили договор с Beeline Cloud, то объем хранилища и количество ВМ можно увеличить. Для этого обратитесь в [техническую поддержку](../platform/support/support-overview.md).
+11
View File
@@ -0,0 +1,11 @@
---
section_links:
- title: О сервисе
link: /backups/about.md
description: Назначение сервиса
- title: Квоты и лимиты
link: /backups/backup-quatos.md
description: Ограничения на количество ресурсов в сервисе
---
# Обзор сервиса
-22
View File
@@ -1,22 +0,0 @@
---
section_links:
- title: Обзор
link: /backups/cyberprotect/overview.md
description: Описание возможностей Киберпротекта
- title: Быстрый старт
link: /backups/cyberprotect/quick-start.md
description: Как начать работать с сервисом
- title: Планы защиты
link: /backups/cyberprotect/plans/index.md
description: Инструкции по созданию и настройке планов резервного копирования
- title: Работа с серверами
link: /backups/cyberprotect/vm/index.md
description: Руководства по подключению и управлению серверами
- title: Пользователи
link: /backups/cyberprotect/users/index.md
description: Управление пользователями, ролями и доступом
---
# Киберпротект
Киберпротект — это платформа для резервного копирования, защиты данных и обеспечения отказоустойчивости ИТ‑инфраструктуры. В документации Beeline Cloud описана только часть инструкций по установке и эксплуатации Киберпротекта. Подробнее о функциях читайте в [документации вендора](https://cyberprotect.ru/ru-RU/support/documentation/CyberBackupCloud/25.07/user/index.html).
-9
View File
@@ -1,9 +0,0 @@
# Обзор
Киберпротект — это платформа для резервного копирования, защиты данных и обеспечения отказоустойчивости ИТ‑инфраструктуры.
## Основные возможности
- **Резервное копирование**: создание копий всей машины, отдельных дисков, томов или файлов и папок. Поддержка различных схем резервного копирования и расписаний.
- **Централизованное управление**: единая консоль для управления защитой всех устройств, настройки планов резервного копирования и мониторинга состояния системы.
- **Функция Active Protection**: защита от вредоносных программ, таких как вирусы-вымогатели и программы для майнинга криптовалют. Технология отслеживает подозрительные процессы и предотвращает несанкционированные изменения данных.
@@ -1,51 +0,0 @@
# Создать план защиты
Создайте план защиты, чтобы Киберпротект выполнял резервное копирование сервера.
## 1. Перейти в ПО
1. Перейдите в Киберпротект.
2. Авторизуйтесь в Киберпротекте.
3. На панели слева перейдите на вкладку **Устройства**.
4. Отметьте галочкой сервер из списка, который нужно подключить к резервному копированию.
5. На панели справа нажмите кнопку **Защитить**.
## 2. Настроить план защиты
:::tabs
== Вся машина
1. Укажите расписание резервного копирования.
2. Укажите срок хранения резервных копий.
3. (необязательно) Включите опцию **Защита паролем** резервных копий.
4. (необязательно) Подключите резервное копирование баз данных Oracle.
5. (необязательно) Настройте дополнительные параметры резервного копирования.
== Диски/тома
1. Укажите **Элементы резервного копирования**.
2. Укажите расписание резервного копирования.
3. (необязательно) Включите опцию **Защита паролем** резервных копий.
4. (необязательно) Настройте дополнительные параметры резервного копирования.
== Файлы/папки
1. Укажите **Элементы резервного копирования**.
2. Укажите расписание резервного копирования.
3. (необязательно) Включите опцию **Защита паролем** резервных копий.
4. (необязательно) Настройте дополнительные параметры резервного копирования.
:::
## 3. Подключить Active Protection
Служба Active Protection обеспечивает защиту от вредоносных программ, таких как вирусы-вымогатели и программы майнинга криптовалют.
1. Включите опцию.
2. Укажите **Действие при обнаружении**.
3. Укажите **Исключения**.
## 4. Сохранить изменения
Нажмите кнопку **Применить** справа сверху.
@@ -1,13 +0,0 @@
# Удалить план защиты
1. Перейдите в Киберпротект.
2. Авторизуйтесь в Киберпротекте.
3. На панели слева перейдите на вкладку **Устройства**.
4. Отметьте галочкой сервер из списка, план которого нужно удалить.
5. На панели справа нажмите кнопку **Защитить**.
6. Нажмите кнопку **…**.
7. Нажмите кнопку **Удалить**.
8. Включите опцию **Подтверждаю удаление плана**.
9. Нажмите кнопку **Удалить**.
Удаление плана защиты не отключит сервер от Киберпротекта. Чтобы отключить сервер, воспользуйтесь [инструкцией](../vm/delete-vm-from-cp.md).
@@ -1,51 +0,0 @@
# Редактировать план защиты
## 1. Перейти в ПО
1. Перейдите в Киберпротект.
2. Авторизуйтесь в Киберпротекте.
3. На панели слева перейдите на вкладку **Устройства**.
4. Отметьте галочкой сервер из списка, план которого нужно отредактировать.
5. На панели справа нажмите кнопку **Защитить**.
6. Нажмите кнопку **…**.
7. Нажмите кнопку **Изменить**.
## 2. Настроить план защиты
:::tabs
== Вся машина
1. Укажите расписание резервного копирования.
2. Укажите срок хранения резервных копий.
3. (необязательно) Включите опцию **Защита паролем** резервных копий.
4. (необязательно) Подключите резервное копирование баз данных Oracle.
5. (необязательно) Настройте дополнительные параметры резервного копирования.
== Диски/тома
1. Укажите **Элементы резервного копирования**.
2. Укажите расписание резервного копирования.
3. (необязательно) Включите опцию **Защита паролем** резервных копий.
4. (необязательно) Настройте дополнительные параметры резервного копирования.
== Файлы/папки
1. Укажите **Элементы резервного копирования**.
2. Укажите расписание резервного копирования.
3. (необязательно) Включите опцию **Защита паролем** резервных копий.
4. (необязательно) Настройте дополнительные параметры резервного копирования.
:::
## 3. Подключить Active Protection
Служба Active Protection обеспечивает защиту от вредоносных программ, таких как вирусы-вымогатели и программы майнинга криптовалют.
1. Включите опцию.
2. Укажите **Действие при обнаружении**.
3. Укажите **Исключения**.
## 4. Сохранить изменения
Нажмите кнопку **Применить** справа сверху.
-16
View File
@@ -1,16 +0,0 @@
---
section_links:
- title: Создать план защиты
link: /backups/cyberprotect/plans/create-protection-plan.md
description: Инструкция по созданию нового плана защиты
- title: Редактировать план защиты
link: /backups/cyberprotect/plans/edit-protection-plan.md
description: Руководство по изменению параметров существующего плана защиты
- title: Удалить план защиты
link: /backups/cyberprotect/plans/delete-protection-plan.md
description: Порядок удаления плана защиты
---
# Планы защиты
В этом разделе собраны инструкции по управлению планами резервного копирования.
-168
View File
@@ -1,168 +0,0 @@
# Быстрый старт
Чтобы начать работу с Киберпротектом, выполните следующие шаги:
1. [Подключите резервное копирование собственной инфраструктуры в Beeline Cloud](../backup-external-infra.md).
2. [Активируйте аккаунт](#1-активировать-аккаунт).
3. [Установите агент и добавьте сервер](#2-установить-агент-и-добавить-сервер).
4. [Создайте план зашиты](#3-создать-план-защиты).
## 1. Активировать аккаунт
Перед тем, как начать, установите приложение для двухфакторной аутентификации на компьютер или смартфон.
### Установить пароль
1. На электронной почте, которая была указана для регистрации в Киберпротекте, откройте письмо от `no-reply-cloud@cyberprotect.ru`.
2. Нажмите кнопку **Активация учетной записи**.
3. Установите пароль для учетной записи. Пароль должен содержать не менее 9 символов.
4. Нажмите кнопку **Далее**.
### Настроить двухфакторную аутентификацию
:::tabs
== ПК
1. Откройте приложение-аутентификатор.
2. Нажмите кнопку **Продолжить без сканирования QR-кода**.
3. В новом окне нажмите кнопку **Копировать в буфер**.
4. Нажмите кнопку **Готово**.
5. Вставьте уникальный код в приложение-аутентификатор.
6. Введите одноразовый код из приложения в поле внизу.
7. Нажмите кнопку **Далее**.
== Смартфон
1. Откройте приложение-аутентификатор.
2. Отсканируйте QR-код, который отображается на сайте.
3. Введите одноразовый код из приложения в поле внизу.
4. Нажмите кнопку **Далее**.
:::
### Принять условия использования
1. Включите опцию **Лицензионное соглашение**.
2. Включите опцию **Заявление о конфиденциальности**.
3. Нажмите кнопку **Принять**.
## 2. Установить агент и добавить сервер
### Загрузить образ
1. Перейдите в Киберпротект.
2. Авторизуйтесь в Киберпротекте.
3. На панели слева перейдите на вкладку **Устройства**.
4. Нажмите кнопку **+ Добавить** в правом верхнем углу.
5. В подразделе **Серверы** загрузите дистрибутив для Windows или Linux.
6. Передайте дистрибутив на сервер, который нужно подключить к Киберпротекту.
### Установить агент на сервер
:::tabs
== Windows
1. Нажмите правой кнопкой мыши по установщику.
2. Выберите опцию **Запустить от имени администратора**.
3. В открывшемся окне **Контроля учетных записей** нажмите кнопку **Да**. При необходимости, введите пароль.
4. Откроется окно установки Киберпротекта.
5. Нажмите кнопку **Установка**.
6. (необязательно) Измените путь установки или учетную запись для входа службы агента.
7. (необязательно) Настройте подключение к прокси-серверу HTTP.
8. Нажмите кнопку **Установка**.
9. Дождитесь загрузки и установки ПО.
== Linux
1. Откройте терминал в директории, в которой вы разместили файл-установщик.
2. Назначьте право на исполнение файлу-установщику:
```bash
chmod +x ./Backup_AgentForLinux_x86_64.bin
```
3. Запустите установщик от имени суперпользователя.
```bash
sudo ./Backup_AgentForLinux_x86_64.bin
```
4. Введите пароль от учетной записи.
5. (если не установлен) Для Киберпротекта требуется пакет `rpm`. Если его нет, установщик предложит его установить. Для этого выберите кнопку **Continue** и нажмите кнопку **Enter** на клавиатуре.
6. Выберите компонент **Agent for Linux**.
7. Нажмите кнопку **Tab** на клавиатуре.
8. Нажмите кнопку **Enter** на клавиатуре.
9. Дождитесь установки ПО.
:::
### Добавить сервер в Киберпротект
:::info Примечание
Код для регистрации сервера действует один час.
:::
1. Нажмите кнопку **Показать регистрационные сведения** или **Show registration info**.
2. Скопируйте ссылку для регистрации сервера в Киберпротекте.
3. Откройте браузер.
4. Перейдите по скопированной ссылке.
5. Вернитесь в установщик Киберпротекта.
6. Скопируйте код регистрации сервера.
7. Вернитесь в браузер.
8. Введите код в поле **Код регистрации**.
9. Нажмите кнопку **Проверить код**.
10. Нажмите кнопку **Подтвердить регистрацию**.
## 3. Создать план защиты
Создайте план защиты, чтобы Киберпротект выполнял резервное копирование сервера.
### Перейти в ПО
1. Перейдите в Киберпротект.
2. Авторизуйтесь в Киберпротекте.
3. На панели слева перейдите на вкладку **Устройства**.
4. Отметьте галочкой сервер из списка, который нужно подключить к резервному копированию.
5. На панели справа нажмите кнопку **Защитить**.
### Настроить план защиты
:::tabs
== Вся машина
1. Укажите расписание резервного копирования.
2. Укажите срок хранения резервных копий.
3. (необязательно) Включите опцию **Защита паролем** резервных копий.
4. (необязательно) Подключите резервное копирование баз данных Oracle.
5. (необязательно) Настройте дополнительные параметры резервного копирования.
== Диски/тома
1. Укажите **Элементы резервного копирования**.
2. Укажите расписание резервного копирования.
3. (необязательно) Включите опцию **Защита паролем** резервных копий.
4. (необязательно) Настройте дополнительные параметры резервного копирования.
== Файлы/папки
1. Укажите **Элементы резервного копирования**.
2. Укажите расписание резервного копирования.
3. (необязательно) Включите опцию **Защита паролем** резервных копий.
4. (необязательно) Настройте дополнительные параметры резервного копирования.
:::
### Подключить Active Protection
Служба Active Protection обеспечивает защиту от вредоносных программ, таких как вирусы-вымогатели и программы майнинга криптовалют.
1. Включите опцию.
2. Укажите **Действие при обнаружении**.
3. Укажите **Исключения**.
### Сохранить изменения
Нажмите кнопку **Применить** справа сверху.
@@ -1,39 +0,0 @@
# Активировать аккаунт
Перед тем, как начать, установите приложение для двухфакторной аутентификации на компьютер или смартфон.
## 1. Установить пароль
1. На электронной почте, которая была указана для регистрации в Киберпротекте, откройте письмо от `no-reply-cloud@cyberprotect.ru`.
2. Нажмите кнопку **Активация учетной записи**.
3. Установите пароль для учетной записи. Пароль должен содержать не менее 9 символов.
4. Нажмите кнопку **Далее**.
## 2. Настроить двухфакторную аутентификацию
:::tabs
== ПК
1. Откройте приложение-аутентификатор.
2. Нажмите кнопку **Продолжить без сканирования QR-кода**.
3. В новом окне нажмите кнопку **Копировать в буфер**.
4. Нажмите кнопку **Готово**.
5. Вставьте уникальный код в приложение-аутентификатор.
6. Введите одноразовый код из приложения в поле внизу.
7. Нажмите кнопку **Далее**.
== Смартфон
1. Откройте приложение-аутентификатор.
2. Отсканируйте QR-код, который отображается на сайте.
3. Введите одноразовый код из приложения в поле внизу.
4. Нажмите кнопку **Далее**.
:::
## 3. Принять условия использования
1. Включите опцию **Лицензионное соглашение**.
2. Включите опцию **Заявление о конфиденциальности**.
3. Нажмите кнопку **Принять**.

Some files were not shown because too many files have changed in this diff Show More