# Документация Timeweb Cloud — полный текст > Полный текст документации Timeweb Cloud в markdown. Каждая статья начинается с заголовка первого уровня и ссылки на свою каноническую страницу. Файл содержит весь корпус документации и весит несколько мегабайт. Текст отдельного раздела доступен по адресу вида /docs/<раздел>/llms-full.txt — список разделов в https://timeweb.cloud/llms.txt Индекс: https://timeweb.cloud/llms.txt Статей: 747 Последнее обновление: 2026-09-17 # Облачные базы данных (DBaaS) Source: https://timeweb.cloud/docs/dbaas **Облачная база данных**, или [База данных как сервис (DBaaS)](https://timeweb.cloud/services/dbaas) — облачное решение для размещения структурированных данных и управления ими. DBaaS обеспечивает полностью автоматизированную, гибкую и масштабируемую платформу для работы с базами данных. При использовании облачных баз вам не нужно устанавливать и поддерживать оборудование, настраивать ПО и администрировать сложные хранилища. Чтобы начать работать с базой, достаточно произвести запрос из панели управления, и для вас будет создана база данных из ресурсов облака с указанными параметрами. Работать с базой можно, как обычно: подключаться, вносить изменения, добавлять и удалять данные и так далее. **Кластер баз данных** — это одна или несколько виртуальных машин, на которых развернуты серверы базы данных. Если виртуальных машин несколько, одна из них является мастер-сервером, а остальные — репликами в точно такой же конфигурации, которые обеспечивают отказоустойчивость кластера. > [!NOTE] > Для кластеров MySQL и PostgreSQL доступна репликация с созданием 3 или 5 реплик. > > Для других типов СУБД доступно создание кластеров БД, состоящих **из одного сервера** выбранной конфигурации. Внутри кластера вы можете создать несколько баз данных и пользователей для них. **Преимущества сервиса** - Быстрая обработка запросов любой сложности. - Оптимизация процессов разработки и тестирования. - Простое масштабирование. - Снижение расходов на поддержку инфраструктуры. - Производительность и безопасность. С DBaaS вы сможете сэкономить время, снизить расходы и упростить управление базами данных. Сервис доступен в Санкт-Петербурге, Москве, Германии и Нидерландах. Заказать DBaaS можно в вашей панели управления в разделе «[Базы данных](https://timeweb.cloud/my/database)» или на сайте [Timeweb Cloud](https://timeweb.cloud/services/dbaas). # Создание кластера баз данных Source: https://timeweb.cloud/docs/dbaas/dbaas-create Вы можете создавать кластеры баз данных, состоящие из одной или нескольких баз выбранного типа СУБД. Панель управления Создать кластер баз данных можно в панели [timeweb.cloud/my](https://timeweb.cloud/my) в разделе «[Базы данных](https://timeweb.cloud/my/database)». ![7d9e117e 9245 4da7 B57d E4b02afaf3ce](https://content.timeweb.com/assets/294f2eae-6714-4595-bc6c-efafce04a8ba.png?width=1551&height=736) Нажмите «Добавить» и укажите параметры создаваемой базы: 1. **Тип базы данных и ее версия** - MySQL 8.0, 8.4 - PostgreSQL 14, 15, 16, 17, 18 - MongoDB 7.0, 8.0 - Valkey 7, 8.1, 9.1 - Opensearch 2.19.1 - ClickHouse 23.10.1, 24.8.14, 25.1.6 - Kafka 3.5.1 - RabbitMQ 4.0 Изменить выбранную БД или ее версию будет невозможно. ![Scr 20260629 Kxqg](https://content.timeweb.com/assets/3c107778-ffa0-4417-b636-ba0e40d8e3d3.png?width=1008&height=882) 2. **Регион размещения.** Выберите регион размещения кластера. Обратите внимание, что создание кластера с репликацией возможно только в BGP-сети и в следующих локациях: Санкт-Петербург, Москва, Нидерланды и Германия. ![Screenshot 04 18 25 17:44:12](https://content.timeweb.com/assets/191edf0d-c8dd-46b3-93ac-bb7739f48726.png?width=515&height=334) 3. **Конфигурация** При создании кластера доступны тарифные линейки, в зависимости от региона: - **Premium NVMe** - **High CPU** — линейка с процессорами 5 ГГц - **Dedicated CPU** — линейка с фиксированными процессорными ядрами Конфигурацию можно [увеличить](https://timeweb.cloud/docs/dbaas/dbaas-manage#smena-tarifa) в любой момент. Уменьшить конфигурацию невозможно. Смена конфигурации возможна только в рамках выбранной линейки. На минимальном тарифе Premium NVMe для MySQL и PostgreSQL (1 CPU / 1 ГБ RAM / 8 ГБ NVMe) возможно создание только одной базы данных и одного пользователя, а также недоступно управление отдельными параметрами. На этом же этапе можно задать [окно обслуживания кластера](https://timeweb.cloud/docs/dbaas/dbaas-manage#okno-obslujivaniya-klastera) и включить [автомасштабирование диска](https://timeweb.cloud/docs/dbaas/mysql/disk-autoscaling) (для MySQL и PostgreSQL без репликации). ![Создание Новой Базы Данных 2026 07 02 12 12](https://content.timeweb.com/assets/9dbc4774-6064-4a81-a349-546695181a5f.png?width=757&height=970) 4. **Отказоустойчивость** Для баз данных MySQL и PostgreSQL доступно создание кластера с репликацией. Вы можете указать количество реплик: 2 или 4. Изменить количество реплик после создания кластера будет невозможно. Стоимость такого кластера рассчитывается по формуле: количество реплик × стоимость одной ноды. ![Создание Новой Базы Данных 2026 07 02 12 11](https://content.timeweb.com/assets/02267f7b-001b-4c68-be16-b160f273bdf1.png?width=730&height=385) 5. **Сеть ** Задайте сетевые настройки для базы: - **Публичный IPv4-адрес**. Можно выбрать один из существующих адресов или заказать новый. Публичный адрес необходим для доступа к базе извне, в том числе, через phpMyAdmin. Если планируется, что база будет работать только в приватной сети, выпускать для нее публичный IP не требуется. - **Публичный IPv6-адрес**. Базе можно выдать бесплатный публичный IPv6-адрес. Работа с ним [не так универсальна](https://timeweb.cloud/docs/public-ip/ipv6-adresa), как с IPv4, и возможность доступа к базе по IPv6 будет зависеть, в том числе, от вашего интернет-провайдера. В кластерах с репликацией IPv6 выдается только мастер-ноде, назначить IPv6 репликам невозможно. - **Приватная сеть**. Можно выбрать одну из существующих сетей или создать новую. При необходимости укажите приватный IP вручную. ![Создание Новой Базы Данных 2026 07 02 12 13](https://content.timeweb.com/assets/7617405e-74f8-427c-8cbf-374c364c5314.png?width=756&height=597) 6. **Бэкапы** В этом пункте вы можете включить [физические бэкапы](https://timeweb.cloud/docs/dbaas/dbaas-manage/backup). Изменить настройки создания бэкапов можно в настройках кластера, во вкладке «Бэкапы». ![Создание Новой Базы Данных 2026 07 02 12 14](https://content.timeweb.com/assets/3ff0d24c-6bb9-4f22-9d07-c34a0829ab97.png?width=757&height=360) 7. **Информация о базе данных** Здесь вы задаете пароль дефолтного пользователя (в дальнейшем вы сможете добавлять других пользователей БД). Пароль можно сгенерировать в панели или указать свой. Для MySQL доступен выбор типа хэша пароля. Вы всегда сможете [изменить пароль](https://timeweb.cloud/docs/dbaas/dbaas-manage#izmenenie-parolya), как и название базы. Также выберите, в какой проект добавить базу данных. ![Создание Новой Базы Данных 2026 07 02 12 14 (1)](https://content.timeweb.com/assets/b587ae3d-b58e-4df2-b6af-5145a65e13b2.png?width=620&height=429) Нажмите «Заказать», и вы сможете начать работу с базой через пару минут. CLI Для работы у вас должен быть [установлен интерфейс командной строки](https://timeweb.cloud/docs/twc-cli/twc-cli-start) Timeweb Cloud. 1. Ознакомьтесь со справкой по команде создания баз данных: ```shell twc db create --help ``` 2. Посмотрите список доступных пресетов: ```shell twc db list-presets ``` Можно отфильтровать пресеты по типу БД с помощью `type`. Например, чтобы получить только пресеты MySQL: ```shell twc db list-presets -f type:mysql ``` 3. Создайте базу данных: ```shell twc db create --name db-dev --type mysql --login app --preset-id 327 ``` Далее `twc` предложит ввести пароль для базы данных. Вместо интерактивного ввода вы можете использовать опцию `--password` и ввести пароль прямо в командной строке (может быть небезопасно). Команда выше создаст инстанс СУБД MySQL 8 `db-dev` с пользователем `app`. Имя базы данных для подключения будет `default_db`. Также вы можете выбрать необходимые параметры для создания базы в панели управления в разделе «Базы данных», после чего нажмите на кнопку генерации команды для создания базы данных: ![Selection 232](https://content.timeweb.com/assets/4a849864-ad2b-4762-9181-2f396c05c3b5.png?width=1012&height=894) Перейдите во вкладку «Timeweb Cloud CLI» и скопируйте команду для создания базы данных. ![Screenshot 04 01 25 17:11:12](https://content.timeweb.com/assets/a9f91d6d-d62c-411c-88f8-c3afc9e96af4.png?width=1024&height=810) Получить все параметры подключения можно с помощью команды ниже, заменив `123456` на ваш ID инстанса СУБД: ```shell twc db get -o yaml 123456 ``` Параметры базы данных можно будет изменить в дальнейшем или сразу указать их при создании базы, например: ```shell twc db create --name db-dev --type mysql8 --login app --preset-id 327 --param max_connections=200 --param max_allowed_packet=64M ``` Базе будет выдан публичный IP-адрес, который будет доступен в панели управления. Отключить доступ по публичному IP, если это потребуется, вы сможете в настройках базы после ее создания. API Для создания кластера базы данных воспользуйтесь методом [createDatabaseCluster](https://timeweb.cloud/api-docs#tag/Bazy-dannyh/operation/createDatabaseCluster). Отправьте POST-запрос на `/api/v1/databases` и передайте в нем параметры создаваемого кластера. Также вы можете выбрать необходимые параметры для создания базы в панели управления в разделе «Базы данных», после чего нажмите на кнопку генерации команды для создания базы данных: ![Selection 232](https://content.timeweb.com/assets/989bcfbb-a91c-42bb-8cb9-7acdd8f3368f.png?width=1012&height=894) Перейдите во вкладку «cURL», скопируйте команду и выполните её в терминале. ![Selection 233](https://content.timeweb.com/assets/d288071b-1be0-487a-9e2a-17aff8a240a3.png?width=1027&height=925) Обратите внимание, что для выполнения команды необходимо [выпустить токен](https://timeweb.cloud/docs/account-management/token) и установить переменную окружения: ```shell export TIMEWEB_CLOUD_TOKEN=ваш_токен ``` Также в некоторых случаях может потребоваться установка утилиты `jq`. Установить ее можно так: **Ubuntu/Debian** ```shell sudo apt install jq ``` **Centos** ```shell sudo yum install epel-release -y ``` ```shell sudo yum install jq -y ``` **MacOS** ```shell brew install jq ``` Terraform Дальнейшее описание предполагает, что у вас уже установлен Terraform, настроен провайдер Timeweb Cloud и инициализирован проект ([шаги 1–4 этой инструкции](https://timeweb.cloud/docs/terraform/nachalo-raboty-s-terraform)). 1. Ознакомьтесь с документацией: - - источник данных [twc_database_preset](https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud/blob/main/docs/data-sources/database_preset.md); - ресурс [twc_database_cluster](https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud/blob/main/docs/resources/database_cluster.md); - ресурс [twc_database_instance](https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud/blob/main/docs/resources/database_instance.md); - ресурс [twc_database_user](https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud/blob/main/docs/resources/database_user.md); - ресурс [twc_vpc](https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud/blob/main/docs/resources/vpc.md). Тарифы баз данных можно получить через API: [https://api.timeweb.cloud/api/v1/presets/dbs](https://api.timeweb.cloud/api/v1/presets/dbs) 2. В конфигурационном файле опишите параметры кластера БД, который нужно создать. Terraform выберет первый пресет, подходящий под заданные параметры. Например, с помощью параметров ниже мы создадим следующие сущности: - Кластер MySQL 5.7 - Локация — Санкт-Петербург - 2 ГБ ОЗУ и 20 ГБ диска - Приватная сеть (локальный IP будет выдан автоматически; на текущий момент назначить его через Terraform невозможно) - Публичный IP - Две базы данных - Два пользователя базы данных ```ts data "twc_database_preset" "preset" { location = "ru-1" type = "mysql" disk = 20 * 1024 ram = 2 * 1024 } #Создаем приватную сеть resource "twc_vpc" "example-vpc" { name = "Example VPC" description = "Some example VPC" subnet_v4 = "192.168.0.0/24" location = "ru-1" } #Создаем кластер resource "twc_database_cluster" "my-cluster" { name = "My Cluster" type = "mysql5" preset_id = data.twc_database_preset.preset.id network { id = twc_vpc.example-vpc.id } is_external_ip = true } #Создаем базу данных resource "twc_database_instance" "db-instance" { cluster_id = twc_database_cluster.my-cluster.id name = "database1" } #Создаем еще одну базу данных resource "twc_database_instance" "second-db-instance" { cluster_id = twc_database_cluster.my-cluster.id name = "database2" } #Создаем пользователя с доступом ко всем БД resource "twc_database_user" "test-user-2" { cluster_id = twc_database_cluster.my-cluster.id login = "admin" password = "strongpassword1" privileges = ["SELECT", "INSERT", "UPDATE", "DELETE"] } #Создаем пользователя с доступом к конкретной базе resource "twc_database_user" "test-user" { cluster_id = twc_database_cluster.my-cluster.id login = "newuser" password = "userpassword1" instance { instance_id = twc_database_instance.second-db-instance.id privileges = ["SELECT", "INSERT", "UPDATE", "DELETE"] } } ``` Также вы можете выбрать необходимые параметры для создания базы в панели управления в разделе «Базы данных», после чего нажмите на кнопку генерации команды для создания базы данных: ![Selection 232](https://content.timeweb.com/assets/2021e3b9-ad0f-4316-b8c2-56080dfe8a91.png?width=1012&height=894) Перейдите во вкладку «Terraform» и скопируйте манифест в файл с расширением `.tf`. ![Screenshot 04 01 25 14:38:08](https://content.timeweb.com/assets/ad210c62-4858-4756-b08c-a1277c514a89.png?width=1020&height=800) Обратите внимание, что в этом же манифесте подразумевается указание токена. Если токен указан в другом файле, вы можете просто удалить его из текущего манифеста. В противном случае укажите токен прямо в этом файле. 3. Проверьте конфигурацию: ```shell terraform validate ``` Если в конфигурационном файле есть ошибки, Terraform сообщит о них. 4. Проверьте запланированные изменения: ```shell terraform plan ``` Terraform выведет информацию о создаваемых ресурсах. 5. Если все корректно — примените конфигурацию: ```shell terraform apply ``` # Управление базами данных Source: https://timeweb.cloud/docs/dbaas/dbaas-manage В разделе «Базы данных» вам доступен список созданных кластеров и их настройки. - [Создание баз данных внутри кластера](https://timeweb.cloud/docs/dbaas/dbaas-manage/databases) - [Создание топиков Kafka](https://timeweb.cloud/docs/dbaas/dbaas-manage/topics) - [Пользователи баз данных](https://timeweb.cloud/docs/dbaas/dbaas-manage/users) - [Подключение к базе данных](https://timeweb.cloud/docs/dbaas/dbaas-manage/connect-to-database) - [Доступ по публичному IP](https://timeweb.cloud/docs/dbaas/dbaas-manage/public-ip-access) - [Физические бэкапы](https://timeweb.cloud/docs/dbaas/dbaas-manage/backup) - [Логические бэкапы](https://timeweb.cloud/docs/dbaas/dbaas-manage/logical-backups) - [Окно обслуживания кластера](https://timeweb.cloud/docs/dbaas/dbaas-manage/maintenance-window) - [Изменение конфигурации](https://timeweb.cloud/docs/dbaas/dbaas-manage/upgrade) - [История действий](https://timeweb.cloud/docs/dbaas/dbaas-manage/action-history) - [Удаление базы и кластера](https://timeweb.cloud/docs/dbaas/dbaas-manage/remove) # Базы данных Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/databases При создании нового кластера БД по умолчанию создается база с именем `default_db`. Вы можете создавать дополнительные базы внутри этого кластера. Для этого: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Базы данных» кликните «Добавить». ![0d06f9ad E557 4c19 Bde0 2832148cab48](https://content.timeweb.com/assets/9ba7112c-167e-41df-8391-a5ec542f3fdf.png?width=1558&height=796) 3. Задайте имя базы. Имя может быть длиной от 3 до 63 символов и содержать латинские буквы, цифры и специальные символы. 4. (Опционально) Задайте комментарии к базе. Он будет отображаться в панели управления. 5. Нажмите «Создать». # Топики Kafka Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/topics Для Kafka автоматически создается топик `default_topic` , а также группа консюмеров `default_topic-group`. ![71f2b516 354c 48f3 B9b0 1167046585c6](https://content.timeweb.com/assets/b8b6b8ef-11d9-4dd8-b027-f39b51b31a48.png?width=1561&height=840) Чтобы создать новый топик: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Базы данных» кликните «Добавить». 3. Задайте имя топика. Имя может быть длиной от 3 до 63 символов и содержать латинские буквы, цифры и символы `.`, `_` и `-`. 4. (Опционально) Задайте комментарии к топику. Он будет отображаться в панели управления. 5. Нажмите «Создать». Для каждого топика, который вы создаете в панели, будет автоматически создаваться группа вида `имя_топика-group`. # Пользователи баз данных Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/users При создании кластера автоматически создается пользователь `gen_user`. Вы можете создавать новых пользователей БД, предоставлять им права к базами и в целом управлять ими на вкладке «Пользователи». > [!NOTE] > Получить доступ к root-пользователю облачной базы данных невозможно. ## Создание пользователя Для создания нового пользователя: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Пользователи» кликните «Добавить». 3. Укажите имя пользователя: от 3 до 32 символов, латинские буквы, цифры и спецсимволы. 4. Укажите пароль пользователя: от 8 до 30 символов, латинские буквы, цифры и спецсимволы. 5. (Опционально) Задайте комментарий к пользователю. Он будет отображаться в панели управления. 6. По умолчанию пользователь будет создан с полными правами ко всем базам. Если вы хотите ограничить его привилегии, кликните «Показать привилегии» и настройте нужные. ![63330323 0e04 409d B089 1f0a0e6f68df](https://content.timeweb.com/assets/e52f9e84-7553-4f1c-9524-b7ebcf6626a4.png?width=1558&height=850) - - Выключите опцию «Использовать одинаковые привилегии для всех баз», после чего вы сможете выбрать конкретную базу из списка и настроить права пользователя. ![Без Названия (2)](https://content.timeweb.com/assets/9e7c539c-576a-4000-ab9f-2e795a7de9a7?width=610&height=507) 7. Нажмите «Создать». ## Изменение пароля Чтобы изменить пароль пользователя для подключения к базе данных: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Пользователи» кликните на три точки у нужного пользователя. 3. Выберите «Изменить пароль». 4. Введите новое значение и сохраните изменения. ![13659ea4 1bab 4fac 946b Cee1813a1754](https://content.timeweb.com/assets/732ef5ef-6125-40f0-a863-a3f736b1fea3.png?width=1561&height=860) ## Настройка привилегий пользователей Чтобы изменить привилегии уже созданного пользователя 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Пользователи» кликните на три точки у нужного пользователя. 3. Выберите «Привилегии»: ![Bac19f45 3d24 43f9 Bde1 4e33d9fa17f3](https://content.timeweb.com/assets/e804f6d5-7c5c-4ff0-8187-319ef2092af7.png?width=1561&height=860) 4. Настройте нужные привилегии. - Если пользователь должен иметь идентичные права ко всем базам, включите опцию «Одинаковые для всех баз» и настройте нужные привилегии. - Если пользователь должен иметь разные права к разным базам, выключите опцию «Одинаковые для всех баз», после чего настройте привилегии, выбирая нужные базы из списка. 5. Нажмите «Сохранить». ![Scr 20251024 Pmfp](https://content.timeweb.com/assets/1d35dc7b-8ae9-4415-9240-881a2ef70f96.png?width=1009&height=851) # Подключение к БД Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/connect-to-database ## Реквизиты подключения Найти реквизиты подключения можно: - На вкладке «Дашборд»: ![3ec1517f B1ed 4719 B316 C653d33b7f2b](https://content.timeweb.com/assets/511d7349-5cb2-4b1d-836d-8c7c3c18a57f.png?width=1568&height=1256) - На вкладке «Подключение»: ![6f56f7f3 3aa1 42f2 9917 210d87ed4c1f](https://content.timeweb.com/assets/f757f87c-f8de-4800-a6c0-2a187e0392ed.png?width=1556&height=858) ## Подключение через терминал Подключиться к базе можно с помощью стандартных средств. Например, для подключения через командную строку с помощью утилиты `mysql`**,** используйте команду ниже, указав в ней реквизиты вашей базы: ```shell mysql -u пользователь_БД -p пароль -h хост -P порт -D имя_БД ``` > [!NOTE] > Если в качестве клиента вы используете MariaDB версии 10.10 или выше, для подключения к кластеру используйте ключ `--skip_ssl`. Скопировать готовые команды для подключения можно также на вкладках «Дашборд» и «Подключение». ## Веб-интерфейсы Вы также можете работать с базой с помощью встроенных веб-интерфейсов: - Adminer для PostgreSQL - phpMyAdmin для MySQL - OpenSearch Dashboards для OpenSearch - ClickHouse Query для ClickHouse. > [!NOTE] > Для доступа через веб-интерфейс у базы должен быть публичный IP. Его можно подключить, даже если база уже существует. [Закажите IP](https://timeweb.cloud/docs/public-ip/create-public-ip) в том же регионе, где создана база, и [привяжите его к базе](https://timeweb.cloud/docs/public-ip/add-ip-to-service#privyazka-svobodnogo-ip-k-servisu). Для перехода в интерфейс кликните на строку с базой, нажмите «Веб-интерфейс» и выберите нужный вариант. После введите реквизиты базы (IP, имя пользователя и пароль). ![92c7c703 C219 4109 Beb1 157ebf08c5a3](https://content.timeweb.com/assets/702da4fb-0439-4fb7-bc48-65dadab5d54d.png?width=1562&height=759) # Доступ по публичному IP Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/public-ip-access При создании кластера баз данных вы выбираете, нужно ли выдать кластеру публичный IP, чтобы обращаться к нему извне. В дальнейшем вы всегда можете: - закрыть доступ по публичному IPv4 или IPv6; - разрешить доступ по публичному IPv4 или IPv6, даже если изначально база была создана только с приватным адресом. ## Просмотр адресов IP-адреса, выданные кластеру, можно найти на Дашборде. ![Fair Cygnus 06 08 2026 04 53 Pm](https://content.timeweb.com/assets/bc1c26cd-3ba9-4036-b348-c1872a668e6a.png?width=1567&height=1741) ## Запретить доступ Вы можете запретить доступ к базе по публичным IP-адресам: - по IPv4; - по IPv6; - по обоим публичным адресам. В этом случае база будет доступна только из приватной сети. > [!NOTE] > При запрете доступа IP-адреса будут отключены от кластера. > > Если в дальнейшем вы снова разрешите доступ к базе по IPv6, ей будет выдан тот же самый IPv6-адрес. > > Вернуть тот же самый IPv4-адрес можно только в случае, если адрес доступен разделе «Публичные IP» и не привязан к другому сервису. Чтобы запретить доступ: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Сеть» отключите опцию «Разрешить доступ» для нужного типа IP-адреса: IPv4 и/или IPv6. Позднее доступ снова можно будет разрешить. ![Fair Cygnus 06 08 2026 04 46 Pm](https://content.timeweb.com/assets/37fc6258-4173-4103-b4dd-1eb41aa32fce.png?width=1562&height=997) ## Разрешить доступ Если сейчас у базы есть только приватный адрес, но вам нужно сделать ее доступной извне, необходимо включить доступ по публичному IP — IPv4 и/или IPv6 — и выдать базе внешний адрес. Доступ из локальной сети по-прежнему сохранится. ![Fair Cygnus 06 08 2026 04 48 Pm](https://content.timeweb.com/assets/5b6b515a-f049-44c9-b46f-857cff40bc69.png?width=1577&height=987) Чтобы разрешить доступ к базе **по публичному IPv4**: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Сеть» включите опцию «Разрешить доступ по публичному IPv4-адресу». 3. Выберите один из имеющихся публичных IP на аккаунте или опцию «Создать новый». 4. Нажмите «Добавить». Чтобы разрешить доступ к базе **по публичному IPv6**: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Сеть» включите опцию «Разрешить доступ по публичному IPv6-адресу». Если у базы ранее был IPv6, ей будет выдан тот же адрес. Для кластеров MySQL, Clickhouse, Kafka, MongoDB, OpenSearch и Redis при подключении IPv6 будет выполнен перезапуск кластера. # Физические бэкапы Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/backup Для кластеров баз данных доступны физические бэкапы. Они поддерживаются для всех типов кластеров и доступны как в OVN-сетях, так и в BGP-сетях. При их создании выполняется снимок состояния базы данных на уровне файловой системы. Физический бэкап содержит данные базы в том виде, в котором они хранятся на сервере, и используется для восстановления кластера в состоянии на момент создания копии. Вы всегда можете изменить расписание автобэкапов или отключить их совсем. ## Создание бэкапа Вы также можете создавать физические резервные копии базы данных вручную в своей панели управления. 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. Во вкладке «Бэкапы» и нажмите «Создать бэкап» напротив «Физические бэкапы». 3. (Опционально) Задайте комментарий к бэкапу 4. Нажмите «Создать». Создание копии займет несколько минут, после чего бэкап отобразится в панели. ![Scr 20260319 Oeut](https://content.timeweb.com/assets/a5b4335a-aa0f-42e9-980c-cd08ad11bfcc.png?width=2126&height=1612) ## Автоматические бэкапы В панели управления вы можете включать, выключать и настраивать автоматическое создание резервных копий по расписанию. ### Включение и настройка автобэкапов 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Бэкапы» кликните «Настроить расписание» в блоке «Физические бэкапы». ![Scr 20260319 Ogry](https://content.timeweb.com/assets/3439b0bd-accb-4a06-ab58-ad39a2d94852.png?width=2150&height=1622) 3. Переведите тумблер в положение «Включено» и задайте параметры: периодичность создания копий (ежедневно, еженедельно и ежемесячно), количество копий и дату начала бэкапов по расписанию. ![Scr 20260319 Ohig](https://content.timeweb.com/assets/ce3169cc-8a56-4162-a245-7067d8f2f86c.png?width=2098&height=1580) 4. Нажмите «Сохранить». ### Отключение автобэкапов Для отключения автоматических резервных копий: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Бэкапы» кликните «Настроить расписание» в блоке «Физические бэкапы». 3. Переведите тумблер в положение «Выключено». 4. Сохраните изменения. ## Восстановление данных Чтобы восстановить данные из бэкапа: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. Перейдите на вкладку «Бэкапы». 3. Нажмите на кнопку с количеством бэкапов в блоке «Физические бэкапы». ![Scr 20260319 Ohok](https://content.timeweb.com/assets/700a8384-cae2-43c6-96e1-7120825ad36e.png?width=2106&height=1584) 4. В открывшемся окне наведите курсор на нужную копию и нажмите на кнопку «Восстановить». ![Scr 20260319 Ohyu](https://content.timeweb.com/assets/4a988796-aaca-41ac-b154-a0c1c1dd6ac4.png?width=2496&height=1466) ## Скачивание бэкапов > [!NOTE] > Опция доступна только для кластеров MySQL и PostgreSQL, созданных после 1 января 2025 года. Физические бэкапы, созданные в панели управления, можно скачать на ваше устройство в формате `.qcow2`. Вы можете хранить скачанные копии локально или во внешних системах хранения — для дополнительной защиты данных или соблюдения корпоративных политик резервного копирования. Чтобы скачать бэкап: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. Перейдите на вкладку «Бэкапы». 3. Нажмите на ссылку с количеством бэкапов в блоке «Физические бэкапы». ![Скачивание бэкапа](https://content.timeweb.com/assets/96ce2c02-4fb4-4851-b091-8dabcf9ca5ce.png?width=2216&height=1610) 4. Наведите курсор на нужную копию и нажмите «Скачать». ![Скачивание бэкапа](https://content.timeweb.com/assets/5c8b06fe-ae86-445c-a44d-1c6a73e236e0.png?width=2768&height=1584) Файл бэкапа будет загружен на ваше устройство. ## Удаление бэкапа Чтобы удалить бэкап: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. Перейдите на вкладку «Бэкапы». 3. Нажмите на кнопку с количеством бэкапов. ![Scr 20260319 Ohok](https://content.timeweb.com/assets/b39a4a5b-5688-4846-a684-03ab3a4c408c.png?width=2106&height=1584) 4. Нажмите на три точки рядом с бэкапом, нажмите на кнопку «Удалить». ![Scr 20260319 Ojer](https://content.timeweb.com/assets/7ba7c258-cb1b-4f8c-b6dd-2b8807ed1912.png?width=2520&height=1464) # Логические бэкапы Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/logical-backups Для кластеров баз данных MySQL и PostgreSQL доступны логические бэкапы. В отличие от [физических бэкапов](https://timeweb.cloud/docs/dbaas/dbaas-manage/backup), при их создании не выполняется снимок всей системы. Вместо этого формируются дампы баз данных, которые размещаются [в S3-бакете](https://timeweb.cloud/docs/s3-storage). Бэкапы сохраняются в виде SQL-дампа. Перед загрузкой в бакет они архивируются. Точный размер копии заранее определить невозможно — он зависит от структуры и объема данных базы. > [!NOTE] > Сейчас логические бэкапы находятся в стадии бета-тестирования. Не используйте их как единственный способ резервного копирования важных данных. > > На время тестирования создание и размещение бэкапов не тарифицируется. После завершения бета-тестирования стоимость размещение составит 6 ₽ за 1 ГБ в месяц. ## Особенности логических бэкапов - При создании логического бэкапа автоматически создается S3-бакет с доступом только на чтение. - Для кластера одновременно могут использоваться физические и логические бэкапы. - В логических бэкапах не сохраняются пользователи и привилегии кластера. - Трафик бакета учитывается в бесплатном лимите S3-трафика. При его превышении дополнительная тарификация не применяется. - При удалении кластера S3-бакет с резервными копиями остается доступен. Дампы баз данных остаются в бакете, поэтому вы сможете создать новый кластер и восстановить данные из дампа. - Логические бэкапы доступны только в BGP-сетях. - Логические бэкапы создаются только вручную. Создание по расписанию недоступно. ## Создание резервной копии Чтобы создать резервную копию: 1. Перейдите в раздел «Бэкапы». 2. Нажмите кнопку «Создать бэкап». 3. В открывшемся меню при необходимости укажите комментарий к бэкапу. 4. Нажмите кнопку «Создать». Если для кластера ранее не создавались логические бэкапы, будет автоматически создан S3-бакет. Он отобразится в разделе «[Хранилище S3](https://timeweb.cloud/my/storage)» с пометкой «Бэкапы БД». ![Image7](https://content.timeweb.com/assets/1326eb96-a355-4786-b49a-88244f8b3593.png?width=1999&height=1580) ## Восстановление данных из резервной копии Вы можете восстанавливать данные из логических бэкапов автоматически через панель управления или вручную, скачав дамп из S3. ### Автоматически Чтобы восстановить данные из бэкапа: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. Перейдите на вкладку «Бэкапы». 3. Нажмите «Управление» в блоке «Логические бэкапы». ![Fair Cygnus 06 09 2026 09 19 Am](https://content.timeweb.com/assets/2c592478-f51e-464c-bc1c-3a6eebf451ea.png?width=1578&height=754) 4. В открывшемся окне наведите курсор на нужную копию и нажмите на кнопку «Восстановить». ![Fair Cygnus 06 09 2026 09 20 Am](https://content.timeweb.com/assets/78519eb1-6f91-45ce-9225-93b1237c6607.png?width=1740&height=857) 5. Подтвердите действие. > [!NOTE] > Кластер будет возвращен к состоянию на момент создания логического бэкапа. Данные, записанные после этого момента, будут удалены. > > Пользователей и их права доступа будет необходимо настроить заново. ### Вручную Вы также можете восстанавливать данные вручную, скачав SQL-дамп из S3-бакета. SQL-дампы находятся в S3-бакете, который создается для размещения резервных копий. Подключиться к бакету можно с помощью S3-клиентов или через панель управления, перейдя в раздел «Объекты» выбранного бакета. ![Image3](https://content.timeweb.com/assets/d8b24570-886f-474a-abf4-578e85606de7.png?width=1999&height=1467) Из дампа можно развернуть базу локально или восстановить данные в кластере DBaaS. Для восстановления в облачную базу данных дамп необходимо предварительно отредактировать. MySQL Распакуйте скачанный дамп: ```bash gzip -dk имя_дампа.sql.gz ``` После выполнения команды исходный архив сохранится. При необходимости вы сможете снова распаковать его и получить исходную версию дампа. Затем отредактируйте дамп с помощью команды, указав имя файла дампа вместо `имя_дампа.sql`: ```shell sed -E ' /^SET /d; /^\/\*![0-9]+ SET /d; /rocksdb_/d; /^\/\*![0-9]+ PREPARE s FROM @/d; /^\/\*![0-9]+ EXECUTE s \*\//d; /^\/\*![0-9]+ DEALLOCATE PREPARE s \*\//d ' имя_дампа.sql > backup_clean.sql ``` В результате будет создан очищенный дамп `backup_clean.sql`, который можно использовать для восстановления. На время восстановления предоставьте [все привилегии пользователю](https://timeweb.cloud/docs/dbaas/mysql/users-and-privileges#nastrojka-privilegij), от имени которого будет загружен дамп. Перед импортом необходимо очистить базу данных. Подключитесь к базе [через командную строку](https://timeweb.cloud/docs/dbaas/mysql/connect-to-database) и выполните: ```sql SET FOREIGN_KEY_CHECKS=0; ``` Затем выполните запрос, указав имя базы данных: ```sql SELECT CONCAT('DROP TABLE IF EXISTS `', table_name, '`;') FROM information_schema.tables WHERE table_schema='имя_базы'; ``` Скопируйте полученные команды `DROP TABLE` и выполните их, чтобы удалить существующие таблицы. После этого снова включите проверку внешних ключей: ```sql SET FOREIGN_KEY_CHECKS=1; ``` Затем выйдите из интерактивной оболочки MySQL (`Ctrl+D`). Если для кластера настроена репликация, на время восстановления установите параметр `pxc_strict_mode` в значение `PERMISSIVE` или `DISABLED`. Для восстановления базы используйте команду подключения, добавив перенаправление из файла дампа. Команда будет выглядеть примерно так: ```bash mysql -u gen_user -p'pdn?Uu1337oUeOp' \ -h f767dae90b23251eee5474.twc1.net \ -P 3306 \ -D default_db \ --ssl-mode=VERIFY_IDENTITY \ --ssl-ca=$HOME/.cloud-certs/root.crt \ < backup_clean.sql ``` После выполнения команды данные из дампа будут импортированы в базу. PostgreSQL Распакуйте скачанный дамп: ```bash gzip -dk имя_дампа.sql.gz ``` После выполнения команды исходный архив сохранится. При необходимости вы сможете снова распаковать его и получить исходную версию дампа. Затем отредактируйте дамп с помощью команды, указав имя файла дампа вместо `имя_дампа.sql`: ```bash sed -E '/OWNER TO (postgres|root);/d' имя_дампа.sql > backup_clean.sql ``` В результате будет создан очищенный дамп `backup_clean.sql`, который можно использовать для восстановления. На время восстановления предоставьте [все привилегии пользователю](https://timeweb.cloud/docs/dbaas/postgresql/users-and-privileges#nastrojka-privilegij), от имени которого будет загружен дамп. Перед импортом необходимо очистить базу данных. Подключитесь к базе [через командную строку](https://timeweb.cloud/docs/dbaas/postgresql/connect-to-database#podkluchenie-iz-terminala) и выполните: ```sql DO $$ DECLARE r RECORD; BEGIN FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') LOOP EXECUTE 'DROP TABLE IF EXISTS public.' || quote_ident(r.tablename) || ' CASCADE'; END LOOP; FOR r IN (SELECT sequencename FROM pg_sequences WHERE schemaname = 'public') LOOP EXECUTE 'DROP SEQUENCE IF EXISTS public.' || quote_ident(r.sequencename) || ' CASCADE'; END LOOP; FOR r IN (SELECT table_name FROM information_schema.views WHERE table_schema = 'public') LOOP EXECUTE 'DROP VIEW IF EXISTS public.' || quote_ident(r.table_name) || ' CASCADE'; END LOOP; END $$; ``` Затем выйдите из интерактивной оболочки `psql`, введя `\q`. Для восстановления базы используйте команду подключения, добавив перенаправление из файла дампа. Команда будет выглядеть примерно так: ```bash psql 'postgresql://gen_user:S6%40n9HD3-)1cDL0@4ae1e1b10cb9421f3930a06.twc1.net:5432/default_db?sslmode=verify-full' < backup_clean.sql ``` После выполнения команды данные из дампа будут импортированы в базу. ## Управление резервными копиями Все резервные копии отображаются в разделе «Бэкапы». Чтобы открыть список копий, нажмите на кнопку с их количеством. Нажав на меню с тремя точками рядом с бэкапом, вы можете изменить его комментарий или удалить резервную копию. ![Image2](https://content.timeweb.com/assets/41c97fc5-805f-4235-a9ff-74575198b534.png?width=1999&height=1316) # Окно обслуживания кластера Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/maintenance-window Окно обслуживания — это период, в который мы можем устанавливать обновления и оптимизировать работу сервисов. Доступны два варианта: - В любое время - В заданное время Время указывается в вашем часовом поясе. Вы можете задать окно обслуживания при создании кластера БД, а также управлять им в настройках. Чтобы изменить окно обслуживания: 1. В разделе «Базы данных» кликните на нужный кластер. 2. На вкладке «Конфигурация» нажмите «Изменить» в блоке «Окно обслуживания кластера». 3. Выберите нужный вариант и сохраните изменения. # Изменение конфигурации (смена тарифа кластера) Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/upgrade Вы можете увеличить ресурсы кластера в любой момент. Изменить тариф в меньшую сторону невозможно. 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Конфигурация» кликните «Выбрать конфигурацию». ![Dad5705a 39df 48ef A0d2 5739a783eb71](https://content.timeweb.com/assets/4b4ec022-3cca-4c9b-8eba-f26edb5d1d01.png?width=1561&height=951) 3. Выберите нужный тариф и сохраните изменения. Кластер будет перезагружен, после чего изменения вступят в силу. # Перенос баз данных между аккаунтами Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/transfer Вы можете самостоятельно переносить кластеры баз данных между аккаунтами через панель управления. Настройки кластера (публичный IP-адрес, окно обслуживания, автомасштабирование диска) и настройки баз данных (параметры, пользователи) будут перенесены как есть. Если кластер добавлен в приватную сеть BGP, при переносе он будет автоматически исключен из сети. На принимающем аккаунте вы сможете выбрать нужную приватную сеть для кластера или создать новую. Во время переноса кластер будет работать как обычно. ## Особенности переноса бэкапов [Физические бэкапы](https://timeweb.cloud/docs/dbaas/dbaas-manage/backup) и правила их автоматического создания будут перенесены вместе с кластером. [Логические бэкапы](https://timeweb.cloud/docs/dbaas/dbaas-manage/logical-backups), загружаемые в S3, перенесены не будут. S3-бакет для бэкапов останется на старом аккаунте. ## Ограничения - Перенос недоступен для кластеров с репликацией. - Перенос недоступен для кластеров в OVN-сетях. - Запустить перенос может только владелец аккаунта. У дополнительных пользователей, даже с доступом «Полное управление», такой возможности нет. ## Действия на передающем аккаунте Чтобы передать кластер баз данных на другой аккаунт Timeweb Cloud: 1. Перейдите в раздел «Базы данных» → кликните на нужный кластер→ «Конфигурация». 2. Нажмите «Перенести» в пункте «Передача базы данных. ![B0d08df2 2909 48cd B821 D065b1db08cc](https://content.timeweb.com/assets/ed67750b-1054-4fd0-b262-e293bf4a789b.png?width=1573&height=1208) 3. Укажите логин принимающего аккаунта и нажмите «Продолжить». ![071785ce 4f56 438d A57d 72417a7b3b53](https://content.timeweb.com/assets/5505c314-b912-4baf-ad2d-88a3171df57b.png?width=694&height=507) 4. Введите проверочный код, отправленный на контактную почту аккаунта, и нажмите «Перенести базу данных». ![Aa12e00b 57c2 4883 98fe 86f2b6dc0c0f](https://content.timeweb.com/assets/e5587946-5a40-48f6-b2d9-0b3a208854c9.png?width=693&height=348) Перенос будет запущен, все действия с базой данных в панели заблокированы. Вы можете отменить перенос, пока он не подтвержден принимающей стороной. ![200d9ab5 Ec0f 4632 Ac66 C0981655b95b](https://content.timeweb.com/assets/e5aaf197-84d1-4221-8271-73da3608f036.png?width=1573&height=858) Как только кластер будет принят, вы получите email-уведомление об этом. Если принимающая сторона отменит перенос, мы также сообщим вам на email. При отмене переноса дополнительных действий от вас не потребуется; кластер снова станет доступен на вашем аккаунте. ## Действия на принимающем аккаунте На контактный ящик аккаунта поступит уведомление о передаче кластера баз данных. Новый кластер также отобразится в разделе «Базы данных» панели управления. > [!NOTE] > Если на аккаунте недостаточно средств, принять базу данных не получится. В этом случае мы отобразим уведомление о необходимости пополнить баланс. После оплаты снова перейдите в раздел «Базы данных» и подтвердите прием базы. **Если вы хотите принять кластер:** 1. Перейдите в раздел «Базы данных» и нажмите «Принять». ![3344ba9b 8a63 447a A630 Ccfd383caa2d](https://content.timeweb.com/assets/5aa73433-30ae-438d-8bb0-b5c0b1d08163.png?width=1570&height=798) 2. (Опционально) Выберите, в какую приватную сеть добавить кластер. Вы можете выбрать одну из существующих сетей на аккаунте или создать новую. 3. (Опционально) Выберите, в какой проект добавить кластер. 4. Нажмите «Принять», чтобы подтвердить перенос и принять кластер. ![E6d11658 A106 4c68 B6ca 54c9d6f2c123](https://content.timeweb.com/assets/f61cdc85-0888-4c94-8b30-f3ac5501f9f5.png?width=1578&height=1004) **Если вы хотите отказаться от переноса:** 1. Перейдите в раздел «Базы данных» и нажмите «Принять». 2. В открывшемся окне нажмите «Отклонить». Кластер пропадет из раздела «Базы данных» и снова будет доступен на передающем аккаунте. # История действий Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/action-history Вы можете просмотреть, какие действия выполнялись с кластером, на вкладке «История». ![E05a6794 31c9 4636 B0dc 6ff1dc4948c1](https://content.timeweb.com/assets/10e2a517-f75a-4d32-b33a-5b83746a52b3.png?width=1561&height=858) В панели логируются следующие действия: - Создание кластера - Изменение тарифа - Создание базы данных - Создание пользователя - Изменение параметров базы - Изменение публичного доступа - Включение / выключение автоматических бэкапов - Создание бэкапа вручную - Удаление бэкапа - Удаление кластера # Отмена удаления кластера Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/deletion-protection Отмена удаления — это дополнительная опция, которая позволяет восстановить кластер баз данных в течение 72 часов после его удаления. Кластер будет восстановлен со всеми данными, включая резервные копии. IPv4-адрес кластера будет изменен. Вернуть прежний IP будет можно, только если он доступен в разделе «Публичные IP». IPv6-адрес, если он был назначен, останется прежним. Стоимость опции составляет 200 рублей в месяц за каждый кластер. Восстановление выполняется бесплатно. Если опция отмены удаления не подключена, можно воспользоваться разовым восстановлением. Его стоимость составляет 2000 рублей. > [!NOTE] > **Важно**: Восстановить можно только кластеры, которые существовали на аккаунте больше 48 часов. Если удалить кластер раньше, восстановить его будет невозможно — вне зависимости от того, подключена отмена удаления или нет. > > Опция отмены удаления недоступна для кластеров с репликацией. ## Подключение опции Подключить отмену удаления для нового кластера можно при его создании, а для существующего — в разделе «Бэкапы». ### При создании кластера Для нового кластера вы можете подключить опцию в блоке «Дополнительные услуги», выбрав опцию «Отмена удаления»: ![Создание Новой Базы Данных 2026 08 06 15 46](https://content.timeweb.com/assets/dacb7e25-960d-44c0-892e-b5f01b348cc9.png?width=735&height=359) ### В разделе «Бэкапы» Для существующего кластера подключить опцию можно в настройках. 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. Перейдите на вкладку «Бэкапы». 3. Включите опцию «Отмена удаления». Если кластер создан менее двух дней назад, списания за опцию начнутся через 48 часов существования кластера на аккаунте. ![Witty Jackdaw 2026 08 06 15 55](https://content.timeweb.com/assets/6a19f079-7b31-4dbd-816d-e3e28c7e9b48.png?width=1575&height=801) ## Просмотр удаленных кластеров Вы можете просмотреть кластеры, которые можно восстановить, в разделе «Базы данных». Для этого выберите фильтр «Удаленные». ![Базы Данных 2026 08 10 10 22](https://content.timeweb.com/assets/f6c7bf01-5a10-43d5-8444-f1a5512dd866.png?width=1580&height=801) Если фильтра в панели нет, значит, в данный момент на аккаунте нет кластеров, доступных для восстановления. ## Восстановление кластера ### С подключенной отменой удаления Если опция подключена, вы можете бесплатно восстановить кластер в течение 72 часов после удаления. Для этого: 1. Перейдите в раздел «Базы данных». 2. Выберите фильтр «Удаленные». 3. Кликните на ссылку «Восстановить до ….» у нужного кластера. ![Базы Данных 2026 08 10 10 20](https://content.timeweb.com/assets/109d378d-cc33-4518-9bf9-455642b85152.png?width=1581&height=797) 4. Назначьте публичный IP-адрес для кластера: выберите один из существующих IP на аккаунте, создайте новый или выберите вариант «Без публичного IP». 5. Нажмите «Восстановить». ![Базы Данных 2026 08 10 10 20 (1)](https://content.timeweb.com/assets/419af9f4-f495-4ab3-a110-efbb5dea7700.png?width=1579&height=849) ### Без подключенной отмены удаления Если для кластера не подключена отмена удаления, в течение 72 часов после удаления можно воспользоваться разовым восстановлением. Стоимость разового восстановления — 2000 рублей. 1. Перейдите в раздел «Базы данных». 2. Выберите фильтр «Удаленные». 3. Кликните на ссылку «Восстановить до ….» у нужного кластера. 4. Назначьте публичный IP-адрес для сервера: выберите один из существующих IP на аккаунте, создайте новый или выберите вариант «Без публичного IP». 5. Поставьте галочку, чтобы принять соглашении об использовании сервиса. 6. Нажмите «Восстановить». Если на балансе достаточно средств, необходимая сумма будет списана с баланса. Если средств не хватает, вас переадресует на страницу оплаты. После поступления платежа кластер будет восстановлен. ![Базы Данных 2026 08 06 15 54](https://content.timeweb.com/assets/c1eb9dfc-d3f8-45f1-a721-ce45c53abea7.png?width=1582&height=856) # Удаление базы и кластера Source: https://timeweb.cloud/docs/dbaas/dbaas-manage/remove ## Удаление базы данных Чтобы удалить базу данных, созданную в кластере: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Базы данных» кликните на три точки у базы, которую нужно удалить. 3. Нажмите «Удалить». 4. Подтвердите действие. ![Bc431c65 A5aa 4617 A24c 57eb665b997f](https://content.timeweb.com/assets/b1897abf-2140-425a-a99e-7840c87ac692.png?width=1567&height=858) Физически база данных удаляется через сутки: - В течение суток вы можете создать новую базу с таким же именем, это ее восстановит. - Все пользователи теряют доступ к базе, пока она удаляется. - Вы можете увидеть имя базы через внешние инструменты, но работать с ней не сможете. ## Удаление кластера Удалить весь кластер, со всеми базами и пользователями, можно двумя способами: 1. Перейдите в раздел «Базы данных». 2. Кликните на три точки у кластера → «Удалить базу данных». 3. Подтвердите удаление. ![5109712e 3825 4317 B072 9c400dbeb63b](https://content.timeweb.com/assets/01d67d8e-9947-4dc7-89fd-ce58375f3af0.png?width=1570&height=845) Либо: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Конфигурация» кликните «Удалить базу данных». 3. Подтвердите удаление. ![825dec66 F0e8 4b51 Ba55 35cb998a2f97](https://content.timeweb.com/assets/78bb2f0d-444c-4dc1-aa87-ca6335423e25.png?width=1574&height=952) Будьте внимательны: при удалении все пользователи, базы данных и их содержимое будут утеряны безвозвратно. # Управление MySQL Source: https://timeweb.cloud/docs/dbaas/mysql MySQL — это система управления базами данных, используемая для размещения и обработки структурированных данных. В DBaaS вы получаете управляемую СУБД без необходимости ручной настройки — все происходит автоматически. ## Версии MySQL При создании кластера можно выбрать версию MySQL: 8.0 или 8.4. ## Репликация Для MySQL доступно создание кластера с репликацией. Количество реплик задается при создании: 3 или 5. Изменить это значение после создания невозможно. Стоимость рассчитывается по формуле: количество реплик \* стоимость одной ноды. В основе лежит кластерное решение на базе Percona XtraDB Cluster. Репликация работает по принципу multi-master — все узлы равноправны и способны одновременно принимать изменения. Синхронное выполнение операций обеспечивает консистентность данных. При сбое одного из узлов остальные продолжают обработку запросов, что гарантирует высокую доступность кластера. # Создание баз данных Source: https://timeweb.cloud/docs/dbaas/mysql/create-db При создании нового кластера автоматически создается база с именем `default_db`. Вы можете создавать дополнительные базы внутри этого кластера. > [!NOTE] > Создание дополнительных баз недоступно на минимальном тарифе 1 CPU / 1 ГБ RAM / 8 ГБ NVMe. Если вам нужно несколько баз в кластере, перейдите на любой тариф с 2 ГБ RAM и более. Чтобы создать новую базу данных: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Базы данных» кликните «Добавить». ![Image7](https://content.timeweb.com/assets/b23c381a-d804-46c8-ba53-fab567cd1dbc.png?width=1010&height=696) 3. Задайте имя базы. Имя может быть длиной от 3 до 63 символов и содержать латинские буквы, цифры и специальные символы. 4. (Опционально) Задайте комментарии к базе. Он будет отображаться в панели управления. 5. Нажмите «Создать». # Импорт баз данных Source: https://timeweb.cloud/docs/dbaas/mysql/import-db Вы можете импортировать существующую базу данных MySQL в вашу облачную базу. ## Как выполнить импорт 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Базы данных» кликните «Импортировать». ![Scr 20251110 Muvn](https://content.timeweb.com/assets/d589d5cb-c73c-46d5-9607-2ae134bd717b.png?width=2044&height=960) 3. Укажите данные для подключения к импортируемой базе данных. ![Scr 20251110 Mvfy](https://content.timeweb.com/assets/f9601044-d29a-4123-8143-313478169350.png?width=1990&height=1498) 4. Нажмите кнопку «Начать импорт». Статус импорта будет отображаться для базы в разделе «Базы данных». Во время импорта операции с базами данных не блокируются. ## Требования и ограничения - Исходная база данных должна быть доступна для подключения из подсети `92.53.116.0/24`. Без этого импорт не начнется. - Для принимающей базы данных должен быть настроен публичный IPv4-адрес. - В целевом кластере не должно существовать базы данных с таким же (идентичным) именем. Что будет перенесено: - структура таблиц; - данные в таблицах. Что не будет перенесено: - пользователи. Перед началом импорта рекомендуется временно снизить значение параметра `innodb_buffer_pool_size` до 50 % от объема оперативной памяти, выделенной базе данных. Пользователей необходимо будет создать вручную после завершения импорта. # Пользователи и привилегии Source: https://timeweb.cloud/docs/dbaas/mysql/users-and-privileges При создании кластера автоматически создается пользователь `gen_user`. Вы также можете создавать новых пользователей баз данных. > [!NOTE] > Создание пользователей недоступно на минимальном тарифе (1 CPU / 1 ГБ RAM / 8 ГБ NVMe). ## Создание пользователей 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Пользователи» кликните «Добавить». ![Image6](https://content.timeweb.com/assets/ef8d1232-7f4f-41f1-9530-9cf3f3ebba7d.png?width=1020&height=698) 3. Укажите имя пользователя: от 3 до 32 символов, латинские буквы, цифры и спецсимволы. 4. Укажите пароль пользователя: от 8 до 30 символов, латинские буквы, цифры и спецсимволы. 5. (Опционально) Задайте комментарий к пользователю. Он будет отображаться в панели управления. 6. По умолчанию пользователь будет создан с полными правами ко всем базам. Если вы хотите ограничить его привилегии, кликните «Показать привилегии» и настройте нужные. 7. Нажмите «Создать». ## Настройка привилегий Привилегии можно изменить после создания пользователя. Для этого: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Пользователи» нажмите на три точки рядом с нужным пользователем и выберите пункт «Привилегии». ![Image4](https://content.timeweb.com/assets/1ae17e53-47ce-428b-af16-c16fda0f9ea2.png?width=1004&height=706) 3. Выберите нужные привилегии. Можно задать права как на конкретную базу, так и на все базы сразу, включив опцию «Одинаковые для всех баз». 4. Нажмите «Сохранить». ![Image1](https://content.timeweb.com/assets/3cfc4fb2-b62c-463a-a788-cf1cd04fe6b4.png?width=1003&height=870) ## Доступные привилегии Для пользователей баз данных MySQL можно настроить следующие привилегии. | **Привилегия** | **Назначение** | | --- | --- | | `USAGE` | Базовая привилегия — разрешает вход в систему без доступа к объектам. | | `SELECT` | Чтение данных из таблиц и представлений. | | `INSERT` | Добавление новых записей. | | `UPDATE` | Изменение существующих записей. | | `DELETE` | Удаление записей. | | `CREATE` | Создание новых таблиц, индексов и других объектов. | | `DROP` | Удаление объектов, таких как таблицы или базы данных. | | `REFERENCES` | Использование внешних ключей. | | `INDEX` | Создание и удаление индексов. | | `ALTER` | Изменение структуры существующих таблиц. | | `LOCK TABLES` | Использование ручной блокировки таблиц. | | `CREATE VIEW` | Создание представлений (`views`). | | `SHOW VIEW` | Просмотр структуры существующих представлений. | | `CREATE ROUTINE` | Создание хранимых процедур и функций. | | `ALTER ROUTINE` | Изменение хранимых процедур и функций. | | `EVENT` | Создание и управление событиями (`EVENT SCHEDULER`). | | `TRIGGER` | Создание и удаление триггеров. | | `SELECT` на `slow_log` | Доступ к чтению системной таблицы медленных запросов. | | `DROP` на `slow_log` | Возможность очистки содержимого таблицы `slow_log`. | | `CREATE_USER` | Создание, изменение, удаление и переименование пользователей. | | `PROCESS` | Просмотр всех активных запросов (`SHOW PROCESSLIST`) и диагностика работы сервера. | | `CREATE_DB` | Создание новых баз данных и объектов верхнего уровня (таблиц, индексов и др.). | # Подключение к базе Source: https://timeweb.cloud/docs/dbaas/mysql/connect-to-database ## Подключение через веб-интерфейс Подключиться к базе можно через встроенные веб-интерфейсы — Adminer или phpMyAdmin. Для этого нажмите кнопку «Веб-интерфейс» и выберите нужный вариант. ![Image3](https://content.timeweb.com/assets/ac512c96-9c86-45e8-b23d-656dd6b23bae.png?width=1020&height=777) ## Подключение из терминала Установите клиент MySQL: Ubuntu ```shell sudo apt install mysql-client ``` Debian ```shell sudo apt install mariadb-client ``` Arch ```shell sudo pacman -S percona-server-clients ``` Fedora ```shell sudo dnf install mysql ``` Существует три способа подключения к кластеру MySQL: - по публичному IP; - по приватному IP; - по домену. Команду подключения можно скопировать: - на вкладке «Дашборд»; ![Fc259f2f 0933 4d14 Bbf5 1aa55b11fc37](https://content.timeweb.com/assets/0e883cad-92fc-46d8-a9bb-e8e4d2233408.png?width=2001&height=1579) - на вкладке «Подключение». ![Scr 20250807 Qcjj](https://content.timeweb.com/assets/860796f6-009e-400e-bd3b-82cf0d1c72cc.png?width=1996&height=964) > [!NOTE] > Если в качестве клиента вы используете MariaDB версии 10.10 или выше, для подключения к кластеру используйте ключ `--skip_ssl`. При подключении по домену используется защищенное подключение по TLS. В новых кластерах оно включено по умолчанию, в старых — требуется включение вручную. ## Настройка подключения по TLS Для настройки защищенного подключения необходимо настроить [подключение по публичному IP](https://timeweb.cloud/docs/dbaas/dbaas-manage/public-ip-access). Чтобы включить TLS: 1. Перейдите во вкладку «Подключение». 2. Нажмите кнопку «Включить защищенное подключение». 3. Дождитесь завершения настройки. ![Scr 20250807 Pzlg](https://content.timeweb.com/assets/3b66df63-7652-4a6d-8fe9-583620c97be7.png?width=2016&height=1092) После включения TLS для подключения потребуется установить сертификат. Готовые команды для установки доступны в панели управления, во вкладке «Подключение», для всех популярных операционных систем. ![Scr 20250807 Qbnt](https://content.timeweb.com/assets/51cc1f19-f257-4528-95c0-678318437363.png?width=2024&height=1492) Чтобы отключить TLS, нажмите кнопку «Выключить защищенное подключение». В появившейся форме подтвердите действие и дождитесь завершения перенастройки базы. ![Scr 20251024 Ngln](https://content.timeweb.com/assets/06a0154a-bff3-4a66-9174-3c0f7721d4c0.png?width=780&height=594) # Настройка параметров Source: https://timeweb.cloud/docs/dbaas/mysql/parameters Вы можете изменить параметры базы данных, чтобы оптимизировать ее работу. Тонкая настройка СУБД с учетом потребностей вашего проекта или решаемых задач позволит повысить производительность базы. Параметры применяются ко всем базам внутри конкретного кластера. По умолчанию база данных создается с набором настроек, которые подойдут для большинства задач и обеспечат производительную работу выбранной конфигурации. Однако, если вашему проекту требуются особые настройки СУБД, вы можете изменить их по своему усмотрению. Будьте внимательны и меняйте параметры, только если вы уверены в их назначении. Некорректная настройка может негативно сказаться на работе базы и ее производительности. Параметры базы данных имеют границы допустимых значений. Если указать значение вне этого диапазона, настройка не применится, и у параметра сохранится предыдущее допустимое значение. > [!NOTE] > Управление параметрами `innodb_buffer_pool_size`, `sort_buffer_size`, `max_connections`, `join_buffer_size`, `thread_cache_size` недоступно на конфигурациях с 1 ГБ RAM. ## Изменение параметров Чтобы изменить параметры: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер MySQL. 2. Откройте вкладку «Конфигурация». 3. В строке «Параметры базы данных» нажмите «Изменить параметры». ![Scr 20260713 Qesr](https://content.timeweb.com/assets/e23d21cc-3e60-4d59-bebd-58a36116d2e5.png?width=2214&height=1588) 4. Укажите нужные значения параметров. Доступные параметры зависят от версии MySQL: MySQL 8.0 Список доступных параметров (нажмите, чтобы развернуть) | **Параметр** | **Допустимые значения** | **Значение по умолчанию** | | --- | --- | --- | | [auto_increment_increment](https://dev.mysql.com/doc/refman/8.0/en/replication-options-source.html?roistat_visit=3932698#sysvar_auto_increment_increment) | От 1 до 65535 | 1 | | [auto_increment_offset](https://dev.mysql.com/doc/refman/8.0/en/replication-options-source.html?roistat_visit=3932698#sysvar_auto_increment_offset) | От 1 до 65535 | 1 | | [innodb_io_capacity](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_io_capacity) | От 100 до 4294967295 | 1500 | | [innodb_purge_threads](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_purge_threads) | От 1 до 32 | 4 | | [innodb_read_io_threads](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_read_io_threads) | От 1 до 64 | 4 | | [innodb_thread_concurrency](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_thread_concurrency) | От 0 до 1000 | 0 | | [innodb_write_io_threads](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_write_io_threads) | От 1 до 64 | 4 | | [innodb_log_file_size](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_log_file_size) | От 4194304 до 274877906944 | 214748365 | | [join_buffer_size](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_join_buffer_size) | От 128 до 18446744073709551488 | 67108864 | | [max_allowed_packet](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_max_allowed_packet) | От 1024 до 1073741824 | 16777216 | | [max_heap_table_size](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_max_heap_table_size) | От 16384 до 18446744073709550592 | 16777216 | | [max_connections](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_max_connections) | От 1 до 100000 | 49 | | [sql_mode](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_sql_mode) | Значения через пробел | — | | [sort_buffer_size](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_sort_buffer_size) | От 32768 до 18446744073709551615 | 14680064 | | [thread_cache_size](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_thread_cache_size) | От 0 до 16384 | 128 | | [innodb_flush_log_at_trx_commit](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_flush_log_at_trx_commit) | От 0 до 2 | 1 | | [transaction_isolation](https://dev.mysql.com/doc/refman/8.3/en/server-system-variables.html?roistat_visit=3932698#sysvar_transaction_isolation) | — | read-uncommitted | | [long_query_time](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_long_query_time) | От 0 до 31536000 | 10 | | [tmp_table_size](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_tmp_table_size) | От 1024 до 18446744073709551615 | 16777216 | | [table_open_cache](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_table_open_cache) | От 1 до 524288 | 4970 | | [table_open_cache_instances](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_table_open_cache_instances) | От 1 до 64 | 16 | | [innodb_flush_method](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_flush_method) | — | O_DSYNC | | [innodb_strict_mode](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_strict_mode) | Включена/Выключена | Включена | | [slow_query_log](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_slow_query_log) | Включена/Выключена | Включена | | [binlog_cache_size](https://dev.mysql.com/doc/refman/8.4/en/replication-options-binary-log.html?roistat_visit=3932698#sysvar_binlog_cache_size) | От 4096 до 18446744073709547520 | 32768 | | [binlog_group_commit_sync_delay](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html?roistat_visit=3932698#sysvar_binlog_group_commit_sync_delay) | От 1 до 1000000 | 1 | | [binlog_row_image](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html?roistat_visit=3932698#sysvar_binlog_row_image) | — | full | | [binlog_rows_query_log_events](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html?roistat_visit=3932698#sysvar_binlog_rows_query_log_events) | Включена/Выключена | Выключена | | [character_set_server](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_character_set_server) | — | utf8 | | [explicit_defaults_for_timestamp](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_explicit_defaults_for_timestamp) | Включена/Выключена | Включена | | [group_concat_max_len](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_group_concat_max_len) | От 4 до 18446744073709551615 | 1024 | | [innodb_adaptive_hash_index](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_adaptive_hash_index) | Включена/Выключена | Включена | | [innodb_lock_wait_timeout](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_lock_wait_timeout) | От 1 до 1073741824 | 50 | | [innodb_numa_interleave](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_numa_interleave) | Включена/Выключена | Выключена | | [net_read_timeout](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_net_read_timeout) | От 1 до 31536000 | 30 | | [net_write_timeout](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_net_write_timeout) | От 1 до 31536000 | 1 | | [regexp_time_limit](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_regexp_time_limit) | От 0 до 2147483647 | 32 | | [sync_binlog](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html?roistat_visit=3932698#sysvar_sync_binlog) | От 0 до 4294967295 | 1 | | [table_definition_cache](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_table_definition_cache) | От 400 до 524288 | 2000 | | [log_bin_trust_function_creators](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html?roistat_visit=3932698#sysvar_log_bin_trust_function_creators) | Включена/Выключена | Включена | | [skip_name_resolve](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_skip_name_resolve) | Включена/Выключена | Выключена | | [innodb_buffer_pool_size](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_buffer_pool_size) | От 5242880 до 18446744073709551615 | 858993459 | | [wait_timeout](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_wait_timeout) | От 1 до 31536000 | 28800 | | [interactive_timeout](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_interactive_timeout) | От 1 до 31536000 | 28800 | | [default-time-zone](https://dev.mysql.com/doc/refman/8.3/en/server-system-variables.html?roistat_visit=3932698#sysvar_time_zone) | От -13:59 до +14:00 | — | MySQL 8.4 Список доступных параметров (нажмите, чтобы развернуть) | **Параметр** | **Допустимые значения** | **Значение по умолчанию** | | --- | --- | --- | | [auto_increment_increment](https://dev.mysql.com/doc/refman/8.0/en/replication-options-source.html?roistat_visit=3932698#sysvar_auto_increment_increment) | От 1 до 65535 | 1 | | [auto_increment_offset](https://dev.mysql.com/doc/refman/8.0/en/replication-options-source.html?roistat_visit=3932698#sysvar_auto_increment_offset) | От 1 до 65535 | 1 | | [innodb_io_capacity](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_io_capacity) | От 100 до 4294967295 | 1500 | | [innodb_purge_threads](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_purge_threads) | От 1 до 32 | 4 | | [innodb_read_io_threads](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_read_io_threads) | От 1 до 64 | 4 | | [innodb_thread_concurrency](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_thread_concurrency) | От 0 до 1000 | 0 | | [innodb_write_io_threads](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_write_io_threads) | От 1 до 64 | 4 | | [innodb_log_file_size](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_log_file_size) | От 4194304 до 274877906944 | 214748365 | | [join_buffer_size](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_join_buffer_size) | От 128 до 18446744073709551488 | 67108864 | | [max_allowed_packet](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_max_allowed_packet) | От 1024 до 1073741824 | 16777216 | | [max_heap_table_size](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_max_heap_table_size) | От 16384 до 18446744073709550592 | 16777216 | | [max_connections](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_max_connections) | От 1 до 100000 | 49 | | [sql_mode](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_sql_mode) | Значения через пробел | — | | [sort_buffer_size](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_sort_buffer_size) | От 32768 до 18446744073709551615 | 14680064 | | [thread_cache_size](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_thread_cache_size) | От 0 до 16384 | 128 | | [innodb_flush_log_at_trx_commit](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_flush_log_at_trx_commit) | От 0 до 2 | 1 | | [transaction_isolation](https://dev.mysql.com/doc/refman/8.3/en/server-system-variables.html?roistat_visit=3932698#sysvar_transaction_isolation) | — | read-uncommitted | | [long_query_time](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_long_query_time) | От 0 до 31536000 | 10 | | [tmp_table_size](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_tmp_table_size) | От 1024 до 18446744073709551615 | 16777216 | | [table_open_cache](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_table_open_cache) | От 1 до 524288 | 4970 | | [table_open_cache_instances](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_table_open_cache_instances) | От 1 до 64 | 16 | | [innodb_flush_method](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_flush_method) | — | O_DSYNC | | [innodb_strict_mode](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_strict_mode) | Включена/Выключена | Включена | | [slow_query_log](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_slow_query_log) | Включена/Выключена | Включена | | [binlog_cache_size](https://dev.mysql.com/doc/refman/8.4/en/replication-options-binary-log.html?roistat_visit=3932698#sysvar_binlog_cache_size) | От 4096 до 18446744073709547520 | 32768 | | [binlog_group_commit_sync_delay](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html?roistat_visit=3932698#sysvar_binlog_group_commit_sync_delay) | От 1 до 1000000 | 1 | | [binlog_row_image](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html?roistat_visit=3932698#sysvar_binlog_row_image) | — | full | | [binlog_rows_query_log_events](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html?roistat_visit=3932698#sysvar_binlog_rows_query_log_events) | Включена/Выключена | Выключена | | [character_set_server](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_character_set_server) | — | utf8 | | [explicit_defaults_for_timestamp](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_explicit_defaults_for_timestamp) | Включена/Выключена | Включена | | [group_concat_max_len](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_group_concat_max_len) | От 4 до 18446744073709551615 | 1024 | | [innodb_adaptive_hash_index](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_adaptive_hash_index) | Включена/Выключена | Включена | | [innodb_lock_wait_timeout](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_lock_wait_timeout) | От 1 до 1073741824 | 50 | | [innodb_numa_interleave](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_numa_interleave) | Включена/Выключена | Выключена | | [net_read_timeout](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_net_read_timeout) | От 1 до 31536000 | 30 | | [net_write_timeout](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_net_write_timeout) | От 1 до 31536000 | 1 | | [regexp_time_limit](https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html?roistat_visit=3932698#sysvar_regexp_time_limit) | От 0 до 2147483647 | 32 | | [sync_binlog](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html?roistat_visit=3932698#sysvar_sync_binlog) | От 0 до 4294967295 | 1 | | [table_definition_cache](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_table_definition_cache) | От 400 до 524288 | 2000 | | [log_bin_trust_function_creators](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html?roistat_visit=3932698#sysvar_log_bin_trust_function_creators) | Включена/Выключена | Включена | | [skip_name_resolve](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_skip_name_resolve) | Включена/Выключена | Выключена | | [innodb_redo_log_capacity](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_redo_log_capacity) | От 8388608 до 137438953472 | 104857600 | | [innodb_buffer_pool_size](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html?roistat_visit=3932698#sysvar_innodb_buffer_pool_size) | От 5242880 до 18446744073709551615 | 858993459 | | [wait_timeout](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_wait_timeout) | От 1 до 31536000 | 28800 | | [interactive_timeout](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html?roistat_visit=3932698#sysvar_interactive_timeout) | От 1 до 31536000 | 28800 | | [default-time-zone](https://dev.mysql.com/doc/refman/8.3/en/server-system-variables.html?roistat_visit=3932698#sysvar_time_zone) | От -13:59 до +14:00 | — | Для получения дополнительной информации о параметрах нажмите кнопку «Открыть описание» рядом с нужным параметром. ![Scr 20260713 Qfaf](https://content.timeweb.com/assets/a581aacc-91d7-4a85-8f8b-cb6c8dbe38a6.png?width=2146&height=1962) 5. Нажмите «Применить» внизу страницы, чтобы сохранить изменения. Для быстрого поиска используйте строку поиска по названию параметра. Также параметры можно отфильтровать по наличию изменений. ![Scr 20260713 Pbfr](https://content.timeweb.com/assets/56f9dcec-5e3a-4f22-9b53-ea86ba595f9a.png?width=2106&height=1632) ## Сброс параметров При необходимости вы можете вернуть одному или всем параметрам значения по умолчанию. Перейдите в раздел «Базы данных», выберите нужный кластер MySQL, откройте вкладку «Конфигурация» и нажмите «Изменить параметры» в строке «Параметры базы данных». ### Сброс одного параметра 1. Нажмите «Вернуть по умолчанию» рядом с нужным параметром. На кнопке указано значение по умолчанию, которое будет установлено после сброса. 2. Нажмите на кнопку «Применить», для сохранения новых значений. ![Scr 20260713 Oxkk](https://content.timeweb.com/assets/668a121f-1b67-4adc-83cd-d9c02760bce5.png?width=2142&height=1952) ### Сброс всех параметров 1. Нажмите «Вернуть параметры по умолчанию». 2. В окне подтверждения нажмите «Сбросить параметры». ![Scr 20260713 Qcug](https://content.timeweb.com/assets/d2d0b772-d0aa-4b67-bf79-6839e84427cb.png?width=2170&height=1960) ## Импорт и экспорт параметров Параметры MySQL можно экспортировать в файл и импортировать в другой кластер. ### Экспорт параметров 1. Откройте страницу изменения параметров базы данных. 2. Нажмите «Импорт и экспорт» → «Экспортировать параметры». Браузер скачает JSON-файл с текущими значениями параметров. ### Импорт параметров 1. Откройте страницу изменения параметров базы данных. 2. Нажмите «Импорт и экспорт» → «Импортировать параметры». 3. Выберите JSON-файл с параметрами. 4. Параметры отобразятся в меню настроек, но не применяется сразу после загрузки. 5. Нажмите на кнопку «Применить». Файл с параметрами должен содержать объект, в котором названия параметров указаны как ключи, а их значения — как строки: ```js { "имя_параметра_1": "значение_параметра_1", "имя_параметра_2": "значение_параметра_2" } ``` Если параметр отсутствует в используемой версии MySQL или недоступен для изменения, при импорте он будет проигнорирован. # Автомасштабирование диска Source: https://timeweb.cloud/docs/dbaas/mysql/disk-autoscaling Автомасштабирование диска позволяет автоматически расширять диск базы данных при достижении заданного вами порога заполнения, чтобы избежать перехода кластера в режим «только чтение». Расширение диска происходит в «горячем» режиме, без перезагрузки или остановки кластера. При срабатывании автомасштабирования вам будет отправлено уведомление. Опция доступна для кластеров без репликации, созданных после 12 декабря 2024 года. > [!NOTE] > Если кластер был создан по фиксированному тарифу, при первом срабатывании автомасштабирования он будет переведен на произвольную конфигурацию. Стоимость всех ресурсов кластера будет пересчитана по условиям конфигуратора. > > Вернуться на прежний фиксированный тариф будет невозможно. ## Настройка автомасштабирования Включить или отключить автомасштабирование, а также настроить его параметры можно при создании новой базы или в настройках существующей. ### Для новой базы В процессе создания базы на этапе «Конфигурация» оставьте опцию автомасштабирования включенной либо отключите ее. Задайте желаемые параметры. ![8edca157 5b13 4f85 8cc3 Ce3730d0c9c4](https://content.timeweb.com/assets/75a8dec3-0c19-42e7-bbe1-7af1d06134ee.png?width=744&height=400) ### Для существующей базы 1. Перейдите в раздел «Базы данных» и кликните на новую базу. 2. На вкладке «Конфигурация» кликните «Выбрать конфигурацию». 3. Включите или отключите опцию автомасштабирования диска. 4. Настройте параметры, если необходимо. 5. Сохраните изменения. ![9c25f510 Edfc 491c 8a9b 27bbf9ce2175](https://content.timeweb.com/assets/274dc1cf-df77-4c88-9517-de2ad331035f.png?width=1556&height=1598) ## Параметры автомасштабирования Вы можете настроить: - **Порог заполненности** — процент заполненности диска, при котором срабатывает автомасштабирование. Возможные значения: 80%, 90% и 95%. - **Шаг увеличения диска** — на сколько гигабайт будет увеличен диск при каждом срабатывании автомасштабирования. Возможные значения: от 5 ГБ до 100 ГБ. Максимально возможный размер диска кластера — 2 ТБ. # Создание и загрузка дампа Source: https://timeweb.cloud/docs/dbaas/mysql/dump ## Создание дампа Для создания дампа используйте следующую команду: ```shell mysqldump --set-gtid-purged=off -y -u gen_user -p'password' -h ip_dbaas default_db | gzip > default_db.sql.gz ``` `--set-gtid-purged=off` — исключает команду `SET @@GLOBAL.GTID_PURGED`, которая может вызвать ошибку при недостаточных привилегиях. `-y (--no-tablespaces)` — исключает табличные пространства, без этого флага возможна ошибка при дампе. ## Загрузка дампа Для загрузки дампа выполните: ```shell cat default_db.sql.gz | gzip -d | mysql -u gen_user -p'password' -h ip_dbaas default_db ``` Команда распаковывает дамп и передает его в клиент MySQL для выполнения. # Логи баз данных Source: https://timeweb.cloud/docs/dbaas/mysql/logs Мы собираем и выводим в панель управления логи сервисов баз данных, которые они автоматически генерируют в стандартные файлы логов. Просмотреть их можно на вкладке «Логи». ![614d92f2 B9e1 4848 B823 71bebbbd13cd](https://content.timeweb.com/assets/1040ea29-baca-4b1d-9b79-3b1540bb64da.png?width=1542&height=1165) С их помощью можно быстро отследить возможные ошибки и оперативно на них отреагировать — самостоятельно или обратившись в нашу поддержку. Для MySQL мы выводим лог ошибок (Error Log), расположенный по пути `/var/log/mysql/error.log`. Лог полезен для диагностики проблем с запуском сервера БД, критических сбоев и проблем с репликацией. Лог содержит: - Сообщения о запуске и остановке сервера. - Критические ошибки в работе сервера и движков (например, InnoDB). - Сообщения о проблемах с репликацией. В логах не выводится предупреждение о deprecated-аутентификации ("deprecated and will be removed in a future release. Please use caching_sha2_password instead"), так как оно не является критическим и лишь перегружает вывод. ## Сценарии использования Рассмотрим, как можно применять логи на практике. Для удобного поиска информации в логе его можно скачать в формате `.txt`. ![1bff69b2 50e3 45f2 B33b 0e065b17d281](https://content.timeweb.com/assets/76aaf711-47b9-4519-a2e2-704882c66572.png?width=1550&height=1154) #### Кейс 1: Репликация данных отстает или ломается Когда репликация начинает отставать или полностью ломается, необходимо определить транзакцию, вызвавшую сбой. Для этого анализируют бинарный лог (`binlog`) на мастер-сервере: он покажет последние выполненные запросов и позволит выявить тот, который не удается применить на реплике — например, из-за расхождения в данных. Такой анализ помогает восстановить репликацию и синхронность данных. #### Кейс 2: Подозрение на попытку взлома базы данных В этом случае важно подтвердить факт взлома и определить источник. Для этого изучают общий лог запросов (`general_log`) или аудит: они показывают все входящие запросы и IP-адреса, с которых они были отправлены, включая подозрительные операции. На основе этих данных можно оперативно заблокировать злоумышленника и усилить меры безопасности. # Управление PostgreSQL Source: https://timeweb.cloud/docs/dbaas/postgresql PostgreSQL — это объектно-реляционная система управления базами данных с открытым исходным кодом. Она отличается высокой надежностью, масштабируемостью и широкими возможностями: поддержкой JSON, полнотекстовым поиском, хранимыми процедурами, расширениями и прочим. Вы получаете полностью управляемый кластер PostgreSQL без необходимости ручной настройки — все происходит автоматически. ## Версии PostgreSQL При создании кластера можно выбрать версию PostgreSQL: 14, 15, 16, 17 или 18. ## Репликация Кластеры PostgreSQL в DBaaS используют связку Patroni и Etcd для обеспечения отказоустойчивости. Репликация работает по принципу leader-replica: один узел принимает все записи (лидер), а остальные получают изменения в асинхронном режиме. В случае сбоя лидера система автоматически переключает роль на одну из реплик, обеспечивая высокую доступность базы данных. # Создание баз данных Source: https://timeweb.cloud/docs/dbaas/postgresql/create-db При создании нового кластера автоматически создается база с именем `default_db`. Вы можете создавать дополнительные базы внутри этого кластера. > [!NOTE] > Создание дополнительных баз недоступно на минимальном тарифе 1 CPU / 1 ГБ RAM / 8 ГБ NVMe. Если вам нужно несколько баз в кластере, перейдите на любой тариф с 2 ГБ RAM и более. Чтобы создать новую базу данных: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Базы данных» кликните «Добавить». ![Image2](https://content.timeweb.com/assets/924dd2f0-c911-458e-8ed0-15d68895f8c4.png?width=1029&height=709) 3. Задайте имя базы. Имя может быть длиной от 3 до 63 символов и содержать латинские буквы, цифры и специальные символы. 4. (Опционально) Задайте комментарии к базе. Он будет отображаться в панели управления. 5. Нажмите «Создать». # Импорт баз данных Source: https://timeweb.cloud/docs/dbaas/postgresql/import-db Вы можете импортировать существующую базу данных PostgreSQL в вашу облачную базу. ## Как выполнить импорт 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Базы данных» кликните «Импортировать». ![Image 20251023181907180](https://content.timeweb.com/assets/87ec3971-d51c-4e9b-8325-ce3671c2b0c2.png?width=2018&height=846) 3. Укажите данные для подключения к импортируемой базе данных. 4. Нажмите «Начать импорт». ![Image 20251023182242899](https://content.timeweb.com/assets/501663e9-df1b-4007-afe8-504830627c80.png?width=838&height=1230) Статус импорта будет отображаться для базы в разделе «Базы данных». Во время импорта операции с базами данных не блокируются. ## Требования и ограничения - Исходная база данных должна быть доступна для подключения из подсети 92.53.116.0/24. Без этого импорт не начнется. - Для принимающей базы данных должен быть настроен публичный IPv4-адрес. - В целевом кластере не должно существовать базы данных с таким же (идентичным) именем. #### Что будет перенесено: - структура таблиц; - индексы; - данные в таблицах. #### Что не будет перенесено: - пользователи и роли; - расширения. Вам необходимо будет создать пользователей и установить необходимые расширения в новой базе данных вручную. ## Совместимость версий Импорт поддерживает перенос данных между разными версиями PostgreSQL (например, из 17 в 18). Однако следует учитывать, что некоторые расширения и параметры могут быть несовместимы или иметь отличия в разных версиях. # Пользователи и привилегии Source: https://timeweb.cloud/docs/dbaas/postgresql/users-and-privileges При создании кластера автоматически создается пользователь `gen_user`. Вы также можете создавать новых пользователей на вкладке «Пользователи». > [!NOTE] > Создание пользователей недоступно на минимальном тарифе (1 CPU / 1 ГБ RAM / 8 ГБ NVMe). ## Создание пользователей Чтобы создать пользователя: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Пользователи» кликните «Добавить». ![Image3](https://content.timeweb.com/assets/179aec0b-69f2-4ce9-8084-888c55bd8510.png?width=1014&height=705) 3. Укажите имя пользователя: от 3 до 32 символов, латинские буквы, цифры и спецсимволы. 4. Укажите пароль пользователя: от 8 до 30 символов, латинские буквы, цифры и спецсимволы. 5. (Опционально) Задайте комментарий к пользователю. Он будет отображаться в панели управления. 6. По умолчанию пользователь будет создан с полными правами ко всем базам. Если вы хотите ограничить его привилегии, кликните «Показать привилегии» и настройте нужные. 7. Нажмите «Создать». ## Настройка привилегий Вы можете изменить привилегии существующего пользователя. Для этого: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Пользователи» нажмите на три точки рядом с нужным пользователем и выберите пункт «Привилегии». ![Image8](https://content.timeweb.com/assets/375f8822-583d-4426-bc80-cd8dd71aa2ce.png?width=1028&height=701) 3. Выберите нужные привилегии. Можно задать права как на конкретную базу, так и на все базы сразу, включив опцию «Одинаковые для всех баз». 4. Нажмите «Сохранить». ![Image1](https://content.timeweb.com/assets/081f64e9-dd33-46d0-a9e2-6dbcace5c0c1.png?width=1016&height=755) ## Доступные привилегии Для пользователей баз данных PostgreSQL можно настроить следующие привилегии. | **Привилегия** | **Назначение** | | --- | --- | | `SELECT` | Чтение данных из таблиц, представлений и последовательностей. | | `INSERT` | Добавление новых строк в таблицы. | | `UPDATE` | Изменение существующих строк в таблицах. | | `DELETE` | Удаление строк из таблиц. | | `TRUNCATE` | Быстрое удаление всех строк из таблицы (без логирования отдельных удалений). | | `CREATE` | Создание новых объектов в базе данных (таблиц, представлений, функций и др.). | | `REFERENCES` | Использование таблицы в качестве внешнего ключа. | | `TRIGGER` | Создание и выполнение триггеров на таблице. | | `TEMPORARY` | Создание временных таблиц в базе данных. | | `CREATEDB` | Создание новых баз данных. | | `CREATE_ROLE` | [Создание ролей](https://timeweb.cloud/docs/dbaas/postgresql/roles). | # Подключение к базе Source: https://timeweb.cloud/docs/dbaas/postgresql/connect-to-database ## Подключение через веб-интерфейс Подключиться к базе можно через встроенный веб-интерфейс — Adminer. Для этого нажмите кнопку «Веб-интерфейс» и выберите Adminer. ![Image9](https://content.timeweb.com/assets/d39a1aab-f2b2-4f85-b8bd-a0d43fd49ee7.png?width=1010&height=807) ## Подключение из терминала Установите клиент PostgreSQL: Ubuntu/Debian ```shell sudo apt install postgresql-client ``` Arch ```shell sudo pacman -S postgresql-libs ``` Fedora ```shell sudo dnf install postgresql ``` Существует три способа подключения к кластеру PostgreSQL: - по публичному IP; - по приватному IP; - по домену. Команду подключения можно скопировать: - на вкладке «Дашборд»; ![Scr 20250808 Ksbe](https://content.timeweb.com/assets/6b056930-5860-4584-ae4d-258a418d86ba.png?width=1998&height=1536) - на вкладке «Подключение». ![Scr 20250808 Ksia](https://content.timeweb.com/assets/f589fc6d-5902-4872-b0ae-29b2c6b1a2b3.png?width=2002&height=966) При подключении по домену используется защищенное подключение по TLS. В новых кластерах оно включено по умолчанию, в старых — требуется включение вручную. ## Настройка подключения по TLS Для настройки защищенного подключения необходимо настроить [подключение по публичному IP](https://timeweb.cloud/docs/dbaas/dbaas-manage/public-ip-access). Чтобы включить TLS: 1. Перейдите во вкладку «Подключение». 2. Нажмите кнопку «Включить защищенное подключение». 3. Дождитесь завершения настройки. ![Scr 20250808 Ktca](https://content.timeweb.com/assets/2d208f03-6338-410a-9415-7eb6d969f4a9.png?width=2000&height=956) После включения TLS для подключения потребуется установить сертификат. Готовые команды для установки доступны в панели управления, во вкладке «Подключение», для всех популярных операционных систем. ![Scr 20250808 Ktps](https://content.timeweb.com/assets/a8e83e68-2c22-468b-ae44-26540f6e2106.png?width=1990&height=1492) Чтобы отключить TLS, нажмите кнопку «Выключить защищенное подключение». В появившейся форме подтвердите действие и дождитесь завершения перенастройки базы. ![Scr 20251024 Pocy](https://content.timeweb.com/assets/c843e06a-77ad-4599-89a8-c40d5c6cf27f.png?width=1022&height=731) # Расширения Source: https://timeweb.cloud/docs/dbaas/postgresql/extensions PostgreSQL поддерживает расширения, которые позволяют расширить стандартную функциональность — от работы с новыми типами данных до сбора статистики и управления задачами. ## Доступные расширения Набор доступных расширений может отличаться в разных версиях PostgreSQL. | Название | Описание | | --- | --- | | `amcheck` | Проверка целостности индексов и таблиц. | | `citext` | Тип данных для строк без учета регистра. | | `cube` | Работа с многомерными точками и кубами, в том числе вычисление расстояний между ними. | | `earthdistance` | Вычисление расстояний между географическими координатами на поверхности Земли. | | `fuzzystrmatch` | Нечеткое сравнение строк, например для поиска похожих по написанию или звучанию значений. | | `hstore` | Хранение наборов данных в формате «ключ — значение» в одном поле PostgreSQL. | | `intarray` | Дополнительные функции и операторы для работы с массивами целых чисел. | | `ltree` | Хранение и поиск данных с древовидной иерархической структурой. | | `pg_prewarm` | Предварительная загрузка данных PostgreSQL в кеш для ускорения последующего доступа. | | `pg_stat_kcache` | Сбор статистики по использованию ресурсов ядра операционной системы. | | `pg_stat_statements` | Сбор и анализ статистики выполнения SQL-запросов. | | `pg_trgm` | Поиск и сравнение строк с использованием триграмм (нечеткий поиск). | | `pgagent` | Планировщик заданий для выполнения SQL-скриптов и shell-команд по расписанию. | | `pgcrypto` | Криптографические функции: хеширование, шифрование, цифровые подписи. | | `pgvector` | Тип данных для векторов и методы доступа `ivfflat` и `hnsw` для поиска по близости. | | `postgis` | Работа с географическими и геометрическими данными (GIS). | | `postgis_topology` | Модуль топологии для PostGIS — поддержка работы с топологическими отношениями между объектами. | | `timescaledb` | Хранение и обработка временных рядов с поддержкой масштабируемых вставок и сложных запросов. | | `unaccent` | Удаление диакритических знаков из текста, в том числе для упрощения поиска. | | `uuid-ossp` | Генерация UUID различных версий. | > [!NOTE] > Для работы расширения `earthdistance` необходимо также подключить расширение `cube`. ## Настройка расширений Для включения или выключения расширения: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Конфигурация» нажмите на кнопку «Изменить» в строке «Расширения». 3. Настройте нужные расширения — для конкретных баз, выбирая их в выпадающем списке, либо для всех баз сразу, включив опцию «Использовать одинаковые расширения для всех баз». ![Image6](https://content.timeweb.com/assets/be2fe011-cd4e-4e9e-a1c0-66eea1e1b2e3.png?width=1015&height=802) # Настройка параметров Source: https://timeweb.cloud/docs/dbaas/postgresql/parameters Вы можете изменить параметры базы данных, чтобы оптимизировать ее работу. Тонкая настройка СУБД с учетом потребностей вашего проекта или решаемых задач позволит повысить производительность базы. Параметры применяются ко всем базам внутри конкретного кластера. По умолчанию база данных создается с набором настроек, которые подойдут для большинства задач и обеспечат производительную работу выбранной конфигурации. Однако, если вашему проекту требуются особые настройки СУБД, вы можете изменить их по своему усмотрению. Будьте внимательны и меняйте параметры, только если вы уверены в их назначении. Некорректная настройка может негативно сказаться на работе базы и ее производительности. Параметры базы данных имеют границы допустимых значений. Если указать значение вне этого диапазона, настройка не применится, и у параметра сохранится предыдущее допустимое значение. > [!NOTE] > Управление параметрами `shared_buffers`, `effective_cache_size`, `maintenance_work_mem`, `max_connections` недоступно для конфигураций с 1 ГБ RAM. ## Изменение параметров Чтобы изменить параметры: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер PostgreSQL. 2. Откройте вкладку «Конфигурация». 3. В строке «Параметры базы данных» нажмите «Изменить параметры». ![Изменение параметров базы данных](https://content.timeweb.com/assets/bdede74b-1fb2-4ec3-b2cf-a1275e40c226.png?width=2218&height=1668) 4. Укажите нужные значения параметров. Список доступных параметров (нажмите, чтобы развернуть) | **Параметр** | **Допустимые значения** | **Значение по умолчанию** | | --- | --- | --- | | [autovacuum_analyze_scale_factor](https://postgresqlco.nf/doc/en/param/autovacuum_analyze_scale_factor?roistat_visit=3932698) | От 0 до 100 | 0.1 | | [autovacuum_max_workers](https://postgresqlco.nf/doc/en/param/autovacuum_max_workers/?roistat_visit=3932698) | От 1 до 262143 | 3 | | [autovacuum_naptime](https://postgresqlco.nf/doc/en/param/autovacuum_naptime/?roistat_visit=3932698) | От 1 до 2147483 | 60 | | [autovacuum_vacuum_insert_scale_factor](https://postgresqlco.nf/doc/en/param/autovacuum_vacuum_insert_scale_factor/?roistat_visit=3932698) | От 0 до 100 | 0.2 | | [autovacuum_vacuum_scale_factor](https://postgresqlco.nf/doc/en/param/autovacuum_vacuum_scale_factor/?roistat_visit=3932698) | От 0 до 100 | 0.2 | | [autovacuum_work_mem](https://postgresqlco.nf/doc/en/param/autovacuum_work_mem/?roistat_visit=3932698) | От -1 до 2147483647 | \-1 | | [bgwriter_delay](https://postgresqlco.nf/doc/en/param/bgwriter_delay/?roistat_visit=3932698) | От 10 до 10000 | 200 | | [bgwriter_lru_maxpages](https://postgresqlco.nf/doc/en/param/bgwriter_lru_maxpages/?roistat_visit=3932698) | От 0 до 1073741823 | 100 | | [deadlock_timeout](https://postgresqlco.nf/doc/en/param/deadlock_timeout/?roistat_visit=3932698) | От 1 до 2147483647 | 1000 | | [gin_pending_list_limit](https://postgresqlco.nf/doc/en/param/gin_pending_list_limit/?roistat_visit=3932698) | От 64 до 2147483647 | 4096 | | [idle_in_transaction_session_timeout](https://postgresqlco.nf/doc/en/param/idle_in_transaction_session_timeout/?roistat_visit=3932698) | От 0 до 2147483647 | 0 | | [join_collapse_limit](https://postgresqlco.nf/doc/en/param/join_collapse_limit/?roistat_visit=3932698) | От 1 до 2147483647 | 8 | | [lock_timeout](https://postgresqlco.nf/doc/en/param/lock_timeout/?roistat_visit=3932698) | От 0 до 2147483647 | 0 | | [max_prepared_transactions](https://postgresqlco.nf/doc/en/param/max_prepared_transactions/?roistat_visit=3932698) | От 0 до 262143 | 0 | | [max_connections](https://postgresqlco.nf/doc/en/param/max_connections/?roistat_visit=3932698) | От 1 до 262143 | 200 | | [shared_buffers](https://postgresqlco.nf/doc/en/param/shared_buffers/?roistat_visit=3932698) | От 16 до 1073741823 | 31232 | | [wal_buffers](https://postgresqlco.nf/doc/en/param/wal_buffers/?roistat_visit=3932698) | От -1 до 262143 | 2048 | | [temp_buffers](https://postgresqlco.nf/doc/en/param/temp_buffers/?roistat_visit=3932698) | От 100 до 1073741823 | 1024 | | [work_mem](https://postgresqlco.nf/doc/en/param/work_mem/?roistat_visit=3932698) | От 64 до 2147483647 | 436 | | [default_transaction_isolation](https://postgresqlco.nf/doc/en/param/default_transaction_isolation/?roistat_visit=3932698) | — | `read committed` | | [effective_cache_size](https://postgresqlco.nf/doc/en/param/effective_cache_size/?roistat_visit=3932698) | От 1 до 2147483647 | 524288 | | [max_wal_size](https://postgresqlco.nf/doc/en/param/max_wal_size/?roistat_visit=3932698) | От 2 до 2147483647 | 1024 | | [min_wal_size](https://postgresqlco.nf/doc/en/param/min_wal_size/?roistat_visit=3932698) | От 2 до 2147483647 | 80 | | [wal_level](https://postgresqlco.nf/doc/en/param/wal_level/) | replica / logical | replica | | [max_replication_slot](https://postgresqlco.nf/doc/en/param/max_replication_slots/) | От 5 до 262143 | 10 | | [max_wal_senders](https://postgresqlco.nf/doc/en/param/max_wal_senders/) | От 5 до 262143 | 10 | | [max_worker_processes](https://postgresqlco.nf/doc/en/param/max_worker_processes/?roistat_visit=3932698) | От 0 до 262143 | 8 | | [max_logical_replication_workers](https://postgresqlco.nf/doc/en/param/max_logical_replication_workers/?roistat_visit=3932698) | От 0 до 262143 | 4 | | [max_parallel_maintenance_workers](https://postgresqlco.nf/doc/en/param/max_parallel_maintenance_workers/?roistat_visit=3932698) | От 0 до 1024 | 2 | | [max_parallel_workers](https://postgresqlco.nf/doc/en/param/max_parallel_workers/?roistat_visit=3932698) | От 0 до 1024 | 8 | | [max_parallel_workers_per_gather](https://postgresqlco.nf/doc/en/param/max_parallel_workers_per_gather/?roistat_visit=3932698) | От 0 до 1024 | 2 | | [array_nulls](https://postgresqlco.nf/doc/en/param/array_nulls/?roistat_visit=3932698) | Включена/Выключена | Включена | | [backend_flush_after](https://postgresqlco.nf/doc/en/param/backend_flush_after/?roistat_visit=3932698) | От 0 до 256 | 0 | | [backslash_quote](https://postgresqlco.nf/doc/en/param/backslash_quote/?roistat_visit=3932698) | — | `safe_encoding` | | [bgwriter_flush_after](https://postgresqlco.nf/doc/en/param/bgwriter_flush_after/?roistat_visit=3932698) | От 0 до 256 | 64 | | [bgwriter_lru_multiplier](https://postgresqlco.nf/doc/en/param/bgwriter_lru_multiplier/?roistat_visit=3932698) | От 1 до 10 | 2 | | [default_transaction_read_only](https://postgresqlco.nf/doc/en/param/default_transaction_read_only/?roistat_visit=3932698) | Включена/Выключена | Выключена | | [enable_hashagg](https://postgresqlco.nf/doc/en/param/enable_hashagg/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_hashjoin](https://postgresqlco.nf/doc/en/param/enable_hashjoin/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_incremental_sort](https://postgresqlco.nf/doc/en/param/enable_incremental_sort/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_indexscan](https://postgresqlco.nf/doc/en/param/enable_indexscan/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_indexonlyscan](https://postgresqlco.nf/doc/en/param/enable_indexonlyscan/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_material](https://postgresqlco.nf/doc/en/param/enable_material/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_memoize](https://postgresqlco.nf/doc/en/param/enable_memoize/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_mergejoin](https://postgresqlco.nf/doc/en/param/enable_mergejoin/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_parallel_append](https://postgresqlco.nf/doc/en/param/enable_parallel_append/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_parallel_hash](https://postgresqlco.nf/doc/en/param/enable_parallel_hash/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_partition_pruning](https://postgresqlco.nf/doc/en/param/enable_partition_pruning/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_partitionwise_join](https://postgresqlco.nf/doc/en/param/enable_partitionwise_join/?roistat_visit=3932698) | Включена/Выключена | Выключена | | [enable_partitionwise_aggregate](https://postgresqlco.nf/doc/en/param/enable_partitionwise_aggregate/?roistat_visit=3932698) | Включена/Выключена | Выключена | | [enable_seqscan](https://postgresqlco.nf/doc/en/param/enable_seqscan/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_sort](https://postgresqlco.nf/doc/en/param/enable_sort/?roistat_visit=3932698) | Включена/Выключена | Включена | | [enable_tidscan](https://postgresqlco.nf/doc/en/param/enable_tidscan/?roistat_visit=3932698) | Включена/Выключена | Включена | | [exit_on_error](https://postgresqlco.nf/doc/en/param/exit_on_error/?roistat_visit=3932698) | Включена/Выключена | Выключена | | [from_collapse_limit](https://postgresqlco.nf/doc/en/param/from_collapse_limit/?roistat_visit=3932698) | От 1 до 2147483647 | 8 | | [idle_session_timeout](https://postgresqlco.nf/doc/en/param/idle_session_timeout/?roistat_visit=3932698) | От 0 до 2147483647 | 900000 | | [jit](https://postgresqlco.nf/doc/en/param/jit/?roistat_visit=3932698) | Включена/Выключена | Включена | | [plan_cache_mode](https://postgresqlco.nf/doc/en/param/plan_cache_mode/?roistat_visit=3932698) | — | `auto` | | [quote_all_identifiers](https://postgresqlco.nf/doc/en/param/quote_all_identifiers/?roistat_visit=3932698) | Включена/Выключена | Выключена | | [standard_conforming_strings](https://postgresqlco.nf/doc/en/param/standard_conforming_strings/?roistat_visit=3932698) | Включена/Выключена | Включена | | [statement_timeout](https://postgresqlco.nf/doc/en/param/statement_timeout/?roistat_visit=3932698) | От 0 до 2147483647 | 0 | | [timezone](https://postgresqlco.nf/doc/en/param/TimeZone/?roistat_visit=3932698) | От -13:59 до +14:00 | — | | [transform_null_equals](https://postgresqlco.nf/doc/en/param/transform_null_equals/?roistat_visit=3932698) | Включена/Выключена | Выключена | | [max_locks_per_transaction](https://postgresqlco.nf/doc/en/param/max_locks_per_transaction/?roistat_visit=3932698) | От 1 до 2147483647 | 64 | | [autovacuum_vacuum_cost_limit](https://postgresqlco.nf/doc/en/param/autovacuum_vacuum_cost_limit/?roistat_visit=3932698) | От -1 до 10000 | 200 | | [checkpoint_timeout](https://postgresqlco.nf/doc/en/param/checkpoint_timeout/?roistat_visit=3932698) | От 30 до 86400 | 300 | | [checkpoint_completion_target](https://postgresqlco.nf/doc/en/param/checkpoint_completion_target/?roistat_visit=3932698) | От 0 до 1 | 0.5 | | [wal_compression](https://postgresqlco.nf/doc/en/param/wal_compression/?roistat_visit=3932698) | Включена/Выключена | Выключена | | [random_page_cost](https://postgresqlco.nf/doc/en/param/random_page_cost/?roistat_visit=3932698) | От 0 до 10 | 4 | | [effective_io_concurrency](https://postgresqlco.nf/doc/en/param/effective_io_concurrency/?roistat_visit=3932698) | От 0 до 1000 | 1 | | [log_lock_waits](https://postgresqlco.nf/doc/en/param/log_lock_waits/?roistat_visit=3932698) | Включена/Выключена | Выключена | | [log_temp_files](https://postgresqlco.nf/doc/en/param/log_temp_files/?roistat_visit=3932698) | От -1 до 2147483647 | \-1 | | [track_io_timing](https://postgresqlco.nf/doc/en/param/track_io_timing/?roistat_visit=3932698) | Включена/Выключена | Выключена | | [maintenance_work_mem](https://postgresqlco.nf/doc/en/param/maintenance_work_mem/?roistat_visit=3932698) | От 1024 до 2147483647 | 33554432 | Для получения дополнительной информации о параметрах нажмите кнопку «Открыть описание» рядом с нужным параметром. ![Изменение параметров базы данных](https://content.timeweb.com/assets/9772bbaa-62d5-4161-9bb7-4edc11d2185d.png?width=2114&height=1966) 5. Нажмите «Применить» внизу страницы, чтобы сохранить изменения. Для быстрого поиска используйте строку поиска по названию параметра. Также параметры можно отфильтровать по наличию изменений. ## Сброс параметров При необходимости вы можете вернуть одному или всем параметрам значения по умолчанию. Перейдите в раздел «Базы данных», выберите нужный кластер PostgreSQL, откройте вкладку «Конфигурация» и нажмите «Изменить параметры» в строке «Параметры базы данных». ### Сброс одного параметра 1. Нажмите «Вернуть по умолчанию» рядом с нужным параметром. На кнопке указано значение по умолчанию, которое будет установлено после сброса. 2. Нажмите на кнопку «Применить», для сохранения новых значений. ![Сброс параметров базы данных](https://content.timeweb.com/assets/950f0701-8558-4959-a302-0d467689db92.png?width=2142&height=1952) ### Сброс всех параметров 1. Нажмите «Вернуть параметры по умолчанию». 2. В окне подтверждения нажмите «Сбросить параметры». ![Сброс параметров базы данных](https://content.timeweb.com/assets/15114e0d-c07a-444d-9167-59773ec61e15.png?width=2170&height=1960) ## Импорт и экспорт параметров Параметры PostgreSQL можно экспортировать в файл и импортировать в другой кластер. ### Экспорт параметров 1. Откройте страницу изменения параметров базы данных. 2. Нажмите «Импорт и экспорт» → «Экспортировать параметры». Браузер скачает JSON-файл с текущими значениями параметров. ### Импорт параметров 1. Откройте страницу изменения параметров базы данных. 2. Нажмите «Импорт и экспорт» → «Импортировать параметры». 3. Выберите JSON-файл с параметрами. 4. Параметры отобразятся в меню настроек, но не применяется сразу после загрузки. 5. Нажмите на кнопку «Применить». Файл с параметрами должен содержать объект, в котором названия параметров указаны как ключи, а их значения — как строки: ```js { "имя_параметра_1": "значение_параметра_1", "имя_параметра_2": "значение_параметра_2" } ``` Если параметр отсутствует в используемой версии PostgreSQL или недоступен для изменения, при импорте он будет проигнорирован. # Настройка ролей Source: https://timeweb.cloud/docs/dbaas/postgresql/roles Пользователь [с привилегией](https://timeweb.cloud/docs/dbaas/postgresql/users-and-privileges#dostupnye-privilegii) `CREATE ROLE` может: - создавать новых пользователей (`CREATE USER`); - создавать роли (`CREATE ROLE`); - управлять членством в ролях (`GRANT ... TO ...`). ## Создание пользователя Пользователь — это роль, которой разрешено авторизовываться в базе. Такая роль может подключаться к базе с логином и паролем. Создать пользователя с паролем можно при помощи запроса: ```sql CREATE USER someuser WITH PASSWORD 'password'; ``` Где `someuser` — логин пользователя, `password` — пароль. Новый пользователь отобразится в панели управления DBaaS через некоторое время после создания. ![Scr 20250830 Nmbu](https://content.timeweb.com/assets/d170f716-9f8a-4055-9bff-ff8ed7ac97ae.png?width=2006&height=1384) ## Создание роли и назначение ее пользователю Вместо того чтобы напрямую раздавать права каждому пользователю, лучше создавать роли с нужными правами, а потом назначать пользователей в эти роли. Создадим две роли: одна с правами только на чтение, вторая — с правами на чтение и запись. Роль с правами только на чтение: ```sql CREATE ROLE app_reader; ``` Роль с правами на чтение и запись: ```sql CREATE ROLE app_writer; ``` Назначим роль пользователю: ```sql GRANT app_writer TO someuser; ``` ## Настройка схемы По умолчанию все таблицы в PostgreSQL создаются в схеме `public`. Для выдачи грантов необходимо создать новую схему: ```sql CREATE SCHEMA app_data; ``` Создадим таблицы и явно укажем новую схему: ```sql CREATE TABLE app_data.users ( id SERIAL PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL ); CREATE TABLE app_data.orders ( id SERIAL PRIMARY KEY, user_id INTEGER REFERENCES app_data.users(id), order_date TIMESTAMP DEFAULT now() ); ``` Теперь можем выдать права на схему для ранее созданных ролей: ```sql GRANT USAGE ON SCHEMA app_data TO app_reader; GRANT USAGE ON SCHEMA app_data TO app_writer; ``` И право на создание объектов в схеме: ```sql GRANT CREATE ON SCHEMA app_data TO app_writer; ``` ## Установка прав на таблицы Выдадим права на чтение всех существующих таблиц в схеме: ```sql GRANT SELECT ON ALL TABLES IN SCHEMA app_data TO app_reader; ``` И права на запись: ```sql GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA app_data TO app_writer; ``` Настроим права для новых таблиц, которые будут устанавливаться по умолчанию: ```sql ALTER DEFAULT PRIVILEGES IN SCHEMA app_data GRANT SELECT ON TABLES TO app_reader; ALTER DEFAULT PRIVILEGES IN SCHEMA app_data GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_writer; ``` И права по умолчанию для новых последовательностей: ```sql ALTER DEFAULT PRIVILEGES IN SCHEMA app_data GRANT USAGE, SELECT ON SEQUENCES TO app_writer; ``` # Создание и загрузка дампа Source: https://timeweb.cloud/docs/dbaas/postgresql/dump ## Создание дампа Для создания дампа используйте следующую команду: ```shell pg_dump -x 'postgresql://:@:5432/' | gzip > default_db.sql.gz ``` Параметр `-x` (`--no-privileges`) исключает из дампа команды `GRANT` и `REVOKE`, так как назначение прав осуществляется через панель. Без этого флага возможны ошибки при загрузке дампа, хотя они не помешают восстановлению данных. ## Загрузка дампа Для загрузки дампа выполните: ```shell zcat default_db.sql.gz | psql 'postgresql://:@:5432/' ``` Команда распаковывает дамп и передает его в клиент PostgreSQL для выполнения. # Автомасштабирование диска Source: https://timeweb.cloud/docs/dbaas/postgresql/disk-autoscaling Автомасштабирование диска позволяет автоматически расширять диск базы данных при достижении заданного вами порога заполнения, чтобы избежать перехода кластера в режим «только чтение». Расширение диска происходит в «горячем» режиме, без перезагрузки или остановки кластера. При срабатывании автомасштабирования вам будет отправлено уведомление. Опция доступна для кластеров без репликации, созданных после 12 декабря 2024 года. > [!NOTE] > Если кластер был создан по фиксированному тарифу, при первом срабатывании автомасштабирования он будет переведен на произвольную конфигурацию. Стоимость всех ресурсов кластера будет пересчитана по условиям конфигуратора. > > Вернуться на прежний фиксированный тариф будет невозможно. ## Настройка автомасштабирования Включить или отключить автомасштабирование, а также настроить его параметры можно при создании новой базы или в настройках существующей. ### Для новой базы В процессе создания базы на этапе «Конфигурация» оставьте опцию автомасштабирования включенной либо отключите ее. Задайте желаемые параметры. ![8edca157 5b13 4f85 8cc3 Ce3730d0c9c4](https://content.timeweb.com/assets/75a8dec3-0c19-42e7-bbe1-7af1d06134ee.png?width=744&height=400) ### Для существующей базы 1. Перейдите в раздел «Базы данных» и кликните на новую базу. 2. На вкладке «Конфигурация» кликните «Выбрать конфигурацию». 3. Включите или отключите опцию автомасштабирования диска. 4. Настройте параметры, если необходимо. 5. Сохраните изменения. ![9c25f510 Edfc 491c 8a9b 27bbf9ce2175](https://content.timeweb.com/assets/274dc1cf-df77-4c88-9517-de2ad331035f.png?width=1556&height=1598) ## Параметры автомасштабирования Вы можете настроить: - **Порог заполненности** — процент заполненности диска, при котором срабатывает автомасштабирование. Возможные значения: 80%, 90% и 95%. - **Шаг увеличения диска** — на сколько гигабайт будет увеличен диск при каждом срабатывании автомасштабирования. Возможные значения: от 5 ГБ до 100 ГБ. Максимально возможный размер диска кластера — 2 ТБ. # Логи баз данных Source: https://timeweb.cloud/docs/dbaas/postgresql/logs Мы собираем и выводим в панель управления логи сервисов баз данных, которые они автоматически генерируют в стандартные файлы логов. С помощью логов можно быстро отследить возможные ошибки и оперативно на них отреагировать — самостоятельно или обратившись в нашу поддержку. Просмотреть логи можно на вкладке «Логи». ![8aa75574 Ca0d 4400 9675 2308996ef24c](https://content.timeweb.com/assets/a0da3cee-a1e1-45c2-b44c-af96328130c3.png?width=1551&height=1177) Для PostgreSQL мы выводим основной лог ошибок (PostgreSQL Log), расположенный по пути `/var/log/postgresql/postgresql--main.log`. Он полезен для общего мониторинга состояния кластера, диагностики сбоев, анализа подключений и запросов. Лог содержит следующие типы информации: - `ERROR`, `FATAL`, `PANIC`: Критические ошибки, приводящие к прерыванию сеанса или работы сервера. - `WARNING`: Предупреждения о потенциальных проблемах. - `INFO`: Общая информация о работе сервера (например, запуск, остановка, контрольные точки). - `LOG`: Стандартные информационные сообщения (например, подключения, завершения длительных транзакций, контрольные точки). > [!NOTE] > В целях безопасности из всех логов автоматически удаляются записи, содержащие фразы `WITH LOGIN PASSWORD` или `WITH PASSWORD`, чтобы исключить возможность утечки паролей. ## Сценарии использования Рассмотрим примеры использования логов на практике. Для удобного поиска информации в логе его можно скачать в формате `.txt`. ![568eeae2 8dc0 41eb Beac 85c758f27e17](https://content.timeweb.com/assets/6d55af2c-4c27-45df-96da-2ab72b917652.png?width=1542&height=1155) #### Кейс 1: Внезапный рост потребления vCPU В этом случае нам нужно определить запрос, создающий повышенную нагрузку. Для этого можно проанализировать лог медленных запросов (`log_min_duration_statement`) и быстро выявить операции, которые выполняются дольше других и активно потребляют процессорные ресурсы. Это позволит оперативно оптимизировать проблемный запрос или добавить недостающий индекс. #### Кейс 2: Частые разрывы соединения у приложения Здесь нам нужно определить причину обрыва подключений к БД. Для этого можно проанализировать лог ошибок и проверить, появляются ли в момент разрыва сообщения уровня `FATAL` или `ERROR`. Логи позволяют указать на конкретную причину — например, нехватка памяти, превышение таймаута или лимита подключений. Такой анализ помогает понять, связано ли поведение с сетевыми проблемами, ограничениями ресурсов или ошибками конфигурации. # Управление Valkey Source: https://timeweb.cloud/docs/dbaas/valkey Valkey — это высокопроизводительная нереляционная база данных, работающая по принципу ключ-значение. Она хранит данные в оперативной памяти, что обеспечивает очень быструю обработку запросов. В отличие от реляционных СУБД, в Valkey нет привычных баз данных и таблиц — данные организованы в пространства ключей, а структура и тип значений могут быть разными: строки, списки, множества, хэш-таблицы. Valkey — открытый форк Redis. Он сохраняет совместимость с протоколом, командами и клиентскими библиотеками Redis, поэтому для подключения к кластеру можно использовать привычные инструменты, SDK и драйверы. В большинстве случаев приложения, которые работали с Redis, могут работать с Valkey без изменений в коде. Valkey часто используется для: - кэширования данных; - хранения сессий; - организации очередей; - обмена сообщениями между сервисами; - обработки данных в режиме реального времени. При создании кластера можно выбрать версию Valkey: 7, 8.1 или 9.1. # Пользователи и привилегии Source: https://timeweb.cloud/docs/dbaas/valkey/users-and-privileges При создании кластера автоматически создается пользователь `default`. Вы можете создавать новых пользователей, предоставлять им права к базами и управлять ими на вкладке «Пользователи». ## Создание пользователей 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. На вкладке «Пользователи» кликните «Добавить». ![Добавление пользователя Valkey](https://content.timeweb.com/assets/32e63022-8769-4164-9558-a2b5d08050ec.png?width=2126&height=1116) 3. Укажите имя пользователя: от 3 до 32 символов, латинские буквы, цифры и спецсимволы. 4. Укажите пароль пользователя: от 8 до 30 символов, латинские буквы, цифры и спецсимволы. 5. (Опционально) Задайте комментарий к пользователю. Он будет отображаться в панели управления. 6. Нажмите «Показать привилегии» и настройте разрешения пользователя. Эти настройки можно изменить в дальнейшем. 7. Нажмите «Создать». ## Настройка привилегий Чтобы изменить привилегии существующего пользователя: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер. 2. Перейдите на вкладку «Пользователи». 3. Кликните на три точки рядом с нужным пользователем и выберите пункт «Привилегии». ![Привилегии Valkey](https://content.timeweb.com/assets/365e5115-895f-47d0-9141-2e2398e6c560.png?width=2212&height=1252) 4. Выберите нужные привилегии и нажмите на кнопку «Сохранить». ![Scr 20260624 Qmid](https://content.timeweb.com/assets/432c2cf7-2e7d-4877-9101-4e446b040bd8.png?width=2172&height=1672) ### Доступные привилегии | **Привилегия** | **Назначение** | | --- | --- | | `READ` | Чтение данных из базы. | | `WRITE` | Запись и изменение данных. | | `ADMIN` | Выполнение административных команд, например управление конфигурацией или очистка базы. | | `BITMAP` | Операции с битовыми массивами. | | `BLOCKING` | Использование блокирующих команд (например, `BLPOP`, `BRPOP`). | | `CONNECTION` | Управление подключениями и параметрами соединений. | | `DANGEROUS` | Доступ к потенциально опасным командам (например, `FLUSHALL`, `MIGRATE`). | | `GEO` | Операции с геоданными (например, `GEOADD`, `GEORADIUS`). | | `HASH` | Работа с хэш-таблицами. | | `HYPERLOGLOG` | Операции с типом данных `HyperLogLog`. | | `FAST` | Использование команд с низким временем отклика. | | `KEYSPACE` | Получение списка ключей и информации о них. | | `LIST` | Работа со списками. | | `PUBSUB` | Использование механизма публикации и подписки (`PUBLISH`, `SUBSCRIBE`). | | `SCRIPTING` | Выполнение Lua-скриптов в Valkey. | | `SET` | Работа с множествами. | | `SORTEDSET` | Работа с отсортированными множествами. | | `SLOW` | Использование команд, которые могут выполняться долго. | | `STREAM` | Работа с потоками данных (`XADD`, `XREAD`). | | `STRING` | Работа со строками. | | `TRANSACTION` | Использование транзакций (`MULTI`, `EXEC`). | # Подключение к базе данных Source: https://timeweb.cloud/docs/dbaas/valkey/connect-to-database Чтобы работать с кластером Valkey в DBaaS, установите утилиту `redis-cli` или `valkey-cli`. Valkey совместим с Redis, поэтому для подключения можно использовать как стандартные Redis-клиенты и команды, так и инструменты Valkey. Утилита `redis-cli` входит в состав Redis и доступна для установки через пакетные менеджеры: Ubuntu/Debian ```bash sudo apt install redis-tools ``` macOS ```bash brew install redis ``` Arch Linux ```bash sudo pacman -S redis ``` CentOS/RHEL ```bash sudo yum install redis ``` После установки проверьте версию клиента: ```shell redis-cli -v ``` Чтобы использовать `valkey-cli`, установите пакет Valkey. Вместе с ним будет установлена утилита командной строки: Ubuntu/Debian ```bash sudo apt install valkey ``` macOS ```bash brew install valkey ``` Arch Linux ```bash sudo pacman -Syu valkey ``` CentOS/RHEL ```bash sudo yum install epel-release sudo yum install valkey ``` Существует два способа подключения к кластеру Valkey: - по публичному IP; - по приватному IP. Команду подключения можно скопировать: - на вкладке «Дашборд»; ![Панель управления Valkey](https://content.timeweb.com/assets/cd495e1d-5dcc-4b00-b736-819614fc3e40.png?width=2136&height=1540) - на вкладке «Подключение». ![Панель управления Valkey](https://content.timeweb.com/assets/7170a0a5-4240-4121-8a91-161c414c468e.png?width=2114&height=1584) # Настройка параметров Source: https://timeweb.cloud/docs/dbaas/valkey/parameters Вы можете изменить параметры базы данных, чтобы оптимизировать ее работу. Тонкая настройка СУБД с учетом потребностей вашего проекта или решаемых задач позволит повысить производительность базы. Параметры применяются ко всем базам внутри конкретного кластера. По умолчанию база данных создается с набором настроек, которые подойдут для большинства задач и обеспечат производительную работу выбранной конфигурации. Однако, если вашему проекту требуются особые настройки СУБД, вы можете изменить их по своему усмотрению. Будьте внимательны и меняйте параметры, только если вы уверены в их назначении. Некорректная настройка может негативно сказаться на работе базы и ее производительности. Параметры базы данных имеют границы допустимых значений. Если указать значение вне этого диапазона, настройка не применится, и у параметра сохранится предыдущее допустимое значение. ## Изменение параметров Чтобы изменить параметры: 1. Перейдите в раздел «Базы данных» и кликните на нужный кластер Valkey. 2. Откройте вкладку «Конфигурация». 3. В строке «Параметры базы данных» нажмите «Изменить параметры». ![Scr 20260713 Qhjj](https://content.timeweb.com/assets/1004bb3b-104e-4d5f-b45d-257e1e37a249.png?width=2146&height=1604) 4. Укажите нужные значения параметров. Список доступных параметров: | **Параметр** | **Допустимые значения** | **Значение по умолчанию** | | --- | --- | --- | | client-output-buffer-limit normal | — | 0 0 0 | | client-output-buffer-limit pubsub | — | 33554432 8388608 60 | | maxmemory-policy | — | allkeys-lru | | slowlog-log-slower-than | От 0 до 600000000 | 10000 | | slowlog-max-len | От 0 до 4294967296 | 128 | | timeout | От 0 до 3600000000 | 0 | | databases | От 0 до 2147483647 | 16 | | save | — | 900 1 | | appendonly | Включена/Выключена | Включена | | appendfsync | — | everysec | | tcp-keepalive | От 0 до 3600 | 300 | | notify-keyspace-events | — | — | Для получения дополнительной информации о параметрах нажмите кнопку «Открыть описание» рядом с нужным параметром. ![Scr 20260713 Qhnb](https://content.timeweb.com/assets/7833ee62-ade2-4627-8c66-e5d90955d93b.png?width=2134&height=1952) 5. Нажмите «Применить» внизу страницы, чтобы сохранить изменения. Для быстрого поиска используйте строку поиска по названию параметра. Также параметры можно отфильтровать по наличию изменений. ![Scr 20260713 Qiav](https://content.timeweb.com/assets/346310ba-2e96-45b4-99f3-c7765b974e23.png?width=2096&height=1630) ## Сброс параметров При необходимости вы можете вернуть одному или всем параметрам значения по умолчанию. Перейдите в раздел «Базы данных», выберите нужный кластер Valkey, откройте вкладку «Конфигурация» и нажмите «Изменить параметры» в строке «Параметры базы данных». ### Сброс одного параметра 1. Нажмите «Вернуть по умолчанию» рядом с нужным параметром. На кнопке указано значение по умолчанию, которое будет установлено после сброса. 2. Нажмите на кнопку «Применить», для сохранения новых значений. ![Scr 20260713 Qifn](https://content.timeweb.com/assets/9825849e-9029-45a5-9ec8-8debdb366b73.png?width=2066&height=1632) ### Сброс всех параметров 1. Нажмите «Вернуть параметры по умолчанию». 2. В окне подтверждения нажмите «Сбросить параметры». ![Scr 20260713 Qilo](https://content.timeweb.com/assets/10e5ca68-c96a-4698-8767-aee0a684c949.png?width=2120&height=1596) ## Импорт и экспорт параметров Параметры Valkey можно экспортировать в файл и импортировать в другой кластер. ### Экспорт параметров 1. Откройте страницу изменения параметров базы данных. 2. Нажмите «Импорт и экспорт» → «Экспортировать параметры». Браузер скачает JSON-файл с текущими значениями параметров. ### Импорт параметров 1. Откройте страницу изменения параметров базы данных. 2. Нажмите «Импорт и экспорт» → «Импортировать параметры». 3. Выберите JSON-файл с параметрами. 4. Параметры отобразятся в меню настроек, но не применяется сразу после загрузки. 5. Нажмите на кнопку «Применить». Файл с параметрами должен содержать объект, в котором названия параметров указаны как ключи, а их значения — как строки: ```js { "имя_параметра_1": "значение_параметра_1", "имя_параметра_2": "значение_параметра_2" } ``` Если параметр отсутствует в используемой версии Valkey или недоступен для изменения, при импорте он будет проигнорирован. # Создание и загрузка дампа Source: https://timeweb.cloud/docs/dbaas/valkey/dump ## Создание дампа Valkey совместим с Redis, поэтому для резервного копирования и миграции можно использовать большинство существующих инструментов экосистемы Redis. Для экспорта данных Valkey используйте утилиту `redis-dump-go`. Она доступна для различных архитектур. Скачайте бинарный файл, соответствующий вашей архитектуре, [из официального репозитория](https://github.com/yannh/redis-dump-go/releases). Для создания дампа выполните команду: ```bash REDISDUMPGO_AUTH='пароль' ./redis-dump-go -host IP-адрес-кластера -port 6379 -user default > redis-dump.txt ``` Где `REDISDUMPGO_AUTH` — пароль для подключения к кластеру. ## Загрузка дампа Для импорта данных используйте утилиту `redis-cli` или `valkey-cli` в режиме `--pipe`, который позволит загрузить большой объем данных. Valkey совместим с Redis, поэтому можно использовать привычные Redis-клиенты и инструменты: ```shell redis-cli -h IP-адрес-кластера -p 6379 --user default --pass 'пароль' --pipe < redis-dump.txt ``` Или через `valkey-cli`: ```bash valkey-cli -h IP-адрес-кластера -p 6379 --user default --pass 'пароль' --pipe < redis-dump.txt ``` # Подключение Prometheus Exporter Source: https://timeweb.cloud/docs/dbaas/prometheus-exporter **Prometheus Exporter** — это компонент, который собирает метрики из операционной системы и базы данных и предоставляет их в формате, который понимает Prometheus. Экспортер помогает отслеживать состояние кластеров баз данных, нагрузку на сервер и другую важную информацию в реальном времени. ## Подключение экспортера Данные для подключения экспортеров доступны в панели управления кластером, в разделе «Дашборд». ![Scr 20251212 Pyre 2](https://content.timeweb.com/assets/68a19c5f-d27e-43c2-85c6-3753023512d1.png?width=1706&height=1208) При использовании публичных экспортеров для доступа к метрикам необходима базовая авторизация. Пример запроса к публичному экспортеру: ```bash curl -u admin:'пароль' -s https://dbs-exporter.timeweb.cloud/id_экспортера/service/metrics ``` ## Особенности реализации - Сбор метрик доступен только в [BGP-сетях](https://timeweb.cloud/docs/vpc/managing-bgp-networks). - Экспортеры доступны на двух эндпоинтах: - `node_exporter` — метрики сервера (например, нагрузка, использование CPU и памяти); - `db_exporter` — метрики базы данных. - Если база развернута с репликацией ([MySQL](https://timeweb.cloud/docs/dbaas/mysql#replikaciya) или [PostgreSQL](https://timeweb.cloud/docs/dbaas/postgresql#replikaciya)), метрики нужно собирать с каждой реплики отдельно. Данные для подключения к каждой реплике можно найти на странице «Дашборд». ![Scr 20251212 Pyre 3](https://content.timeweb.com/assets/053ca045-2315-4a61-bf24-6d828779e29c.png?width=1706&height=1208) ## Типы экспортеров Экспортеры бывают двух типов: - Публичные — работают по HTTPS и доступны по доменному имени. - Приватные — доступны только [внутри приватной сети BGP](https://timeweb.cloud/docs/vpc/managing-bgp-networks/adding-services-to-bgp). | | **Публичные экспортеры** | **Приватные экспортеры** | | --- | --- | --- | | **Доступ к метрикам** | По домену | По IP-адресу внутри приватной сети | | **Требуется публичный IP** | Нет | Нет | | **Авторизация** | Basic Auth | Не требуется | ## Используемые экспортеры | **Кластер DBaaS** | **Экспортер** | | --- | --- | | MySQL | [MySQL Server Exporter](https://github.com/prometheus/mysqld_exporter) | | PostgreSQL | [PostgreSQL Server Exporter](https://github.com/prometheus-community/postgres_exporter) | | MongoDB | [MongoDB Exporter](https://github.com/percona/mongodb_exporter) | | RabbitMQ | [RabbitMQ Exporter](https://github.com/kbudde/rabbitmq_exporter) | | Valkey | [Prometheus Valkey & Redis Metrics Exporter](https://github.com/oliver006/redis_exporter) | | Kafka | [JMX Exporter](https://github.com/prometheus/jmx_exporter) | | OpenSearch | [Prometheus Exporter Plugin for OpenSearch](https://github.com/opensearch-project/opensearch-prometheus-exporter) | | ClickHouse | [Встроенный экспортер](https://clickhouse.com/docs/interfaces/formats/Prometheus) | Чтобы узнать версию конкретного экспортера, используйте команду вида: ``` curl -u admin:'пароль' -s https://db_exporter/metrics | grep '_exporter_build_info' ``` После выполнения команды вы получите подобный вывод: ```bash # HELP postgres_exporter_build_info A metric with a constant '1' value labeled by version, revision, branch, goversion from which postgres_exporter was built, and the goos and goarch for the build. # TYPE postgres_exporter_build_info gauge postgres_exporter_build_info{branch="HEAD",goarch="amd64",goos="linux",goversion="go1.23.3",revision="a324fe37bca5193a293118b940b3df7ab3a8505c",tags="unknown",version="0.16.0"} 1 ``` Значение `version="0.16.0"` в метке указывает на версию экспортера. Экспортер для OpenSearch собирается нами вручную, поэтому узнать его версию с помощью команды не получится. ## Пример настройки Prometheus Рассмотрим настройку Prometheus на облачном сервере для сбора метрик с PostgreSQL-кластера. Убедитесь, что кластер базы данных и облачный сервер находятся в [одной приватной сети](https://timeweb.cloud/docs/vpc/managing-bgp-networks/adding-services-to-bgp). ### Установка Prometheus Перейдите на страницу [релизов Prometheus](https://prometheus.io/download/) и скачайте актуальную версию. Например: ```bash wget https://github.com/prometheus/prometheus/releases/download/v3.7.2/prometheus-3.7.2.linux-amd64.tar.gz ``` Распакуйте архив: ```bash tar -xzf prometheus-*.tar.gz ``` Перейдите в директорию: ```bash cd prometheus-3.7.2.linux-amd64 ``` ### Настройка конфигурации Откройте файл `prometheus.yml` для редактирования: ```bash nano prometheus.yml ``` Добавьте в раздел `scrape_configs` IP-адрес кластера базы данных с нужными портами: ```yaml - job_name: 'linux-metrics' static_configs: - targets: ['192.168.0.5:9100'] - job_name: 'postgres-metrics' static_configs: - targets: ['192.168.0.5:9308'] ``` Где `192.168.0.5` — приватный IP кластера PostgreSQL. При использовании публичного экспортера настройка будет выглядеть так: ```yaml - job_name: 'postgres-public' scheme: https metrics_path: /id_экспортера/service/metrics static_configs: - targets: ['dbs-exporter.timeweb.cloud'] basic_auth: username: 'admin' password: 'пароль' ``` Чтобы получать метрики сервера, вместо `/id_экспортера/service/metrics` укажите `/id_экспортера/node-exporter/metrics`. Полный пример конфига: ```yaml global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=` to any timeseries scraped from this config. - job_name: "prometheus" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ["localhost:9090"] # The label name is added as a label `label_name=` to any timeseries scraped from this config. labels: app: "prometheus" - job_name: 'linux-metrics' static_configs: - targets: ['192.168.0.5:9100'] - job_name: 'postgres-metrics' static_configs: - targets: ['192.168.0.5:9308'] - job_name: 'postgres-public' scheme: https metrics_path: /id_экспортера/service/metrics static_configs: - targets: ['dbs-exporter.timeweb.cloud'] basic_auth: username: 'admin' password: 'пароль' ``` ### Запуск Prometheus Запустите Prometheus с указанием конфига: ```bash ./prometheus --config.file=prometheus.yml ``` По умолчанию веб-интерфейс Prometheus будет доступен по адресу: ```bash http://IP_облачного_сервера:9090 ``` ### Проверка статуса экспортеров Перейдите во вкладку «Status» → «Targets» в веб-интерфейсе Prometheus и убедитесь, что все `job_name` отображаются и находятся в статусе «UP». Для базовой проверки можно выполнить запрос на вкладке «Graph»: ```shell up ``` В результате отобразятся все подключенные экспортеры. Если они работают корректно, вы увидите список метрик с нужными `job_name`. ![Image 20251028172827404](https://content.timeweb.com/assets/aef4c1cb-737e-4414-82fd-c9acc0500161.png?width=2610&height=1434) _Список метрик в интерфейсе [Prometheus](https://prometheus.io/)_ # Хранилище S3 Source: https://timeweb.cloud/docs/s3-storage [Хранилище S3](https://timeweb.cloud/services/s3-storage) — это универсальное объектное хранилище, совместимое с Amazon S3 API, в котором можно размещать любые типы статических данных. Данные будут размещены в одном месте и едином формате, и вы сможете в любой момент получать к ним доступ через API или графический интерфейс. Облачное хранилище Timeweb Cloud обеспечивает: - **Удобство работы.** Вы можете работать с хранилищем с помощью множества инструментов: API, CLI, Cyberduck, Java SDK, Python SDK. - **Тройную репликацию данных.** Ваши данные дублируются в нескольких экземплярах, чтобы исключить риск их утери. ## Примеры использования хранилища - **Размещение бэкапов** Размещайте резервные копии ваших данных на случай непредвиденных обстоятельств. Можно настроить регулярное копирование информации и в любой момент использовать ее для быстрого восстановления данных. - **Размещение статических и медиа-файлов** Разгрузите диски своих серверов, оставив на них только динамические данные, которые сложно или невозможно разместить в облаке. Всю статику можно вынести в хранилище и заметно снизить нагрузку на ваши мощности. - **Размещение архивов, журналов, логов** Размещайте в S3-хранилище архивы с устаревшей информацией и базами данных, историю запросов, финансовую отчетность и любые другие данные, которые требуют длительного хранения, но в постоянном доступе к которым нет необходимости. - **Хостинг статических сайтов** Благодаря возможности обращаться к файлам в хранилище не только по HTTP, но по и HTTPS, можно размещать в нем статические сайты. Это сэкономит пространство на ваших серверах и снизит расходы на инфраструктуру. # Тарификация трафика Source: https://timeweb.cloud/docs/s3-storage/tariffication Исходящий трафик S3-хранилища тарифицируется сразу для всех бакетов на аккаунте. > [!NOTE] > Для [пользователей с Prime](https://timeweb.cloud/prime) предоставляется бесплатная квота на исходящий трафик в 1000 ГБ. Лимиты обновляются 1-го числа каждого месяца в 00:00 по московскому времени. Стоимость исходящего трафика зависит от класса хранения: | **Класс хранения** | **Стоимость** | | --- | --- | | Премиальный | 1,3 ₽/ГБ | | Стандартный | 1,3 ₽/ГБ | | Холодный | 1,5 ₽/ГБ | Исходящий трафик тарифицируется отдельно, и вы можете видеть свои затраты на вкладке «[Подключенные сервисы](https://timeweb.cloud/my/finances/services)». В отличие от других услуг, стоимость исходящего трафика рассчитывается по факту использования. Это значит, что итоговая стоимость может измениться к концу месяца. ## Ограничение исходящего трафика Чтобы предотвратить непредвиденные расходы, вы можете установить ограничение на исходящий трафик. Для этого перейдите во вкладку «[Настройки](https://timeweb.cloud/my/storage/setup)» на странице «Хранилище S3» и нажмите кнопку «Установить лимит» в строке «Ограничение исходящего трафика». ![Selection 115](https://content.timeweb.com/assets/af7833f1-a6df-43d9-a816-c8ee34bbf4fa.png?width=1020&height=615) После этого включите опцию «Лимит исходящего трафика» и укажите желаемое значение в ГБ. ![Screenshot 02 20 25 17:52:34](https://content.timeweb.com/assets/f8a8cdfd-3b62-4ea1-a4f5-e273709d42f9.png?width=414&height=361) Для клиентов Prime исходящий трафик в пределах бесплатной квоты не оплачивается. Для клиентов без Prime весь исходящий трафик оплачивается в соответствии с классом хранения. Например, 150 ГБ исходящего трафика для бакета стандартного класса будут бесплатными для клиента Prime и обойдутся в 195 ₽ для клиента без Prime. > [!NOTE] > Проверка превышения установленного лимита выполняется раз в час. Это означает, что трафик может выходить за установленные значения между проверками и блокировкой, и такой трафик будет тарифицироваться. Когда достигнут установленный лимит, на бакеты будет автоматически установлено правило, запрещающее доступ к объектам. При попытке получить объект будет возникать ошибка с кодом 403. После увеличения лимита или с наступлением нового месяца это ограничение будет автоматически снято. Вы также можете снять ограничение вручную, например, при помощи aws s3api, изменив [Bucket Policies](https://timeweb.cloud/docs/s3-storage/supported-features/bucket-policies). В этом случае доступ к объектам будет восстановлен, и дальнейший трафик будет тарифицироваться по стандартным условиям. ## Статистика потребления трафика Вы можете отслеживать потребление трафика на вкладке «[Статистика](https://timeweb.cloud/my/storage/statistics)» в разделе «Хранилище S3». - **«Потребление трафика»**: показывает изменения объемов входящего и исходящего трафика. - **«Итоговое потребление трафика»**: демонстрирует общий объем использованного входящего и исходящего трафика. График имеет только растущую динамику. - **«Объем трафика»**: показывает объем использованного платного трафика. Для клиентов Prime также отображается, сколько трафика из бесплатной квоты уже израсходовано и сколько еще доступно. Для графиков доступны интервалы: 6 часов, сутки, неделя, прошлый месяц и текущий месяц. ![Screenshot 02 20 25 17:53:13](https://content.timeweb.com/assets/211a1d2f-9f8a-4a69-a219-ddc76b9269de.png?width=1023&height=845) # Работа с хранилищем Source: https://timeweb.cloud/docs/s3-storage/manage-storage Данные в S3-хранилище хранятся в едином формате: в виде объектов, помещенных в бакеты (контейнеры). Объекты — это ваши файлы и данные в любом формате. Бакет — это хранилище объектов. Чтобы разместить файл в S3-хранилище, его необходимо поместить в бакет. Бакеты могут быть приватными или публичными и отличаются способом доступа к ним. Получить доступ к объектам в приватном контейнере может только авторизованный пользователь (администратор). Пользователь хранилища — один, и ему доступны все его бакеты с полными правами. Access Key и Secret Access Key для разных бакетов в рамках одного аккаунта совпадают. На текущий момент нет возможности настроить какие-либо ограничения видимости бакетов (например, отображать в Cyberduck только конкретный из них). # Создание бакета Source: https://timeweb.cloud/docs/s3-storage/manage-storage/create-bucket Чтобы создать новый бакет: 1. Перейдите в раздел «[Хранилище S3](https://timeweb.cloud/my/storage)» и нажмите «Создать» или «Добавить». 2. Выберите класс хранения: - - **Премиальный** — класс хранения с тройной репликацией для сценариев, где важна максимальная производительность. - **Стандартный** — отказоустойчивый класс хранения, в котором данные распределяются с избыточностью и могут быть восстановлены при сбоях. - **Холодный** — оптимален для редко используемых данных. Стоимость размещения данных ниже, но исходящий трафик дороже. 3. Выберите тариф: - - Для **премиального** и **стандартного** классов можно выбрать один из готовых тарифов. На аккаунте может быть только один бакет стандартного и один бакет премиального класса с тарифом 1 ГБ. - Для холодного класса выбор тарифа недоступен — при создании бакета автоматически устанавливается объем 1 ГБ и [включается автомасштабирование](https://timeweb.cloud/docs/s3-storage/manage-storage/s3-autoscaling). 4. При использовании премиального или стандартного класса [включите или выключите автомасштабирование](https://timeweb.cloud/docs/s3-storage/manage-storage/s3-autoscaling). 5. Укажите типа бакета. Его можно будет изменить в дальнейшем. - **Приватный** — доступ к такому бакету и размещенным в нем объектам будет иметь только администратор. Выбирайте этот тип бакета для размещения данных, доступ к которым важно ограничить. - **Публичный** — для доступа к данным в публичном бакете не требуется авторизация. Этот тип подойдет для размещения данных, которые могут быть доступны широкому кругу лиц. ![Интерфейс создания бакета](https://content.timeweb.com/assets/43f9c85c-e12f-4111-937b-c9ba943fd1d4.png?width=2168&height=1654) 6. В пункте «Информация о хранилище» укажите свое имя бакета или оставьте предложенное по умолчанию. Имя бакета может содержать только латинские буквы в нижнем регистре, цифры и символы дефиса. > [!NOTE] > Если вы ранее создали бакет с определенным именем и затем удалили его, повторно использовать это имя для нового бакета не получится. Каждое имя бакета должно быть уникальным. 7. Выберите проект, в который нужно добавить бакет. ![Scr 20251127 Qfff](https://content.timeweb.com/assets/6baabb39-b56e-4c2d-9324-d81a5838c8d5.png?width=760&height=552) 8. Нажмите «Создать». Бакет будет создан мгновенно и отобразится в панели управления, и вы можете начать загружать файлы в хранилище. Оплата за хранилище списывается ежечасно. # Управление бакетами Source: https://timeweb.cloud/docs/s3-storage/manage-storage/manage-buckets ## Подключение к бакету и работа с файлами Кластер S3 поддерживает доступ через Amazon S3 API. Подключение к хранилищу и управление объектами (загрузка, удаление, изменение) может быть реализовано разными способами: - Вы можете использовать клиент API S3. Это может быть [файловый менеджер Cyberduck](https://timeweb.cloud/docs/s3-storage/tools/cyberduck) или любой другой инструмент с поддержкой протокола S3, например, [S3cmd](https://timeweb.cloud/docs/s3-storage/tools/s3cmd), [Rclone](https://timeweb.cloud/docs/s3-storage/tools/rclone), [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli), [S3 Browser](https://timeweb.cloud/docs/s3-storage/tools/s3-browser) и многие другие. - Подключение к хранилищу может быть реализовано в коде вашего приложения, с помощью библиотек языка программирования для протокола S3. Примеры можно найти [здесь](https://github.com/timeweb-cloud/s3-examples). - Загружать файлы в бакет можно с помощью [объектного менеджера](https://timeweb.cloud/docs/s3-storage/manage-storage/object-manager) в панели управления. - Можно подключаться к бакету с помощью ispmanager для [автоматической загрузки бэкапов](https://timeweb.cloud/docs/s3-storage/use-cases/ispmanager-backups). - Можно настроить [выгрузку бэкапов в хранилище](https://timeweb.cloud/docs/s3-storage/use-cases/rezervnoe-kopirovanie-bitrix-v-s3) через Bitrix Backup. > [!NOTE] > Наш кластер поддерживает 2 версии протокола AWS Signature — v2 и v4. Реквизиты для подключения отображаются во вкладке «Дашборд». ![Данные для подключения к бакету](https://content.timeweb.com/assets/90917ba4-4647-4767-b26f-5a53c36af046.png?width=2192&height=1814) Для доступа к файлам используются пути вида: ```shell https://s3.twcstorage.ru/имя_бакета/имя_файла ``` Либо, если файл размещен внутри директории в бакете: ```shell https://s3.twcstorage.ru/имя_бакета/имя_директории/имя_файла ``` К файлам в публичных бакетах также можно обращаться, используя модель адресации Virtual-hosted style, в этом случае название бакета входит в имя хоста: ```shell https://имя_бакета.s3.twcstorage.ru/имя_файла https://имя_бакета.s3.twcstorage.ru/имя_директории/имя_файла ``` Вы также можете обращаться к бакету по своему домену, [привязав его](https://timeweb.cloud/docs/s3-storage/manage-storage/link-domain). Получить доступ к файлам в **публичном** бакете можно через браузер или другой HTTP-клиент, обратившись непосредственно по такой ссылке. Доступ к файлам в **приватном** бакете также может быть организован через HTTP, но дополнительно потребуется подпись для аутентификации, которая добавляется к запросу в виде HTTP-заголовков. Подробнее см. [Описание принципов работы с S3](https://timeweb.cloud/docs/s3-storage/manage-storage/s3-guide). Пропускная способность при загрузке или скачивании объектов в бакет составляет 1 Гбит/сек. ## Смена тарифа Вы можете увеличить тариф бакета, если вам потребуется больше пространства для размещения данных. Изменить тариф в меньшую сторону невозможно. Для смены тарифа кликните на нужный бакет в панели управления, перейдите в раздел «Настройки», и нажмите «Изменить размер хранилища». ![Изменение тарифа бакета](https://content.timeweb.com/assets/7866ec85-cdce-48f8-971b-04be423fa9dc.png?width=2172&height=1758) Выберите новый тариф и сохраните изменения. Также вы можете включить или выключить [автомасштабирование бакета](https://timeweb.cloud/docs/s3-storage/manage-storage/s3-autoscaling). Объем пространства увеличится сразу же. ## История действий Вы можете просмотреть, какие действия выполнялись с бакетом, на вкладке «История». ![54ecc2e1 469f 465d A447 22eed36724d5](https://content.timeweb.com/assets/c8104292-bf5c-4b7c-aa83-690b48abc514?width=1101&height=460) Логируются следующие события: - Создание бакета - Изменение конфигурации - Привязка домена - Выпуск SSL-сертификата на домен - Перенос данных - Удаление бакета ## Удаление бакета Будет удален бакет и все файлы в нем. Для удаления кликните на три точки на вкладке «Бакеты»: ![Удаление бакета](https://content.timeweb.com/assets/656c03a7-0d38-4341-a237-6b087c58a297.png?width=2106&height=1614) Либо на значок удаления в настройках бакета: ![Удаление бакета](https://content.timeweb.com/assets/17d5b2c8-773b-47f7-9890-2cf7dcdcaaf5.png?width=2174&height=1776) Во всплывающем окне введите имя бакета или код подтверждения, в зависимости от [ваших настроек](https://timeweb.cloud/docs/account-management/notifications#uvedomleniya-pri-udalenii-servisov). ## Восстановление удаленных бакетов Если на момент удаления бакет существовал более двух дней, в течение еще некоторого времени (как правило, 2-5 дней) вы сможете восстановить его и все объекты в нем. Вы также будете видеть этот бакет при подключении к хранилищу через сторонние инструменты, однако любые действия с ним будут недоступны. Просмотреть удаленные, но доступные к восстановлению бакеты можно в списке бакетов, выбрав «Удаленные». ![9728f825 561a 4f58 B191 52715e1a446f](https://content.timeweb.com/assets/d0f842ac-d075-4102-96d2-c9bb261e7683.png?width=1557&height=868) Чтобы восстановить бакет, кликните на значок справа и подтвердите создание тикета в поддержку. ![E7cd2ddd 73d6 4d4f 87b1 04c2799e415c](https://content.timeweb.com/assets/90131230-4d13-42f4-9449-add28177fff8.png?width=1546&height=867) # Дополнительные пользователи Source: https://timeweb.cloud/docs/s3-storage/manage-storage/additional-users Дополнительные пользователи необходимы для разграничения доступа к бакетам в аккаунте. При создании первого бакета автоматически создается главный пользователь с доступом ко всем бакетам и максимальными правами. Использование такого пользователя может быть небезопасно. С помощью дополнительных пользователей можно предоставить доступ только к выбранным бакетам и с нужным уровнем прав. ## Создание пользователя В панели управления S3 перейдите в раздел «Пользователи» и нажмите «Добавить пользователя». ![Scr 20250814 Lqhk](https://content.timeweb.com/assets/adb34994-6c6e-4fde-aa92-951b37abde53.png?width=2000&height=912) Укажите имя пользователя и [задайте уровни доступа](https://timeweb.cloud/docs/s3-storage/manage-storage/additional-users#urovni-dostupa) для нужных бакетов. ![Scr 20250814 Pqti](https://content.timeweb.com/assets/2348d5fe-f362-49ec-9e9e-52a3994821b2.png?width=2014&height=1126) Нажмите «Создать». ## Данные для подключения В разделе «Пользователи» нажмите на нужного пользователя. На вкладке «Информация» будут отображены его `S3 Access Key` и `S3 Secret Key`. ![Scr 20250814 Pqak](https://content.timeweb.com/assets/12106773-5317-4314-8869-dec2ef3b2b00.png?width=2008&height=1118) ## Редактирование пользователя Вы можете отредактировать созданного пользователя. Для этого в панели управления S3 перейдите в раздел «Пользователи». Чтобы заблокировать пользователя, нажмите на три точки рядом с ним и выберите соответствующую опцию. При блокировке у пользователя будут отозваны все права. Разблокировать можно таким же способом. ![Scr 20250814 Otmb](https://content.timeweb.com/assets/20884330-5e2b-4359-9472-846b87348175.png?width=2052&height=896) Чтобы изменить права, нажмите на пользователя, в открывшемся окне перейдите во вкладку «Права доступа» и [установите нужные права](https://timeweb.cloud/docs/s3-storage/manage-storage/additional-users#urovni-dostupa) для бакетов. ![Scr 20250814 Pqyc](https://content.timeweb.com/assets/fdf2dc3a-bdc9-4a6e-bd03-134594dd97c3.png?width=2024&height=912) ## Уровни доступа Для каждого бакета можно установить один из четырех уровней доступа: - Управление - Чтение и запись - Чтение - Нет доступа Действия, доступные для каждого уровня: ### Нет доступа Пользователь не имеет доступа к бакету. ### Чтение **Бакеты**: - Просмотр списка бакетов - Определение региона - Получение ACL, политик доступа, тегов, CORS-настроек - Просмотр конфигурации веб-сайта, логирования, уведомлений, версионирования и жизненного цикла **Объекты**: - Получение метаданных и содержимого объектов - Просмотр ACL - Работа с версиями объектов (листинг, получение содержимого и ACL конкретной версии) ### Чтение и запись Включает все права уровня «Чтение», а также позволяет работать с объектами в бакете: **Объекты**: - Просмотр списка объектов - Скачивание объектов - Загрузка новых объектов - Обновление существующих объектов - Удаление объектов - Загрузка в несколько частей (multipart upload) Пользователь с уровнем доступа «Чтение и запись» не имеет доступа к управлению настройками бакета: ACL, политиками доступа, тегами, CORS-настройками, конфигурацией веб-сайта, логированием, уведомлениями, версионированием и жизненным циклом. ### Управление Включает все права уровня «Чтение и запись», а также: **Бакеты**: - Создание и удаление - Изменение ACL, тегов, CORS-настроек, политик доступа - Настройка статического веб-сайта - Управление версионированием - Настройка конфигурации жизненного цикла **Объекты**: - Изменение ACL # Кастомные роли пользователей Source: https://timeweb.cloud/docs/s3-storage/manage-storage/custom-user-roles Кастомные роли позволяют гибко настроить права дополнительного пользователя S3, если [стандартных уровней доступа](https://timeweb.cloud/docs/s3-storage/manage-storage/additional-users#urovni-dostupa) недостаточно. В панели управления S3 доступны готовые уровни доступа: «Чтение», «Чтение и запись», «Управление» и «Нет доступа». Это пресеты для популярных сценариев, которые помогают быстро выдать типовые права. Если нужен более точный набор разрешений, его можно настроить через API: например, разрешить пользователю работать только с отдельными префиксами, объектами или действиями. Например, с помощью кастомной роли можно выдать пользователю доступ только к нужной части бакета и разрешить только те действия, которые требуются для его задачи: чтение, загрузку, удаление или работу с версиями объектов. Такая настройка выполняется через IAM-совместимую политику пользователя. Политика применяется к конкретному дополнительному пользователю и не меняет права остальных пользователей бакета. > [!NOTE] > Кастомная роль не заменяет [политики бакета](https://timeweb.cloud/docs/s3-storage/supported-features/bucket-policies). Политика бакета задает правила доступа на уровне бакета, а кастомная роль ограничивает действия конкретного пользователя. ## Предварительная подготовка Перед настройкой кастомной роли: 1. Создайте [дополнительного пользователя S3](https://timeweb.cloud/docs/s3-storage/manage-storage/additional-users). 2. Установите и настройте [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli). 3. Подготовьте реквизиты основного пользователя S3 или пользователя с правами на управление политиками. При создании дополнительного пользователя в панели управления можно не выдавать ему доступ к нужному бакету и не назначать разрешения. Необходимые права будут настроены ниже с помощью пользовательской политики. В бакете заранее создайте папки, для которых будут настроены разные права: - `public/` — для файлов, которые пользователь сможет только читать; - `uploads/` — для файлов, которые пользователь сможет читать и загружать; - `reports/` — для файлов, которые пользователь сможет читать, загружать и удалять. В S3 папки являются префиксами в именах объектов. ## Создание политики Создайте файл `user-prefix-policy.json`: ```js { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListWholeBucket", "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::<имя_бакета>"] }, { "Sid": "ReadPublicPrefix", "Effect": "Allow", "Action": ["s3:GetObject", "s3:GetObjectVersion"], "Resource": ["arn:aws:s3:::<имя_бакета>/public/*"] }, { "Sid": "UploadToUploadsPrefix", "Effect": "Allow", "Action": ["s3:GetObject", "s3:GetObjectVersion", "s3:PutObject"], "Resource": ["arn:aws:s3:::<имя_бакета>/uploads/*"] }, { "Sid": "ManageReportsPrefix", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:PutObject", "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": ["arn:aws:s3:::<имя_бакета>/reports/*"] } ] } ``` Вместо `<имя_бакета>` укажите имя вашего бакета. Другие действия для поля `Action` можно подобрать по списку поддерживаемых [методов для работы с объектами](https://timeweb.cloud/docs/s3-storage/manage-storage/s3-guide#metody-dlya-raboty-s-obektami). Права на объекты задаются через ARN вида: ```bash arn:aws:s3:::<имя_бакета>/<префикс>/* ``` Для просмотра списка объектов используется отдельное действие `s3:ListBucket`. Оно применяется к ARN бакета без префикса: ```bash arn:aws:s3:::<имя_бакета> ``` > [!NOTE] > В примере `s3:ListBucket` разрешен для всего бакета. Это значит, что пользователь сможет видеть список объектов в бакете, но выполнять действия с объектами сможет только в разрешенных префиксах. ## Применение политики Примените политику к дополнительному пользователю: ```bash aws iam put-user-policy \ --user-name <имя_пользователя> \ --policy-name user-prefix-policy \ --policy-document file://user-prefix-policy.json \ --endpoint-url https://s3.twcstorage.ru \ --region ru-1 ``` После выполнения команды политика будет привязана к пользователю. Если нужно изменить права, отредактируйте файл `user-prefix-policy.json` и повторно выполните команду `put-user-policy` с тем же именем политики. Новая версия политики заменит предыдущую. ## Проверка доступа Чтобы проверить права, настройте отдельный профиль AWS CLI с реквизитами дополнительного пользователя: ```bash aws configure --profile s3-limited-user ``` Укажите S3 Access Key, S3 Secret Key, регион `ru-1` и формат вывода `json`. Проверьте, что пользователь может посмотреть список объектов: ```bash aws s3 ls s3://<имя_бакета> \ --profile s3-limited-user \ --endpoint-url https://s3.twcstorage.ru ``` Проверьте загрузку в разрешенный префикс: ```bash aws s3 cp test.txt s3://<имя_бакета>/uploads/test.txt \ --profile s3-limited-user \ --endpoint-url https://s3.twcstorage.ru ``` Проверьте действие, которое не входит в политику. Например, пользователь не должен удалять файлы из префикса `uploads/`: ```bash aws s3 rm s3://<имя_бакета>/uploads/test.txt \ --profile s3-limited-user \ --endpoint-url https://s3.twcstorage.ru ``` Если политика применена корректно, команда завершится ошибкой доступа. ## Удаление политики Чтобы удалить кастомную роль у пользователя, выполните команду: ```bash aws iam delete-user-policy \ --user-name <имя_пользователя> \ --policy-name user-prefix-policy \ --endpoint-url https://s3.twcstorage.ru \ --region ru-1 ``` После удаления политики у пользователя останутся только права, заданные для него в панели управления S3. # Автомасштабирование бакетов Source: https://timeweb.cloud/docs/s3-storage/manage-storage/s3-autoscaling Автомасштабирование — это функция, которая автоматически увеличивает размер бакета, когда вы загружаете в него больше данных, чем указано в тарифе. Если автомасштабирование включено, размер хранилища увеличиватся автоматически, чтобы данные всегда были доступны. Вам не нужно контролировать объем данных в бакете и отслеживать достижение «потолка» по тарифу. Если автомасштабирование выключено, то при достижении тарифного лимита сервис приостанавливается, действия с бакетом недоступны. Для продолжения работы необходимо самостоятельно увеличить тариф. > [!NOTE] > Автомасштабирование недоступно для бакетов с произвольной конфигурацией. ## Холодное хранилище Бакеты, созданные с 27.11.2025 При загрузке или удалении данных размер бакета увеличивается и уменьшается автоматически. Автомасштабирование **всегда включено** и не может быть выключено. Стоимость хранения рассчитывается исходя из фактического объема данных. Минимальный оплачиваемый объем — 1 ГБ: плата за него начисляется, даже если бакет пуст. При уменьшении объема данных стоимость также уменьшается, но не может быть ниже стоимости 1 ГБ. В качестве примера используются тариф для бакетов, созданных с 31 июля 2026 года. Для бакетов, созданных ранее, стоимость хранения рассчитывается по тарифам, действовавшим на дату их создания. - Объем данных в хранилище увеличился с 1 ГБ до 3 ГБ → вы платите 3,3 ₽ в месяц. - Объем данных уменьшился до 800 МБ → вы платите за минимальный объем 1 ГБ, то есть 1,1 ₽ в месяц. Бакеты, созданные до 27.11.2025 Автомасштабирование недоступно. Увеличить размер бакета можно только вручную. Вернуться на прежний объем невозможно. ## Стандартное и премиальное хранилище Принцип автомасштабирования одинаков для стандартного и премиального классов хранения. Бакеты, созданные с 27.11.2025 #### Тарифы 1 / 10 / 100 ГБ Автомасштабирование можно [включить или отключить](https://timeweb.cloud/docs/s3-storage/manage-storage/s3-autoscaling#upravlenie-avtomasshtabirovaniem). Если автомасштабирование включено, то при достижении лимита тариф автоматически переключается на следующий. > [!NOTE] > Если объем данных сократится, тариф останется прежним. Вернуться на меньший тариф невозможно. Пример: - У вас выбран тариф 100 ГБ. - Объем данных превысил 100 ГБ → тариф переключился на 250 ГБ. - Объем данных снизился до 90 ГБ → тариф остается 250 ГБ. #### **Безлимитный тариф** На максимальном тарифе автомасштабирование **всегда включено** и отключить его нельзя. - При превышении лимита в 250 ГБ тариф остается прежним, а каждый дополнительный гигабайт оплачивается отдельно. - Если объем данных уменьшился, то стоимость за дополнительные гигабайты снижается соответственно. - Сам тариф не меняется, перейти на меньший тариф невозможно. Рассмотрим расчет стоимости на примере бакета стандартного класса, созданного 31 июля 2026 года или позднее. Для бакетов, созданных ранее, действуют тарифы, установленные на дату их создания. - Объем данных составил 254 ГБ. Вы платите ежемесячную стоимость тарифа + 8 ₽ в месяц за дополнительные 4 ГБ. - Объем уменьшился до 251 ГБ. Вы платите ежемесячную стоимость тарифа + 2 ₽ в месяц за дополнительный 1 ГБ. - Объем уменьшился до 98 ГБ. Вы платите только ежемесячную стоимость тарифа 250 ГБ. Бакеты, созданные до 27.11.2025 #### **Тарифы до 2000 ГБ** На любых тарифах до 2 ТБ автомасштабирование можно [включить или отключить](https://timeweb.cloud/docs/s3-storage/manage-storage/s3-autoscaling#upravlenie-avtomasshtabirovaniem). - Если автомасштабирование включено, при превышении тарифа бакет автоматически переключается на следующий план. - Если объем данных сократится, тариф останется прежним. Вернуться на меньший тариф невозможно. #### **Тариф 2000 ГБ** На тарифе 2 ТБ автомасштабирование **недоступно**. Увеличить размер бакета можно только вручную, путем перехода на произвольную конфигурацию (через вкладку «Настройки» на странице бакета). ## Включение и выключение автомасштабирования Включить или отключить автомасштабирование для стандартного класса хранения можно при создании бакета или в настройках уже существующего бакета. ### При создании бакета Включите переключатель «Автомасштабирование при достижении лимита» в разделе «Конфигурация». ![Scr 20251127 Ouit](https://content.timeweb.com/assets/5b9ead8b-f827-42fd-b953-2bdaab2c1db6.png?width=1060&height=1054) Если вы выбрали тариф на 250 ГБ — переключатель будет недоступен. Масштабирование в этом случае работает всегда. ### Для уже созданного бакета Вы можете включить или отключить автомасштабирование в настройках бакета: 1. Перейдите в бакет. 2. Нажмите «Изменить размер хранилища». ![Scr 20251127 Pukl](https://content.timeweb.com/assets/a55ff52f-324e-4073-a4ff-ab5cb8159ee9.png?width=2192&height=1578) 3. Включите или отключите автомасштабирование. ![Scr 20251127 Purp](https://content.timeweb.com/assets/b315db6e-2346-4eb8-81a5-dfe475dc4e69.png?width=2194&height=1498) 4. Сохраните изменения нажав на кнопку «Сохранить». ## Ограничение объема бакета Для бакетов с поресурсной тарификацией можно установить максимальный объем. Это позволит не выходить за рамки бюджета при включенном автомасштабировании и контролировать лимиты, доступные разным проектам или командам. Опция доступна: - В холодном хранилище — для всех бакетов, созданных с 27 ноября 2025 года; - В стандартном хранилище — для бакетов объемом 250 ГБ и выше, созданных с той же даты. При достижении заданного лимита бакет переключится в режим «только чтение», и загрузить в него новые данные и, соответственно, увеличить его объем и стоимость будет невозможно. Изменить лимит или отключить его совсем можно в любой момент. ### Включение лимита Чтобы включить ограничение объема бакета: 1. Перейдите в раздел «Хранилище S3» и кликните на нужный бакет. 2. На вкладке «Настройки» кликните «Настроить» в пункте «Объем бакета» 3. Активируйте опцию «Ограничение объема бакета». 4. Укажите максимальный объем бакета в гигабайтах. Лимит не может быть меньше текущего объема + 1 ГБ. 5. Нажмите «Сохранить». ### Изменение лимита Чтобы изменить установленный лимит объема бакета: 1. Перейдите в раздел «Хранилище S3» и кликните на нужный бакет. 2. На вкладке «Настройки» кликните «Настроить» в пункте «Объем бакета» 3. Задайте нужный объем бакета в гигабайтах. Лимит не может быть меньше текущего объема + 1 ГБ. 4. Нажмите «Сохранить». ### Отключение лимита Чтобы отключить ограничение объема бакета: 1. Перейдите в раздел «Хранилище S3» и кликните на нужный бакет. 2. На вкладке «Настройки» кликните «Настроить» в пункте «Объем бакета» 3. Отключите опцию «Ограничение объема бакета». 4. Нажмите «Сохранить». # Объектный менеджер Source: https://timeweb.cloud/docs/s3-storage/manage-storage/object-manager Вы можете управлять файлами в бакете прямо в браузере, используя объектный менеджер в панели управления — он доступен на странице бакета на вкладке «Объекты». ## Загрузка файлов Чтобы загрузить файл в бакет через Объектный менеджер: 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в нужную директорию. Вы также можете загрузить файл в корень бакета и затем переместить. 4. Нажмите «Загрузить файл» справа вверху. 5. Выберите файл на своем устройстве или перетащите его в окно загрузки. Файл будет загружен в бакет. При загрузках больших объектов будет использоваться [составная загрузка](https://timeweb.cloud/docs/s3-storage/supported-features/multipart-upload). ## Получение ссылки на файл Чтобы скопировать ссылку на файл в бакете: 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию с нужным файлом. 4. Наведите курсор на строку с файлом и кликните на иконку ссылки. ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 11 59 Am](https://content.timeweb.com/assets/eaa4e145-fea5-409e-aa24-e3a51b4f39d3.png?width=1580&height=857) Ссылка будет скопирована в буфер обмена. > [!NOTE] > Если файл размещен в приватном бакете, ссылка будет действовать один час. Вы также можете получить ссылку [на конкретную версию файла](https://timeweb.cloud/docs/s3-storage/manage-storage/object-manager#poluchenie-ssylki-na-predydushchuu-versiu). ## Просмотр файлов Вы можете просматривать файлы различных форматов в интерфейсе объектного менеджера без необходимости их скачивания. Чтобы просмотреть файл: 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию с нужным файлом. 4. Кликните на иконку просмотра рядом с именем файла. Файл откроется в этом же окне. ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 2026 06 30 08 10](https://content.timeweb.com/assets/23d6100c-02c1-4888-a843-e01e70301923.png?width=1570&height=857) #### Поддерживаемые форматы - Изображения: `apng`, `avif`, `bmp`, `cur`, `gif`, `heic`, `heif`, `ico`, `jfif`, `jpeg`, `jpg`, `pjp`, `pjpeg`, `png`, `svg`, `tif`, `tiff`, `webp` - Документы**:** `doc`, `docm`, `docx`, `dot`, `dotm`, `dotx`, `odt`, `pdf`, `rtf` - Презентации: `odp`, `potm`, `potx`, `ppsm`, `ppsx`, `ppt`, `pptm`, `pptx` - Электронные таблицы: `csv`, `fods`, `ods`, `xls`, `xlsb`, `xlsm`, `xlsx`, `xlt`, `xltm`, `xltx` - Markdown: `markdown`, `md` - Текстовые, конфигурационные файлы и исходный код: `bash`, `c`, `cc`, `cjs`, `cpp`, `cs`, `css`, `diff`, `go`, `h`, `hpp`, `htm`, `html`, `ini`, `java`, `js`, `json`, `json5`, `jsonc`, `jsx`, `kt`, `log`, `mjs`, `php`, `proto`, `py`, `rb`, `rs`, `scss`, `sh`, `sql`, `swift`, `toml`, `ts`, `tsx`, `txt`, `xml`, `yaml`, `yml` - Видеофайлы: `m4v`, `mov`, `mp4`, `ogg`, `ogv`, `webm` ## Скачивание файлов Чтобы скачать файл из бакета: 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию с нужным файлом. 4. Наведите курсор на строку с файлом и кликните на опцию «Скачать». ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 10 53 Am](https://content.timeweb.com/assets/b9ae5f74-7bdd-41b6-8792-67e9de0f6dae.png?width=1572&height=854) Файл будет загружен на ваше устройство. > [!NOTE] > Скачивать можно только файлы. Скачать папку через объектный менеджер невозможно. Для скачивания папок можно воспользоваться утилитами [Cyberduck](https://timeweb.cloud/docs/s3-storage/tools/cyberduck) или [S3 Browser](https://timeweb.cloud/docs/s3-storage/tools/s3-browser). ## Создание папок Вы можете создавать директории внутри вашего бакета: 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию, в которой нужно создать папку. Вы также можете создать папку в корне бакета и затем переместить ее. 4. Нажмите «Создать папку» справа вверху. 5. Введите имя папки. 6. Нажмите на галочку для сохранения. ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 10 35 Am](https://content.timeweb.com/assets/c4de7d76-7384-42be-ae3f-ef3dcbfc9ea4.png?width=1580&height=816) ## Перемещение объектов Вы можете перемещать объекты — файлы и папки — между директориями внутри бакета. 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию с нужным файлом или папкой. - Чтобы переместить один объект, кликните на три точки справа и выберите «Переместить». ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 10 43 Am](https://content.timeweb.com/assets/86a5e245-de5a-4d64-8397-489d81326c46.png?width=1585&height=853) 1. - Чтобы переместить несколько объектов, отметьте их в списке и нажмите «Переместить» внизу. ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 10 47 Am](https://content.timeweb.com/assets/c2add302-7b47-4047-852f-209e73e6d36f.png?width=1334&height=867) 4. Перейдите в директорию, в которую нужно переместить выбранный объект или объекты. 5. Нажмите «Переместить в текущую папку». ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 10 44 Am](https://content.timeweb.com/assets/899c4b26-5a4b-476c-a18e-d41da0da65a7.png?width=1575&height=857) ## Переименование объектов Чтобы переименовать файл или папку в бакете: 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию с нужным файлом или папкой. 4. Наведите курсор на строку с объектом и кликните на опцию «Переименовать». ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 10 50 Am](https://content.timeweb.com/assets/6efd9a0f-7a58-45b0-93db-c776d9093c53.png?width=1570&height=859) 5. Введите нужное имя и нажмите на галочку для сохранения. ## Изменение метаданных Объектный менеджер позволяет изменять системные и пользовательские [метаданные файла](https://timeweb.cloud/docs/s3-storage/supported-features/setting-headers-for-objects#dostupnye-parametry). Опция доступна только для файлов и недоступна для директорий. Чтобы изменить метаданные: 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию с нужным файлом. 4. Кликните на три точки справа и выберите «Изменить метаданные». ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 10 43 Am](https://content.timeweb.com/assets/86a5e245-de5a-4d64-8397-489d81326c46.png?width=1585&height=853) 5. Задайте необходимые значения. 6. Если необходимо задать пользовательские метаданные, кликните «Добавить» и заполните поля для ключа и его значения. 7. Сохраните изменения. ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 12 16 Pm](https://content.timeweb.com/assets/00f76e2d-6073-4631-9e22-0da2bdbdf19f.png?width=1563&height=849) > [!NOTE] > Если для бакета включено [версионирование](https://timeweb.cloud/docs/s3-storage/supported-features/s3-object-versioning), изменение метаданных приводит к созданию новой версии объекта. Содержимое файла при этом не изменяется, а предыдущая версия объекта остается доступной и может быть использована для восстановления. ## Управление версиями файлов Если для бакета включено [версионирование](https://timeweb.cloud/docs/s3-storage/supported-features/s3-object-versioning), в объектном менеджере вы можете просматривать доступные версии файла, скачивать, восстанавливать и удалять предыдущие версии. Опция доступна только для файлов и недоступна для директорий. ### Просмотр истории версий 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию с нужным файлом. 4. Кликните на три точки справа и выберите «История версий». ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 11 49 Am](https://content.timeweb.com/assets/e8dd7fb2-1e73-4ff2-bc65-5368aac3aff1.png?width=1580&height=857) Вы увидите все доступные версии файла. ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 11 51 Am](https://content.timeweb.com/assets/b4fad0d4-bf40-4fc9-a39f-afb2422deacd.png?width=1740&height=860) ### Скачивание предыдущей версии файла 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию с нужным файлом. 4. Кликните на три точки справа и выберите «История версий». 5. Наведите курсор на нужную версию и выберите «Скачать». Файл будет загружен на ваше устройство. ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 11 53 Am (1)](https://content.timeweb.com/assets/d46f6d3a-78a6-42b0-b40a-055096d941dd.png?width=1742&height=857) ### Восстановление предыдущей версии файла 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию с нужным файлом. 4. Кликните на три точки справа и выберите «История версий». 5. Наведите курсор на нужную версию и выберите «Восстановить». 6. Подтвердите действие. ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 11 53 Am](https://content.timeweb.com/assets/db0baca7-ebc8-4a6c-bcf6-0a6383aefd5e.png?width=1738&height=856) ### Получение ссылки на предыдущую версию 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию с нужным файлом. 4. Кликните на три точки справа и выберите «История версий». 5. Наведите курсор на нужную версию и кликните на иконку ссылки. Ссылка будет скопирована в буфер обмена. ![3f8a487c Bfaca7c9 5e2b 413c Ae02 Bd494a0056cf 06 26 2026 12 20 Pm](https://content.timeweb.com/assets/a07d5dc0-4c9b-4901-b89d-605525fb2810.png?width=1743&height=862) ### Удаление предыдущей версии 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию с нужным файлом. 4. Кликните на три точки справа и выберите «История версий». 5. Кликните на три точки справа от нужной версии и нажмите «Удалить». 6. Подтвердите действие. ## Удаление объектов Чтобы удалить файл или папку: 1. Перейдите в раздел [«Хранилище S3»](https://timeweb.cloud/my/storage) и кликните на нужный бакет. 2. Перейдите на вкладку «Объекты». 3. Перейдите в директорию с нужным файлом или папкой. 4. Кликните на три точки справа и выберите «Удалить». 5. Подтвердите удаление. > [!NOTE] > При удалении папки также будет удалено всё ее содержимое. # Привязка домена Source: https://timeweb.cloud/docs/s3-storage/manage-storage/link-domain Вы можете привязать к бакету свой домен — тогда не потребуется указывать имя бакета при обращении к файлам. То есть, вместо путей: ```shell https://s3.twcstorage.ru/имя_бакета/имя_файла https://s3.twcstorage.ru/имя_бакета/имя_директории/имя_файла ``` вы сможете использовать пути: ```shell https://ваш.домен.tld/имя_файла https://ваш.домен.tld/имя_директории/имя_файла ``` Обратите внимание, что при прямом обращении по домену (`https://ваш.домен.tld/`) не будет отображаться листинг файлов или какая-либо другая индексная страница. Привязка домена подразумевает, что в URL будет указан путь к конкретному файлу. Для привязки необходимо использовать домен третьего или более уровня, например, `timeweb.mydomain.com`. > [!NOTE] > Если для домена включено проксирование через Cloudflare, отключите его перед привязкой домена. Подождите 5-10 минут, чтобы изменения вступили в силу, привяжите домен по инструкции ниже, после чего проксирование можно снова подключить. Порядок действий: 1. В настройках бакета на вкладке «Домены» кликните «Привязать домен». 2. Скопируйте значение CNAME-записи — `s3.twcstorage.ru`. 3. Укажите для домена эту CNAME-запись на стороне держателя NS-серверов (проверить его можно [здесь](https://www.whatsmydns.net/#NS/)). Если домен размещен на NS-серверах Timeweb Cloud, настройка выполняется по нашей [инструкции](https://timeweb.cloud/docs/domains/dns-records-management#cname). ![Selection 250](https://content.timeweb.com/assets/896eb13e-1ca3-4c06-ae82-4b1df9983cff.png?width=1011&height=763) 4. Подождите 15-20 минут, чтобы изменения вступили в силу. 5. Кликните «Привязать домен». ![Selection 251](https://content.timeweb.com/assets/bef534d3-4c9c-4b27-8e18-6a0c83d6748b.png?width=1015&height=760) Если оставить отмеченной галку «Выпустить SSL-сертификат», мы автоматически сгенерируем и установим на указанный домен бесплатный SSL Let's Encrypt и будем автоматически его продлевать за неделю до истечения. # Миграция данных в хранилище S3 Source: https://timeweb.cloud/docs/s3-storage/manage-storage/migration-to-s3-storage Перенести данные в наше хранилище можно как автоматически, используя функционал панели, так и с помощью сторонних инструментов, например, Rclone. В статье рассмотрим оба этих способа. ## Автоматический перенос данных Вы можете выполнить перенос данных из любого S3-совместимого хранилища в хранилище Timeweb Cloud через вашу панель управления. Также этот функционал позволяет переносить данные между бакетами внутри нашего хранилища. Для того, чтобы запустить перенос: 1. В разделе «Хранилище S3» перейдите на страницу бакета и откройте вкладку «Перенос данных». 2. Введите полные реквизиты для подключения к стороннему хранилищу. Запросить эти данные можно у вашего текущего провайдера хранилища. ![Image1](https://content.timeweb.com/assets/04ef6cb7-b8b8-4332-95d9-e2ea935f7ec3?width=890&height=1112) 3. Нажмите «Начать перенос». В зависимости от количества объектов в исходном бакете время выполнения переноса может различаться. Прогресс копирования будет отображаться на странице бакета желтым индикатором. Для миграции постоянно изменяющихся данных следует сочетать этот способ с ручной синхронизацией, описанной ниже. > [!NOTE] > Обратите внимание, что «Перенос данных» выполняет копирование данных с перезаписью существующих файлов. Чтобы избежать перезаписи, требуется синхронизация. ## Миграция данных с помощью Rclone Этот способ предпочтителен при переносе значительных объемов данных (например, если количество объектов исчисляется миллионами) и постоянно изменяющихся данных. Для миграции потребуется: 1. Созданный бакет с нужным тарифом. 2. Компьютер или виртуальный сервер для управления процессом с установленной утилитой Rclone. Процесс состоит из нескольких этапов, рассмотрим их по порядку. ### 1\. Подготовка Получите реквизиты доступа к бакету у стороннего провайдера и настройте [Rclone](https://timeweb.cloud/docs/s3-storage/tools/rclone). Добавьте в утилиту два профиля (remote) — с реквизитами стороннего провайдера и с реквизитами нашего хранилища. Далее в статье для примеров будут использоваться имена профилей `other-provider` и `tw-cloud`. ### 2\. Первоначальное копирование данных При больших объемах данных процесс может занимать значительное время, поэтому имеет смысл запускать команду для копирования в сессии `tmux` или `screen`. Это позволит вам оставить команду работающей в фоне и отключиться от сервера. Запустите новую сессию `tmux` командой: ```shell tmux new -s storage-migration ``` Запустите копирование объектов командой следующего вида: ```shell rclone copy -v -P --log-file=rclone.log --transfers=128 [other-provider]:[bucket-name] tw-cloud:[bucket-name] ``` Подставьте в команду соответствующие данные. Здесь опция `--transfers` определяет число параллельных загрузок. Чем их больше, тем быстрее будет происходит копирование, однако максимальное число загрузок ограничивается возможностями компьютера, на котором команда запускается. При возникновении ошибок уменьшите число. Отключиться от сессии `tmux` можно, набрав сочетание клавиш **Ctrl+B** + **D** (сперва надо набрать **Ctrl+B**, затем отпустить клавиши и нажать **D**). Вы увидите сообщение `[detached (from session storage-migration)]`. Подключиться к работающей сессии `tmux` можно командой: ```shell tmux a ``` ### 3\. Синхронизация данных Дождитесь окончания копирования и запустите синхронизацию: ```shell rclone sync -v -P --log-file=rclone.log --transfers=128 [other-provider]:[bucket-name] tw-cloud:[bucket-name] ``` В целевой бакет будут скопированы только изменившиеся или новые файлы. ### 4\. Остановка сервиса и финальная синхронизация Для сохранения консистентности данных потребуется временно отключить сервис. В это время надо запустить финальную синхронизацию: ```shell rclone sync -v -P --log-file=rclone.log --transfers=128 [other-provider]:[bucket-name] tw-cloud:[bucket-name] ``` Синхронизация должна быть быстрее предыдущей, если между ними прошло немного времени и новых данных не успело накопиться большое количество. ### 5\. Настройте сервис на работу с новым хранилищем После финальной синхронизации хранилищ выполните подключение сервисов к новому хранилищу. После успешного переключения сервисов на новое хранилище данные из старого хранилища можно удалить. # Описание принципов работы с S3 Source: https://timeweb.cloud/docs/s3-storage/manage-storage/s3-guide Подробный гайд по принципам работы с S3-хранилищем. ## Реквизиты подключения Данные для подключения к S3 можно найти во вкладке «Дашборд» в [панели управления](https://timeweb.cloud/my/storage) в настройках нужного бакета. ![Selection 252](https://content.timeweb.com/assets/80cb31aa-f2a6-4581-99ab-f74b22e13a0c.png?width=1012&height=939) На текущий момент реализована поддержка `AWS Signature V2` и `AWS Signature V4`. Для подтверждения личности запрашивающего все запросы должны иметь подпись, которую можно создать с помощью `Access Key` и `Secret Key`. ## Вычисление подписи Вычисление подписи состоит из трех шагов: 1. Получение ключа подписи (`SigningKey`) 2. Получение строки для подписи (`StringToSign`) 3. Подпись строки с помощью ключа ### Получение ключа для подписи (SigningKey) Для получения подписывающего ключа закодируйте с помощью алгоритма `HMAC-SHA256` следующие данные: ```shell DateKey = HMAC-SHA256("AWS4"+"", "") DateRegionKey = HMAC-SHA256(, "") DateRegionServiceKey = HMAC-SHA256(, "") SigningKey = HMAC-SHA256(, "aws4_request") ``` Мы поддерживаем метод подписи запросов через HTTP-заголовок `Authorization`. Использование заголовка `Authorization` является наиболее частным методом аутентификации пользователя. Общий вид запроса: ```shell Authorization: AWS4-HMAC-SHA256 Credential=12345_USER/20180524/ru-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024 ``` Описание параметров запроса: | **Параметр** | **Описание** | | --- | --- | | AWS4-HMAC-SHA256 | Подпись AWS версии 4 (AWS4) и алгоритм подписи (HMAC-SHA256) | | Credential | Содержит ключ доступа и информацию о запросе в формате: ${ACCESS_KEY}/${YYYYMMDD}/${REGION}/s3/aws4_request | | SignedHeaders | Список в нижнем регистре имен заголовков запроса, используемых при вычислении подписи | | Signature | Подписанный хэш, состоящий из хэша тела запроса, секретного ключа и информации о запросе (каноническом запросе) | ### Получение строки для подписи Для того чтобы получить строку для подписи, необходимо сделать канонический запрос следующего вида: ``` \n \n \n \n \n ``` Где: - `HTTPMethod` — один из HTTP-методов, например `GET`, `PUT`, `HEAD` и `DELETE`; - `CanonicalURI` — URI-кодированная часть адреса, которая начинается после домена, с первым «/», например для `https://s3.twcstorage.ru/bucket/sample.txt` будет выглядеть следующим образом: `/bucket/sample.txt`; - `CanonicalQueryString` — параметры строки запроса; - `CanonicalHeaders` — список заголовков и их значений, разделенных новой строкой, в нижнем регистре и без пробелов; - `SignedHeaders` — список имен заголовков без значений, отсортированных по алфавиту, в нижнем регистре и через точку с запятой. Например: `host;x-amz-content-sha256;x-amz-date`; - `HashedPayload` — хэш `SHA256` тела запроса `Hex(SHA256Hash())`. В случае, если тела запроса нет, хэш необходимо посчитать от пустой строки `Hex(SHA256Hash(“”))`. ### Подпись строки с помощью ключа Строка для подписи представляет собой конкатенацию следующих строк: ``` "AWS4-HMAC-SHA256" + "\n" + timeStampISO8601Format + "\n" + + "\n" + Hex(SHA256Hash()) ``` Где: - `AWS4-HMAC-SHA256` — данная строка определяет алгоритм шифрования, который вы используете; - `timeStampISO8601Format` — текущее UTC-время в формате ISO 8601 (например, `20130524T000000Z`); - `Scope` — строка формата `date.Format() + "/" + + "/" + + "/aws4_request"`, например `“20130606/ru-1/s3/aws4_request”`, привязывает полученную подпись к определенной дате, региону или сервису. В случае привязки к дате, подпись будет действовать 15 минут. Подробнее о способе аутентификации через заголовок `Authorization` читайте в официальной документации [Amazon S3 API](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html). ## Поддержка методов S3 Основные методы S3, которые поддерживает хранилище Timeweb Cloud, перечислены ниже. Список всех функций и дополнительную информацию можно найти в [официальной документации](https://docs.ceph.com/en/latest/radosgw/s3/#features-support). ### Методы для работы с бакетами | **Метод** | **Описание** | | --- | --- | | GET Service (List Buckets) | Получение списка бакетов | | GET Bucket (List Objects) | Получение списка объектов в бакете | | GET Bucket Location | Получение региона бакета | | DELETE Bucket | Удаление бакета | | HEAD Bucket | Получение статуса бакета | | PUT Bucket | Создание бакета | | GET Bucket ACL | Получение списка управления доступом (access control list) | | PUT Bucket ACL | Назначение списка управления доступом | | GET Bucket Multipart Uploads | Получение списка текущих составных загрузок | | PUT Bucket Versioning (Enable / Suspend) | Включение или выключение версионирования бакета | | GET Bucket Versioning | Получение статуса версионирования (метод не вернет статус, если состояние версионирования не было ранее установлено методом PUT) | | PUT Notification | Включение уведомлений о событиях для бакета | | DELETE Notification | Удаление уведомлений о событиях для бакета | | GET Notification | Получения списка уведомлений для бакета | | GET Bucket Lifecycle | Получение конфигурации жизненного цикла бакета | | DELETE Bucket Lifecycle | Удаление конфигурации жизненного цикла бакета | | PUT Bucket Tagging | Добавление меток бакету | | GET Bucket Tagging | Получение меток бакета | | DELETE Bucket Tagging | Удаление меток бакета | | GET Bucket Policy | Получение политики доступа для бакета | | PUT Bucket Policy | Применение политики доступа для бакета | | DELETE Bucket Policy | Удаление политики доступа для бакета | ### Методы для работы с объектами | **Метод** | **Описание** | | --- | --- | | PUT Object | Создание объекта | | PUT Object — Copy | Копирование объекта | | DELETE Object | Удаление объекта | | GET Object | Получение объекта | | HEAD Object | Получение метаданных объекта | | GET Object ACL | Получение списка управления доступом для объекта | | PUT Object ACL | Назначение списка управления доступом для объекта | | POST Multipart Upload | Запуск составной загрузки | | PUT Multipart Upload Part | Загрузка части объекта | | GET Multipart Upload Parts | Получение загруженных частей составной загрузки | | POST Multipart Upload (Complete) | Завершение составной загрузки | | DELETE Multipart Upload | Прерывание составной загрузки | | PUT Object Tagging | Добавление меток для объекта | | GET Object Tagging | Получение меток объекта | | DELETE Object Tagging | Удаление меток объекта | ## Примеры использования AWS SDK для разных языков Примеры использования SDK вы можете найти в разделе «[SDK для S3](https://timeweb.cloud/docs/s3-storage/sdk)» и в репозиториях GitHub: - [Node.js](https://github.com/timeweb-cloud/s3-examples/tree/master/nodejs) - [Python3](https://github.com/timeweb-cloud/s3-examples/tree/master/python3) - [PHP](https://github.com/timeweb-cloud/s3-examples/tree/master/php) # Инструменты Source: https://timeweb.cloud/docs/s3-storage/tools Для работы с объектным хранилищем S3 существует множество инструментов, которые позволяют удобно управлять данными: **Консольные утилиты:** - [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli) - [S3cmd](https://timeweb.cloud/docs/s3-storage/tools/s3cmd) **Десктопные приложения:** - [Cyberduck](https://timeweb.cloud/docs/s3-storage/tools/cyberduck) - [S3 Browser](https://timeweb.cloud/docs/s3-storage/tools/s3-browser) **FUSE-утилиты:** - [s3fs](https://timeweb.cloud/docs/s3-storage/tools/s3fs) - [Rclone](https://timeweb.cloud/docs/s3-storage/tools/rclone) Эти инструменты предлагают разные подходы к управлению S3, позволяя выбрать наиболее удобный вариант для ваших задач. # AWS CLI Source: https://timeweb.cloud/docs/s3-storage/tools/aws-cli AWS CLI — это интерфейс командной строки для работы с сервисами Amazon. В интерфейсе доступен набор команд для управления файлами в облачном хранилище. ## Установка На текущий момент для полноценной работы с кластером необходимо использовать AWS CLI первой версии. Для установки AWS CLI воспользуйтесь `pipx`: ```shell pipx install 'awscli==1.34.30' ``` После установки проверьте версию AWS CLI с помощью команды: ```shell aws --version ``` ## Настройка Для настройки AWS для работы с нашим объектным хранилищем S3 используйте команду: ```shell aws configure ``` Появится интерактивная строка с запросом реквизитов для подключения. Заполните их следующим образом, подставив необходимые значения из настроек бакета в вашей панели управления: ```shell AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: ru-1 Default output format [None]: json ``` Будет создана скрытая директория `.aws` с файлами `config` и `credentials`, которые содержат настройки AWS и ключи для авторизации соответственно. ## Работа с файлами Рассмотрим, как выполнять основные операции с объектами в бакете. ### **Получение списка файлов в бакете** Чтобы получить список файлов, используйте `ls`: ```shell aws s3 ls s3://<имя бакета> --endpoint-url https://s3.twcstorage.ru ``` ### **Загрузка локального файла в бакет** Для загрузки файлов используется `cp`. В примере ниже загружается файл `text.txt`: ```shell aws s3 cp test.txt s3://<имя бакета> --endpoint-url https://s3.twcstorage.ru ``` ### **Удаление файла в бакете** Для удаления файла используйте команду `rm`. В примере ниже удаляем файл `text.txt`: ```shell aws s3 rm s3://<имя бакета>/test.txt --endpoint-url https://s3.twcstorage.ru ``` ### **Синхронизация файлов** Для синхронизации файлов между локальной директорией (в примере это текущая директория — `.`) и бакетом используется `sync`: ```shell aws s3 sync . s3://<имя бакета> --endpoint-url https://s3.twcstorage.ru ``` Подробную информацию по этим и другим командам можно найти в [документации AWS](https://docs.aws.amazon.com/cli/latest/reference/s3/). ## Составная загрузка Для выполнения multipart-загрузки с помощью AWS CLI необходимо использовать команду `aws s3api`. Этот процесс предполагает создание и завершение multipart-загрузки в несколько шагов. ### Предварительная подготовка Перед выполнением multipart-загрузки загружаемый файл необходимо разбить на части. Это можно сделать при помощи утилиты `split`: ```shell split -b <размер_части> <путь_к_файлу> <префикс_имени_части> ``` - `<размер_части>` — размер каждой части. Например, для 5 МБ укажите `5M`. - `<путь_к_файлу>` — путь к исходному файлу. - `<префикс_имени_части>` — префикс для имен частей. Например, если указать part, части будут называться `partaa`, `partab` и так далее. ### Шаги выполнения multipart-загрузки **Инициализация загрузки** Сначала инициализируйте multipart загрузку, чтобы получить `UploadId`, необходимый для последующих операций: ```shell aws s3api create-multipart-upload --bucket <имя-бакета> --endpoint-url https://s3.twcstorage.ru --key <имя_файла_в_бакете> ``` Ответ команды будет содержать `UploadId`. Сохраните его, так как он понадобится для загрузки частей и завершения процесса. **Загрузка частей** Используйте команду `upload-part`, чтобы загрузить части файла. Для этого нужно указать `UploadId`, `PartNumber`, а также файл или часть файла для загрузки. Пример загрузки первой части: ```shell aws s3api upload-part --bucket <имя-бакета> --endpoint-url https://s3.twcstorage.ru --key <имя_файла_в_бакете> --part-number 1 --body <путь/к/первой_части_файла> --upload-id ``` Повторите эту команду для каждой части файла, увеличивая номер части (`--part-number`) и изменяя `--body` для каждой последующей загрузки. **Завершение загрузки** После загрузки всех частей выполните команду `complete-multipart-upload`, передав `UploadId` и информацию о загруженных частях. Сначала сформируйте JSON-файл с частями загрузки, указывая `ETag` и номер части: ```js { "Parts": [ { "ETag": "", "PartNumber": 1 }, { "ETag": "", "PartNumber": 2 } ] } ``` Затем завершите загрузку: ```shell aws s3api complete-multipart-upload --bucket <имя-бакета> --endpoint-url https://s3.twcstorage.ru --key <имя_файла_в_бакете> --upload-id --multipart-upload file://<путь/к/JSON-файлу> ``` #### Отмена загрузки Если вы хотите отменить загрузку, выполните команду: ```shell aws s3api abort-multipart-upload --bucket <имя-бакета> --endpoint-url https://s3.twcstorage.ru --key <имя_файла_в_бакете> --upload-id ``` #### Список частей составной загрузки Чтобы получить список частей во время загрузки, можно использовать команду `list-parts`: ```shell aws s3api list-parts --bucket <имя-бакета> --endpoint-url https://s3.twcstorage.ru --key <имя_файла_в_бакете> --upload-id ``` ## Подписанные URL (Presigned URL) Подписанный URL (Presigned URL) позволяет создать временную ссылку для доступа к приватному объекту в S3. Такая ссылка позволяет получить доступ к объекту без авторизации, однако, в отличие от изменения прав доступа (ACL) объекта, presigned URL всегда имеет ограниченный срок действия (максимум — 7 дней). ### Генерация presigned URL Для генерации временной ссылки на объект в S3 используйте команду: ```shell aws s3 presign s3://<имя_бакета>/<путь_к_файлу> --endpoint-url https://s3.twcstorage.ru ``` Дополнительно можно указать срок действия ссылки с помощью флага `--expires-in`, который задает время в секундах (по умолчанию 3600 секунд): ```shell aws s3 presign s3://<имя_бакета>/<путь_к_файлу> --expires-in <время_в_секундах> --endpoint-url https://s3.twcstorage.ru ``` ### Принцип работы Presigned URL При создании presigned URL используется стандартный механизм авторизации AWS. Разница заключается в том, что значения, которые обычно передаются в заголовках для авторизации, в presigned URL добавляются как параметры URL. Это позволяет сторонним пользователям открыть ссылку в браузере или другом клиенте без дополнительных настроек. Например, ссылка может выглядеть так: ```shell https://s3.twcstorage.ru/841b4a72-presigned/README.md?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=4AP1MJKIJFLUJN9ABQZ1%2F20241113%2Fru-1%2Fs3%2Faws4_request&X-Amz-Date=20241113T104406Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=737a677e78f88ab989b1c9b8edb454f70ea8da42e6b79774e68aa0fc6a52cb81 ``` # Cyberduck Source: https://timeweb.cloud/docs/s3-storage/tools/cyberduck Cyberduck — это клиент для работы с файлами в удаленных хранилищах. Приложение поддерживает Amazon S3 и другие протоколы. Для подключения к хранилищу Timeweb Cloud используется профиль с протоколом Amazon S3. Графический клиент доступен для Windows и macOS. Для Linux можно использовать консольный клиент `duck`. ## Установка графической версии и подключение к S3 Процесс установки и подключения идентичен для Windows и macOS. 1. [Скачайте Cyberduck](https://cyberduck.io/download/) с официального сайта и установите приложение. 2. В панели управления откройте нужный S3-бакет и перейдите на вкладку «Дашборд». 3. Скачайте профиль Cyberduck для подключения к Timeweb Cloud. ![Скачивание профиля в панели управления](https://content.timeweb.com/assets/3a767d59-0073-4bd7-9fdc-ea114bd20e2f.png?width=2142&height=1812) 4. Дважды кликните по файлу `timeweb-cloud.cyberduckprofile`. Cyberduck запустится и добавит профиль `s3.twcstorage.ru`. 5. Откройте раздел «Закладки» и выберите `s3.twcstorage.ru`. Windows ![2026 08 17 18.04.46](https://content.timeweb.com/assets/f14b04fb-ea2b-4ef2-9c66-b2676bea07e2.jpg?width=1023&height=611) _Панель закладок в Windows-версии [Cyberduck](https://cyberduck.io)_ macOS ![Scr 20260817 Pvpp](https://content.timeweb.com/assets/235d2a46-272e-43e5-92fa-72a5375e998f.png?width=2280&height=1080) _Панель закладок в macOS-версии [Cyberduck](https://cyberduck.io)_ 6. Укажите данные Access и Secret key. Их можно скопировать на вкладке «Дашборд» в панели управления бакетом. ![Access и Secret Key](https://content.timeweb.com/assets/dfa7d913-e770-4050-9d6a-929f2a190b80.png?width=2150&height=1822) 7. Нажмите «Подключиться». После успешного подключения Cyberduck отобразит бакеты, доступные для указанного пользователя. ### Отображение скрытых файлов По умолчанию Cyberduck не отображает скрытые файлы. Чтобы показать их, выберите «Вид» → «Показать скрытые файлы». ## Консольная версия Cyberduck Консольный клиент `duck` стоит использовать, если графический интерфейс недоступен или операции с файлами нужно выполнять из скриптов. Для повседневной работы в Windows и macOS достаточно графического клиента. ### Установка Способ установки `duck` зависит от операционной системы. Windows Установите `duck` с помощью [Chocolatey](https://chocolatey.org/): ```bash choco install duck ``` Ubuntu Добавьте репозиторий Cyberduck и установите `duck`: ```bash echo -e "deb https://s3.amazonaws.com/repo.deb.cyberduck.io stable main" | sudo tee /etc/apt/sources.list.d/cyberduck.list > /dev/null sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FE7097963FEFBE72 sudo apt-get update sudo apt-get install duck ``` macOS Установите `duck` с помощью [Homebrew](https://brew.sh/): ```bash brew install duck ``` Актуальные способы установки для поддерживаемых операционных систем перечислены в [документации Cyberduck CLI](https://docs.cyberduck.io/cli/#installation). ### Подключение Для подключения `duck` к S3-хранилищу используется профиль Timeweb Cloud. Windows Скачайте профиль `timeweb-cloud.cyberduckprofile` на вкладке «Дашборд» в панели управления бакетом. Затем выполните: ```bash duck --profile "C:\путь\к\timeweb-cloud.cyberduckprofile" --username "" --list timeweb-cloud:/ ``` Ubuntu Создайте директорию для профилей, скачайте профиль с помощью `wget` и подключитесь к хранилищу: ```bash mkdir -p ~/.duck/profiles wget -O ~/.duck/profiles/timeweb-cloud.cyberduckprofile https://st.timeweb.com/cloud-static/timeweb-cloud.cyberduckprofile duck --profile ~/.duck/profiles/timeweb-cloud.cyberduckprofile \ --username "" \ --list timeweb-cloud:/ ``` macOS Создайте директорию для профилей, скачайте профиль с помощью `wget` и подключитесь к хранилищу: ```bash mkdir -p ~/.duck/profiles wget -O ~/.duck/profiles/timeweb-cloud.cyberduckprofile https://st.timeweb.com/cloud-static/timeweb-cloud.cyberduckprofile duck --profile ~/.duck/profiles/timeweb-cloud.cyberduckprofile \ --username "" \ --list timeweb-cloud:/ ``` Где `` — S3 Access Key пользователя хранилища. Ключ можно скопировать на вкладке «Дашборд» в панели управления бакетом. В команде укажите ключ без угловых скобок. При первом подключении `duck` запросит Secret Key, который можно найти во вкладке «Дашборд» бакета. Чтобы секретный ключ не сохранился в настройках клиента, добавьте параметр `--nokeychain`. На Linux сохраненные учетные данные хранятся в незашифрованном виде. ![Scr 20260817 Pmlp](https://content.timeweb.com/assets/a8fea2b4-32a3-49b0-86bb-3ebaacdb6614.png?width=2152&height=966) _Подключение к консольной версии [duck](https://duck.sh/)_ ### Основные команды Получить список объектов в бакете: ```bash duck --profile "/путь/к/timeweb-cloud.cyberduckprofile" \ --username "" \ --list timeweb-cloud:/<имя бакета>/ ``` Загрузить локальный файл в бакет: ```bash duck --profile "/путь/к/timeweb-cloud.cyberduckprofile" \ --username "" \ --upload timeweb-cloud:/<имя бакета>/<путь>/ "/путь/к/файлу" ``` Скачать объект в локальную директорию: ```bash duck --profile "/путь/к/timeweb-cloud.cyberduckprofile" \ --username "" \ --download timeweb-cloud:/<имя бакета>/<путь к объекту> "/локальная/директория/" ``` Синхронизировать директорию в бакете с локальной директорией: ```bash duck --profile "/путь/к/timeweb-cloud.cyberduckprofile" \ --username "" \ --synchronize timeweb-cloud:/<имя бакета>/<путь>/ "/локальная/директория/" ``` Во всех командах для авторизации используются S3 Access Key и S3 Secret Key. Полный список параметров можно получить с помощью команды `duck --help` или найти в [документации Cyberduck CLI](https://docs.cyberduck.io/cli/). # Rclone Source: https://timeweb.cloud/docs/s3-storage/tools/rclone Rclone — утилита командной строки для синхронизации файлов и каталогов между локальной машиной и облачным хранилищем. ## Установка rclone Дистрибутивы программы для разных архитектур и ОС можно скачать с [сайта разработчика](https://rclone.org/downloads/). Инструкции по установке также есть на [официальном сайте](https://rclone.org/install/). Для Windows достаточно скачать и запустить `rclone.exe` через [командную строку](https://timeweb.cloud/docs/general/komandnaya-stroka-v-raznyh-os). ## Настройка rclone Для настройки `rclone` для работы с нашим объектным хранилищем S3 необходимо создать в каталоге `.config/rclone` в корне домашней директории файл `rclone.conf` со следующим содержимым: ```shell [timeweb-cloud] type = s3 provider = Other env_auth = false access_key_id = secret_access_key = endpoint = https://s3.twcstorage.ru ``` Значения S3 Access Key и S3 Secret Access Key можно найти во вкладке «Дашборд» в панели управления бакетом. ![Selection 252](https://content.timeweb.com/assets/741bcb75-7c3d-4c57-ad37-a4e65df86757.png?width=1012&height=939) Либо можно воспользоваться мастером настройки, который сформирует аналогичный файл. Для запуска мастера настройки в Linux и macOS выполните команду: ```shell rclone config ``` Для запуска в Windows используйте: ```shell .\rclone.exe config ``` Пример выполнения настройки через мастер: Нажмите `n` для создания новой конфигурации. Укажите имя конфигурации, по которому в дальнейшем будет выполняться обращение к кластеру: ```shell No remotes found - make a new one n) New remote s) Set configuration password q) Quit config n/s/q> n name> timeweb-cloud ``` Укажите номер, соответствующий значению «Amazon S3 Compliant Storage Provider». В данном случае — 4: ```shell Type of storage to configure. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / 1Fichier \ "fichier" 2 / Alias for an existing remote \ "alias" 3 / Amazon Drive \ "amazon cloud drive" 4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc) \ "s3" ... 30 / Yandex Disk \ "yandex" 31 / http Connection \ "http" 32 / premiumize.me \ "premiumizeme" Storage> 4 ``` Выберите номер, соответствующий «Any other S3 compatible provider». В данном случае — 13: ```shell Choose your S3 provider. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / Amazon Web Services (AWS) S3 \ "AWS" 2 / Alibaba Cloud Object Storage System (OSS) formerly Aliyun \ "Alibaba" 3 / Ceph Object Storage \ "Ceph" ... 11 / Tencent Cloud Object Storage (COS) \ "TencentCOS" 12 / Wasabi Object Storage \ "Wasabi" 13 / Any other S3 compatible provider \ "Other" provider> 13 ``` Укажите значение `false` для ручной настройки данных подключения: ```shell Only applies if access_key_id and secret_access_key is blank. Enter a boolean value (true or false). Press Enter for the default ("false"). Choose a number from below, or type in your own value 1 / Enter AWS credentials in the next step \ "false" 2 / Get AWS credentials from the environment (env vars or IAM) \ "true" env_auth> false ``` Вместо `` укажите значение S3 Access Key из панели управления: ```shell AWS Access Key ID. Leave blank for anonymous access or runtime credentials. Enter a string value. Press Enter for the default (""). access_key_id> ``` Вместо `` укажите значение S3 Secret Access Key из панели управления: ```shell AWS Secret Access Key (password) Leave blank for anonymous access or runtime credentials. Enter a string value. Press Enter for the default (""). secret_access_key> ``` Укажите `ru-1`: ```shell Region to connect to. Leave blank if you are using an S3 clone and you don't have a region. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / Use this if unsure. Will use v4 signatures and an empty region. \ "" 2 / Use this only if v4 signatures don't work, eg pre Jewel/v10 CEPH. \ "other-v2-signature" region> ru-1 ``` В качестве эндпоинта укажите `https://s3.twcstorage.ru`: ```shell Endpoint for S3 API. Required when using an S3 clone. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value endpoint> https://s3.twcstorage.ru ``` Нажмите «Enter»: ```shell Location constraint - must be set to match the Region. Leave blank if not sure. Used when creating buckets only. Enter a string value. Press Enter for the default (""). location_constraint> ``` Нажмите «Enter»: ```shell Canned ACL used when creating buckets and storing or copying objects. This ACL is used for creating objects and if bucket_acl isn't set, for creating buckets too. For more info visit https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl Note that this ACL is applied when server side copying objects as S3 doesn't copy the ACL from the source but rather writes a fresh one. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / Owner gets FULL_CONTROL. No one else has access rights (default). \ "private" 2 / Owner gets FULL_CONTROL. The AllUsers group gets READ access. \ "public-read" / Owner gets FULL_CONTROL. The AllUsers group gets READ and WRITE access. 3 | Granting this on a bucket is generally not recommended. \ "public-read-write" 4 / Owner gets FULL_CONTROL. The AuthenticatedUsers group gets READ access. \ "authenticated-read" / Object owner gets FULL_CONTROL. Bucket owner gets READ access. 5 | If you specify this canned ACL when creating a bucket, Amazon S3 ignores it. \ "bucket-owner-read" / Both the object owner and the bucket owner get FULL_CONTROL over the object. 6 | If you specify this canned ACL when creating a bucket, Amazon S3 ignores it. \ "bucket-owner-full-control" acl> ``` Укажите `n`, чтобы не редактировать конфигурацию: ```shell Edit advanced config? (y/n) y) Yes n) No y/n> n ``` Проверьте конфигурацию и подтвердите, что все хорошо, нажав `y`: ```shell Remote config -------------------- [timeweb-cloud] provider = Other env_auth = false access_key_id = secret_access_key = region = ru-1 endpoint = https://s3.twcstorage.ru -------------------- y) Yes this is OK e) Edit this remote d) Delete this remote y/e/d> y ``` Нажмите `q` для выхода из мастера настройки: ```shell Current remotes: Name Type ==== ==== timeweb-cloud s3 e) Edit existing remote n) New remote d) Delete remote r) Rename remote c) Copy remote s) Set configuration password q) Quit config e/n/d/r/c/s/q> q ``` > [!NOTE] > Если при настройке через мастер возникнет ошибка, попробуйте выполнить настройку заново, но без указания региона (ru-1). ## Команды для работы с хранилищем Полный список поддерживаемых команд смотрите в [документации rclone](https://rclone.org/commands/). В качестве хоста указывается имя хранилища, заданное в конфигурационном файле `rclone.conf`. Так, [в нашем примере](https://timeweb.cloud/docs/s3-storage/tools/rclone#nastrojka-rclone) в начале статьи было настроено хранилище с именем `timeweb-cloud`. ### Просмотр списка бакетов ```shell rclone lsd <имя хоста>: ``` Например: ```shell rclone lsd timeweb-cloud: -1 2021-12-10 11:34:51 -1 1d65c254-17ab-4b22-b262-1111fc006937 -1 2022-01-13 10:05:47 -1 3b24945b-d373-4713-89ec-3dece346c7b3 -1 2022-01-14 12:31:36 -1 bbf30ad7-8872-40fc-8d41-54537d894b7f ``` ### Получение списка файлов в бакете ```shell rclone ls <имя хоста>:<имя бакета> ``` Например: ```shell rclone ls timeweb-cloud:3b24945b-d373-4713-89ec-3dece346c7b3 13 test.txt 13 test1.txt ``` ### **Загрузка файла в бакет** ```shell rclone -P copy <имя файла> <имя хоста>:<имя бакета> ``` Например: ```shell rclone -P copy test5.txt timeweb-cloud:3b24945b-d373-4713-89ec-3dece346c7b3 ``` ### Удаление файла в бакете ```shell rclone delete <имя хоста>:<имя бакета>/<имя файла> ``` Например: ```shell rclone delete timeweb-cloud:3b24945b-d373-4713-89ec-3dece346c7b3/test5.txt ``` ### Копирование файлов из бакета в бакет ```shell rclone copyto -vP --log-file=rclone_<имя отдающего бакета>.log --transfers=256 <имя отдающего хоста>:<имя отдающего бакета> <имя принимающего хоста>:<имя принимающего бакета> ``` ### Синхронизация файлов между бакетом и локальной директорией ```shell rclone -P sync timeweb-cloud:3b24945b-d373-4713-89ec-3dece346c7b3 /root/test ``` Для синхронизации в обратном направлении поменяйте аргументы местами. # S3 Browser Source: https://timeweb.cloud/docs/s3-storage/tools/s3-browser **S3 Browser** — это графический интерфейс для работы с S3-совместимыми хранилищами для Windows. Работа с утилитой напоминает работу с FTP-клиентами. Скачать актуальную версию S3 Browser можно [с сайта разработчика](https://s3browser.com/). ## Настройка подключения 1. Запустите мастер настройки подключения из меню **Accounts → Add new account.** 2. В открывшемся окне заполните реквизиты подключения: - - **Display name** — отображаемое имя аккаунта, укажите любое на свое усмотрение. - **Account type** — выберите «S3 Compatible Storage». - **REST Endpoint** — `s3.twcstorage.ru`. - **Access Key ID** — S3 Access Key (на скриншоте указано «id» для примера). - **Secret Access Key** — S3 Secret Access Key. Его, как и S3 Access Key, можно скопировать из панели управления на странице бакета. ![Image1](https://content.timeweb.com/assets/d06d4efb-4db9-44fe-b354-a07b02fde5ff?width=710&height=771) _Добавление нового подключения в интерфейсе [S3 Browser](https://s3browser.com/)_ 3. Кликните на **Advanced S3-compatible storage settings** внизу окна. 4. Укажите в открывшемся окне следующие настройки: ![Image2](https://content.timeweb.com/assets/f966d1c5-d86f-4f5c-abba-3273571828c5?width=632&height=605) _Настройка параметров хранилища в интерфейсе [S3 Browser](https://s3browser.com/)_ Остальные настройки можно оставить без изменений. 5. Нажмите кнопку **Close** и завершите добавление аккаунта кнопкой **Add new account**. После подключения отобразятся все существующие на аккаунте бакеты. ## Работа с S3 Browser Теперь рассмотрим основные операции при работе с хранилищем через S3 Browser. ### Создание нового бакета Для создания нового бакета нажмите на кнопку «New bucket». В открывшемся окне укажите имя нового бакета и нажмите на «Create new bucket». ![Selection 030](https://content.timeweb.com/assets/ef82370c-6ec7-4547-9865-1b0cb4751ba4.png?width=1401&height=879) _Создание нового бакета в интерфейсе [S3 Browser](https://s3browser.com/)_ ### Загрузка объектов Для загрузки файлов или директорий нажмите на кнопку «Upload» и выберите необходимый вариант. Также поддерживается загрузка файлов при помощи «drag&drop» — файлы можно просто перенести с рабочего стола. ![Selection 031](https://content.timeweb.com/assets/35acee34-9b5c-4055-844c-65c6caf0101e.png?width=1405&height=880) _Опция загрузки объектов в интерфейсе [S3 Browser](https://s3browser.com/)_ ### Скачивание объектов Для скачивания файлов или директорий выберите необходимый файл и нажмите на кнопку «Download». После этого выберите папку, в которую необходимо сохранить скачанный файл или директорию. Задача на скачивание запустится автоматически. Обратите внимание, что скачивание больших файлов выполняется по частям, и после завершения файл собирается на устройстве из скачанных фрагментов. ![Selection 032](https://content.timeweb.com/assets/14871be2-98f1-4b63-9870-2f80b626b794.png?width=1399&height=878) _Скачивание объектов в интерфейсе [S3 Browser](https://s3browser.com/)_ ### Удаление объектов Для удаления файлов или директорий выберите необходимый файл или директорию и нажмите на кнопку «Delete». Подтвердите удаление во всплывающем окне. ![Selection 033](https://content.timeweb.com/assets/e14b7171-28e5-44bc-af23-2ecb5b6d6d40.png?width=1402&height=878) _Удаление объектов в интерфейсе [S3 Browser](https://s3browser.com/)_ ### Управление прерванными составными (multipart) загрузками В S3 предусмотрена загрузка файлов по частям. Этот метод разбивает файл на несколько частей (чанков) и загружает их параллельно, что ускоряет процесс передачи больших файлов и повышает устойчивость к сбоям. При прерывании составной загрузки фрагменты файлов не отображаются в бакете, но продолжают занимать дисковое пространство на сервере. Чтобы увидеть прерванные загрузки, нажмите на «Tools» → «Uncompleted Multipart Uploads». ![Selection 034](https://content.timeweb.com/assets/49787931-c964-4922-81b3-192bf6f2b766.png?width=1400&height=878) _Меню «Tools» в интерфейсе [S3 Browser](https://s3browser.com/)_ В открывшемся окне вы сможете увидеть все незавершенные загрузки. Для их удаления выберите нужную загрузку и нажмите на «Abort Selected». ![Selection 035](https://content.timeweb.com/assets/3086237f-f44f-44b5-8813-7debebb59cc1.png?width=1398&height=878) _Управление прерванными составными загрузками в интерфейсе [S3 Browser](https://s3browser.com/)_ После этого загрузка перестанет занимать пространство бакета. # S3cmd Source: https://timeweb.cloud/docs/s3-storage/tools/s3cmd S3cmd — это клиент S3 API с интерфейсом командной строки, используемый для работы с S3-совместимыми хранилищами. ## Установка Для установки S3cmd воспользуйтесь командами в зависимости от вашей ОС: Ubuntu ```shell sudo apt install s3cmd -y ``` CentOS ```shell sudo dnf install s3cmd -y ``` Arch Linux ```shell sudo pacman -S s3cmd ``` macOS Для установки S3cmd воспользуйтесь [Homebrew](https://brew.sh/): ``` brew install s3cmd ``` Windows Откройте PowerShell от имени администратора и выполните: ```shell choco install s3cmd -y ``` Если Chocolatey не установлен, установите его, следуя [официальной инструкции](https://chocolatey.org/install). ## Настройка Для настройки `S3cmd` для работы с нашим объектным хранилищем S3 необходимо создать в корне домашней директории файл `.s3cfg` со следующим содержимым: ```shell [default] access_key = secret_key = bucket_location = ru-1 host_base = s3.twcstorage.ru host_bucket = s3.twcstorage.ru use_https = True ``` Значения S3 Access Key и S3 Secret Access Key можно найти во вкладке «Дашборд» в панели управления бакетом. ![Selection 252](https://content.timeweb.com/assets/cd3e5188-0542-413a-a806-c63dfc857a41.png?width=1012&height=939) ## Работа с файлами ### **Получение списка файлов в бакете** Чтобы получить список файлов, используйте `ls`: ```shell s3cmd ls s3://<имя бакета> ``` ### **Загрузка локального файла в бакет** Для загрузки файлов используется `put`. В примере ниже загружается файл text.txt: ```shell s3cmd put test.txt s3://<имя бакета> ``` ### Составная (multipart) загрузка Клиент `s3cmd` поддерживает составную загрузку, которая автоматически активируется при загрузке файлов размером более 15 МБ. Этот метод разбивает файл на несколько частей (чанков) и загружает их параллельно, что ускоряет процесс передачи больших файлов и повышает устойчивость к сбоям. При необходимости составную загрузку можно отключить с помощью опции `--disable-multipart`. Для изменения размера отдельных фрагментов (чанков) используйте опцию `--multipart-chunk-size-mb=SIZE`, где SIZE — размер каждого фрагмента в мегабайтах. По умолчанию размер фрагмента составляет 15 МБ, минимально допустимый размер — 5 МБ, максимально допустимый — 5 ГБ. Например, чтобы установить размер фрагмента на 10 МБ, используйте следующую команду: ```shell s3cmd put <имя_файла> --multipart-chunk-size-mb=10 s3://<имя_бакета> ``` Эта настройка позволяет оптимизировать загрузку больших файлов в зависимости от пропускной способности сети и требований к производительности. ### **Удаление файла в бакете** Для удаления файла используйте команду `del`. В примере ниже удаляем файл text.txt: ```shell s3cmd del s3://<имя бакета>/test.txt ``` ### Управление прерванными составными (multipart) загрузками При прерывании составной загрузки фрагменты файлов не отображаются в бакете, но продолжают занимать дисковое пространство на сервере. Чтобы просмотреть список прерванных загрузок и узнать, какие фрагменты занимают место, используйте команду: ```shell s3cmd multipart s3://<имя_бакета> ``` Эта команда выводит дату и время начала загрузки, путь файла и уникальный идентификатор загрузки (`ID`). Для удаления фрагментов неудачных загрузок используйте следующую команду: ```shell s3cmd abortmp s3://<имя_бакета>/<имя_файла> ``` ### **Скачивание файла из бакета** Для загрузки файла из бакета на локальное устройство используйте `get`: ```shell s3cmd get s3://<имя бакета>/test.txt ``` ### **Синхронизация файлов** Для синхронизации файлов между локальной директорией (в примере это текущая директория — `.`) и бакетом используется `sync`: ```shell s3cmd sync . s3://<имя бакета> ``` Полный список команд и дополнительную информацию можно найти в [документации S3cmd](https://s3tools.org/usage). # s3fs Source: https://timeweb.cloud/docs/s3-storage/tools/s3fs `s3fs` — утилита для Linux и macOS, с помощью которой можно монтировать бакеты облачного хранилища через FUSE. > [!NOTE] > Мы не рекомендуем использовать s3fs без крайней необходимости из-за проблем с производительностью, надежностью и совместимостью. Рассмотрите более надежные альтернативы, такие как AWS SDK или специализированные утилиты для работы с S3 — например, [s3cmd](https://timeweb.cloud/docs/s3-storage/tools/s3cmd), [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli) или [S3 Browser](https://timeweb.cloud/docs/s3-storage/tools/s3-browser). ## Установка Для установки `s3fs` на операционную систему **Ubuntu** используйте команду: ```shell sudo apt install s3fs ``` Рекомендуем использовать `s3fs` не ниже версии 1.90. Актуальную версию утилиты для Ubuntu можно собрать их исходного кода с помощью следующих команд: ```shell apt install build-essential automake libcurl4-openssl-dev libxml2-dev pkg-config libssl-dev libfuse-dev git git clone https://github.com/s3fs-fuse/s3fs-fuse.git cd s3fs-fuse ./autogen.sh ./configure make make install ``` Дополнительную информацию и инструкции по установке на другие ОС можно найти в [документации s3fs](https://github.com/s3fs-fuse/s3fs-fuse#installation). ## Настройка Для настройки `s3fs` для работы с нашим объектным хранилищем S3 сохраните ключ доступа и секретный ключ в файле `~/.passwd-s3fs` с помощью команды: ```shell echo : > ~/.passwd-s3fs ``` Значения S3 Access Key и S3 Secret Access Key можно найти во вкладке «Дашборд» в панели управления бакетом. Ограничьте доступ к файлу `~/.passwd-s3fs`: ```shell chmod 600 ~/.passwd-s3fs ``` ## Монтирование бакета Для монтирования бакета выберите директорию монтирования (в примере — `/mnt/s3/`) и выполните команду ниже, указав корректные имя бакета и путь к директории: ```shell s3fs <имя бакета> /mnt/s3/ -o use_path_request_style -o url=https://s3.twcstorage.ru -o passwd_file=~/.passwd-s3fs ``` Также можно настроить настроить монтирование бакета при запуске системы. Для этого добавьте в файл `/etc/fstab` строку вида: ```shell s3fs#<имя бакета> /mnt/s3 fuse _netdev,allow_other,use_path_request_style,url=https://s3.twcstorage.ru,passwd_file=/root/.passwd-s3fs 0 0 ``` Дополнительную информацию по работе с `s3fs`, описание всех параметров, а также рекомендации по решению возникающих проблем можно найти в [документации проекта](https://github.com/s3fs-fuse/s3fs-fuse/wiki/Fuse-Over-Amazon), в том числе в разделе [FAQ](https://github.com/s3fs-fuse/s3fs-fuse/wiki/FAQ). # Поддерживаемые возможности Source: https://timeweb.cloud/docs/s3-storage/supported-features S3-хранилища поддерживают различные функции для удобного управления данными и настройками доступа. Далее описаны поддерживаемые возможности: - [Настройка CORS для доступа к объектам](https://timeweb.cloud/docs/s3-storage/supported-features/cors-setup) - [S3 Настройка жизненного цикла объектов в S3](https://timeweb.cloud/docs/s3-storage/supported-features/object-lifecycle) - [Версионирование объектов в S3](https://timeweb.cloud/docs/s3-storage/supported-features/s3-object-versioning) - [Object Lock в S3](https://timeweb.cloud/docs/s3-storage/supported-features/object-lock) - [Установка заголовков для объектов в S3](https://timeweb.cloud/docs/s3-storage/supported-features/setting-headers-for-objects) - [Bucket Policies в S3](https://timeweb.cloud/docs/s3-storage/supported-features/bucket-policies) - [Мультипарт-загрузка](https://timeweb.cloud/docs/s3-storage/supported-features/multipart-upload) - [Presigned URL](https://timeweb.cloud/docs/s3-storage/supported-features/presigned-url) - [Настройка проксирования S3 через Nginx](https://timeweb.cloud/docs/s3-storage/supported-features/setting-up-s3-proxying) - [Статические сайты в S3](https://timeweb.cloud/docs/s3-storage/supported-features/static-websites) # Настройка CORS для доступа к объектам S3 Source: https://timeweb.cloud/docs/s3-storage/supported-features/cors-setup Когда вы используете файлы из S3-бакетов на сторонних ресурсах, например, на веб-сайте, вы можете столкнуться с ошибкой, связанной с CORS (Cross-Origin Resource Sharing). Эта ошибка возникает, когда браузер блокирует кросс-доменные запросы к ресурсам вашего бакета. Для решения проблемы необходимо задать специальные правила CORS для бакета, которые разрешат выполнение кросс-доменных запросов. Настроить их можно через панель управления или с использованием утилит, например, AWS CLI. ## Настройка CORS через панель управления 1. В панели управления откройте раздел «Настройки» вашего S3-бакета. 2. Найдите параметр «CORS» и нажмите «Изменить». ![Selection 133](https://content.timeweb.com/assets/0dea8ac4-0a18-4344-8ba8-a327544f30fd.png?width=1048&height=647) 3. Заполните необходимые параметры правил CORS: - **Allowed Origins** — указывает источники (Origins), с которых разрешены запросы к бакету. Например: `https://example.com`. Можно использовать символ `*` для разрешения запросов со всех доменов. - **Allowed Methods** — определяет HTTP-методы, которые разрешены для запросов CORS. - **Allowed Headers** — указывает заголовки, которые разрешены в запросах. Например: `Authorization`, `Content-Type`. Можно указать `*`, чтобы разрешить все заголовки. - **Expose Headers** — список заголовков, которые будут доступны клиенту в ответе. По умолчанию доступ к некоторым заголовкам блокируется браузером. Например: `ETag`, `x-amz-meta-custom-header`. - **Max Age Seconds** — определяет время в секундах, в течение которого результаты CORS-запроса можно кэшировать на стороне клиента. Например: `3600` (1 час). ![Selection 134](https://content.timeweb.com/assets/3fe7eedf-c3ec-4dfc-8328-64c96693ff99.png?width=404&height=565) Вы можете создать несколько правил (например, разрешить разные методы для разных источников), нажав на кнопку «Добавить правило». 4. Сохраните изменения, нажав на кнопку «Сохранить». ## Настройка CORS через AWS CLI Рассмотрим, как настроить CORS для S3-бакета с помощью утилиты [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli). ### Создание файла с правилами CORS Для начала создайте файл `cors.json` с конфигурацией CORS, который позволит выполнять GET и HEAD-запросы на объекты вашего бакета. Вот пример файла `cors.json`: ```shell { "CORSRules": [ { "AllowedHeaders": ["*"], "AllowedMethods": ["GET", "HEAD"], "AllowedOrigins": ["*"] } ] } ``` - `AllowedMethods`: указывает, какие HTTP-методы будут разрешены. В данном примере разрешены GET и HEAD запросы. - `AllowedOrigins`: `"*"` означает, что запросы разрешены с любого домена. Если вы хотите ограничить доступ только для определённого домена, укажите его вместо звёздочки. Например, если ваш сайт расположен на домене `https://example.com`, замените строку на: ```shell "AllowedOrigins": ["https://example.com"] ``` ### Загрузка правил CORS в бакет После создания файла с правилами, загрузите его в ваш S3-бакет с помощью следующей команды: ```shell aws s3api put-bucket-cors --bucket имя_бакета --endpoint-url https://s3.twcstorage.ru --cors-configuration file://cors.json ``` ### Проверка установленных правил CORS Вы можете проверить, что правила CORS были успешно установлены, выполнив команду: ```shell aws s3api get-bucket-cors --bucket имя_бакета --endpoint-url https://s3.twcstorage.ru ``` ### Удаление правил CORS Если вам необходимо удалить текущие правила CORS, выполните команду: ```shell aws s3api delete-bucket-cors --bucket имя_бакета --endpoint-url https://s3.twcstorage.ru ``` Команда удалит все существующие правила CORS для вашего бакета. # Настройка жизненного цикла объектов в S3 Source: https://timeweb.cloud/docs/s3-storage/supported-features/object-lifecycle При использовании S3 может потребоваться управлять жизненным циклом объектов, чтобы оптимизировать использование ресурсов и избежать переполнения хранилища. Для этого можно настроить правила жизненного цикла (Lifecycle rules), которые автоматически удаляют объекты через заданное количество дней. Рассмотрим, как настроить правила жизненного цикла для объектов в S3-бакете через панель управления и при помощи утилиты [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli). ## Через панель управления Для создания правил жизненного цикла в панели управления бакетом перейдите во вкладку «Настройки». В строке «Жизненный цикл» нажмите на кнопку «Настроить». ![Scr 20260302 Ojpc](https://content.timeweb.com/assets/eb4132d3-007b-4865-85c5-3e92b2aa6aae.png?width=2100&height=1578) Для создания нового правила нажмите на кнопку «Добавить правило». В открывшемся окне укажите: - Префикс объекта. Например, при указании префикса logs/ правило будет работать только для объектов в «папке» logs. - Действие. Выберите, что должно произойти с объектами, и укажите, через сколько дней будет выполнено действие. Доступно три варианта: - Удалить объекты — правило для любого объекта в бакете. - Удалить нетекущий — правило, устанавливаемое для старых версий объектов. Актуально при включенном [версионировании объектов](https://timeweb.cloud/docs/s3-storage/tools/aws-cli). - Прервать незавершенную загрузку — правило для автоматического удаления незавершенных [мультипарт-загрузок](https://timeweb.cloud/docs/s3-storage/tools/aws-cli). ![Scr 20260302 Ojlt](https://content.timeweb.com/assets/9195caf3-2680-49be-9544-e54bd5d7c724.png?width=2530&height=1660) #### Управление существующими правилами Просмотреть все существующие правила жизненного цикла можно также в панели управления бакетом во вкладке «Настройки», нажав на кнопку «Изменить» в строке «Жизненный цикл». В окне будут отображены все существующие правила, в том числе добавленные сторонними способами, например при помощи AWS CLI. Помимо просмотра существующих правил, вы можете удалить правило, нажав на иконку с корзиной, и временно отключить правило, переключив переключатель. ![Scr 20260302 Jkxh](https://content.timeweb.com/assets/cc2f46b4-0626-4bd1-98e3-b20a24414c7a.png?width=2156&height=1314) При нажатии на правило откроется окно редактирования, в котором можно изменить настройки. ## При помощи AWS CLI ### Создание файла с правилами жизненного цикла Чтобы настроить удаление файлов через определенное время, создайте файл с конфигурацией правил жизненного цикла. Например, если вам нужно хранить файлы в папке `logs` только один день, создайте файл `lifecycle.json` со следующим содержимым: ```shell { "Rules": [ { "Status": "Enabled", "Filter": {"Prefix": "logs/"}, "Expiration": {"Days": 1} } ] } ``` - **Prefix**: указывает папку (или префикс), к которой будет применяться правило. В этом примере файлы из папки `logs/` будут автоматически удаляться через один день. - **Expiration**: задаёт срок хранения файлов в днях. Здесь указано, что файлы будут удаляться через один день после загрузки. ### Добавление нескольких правил Вы можете добавить несколько правил для разных папок или файлов. Например, если у вас есть другая папка `logs2`, где файлы должны храниться два дня, просто добавьте дополнительное правило: ```shell { "Rules": [ { "Status": "Enabled", "Filter": {"Prefix": "logs/"}, "Expiration": {"Days": 1} }, { "Status": "Enabled", "Filter": {"Prefix": "logs2/"}, "Expiration": {"Days": 2} } ] } ``` Теперь файлы в папке `logs/` будут храниться один день, а в папке `logs2/` — два дня. ### Загрузка правил жизненного цикла в бакет После создания файла с правилами, загрузите его в ваш S3-бакет с помощью следующей команды: ```bash aws s3api put-bucket-lifecycle-configuration --bucket имя_бакета --lifecycle-configuration file://lifecycle1.json --endpoint-url https://s3.twcstorage.ru ``` Эта команда применит указанные правила к вашему бакету, и файлы будут автоматически удаляться по истечении заданного срока. ### Проверка установленных правил Чтобы убедиться, что правила жизненного цикла были успешно загружены, выполните команду: ```bash aws s3api get-bucket-lifecycle-configuration --bucket имя_бакета --endpoint-url https://s3.twcstorage.ru ``` Эта команда выведет текущие правила, установленные для вашего бакета. ### Удаление правил Если вам нужно удалить все существующие правила жизненного цикла для бакета, выполните следующую команду: ```bash aws s3api delete-bucket-lifecycle --bucket имя_бакета --endpoint-url https://s3.twcstorage.ru ``` Эта команда удалит все правила жизненного цикла, и файлы больше не будут автоматически удаляться. # Версионирование объектов в S3 Source: https://timeweb.cloud/docs/s3-storage/supported-features/s3-object-versioning Версионирование в S3 позволяет сохранять все изменения объектов, загруженных в бакет. Оно помогает защитить данные от случайного удаления или перезаписи, а также восстановить предыдущие версии объектов в случае необходимости. В этой статье мы рассмотрим работу с версиями на примере [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli). ## Включение версионирования Версионирование можно включить в панели управления или с помощью клиентов, например AWS CLI, S3 Browser и других. ### Через панель управления Перейдите во вкладку «Настройки» и нажмите кнопку «Изменить» рядом с пунктом «История версий отключена». ![Image 20250905124535245](https://content.timeweb.com/assets/17baa329-b8b1-4d78-a300-0e94e992cf25.png?width=2016&height=1612) В открывшемся окне подтвердите включение версионирования, нажав кнопку «Включить версионирование». Обратите внимание, что в дальнейшем отключить версионирование для бакета не получится — только приостановить. ### При помощи AWS CLI Чтобы включить версионирование в S3-бакете с помощью AWS CLI, выполните команду: ```shell aws s3api put-bucket-versioning --bucket <имя_бакета> --versioning-configuration Status=Enabled --endpoint-url https://s3.twcstorage.ru ``` Проверить, что версионирование включено, можно с помощью команды: ```shell aws s3api get-bucket-versioning --bucket <имя_бакета> --endpoint-url https://s3.twcstorage.ru ``` Ожидаемый результат: ```js { "Status": "Enabled", "MFADelete": "Disabled" } ``` ## Проверка работы версионирования Разберем принцип работы версионирования на примере. Создадим тестовый файл: ```shell echo "Версия 1" > testfile.txt ``` Загрузим его в бакет: ```shell aws s3 cp testfile.txt s3://<имя_бакета>/ --endpoint-url https://s3.twcstorage.ru ``` Обновим файл: ```shell echo "Версия 2" > testfile.txt ``` Снова загрузим его: ```shell aws s3 cp testfile.txt s3://<имя_бакета>/ --endpoint-url https://s3.twcstorage.ru ``` Теперь у файла есть несколько версий. Проверим их: ```shell aws s3api list-object-versions --bucket <имя_бакета> --prefix testfile.txt --endpoint-url https://s3.twcstorage.ru ``` Пример результата: ```js { "Versions": [ { "Key": "testfile.txt", "VersionId": "S7hpDH6F0RYfubNoTjin6hpBu5ewDj.", "IsLatest": true }, { "Key": "testfile.txt", "VersionId": "pdFehsuCbaPz2hNh4b9DBndfEwzjTfH", "IsLatest": false } ] } ``` **Важные нюансы**: - Каждая версия объекта занимает место в бакете. - Версии объектов не отображаются в панели управления или других S3-клиентах. - Даже при удалении объекта все версии остаются в бакете. ## Работа с версиями в панели управления Для просмотра списка версий в панели управления, в объектном менеджере, нажмите на три точки рядом с нужным объектом и выберите пункт «История версий». ![Image 20250905174549903](https://content.timeweb.com/assets/c87959bc-2c03-4519-abbc-dbec7f4cebb0.png?width=1534&height=1114) В открывшемся меню при наведении на нужную версию объекта отобразится список доступных действий. ![Image 20250905175324581](https://content.timeweb.com/assets/77084325-0c2e-42d5-bf77-b26804fc8393.png?width=1174&height=644) 1. **Ссылка на файл** — для версии объекта будет [создан presigned URL](https://timeweb.cloud/docs/s3-storage/supported-features/presigned-url). 2. **Скачивание файла**. 3. **Восстановление версии объекта** — позволяет сделать выбранную версию текущей. 4. **Удаление версии объекта** — при нажатии на три точки появляется возможность удалить нужную версию. ## Работа с версиями с помощью AWS CLI Для управления версиями объектов в S3 доступны несколько команд. ### Список версий конкретного объекта Чтобы просмотреть все версии конкретного объекта в бакете, используйте команду: ```shell aws s3api list-object-versions --bucket <имя_бакета> --prefix <имя_объекта> --endpoint-url https://s3.twcstorage.ru ``` ### Список всех объектов с их версиями Вывести список всех объектов в бакете вместе с их версиями можно так: ```shell aws s3api list-object-versions --bucket <имя_бакета> --query 'Versions[*].[Key, VersionId, Size]' --endpoint-url https://s3.twcstorage.ru ``` ### Скачивание определенной версии объекта Если нужно скачать конкретную версию объекта, выполните команду: ```shell aws s3api get-object --bucket <имя_бакета> \ --key testfile.txt \ --version-id pdFehsuCbaPz2hNh4b9DBndfEwzjTfH \ testlocalfile.txt \ --endpoint-url https://s3.twcstorage.ru ``` Где: - `--key` — имя объекта в бакете. - `--version-id` — идентификатор версии (получается из `list-object-versions`). - `testlocalfile.txt` — имя файла, в который будет сохранена скачанная версия. ### Восстановление определенной версии объекта Если объект был обновлен или удален, можно восстановить его прежнюю версию, скопировав ее поверх текущей: ```shell aws s3api copy-object --bucket <имя_бакета> \ --key testfile.txt \ --copy-source <имя_бакета>/<имя_объекта>?versionId= \ --endpoint-url https://s3.twcstorage.ru ``` Где: - `<имя_бакета>/<имя_объекта>` — полный путь к объекту в бакете. - `?versionId=` — версия, которую необходимо восстановить. После выполнения команды в бакете появится новая версия объекта, которая идентична восстановленной. ### Удаление конкретной версии объекта Чтобы удалить конкретную версию объекта, выполните команду: ```shell aws s3api delete-object --bucket <имя_бакета> --key <имя_объекта> --version-id S7hpDH6F0RYfubNoTjin6hpBu5ewDj. --endpoint-url https://s3.twcstorage.ru ``` Где `--version-id` — ID версии объекта, которую необходимо удалить. ## Настройка автоматического удаления старых версий Чтобы старые версии файлов не накапливались, можно настроить [жизненный цикл объектов](https://timeweb.cloud/docs/s3-storage/supported-features/object-lifecycle). Создадим файл `lifecycle.json`: ```js { "Rules": [ { "ID": "DeleteOldVersions", "Status": "Enabled", "Filter": {}, "NoncurrentVersionExpiration": { "NoncurrentDays": 30 } } ] } ``` Это правило удалит версии файлов, старше 30 дней. Текущие версии останутся нетронутыми. Применим политики жизненного цикла: ```shell aws s3api put-bucket-lifecycle-configuration --bucket <имя_бакета> --lifecycle-configuration file://lifecycle.json --endpoint-url https://s3.twcstorage.ru ``` Проверим, что политика применилась: ```shell aws s3api get-bucket-lifecycle-configuration --bucket <имя_бакета> --endpoint-url https://s3.twcstorage.ru ``` # Object Lock в S3 Source: https://timeweb.cloud/docs/s3-storage/supported-features/object-lock Object Lock используется для защиты объектов в S3 от удаления и изменений в течение заданного времени. Эта функция гарантирует неизменность данных на весь период хранения. Object Lock особенно полезен при работе с важными архивами, резервными копиями и другой критичной информацией, которую нужно защитить от случайных или намеренных действий. ## Включение Object Lock Для включения Object Lock перейдите во вкладку «Настройки» и нажмите кнопку «Изменить» напротив пункта «Блокировка объектов отключена». ![Image1](https://content.timeweb.com/assets/0c9e3da4-1393-4ee7-b8d2-aefd92a2d66e.png?width=1999&height=1453) В открывшемся меню включите блокировку, нажав кнопку «Включить блокировку объектов». Обратите внимание: при включении блокировки также будет включено [версионирование объектов](https://timeweb.cloud/docs/s3-storage/supported-features/s3-object-versioning). Отключить блокировку объектов, как и версионирование, невозможно. ## Создание бакета с Object Lock Включить Object Lock можно сразу при создании бакета, но только с помощью сторонних утилит. Рассмотрим пример создания бакета через [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli). Создадим бакет: ```bash aws s3api create-bucket \ --bucket object-lock-bucket \ --endpoint-url https://s3.twcstorage.ru \ --object-lock-enabled-for-bucket ``` Также можем создать бакет с холодным классом хранения: ```bash aws s3api create-bucket \ --bucket object-lock-bucket \ --endpoint-url https://s3.twcstorage.ru \ --create-bucket-configuration LocationConstraint=ru:ru-1-cold \ --object-lock-enabled-for-bucket ``` И с премиальным классом: ```bash aws s3api create-bucket \ --bucket object-lock-bucket \ --endpoint-url https://s3.twcstorage.ru \ --create-bucket-configuration LocationConstraint=ru:ru-1-standard-ia \ --object-lock-enabled-for-bucket ``` > [!NOTE] > Указать объем бакета при создании невозможно. При создании бакета через сторонние клиенты всегда устанавливается минимально возможный объем — 10 ГБ для стандартного класса хранения и 1 ГБ для холодного класса. После создания бакета объем [можно увеличить через панель управления](https://timeweb.cloud/docs/s3-storage/manage-storage/manage-buckets#smena-tarifa). Проверим, что Object Lock активен: ```bash aws s3api get-object-lock-configuration \ --bucket object-lock-bucket \ --endpoint-url https://s3.twcstorage.ru ``` Ответ будет таким: ```js { "ObjectLockConfiguration": { "ObjectLockEnabled": "Enabled" } } ``` Object Lock работает только с включенным версионированием. Убедимся, что оно активно: ```bash aws s3api get-bucket-versioning \ --bucket object-lock-bucket \ --endpoint-url https://s3.twcstorage.ru ``` В ответе отобразится статус версионирования: ```js { "Status": "Enabled", "MFADelete": "Disabled" } ``` ## Режимы Object Lock Object Lock поддерживает два режима блокировки объектов: временную блокировку (Retention Mode) и постоянную блокировку (Legal Hold). ### Временная блокировка Для временной блокировки доступны два режима: **COMPLIANCE** — строгий режим защиты. Объект и его версии нельзя удалить или изменить до окончания срока блокировки. Даже с правами администратора и специальными параметрами удалить данные невозможно. Этот режим подходит для сценариев, где критично обеспечить неизменность данных. **GOVERNANCE** — гибкий режим защиты. Объекты защищены от удаления и изменений, но пользователи с правами `BypassGovernanceRetention` могут удалить данные до истечения срока блокировки. Подходит для защиты от случайных удалений. Основной пользователь S3 создается с полными правами, включая `BypassGovernanceRetention`. Для дополнительных пользователей `BypassGovernanceRetention` активен для пользователей с [уровнем доступа «Управление»](https://timeweb.cloud/docs/s3-storage/manage-storage/additional-users#upravlenie). Для пользователей с уровнем доступа «Чтение» `BypassGovernanceRetention` можно включить вручную, задав полиси. Для этого создайте файл `s3-bypass.json`: ```js { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteObjectVersion", "s3:BypassGovernanceRetention" ], "Resource": "arn:aws:s3:::<имя_бакета>/*" } ] } ``` Вместо `<имя_бакета>` укажите имя вашего бакета. Примените полиси: ```bash aws iam put-user-policy \ --user-name <имя__дополнительного_пользователя> \ --policy-name allow-delete-with-bypass \ --policy-document file://s3-bypass.json \ --endpoint-url https://s3.twcstorage.ru ``` ### Постоянная блокировка **LEGAL HOLD** — гибкая блокировка без срока. Объект или его версию нельзя удалить, пока удержание не будет снято вручную. Блокировка не зависит от даты и действует бессрочно. ## Настройка Object Lock Для Object Lock можно задать настройки, которые будут использоваться по умолчанию для всех загружаемых объектов. Перейдите во вкладку «Настройки» и нажмите кнопку «Изменить» напротив пункта «Блокировка объектов включена». ![Image3](https://content.timeweb.com/assets/f13d220f-4efd-4f99-924e-6433363a686b.png?width=1998&height=1444) В открывшемся меню выберите режим блокировки: - **COMPLIANCE** - **GOVERNANCE** - **Без глобальной политики** — при выборе этого пункта для объектов не будет устанавливаться Object Lock без явной установки. Укажите период, в течение которого объект будет защищен. Эти настройки задают значения по умолчанию, но не мешают использовать другой режим и срок для отдельного объекта. ## Использование временных блокировок Рассмотрим примеры использования режимов **COMPLIANCE** и **GOVERNANCE**. COMPLIANCE Загрузим файл с блокировкой на 30 дней: ```bash aws s3api put-object \ --bucket object-lock-bucket \ --key compliance-file.txt \ --body compliance-file.txt \ --object-lock-mode COMPLIANCE \ --object-lock-retain-until-date "$(date -d '+30 days' --utc +%Y-%m-%dT%H:%M:%SZ)" \ --endpoint-url https://s3.twcstorage.ru ``` Описание параметров: - `--bucket` — имя бакета, в который загружается объект. - `--key` — имя (путь) объекта в бакете. - `--body` — путь к файлу, который загружается. - `--object-lock-mode` — режим блокировки. - `--object-lock-retain-until-date` — дата и время окончания блокировки в формате `YYYY-MM-DDTHH:MM:SSZ`. До этой даты объект защищен от удаления. Убедимся, что защита применена: ```bash aws s3api get-object-retention \ --bucket object-lock-bucket \ --key compliance-file.txt \ --endpoint-url https://s3.twcstorage.ru ``` В ответ получим подобный вывод: ```js { "Retention": { "Mode": "COMPLIANCE", "RetainUntilDate": "2025-04-04T10:02:21.000000000Z" } } ``` Попробуем удалить объект: ```bash aws s3api delete-object \ --bucket object-lock-bucket \ --key compliance-file.txt \ --endpoint-url https://s3.twcstorage.ru ``` При удалении файл пропадет из раздела «Объекты» в панели управления бакетом и не будет отображаться при просмотре в сторонних клиентах. При таком удалении создается маркер удаления, но сам объект остается в бакете. Проверим версии объекта: ```bash aws s3api list-object-versions \ --bucket object-lock-bucket \ --prefix compliance-file.txt \ --endpoint-url https://s3.twcstorage.ru ``` Мы увидим, что версия сохранена и для нее создан маркер. ![Image2](https://content.timeweb.com/assets/a90ab580-1f23-4672-9313-0a5410cc7233.png?width=781&height=558) Удаленную версию можно [восстановить по инструкции](https://timeweb.cloud/docs/s3-storage/supported-features/s3-object-versioning#vosstanovlenie-konkretnoj-versii-obekta). Удаление конкретной версии с активной блокировкой будет невозможно: ```bash aws s3api delete-object \ --bucket object-lock-bucket \ --key compliance-file.txt \ --version-id \ --endpoint-url https://s3.twcstorage.ru ``` До истечения срока блокировки команда вернет ошибку: ```shell An error occurred (AccessDenied) when calling the DeleteObject operation: forbidden by object lock ``` GOVERNANCE Загрузим файл с блокировкой на 30 дней: ```bash aws s3api put-object \ --bucket object-lock-bucket \ --key governance-file.txt \ --body governance-file.txt \ --object-lock-mode GOVERNANCE \ --object-lock-retain-until-date "$(date -d '+30 days' --utc +%Y-%m-%dT%H:%M:%SZ)" \ --endpoint-url https://s3.twcstorage.ru ``` Описание параметров: - `--bucket` — имя бакета, в который загружается объект. - `--key` — имя (путь) объекта в бакете. - `--body` — путь к файлу, который загружается. - `--object-lock-mode` — режим блокировки. - `--object-lock-retain-until-date` — дата и время окончания блокировки в формате `YYYY-MM-DDTHH:MM:SSZ`. До этой даты объект защищен от удаления. Убедимся, что защита применена: ```bash aws s3api get-object-retention \ --bucket object-lock-bucket \ --key governance-file.txt \ --endpoint-url https://s3.twcstorage.ru ``` В ответ получим подобный вывод: ```js { "Retention": { "Mode": "GOVERNANCE", "RetainUntilDate": "2025-04-04T10:07:44.000000000Z" } } ``` Попробуем удалить объект: ```bash aws s3api delete-object \ --bucket object-lock-bucket \ --key governance-file.txt \ --endpoint-url https://s3.twcstorage.ru ``` При удалении файл пропадет из раздела «Объекты» в панели управления бакетом и не будет отображаться при просмотре в сторонних клиентах. При таком удалении создается маркер удаления, но сам объект остается в бакете. Проверим версии объекта: ```bash aws s3api list-object-versions \ --bucket object-lock-bucket \ --prefix governance-file.txt \ --endpoint-url https://s3.twcstorage.ru ``` Мы увидим версию объекта и маркер удаления. ![Image5](https://content.timeweb.com/assets/6f88a2da-d589-433b-90d8-d80a20742150.png?width=766&height=558) Удаленную версию можно [восстановить по инструкции](https://timeweb.cloud/docs/s3-storage/supported-features/s3-object-versioning#vosstanovlenie-konkretnoj-versii-obekta). Полное удаление возможно только с указанием обхода блокировки при помощи параметра --`bypass-governance-retention`. Удаляем объект с обходом блокировки: ```bash aws s3api delete-object \ --bucket object-lock-bucket \ --key governance-file.txt \ --bypass-governance-retention \ --version-id \ --endpoint-url https://s3.twcstorage.ru ``` Теперь повторно проверим версии объекта: ```bash aws s3api list-object-versions \ --bucket object-lock-bucket \ --prefix governance-file.txt \ --endpoint-url https://s3.twcstorage.ru ``` Теперь отобразится только маркер удаления. ## Использование постоянной блокировки В отличие от временной блокировки `COMPLIANCE` и `GOVERNANCE`, `LegalHold` не требует указания срока и действует бессрочно. Объект остается защищенным до тех пор, пока блокировка не будет снята вручную. Это удобно в ситуациях, когда невозможно заранее определить срок хранения данных. Загрузим файл в бакет с включенным Object Lock: ```bash aws s3api put-object \ --bucket object-lock-bucket \ --key legalhold-file.txt \ --body legalhold-file.txt \ --endpoint-url https://s3.twcstorage.ru ``` После загрузки включим `LegalHold` для объекта: ```bash aws s3api put-object-legal-hold \ --bucket object-lock-bucket \ --key legalhold-file.txt \ --legal-hold "Status=ON" \ --endpoint-url https://s3.twcstorage.ru ``` Проверим статус блокировки: ```bash aws s3api get-object-legal-hold \ --bucket object-lock-bucket \ --key legalhold-file.txt \ --endpoint-url https://s3.twcstorage.ru ``` Ожидаемый вывод: ```js { "LegalHold": { "Status": "ON" } } ``` Попробуем удалить объект: ```bash aws s3api delete-object \ --bucket object-lock-bucket \ --key legalhold-file.txt \ --endpoint-url https://s3.twcstorage.ru ``` Результатом выполнения команды будет установка маркера: ```js { "DeleteMarker": true, "VersionId": "F1IzDfHkrhpMtWUZ7gUcnYPAE2xPQ7w" } ``` Проверим версии объекта: ```bash aws s3api list-object-versions \ --bucket object-lock-bucket \ --prefix legalhold-file.txt \ --endpoint-url https://s3.twcstorage.ru ``` Вы увидите версию и маркер удаления. ![Image4](https://content.timeweb.com/assets/d1e6a9a8-2612-47aa-a8e1-cacb8930bf94.png?width=1080&height=822) Удаленную версию можно [восстановить по инструкции](https://timeweb.cloud/docs/s3-storage/supported-features/s3-object-versioning#vosstanovlenie-konkretnoj-versii-obekta). Попробуем удалить конкретную версию: ```bash aws s3api delete-object \ --bucket object-lock-bucket \ --key legalhold-file.txt \ --version-id \ --endpoint-url https://s3.twcstorage.ru ``` Выполнение команды вызовет ошибку. Чтобы снять блокировку, выполните: ```bash aws s3api put-object-legal-hold \ --bucket object-lock-bucket \ --key legalhold-file.txt \ --legal-hold "Status=OFF" \ --endpoint-url https://s3.twcstorage.ru ``` После снятия блокировки версию объекта можно будет удалить. # Установка заголовков для объектов в S3 Source: https://timeweb.cloud/docs/s3-storage/supported-features/setting-headers-for-objects Рассмотрим, как можно установить заголовки для объектов в S3. Это полезно для управления кешированием, добавления пользовательских метаданных и оптимизации работы с данными в бакете. ## Установка заголовков через панель управления Для установки заголовков из панели управления перейдите в раздел «Объекты» в необходимом бакете. Наведите курсор на нужный файл, нажмите на три точки и выберите пункт «Изменить метаданные». ![Selection 139](https://content.timeweb.com/assets/ca5ee9f4-d9ae-41d5-9a71-befb5d01d4d1.png?width=792&height=881) Для добавления кастомного заголовка нажмите на кнопку «Добавить». ![Selection 140](https://content.timeweb.com/assets/5a6f8ea5-074c-473f-8880-7561fafa20c2.png?width=1037&height=894) ### Доступные параметры Можно настроить следующие параметры. #### Content-Type MIME-тип содержимого объекта. Определяет формат файла и используется клиентскими приложениями для его корректной обработки. Примеры значений: - `application/pdf` — PDF-документ; - `image/jpeg` — изображение JPEG; - `text/plain` — текстовый файл; - `application/json` — JSON-документ. Если указать неверное значение, браузер или приложение могут некорректно определить тип файла. #### Cache-Control Управляет кэшированием объекта браузерами, CDN и промежуточными прокси-серверами. Пример: `max-age=3600` В этом случае объект может храниться в кэше в течение 3600 секунд (1 часа) без повторного обращения к хранилищу. #### Content-Encoding Указывает способ кодирования содержимого объекта. Пример: `gzip` Используется для файлов, которые были сжаты перед загрузкой в хранилище. При получении объекта клиент может автоматически выполнить распаковку содержимого. #### Content-Disposition Определяет способ обработки файла при скачивании. Наиболее распространенные значения: - `attachment` — предложить пользователю скачать файл; - `inline` — попытаться открыть файл непосредственно в браузере. Например, для PDF-документов значение `inline` позволяет открыть документ во вкладке браузера, а инициирует его скачивание. #### Пользовательские метаданные (Metadata) Позволяют добавить произвольные пары «ключ — значение», связанные с объектом. Для добавления пользовательских метаданных нажмите «Добавить» и заполните поля: - Ключ — имя метаданных. Ключи пользовательских метаданных сохраняются с префиксом `x-amz-meta-`. - Значение — произвольное значение метаданных. Примеры: | **Ключ** | **Значение** | | --- | --- | | `project` | `website` | | `owner` | `marketing` | | `version` | `1.2` | К объекту можно добавить несколько пользовательских метаданных. Пользовательские метаданные не изменяют содержимое файла, но могут использоваться приложениями для хранения дополнительной информации об объекте, его классификации или обработки. ## Установка заголовков через командную строку Вы также можете установить заголовки с помощью командной строки, используя инструменты `[s3cmd](https://timeweb.cloud/docs/s3-storage/tools/s3cmd)` и `aws s3api`. ### Установка заголовка для одного объекта Чтобы установить заголовок для одного конкретного объекта, используйте команду `s3cmd modify`. Например, чтобы добавить заголовок `Cache-Control` для конкретного объекта: ```shell s3cmd modify s3://<имя_бакета>/<имя_объекта> --add-header="cache-control:max-age=7000" ``` В данном случае данный объект получит заголовок `Cache-Control` с параметром `max-age=7000`, что указывает браузеру или прокси-серверу кэшировать этот объект в течение `7000` секунд. ### Установка заголовков для всех объектов в бакете Если нужно установить заголовки для всех объектов в бакете, можно использовать опцию `--recursive`, чтобы применить изменения ко всем файлам: ```shell s3cmd modify --recursive s3://<имя_бакета> --add-header="cache-control:max-age=7001" ``` Эта команда рекурсивно добавит заголовок `Cache-Control` со значением `max-age=7001` ко всем объектам в указанном бакете. ### Создание кастомного заголовка Для добавления пользовательских заголовков можно воспользоваться командой `s3cmd modify` с указанием `x-amz-meta`: ```shell s3cmd modify s3://<имя_бакета>/<имя_объекта> --add-header="x-amz-meta-test-header:test" ``` Здесь создается кастомный заголовок `x-amz-meta-test-header` с значением `test`. При этом в метаданных объекта этот заголовок будет сохранен без префикса `x-amz-meta-`, то есть в результате получим: ```yml "Metadata": { "test-header": "test" } ``` Это позволяет хранить в объекте дополнительные данные, которые могут быть полезны для обработки или логирования. ### Проверка установленных заголовков Для проверки установленных заголовков можно воспользоваться командой `aws s3api head-object`. Это позволяет убедиться, что все заголовки и метаданные были успешно добавлены: ```shell aws s3api head-object --bucket <имя_бакета> --key <имя_объекта> --endpoint-url https://s3.twcstorage.ru ``` Команда вернет информацию об объекте, включая его метаданные и заголовки, что позволяет проверить, что все изменения были применены корректно. # Bucket Policies в S3 Source: https://timeweb.cloud/docs/s3-storage/supported-features/bucket-policies Возможности управления доступом к данным в хранилищах S3 позволяют гибко настраивать правила доступа для различных сценариев. Рассмотрим несколько полезных примеров настройки политик доступа для S3. ## Ограничение доступа только через SSL (HTTPS) Чтобы обезопасить передачу данных, можно ограничить доступ к бакету, разрешив только HTTPS-соединения. Это предотвращает попытки получить доступ через незащищенные HTTP-запросы, снижая риск компрометации данных. Создайте файл с политикой `ssl.json`: ```yml { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::<имя_бакета>/*", "Condition": { "Bool": { "aws:SecureTransport": "true" } } } ] } ``` Примените политику с помощью команды: ```shell aws s3api put-bucket-policy --bucket <имя_бакета> --policy file://ssl.json --endpoint-url https://s3.twcstorage.ru ``` Теперь, при попытке обращения по HTTP будет возникать ошибка 403. ## Ограничение доступа по IP-адресам Для дополнительной безопасности можно ограничить доступ к бакету только для определенных IP-адресов. Это может быть полезно, например, для защиты данных от несанкционированного доступа извне. Создайте файл с политикой `ip.json`: ```yml { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::<имя_бакета>/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "" ] } } } ] } ``` Примените политику с помощью команды: ```shell aws s3api put-bucket-policy --bucket <имя_бакета> --policy file://ip.json --endpoint-url https://s3.twcstorage.ru ``` ## Доступ только для конкретного префикса Если вам нужно дать доступ к определенным объектам в бакете, например, к файлам, находящимся в конкретном префиксе, можно использовать следующую политику. Она подойдет для приватного бакета, чтобы предоставить доступ только к определенным данным. Создайте файл с политикой `prefix.json`: ```yml { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<имя_бакета>/html/*" } ] } ``` Примените политику с помощью команды: ```shell aws s3api put-bucket-policy --bucket <имя_бакета> --policy file://prefix.json --endpoint-url https://s3.twcstorage.ru ``` Теперь все файлы из префикса `/html` будут доступны для чтения. # Мультипарт-загрузка Source: https://timeweb.cloud/docs/s3-storage/supported-features/multipart-upload Мультипарт-загрузка — это метод передачи больших файлов в S3-хранилище, при котором файл разбивается на части (чанки) и загружается параллельно. Это ускоряет процесс и повышает надежность: при сбое можно перезагрузить только поврежденную часть, а не весь файл. Такой подход удобен для работы с крупными файлами и при нестабильных сетевых соединениях. ## Преимущества мультипарт-загрузки 1. Ускорение передачи данных: Параллельная загрузка нескольких частей сокращает время, необходимое для передачи больших файлов. 2. Гибкость: Возможность приостановить и возобновить загрузку облегчает работу в условиях нестабильного соединения. 3. Устойчивость к сбоям: Ошибки при передаче отдельных частей легко устраняются повторной отправкой только этой части. > [!NOTE] > Прерванная мультипарт-загрузка занимает место в бакете. ## Отображение прерванных загрузок Прерванные мультипарт-сессии отображаются в панели управления в разделе «Мультипарт-сессии». ![Scr 20250807 Oqwj](https://content.timeweb.com/assets/0b083de8-868b-4464-bf94-66cd3b44f67f.png?width=1542&height=626) Нажав на три точки рядом с нужной загрузкой, вы можете: - **Завершить загрузку** — части будут склеены в один файл. Но его целостность не гарантируется, если загрузка была неполной. - **Отменить загрузку** — все части будут удалены и перестанут занимать место в бакете. ## Права доступа Дополнительный пользователь с правами «Чтение и запись» может выполнять все операции мультипарт-загрузки с объектами в бакете: - Создавать мультипарт-загрузку - Загружать части объекта - Получать информацию о мультипарт-загрузке - Завершать мультипарт-загрузку - Отменять мультипарт-загрузку Эти права позволяют загружать крупные объекты по частям и управлять незавершенными мультипарт-загрузками. При этом пользователь с правами «Чтение и запись» не получает доступ к управлению настройками бакета. ## Примеры использования Многие инструменты и библиотеки для работы с S3 поддерживают мультипарт-загрузку и предоставляют возможность настройки размера частей. Инструкции по работе с мультипарт-загрузкой для конкретных инструментов можно найти в следующих статьях: - [s3cmd](https://timeweb.cloud/docs/s3-storage/tools/s3cmd#sostavnaya-multipart-zagruzka) - [S3 Browser](https://timeweb.cloud/docs/s3-storage/tools/s3-browser#upravlenie-prervannymi-sostavnymi-multipart-zagruzkami) - [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli#sostavnaya-zagruzka) Эти инструменты предоставляют гибкие возможности по настройке процесса загрузки, что позволяет оптимизировать передачу данных в зависимости от ваших потребностей и параметров сети. # Presigned URL Source: https://timeweb.cloud/docs/s3-storage/supported-features/presigned-url Presigned URL в S3 позволяет временно предоставить доступ к объекту в хранилище без необходимости изменять права доступа на объект. Это удобный инструмент для скачивания файлов сторонними пользователями. В статье рассмотрим, как создать Presigned URL двумя способами: через панель управления и с использованием [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli). > [!NOTE] > Генерация Presigned URL невозможна при использовании [своего домена](https://timeweb.cloud/docs/s3-storage/manage-storage/link-domain). ## Через панель управления Генерация Presigned URL доступна только для приватных бакетов. Чтобы сгенерировать Presigned URL, перейдите в раздел «Объекты» в нужном бакете. Наведите курсор на объект, для которого требуется создать ссылку, и нажмите на кнопку «Ссылка на файл». ![Selection 143](https://content.timeweb.com/assets/e5d88a2a-b517-4aa3-b877-bb40762dd889.png?width=1047&height=646) Ссылка будет скопирована в буфер обмена и активна в течение 60 минут. После истечения этого времени при попытке перехода по ссылке будет возвращаться ошибка 403. В панели управления нельзя изменить продолжительность времени, на протяжении которого ссылка будет активна. Ссылку также можно сгенерировать для конкретной версии объекта, если в бакете [включено версионирование](https://timeweb.cloud/docs/s3-storage/supported-features/s3-object-versioning). Для этого откройте историю версий объекта и нажмите кнопку «Ссылка на файл» рядом с нужной версией. ![Scr 20250904 Qgda](https://content.timeweb.com/assets/e01cfa41-1559-4993-b032-d31ceafa6a61.png?width=2472&height=1526) ## Через AWS CLI Создать Presigned URL с помощью [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli) можно с помощью команды: ```shell aws s3 presign s3://<бакет>/<объект> --expires-in 60 --endpoint-url https://s3.twcstorage.ru ``` Параметр `--expires-in` необязателен. Он определяет время доступности объекта по ссылке в секундах. Если параметр не указан, объект будет доступен в течение 3600 секунд (1 час). Генерация Presigned URL для версии объекта, отличной от текущей, не поддерживается стандартными утилитами. Поэтому для создания ссылки на конкретную версию объекта можно воспользоваться самописными скриптами. Например, вы можете использовать следующий скрипт: ```py #!/usr/bin/env python3 import argparse import boto3 parser = argparse.ArgumentParser() parser.add_argument('--bucket', required=True) parser.add_argument('--key', required=True) parser.add_argument('--expires-in', type=int, default=3600) parser.add_argument('--version-id') parser.add_argument('--method', default='get_object') args = parser.parse_args() client = boto3.client('s3', endpoint_url='https://s3.twcstorage.ru') params = {'Bucket': args.bucket, 'Key': args.key} if args.version_id: params.update({'VersionId': args.version_id}) url = client.generate_presigned_url(args.method, Params=params, ExpiresIn=args.expires_in) print(url) ``` Скрипт запускается командой: ```bash python ./main.py --bucket имя_бакета --key имя_объекта --expires-in 6969 --version-id версия_объекта ``` Где: - `--expires-in` — время в секундах, через которое ссылка перестанет работать. - `--version-id` — версия объекта (`VersionId`), которую можно получить, например, с помощью AWS CLI. Данные для авторизации скрипт возьмет из файла `~/.aws/credentials`. ## Генерация Presigned URL до загрузки объекта Вы можете заранее сгенерировать ссылку для загрузки объекта — даже если сам объект еще не существует в бакете. Стандартные утилиты вроде AWS CLI не поддерживают генерацию Presigned URL для загрузки, однако это можно реализовать с помощью SDK. Например, через `boto3` для Python. Пример скрипта: ```py import boto3 from botocore.client import Config # Укажите ваши данные AWS_ACCESS_KEY_ID = 'S3 Access Key' AWS_SECRET_ACCESS_KEY = 'S3 Secret Access Key' BUCKET_NAME = 'Имя бакета' OBJECT_KEY = 'example.txt' # имя будущего объекта EXPIRES_IN = 3600 # срок действия ссылки в секундах s3 = boto3.client( 's3', endpoint_url='https://s3.twcstorage.ru', aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, config=Config(signature_version='s3v4'), region_name='ru-1' ) # Генерация presigned URL url = s3.generate_presigned_url( ClientMethod='put_object', Params={ 'Bucket': BUCKET_NAME, 'Key': OBJECT_KEY, }, ExpiresIn=EXPIRES_IN ) print(url) ``` Указывать `Content-Type` при генерации ссылки не нужно, так как его передача может привести к ошибке. В результате выполнения скрипта будет сгенерирована временная ссылка для загрузки объекта. Загрузить файл можно с помощью `curl`: ```shell curl -X PUT -T путь/до/загружаемого_файла.txt -H "Content-Type: text/plain" "ссылка_полученная_при_выполнении_скрипта" ``` # Настройка проксирования S3 через Nginx Source: https://timeweb.cloud/docs/s3-storage/supported-features/setting-up-s3-proxying Проксирование S3 через Nginx позволяет использовать ваш сервер в качестве посредника между клиентами и S3-хранилищем, предоставляя множество преимуществ. Вы можете скрыть прямой доступ к S3, обеспечить контроль кэширования для оптимизации трафика, настроить изменение заголовков для гибкой работы с запросами, а также ограничить доступ к контенту. Кроме того, прокси помогает объединить доступ к нескольким сервисам через единый домен, минимизировать затраты на трафик благодаря локальному кэшированию и вести детальное логирование запросов для анализа. ## Установка Nginx Для начала установим Nginx, если он ещё не установлен: ```shell sudo apt update sudo apt install nginx ``` После установки проверьте, что Nginx запущен, с помощью команды: ```shell sudo systemctl status nginx ``` Если сервис не запущен, активируйте его: ```shell sudo systemctl start nginx sudo systemctl enable nginx ``` ## Настройка доступа к бакету Для работы проксирования ваш бакет должен быть публичным или иметь настроенный доступ для IP-адреса вашего сервера. Чтобы открыть доступ к бакету с IP сервера, задайте политику бакета с помощью [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli). Для этого создайте файл `bucket-policy.json` с содержимым: ```js { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::имя_бакета/*", "Condition": { "IpAddress": { "aws:SourceIp": "IP_адрес_сервера" } } } ] } ``` Укажите параметры: - `имя_бакета` — имя вашего бакета. - `IP_адрес_сервера` — внешний IP-адрес вашего сервера. Примените политику к бакету: ```shell aws s3api put-bucket-policy --bucket имя_бакета --policy file://bucket-policy.json --endpoint-url https://s3.twcstorage.ru ``` Если нужно разрешить доступ нескольким IP-адресам, добавьте их в виде массива в поле `IpAddress`, например: ```js "IpAddress": { "aws:SourceIp": ["IP_адрес_1", "IP_адрес_2"] } ``` Теперь ваш бакет будет доступен только для указанных IP-адресов. ## Базовая настройка Создайте конфигурационный файл для проксирования. Например, создадим файл `s3_proxy.conf` в каталоге `/etc/nginx/sites-available`: ```shell sudo nano /etc/nginx/sites-available/s3_proxy.conf ``` Настройте конфигурацию следующим образом: ```shell server { listen 80; server_name ваш_домен; location / { proxy_pass https://s3.twcstorage.ru/имя_бакета/; proxy_set_header Host s3.twcstorage.ru; proxy_ssl_server_name on; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Authorization ""; proxy_hide_header x-amz-id-2; proxy_hide_header x-amz-request-id; proxy_hide_header Set-Cookie; add_header Cache-Control "public, max-age=3600"; expires 1h; } } ``` Сохраните файл и создайте символическую ссылку на него в каталоге `sites-enabled`: ```shell sudo ln -s /etc/nginx/sites-available/s3_proxy.conf /etc/nginx/sites-enabled/ ``` Проверьте конфигурацию на наличие ошибок: ```shell sudo nginx -t ``` Если ошибок нет, перезапустите Nginx: ```shell sudo systemctl restart nginx ``` Теперь файлы из бакета будут доступны по адресу `http://ваш_домен/имя_файла`. ## Установка SSL-сертификата для прокси Для повышения безопасности настройте HTTPS с помощью Certbot. Установите Certbot и плагин для Nginx: ```shell sudo apt install certbot python3-certbot-nginx ``` Сгенерируйте и установите сертификат: ```shell sudo certbot --nginx -d ваш_домен ``` Certbot автоматически обновит конфигурацию Nginx для работы по HTTPS. После успешного выполнения команда certbot активирует сертификат, и прокси начнёт работать через защищённое соединение. # Статические сайты в S3 Source: https://timeweb.cloud/docs/s3-storage/supported-features/static-websites С помощью S3-хранилища вы можете разместить статический сайт. Это удобно, например, для публикации документации, портфолио или лендинга. Сайт будет доступен по техническому адресу вида `имя_бакета.website.twcstorage.ru`. При необходимости к нему можно [подключить собственный домен](https://timeweb.cloud/docs/s3-storage/supported-features/static-websites#podkluchenie-sobstvennogo-domena) через CDN. ## Настройка Для размещения сайта: 1. Загрузите индексный файл в корень бакета — он не должен находиться внутри папки. 2. Остальные файлы (страницы, стили, скрипты, медиа-контент) могут располагаться в директориях. Пример структуры: ```shell index.html pages/ firstpage.html secondpage.html img/ 1.png 2.png css/ style.css js/ index.js 404.html 403.html ``` Файлы можно загрузить через [объектный менеджер](https://timeweb.cloud/docs/s3-storage/manage-storage/object-manager) или с помощью сторонних утилит, например, [Cyberduck](https://timeweb.cloud/docs/s3-storage/tools/cyberduck). После загрузки: 1. Перейдите в раздел «Настройки» бакета. 2. Нажмите кнопку «Настроить» рядом с пунктом «Веб-сайт». ![Настройка веб-сайта](https://content.timeweb.com/assets/a8d193a7-1de9-43ea-bfa4-e79f74be2501.png?width=2166&height=1876) В открывшемся окне: 1. Включите статический сайт. 2. При необходимости измените имя индексного файла (по умолчанию index.html). 3. Настройте отображение ошибок — выберите код ошибки (например, 404) и соответствующую страницу. 4. Сохраните изменения. ![Настройка веб-сайта](https://content.timeweb.com/assets/af89defc-cbd4-48ab-9d14-8ef95215fe32.png?width=2114&height=1528) ## Подключение собственного домена Собственный домен для статического сайта подключается через [CDN-ресурс](https://timeweb.cloud/docs/cdn). CDN будет получать контент с технического домена сайта и отдавать его через домены раздачи. Чтобы подключить домен: 1. Откройте настройки сайта и нажмите «Привязать собственный домен». Если вы впервые включили веб-сайт и кнопки нет, нажмите «Сохранить», вернитесь в настройки бакета и снова нажмите «Настроить» рядом с пунктом «Веб-сайт». ![Привязать собственный домен](https://content.timeweb.com/assets/8467b525-b4d3-4e83-a4e6-941288bb416b.png?width=2090&height=1496) 2. Ознакомьтесь с условиями тарификации и нажмите «Создать CDN-ресурс». После этого автоматически создастся CDN-ресурс и нему будет подключен сайт бакета в качестве источника контента. 3. После создания CDN-ресурса нажмите «Управлять доменами». ![Управлять доменами](https://content.timeweb.com/assets/d66a124f-44d2-48d2-a7eb-b02605ca6911.png?width=2018&height=1502) 4. В открывшемся окне в блоке «Домены раздачи» нажмите «Добавить домен». 5. Выберите существующий поддомен или укажите новый. В качестве собственного домена раздачи можно использовать только поддомен, например cdn.example.com. ![Добавление домена](https://content.timeweb.com/assets/b8737aff-e133-4dae-a678-8ec3681b3fa8.png?width=2732&height=1498) 5. Если поддомен обслуживается на наших NS-серверах, CNAME-запись обновится автоматически. В остальных случаях создайте CNAME-запись у DNS-провайдера и направьте поддомен на технический домен CDN-ресурса. 6. Нажмите «Сохранить». После сохранения и применения настроек DNS сайт станет доступен по добавленному домену раздачи. Обновление DNS может занять от 15–30 минут до 24 часов. Чтобы сайт открывался по HTTPS, [выпустите или добавьте SSL-сертификат](https://timeweb.cloud/docs/cdn/ssl) для подключенного домена. Домены также можно настраивать напрямую в CDN-ресурсе. Для этого перейдите в раздел «Сети» → «CDN», откройте созданный для сайта ресурс и выберите «Управление» → «Домены раздачи». Из настроек бакета перейти к этим же параметрам можно по кнопке «Управлять доменами ресурса». К CDN-ресурсу можно подключить до двух собственных доменов. Технический домен CDN создается автоматически — его нельзя изменить или удалить. ## Ограничения - Для работы сайта бакет должен быть публичным. Если сделать его непубличным, страницы начнут возвращать ошибку 403. - При обращении к сайту по техническому домену [исходящий трафик тарифицируется](https://timeweb.cloud/docs/s3-storage/tariffication) так же, как и при обычной работе с S3. # Сценарии использования Source: https://timeweb.cloud/docs/s3-storage/use-cases Существует множество сценариев использования S3-хранилищ, которые облегчают задачи по хранению и резервному копированию данных. Примеры настройки нескольких популярных вариантов: - [Резервное копирование с Duplicity](https://timeweb.cloud/docs/s3-storage/use-cases/rezervnoe-kopirovanie-s-duplicity) - [Резервное копирование Bitrix в S3](https://timeweb.cloud/docs/s3-storage/use-cases/rezervnoe-kopirovanie-bitrix-v-s3) - [Резервное копирование в ISPmanager](https://timeweb.cloud/docs/s3-storage/use-cases/ispmanager-backups) - [Подключение S3-хранилища в Nextcloud](https://timeweb.cloud/docs/s3-storage/use-cases/connecting-s3-storage-in-nextcloud) # Резервное копирование с Duplicity Source: https://timeweb.cloud/docs/s3-storage/use-cases/rezervnoe-kopirovanie-s-duplicity Duplicity — это утилита командной строки для резервного копирования и восстановления. Резервные копии могут быть загружены в хранилище по протоколам SCP, SFTP, WebDAV, S3 и др. Утилита по умолчанию шифрует бэкапы с помощью GnuPG. Ниже рассмотрим настройку duplicity для резервного копирования в объектное хранилище Timeweb Cloud по протоколу S3. ## Подготовка Создайте для размещения резервных копий отдельный бакет. Установите пакет `duplicity`: ```shell sudo apt install duplicity ``` И установите пакет `boto`: ```shell pip3 install boto ``` ## Скрипт для создания резервной копии Создайте файл `backup.sh` со следующим содержимым и замените значения переменных на актуальные. Найти необходимые данные можно в панели управления в настройках бакета. ```bash #!/usr/bin/env bash export AWS_ACCESS_KEY_ID="S3 Access Key" export AWS_SECRET_ACCESS_KEY="S3 Secret Access Key" export PASSPHRASE="пароль_для_шифрования_бэкапа" endpoint_url="https://s3.twcstorage.ru" endpoint_host="s3.twcstorage.ru" # Путь до директории, которую необходимо копировать source=/home # Имя бакета и путь внутри него bucket=имя_бакета path_in_bucket=backup # Запуск duplicity duplicity \ --s3-endpoint-url="$endpoint_url" \ "$source" "s3://$endpoint_host/$bucket/$path_in_bucket" ``` Дайте скрипту права на выполнение командой: ```shell chmod +x backup.sh ``` Запустите скрипт: ```shell ./backup.sh ``` ## Скрипт для восстановления из резервной копии Для восстановления файлов из бэкапа также можно использовать скрипт. Создайте файл `restore.sh` со следующим содержимым: ```bash #!/usr/bin/env bash export AWS_ACCESS_KEY_ID="S3 Access Key" export AWS_SECRET_ACCESS_KEY="S3 Secret Access Key" export PASSPHRASE="пароль_для_шифрования_бэкапа" endpoint_url="https://s3.twcstorage.ru" endpoint_host="s3.twcstorage.ru" bucket=имя_бакета path_in_bucket=backup restore_path=/home/restore_test # сюда восстановим данные duplicity \ --s3-endpoint-url="$endpoint_url" \ "s3://$endpoint_host/$bucket/$path_in_bucket" \ "$restore_path" ``` Дайте скрипту права на выполнение: ```shell chmod +x restore.sh ``` Запустите скрипт: ```shell ./restore.sh ``` # Резервное копирование Bitrix в S3 Source: https://timeweb.cloud/docs/s3-storage/use-cases/rezervnoe-kopirovanie-bitrix-v-s3 > [!NOTE] > Для корректного создания резервных копий в S3 у вас должен быть установлен модуль «Облачные хранилища» v23.200.0 или выше. Использование S3 для резервного копирования в Битрикс позволяет размещать данные в облаке и легко восстанавливать их при необходимости. Это удобно, потому что S3-хранилища интегрируются с Битрикс напрямую, обеспечивая автоматизацию процесса и сокращая риски потери данных. Рассмотрим, как настроить резервное копирование в S3-бакет. ## Подключение S3-хранилища 1. Создайте новый бакет по [инструкции](https://timeweb.cloud/docs/s3-storage/manage-storage#sozdanie-baketa). 2. В админке Битрикса перейдите в раздел «Настройки» → «Облачные хранилища» и нажмите на кнопку «Добавить». 3. В меню добавления укажите следующие параметры: - - **Провайдер:** S3 Compatible Storage. - **Имя сервера (API host):** `s3.twcstorage.ru`. Имя сервера указывается без префикса `https://`. - **Ключ доступа:** `Access Key` со страницы управления бакетом. - **Секретный ключ:** `Secret Access Key` со страницы управления бакетом. - **Подключаться с использованием HTTPS:** установите галочку. - **Контейнер:** укажите имя бакета. ![Selection 256](https://content.timeweb.com/assets/9376e90e-8728-446c-84a9-54dc90c63353.png?width=1023&height=962) У вас должен получиться такой результат: ![Screenshot 04 17 25 18:13:01](https://content.timeweb.com/assets/05305b4f-9e3c-40a4-a428-2b467c4349fb.png?width=1591&height=735) _Настройка подключения к облачному хранилищу в интерфейсе [Битрикс](https://www.1c-bitrix.ru/)_ Перейдите в раздел «Правила» и удалите пустое правило. ![Selection 257](https://content.timeweb.com/assets/d251f868-1c93-4e7e-8de5-3aff6c6e3391.png?width=1598&height=670) _Настройка подключения к облачному хранилищу в интерфейсе [Битрикс](https://www.1c-bitrix.ru/)_ Это необходимо, чтобы в бакет не загружались другие файлы, кроме бэкапов. После этого нажмите на кнопку «Сохранить». 4. После настройки подключенное хранилище отобразится в разделе «Настройки» → «Облачные хранилища». ![Screenshot 09 18 24 11:44:29](https://content.timeweb.com/assets/6d73528e-e19b-4256-a831-12913b4a0726.png?width=1911&height=514) _Раздел «Облачные хранилища» в интерфейсе [Битрикс](https://www.1c-bitrix.ru/)_ ## Создание резервной копии Для проверки, что все работает правильно, создайте резервную копию вручную: 1. Перейдите в «Настройки» → «Инструменты» → «Резервное копирование» → «Создание резервной копии». 2. В пункте «Размещение резервной копии» выберите добавленный бакет. 3. Запустите создание копии, нажав на кнопку «Создать резервную копию». ![Screenshot 09 17 24 17:26:30](https://content.timeweb.com/assets/fb247ce3-7da3-4aa4-b4fb-6a92d1aa35d2.png?width=1910&height=856) _Запуск резервного копирования в интерфейсе [Битрикс](https://www.1c-bitrix.ru/)_ 4. После завершения создания копии в панели управления бакетом перейдите во вкладку «Объекты» и проверьте, что копия успешно создана и сохранена в папке «bitrix». ![Screenshot 09 18 24 16:33:09](https://content.timeweb.com/assets/47ad7564-7625-4ac7-9cc5-aef6eeaa2eb4.png?width=1321&height=711) ## Настройка регулярных резервных копий Вы можете настроить создание регулярных резервных копий. Для этого: 1. Перейдите в раздел «Настройки» → «Инструменты» → «Резервное копирование» → «Регулярное резервное копирование». 2. Выберите вкладку «Параметры» и в пункте «Размещение резервной копии» укажите добавленный ранее бакет. 3. Заполните остальные параметры, включая расписание создания бэкапов, ориентируясь на [официальную документацию](https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=35&LESSON_ID=4464&LESSON_PATH=3906.4833.4464). 4. После завершения настройки сохраните изменения. Теперь бэкапы будут создаваться автоматически и загружаться в выбранный бакет. ![Screenshot 09 18 24 16:56:47](https://content.timeweb.com/assets/bf771b76-9bcf-4e02-be90-82d063ce10e1.png?width=1596&height=947) _Настройка регулярных резервных копий в интерфейсе [Битрикс](https://www.1c-bitrix.ru/)_ ## Настройка срока хранения резервных копий Если вы настроили регулярное резервное копирование, со временем копии будут накапливаться в бакете и занимать все больше пространства. Чтобы не удалять устаревшие копии вручную, настройте [жизненный цикл объектов](https://timeweb.cloud/docs/s3-storage/supported-features/object-lifecycle). Он позволяет автоматически удалять резервные копии по истечении заданного срока. > [!NOTE] > Правило удаляет объекты по возрасту, даже если новые резервные копии перестали создаваться. Выбирайте срок хранения с запасом и периодически проверяйте успешность резервного копирования. Для настройки правила: 1. Откройте панель управления S3-бакетом и перейдите на вкладку «Настройки». 2. В строке «Жизненный цикл» нажмите «Настроить». 3. Нажмите «Добавить правило». 4. В поле «Префикс объекта» укажите `bitrix/backup/`. Правило будет применяться только к резервным копиям, которые Битрикс сохраняет в этой папке. 5. Выберите действие «Удалить объекты» и укажите срок хранения в днях. 6. Сохраните правило. ![Scr 20260807 Olvp](https://content.timeweb.com/assets/50636f9b-8271-4370-9346-34f68e3295bc.png?width=2744&height=1636) Например, если резервные копии создаются ежедневно, а хранить необходимо копии за последние 30 дней, укажите срок удаления 30 дней. После сохранения правила объекты из папки `bitrix/backup/` будут автоматически удаляться по истечении заданного срока. Просмотреть, изменить или временно отключить правило можно в настройках жизненного цикла бакета. ## Восстановление из резервной копии Для восстановления из резервной копии перейдите в «Настройки» → «Инструменты» → «Резервное копирование» → «Список резервных копий», нажмите на кнопку с тремя черточками рядом с необходимой копией. В открывшемся меню выберите пункт «Восстановить». ![Screenshot 09 18 24 12:02:15](https://content.timeweb.com/assets/ef671259-0d13-4e10-9961-5577cd0a19b5.png?width=1905&height=848) _Просмотр резервных копий и опция восстановления в интерфейсе [Битрикс](https://www.1c-bitrix.ru/)_ После этого запустится мастер восстановления из резервных копий. В меню мастера выберите пункт «Скачать резервную копию с другого сайта», где по умолчанию будет указана ссылка на бакет. После скачивания и распаковки архива, при необходимости, выполните восстановление базы данных. Более подробную информацию о процессе восстановления из резервной копии вы можете найти в [официальной документации Битрикс](https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=35&LESSON_ID=6979&LESSON_PATH=3906.4833.6979). # Резервное копирование ispmanager в S3 Source: https://timeweb.cloud/docs/s3-storage/use-cases/ispmanager-backups Использование S3-хранилища для создания резервных копий в ispmanager — это удобный способ хранения данных вне сервера. S3 обеспечивает высокую доступность и безопасность, позволяя настраивать резервное копирование под нужды вашего проекта. В данной инструкции мы пошагово разберем, как подключить S3 в ispmanager и настроить создание резервных копий. Для начала перейдите в раздел «Резервные копии» и нажмите на кнопку «Настройки». ![Selection 019](https://content.timeweb.com/assets/0c8ac2ef-0e44-4a8c-84de-5f6a04391761.png?width=1479&height=808) _Раздел «Резервные копии» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ ## Настройка параметров S3 - В разделе «Тип хранилища» выберите «S3-совместимое». - В поле «URL хранилища» укажите: `https://s3.twcstorage.ru`. - В поле «Идентификатор ключа» укажите ваш `Access Key`. - В поле «Секретный ключ» укажите ваш `Secret Access Key`. - В поле «Корзина» выберите имя вашего бакета. - Поставьте галочку напротив «Автоматически определять регион корзины», чтобы система самостоятельно определяла нужный регион. Необходимые данные вы можете получить на странице «Дашборд». ![Selection 046](https://content.timeweb.com/assets/1640b4c1-ed86-48fe-99fa-a44c289f0b80.png?width=1045&height=962) После указания всех параметров у вас должен получиться подобный результат: ![Selection 027](https://content.timeweb.com/assets/2aca08c7-852f-4d53-acc4-9c02f6650d4e.png?width=1479&height=808) _Пример настройки резервного копирования в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ ## Настройка расширенных параметров Вы можете настроить дополнительные параметры резервного копирования, перейдя в «Расширенные настройки», где можно задать дополнительные параметры резервного копирования, например: - Исключить из резервной копии определенные директории или файлы. - Задать количество копий, которые будут храниться одновременно. - Указать ограничение на общий объем хранилища, используемого для копий. ![Selection 022](https://content.timeweb.com/assets/a5ebaa59-ee88-482b-8765-ac5ed088ff6b.png?width=1474&height=808) _Пример настройки резервного копирования в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ После настройки всех параметров нажмите «Сохранить», чтобы применить изменения. ## Проверка создания резервной копии Чтобы проверить правильность настроек, создайте тестовую копию. В разделе «Резервные копии» нажмите на «Создать копию» и выберите «Копия системных файлов и данных пользователей». После завершения создания копии перейдите в панель управления бакетом и убедитесь, что архивы копий успешно появились во вкладке «Объекты». ![Selection 024](https://content.timeweb.com/assets/e1a4c071-ca0c-464c-a88c-a30f49f1e118.png?width=1027&height=562) ## Настройка расписания создания копий После проверки резервного копирования можно настроить автоматическое создание копий по расписанию. Для этого перейдите в раздел «Расписание» в настройках резервных копий и укажите желаемые параметры создания копий. ![Selection 025](https://content.timeweb.com/assets/c29fd8d2-72da-4b50-979b-d16a46b78741.png?width=1476&height=807) _Настройка расписания резервного копирования в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Теперь ваш сервер настроен на регулярное резервное копирование данных в S3-хранилище, что обеспечит надежное и безопасное хранение ваших данных. # Подключение S3-хранилища в Nextcloud Source: https://timeweb.cloud/docs/s3-storage/use-cases/connecting-s3-storage-in-nextcloud Использование S3-хранилища в Nextcloud в качестве внешнего хранилища позволяет хранить файлы в облаке и получать быстрый доступ к ним. Такая интеграция снижает риски потери данных и уменьшает нагрузку на локальный сервер. В этой статье мы рассмотрим, как настроить подключение S3-хранилища к Nextcloud. ## Подключение S3-хранилища 1. Войдите в Nextcloud под учетной записью администратора. 2. Активируйте поддержку внешних хранилищ: - - Перейдите в раздел «Приложения», затем во вкладку «Ваши приложения». ![Image1](https://content.timeweb.com/assets/f8ce4f3b-cb2e-4411-83d5-bddc0b2372bd.png?width=1474&height=805) _Раздел «Ваши приложения» в интерфейсе [Nextcloud](https://nextcloud.com/)_ - - Найдите в списке расширение «External storage support» и включите его, нажав кнопку «Включить». 3. Настройте подключение S3: - - Перейдите в раздел «Параметры сервера» и выберите вкладку «Внешнее хранилище». ![Image5](https://content.timeweb.com/assets/e22cf810-2fd6-4dde-9cb9-a5e4dd8b8a45.png?width=1376&height=805) _Раздел «Внешнее хранилище» в интерфейсе [Nextcloud](https://nextcloud.com/)_ - - В столбце «Добавить хранилище» выберите «Amazon S3», а в поле «Аутентификация» выберите «Ключ доступа». 4. Заполните настройки конфигурации: - - **Имя папки:** укажите имя, которое будет отображаться в файловом менеджере Nextcloud. - **Корзина:** введите имя вашего бакета. - **Имя хоста:** укажите `s3.twcstorage.ru`, без префикса `https://`. - **Порт:** оставьте это поле пустым. - **Регион:** укажите `ru-1`. - **Ключ доступа:** введите `Access Key`, полученный на странице управления бакетом. - **Секретный ключ:** введите `Secret Access Key` со страницы управления бакетом. - **Использовать SSL:** убедитесь, что галочка установлена. - Остальные параметры оставьте по умолчанию. ![Selection 049](https://content.timeweb.com/assets/c9c13f72-2dae-4570-8ed0-0c503c720f92.png?width=1074&height=953) 5. Настройте доступ для пользователей: - - В столбце «Доступно для» выберите нужных пользователей или группы, либо установите галочку «Все пользователи». 6. Сохраните изменения, нажав на кнопку «Сохранить». ![Image3](https://content.timeweb.com/assets/8c9c6345-bea3-4cbe-ba25-a6ea8ddb7027.png?width=1476&height=806) _Раздел «Внешнее хранилище» в интерфейсе [Nextcloud](https://nextcloud.com/)_ Теперь подключенное S3-хранилище будет отображаться в файловом менеджере Nextcloud. ![Image4](https://content.timeweb.com/assets/6c47021a-ce6b-443d-947e-1ceb9f6e039f.png?width=1028&height=504) _Раздел «Все файлы» в интерфейсе [Nextcloud](https://nextcloud.com/)_ ## Проверка корректности настроек Для проверки корректности настроек загрузите любой файл в подключенную папку и убедитесь, что этот файл появился в бакете во вкладке «Объекты» в панели управления бакетом. ![Image2](https://content.timeweb.com/assets/129b090f-0841-4ae9-98df-b9485620e7a3.png?width=1030&height=508) На скриншоте видно, что тестовый файл отображается в бакете, что подтверждает правильность настройки подключения. # SDK для S3 Source: https://timeweb.cloud/docs/s3-storage/sdk SDK для S3 — это библиотеки для работы с объектным хранилищем напрямую из кода. С помощью SDK можно выполнить все те же действия, что и с помощью консольных клиентов S3, например загрузку и скачивание файлов, получение списка объектов, удаление и генерацию подписанных ссылок. В этом разделе собраны примеры использования SDK на разных языках программирования: - [Python](https://timeweb.cloud/docs/s3-storage/sdk/python) - [Node.js](https://timeweb.cloud/docs/s3-storage/sdk/javascript) - [PHP](https://timeweb.cloud/docs/s3-storage/sdk/php) # Python Source: https://timeweb.cloud/docs/s3-storage/sdk/python [boto3](https://pypi.org/project/boto3/) — это официальный SDK от Amazon для работы с S3 на языке Python. С его помощью можно управлять объектами: загружать и скачивать файлы, получать списки объектов, работать с метаданными, выполнять мультипарт-загрузку и создавать подписанные URL. ## Установка Для установки `boto3` используйте `pip`: ```bash pip install boto3 ``` После установки библиотека доступна для использования в Python-коде. ## Настройка доступа При использовании `boto3` реквизиты доступа можно задать несколькими способами: ### Через файлы ~/.aws/config и ~/.aws/credentials При использовании [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli) в домашней директории пользователя автоматически создается папка .aws с файлами, содержащими данные для подключения к S3. При необходимости эту папку и файлы можно создать вручную — без использования AWS CLI. Файл `~/.aws/credentials` должен содержать такие данные: ```bash [default] aws_access_key_id = aws_secret_access_key = ``` И `~/.aws/config`: ```bash [default] output = json endpoint_url = https://s3.twcstorage.ru region = ru-1 ``` При использовании профиля `default` дополнительная настройка в коде не требуется — `boto3` автоматически подхватит эти данные. ### Через переменные окружения Реквизиты доступа можно задать с помощью переменных окружения: ```bash export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= ``` ### Через код приложения Реквизиты можно передать напрямую при создании клиента S3: ```py import boto3 s3 = boto3.client( "s3", aws_access_key_id="", aws_secret_access_key="", endpoint_url="https://s3.twcstorage.ru", region_name="ru-1" ) ``` Этот способ не рекомендуется для продакшена, так как ключи доступа хранятся непосредственно в коде. ### Использование отдельных профилей Если в файлах `~/.aws/config` и `~/.aws/credentials` настроено несколько профилей, можно явно указать нужный профиль при создании сессии: ```py import boto3 session = boto3.Session(profile_name="myprofile") s3 = session.client("s3") ``` Это удобно, если один и тот же код используется для работы с несколькими бакетами или окружениями. ## Пример Рассмотрим, как при помощи SDK выполнять базовые операции с объектами. В этом примере скрипт: - загружает файл в бакет; - выводит список всех объектов; - скачивает загруженный файл под другим именем; - удаляет объект из хранилища. Предварительно создайте файл с именем `example.txt` в той же директории, где находится скрипт. Код скрипта: ```py import boto3 import os bucket_name = "имя_бакета" endpoint_url = "https://s3.twcstorage.ru" local_upload_path = "example.txt" s3_key = "example.txt" local_download_path = "downloaded_example.txt" # Создание клиента S3 s3 = boto3.client("s3", endpoint_url=endpoint_url) # 1. Загрузка файла в бакет if os.path.exists(local_upload_path): print(f"Загрузка файла {local_upload_path} в бакет...") s3.upload_file(local_upload_path, bucket_name, s3_key) print("Загрузка завершена.") else: print(f"Файл {local_upload_path} не найден. Пропуск загрузки.") # 2. Получение списка объектов в бакете print("\nСодержимое бакета:") paginator = s3.get_paginator("list_objects_v2") for page in paginator.paginate(Bucket=bucket_name): for obj in page.get("Contents", []): print(f"- {obj['Key']}") # 3. Скачивание файла из бакета print(f"\nСкачивание {s3_key} в {local_download_path}...") s3.download_file(bucket_name, s3_key, local_download_path) print("Скачивание завершено.") # 4. Удаление файла из бакета print(f"\nУдаление {s3_key} из бакета...") s3.delete_object(Bucket=bucket_name, Key=s3_key) print("Удаление завершено.") ``` Дополнительные примеры использования SDK вы можете найти в [нашем репозитории GitHub](https://github.com/timeweb-cloud/s3-examples/tree/master/python3). # JavaScript Source: https://timeweb.cloud/docs/s3-storage/sdk/javascript `[@aws-sdk/client-s3](https://www.npmjs.com/package/@aws-sdk/client-s3)` — это официальная библиотека AWS SDK для работы с сервисом S3 на языке JavaScript. С ее помощью можно загружать и скачивать файлы, получать списки объектов, удалять их, использовать мультипарт-загрузку и формировать подписанные ссылки. ## Установка Для установки используйте `npm` или `yarn`: ``` npm install @aws-sdk/client-s3 ``` или ``` yarn add @aws-sdk/client-s3 ``` ## Настройка доступа При использовании `@aws-sdk/client-s3` реквизиты доступа можно задать несколькими способами. ### Через файлы `~/.aws/config` и `~/.aws/credentials` При использовании [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli) в домашней директории пользователя автоматически создается папка `.aws` с файлами, содержащими данные для подключения к S3. При необходимости эту папку и файлы можно создать вручную — без использования AWS CLI. Файл `~/.aws/credentials` должен содержать такие данные: ``` [default] aws_access_key_id = aws_secret_access_key = ``` И `~/.aws/config`: ``` [default] output = json endpoint_url = https://s3.twcstorage.ru region = ru-1 ``` ### Через переменные окружения Реквизиты можно задать с помощью переменных окружения: ``` export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= ``` ### Через код приложения Полная настройка клиента с явной передачей всех параметров: ```js const { S3Client } = require("@aws-sdk/client-s3"); const s3 = new S3Client({ region: "ru-1", endpoint: "https://s3.twcstorage.ru", credentials: { accessKeyId: "", secretAccessKey: "" } }); ``` ### Использование профиля AWS CLI Если настроено несколько профилей, можно указать нужный через переменную окружения: ``` export AWS_PROFILE=myprofile ``` В этом случае можно создать клиента без передачи ключей: ```js const s3 = new S3Client({ region: "ru-1", endpoint: "https://s3.twcstorage.ru" }); ``` ## Пример Рассмотрим, как при помощи SDK выполнять базовые операции с объектами. В этом примере скрипт: - загружает файл в бакет; - выводит список всех объектов; - скачивает загруженный файл под другим именем; - удаляет объект из хранилища. Предварительно создайте файл с именем `example.txt` в той же директории, где находится скрипт. Код скрипта: ```js const { S3Client, ListObjectsV2Command, PutObjectCommand, GetObjectCommand, DeleteObjectCommand } = require("@aws-sdk/client-s3"); const { createReadStream, createWriteStream, existsSync } = require("fs"); const { pipeline } = require("stream"); const { promisify } = require("util"); const pipe = promisify(pipeline); const bucketName = "имя_бакета"; const region = "ru-1"; const endpoint = "https://s3.twcstorage.ru"; const localUploadPath = "example.txt"; const s3Key = "example.txt"; const localDownloadPath = "downloaded_example.txt"; // Создание клиента S3 const s3 = new S3Client({ region, endpoint, }); async function main() { // 1. Загрузка файла if (existsSync(localUploadPath)) { console.log(`Загрузка файла ${localUploadPath} в бакет...`); await s3.send(new PutObjectCommand({ Bucket: bucketName, Key: s3Key, Body: createReadStream(localUploadPath), })); console.log("Загрузка завершена."); } else { console.log(`Файл ${localUploadPath} не найден. Пропуск загрузки.`); } // 2. Список объектов console.log("\nСодержимое бакета:"); const list = await s3.send(new ListObjectsV2Command({ Bucket: bucketName })); (list.Contents || []).forEach((obj) => { console.log(`- ${obj.Key}`); }); // 3. Скачивание console.log(`\nСкачивание ${s3Key} в ${localDownloadPath}...`); const { Body } = await s3.send(new GetObjectCommand({ Bucket: bucketName, Key: s3Key, })); if (Body) { await pipe(Body, createWriteStream(localDownloadPath)); console.log("Скачивание завершено."); } // 4. Удаление console.log(`\nУдаление ${s3Key} из бакета...`); await s3.send(new DeleteObjectCommand({ Bucket: bucketName, Key: s3Key })); console.log("Удаление завершено."); } main().catch((err) => { console.error("Ошибка при выполнении операций:", err); }); ``` Дополнительные примеры использования SDK вы можете найти в [нашем репозитории GitHub](https://github.com/timeweb-cloud/s3-examples/tree/master/nodejs). # PHP Source: https://timeweb.cloud/docs/s3-storage/sdk/php `[aws/aws-sdk-php](https://github.com/aws/aws-sdk-php)` — это официальный SDK от Amazon для работы с S3 на языке PHP. Он позволяет выполнять базовые операции с объектами в S3: загрузку, скачивание, удаление, вывод списка объектов, а также формирование подписанных ссылок. ## Установка Установите библиотеку с помощью Composer: ``` composer require aws/aws-sdk-php ``` После установки библиотека будет расположена в директории `vendor`. Для ее использования подключите библиотеку: ```php require 'vendor/autoload.php'; ``` Для корректной работы SDK требуется установленный PHP-модуль `ext-xml`. Проверьте наличие модуля командой: ``` php -m | grep xml ``` Если модуль не установлен, установите его: - Debian/Ubuntu: `sudo apt install php-xml` - Alpine: `apk add php8-xml` - RHEL/CentOS: `sudo yum install php-xml` ## Настройка доступа Реквизиты доступа можно задать несколькими способами. ### Через файлы `~/.aws/config` и `~/.aws/credentials` При использовании [AWS CLI](https://timeweb.cloud/docs/s3-storage/tools/aws-cli) в домашней директории пользователя автоматически создается папка `.aws` с файлами, содержащими данные для подключения к S3. При необходимости эту папку и файлы можно создать вручную — без использования AWS CLI. Файл `~/.aws/credentials` должен содержать такие данные: ``` [default] aws_access_key_id = aws_secret_access_key = ``` И `~/.aws/config`: ``` [default] output = json endpoint_url = https://s3.twcstorage.ru region = ru-1 ``` ### Через переменные окружения Можно задать переменные: ``` export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= ``` И использовать SDK без дополнительной настройки: ```php $s3 = new Aws\S3\S3Client([ 'region' => 'ru-1', 'version' => 'latest', 'endpoint' => 'https://s3.twcstorage.ru', ]); ``` ### Через код Можно явно задать реквизиты при создании клиента: ```php use Aws\S3\S3Client; $s3 = new S3Client([ 'region' => 'ru-1', 'version' => 'latest', 'endpoint' => 'https://s3.twcstorage.ru', 'credentials' => [ 'key' => '', 'secret' => '', ], ]); ``` ### Использование другого профиля AWS CLI Если в `~/.aws/credentials` настроено несколько профилей, можно указать нужный: ```php $s3 = new S3Client([ 'profile' => 'myprofile', 'region' => 'ru-1', 'version' => 'latest', 'endpoint' => 'https://s3.twcstorage.ru', ]); ``` ## Пример Пример ниже демонстрирует базовые операции с объектами: - загрузка файла в бакет; - вывод списка объектов; - скачивание файла; - удаление объекта. Предварительно создайте файл с именем `example.txt` в той же директории, где находится скрипт. Код скрипта: ```php 'ru-1', 'version' => 'latest', 'endpoint' => 'https://s3.twcstorage.ru', 'credentials' => [ 'key' => '', 'secret' => '', ], ]); try { // 1. Загрузка файла в бакет if (file_exists($localUpload)) { echo "Загрузка файла $localUpload...\n"; $s3->putObject([ 'Bucket' => $bucket, 'Key' => $key, 'SourceFile' => $localUpload, ]); echo "Загрузка завершена.\n"; } else { echo "Файл $localUpload не найден. Пропуск загрузки.\n"; } // 2. Получение списка объектов echo "\nСодержимое бакета:\n"; $result = $s3->listObjectsV2([ 'Bucket' => $bucket, ]); if (!empty($result['Contents'])) { foreach ($result['Contents'] as $object) { echo "- {$object['Key']}\n"; } } else { echo "(Бакет пустой)\n"; } // 3. Скачивание файла echo "\nСкачивание $key в $localDownload...\n"; $s3->getObject([ 'Bucket' => $bucket, 'Key' => $key, 'SaveAs' => $localDownload, ]); echo "Скачивание завершено.\n"; // 4. Удаление файла echo "\nУдаление $key из бакета...\n"; $s3->deleteObject([ 'Bucket' => $bucket, 'Key' => $key, ]); echo "Удаление завершено.\n"; } catch (AwsException $e) { echo "Ошибка: {$e->getMessage()}\n"; } ``` Дополнительные примеры использования SDK вы можете найти в [нашем репозитории GitHub](https://github.com/timeweb-cloud/s3-examples/tree/master/php). # Кластеры Kubernetes Source: https://timeweb.cloud/docs/k8s [Kubernetes](https://timeweb.cloud/services/k8s) — программное обеспечение с открытым исходным кодом, предназначенное для автоматизированного управления контейнерными приложениями. Kubernetes обеспечит автоматическое развертывание, масштабирование, распределение нагрузки, мониторинг сервисов, обработку ошибок и многое другое. Заказать сервис можно в панели [timeweb.cloud/my](https://timeweb.cloud/my/kubernetes/). ## Возможности Kubernetes Использование Kubernetes дает вам множество преимуществ, и среди основных можно отметить следующие: **Автоматическое развертывание** С помощью Kubernetes вы можете автоматизировать процесс создания новых контейнеров для развертывания, удаления существующих контейнеров и распределения всех их ресурсов в новый контейнер. С Kubernetes развернутые приложения всегда будут работать так, как было запланировано. **Мониторинг сервисов** Kubernetes автоматически обнаружит контейнеры, которые были повреждены и перестали отвечать на запросы, и перезапустит их. Если контейнер не проходит заданную проверку работоспособности, Kubernetes завершит его работу и запустит другой контейнер ему на замену. **Распределение сетевой нагрузки** Kubernetes распределит сетевой трафик таким образом, чтобы сбалансировать нагрузку для стабильного развертывания. При обнаружении контейнера с высоким трафиком Kubernetes перезапустит его для выравнивания нагрузки. **Легкость миграции** Kubernetes позволит запускать приложение в одинаковом окружении в любом месте. Вы сможете легко переносить приложения с локальных машин, где велась разработка, на серверы для последующего развертывания и не беспокоиться о проблемах с совместимостью. **Хранение конфиденциальной информации** Пароли, OAuth-токены и ключи SSH сохраняются конфиденциальными. Вы можете обновлять конфигурацию приложения, не изменяя образы контейнеров и не раскрывая конфиденциальную информацию в конфигурации стека. **Автоматизация обновлений** Как и прочие операции, процесс обновления может быть полностью автоматизирован. Обновления не влияют на текущую работоспособность системы, могут проводиться в удобное для разработки время и не требуют подключения команды инженеров. **Производительность и отказоустойчивость** Благодаря гибкому управлению нагрузкой и широким возможностям масштабирования кластера, Kubernetes обеспечит высокий уровень производительности и отказоустойчивости системы. С Kubernetes вы сможете сэкономить время, снизить расходы и автоматизировать управление приложениями, максимально используя все возможности архитектуры контейнеризации. # Создание кластера Source: https://timeweb.cloud/docs/k8s/create-cluster Создать новый кластер можно в вашей панели управления. 1. Перейдите в раздел «[Kubernetes](https://timeweb.cloud/my/kubernetes)». 2. Кликните «Создать» или «Добавить». 3. Выберите регион создания кластера. 4. Укажите желаемые параметры кластера: **Версия Kubernetes**. В дальнейшем вы сможете [изменить](https://timeweb.cloud/docs/k8s/manage-cluster#smena-versii-kubernetes) версию в настройках кластера на одну из более новых. **Конфигурация мастер-ноды**. Доступны следующие варианты: - **Dev** — поддерживает до 10 воркер-нод. Используется одна мастер-нода с параметрами: 2 CPU, 2 ГБ RAM, 30 ГБ NVMe. - **Base** — поддерживает до 100 воркер-нод. Используется одна мастер-нода с параметрами: 4 CPU, 8 ГБ RAM, 60 ГБ NVMe. - **Custom** — позволяет задать количество мастер-нод: 1 или 3. Также доступна настройка конфигурации мастер-нод: - Минимально допустимая конфигурация: 4 CPU, 8 ГБ RAM, 60 ГБ NVMe - Максимально допустимая конфигурация: 32 CPU, 140 ГБ RAM, 1200 ГБ NVMe **Окно обслуживания кластера.** Вы можете задать [окно обслуживания кластера](https://timeweb.cloud/docs/k8s/manage-cluster#okno-obslujivaniya-klastera) — период, в который разрешается выполнение системных обновлений. Доступны три варианта: - - Никогда - В любое время - В заданное время Во время окна обслуживания могут обновляться сертификаты и устанавливаться обновления безопасности. Изменить окно обслуживания можно после создания кластера — в панели управления, во вкладке «Управление». ![2194c070 9dff 4e7f 821c 8b45d9dfccb1](https://content.timeweb.com/assets/1507d0dc-04d7-498a-90b4-80bdc7a44fe9.png?width=750&height=1199) 5. Настройте конфигурацию воркер-нод: создайте одну или несколько групп нод, выберите количество нод в каждой группе, тарифную линейку и конфигурацию для них. При использовании произвольной конфигурации существуют следующие ограничения: - Минимальная конфигурация: - **CPU**: 2 - **RAM**: 2 ГБ - **Диск**: 30 ГБ - Максимальная конфигурация: - **CPU**: 32 - **RAM**: 256 ГБ - **Диск**: 1200 ГБ ![B5ce5a4d 9aef 4a7f Ae35 46096a8d65e0](https://content.timeweb.com/assets/2916eea1-891b-480a-a5bb-3afa3ce34caa.png?width=761&height=755) На этом же этапе вы можете настроить: - - [Автомасштабирование](https://timeweb.cloud/docs/k8s/kubernetes-autoscaling/kubernetes-autoscaler) - [Автохилинг](https://timeweb.cloud/docs/k8s/manage-cluster#avtohiler) - Лейблы - Тейнты ![49a41a04 Cf2b 41bc A14f 86f8f228fce8](https://content.timeweb.com/assets/0048b3f2-7eef-493d-b557-6ba680d0cebd.png?width=703&height=423) 6. Выберите существующую приватную сеть или создайте новую. При необходимости настройте [плагин CNI](https://timeweb.cloud/docs/k8s/network/network-plugins) — он обеспечивает полную сетевую связность между узлами кластера и влияет на масштабируемость и гибкость настройки сетевых политик. ![Screenshot 05 27 25 18:44:18](https://content.timeweb.com/assets/2d95de96-2625-4678-bb61-cc231be41acd.png?width=419&height=460) 7. При необходимости настройте подключение [OIDC-провайдера](https://timeweb.cloud/docs/k8s/access/connect-oidc-provider-to-cluster). ![Scr 20250818 Njco](https://content.timeweb.com/assets/8c3e1ed4-682b-45e0-90f3-f7a6b64561c7.png?width=846&height=904) 8. Заполните информацию о кластере (имя, комментарий, проект) и нажмите «Заказать». Создание кластера займет пару минут, после чего вы сможете начать работу. # Управление кластером Source: https://timeweb.cloud/docs/k8s/manage-cluster Управление кластерами Kubernetes, созданными в панели Timeweb Cloud: - [Дашборд](https://timeweb.cloud/docs/k8s/manage-cluster/dashboard) - [Связанные сервисы](https://timeweb.cloud/docs/k8s/manage-cluster/external-services) - [Мастер-ноды](https://timeweb.cloud/docs/k8s/manage-cluster/master-node) - [Воркер-ноды](https://timeweb.cloud/docs/k8s/manage-cluster/worker-node) - [Изменение версии Kubernetes](https://timeweb.cloud/docs/k8s/manage-cluster/version-update) - [Перезагрузка воркер-нод](https://timeweb.cloud/docs/k8s/manage-cluster/rebooting-worker-node) - [Окно обслуживания кластера](https://timeweb.cloud/docs/k8s/manage-cluster/change-maintenance-slot) - [Автохилер](https://timeweb.cloud/docs/k8s/manage-cluster/autohealer) - [История действий](https://timeweb.cloud/docs/k8s/manage-cluster/history) - [Удаление кластера](https://timeweb.cloud/docs/k8s/manage-cluster/deleting-cluster) - [Ранний доступ к фичам](https://timeweb.cloud/docs/k8s/manage-cluster/feature-gates) # Дашборд Source: https://timeweb.cloud/docs/k8s/manage-cluster/dashboard Во вкладке «Дашборд» отображаются графики загрузки процессора, использования оперативной памяти, вместимости подов, статусов подов и перезапусков контейнеров. Графики доступны как для мастер-, так и для воркер-нод. Чтобы скачать конфигурационный файл для подключения к кластеру, нажмите на ссылку «скачать файл конфигурации». ![Scr 20251022 Scjn](https://content.timeweb.com/assets/372e2d76-dcaa-4f95-b2dc-b1f1e241fdd7.png?width=1007&height=812) #### Описание графиков: **Загрузка ядер CPU** ![Image1](https://content.timeweb.com/assets/fb15f2e4-650c-435c-94c4-19da3c64a57f.png?width=489&height=269) - **Вместимость**: общее количество процессорных ядер на ноде. Измеряется в ядрах или миллиядрах. - **Выделено**: количество процессорных ядер, доступных для размещения приложений на узле. - **Лимит ресурса**: суммарное количество CPU, установленное как лимит для подов. Это показатель максимального использования CPU, установленный для всех подов на ноде. - **Запрос ресурса**: суммарное количество CPU, которое запрашивают все поды на ноде. **Оперативная память** ![Image3](https://content.timeweb.com/assets/a02e7c2a-686f-4803-ad63-b293e938b537.png?width=492&height=265) - **Вместимость**: общий объем оперативной памяти на ноде. - **Выделено**: объем оперативной памяти, доступный для размещения приложений. - **Лимит ресурса**: суммарное ограничение на использование памяти, установленное для всех подов на ноде. - **Запрос ресурса**: суммарный объем памяти, который запрашивают все поды. **Вместимость подов** ![Image4](https://content.timeweb.com/assets/51f4e62b-28a8-4f7b-b0e8-ffe3e99f52de.png?width=492&height=255) - **Выделено**: количество подов, которое может быть еще размещено на ноде. - **Запрошено**: количество подов, уже размещенных на ноде. **Статусы подов** ![Screenshot 11 21 24 16:24:41](https://content.timeweb.com/assets/4a1b3fdd-b424-4abc-bd6f-31db0301ea8a.png?width=489&height=262) - **Работает**: под успешно развернут и выполняется. Все контейнеры внутри пода запущены и работают. - **Ошибка**: произошла ошибка при выполнении одного или нескольких контейнеров в поде. Например, контейнер завершился с ненулевым кодом выхода или произошла проблема с доступом к ресурсам. - **Ожидание**: под еще не запущен, так как Kubernetes планирует его размещение на узле, но еще не удалось выделить ресурсы (например, место на узле, сеть или загрузку образа). Узнать причину можно, выполнив команду `kubectl describe node <имя_ноды>`. - **Неизвестно**: kubernetes не может определить текущий статус пода, возможно, из-за отсутствия связи с узлом, на котором под был запущен. Это может указывать на проблемы с соединением или сбоями в системе. - **Завершен успешно**: все контейнеры пода завершили свою работу успешно. Этот статус характерен для подов с задачами, которые предполагают одноразовое выполнение (например, Job). **Рестарт контейнеров** ![Scr 20251022 Sbvc](https://content.timeweb.com/assets/03ddbe12-bdbd-48c1-b310-d8651ff5f644.png?width=1022&height=570) Отображает число контейнеров, перезапущенных за выбранный промежуток времени. # Связанные сервисы Source: https://timeweb.cloud/docs/k8s/manage-cluster/external-services Раздел «Связанные сервисы» позволяет увидеть ресурсы, подключенные к кластеру Kubernetes. Здесь собраны все связанные сервисы, которые были созданы из кластера. ![Scr 20251119 Qbol](https://content.timeweb.com/assets/402ece76-aec4-4552-a09c-6a80b5a77de9.png?width=1041&height=742) Сейчас отображаются следующие типы сервисов: - [базы данных (DBaaS)](https://timeweb.cloud/docs/k8s/addons/dbaas-operator); - [балансировщики нагрузки (LBaaS)](https://timeweb.cloud/docs/k8s/network/kubernetes-load-balancer); - [сетевые диски](https://timeweb.cloud/docs/k8s/network-drives-connection); - [реестры контейнеров (Container Registry)](https://timeweb.cloud/docs/k8s/container-registry#ispolzovanie-reestra-v-klastere-kubernetes). При клике на любой из сервисов откроется его страница в панели управления. > [!NOTE] > Обратите внимание, что балансировщики, сетевые диски и DBaaS в разделе будут отображаться только если созданы после 30 сентября 2025 года. # Мастер-ноды Source: https://timeweb.cloud/docs/k8s/manage-cluster/master-node Вы можете изменить конфигурацию мастер-нод после создания кластера. Изменение возможно только в сторону увеличения ресурсов. Для этого перейдите во вкладку «Управление» в панели управления кластером и нажмите кнопку «Выбрать конфигурацию». ![48426e60 08d6 48e1 8a9f 463df7a138f3](https://content.timeweb.com/assets/78ab6d1f-a801-4c68-bf24-ed6fcb76175c.png?width=1536&height=1143) В открывшемся меню выберите подходящую конфигурацию мастер-ноды и нажмите кнопку «Изменить и перезагрузить мастер-ноду». ![9845dc29 Fe0c 462c 978a 41577e2e0c96](https://content.timeweb.com/assets/67b3d287-cef9-49c0-abf4-05b1a32a0477.png?width=1542&height=1071) # Воркер-ноды Source: https://timeweb.cloud/docs/k8s/manage-cluster/worker-node Во вкладке «Ресурсы» вы можете увидеть информацию о группах воркер-нод. В одной группе могут находиться только ноды с одинаковой конфигурацией. Конфигурация каждой ноды отображается в строке с соответствующей группой. Развернув группу воркер-нод, вы увидите информацию о локальных и внешних IP-адресах нод, а также о дате их создания. ![Scr 20260319 Ovzb](https://content.timeweb.com/assets/6398ecf7-72c7-48c0-8d2b-c2236ce83faf.png?width=2154&height=1610) Обращение к внешним ресурсам с воркеров выполняется через публичные IP-адреса, выделенные каждой ноде, или [через виртуальный роутер](https://timeweb.cloud/docs/k8s/network/virtual-routers-in-kubernetes), настроенный для кластера. Также во вкладке можно управлять нодами и группами воркер-нод. ## Управление группой воркер-нод Нажмите на три точки рядом с именем группы. В меню доступны действия: - «Добавить ноды» — позволяет указать количество новых нод, которые нужно добавить в группу. - «Редактировать группу» — открывает окно настройки группы. - «Удалить» — удаляет группу воркер-нод. При выборе пункта «Редактировать группу» откроется окно с настройками группы. ![Scr 20260319 Owrc](https://content.timeweb.com/assets/2c6a0c4c-6e4d-419a-966d-e3eda08aaf7f.png?width=2120&height=1616) В настройках можно: - изменить имя группы нод; - включить или отключить [автомасштабирование](https://timeweb.cloud/docs/k8s/kubernetes-autoscaling); - включить или отключить [автохилинг](https://timeweb.cloud/docs/k8s/manage-cluster/autohealer); - включить или отключить публичные IP-адреса для нод (подробнее в статье [про настройку виртуальных роутеров](https://timeweb.cloud/docs/k8s/network/virtual-routers-in-kubernetes)); - добавить лейбл в формате `ключ:значение`; - добавить тейнт в формате `ключ:значение:эффект`. Эффект тейнта определяет, как планировщик будет размещать поды на ноде: - `NoSchedule` — новые поды не будут размещаться на ноде, если у них нет соответствующей `toleration`; - `PreferNoSchedule` — планировщик по возможности избегает размещения подов на ноде; - `NoExecute` — поды без `toleration` не только не будут размещаться на ноде, но и будут удалены с неё. После внесения изменений нажмите кнопку «Сохранить». ## Управление отдельной нодой Разверните группу нод и нажмите на три точки рядом с нужной нодой. В меню доступны действия: - «Редактировать ноду»; - «Перезагрузить ноду»; - «Удалить ноду». При выборе пункта «Редактировать ноду» откроется окно настройки. ![Scr 20260319 Owwn](https://content.timeweb.com/assets/542a192a-aacd-4d3b-a4ad-05d74926dde5.png?width=2088&height=1608) В этом окне можно: - добавить лейбл в формате `ключ:значение`; - добавить тейнт в формате `ключ:значение:эффект`, где эффект может быть `NoSchedule`, `PreferNoSchedule` или `NoExecute`. После внесения изменений нажмите кнопку «Сохранить». # Логи кластера Source: https://timeweb.cloud/docs/k8s/manage-cluster/logs В разделе «Логи» можно посмотреть системные логи компонентов кластера. Это может быть полезно для диагностики работы кластера и проверки событий, связанных с его сервисами. Вы можете настроить: - **Период отображения логов** — выбрать временной интервал, за который будут показаны записи. - **Фильтр сервисов** — выбрать, логи каких компонентов кластера нужно отобразить. По умолчанию показываются записи всех сервисов, но при необходимости можно оставить только нужные: автоскейлер, хиллер, CCM или Kube API Server. ![Scr 20260521 Qkoo](https://content.timeweb.com/assets/3d7d7c2f-a0da-4ae6-9257-248e6064150d.png?width=2156&height=1664) Обратите внимание: в разделе действует ограничение — одновременно можно просмотреть не более 100 000 строк логов. # Изменение версии Kubernetes Source: https://timeweb.cloud/docs/k8s/manage-cluster/version-update В настройках кластера вы можете изменить версию Kubernetes на более новую. Перейти на более старую версию не получится. Для обновления версии: 1. В разделе «Kubernetes» кликните на нужный кластер. 2. На вкладке «Управление» нажмите «Обновить версию». ![Scr 20260119 Pyyh](https://content.timeweb.com/assets/8d942dd9-9ed8-4789-8b22-253d48c95267.png?width=2124&height=1520) 3. В списке доступных версий выберите нужную. 4. Укажите время обновления: - - Немедленно; - В заданное время. 5. Нажмите на кнопку «Обновить» или «Запланировать» — в зависимости от выбранного ранее варианта. ![Scr 20260119 Qaqz](https://content.timeweb.com/assets/0c494769-c153-4768-8ee2-8381d9901bfd.png?width=2140&height=1466) Для отмены запланированного обновления: 1. Откройте вкладку «Управление» и снова нажмите «Обновить версию». 2. Нажмите на крестик рядом с запланированным обновлением. ![Scr 20260119 Qbwf](https://content.timeweb.com/assets/c21b10cd-7aa1-48e6-bcc8-8254b66198ef.png?width=2100&height=1456) # Перезагрузка воркер-нод Source: https://timeweb.cloud/docs/k8s/manage-cluster/rebooting-worker-node Вы можете перезагрузить любую воркер-ноду из панели управления. Для этого: 1. На вкладке «Ресурсы» раскройте список нод в группе. 2. Кликните на три точки у нужной ноды и выберите «Перезагрузить ноду». ![Scr 20251022 Pyml](https://content.timeweb.com/assets/a60fb2a8-fb40-4909-aac7-730f49801fd6.png?width=790&height=477) # Окно обслуживания кластера Source: https://timeweb.cloud/docs/k8s/manage-cluster/change-maintenance-slot Окно обслуживания кластера — это период, в который разрешается выполнение системных обновлений. Доступны три варианта: - Никогда - В любое время - В заданное время Во время окна обслуживания могут обновляться сертификаты и устанавливаться обновления безопасности. Обновления могут затронуть как мастер-, так и воркер-ноды. На это время действия с кластером будут заблокированы. Возможны кратковременные перерывы в работе, например, при перезапуске нод. Вы можете задать окно обслуживания при создании кластера, а также управлять им в дальнейшем в настройках кластера. Чтобы изменить окно обслуживания: 1. В разделе «Kubernetes» кликните на нужный кластер. 2. На вкладке «Управление» нажмите «Изменить» в блоке «Окно обслуживания кластера». 3. Выберите нужный вариант и сохраните изменения. # Автохилер Source: https://timeweb.cloud/docs/k8s/manage-cluster/autohealer Система автоматически проверяет состояние воркер-нод каждые 10 минут. Если нода перестает отвечать, автохилер пытается восстановить ее работу: - выполняется попытка перезапуска ноды (до 2 минут на попытку); - если нода не восстановилась, попытка повторяется; - в течение 14 минут автохилер выполняет повторные попытки перезапуска; - если восстановить ноду не удалось, она будет пересоздана. Автохилинг можно включить или отключить [в настройках группы нод](https://timeweb.cloud/docs/k8s/manage-cluster/worker-node#upravlenie-gruppoj-vorker-nod). Чтобы отключить механизм для конкретной ноды в группе, для которой включен автохилинг, добавьте лейбл: ```bash kube-healer.kubernetes.io/healing-disabled: true ``` Механизм не применяется к нодам с GPU. Одновременно может обрабатываться не более 10 задач автохилинга. # История действий Source: https://timeweb.cloud/docs/k8s/manage-cluster/history В панели управления логируются действия с кластером — просмотреть их можно на вкладке «История». ![Scr 20251022 Sega](https://content.timeweb.com/assets/643e8645-3a0f-4c93-8ae4-06fbda0f7540.png?width=767&height=477) В логи записываются следующие события: - Создание кластера - Создание группы в кластере - Удаление группы из кластера - Добавление нод в группу - Удаление нод из группы # Prometheus Exporter Source: https://timeweb.cloud/docs/k8s/manage-cluster/prometheus-exporter Prometheus Exporter — это компонент, который собирает метрики кластера Kubernetes и предоставляет их в формате, совместимом с Prometheus. Экспортер позволяет отслеживать состояние кластера, нагрузку на ноды и состояние ресурсов. ## Подключение экспортера Данные для подключения экспортеров доступны в панели управления кластером, в разделе «Дашборд». ![Scr 20260413 Qiur](https://content.timeweb.com/assets/a59eda54-d61d-4cef-a71c-4f0ecd0ec26e.png?width=2166&height=1604) При использовании публичных экспортеров для доступа к метрикам необходима базовая авторизация. Пример запроса к публичному экспортеру: ```bash curl -u admin:'пароль' -s https://k8s-exporter.timeweb.cloud/id_экспортера/service/metrics ``` ## Эндпоинты и метрики Доступны два типа метрик: - `node_exporter` — метрики нод: загрузка CPU, использование памяти, операции с диском, сетевой трафик и другие системные показатели ОС; - `kube_state_exporter` — метрики Kubernetes: состояние подов, деплойментов, реплик, нод и других объектов, полученное из Kubernetes API. Публичные эндпоинты: - Метрики нод: ```shell https://k8s-exporter.timeweb.cloud/id_экспортера/node-exporter/metrics ``` - Метрики Kubernetes: ```shell https://k8s-exporter.timeweb.cloud/id_экспортера/service/metrics ``` `id_экспортера` — уникальный идентификатор экспортера из панели управления. ## Особенности реализации Экспортеры доступны в двух вариантах: - публичный — доступ по HTTPS с базовой авторизацией; - приватный — доступ внутри приватной сети. Порты: - `9100` — `node_exporter`. - `9308` — `kube_state_exporter`. Для кластеров с тремя мастер-нодами сбор метрик необходимо выполнять с каждой ноды отдельно. # Ранний доступ к фичам Source: https://timeweb.cloud/docs/k8s/manage-cluster/feature-gates Ранний доступ к фичам (feature gates) позволяет включать или отключать экспериментальные возможности Kubernetes. Функции могут находиться в разных статусах — альфа- и бета-версии. Они отличаются уровнем стабильности и готовности к использованию. Альфа-версии: - выключены по умолчанию; - могут работать нестабильно и содержать ошибки; - могут быть удалены без предупреждения; - API может измениться непредсказуемым образом в следующих версиях; - подходят только для тестирования. Бета-версии: - могут быть включены по умолчанию; - считаются достаточно стабильными и протестированными; - не будут полностью удалены, но могут изменяться; - возможны несовместимые изменения API; - при обновлении может потребоваться изменение или пересоздание ресурсов; - рекомендуется использовать только для кластеров с некритичными нагрузками. Корректная работа кластера гарантируется только при значениях по умолчанию. Некоторые функции раннего доступа включены по умолчанию. Список доступных функций зависит от версии Kubernetes. Полный список и статус для конкретной версии можно посмотреть [в официальной документации](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/#feature-gates-for-alpha-or-beta-features). ## Использование Чтобы настроить ранний доступ к фичам: 1. Перейдите в панель управления кластером. 2. Откройте раздел «Управление». 3. Нажмите «Настроить» напротив строки «Ранний доступ к фичам». ![Scr 20260414 Okso](https://content.timeweb.com/assets/f01941c1-be1e-48c7-a8a2-a9ec23e6058e.png?width=2108&height=1650) В открывшемся окне: - отображается список доступных функций; - указан их статус (альфа или бета); - можно включить или отключить нужные функции. ![Scr 20260414 Okxh](https://content.timeweb.com/assets/ce1af084-a9f0-4e3a-9190-22d606a88c40.png?width=2074&height=1596) После изменения настроек нажмите «Сохранить», чтобы применить изменения. Нажмите «Вернуть параметры по умолчанию», чтобы сбросить настройки. Сброс может понадобиться, чтобы исключить влияние экспериментальных функций на работу кластера. При обновлении Kubernetes значения раннего доступа к функциям автоматически сбрасываются к состоянию по умолчанию, так как в новой версии часть функций может быть изменена или недоступна. # Удаление кластера Source: https://timeweb.cloud/docs/k8s/manage-cluster/deleting-cluster Удалить кластер можно: - Со страницы конкретного кластера, кликнув на значок удаления: ![Scr 20251022 Seqs](https://content.timeweb.com/assets/06bf051a-05d0-47d0-9fe8-a47b03274d3c.png?width=1014&height=818) - Из списка кластеров, по клику на три точки у нужного кластера и опции «Удалить кластер»: ![Selection 039](https://content.timeweb.com/assets/3869d9df-74d9-4943-b5d0-3fb3a24967c0.png?width=1141&height=903) В следующем окне введите название удаляемого кластера или код подтверждения, в зависимости от [ваших настроек](https://timeweb.cloud/docs/account-management/notifications#uvedomleniya-pri-udalenii-servisov). # Подключение к кластеру Source: https://timeweb.cloud/docs/k8s/cluster-connection Для работы с кластерами Kubernetes вы можете использовать: **Консольные утилиты:** - [kubectl](https://timeweb.cloud/docs/k8s/cluster-connection/kubectl) **GUI-утилиты:** - [Lens](https://timeweb.cloud/docs/k8s/cluster-connection/lens) - [Freelens](https://timeweb.cloud/docs/k8s/cluster-connection/freelens) - [Headlamp](https://timeweb.cloud/docs/k8s/addons/headlamp) - [Kubernetes Dashboard](https://timeweb.cloud/docs/k8s/addons#kubernetes-dashboard) # kubectl Source: https://timeweb.cloud/docs/k8s/cluster-connection/kubectl [kubectl](https://kubernetes.io/ru/docs/reference/kubectl/overview/) — консольная утилита для работы с сущностями кластера Kubernetes. При помощи нее можно управлять ресурсами кластера, разворачивать приложения, просматривать логи и выполнять другие задачи администрирования. ## Установка kubectl > [!NOTE] > Обратите внимание, что минорная версия `kubectl` (вторая цифра в версии) может отличаться от версии кластера на +/- 1. При использовании более новых или более старых версий могут возникать проблемы с совместимостью. В инструкции указаны конкретные версии для примера, но вы можете заменить их на нужные вам версии. Linux ### Ручная установка 1. Загрузите бинарный файл `kubectl`: ``` curl -LO "https://storage.googleapis.com/kubernetes-release/release/v1.30.2/bin/linux/amd64/kubectl" ``` 2. Проверьте целостность загруженного файла: ``` echo "$(curl -sL https://dl.k8s.io/release/v1.30.2/bin/linux/amd64/kubectl.sha256) kubectl" | sha256sum --check ``` 3. Установите `kubectl`: ``` sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl ``` ### Установка через apt 1. Обновите список пакетов: ```shell sudo apt update ``` 2. Установите необходимые пакеты: ```shell sudo apt install -y apt-transport-https ca-certificates curl gnupg ``` 3. Добавьте ключ для репозитория Kubernetes и установите правильные права доступа на ключ: ```shell curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg && sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg ``` 4. Добавьте репозиторий Kubernetes в список источников APT и установите правильные права доступа на файл списка источников: ```shell echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list && sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list ``` 5. Обновите список пакетов снова: ```shell sudo apt update ``` 6. Установите `kubectl`: ```shell sudo apt install -y kubectl ``` macOS ### Ручная установка **Для процессоров Intel** 1. Загрузите `kubectl` для процессоров Intel: ```shell curl -LO "https://dl.k8s.io/release/v1.30.2/bin/darwin/amd64/kubectl" ``` 2. Проверьте целостность загруженного файла: ```shell echo "$(curl -sL https://dl.k8s.io/release/v1.30.2/bin/darwin/amd64/kubectl.sha256) kubectl" | sha256sum --check ``` **Для процессоров Apple Silicon** 1. Загрузите `kubectl` для процессоров Apple Silicon: ```shell curl -LO "https://dl.k8s.io/release/v1.30.2/bin/darwin/arm64/kubectl" ``` 2. Проверьте целостность загруженного файла: ```shell echo "$(curl -sL https://dl.k8s.io/release/v1.30.2/bin/darwin/arm64/kubectl.sha256) kubectl" | sha256sum --check ``` 3. Сделайте файл исполняемым, установите права `644`, переместите его в директорию `/usr/local/bin` и установите владельца `root`: ```shell chmod +x ./kubectl && chmod 644 ./kubectl && sudo mv ./kubectl /usr/local/bin/kubectl && sudo chown root: /usr/local/bin/kubectl ``` ### Установка через homebrew Установите `kubectl`: ```shell brew install kubectl@1.30 ``` или Установите весь набор инструментов `Kubernetes CLI`: ```shell brew install kubernetes-cli@1.30 ``` > [!NOTE] > Версии, доступные для установки через Homebrew, вы можете найти [на официальной странице утилиты](https://formulae.brew.sh/formula/kubernetes-cli#default). Windows ### Установка через Chocolatey Установите `kubectl`, выполнив: ```shell choco install kubernetes-cli --version=1.30.2 ``` ### Ручная установка 1. В PowerShell выполните следующие команды: ```shell mkdir kubectl cd .\kubectl\ curl.exe -LO "https://dl.k8s.io/release/v1.30.2/bin/windows/amd64/kubectl.exe" ``` 2. Добавьте путь к директории `kubectl` в `PATH`, выполнив следующий скрипт в PowerShell: ```shell $destination="$env:USERPROFILE\kubectl" $currentPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User) if ($currentPath -notlike "*$destination*") { [System.Environment]::SetEnvironmentVariable("Path", "$currentPath;$destination", [System.EnvironmentVariableTarget]::User) } ``` Или добавьте путь вручную: - - Нажмите правой кнопкой мыши на «Этот компьютер». - Выберите «Свойства». - Перейдите в «О программе». - Нажмите «Дополнительные параметры системы». - Перейдите на вкладку «Дополнительно». - Нажмите «Переменные среды». - В разделе «Системные переменные» найдите переменную `Path` и добавьте путь к директории `kubectl`. 3. Перезапустите PowerShell, чтобы изменения вступили в силу. > [!NOTE] > Docker Desktop for Windows добавляет свою версию `kubectl` в `PATH`. Если у вас установлен Docker Desktop, возможно, вам потребуется разместить запись `PATH` для `kubectl` перед той, которая добавлена установщиком Docker Desktop, или удалить версию `kubectl`, установленную Docker Desktop. Теперь `kubectl` установлен на вашем компьютере. Вы можете проверить установку, выполнив команду: ```shell kubectl version ``` ## Настройка доступа к кластеру Kubernetes ### Получение конфигурационного файла kubeconfig Файл `config.yaml` используется `kubectl` для определения, к какому кластеру подключаться и какие учетные данные использовать. Он содержит информацию о кластерах, пользователях и контекстах, что позволяет легко переключаться между различными конфигурациями Kubernetes. Поскольку файл `config.yaml` содержит важные учетные данные, его следует хранить в недоступном для посторонних лиц месте, чтобы предотвратить несанкционированный доступ к кластеру. При получении доступа к этому файлу посторонний человек может управлять кластером и его ресурсами. Чтобы получить конфигурационный файл, перейдите на страницу управления кластером и во вкладке «Дашборд» нажмите ссылку «скачайте файл конфигурации». ![Scr 20251022 Sfnh](https://content.timeweb.com/assets/f8187c7a-675f-4678-af48-2d80b2a22b52.png?width=1003&height=816) ### Размещение kubeconfig в домашнем каталоге После получения файла `config.yaml` необходимо разместить его в правильном каталоге, чтобы `kubectl` мог его использовать. macOS и Linux 1. Создайте директорию `.kube` в вашем домашнем каталоге, если она еще не существует: ```shell mkdir -p ~/.kube ``` 2. Скопируйте файл `config.yaml` в эту директорию и переименуйте его в `config`: ```shell cp ~/Downloads/config.yaml ~/.kube/config ``` После выполнения этих шагов `kubectl` будет автоматически использовать конфигурацию из файла `~/.kube/config`. Windows 1. Откройте PowerShell. 2. Создайте директорию `.kube` в вашем домашнем каталоге, если она еще не существует: ```shell mkdir $env:USERPROFILE\.kube ``` 2. Скопируйте файл `config.yaml` в эту директорию и переименуйте его в `config`: ```shell copy <путь_к_config.yaml> $env:USERPROFILE\.kube\config ``` 3. Запустите PowerShell от имени администратора и выполните: ```shell [Environment]::SetEnvironmentVariable("KUBECONFIG", $HOME + "\.kube\config", [EnvironmentVariableTarget]::Machine) ``` После выполнения этих шагов `kubectl` будет автоматически использовать конфигурацию из файла `$env:USERPROFILE\.kube\config`. ### Использование переменной окружения KUBECONFIG Если вам нужно использовать несколько файлов конфигурации или расположить `config.yaml` в другом месте, вы можете воспользоваться переменной окружения `KUBECONFIG`. macOS и Linux 1. Откройте терминал. 2. Установите переменную окружения `KUBECONFIG`: ```shell export KUBECONFIG= ``` Чтобы эти настройки сохранялись после перезагрузки системы, выполните следующий код (по необходимости изменив `~/.bashrc` на `~/.zshrc` (для MacOS) или `~/.profile`): ```shell echo "export KUBECONFIG=" >> ~/.bashrc ``` Windows 1. Откройте PowerShell. 2. Установите переменную окружения `KUBECONFIG`: ```shell $env:KUBECONFIG = "" ``` ### Использование нескольких конфигурационных файлов Вы можете указать несколько файлов `kubeconfig`, разделяя их пути двоеточиями (на macOS и Linux) или точкой с запятой (на Windows): Windows (PowerShell): ```shell $env:KUBECONFIG=";" ``` macOS и Linux: ```shell export KUBECONFIG=: ``` ## Настройка подключения к кластеру Kubernetes После настройки доступа вам нужно убедиться, что `kubectl` может подключиться к кластеру. Для этого выполните следующую команду: ```shell kubectl cluster-info ``` Эта команда выведет информацию о вашем кластере, включая адреса API и других компонентов. Если команда выполнена успешно, значит, `kubectl` подключен к кластеру. ### Проверка контекста Контексты позволяют переключаться между разными кластерами и учетными данными. Каждый контекст представляет собой комбинацию кластеров, пользователей и пространств имен (`namespaces`). Чтобы увидеть список доступных контекстов и узнать, какой из них активен в данный момент, используйте команду: ```shell kubectl config get-contexts ``` Эта команда выведет таблицу с доступными контекстами и укажет, какой из них активен в данный момент. ![Image3](https://content.timeweb.com/assets/a5f28b6b-5ee3-45da-b783-d92b4c756135.png?width=810&height=117) Если у вас настроено несколько кластеров и вы хотите переключиться на другой контекст, используйте следующую команду: ```shell kubectl config use-context ``` Замените `` на имя нужного контекста, которое вы получили из предыдущей команды. После выполнения этой команды `kubectl` будет использовать новый контекст для всех последующих команд. ## Настройка автодополнения команд Автодополнение команд помогает ускорить ввод команд и уменьшить количество ошибок, автоматически предлагая возможные варианты по мере набора команды. Это особенно полезно для длинных и сложных команд `kubectl`. #### Установка bash-completion Установите пакет `bash-completion`, если он еще не установлен. Для Ubuntu/Debian: ```shell sudo apt install bash-completion ``` Для CentOS/RHEL: ```shell sudo yum install bash-completion ``` Для macOS через Homebrew: ```shell brew install bash-completion ``` bash (Linux) Включите автодополнение для текущего сеанса: ```shell source <(kubectl completion bash) ``` Чтобы автодополнение было всегда включено, выполните команду: ```shell echo "source <(kubectl completion bash)" >> ~/.bashrc ``` zsh (macOS и Linux) Включите автодополнение для текущего сеанса: ```shell source <(kubectl completion zsh) ``` Чтобы автодополнение было всегда включено, выполните команду: ```shell echo "source <(kubectl completion zsh)" >> ~/.zshrc ``` ## Основные команды kubectl ### Получение информации о кластере Чтобы получить общую информацию о вашем кластере, включая адреса компонентов, используйте команду: ```shell kubectl cluster-info ``` ### Просмотр подов Для получения списка всех подов в текущем пространстве имен используйте команду: ```shell kubectl get pods ``` Если вы хотите увидеть поды в конкретном пространстве имен, добавьте опцию `-n`: ```shell kubectl get pods -n ``` ### Просмотр служб Чтобы увидеть все службы (`services`) в текущем пространстве имен, выполните команду: ```shell kubectl get services ``` Вы также можете указать пространство имен: ```shell kubectl get services -n ``` ### Просмотр конфигурации Чтобы увидеть текущую конфигурацию и активный контекст: ```shell kubectl config view ``` ### Описание ресурсов Для получения детальной информации о любом ресурсе, таком как под или служба: ```shell kubectl describe ``` Например, чтобы получить информацию о поде: ```shell kubectl describe pod ``` ### Удаление ресурсов Для удаления ресурса, такого как под или служба: ```shell kubectl delete ``` Например, чтобы удалить под: ```shell kubectl delete pod ``` # Lens Source: https://timeweb.cloud/docs/k8s/cluster-connection/lens В статье мы рассмотрим, как подключить кластер Kubernetes к Lens — рабочему столу для управления кластерами. ## Установка Lens 1. Скачайте инсталлятор для вашей операционной системы с [официального сайта](https://lenshq.io/) и выполните установку на ваше локальное устройство, с которого вы планируете подключаться к созданному кластеру. 2. Запустите установленное приложение. 3. Выберите **New to Lens**, (если у вас еще нет учетной записи Lens ID) ![Lens R Ao Hl Pj Lp2](https://content.timeweb.com/assets/7902d5a1-7373-4067-9471-03dbd1403448.png?width=685&height=744) _Форма регистрации в интерфейсе [Lens](https://lenshq.io/)_ 4. Вас переадресует на форму создания Lens ID. Введите свои данные и нажмите **Continue**. ![Screenshot 06 10 25 15:59:44](https://content.timeweb.com/assets/a904f2df-127c-4d14-a03b-7f9521eb0fe5.png?width=503&height=933) _Форма регистрации в интерфейсе [Lens](https://lenshq.io/)_ 5. Подтвердите указанный емейл, перейдя по ссылке в отправленном вам письме. 6. Откроется форма подтверждения. Введите логин и пароль от Lens ID и нажмите **Login**. После успешной авторизации откроется рабочее меню приложения Lens. ## Подключение к кластеру Lens использует стандартный kubeconfig для подключения к кластеру. Вы можете хранить конфигурационные файлы как в системной директории ~/.kube, так и в любом удобном месте. Скачайте файл конфигурации из панели управления в разделе «Дашборд» созданного кластера. ![Selection 333](https://content.timeweb.com/assets/b291488e-55a7-4504-8916-4a1d20b21474.png?width=1015&height=883) ### Использование стандартной папки Если вы разместите скачанный kubeconfig в директории `~/.kube`, Lens автоматически определит кластер. Разверните раздел «Local Kubeconfig» — кластер будет отображен в списке. ![Screenshot 06 10 25 17:02:29](https://content.timeweb.com/assets/7787b961-d1c4-493f-acdc-19355e0c19ab.png?width=1436&height=894) _Интерфейс [Lens](https://lenshq.io/)_ ### Пользовательская папка с конфигурацией Если вы хотите использовать отдельную директорию: Создайте папку, например `~/k8s_config` и переместите в него ранее скачанный kubeconfig. В списке кластеров Lens наведите курсор на «Local Kubeconfig», нажмите «+», и выберите пункт «Add kubeconfig from filesystem». ![Selection 335](https://content.timeweb.com/assets/22447d38-c9a4-4a50-87b4-4fcc9e6f6fe8.png?width=1435&height=890) _Настройка кастомной директории в интерфейсе [Lens](https://lenshq.io/)_ Укажите путь к kubeconfig. После добавления нажмите на имя кластера в списке для подключения. ![Screenshot 06 10 25 17:05:20](https://content.timeweb.com/assets/bc6a8009-2ee6-43b9-980a-105cd5e9daa4.png?width=1434&height=893) _Отображение кластера в интерфейсе [Lens](https://lenshq.io/)_ О возможностях управления кластером через IDE Lens можно ознакомиться в [официальной документации](https://docs.k8slens.dev). # Freelens Source: https://timeweb.cloud/docs/k8s/cluster-connection/freelens Freelens — это форк популярного инструмента для управления Kubernetes-кластерами [Lens](https://timeweb.cloud/docs/k8s/cluster-connection/lens). В отличие от оригинального Lens, Freelens полностью открытый и не требует регистрации или подключения к облачным сервисам, не содержит проприетарных компонентов. ## Установка Homebrew Для установки Freelens на macOS используйте Homebrew: ```shell brew install --cask freelens ``` Snap На Linux установка доступна через Snap: ```shell snap install freelens --classic ``` Winget В Windows воспользуйтесь winget: ```shell winget install Freelensapp.Freelens ``` Установка вручную Вы можете загрузить бинарные файлы с [официальной страницы релизов](https://github.com/freelensapp/freelens/releases) на GitHub. ## Подключение к кластеру Freelens использует стандартный kubeconfig для подключения к кластеру. Вы можете хранить конфигурационные файлы как в системной директории `~/.kube`, так и в любом удобном месте. Скачайте файл конфигурации из панели управления в разделе «Дашборд» созданного кластера. ![Selection 333](https://content.timeweb.com/assets/1c323875-1084-441c-91d0-81b65b34c500.png?width=1015&height=883) ### Использование стандартной папки Если вы разместите скачанный kubeconfig в директории `~/.kube`, Freelens автоматически определит кластер. Перейдите в раздел «Catalog» → «Clusters» — кластер будет отображен в списке. Вы также можете перейти к нему с помощью кнопки «Browse Clusters in Catalog» на стартовом экране. ### Пользовательская папка с конфигурацией Если вы хотите использовать отдельную директорию: 1. Создайте папку, например `~/k8s_config` и переместите в него ранее скачанный kubeconfig. 2. В Freelens откройте раздел Clusters, нажмите «+» в правом нижнем углу. ![Selection 332](https://content.timeweb.com/assets/27da55ed-d1c2-450f-9af6-7a059432b31b.png?width=1430&height=892) _Раздел «Clusters» в интерфейсе [Freelens](https://freelensapp.github.io/)_ 3. Укажите путь к файлу или к папке, содержащей один или несколько конфигов. 4. После добавления нажмите на имя кластера в списке для подключения. # Автомасштабирование Source: https://timeweb.cloud/docs/k8s/kubernetes-autoscaling - [Автомасштабирование Kubernetes](https://timeweb.cloud/docs/k8s/kubernetes-autoscaling/kubernetes-autoscaler) - [Автомасштабирование до нуля нод](https://timeweb.cloud/docs/k8s/kubernetes-autoscaling/autoscaling-to-zero-nodes) # Автомасштабирование Kubernetes Source: https://timeweb.cloud/docs/k8s/kubernetes-autoscaling/kubernetes-autoscaler Автомасштабирование в Kubernetes позволяет гибко управлять ресурсами кластера, автоматически добавляя или удаляя ноды и поды в зависимости от нагрузки. > [!NOTE] > Опция доступна только для кластеров, созданных после **8 ноября 2024 года**. Для кластеров, созданных ранее, данная возможность недоступна, даже при настройке через панель управления. ## Включение автомасштабирования при создании кластера Для включения автомасштабирования на этапе создания кластера, необходимо выбрать опцию «Автомасштабирование» в разделе «Конфигурация воркер-нод». ![Scr 20250820 Kkhn](https://content.timeweb.com/assets/2b0a72e8-9c55-499d-8232-ee4279becfe1.png?width=1024&height=1356) Минимальное количество нод на этапе создания кластера — 1. ## Включение автомасштабирования для существующего кластера Если кластер уже создан, включить автомасштабирование можно следующим образом: 1. Перейдите на вкладку «Ресурсы». 2. Выберите «Редактировать группу». ![Image1](https://content.timeweb.com/assets/9246e715-bd10-4d4a-998c-08178ece5a33.png?width=790&height=340) В появившемся меню включите опцию автомасштабирования для группы. ![Scr 20250820 Kkvg](https://content.timeweb.com/assets/afba6b1e-0097-4125-8c91-c31d9752de28.png?width=1002&height=1654) Минимальное количество нод — 0. ## Принцип работы автомасштабирования Для управления созданием и удалением нод используются следующие параметры: ```bash --scale-down-unneeded-time 5m0s --max-scale-down-parallelism 1 --provisioning-request-max-backoff-time 2m0s --max-inactivity 3m0s --scale-down-delay-after-add 2m0s --max-node-provision-time 10m0s --scan-interval 2m0s --scale-up-from-zero=true --scale-down-unready-enabled=true --scale-down-unready-time=30m0s ``` | **Параметр** | **Описание** | | --- | --- | | `scale-down-unneeded-time` | Время, в течение которого нода должна простаивать перед удалением (5 минут). | | `max-scale-down-parallelism` | Максимальное количество нод, которые могут быть удалены одновременно (1). | | `provisioning-request-max-backoff-time` | Максимальное время ожидания между повторными попытками создания ноды (2 минуты). | | `max-inactivity` | Максимальное время бездействия кластера перед началом уменьшения количества нод (3 минуты). | | `scale-down-delay-after-add` | Минимальное время ожидания после добавления ноды перед возможным уменьшением (2 минуты). | | `max-node-provision-time` | Максимальное время, отводимое на создание новой ноды (10 минут). | | `scan-interval` | Интервал проверки состояния кластера и необходимости масштабирования (2 минуты). | | `scale-up-from-zero` | Разрешает масштабирование группы нод с нулевого количества. | | `scale-down-unready-enabled` | Разрешает удаление нод, находящихся в состоянии `NotReady`. | | `scale-down-unready-time` | Время, после которого нода в состоянии `NotReady` может быть удалена (30 минут). | Эти параметры определяют, как быстро добавляются или удаляются ноды в зависимости от текущей нагрузки. Например, если нагрузка снижается и нода простаивает более 5 минут, она может быть удалена. При этом удаление выполняется постепенно, не более одной ноды одновременно, чтобы избежать резкого сокращения ресурсов. При увеличении нагрузки автоскейлер анализирует состояние кластера с интервалом 2 минуты и может инициировать создание новых нод. На создание ноды отводится до 10 минут, а повторные попытки при ошибках выполняются с увеличивающимся интервалом, но не более 2 минут. Такой подход позволяет поддерживать баланс между доступностью ресурсов и их экономичным использованием. ### Настройка параметров автомасштабирования Для кластеров версии `1.34` и выше доступна настройка параметров автомасштабирования. При создании или редактировании группы нод нажмите кнопку «Расширенные параметры». ![Scr 20260413 Mctx](https://content.timeweb.com/assets/b894b30e-0612-4c7f-b835-d776caddb5c9.png?width=2054&height=1648) В открывшемся списке можно задать параметры: - `ScaleDownUtilizationThreshold` — порог утилизации CPU или памяти, ниже которого нода считается кандидатом на удаление. Значение от `0` до `1`. По умолчанию: `0.5`. - `ScaleDownUnneededDuration` — время, в течение которого нода должна оставаться неиспользуемой перед удалением. Минимальное значение — 5 минут. По умолчанию: 5 минут. - `ScaleDownUnreadyDuration` — время, по истечении которого нода в состоянии NotReady может быть удалена. Если включен автохилер, параметр игнорируется, чтобы избежать конфликтов. По умолчанию: 15 минут. - `MaxNodeProvisionDuration` — максимальное время ожидания создания новой ноды. Если нода не была создана за это время, операция считается неуспешной. По умолчанию: 10 минут. - `ZeroOrMaxNodeScaling` — режим масштабирования группы нод: при включении группа масштабируется сразу до максимального размера или до нуля, при выключении — постепенно, по одной ноде. По умолчанию: выключено. - `IgnoreDaemonSetsUtilization` — учитывать ли ресурсы, занятые DaemonSet, при принятии решения об удалении ноды: включено — не учитывать, выключено — учитывать. По умолчанию: выключено. > [!NOTE] > Параметры применяются в кластере в течение 2 минут после сохранения изменений. Чтобы вернуть значения параметров к исходным, нажмите кнопку «Вернуть значения по умолчанию». ## Требования к кластеру Максимальное количество нод в группе не может превышать максимально допустимое количество воркер-нод в кластере. Например, если для всего кластера установлено ограничение в 100 нод, а одна из групп уже использует 30 нод, для новой группы можно установить максимум 70 нод. ## Настройка ресурсов для подов Автомасштабирование работает только в том случае, если в деплойменте указаны ресурсы `requests` и `limits`. Ниже приведен пример файла деплоймента: ```yml apiVersion: apps/v1 kind: Deployment metadata: name: example-deployment spec: selector: matchLabels: app: example template: metadata: labels: app: example spec: containers: - name: example-container image: example-image resources: requests: cpu: "200m" memory: "256Mi" limits: cpu: "400m" memory: "512Mi" ``` Лимиты CPU измеряются в миллиядрах (`m`), где 1000m равняется одному ядру. Лимиты памяти измеряются в мебибайтах (`Mi`) или гибибайтах (`Gi`). ## Использование nodeSelector и nodeAffinity Если в манифесте пода используется `nodeSelector` или `nodeAffinity`, Kubernetes размещает под только на тех нодах, которые соответствуют указанным условиям. Это влияет и на автомасштабирование: автоскейлер сможет создать новую ноду только в той группе, где такой под может быть запущен. Если подходящей группы нод нет, под останется в состоянии `Pending`, даже если автомасштабирование в кластере включено. ### Пример с nodeSelector `nodeSelector` подходит для простых случаев, когда нужно запускать поды только на нодах с определенным лейблом. Например, если приложение должно работать только в определенной группе нод, можно использовать такой манифест: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: worker-deployment spec: replicas: 1 selector: matchLabels: app: worker template: metadata: labels: app: worker spec: nodeSelector: workload-type: background containers: - name: worker image: busybox command: ["sh", "-c", "sleep infinity"] resources: requests: cpu: "100m" memory: "128Mi" limits: cpu: "200m" memory: "256Mi" ``` В этом примере под может быть запущен только на нодах с лейблом `workload-type=background`. Если в кластере нет подходящих нод, автоскейлер сможет добавить новую ноду только в ту группу, где используется такой лейбл. ### Пример с nodeAffinity `nodeAffinity` используется, когда требуется более гибко задать условия размещения подов. В отличие от `nodeSelector`, он позволяет использовать выражения с различными операторами и комбинировать несколько условий. Ниже приведен пример, эквивалентный предыдущему `nodeSelector`, но реализованный через `nodeAffinity`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: api-deployment spec: replicas: 1 selector: matchLabels: app: api template: metadata: labels: app: api spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: workload-type operator: In values: - api containers: - name: api image: nginx:latest resources: requests: cpu: "200m" memory: "256Mi" limits: cpu: "400m" memory: "512Mi" ``` В этом случае под будет размещаться только на нодах с лейблом `workload-type=api`. В этом примере используется оператор In, который позволяет указать одно или несколько допустимых значений для лейбла. `nodeAffinity` поддерживает и другие операторы, например: - `In` — значение лейбла должно входить в указанный список; - `NotIn` — значение лейбла не должно входить в указанный список; - `Exists` — достаточно наличия лейбла на ноде; - `DoesNotExist` — лейбл должен отсутствовать; - `Gt` — значение лейбла должно быть больше указанного (используется для числовых значений); - `Lt` — значение лейбла должно быть меньше указанного (используется для числовых значений). Операторы позволяют задавать более сложные правила размещения подов, чем при использовании `nodeSelector`. Используйте `nodeSelector`, если достаточно простой привязки по одному или нескольким фиксированным значениям. Если нужны более сложные условия размещения, применяйте `nodeAffinity`. ## Настройка Horizontal Pod Autoscaler (HPA) Horizontal Pod Autoscaler (HPA) используется для динамического изменения количества подов в зависимости от потребления ресурсов, таких как процессор или память. HPA масштабирует поды, чтобы поддерживать заданный уровень использования ресурсов и адаптироваться к изменяющимся условиям нагрузки. Ниже приведен пример манифеста HPA: ```yml apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: example-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: example-deployment minReplicas: 1 maxReplicas: 5 targetCPUUtilizationPercentage: 50 ``` #### Подробное описание параметров HPA - `apiVersion`: Определяет версию API, используемую для создания ресурса. В данном случае это `autoscaling/v1`. - `kind`: Тип создаваемого ресурса, здесь — `HorizontalPodAutoscaler`. - `metadata`: Содержит информацию о метаданных, включая имя HPA (`example-hpa`). - `scaleTargetRef`: Указывает объект, который нужно масштабировать. Здесь задаются: - `apiVersion`: Версия API ресурса, который будет масштабироваться. - `kind`: Тип ресурса, который масштабируется, в данном случае — `Deployment`. - `name`: Имя ресурса, который необходимо масштабировать (`example-deployment`). - `minReplicas`: Минимальное количество реплик подов, которые должны поддерживаться, в данном случае — 1. - `maxReplicas`: Максимальное количество реплик подов, до которого можно масштабироваться, здесь — 5. - `targetCPUUtilizationPercentage`: Процент загрузки процессора, при котором будет изменяться количество реплик. В этом примере установлено значение 50, что означает, что количество реплик будет изменяться для поддержания среднего использования CPU на уровне 50%. ## Практический пример использования автомасштабирования Для практического примера создадим деплоймент Nginx, который будет служить базой для настройки автомасштабирования: **Файл** `deployment.yaml`: ```yml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx resources: requests: cpu: "250m" memory: "512Mi" limits: cpu: "500m" memory: "1Gi" ``` Этот деплоймент создает под Nginx с установленными ограничениями на использование ресурсов, что необходимо для корректной работы HPA. ### Настройка горизонтального автомасштабирования подов на примере Nginx Для демонстрации автомасштабирования подов на примере Nginx необходимо использовать объект `HorizontalPodAutoscaler` (HPA). HPA автоматически регулирует количество реплик подов в зависимости от потребления ресурсов. Пример файла HPA: **Файл** `hpa.yaml`: ```yml apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: nginx-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx-deployment minReplicas: 1 maxReplicas: 4 targetCPUUtilizationPercentage: 20 ``` В данном примере HPA регулирует количество реплик пода `nginx-deployment` в зависимости от загрузки процессора, поддерживая ее на уровне 20%. ### Настройка балансировщика нагрузки Для правильного распределения нагрузки между подами рекомендуется использовать объект `Service` с типом `LoadBalancer`. Пример файла конфигурации сервиса: **Файл** `service.yaml`: ```yml apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer ``` Этот сервис обеспечивает доступ к подам, используя балансировку нагрузки по нескольким портам. ### Применение настроек Для применения YAML-файлов необходимо использовать команды: ```shell kubectl apply -f nginx-deployment.yaml kubectl apply -f nginx-hpa.yaml kubectl apply -f nginx-service.yaml ``` Эти команды применят конфигурации деплоймента, HPA и балансировщика, создавая все необходимые компоненты для работы автомасштабирования. ### Демонстрация увеличения количества нод под нагрузкой Перед тем как приступить к генерации нагрузки, убедитесь, что все ресурсы успешно созданы и находятся в состоянии `Running`. Чтобы увидеть, как работает автомасштабирование, можно сгенерировать нагрузку на наш сервис. Для этого воспользуемся утилитой [hey](https://github.com/rakyll/hey), которая отправляет HTTP-запросы для тестирования производительности: Генерируем нагрузку: ```shell hey -z 10m -c 20 http://ip_балансировщика ``` Этот запрос будет генерировать нагрузку в течение 10 минут с 20 параллельными подключениями к сервису Nginx, что приведет к увеличению использования ресурсов и, как следствие, к масштабированию количества реплик деплоймента и, при необходимости, количества воркер-нод. Спустя некоторое время после запуска утилиты, вы можете увидеть, что количество нод увеличилось. Увидеть это можно в панели управления или выполнив команду: ```shell kubectl get nodes ``` Также количество подов увеличилось до 4, как описано в `hpa.yaml`: ```shell kubectl get pods ``` # Автомасштабирование до нуля нод Source: https://timeweb.cloud/docs/k8s/kubernetes-autoscaling/autoscaling-to-zero-nodes Автоматическое масштабирование группы нод до нуля позволяет экономить ресурсы, когда они не используются. Это удобно для разовых задач — например, Job — или стейдж-окружений, которые неактивны ночью. > [!NOTE] > Масштабирование до нуля нод — это частный случай [автомасштабирования](https://timeweb.cloud/docs/k8s/kubernetes-autoscaling/kubernetes-autoscaler). Поэтому принципы работы, ограничения и требования, описанные для обычного автомасштабирования, действуют и здесь. ## Требования Чтобы масштабирование до нуля работало, в кластере должны быть еще как минимум две постоянно активные ноды. Они могут располагаться в разных группах. Эти ноды используются для работы системных компонентов Kubernetes. ## Настройка подов Чтобы автоскейлер мог запускать ноды в нужной группе, укажите в манифесте условие размещения через `nodeSelector` или `nodeAffinity`. В качестве условия можно использовать ID группы воркер-нод или [пользовательский лейбл](https://timeweb.cloud/docs/k8s/kubernetes-autoscaling/kubernetes-autoscaler#ispolzovanie-nodeselector-i-nodeaffinity), заданный для этой группы. Лейблы позволяют гибко управлять размещением подов и не привязываться к конкретным ID. #### Как найти ID группы 1. Перейдите в панель управления кластером. 2. Откройте вкладку «Ресурсы». 3. Нажмите на три точки рядом с нужной группой и выберите «Редактировать группу». ![Scr 20250820 Kpwe](https://content.timeweb.com/assets/c5beeff6-63da-44d0-bbee-d34d62e6f6a7.png?width=2012&height=1112) 4. ID группы будет указан в URL, например: ```shell https://timeweb.cloud/my/kubernetes/1048329/54289/edit ``` Здесь: - `1048329` — ID кластера, - `54289` — ID группы узлов. Пример с `nodeSelector`: ```yaml nodeSelector: k8s.timeweb.cloud/cluster-node-group-id: "54289" ``` Пример с `nodeAffinity`: ```yaml affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: k8s.timeweb.cloud/cluster-node-group-id operator: In values: - "54289" ``` ## Когда масштабирование до нуля не сработает Автоскейлер не сможет удалить последнюю ноду в группе в следующих случаях: - У пода установлена аннотация: `cluster-autoscaler.kubernetes.io/safe-to-evict: "false"` - Поды нельзя переместить на другие узлы из-за ограничений планировщика. - Есть `PodDisruptionBudget`, который не позволяет удалить поды без превышения лимита. - Под не управляется контроллером (`Deployment`, `StatefulSet`, `Job`, `ReplicaSet`). ## Практический пример В этом примере создадим группу узлов с включенным масштабированием до нуля, запустим в ней Job и посмотрим, как кластер автоматически создаст ноду для выполнения задачи и удалит ее после завершения. При создании группы воркер-нод можно сразу задать пользовательские лейблы и использовать их для размещения подов. В этом примере для простоты будем использовать ID группы. ### Предварительные требования Существующий кластер Kubernetes хотя бы с одной группой нод. ### Создание группы нод с масштабированием до нуля 1. Перейдите во вкладку «Ресурсы» в панели управления. 2. Нажмите «Добавить группу». 3. Выберите конфигурацию воркер-нод. 4. Включите переключатель «Автомасштабирование» и установите минимальное количество нод равным 0. ![Scr 20250820 Luzj](https://content.timeweb.com/assets/d1bb381b-2c90-4046-9bc0-93625989f393.png?width=1032&height=1570) После создания группы появится одна нода, которая будет автоматически удалена, если на ней не запущены пользовательские поды. Теперь в кластере есть две группы: - группа с активными нодами, которые не масштабируются в 0; - группа с включенным масштабированием до 0. В нашем примере ее ID — `54289`. ![Scr 20250820 Lxah](https://content.timeweb.com/assets/e7c2d2a7-576c-41cc-8393-441d4df5826c.png?width=1528&height=704) ### Проверка существующих нод Выполните команду: ```bash kubectl get nodes ``` Пример вывода: ```bash NAME STATUS ROLES AGE VERSION worker-192.168.0.25 Ready 21h v1.33.3+k0s worker-192.168.0.8 Ready 22h v1.33.3+k0s ``` ### Создание Job Создайте файл `job.yaml` со следующим содержимым: ```yaml apiVersion: batch/v1 kind: Job metadata: name: hello-job spec: ttlSecondsAfterFinished: 30 template: metadata: name: hello-job spec: restartPolicy: Never nodeSelector: k8s.timeweb.cloud/cluster-node-group-id: "54289" containers: - name: hello image: busybox command: - sh - -c - 'i=0; while [ $i -lt 10 ]; do echo "Hello from job"; sleep 30; i=$((i+1)); done' resources: requests: cpu: "50m" memory: "32Mi" limits: cpu: "100m" memory: "64Mi" ``` Это задание запускает контейнер с образом `busybox`, который выводит сообщение в лог 10 раз с интервалом 30 секунд. **Обратите внимание**: в секции `nodeSelector` указан ID группы нод (`54289`). Примените манифест: ```bash kubectl apply -f job.yaml ``` Проверьте список подов: ```bash kubectl get pod ``` Пример вывода: ```shell NAME READY STATUS RESTARTS AGE hello-job-s7ktd 0/1 Pending 0 4s ``` Под находится в статусе `Pending`, так как в группе пока нет нод. Перейдите в раздел «Ресурсы» панели управления. Вы увидите, что началось создание ноды в группе с автомасштабированием. ![Scr 20250820 Mugx](https://content.timeweb.com/assets/fb105bee-98cb-4edc-a648-f469b429ab9c.png?width=2010&height=1090) После ее создания проверьте список нод: ```bash kubectl get nodes ``` Пример вывода: ```shell NAME STATUS ROLES AGE VERSION worker-192.168.0.25 Ready 21h v1.33.3+k0s worker-192.168.0.6 Ready 7m v1.33.3+k0s worker-192.168.0.8 Ready 22h v1.33.3+k0s ``` `worker-192.168.0.6` — это новая нода, созданная для Job. Проверьте под снова: ```shell kubectl get pod ``` Пример вывода: ```shell NAME READY STATUS RESTARTS AGE hello-job-s7ktd 1/1 Running 0 5m30s ``` Теперь под запущен. ### Завершение задания и удаление ноды После выполнения Job на ноду, где она запускалась, будет установлен тейнт. Посмотрите его командой: ```bash kubectl describe node worker-192.168.0.6 ``` Найдите строку: ```yml Taints: DeletionCandidateOfClusterAutoscaler=1755679271:PreferNoSchedule ``` Это означает, что нода помечена на удаление. Через 2 минуты после установки тейнта она будет удалена. Проверьте это: ```shell kubectl get nodes ``` # Доступ и пользователи Source: https://timeweb.cloud/docs/k8s/access - [Управление пользователями](https://timeweb.cloud/docs/k8s/access/manage-users) - [Подключение OIDC-провайдера к кластеру](https://timeweb.cloud/docs/k8s/access/connect-oidc-provider-to-cluster) # Управление пользователями Source: https://timeweb.cloud/docs/k8s/access/manage-users В кластерах Kubernetes доступ к кластеру настраивается средствами самого Kubernetes. Конфигурационный файл `kubeconfig`, который скачивается из панели управления, содержит административные учетные данные и подходит для первичной настройки кластера. Если с кластером работают несколько сотрудников, не рекомендуется использовать один общий административный `kubeconfig`. Если такой файл попадет к постороннему человеку или останется у сотрудника после увольнения, отозвать доступ только для него не получится. Безопаснее создать отдельную учетную запись для каждого пользователя и выдать необходимые права через RBAC. Рассмотрим настройку персонального доступа через `ServiceAccount`, `RoleBinding` или `ClusterRoleBinding` и отдельный `kubeconfig` с токеном. ## Подготовка Для выполнения действий потребуется кластер Kubernetes, административный `kubeconfig`, скачанный из панели управления, и установленная [утилита kubectl](https://timeweb.cloud/docs/k8s/cluster-connection/kubectl). Чтобы скачать `kubeconfig`, перейдите на страницу управления кластером Kubernetes в панели управления. Во вкладке «Дашборд» нажмите ссылку «скачайте файл конфигурации». Скачанный файл будет иметь имя `twc-имя_кластера.yaml`. Проверьте подключение к кластеру: ```bash kubectl --kubeconfig=twc-имя_кластера.yaml get nodes ``` Если команда возвращает список нод, можно переходить к созданию учетной записи. ## Создание пространства для учетных записей Для управления учетными записями удобно создать отдельный неймспейс, например `kube-users`: ```bash kubectl create namespace kube-users ``` Создадим учетную запись для пользователя `twcuser`: ```bash kubectl create serviceaccount twcuser -n kube-users ``` В дальнейшем имя этой учетной записи будет использоваться при выдаче прав и выпуске токена. ## Выдача прав пользователю Права в Kubernetes выдаются через RBAC. Для этого используются: - `RoleBinding` — выдает права в пределах одного неймспейса; - `ClusterRoleBinding` — выдает права на уровне всего кластера. Выдавайте пользователю только минимально необходимые права. Если достаточно доступа к одному неймспейсу, используйте `RoleBinding` вместо `ClusterRoleBinding`. ### Доступ к одному неймспейсу Если пользователю нужен доступ только к одному неймспейсу, создайте `RoleBinding` в этом неймспейсе. В примере ниже пользователь `twcuser` получает права на изменение ресурсов в неймспейсе `app-prod`: ```bash kubectl create namespace app-prod kubectl create rolebinding twcuser-app-prod-edit \ --namespace app-prod \ --clusterrole edit \ --serviceaccount kube-users:twcuser ``` Вместо роли `edit` можно использовать другую встроенную роль: | **Роль** | **Описание** | | --- | --- | | `view` | Просмотр ресурсов без возможности изменять их. | | `edit` | Создание и изменение большинства ресурсов в неймспейсе. | | `admin` | Управление ресурсами в неймспейсе, включая роли и привязки ролей. | | `cluster-admin` | Полный административный доступ ко всему кластеру. | В таблице перечислены стандартные пользовательские `ClusterRole` Kubernetes. Но также [можно создать собственные ClusterRole](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#kubectl-create-clusterrole) с нужными правилами, если стандартных ролей недостаточно. Для проверки прав выполните: ```bash kubectl auth can-i create deployments \ --as system:serviceaccount:kube-users:twcuser \ -n app-prod ``` Если доступ выдан корректно, команда вернет: ```shell yes ``` ### Доступ ко всему кластеру Если пользователю нужен полный административный доступ ко всему кластеру, создайте `ClusterRoleBinding`: ```bash kubectl create clusterrolebinding twcuser-cluster-admin \ --clusterrole cluster-admin \ --serviceaccount kube-users:twcuser ``` Используйте роль `cluster-admin` только для администраторов кластера. Для команд разработчиков безопаснее выдавать доступ в пределах нужного неймспейса. ## Создание токена Для подключения через `kubectl` пользователю нужен токен. В Kubernetes можно использовать временный токен или долгоживущий токен, сохраненный в `Secret`. ### Временный токен Временный токен создается командой `kubectl create token`. Например, выпустим токен на 24 часа: ```bash TOKEN=$(kubectl create token twcuser -n kube-users --duration=24h) ``` Посмотреть значение токена можно командой: ```bash echo "${TOKEN}" ``` Временный токен автоматически перестанет работать после окончания срока действия. У временных токенов нет отдельного объекта в кластере, поэтому отозвать один конкретный временный токен до истечения срока действия нельзя. Если нужно срочно закрыть доступ, удалите права пользователя или сам `ServiceAccount`. ### Долгоживущий токен Если нужен токен без заданного срока действия, создайте `Secret` типа `kubernetes.io/service-account-token`. Такой токен можно отозвать удалением `Secret`. Создайте файл `twcuser-token-secret.yaml`: ```yaml apiVersion: v1 kind: Secret metadata: name: twcuser-token namespace: kube-users annotations: kubernetes.io/service-account.name: twcuser type: kubernetes.io/service-account-token ``` Примените манифест: ```bash kubectl apply -f twcuser-token-secret.yaml ``` Получите значение секрета: ```bash TOKEN=$(kubectl get secret twcuser-token \ -n kube-users \ -o jsonpath='{.data.token}' | base64 -d) ``` Долгоживущие токены следует использовать только там, где временного токена недостаточно. Такой токен необходимо хранить как секретные учетные данные. ## Создание kubeconfig для пользователя Создадим отдельный файл `kubeconfig`, в котором будут данные кластера и токен пользователя `twcuser`. Сначала получим параметры текущего кластера из административного `kubeconfig`: ```bash CLUSTER_NAME=$(kubectl config view --minify -o jsonpath='{.clusters[0].name}') CLUSTER_SERVER=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}') kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 -d > ca.crt ``` Создайте новый файл конфигурации: ```bash kubectl config --kubeconfig=twcuser.kubeconfig set-cluster "${CLUSTER_NAME}" \ --server="${CLUSTER_SERVER}" \ --certificate-authority=ca.crt \ --embed-certs=true kubectl config --kubeconfig=twcuser.kubeconfig set-credentials twcuser \ --token="${TOKEN}" kubectl config --kubeconfig=twcuser.kubeconfig set-context twcuser-context \ --cluster="${CLUSTER_NAME}" \ --user=twcuser kubectl config --kubeconfig=twcuser.kubeconfig use-context twcuser-context ``` Если пользователь должен работать в конкретном неймспейсе, добавьте его в контекст: ```bash kubectl config --kubeconfig=twcuser.kubeconfig set-context twcuser-context \ --cluster="${CLUSTER_NAME}" \ --user=twcuser \ --namespace=app-prod ``` После этого файл `twcuser.kubeconfig` можно передать пользователю. ### Пример готового kubeconfig Ниже приведен пример пользовательского `kubeconfig` с авторизацией по токену. Значения `certificate-authority-data`, `server` и `token` будут отличаться в вашем кластере. ```yaml apiVersion: v1 clusters: - cluster: certificate-authority-data: server: https://:6443 name: twc-example-cluster contexts: - context: cluster: twc-example-cluster namespace: app-prod user: twcuser name: twcuser-context current-context: twcuser-context kind: Config preferences: {} users: - name: twcuser user: token: ``` В готовом файле не должно быть административного пользователя, клиентского сертификата или приватного ключа из исходного `kubeconfig`. Перед передачей файла пользователю убедитесь, что в секции `users` осталась только учетная запись с токеном пользователя. ## Проверка доступа Проверьте работу нового `kubeconfig`: ```bash kubectl --kubeconfig=twcuser.kubeconfig get pods -n app-prod ``` Если пользователю выдан доступ только к неймспейсу `app-prod`, запросы к другим неймспейсам будут запрещены. Например: ```bash kubectl --kubeconfig=twcuser.kubeconfig get pods -n default ``` В этом случае Kubernetes вернет ошибку доступа: ```bash Error from server (Forbidden): pods is forbidden ``` Для проверки конкретного действия можно использовать команду `kubectl auth can-i`: ```bash kubectl --kubeconfig=twcuser.kubeconfig auth can-i update deployments -n app-prod ``` ## Отзыв доступа Способ отзыва зависит от того, какой доступ нужно отключить. ### Удаление прав пользователя Чтобы запретить пользователю выполнять действия в неймспейсе, удалите соответствующий `RoleBinding`: ```bash kubectl delete rolebinding twcuser-app-prod-edit -n app-prod ``` Если пользователю был выдан доступ на уровне всего кластера, удалите `ClusterRoleBinding`: ```bash kubectl delete clusterrolebinding twcuser-cluster-admin ``` После удаления привязки токен может оставаться технически действительным, но прав на выполнение действий у пользователя уже не будет. ### Отзыв долгоживущего токена Если токен был создан через `Secret`, удалите этот `Secret`: ```bash kubectl delete secret twcuser-token -n kube-users ``` После удаления `Secret` токен перестанет проходить аутентификацию. ### Полное удаление учетной записи Чтобы полностью удалить пользователя, удалите его `ServiceAccount`: ```bash kubectl delete serviceaccount twcuser -n kube-users ``` При удалении `ServiceAccount` выпущенные для него токены перестанут работать. Отзыв может примениться не мгновенно: Kubernetes может кэшировать результаты проверки токенов в течение короткого времени. После удаления учетной записи также удалите связанные `RoleBinding` и `ClusterRoleBinding`, если они больше не нужны. # Подключение OIDC-провайдера к кластеру Source: https://timeweb.cloud/docs/k8s/access/connect-oidc-provider-to-cluster OpenID Connect (OIDC) — это протокол аутентификации, работающий на основе OAuth 2.0. С его помощью можно настроить авторизацию пользователей в кластере Kubernetes через сервисы аутентификации, такие как Google, Keycloak, Dex, GitHub и другие. ## Настройка OIDC-провайдера Подключение OIDC-провайдера можно настроить при создании кластера — в разделе «Дополнения»: ![Screenshot 05 27 25 18:34:35](https://content.timeweb.com/assets/b86268c7-3755-41db-a660-d3226e281145.png?width=420&height=623) Или позже — в разделе «Управление» в панели управления уже созданным кластером. Для настройки нажмите кнопку «Подключить». ![Selection 273](https://content.timeweb.com/assets/8b96f033-819c-4f3d-a85f-b0d510dc8c4e.png?width=1915&height=957) При настройке укажите значения: - **Название подключения** (обязательное поле) — имя подключения, отображается только в панели управления и не влияет на работу OIDC. - **Issuer URL** (обязательное поле) — адрес OIDC-провайдера. Обычно это URL вида `https://<домен>/realms/` для Keycloak или `https://accounts.google.com` для Google. - **Client ID** (обязательное поле) — идентификатор клиента, зарегистрированного у провайдера OIDC. - **Username claim** — имя поля в ID-токене, которое Kubernetes будет использовать в качестве имени пользователя (например, `sub`, `preferred_username` или `email`). - **Groups claim** — имя поля в ID-токене, содержащего список групп пользователя. Используется для настройки доступа через RBAC по группам. После указания необходимых параметров нажмите на кнопку «Сохранить». ## Установка kubelogin Утилита `kubelogin` используется для получения ID-токена от провайдера и передачи его Kubernetes при выполнении команд через `kubectl`. Linux Скачайте архив с последней версией утилиты: ```shell curl -LO https://github.com/int128/kubelogin/releases/latest/download/kubelogin_linux_amd64.zip ``` Распакуйте архив: ```shell unzip kubelogin_linux_amd64.zip ``` Сделайте бинарный файл исполняемым: ```shell chmod +x kubelogin ``` Переместите его в системный путь, чтобы можно было запускать из любой директории: ```shell sudo mv kubelogin /usr/local/bin/ ``` macOS Выполните установку с помощью Homebrew: ```shell brew install kubelogin ``` Windows Установите утилиту через Chocolatey: ```shell choco install kubelogin ``` Krew Если вы используете Krew — менеджер плагинов для `kubectl`, выполните: ```shell kubectl krew install oidc-login ``` ## Получение токена Для получения токена выполните команду: ```shell kubelogin get-token \ --oidc-issuer-url=https://адрес_oidc-провайдера \ --oidc-client-id=id_клиента \ --oidc-client-secret=секрет ``` После запуска откроется окно авторизации. Введите логин и пароль пользователя, которому необходимо выдать доступ. После успешной авторизации будет выведен токен в формате JSON. ```shell {"kind":"ExecCredential","apiVersion":"client.authentication.k8s.io/v1beta1","spec":{"interactive":false},"status":{"expirationTimestamp":"2025-04-24T08:48:30Z","token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ3X3AxNzlsdkkzTnltWW01M09GZEpWeDJGeGJ6cGxoX2s5OHVFcmtjRmY4In0.eyJleHAiOjE3NDU0ODQ1MTAsImlhdCI6MTc0NTQ4NDQ1MSwiYXV0aF90aW1lIjoxNzQ1NDg0NDUwLCJqdGkiOiJkNTVmYjkzMy0zY2NlLTRkODYtYTcxZS1lNzc1ODZkN2E2ZGIiLCJpc3MiOiJodHRwczovL2tleWNsb2FrLm5kb2xnaWtoLnNpdGUvcmVhbG1zL21hc3RlciIsImF1ZCI6InRlc3QiLCJzdWIiOiIyY2U5NDk5Ni0zN2NlLTQ1NDEtOGFiOS00ZTk0MWE2YjhmYW123eXAiOiJJRCIsImF6cCI6InRlc3QiLCJub25jZSI6InhuWGNLMTlIVUprRTB0N3BXbVJ6NXJBWC0ya0h4NFpVaGdhbEJ2OW1QsfaiLCJzZXNzaW9uX3N0YXRlIjoiYjZmOWRmNmMtMjNhMS00OGU4LTkwMDQtOWJlYmFmNzY0OGU4IiwiYXRfaGFzaCI6IldocDAtQkdCTmhWNTUwc082eW9wS2ciLCJhY3IiOiIxIiwic2lkIjoiYjZmOWRmNmMtMjNhMS00OGU4LTkwMDQtOWJlYmFmNzY0OGU4IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJuYW1lIjoidGVzdCB0ZXN0IiwicHJlZmVycmVkX3VzZXJuYW1lIjoidGVzdEBtYWlsLnJ1IiwiZ2l2ZW5fbmFtZSI6InRlc3QiLCJmYW1pbHlfbmFtZSI6InRlc3QiLCJlbWFpbCI6InRlc3RAbWFpbC5ydSJ9.GQjRT_gTjsdfuVwhPYCW5DlqL_pbXpiYItIxNvOs9G8jUldV-3LyntQa4Zf4OSwzKldiJ4wZDRa-8pGI-BwD3SO1RxhkbYm_yTFxXDguxNdjstrFcCfLaslhBPqelpKC7DbsIqSLRIoixihPynIEMhEZRxvlDwZuYmWwyn7zMztQyGHPam_ujICIddcODBDBHA2Ksw_ZNwMAoU0sdMlI3fjTJst_Mh3jgzQRpFctc7X75JCL37HcZ6HBb6_9SWfmKHGO3ivFGs1pKtX6XDay8zt65DaEKM41iTjCzr-nKQ1Qk16fRypgsUauSJp_UHiGMiAUHSz66hQdvUr1uByg"}} ``` Для просмотра содержимого токена выполните: ```shell echo "token" | cut -d '.' -f2 | base64 -d | jq ``` В результате будет показан объект с полями, например: ```js { "exp": 1745480015, "iat": 1745479955, "auth_time": 1745479955, "jti": "4d9d243a-f62d-4150-94eb-5c535d2c0ea8", "iss": "https://keycloak.timeweb.cloud/realms/master", "aud": "test-user", "sub": "2ce94996-37ce-4541-8ab9-4e941a6b8faa", "typ": "ID", "azp": "test-user", "nonce": "ubNzQ6KRI746Ab1WPGG3Z5tONUPDPx-sSud4aLKDlT4", "session_state": "e0933444-3a04-4e17-885c-1a7f93e0ebb3", "at_hash": "QpL9mrseqRikRIVEhdQrBQ", "acr": "1", "sid": "e0933444-3a04-4e17-885c-1a7f93e0ebb3", "email_verified": false, "name": "Timeweb Cloud", "preferred_username": "test@example.com", "given_name": "test", "family_name": "test", "email": "test@example.com" } ``` Одно из имен этих параметров вы указывали при настройке OIDC-провайдера в панели управления; по умолчанию используется `sub`. ## Настройка RBAC RBAC (Role-Based Access Control) — это механизм в Kubernetes, который управляет правами пользователей. Он используется для определения того, какие ресурсы может просматривать или изменять пользователь. Более полную информацию вы можете найти [в официальной документации Kubernetes](https://kubernetes.io/docs/reference/access-authn-authz/rbac/). Для настройки RBAC создадим манифест `oidc-access.yaml` со следующим содержанием: ```yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: keycloak-cluster-role rules: - apiGroups: ["*"] resources: ["*"] verbs: ["*"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: keycloak-cluster-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: keycloak-cluster-role subjects: - kind: User name: "https://адрес_oidc-провайдера#sub" apiGroup: rbac.authorization.k8s.io ``` Укажите значение поля `sub` из токена в параметре `name`. Это даст полные права (`cluster-admin`) конкретному пользователю, авторизованному через OIDC. Примените манифест: ```shell kubectl apply -f oidc-access.yaml ``` Если вы хотите выдать доступ только на чтение ресурсов, например, подов в неймспейсе default, примените такой манифест: ```yaml apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: readonly-pods namespace: default rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: readonly-pods-binding namespace: default roleRef: kind: Role name: readonly-pods apiGroup: rbac.authorization.k8s.io subjects: - kind: User name: "https://адрес_oidc-провайдера#sub" apiGroup: rbac.authorization.k8s.io ``` Такой манифест позволит пользователю только просматривать поды в неймспейсе default, не давая доступ к другим ресурсам или пространствам имен. Если при настройке OIDC-провайдера в панели управления вы указали «Username claim» со значением, например, `preferred_username`, то Kubernetes будет использовать его как имя пользователя. В этом случае вы можете упростить `subjects.name` и использовать читаемое имя, например: ```yaml subjects: - kind: User name: "test@example.com" apiGroup: rbac.authorization.k8s.io ``` ## Настройка kubectl для работы с OIDC Для подключения к кластеру через OIDC добавьте пользователя в `kubeconfig`: ```shell kubectl config set-credentials oidc \ --exec-api-version=client.authentication.k8s.io/v1 \ --exec-interactive-mode=IfAvailable \ --exec-command=kubelogin \ --exec-arg=get-token \ --exec-arg=--oidc-issuer-url=https://адрес_oidc-провайдера \ --exec-arg=--oidc-client-id=id_клиента \ --exec-arg=--oidc-client-secret=секрет ``` И назначьте текущий контекст: ```shell kubectl config set-context --current --user=oidc ``` Проверьте, что всё работает, выполнив: ```shell kubectl get pods ``` Откроется окно браузера с запросом на вход. После авторизации команда должна выполниться без ошибок. Если возникает ошибка доступа — убедитесь, что пользователю выданы необходимые права через RBAC. Если все работает корректно, вы можете отключить авторизацию по сертификатам в `kubeconfig`, чтобы использовать только OIDC. Для этого закомментируйте или удалите строки с данными клиента: ```yaml # - name: nt94542-1032513 # user: # client-certificate-data: LS0tLS1CRUdJTiBD… # client-key-data: LS0tLS1CRUdJ… ``` Это позволит использовать OIDC как единственный механизм аутентификации для выбранного пользователя. ## Отключение OIDC-провайдера Чтобы отключить OIDC-провайдера, перейдите в раздел «Управление» в панели управления кластером. Нажмите кнопку «Изменить» рядом с пунктом «OIDC-провайдер», затем — «Удалить». После отключения провайдера все пользователи, подключенные через него, потеряют доступ к кластеру. При этом созданные правила RBAC сохраняются — их необходимо удалить вручную. Найти связанные привязки ролей можно с помощью команды: ```shell kubectl get rolebindings --all-namespaces -o yaml | grep -B5 https://адрес_oidc-провайдера ``` Удалить объекты можно командой: ```shell kubectl delete clusterrolebinding имя ``` Чтобы восстановить доступ, если в `kubeconfig` была указана OIDC-аутентификация, верните настройки с авторизацией по сертификатами или скачайте `kubeconfig` из панели управления. # Сеть и входящий трафик Source: https://timeweb.cloud/docs/k8s/network - [Сетевые плагины](https://timeweb.cloud/docs/k8s/network/network-plugins) - [Балансировщик нагрузки](https://timeweb.cloud/docs/k8s/network/kubernetes-load-balancer) - [Подключение собственного SSL-сертификата к балансировщику](https://timeweb.cloud/docs/k8s/network/connect-custom-ssl-certificate-to-load-balancer) - [Приватные и публичные сервисы](https://timeweb.cloud/docs/k8s/network/public-private-services) - [Виртуальные роутеры](https://timeweb.cloud/docs/k8s/network/virtual-routers-in-kubernetes) # Сетевые плагины Kubernetes Source: https://timeweb.cloud/docs/k8s/network/network-plugins В Kubernetes от Timeweb Cloud можно использовать различные сетевые плагины CNI (Container Network Interface), такие как Calico, Flannel, Kube-router и Cilium. Эти плагины обеспечивают подключение подов к сети, управляют маршрутизацией и поддерживают сетевые политики, обеспечивая надежную и безопасную работу приложений. Каждый из этих плагинов предлагает свой подход к решению сетевых задач в Kubernetes. Calico подходит для высокопроизводительных сетей с расширенными политиками безопасности, Flannel выделяется своей простотой и надежностью для базовых сетевых задач, Kube-router ориентирован на высокопроизводительную маршрутизацию, а Cilium обеспечивает глубокую интеграцию с ядром Linux и продвинутую безопасность. Выбрать плагин можно при создании кластера. Изменить его в дальнейшем нельзя. Рассмотрим особенности каждого плагина, чтобы помочь вам выбрать подходящее решение. ## Calico **Calico** — это высокопроизводительное решение для сети Kubernetes, которое использует маршрутизацию на основе IP для обеспечения связи между подами и внешними сетями. #### Принцип работы Calico использует BGP (Border Gateway Protocol) для обмена маршрутами между узлами кластера. Это позволяет каждому узлу знать, где находятся поды, и маршрутизировать пакеты напрямую, минуя дополнительную обработку, что значительно улучшает производительность. #### Сетевые политики Одним из ключевых преимуществ Calico является поддержка продвинутых сетевых политик. Эти политики позволяют настроить контроль доступа между подами на уровне сетевых пакетов, что важно для безопасности приложений. Например, можно задать, какие поды могут обмениваться данными друг с другом. #### Преимущества - Высокая производительность благодаря маршрутизации без наложений (non-overlay). - Масштабируемость для крупных кластеров. - Поддержка продвинутых сетевых политик для безопасности. ## Flannel **Flannel** — это простой и легкий сетевой плагин, который используется для создания наложенных сетей (overlay networks) в Kubernetes. #### Принцип работы Flannel создает виртуальные сети с помощью протоколов VXLAN или UDP, которые позволяют подам общаться друг с другом. При этом каждому поду назначается IP-адрес из диапазона, зарезервированного для виртуальной сети, и трафик маршрутизируется через туннели между узлами. #### Сетевые политики Flannel не предоставляет продвинутых сетевых политик, как Calico, и не поддерживает маршрутизацию на основе BGP. Это делает его менее сложным, но подходящим для простых сетевых сценариев, особенно в небольших и средних кластерах. #### Преимущества - Простота настройки и эксплуатации. - Подходит для небольших кластеров и случаев, когда не требуются сложные сетевые политики. ## Kube-router **Kube-router** — это легковесный плагин, который фокусируется на маршрутизации третьего уровня сетевой модели (Layer 3) с минимальной задержкой. #### Принцип работы Kube-router использует BGP для маршрутизации трафика между подами на разных узлах. При этом он также предоставляет функции сетевых политик и балансировки нагрузки. Kube-router заменяет стандартный сетевой стек Kubernetes, что снижает сложность и уменьшает накладные расходы на обработку сетевого трафика. #### Сетевые политики Помимо маршрутизации, Kube-router обеспечивает контроль трафика с помощью сетевых политик и балансировку нагрузки для IPVS (IP Virtual Server). #### Преимущества - Высокая производительность и низкая задержка. - Поддержка сетевых политик и балансировки нагрузки. - Легкая интеграция с кластерами с требованиями к высокопроизводительной маршрутизации. ## Cilium **Cilium** — это мощный плагин, который использует eBPF (extended Berkeley Packet Filter) для мониторинга и управления сетевым трафиком на уровне ядра операционной системы. #### Принцип работы Cilium использует eBPF для выполнения сетевых операций прямо в ядре Linux, что позволяет фильтровать, анализировать и контролировать сетевой трафик с высокой точностью и минимальными затратами на обработку. Благодаря этому Cilium обеспечивает глубокий контроль за сетевыми потоками и поддерживает сложные сетевые политики на уровне приложений. #### Сетевые политики Cilium поддерживает стандартные сетевые политики Kubernetes, а также расширенные функции безопасности, такие как фильтрация HTTP-запросов и контроль за взаимодействием на уровне API. #### Преимущества - Поддержка глубокого анализа трафика и политики безопасности на уровне приложений. - Высокая производительность благодаря интеграции с eBPF. - Возможность масштабирования и применения сложных сетевых политик. # Балансировщик нагрузки Kubernetes Source: https://timeweb.cloud/docs/k8s/network/kubernetes-load-balancer Для обеспечения устойчивой работы приложений и равномерного распределения трафика между подами в Kubernetes используется балансировщик нагрузки. Он помогает избежать перегрузки отдельных подов, поддерживая высокую доступность и стабильность сервисов. ## Базовая конфигурация балансировщика нагрузки Для создания балансировщика нагрузки в Kubernetes создадим ресурс типа Service с типом LoadBalancer. Пример базового манифеста: ```yml apiVersion: v1 kind: Service metadata: name: example-balancer namespace: kubernetes-dashboard spec: selector: app.kubernetes.io/name: nginx ports: - port: 80 # Внешний порт для доступа к приложению targetPort: 80 # Порт пода, на который перенаправляется трафик appProtocol: k8s.timeweb.cloud/proto-http type: LoadBalancer ``` В этом примере балансировщик будет перенаправлять трафик с порта 80 на порт 80 внутри подов, соответствующих селектору `app.kubernetes.io/name: nginx`. Если вам нужно добавить несколько правил для балансировки, обязательно указывайте атрибут `name` для каждого порта: ```yml apiVersion: v1 kind: Service metadata: name: example-balancer namespace: kubernetes-dashboard spec: selector: app.kubernetes.io/name: nginx ports: - port: 80 targetPort: 80 appProtocol: k8s.timeweb.cloud/proto-http name: http - port: 443 targetPort: 443 appProtocol: k8s.timeweb.cloud/proto-https name: https type: LoadBalancer ``` Значение атрибута `name` может быть произвольным. Для каждого порта можно указать протокол трафика с помощью атрибута `appProtocol`. Это позволяет явно задать, как будет обрабатываться трафик на стороне балансировщика. По умолчанию используется значение `proto-tcp`. Поддерживаются следующие значения: - `k8s.timeweb.cloud/proto-http` — обычный HTTP-трафик. - `k8s.timeweb.cloud/proto-https` — HTTPS-трафик. - `k8s.timeweb.cloud/proto-tcp` — TCP-трафик. - `k8s.timeweb.cloud/proto-tcp-ssl` — TCP-трафик с поддержкой TLS. - `k8s.timeweb.cloud/proto-http2` - HTTP/2-трафик. После создания балансировщик будет отображаться в панели управления в разделе «[Балансировщики](https://timeweb.cloud/my/balancer)» с лейблом «K8S». ![Scr 20250625 Lyfb](https://content.timeweb.com/assets/6dbaa39c-5fcb-4f2d-8bbb-5f2f6624960f.png?width=2028&height=900) Обратите внимание, что балансировщик, созданный с помощью Kubernetes, нельзя изменить в панели управления или через API — только через `kubectl`. ![Scr 20250625 Llzh](https://content.timeweb.com/assets/134fdea9-bdc8-4bad-b0d0-34ffc7f1c96c.png?width=1514&height=784) ## Дополнительные параметры для настройки балансировщика Для более гибкой настройки балансировщика нагрузки в Kubernetes можно использовать дополнительные параметры. Они указываются в виде аннотаций (`annotations`) в манифесте `Service`. Пример манифеста с параметрами, заданными через аннотации: ```yaml apiVersion: v1 kind: Service metadata: name: example-balancer namespace: kubernetes-dashboard labels: app: nginx annotations: k8s.timeweb.cloud/attached-loadbalancer-algo: "leastconn" k8s.timeweb.cloud/attached-loadbalancer-ddos-guard-external-ip: "true" spec: selector: app.kubernetes.io/name: nginx ports: - port: 80 appProtocol: k8s.timeweb.cloud/proto-http targetPort: 80 type: LoadBalancer ``` В этом примере задаются два дополнительных параметра: - `k8s.timeweb.cloud/attached-loadbalancer-algo`: алгоритм балансировки — `leastconn` (выбирает сервер с наименьшим числом активных подключений). - `k8s.timeweb.cloud/attached-loadbalancer-ddos-guard-external-ip`: выделяет балансировщику внешний IP с защитой от DDoS. > [!NOTE] > Дополнительные параметры также можно задавать с помощью лейблов, но этот способ считается устаревшим. Также, при использовании лейблов некоторые параметры могут применяться некорректно. Поэтому мы рекомендуем использовать аннотации. ## Доступные параметры для балансировщика нагрузки В таблице ниже перечислены доступные параметры для настройки балансировщика нагрузки. Каждый параметр задается в виде аннотации в манифесте Service: | **Параметр** | **Назначение** | | --- | --- | | `k8s.timeweb.cloud/attached-loadbalancer-preset-id: "391"` | Задает конфигурацию балансировщика. По умолчанию выбирается минимальная конфигурация для зоны. Получить id тарифов можно при помощи [API](https://timeweb.cloud/api-docs#tag/Balansirovshiki/operation/getBalancersPresets). | | `k8s.timeweb.cloud/attached-loadbalancer-algo: "roundrobin"` | Алгоритм балансировки: `roundrobin` или `leastconn`. | | `k8s.timeweb.cloud/attached-loadbalancer-healthcheck-check-interval: "10"` | Интервал между проверками доступности (в секундах). | | `k8s.timeweb.cloud/attached-loadbalancer-healthcheck-timeout: "5"` | Таймаут проверки доступности (в секундах). | | `k8s.timeweb.cloud/attached-loadbalancer-healthcheck-error-count: "3"` | Количество неудачных проверок перед отключением апстрима. | | `k8s.timeweb.cloud/attached-loadbalancer-healthcheck-recover-count: "2"` | Количество успешных проверок для восстановления апстрима. | | `k8s.timeweb.cloud/attached-loadbalancer-no-external-ip: "true"` | Отключение внешнего публичного IP для балансировщика. | | `k8s.timeweb.cloud/attached-loadbalancer-ddos-guard-external-ip: "true"` | Выделение внешнего IP с защитой от DDoS. | | `k8s.timeweb.cloud/ignore-timeweb-cloud-loadbalancer: "true"` | Исключает сервис из обработки балансировщиком Timeweb Cloud. Может быть полезно, если используется другой `LoadBalancer`, например, `kube-vip` или `MetalLB`. | | `k8s.timeweb.cloud/attached-loadbalancer-proxy-enable: "true"` | Включает прокси-режим для балансировщика. При использовании этой аннотации принимающее приложение (например, ingress-контроллер или прокси) также должно быть настроено на прием proxy protocol. В противном случае запросы могут завершаться ошибками (например, HTTP 400). Примеры настройки из официальной документации: [Ingress NGINX](https://kubernetes.github.io/ingress-nginx/user-guide/miscellaneous/), [Traefik](https://doc.traefik.io/traefik/master/reference/install-configuration/entrypoints/). | | `k8s.timeweb.cloud/attached-loadbalancer-connect-timeout: "5000"` | Время ожидания установления TCP-подключения с апстримом (в миллисекундах). | | `k8s.timeweb.cloud/attached-loadbalancer-client-timeout: "50000"` | Время ожидания новых TCP-сегментов от клиента (в миллисекундах). | | `k8s.timeweb.cloud/attached-loadbalancer-server-timeout: "50000"` | Таймаут ожидания ответа от бэкенда (в миллисекундах). | | `k8s.timeweb.cloud/attached-loadbalancer-http-request-timeout: "10000"` | Таймаут выполнения HTTP-запроса (в миллисекундах). | | `k8s.timeweb.cloud/attached-loadbalancer-maxconn: "10000"` | Максимальное количество соединений, которое может обрабатывать балансировщик на фронтенде. | | `k8s.timeweb.cloud/attached-loadbalancer-ssl: "true"` | Включение автоматического выпуска SSL-сертификата. Если указано `false`, сертификат будет удален. | | `k8s.timeweb.cloud/attached-loadbalancer-ssl-fqdn: "example.com"` | Домен, на который необходимо выпустить SSL-сертификат. | | `k8s.timeweb.cloud/attached-loadbalancer-ssl-type: "lets_encrypt"` | Тип SSL-сертификата. Доступные значения: `lets_encrypt` или `custom`. | | `k8s.timeweb.cloud/attached-loadbalancer-force-ssl: "true"` | Перенаправление HTTP-запросов на HTTPS с кодом `307`. Работает только вместе с настроенным сертификатом: `attached-loadbalancer-ssl` и `attached-loadbalancer-ssl-fqdn`. | ### Служебные аннотации Помимо пользовательских параметров, система может автоматически добавлять служебные аннотации. Например: ```yaml metadata: annotations: k8s.timeweb.cloud/lb-last-config: "..." ``` Аннотация `k8s.timeweb.cloud/lb-last-config` содержит последнюю примененную конфигурацию балансировщика. Система управления кластером использует ее для сравнения текущей и новой конфигурации, чтобы определить, требуется ли обновление балансировщика. Изменять или добавлять эту аннотацию вручную не требуется. ## Настройка перенаправления на HTTPS Для включения перенаправления на HTTPS добавьте параметр: ```yaml metadata: annotations: k8s.timeweb.cloud/attached-loadbalancer-force-ssl: "true" ``` Перед включением перенаправления HTTP на HTTPS убедитесь, что домен из параметра `k8s.timeweb.cloud/attached-loadbalancer-ssl-fqdn` уже указывает на IP-адрес балансировщика. Это необходимо для выпуска сертификата Let's Encrypt. Параметр `k8s.timeweb.cloud/attached-loadbalancer-force-ssl` включает перенаправление HTTP-запросов на HTTPS с кодом `307`. Если включить `force-ssl` без настроенного сертификата и домена, параметр будет проигнорирован, а балансировщик продолжит принимать обычный HTTP-трафик. В логах появится предупреждение: ```shell force-ssl requested but no SSL certificate configured; ignoring force-ssl ``` Если домен еще не указывает на IP-адрес балансировщика, Let's Encrypt не сможет выпустить сертификат. При этом балансировщик может начать отвечать редиректом на HTTPS, где нет валидного сертификата. В результате клиенты будут получать TLS-ошибку, хотя сервис в Kubernetes может выглядеть исправным. Отключить уже включенное перенаправление значением `k8s.timeweb.cloud/attached-loadbalancer-force-ssl: "false"` нельзя. Чтобы выключить перенаправление, удалите и пересоздайте балансировщик. ## Возможные ошибки ### Не удалось получить IP Если при создании балансировщика не удалось получить внешний IP-адрес, в аннотациях сервиса появится следующая отметка: ```bash k8s.timeweb.cloud/attached-loadbalancer-ensuring-error: true ``` Это означает, что что-то пошло не так при привязке внешнего IP. В таком случае рекомендуем попробовать пересоздать балансировщик или [обратиться в техническую поддержку](https://timeweb.cloud/my/support/help-question). #### Как проверить Найдите все сервисы с типом `LoadBalancer` в кластере: ```bash kubectl get svc --all-namespaces --field-selector spec.type=LoadBalancer ``` Посмотрите аннотации нужного сервиса: ```bash kubectl describe svc <имя-сервиса> -n <неймспейс> ``` Если в выводе будет аннотация `k8s.timeweb.cloud/attached-loadbalancer-ensuring-error: true`, пересоздайте балансировщик или [напишите в поддержку](https://timeweb.cloud/my/support/help-question) и укажите ID кластера. ## Практический пример использования балансировщика Для демонстрации работы балансировщика создадим два деплоймента Nginx, каждый из которых будет отображать свою HTML-страницу. Балансировщик случайным образом распределит запросы между подами, и в зависимости от этого будет показана одна из страниц. ### Подготовка окружения Для удобства управления и быстрого удаления всех ресурсов, связанных с балансировщиком, создадим отдельный неймспейс. Это упростит тестирование и последующее удаление ресурсов, сохраняя основной кластер чистым. Выполните команду для создания неймспейса: ```shell kubectl create namespace test-namespace ``` После создания используем этот неймспейс для всех дальнейших ресурсов, включая балансировщик, деплойменты и `ConfigMap`. Для этого добавьте `namespace: test-namespace` в каждый манифест, связанный с примером. ### Создание ConfigMap для HTML-страниц Начнем с создания `ConfigMap`, в котором будут храниться две HTML-страницы. Под 1 будет отображать страницу с заголовком «Pod 1», а Под 2 — с заголовком «Pod 2». Эти страницы подключаются к Nginx в подах. **Файл `nginx-pages-configmap.yaml`:** ```shell apiVersion: v1 kind: ConfigMap metadata: name: nginx-pages namespace: test-namespace data: index-page1.html: |

Pod 1

This is page served by Pod 1.

index-page2.html: |

Pod 2

This is page served by Pod 2.

``` Здесь мы создаем `ConfigMap` с двумя HTML-файлами: `index-page1.html` и `index-page2.html`. Они будут монтироваться в подах Nginx, позволяя каждому поду отображать свою страницу. Примените `ConfigMap`: ```shell kubectl apply -f nginx-pages-configmap.yaml ``` ### Создание деплойментов Nginx Теперь создадим два деплоймента, каждый из которых будет использовать разные HTML-страницы из `ConfigMap`. Деплойменты используют селектор `app: nginx` — это метка, которую балансировщик будет использовать для выбора подов, участвующих в распределении нагрузки. **Файл `nginx-deployment-pod1.yaml`:** ```yml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-pod1 namespace: test-namespace spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest volumeMounts: - name: nginx-pages mountPath: /usr/share/nginx/html/index.html subPath: index-page1.html ports: - containerPort: 80 volumes: - name: nginx-pages configMap: name: nginx-pages ``` Этот деплоймент создает один под (реплика 1) с образом Nginx, который монтирует страницу `index-page1.html` из `ConfigMap` в директорию `/usr/share/nginx/html/index.html`. Порт 80 открыт для доступа к странице. Примените деплоймент: ```shell kubectl apply -f nginx-deployment-pod1.yaml ``` **Файл `nginx-deployment-pod2.yaml`:** ```yml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-pod2 namespace: test-namespace spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest volumeMounts: - name: nginx-pages mountPath: /usr/share/nginx/html/index.html subPath: index-page2.html ports: - containerPort: 80 volumes: - name: nginx-pages configMap: name: nginx-pages ``` Этот деплоймент также создает под Nginx, но монтирует страницу `index-page2.html`, отличающуюся содержимым. Примените второй деплоймент: ```shell kubectl apply -f nginx-deployment-pod2.yaml ``` ### Настройка балансировщика нагрузки Теперь создадим балансировщик, который будет направлять запросы на поды с меткой `app: nginx`. **Файл `nginx-loadbalancer.yaml`:** ```yml apiVersion: v1 kind: Service metadata: name: nginx-loadbalancer namespace: test-namespace spec: selector: app: nginx ports: - port: 80 targetPort: 80 appProtocol: k8s.timeweb.cloud/proto-http type: LoadBalancer ``` В этом `Service` указываем `type: LoadBalancer`, что создает балансировщик нагрузки, и `selector: app: nginx`, который направляет запросы на поды Nginx из наших деплойментов. Запросы, поступающие на балансировщик, распределяются между подами при помощи алгоритма `roundrobin`, так как этот алгоритм выбирается по умолчанию. Примените балансировщик: ```shell kubectl apply -f nginx-loadbalancer.yaml ``` ### Проверка работы балансировщика После создания балансировщика его внешний IP-адрес можно увидеть в [панели управления](https://timeweb.cloud/my/balancer) или выполнив команду: ```shell kubectl get services -n test-namespace ``` При доступе по этому IP вы увидите страницу, отображаемую одним из подов. Каждый раз при обновлении страницы трафик может перенаправляться на разные поды, что позволяет балансировщику нагрузки случайным образом переключать отображаемую страницу. ### Удаление ресурсов после проверки После того как вы проверили работу балансировщика, вы можете удалить все созданные поды и ресурсы. Для этого выполните следующие команды: ```shell kubectl delete service nginx-loadbalancer -n test-namespace kubectl delete deployment nginx-pod1 -n test-namespace kubectl delete deployment nginx-pod2 -n test-namespace kubectl delete configmap nginx-pages -n test-namespace ``` Эти команды удалят балансировщик, деплойменты подов и `ConfigMap`, созданные ранее. Либо удалите неймспейс полностью, выполнив: ```shell kubectl delete namespace test-namespace ``` Этот способ автоматически удалит все ресурсы, связанные с тестовым окружением. # Подключение собственного SSL-сертификата к балансировщику Source: https://timeweb.cloud/docs/k8s/network/connect-custom-ssl-certificate-to-load-balancer Балансировщик нагрузки поддерживает использование собственного SSL-сертификата, загруженного из Kubernetes-секрета типа `kubernetes.io/tls`. Для настройки необходимо создать TLS-секрет с сертификатом и приватным ключом, а затем указать его в аннотациях балансировщика. > [!NOTE] > При настройке сертификата через балансировщик нельзя использовать самоподписанные сертификаты. Необходимо использовать сертификат, выпущенный доверенным центром сертификации. ## Создание секрета Скачайте файлы сертификата. Создайте TLS-секрет в том же неймспейсе, где находится балансировщик: ```bash kubectl -n create secret tls my-app-tls \ --cert=crt.crt \ --key=key.key ``` Проверить тип секрета можно командой: ```bash kubectl -n get secret my-app-tls -o yaml ``` В выводе должно присутствовать: ```bash type: kubernetes.io/tls ``` ## Настройка сервиса Добавьте аннотации для использования собственного сертификата в манифесте балансировщика: ```bash apiVersion: v1 kind: Service metadata: name: my-app annotations: k8s.timeweb.cloud/attached-loadbalancer-ssl: "true" k8s.timeweb.cloud/attached-loadbalancer-ssl-type: "custom" k8s.timeweb.cloud/attached-loadbalancer-ssl-fqdn: "example.com" k8s.timeweb.cloud/attached-loadbalancer-ssl-secret-name: "my-app-tls" spec: type: LoadBalancer selector: app: my-app ports: - name: https port: 443 targetPort: 80 appProtocol: k8s.timeweb.cloud/proto-https ``` Параметры: - `k8s.timeweb.cloud/attached-loadbalancer-ssl` — включает использование SSL-сертификата. - `k8s.timeweb.cloud/attached-loadbalancer-ssl-type` — определяет тип сертификата. Для собственного сертификата используйте значение `custom`. - `k8s.timeweb.cloud/attached-loadbalancer-ssl-fqdn` — доменное имя, для которого выпущен сертификат. - `k8s.timeweb.cloud/attached-loadbalancer-ssl-secret-name` — имя TLS-секрета, содержащего сертификат и приватный ключ. Примените изменения: ```bash kubectl apply -f service.yaml ``` ## Проверка сертификата Проверить сертификат, который использует балансировщик, можно командой: ```bash echo | openssl s_client \ -connect example.com:443 \ -servername example.com \ 2>/dev/null | openssl x509 -noout -subject -issuer -dates ``` Пример успешного результата: ```bash subject=CN=example.com issuer=C=BE, O=GlobalSign nv-sa, CN=GlobalSign GCC R6 AlphaSSL CA 2025 ``` Также можно проверить HTTPS-соединение через `curl`: ```bash curl -kv https://example.com ``` В выводе должно присутствовать: ```bash SSL certificate verify ok. ``` Также в выводе должна быть информация о вашем сертификате: ```bash subject: CN=example.com ``` Если вместо этого отображается сертификат вида: ```bash subject: CN=empty ``` — значит, балансировщик не смог применить указанный сертификат и использует сертификат по умолчанию. ## Обновление сертификата Для замены сертификата обновите существующий секрет: ```bash kubectl -n create secret tls my-app-tls \ --cert=new.crt \ --key=new.key \ --dry-run=client -o yaml | kubectl apply -f - ``` После обновления секрета необходимо запустить повторную настройку балансировщика, изменив любую аннотацию сервиса: ```bash kubectl -n annotate svc my-app \ k8s.timeweb.cloud/rotate-ts="$(date +%s)" \ --overwrite ``` После этого CCM повторно прочитает сертификат и обновит его на балансировщике. ## Практический пример В этом примере настроим собственный SSL-сертификат для тестового приложения Nginx. Перед началом убедитесь, что у вас есть домен и выпущенный для него сертификат от доверенного центра сертификации. ### Создание неймспейса Создайте отдельный неймспейс для тестирования: ```bash kubectl create namespace test-namespace ``` ### Создание тестового приложения Создайте файл `nginx-deployment.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx namespace: test-namespace spec: replicas: 1 selector: matchLabels: app: nginx-custom-cert-test template: metadata: labels: app: nginx-custom-cert-test spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 ``` Примените манифест: ```bash kubectl apply -f nginx-deployment.yaml ``` Убедитесь, что под успешно запущен: ```bash kubectl get pods -n test-namespace ``` ### Создание балансировщика нагрузки Создайте файл `nginx-loadbalancer.yaml`: ```yaml apiVersion: v1 kind: Service metadata: name: nginx-loadbalancer namespace: test-namespace spec: type: LoadBalancer selector: app: nginx-custom-cert-test ports: - name: https port: 443 targetPort: 80 appProtocol: k8s.timeweb.cloud/proto-https ``` Примените манифест: ```bash kubectl apply -f nginx-loadbalancer.yaml ``` Дождитесь появления внешнего IP-адреса: ```bash kubectl get svc nginx-loadbalancer -n test-namespace -w ``` Пример вывода: ```bash NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) nginx-loadbalancer LoadBalancer 10.101.130.253 203.0.113.10 443:31826/TCP ``` ### Настройка DNS-записи Создайте A-запись для домена и направьте ее на внешний IP-адрес балансировщика. Проверьте, что домен указывает на IP-адрес балансировщика: ```bash dig +short example.com ``` Результат должен содержать IP-адрес балансировщика. ### Создание TLS-секрета Создайте TLS-секрет в том же неймспейсе, где находится сервис: ```bash kubectl -n test-namespace create secret tls my-app-tls \ --cert=crt.crt \ --key=key.key ``` Проверьте, что секрет создан корректно: ```bash kubectl -n test-namespace get secret my-app-tls -o yaml ``` В выводе должно присутствовать: ```shell type: kubernetes.io/tls ``` При необходимости можно проверить сертификат непосредственно из секрета: ```bash kubectl -n test-namespace get secret my-app-tls \ -o jsonpath='{.data.tls\.crt}' \ | base64 -d \ | openssl x509 -noout -subject -issuer -dates ``` ### Подключение сертификата к балансировщику Добавьте аннотации для использования собственного сертификата в манифест сервиса `nginx-loadbalancer.yaml`: ```yaml apiVersion: v1 kind: Service metadata: name: nginx-loadbalancer namespace: test-namespace annotations: k8s.timeweb.cloud/attached-loadbalancer-ssl: "true" k8s.timeweb.cloud/attached-loadbalancer-ssl-type: "custom" k8s.timeweb.cloud/attached-loadbalancer-ssl-fqdn: "example.com" k8s.timeweb.cloud/attached-loadbalancer-ssl-secret-name: "my-app-tls" spec: type: LoadBalancer selector: app: nginx-custom-cert-test ports: - name: https port: 443 targetPort: 80 appProtocol: k8s.timeweb.cloud/proto-https ``` Примените обновленный манифест: ```bash kubectl apply -f nginx-loadbalancer.yaml ``` Проверьте настройки сервиса: ```bash kubectl -n test-namespace get svc nginx-loadbalancer -o yaml ``` В аннотациях должны присутствовать: ```yaml k8s.timeweb.cloud/attached-loadbalancer-ssl: "true" k8s.timeweb.cloud/attached-loadbalancer-ssl-type: custom k8s.timeweb.cloud/attached-loadbalancer-ssl-fqdn: example.com k8s.timeweb.cloud/attached-loadbalancer-ssl-secret-name: my-app-tls ``` После успешной обработки сертификата появится служебная аннотация: ```bash k8s.timeweb.cloud/attached-loadbalancer-ssl-cert-hash: ... ``` Это означает, что CCM успешно прочитал сертификат из секрета. ### Проверка работы приложения Обратитесь к домену в браузере. Если сертификат успешно применен, браузер установит защищенное HTTPS-соединение без предупреждений о недоверенном сертификате. Также можно проверить доступность приложения с помощью `curl`: ```bash curl -I https://example.com ``` Успешный ответ означает, что: - сертификат загружен на балансировщик; - HTTPS-соединение устанавливается корректно; - балансировщик передает запросы в приложение, работающее в Kubernetes. ### Удаление тестового окружения После завершения проверки удалите тестовый неймспейс: ```bash kubectl delete namespace test-namespace ``` Будут удалены все созданные ресурсы, включая Deployment, Service и TLS-секрет. # Приватные и публичные сервисы Source: https://timeweb.cloud/docs/k8s/network/public-private-services Если в кластере нужно публиковать часть сервисов в интернет, а часть оставлять доступной только из приватной сети, удобнее всего разделить входящий трафик на уровне ingress-контроллеров. Для этого можно развернуть два экземпляра Traefik: один будет обслуживать публичные Ingress, второй — приватные. В этой статье разберем такой сценарий. В качестве основы будем использовать два Helm-релиза Traefik с разными `IngressClass`, а затем покажем, как маршрутизировать запросы к публичным и внутренним сервисам. Идея в том, что в кластере запускаются два независимых экземпляра Traefik: - `traefik-public` — обрабатывает только Ingress с `ingressClassName: public`; - `traefik-private` — обрабатывает только Ingress с `ingressClassName: private`. Каждый экземпляр создает собственный сервис типа `LoadBalancer`, но с разными параметрами: - публичный Traefik получает внешний IP-адрес и принимает трафик из интернета; - приватный Traefik создает внутренний балансировщик без публичного IP и доступен только внутри приватной сети. За счет этого можно использовать один и тот же кластер для внешних и внутренних приложений, не смешивая их точки входа. Перед началом убедитесь, что: - у вас [установлен Helm](https://timeweb.cloud/docs/k8s/deploy/helm); - кластер Kubernetes развернут; - для проверки приватного ingress у вас есть [доступ в приватную сеть](https://timeweb.cloud/docs/vpc/managing-bgp-networks) кластера, например через отдельный VDS в той же сети. ## Подготовка конфигурации Traefik Оба экземпляра Traefik разворачиваются из одного Helm-чарта, но используют разные values-файлы. ### Конфигурация публичного Traefik Создайте файл `traefik-public-values.yaml` со следующим содержимым: ```yaml fullnameOverride: traefik-public ingressClass: enabled: true isDefaultClass: false name: public service: enabled: true type: LoadBalancer annotations: external-dns.alpha.kubernetes.io/hostname: "example.com" external-dns.alpha.kubernetes.io/ttl: "1200" providers: kubernetesCRD: enabled: true allowCrossNamespace: false ingressClass: public kubernetesIngress: enabled: true ingressClass: public publishedService: enabled: true ``` Этот файл настраивает публичный экземпляр Traefik, который будет обрабатывать ingress-ресурсы класса `public` и создавать обычный `LoadBalancer` с внешним IP. Здесь важно следующее: - `ingressClass.name: public` — задает имя класса, на который будут ссылаться публичные Ingress; - `providers.kubernetesCRD.ingressClass` и `providers.kubernetesIngress.ingressClass` — ограничивают Traefik только ресурсами своего класса; - `publishedService.enabled: true` — позволяет корректно публиковать адрес ingress-сервиса. Аннотации `external-dns.alpha.kubernetes.io/*` нужны только в том случае, если в кластере используется [external-dns](https://timeweb.cloud/docs/k8s/addons/externaldns). В значении `external-dns.alpha.kubernetes.io/hostname` нужно указать реальный домен или поддомен, который вы хотите направить на публичный `ingress`, например `app.example.com`. Если вы используете `external-dns`, DNS-запись будет создаваться автоматически. Если `external-dns` в кластере нет, эти аннотации можно убрать и создать DNS-запись вручную. В нашем примере проверка будет выполняться через `curl --resolve`. В таком случае реальные DNS-записи не обязательны. ### Конфигурация приватного Traefik Создайте файл `traefik-private-values.yaml` со следующим содержимым: ```yaml fullnameOverride: traefik-private ingressClass: enabled: true isDefaultClass: false name: private service: enabled: true type: LoadBalancer annotations: k8s.timeweb.cloud/attached-loadbalancer-no-external-ip: "true" providers: kubernetesCRD: enabled: true allowCrossNamespace: false ingressClass: private kubernetesIngress: enabled: true ingressClass: private publishedService: enabled: true ``` Этот файл настраивает приватный экземпляр Traefik, который будет обрабатывать ingress-ресурсы класса private и создавать внутренний балансировщик без публичного IP. Ключевой параметр здесь — `k8s.timeweb.cloud/attached-loadbalancer-no-external-ip: "true"`. Он указывает, что балансировщик должен быть внутренним и не получать внешний публичный IP. ## Установка двух экземпляров Traefik Сначала добавьте репозиторий Helm: ```bash helm repo add traefik https://helm.traefik.io/traefik helm repo update ``` После этого разверните публичный экземпляр: ```bash helm install traefik-public traefik/traefik \ -n traefik-public --create-namespace \ -f traefik-public-values.yaml ``` Затем разверните приватный экземпляр: ```bash helm install traefik-private traefik/traefik \ -n traefik-private --create-namespace \ -f traefik-private-values.yaml ``` После установки сразу проверьте, что оба сервиса типа LoadBalancer созданы: ```bash kubectl get svc -n traefik-public kubectl get svc -n traefik-private ``` > [!NOTE] > Создание балансировщиков может занимать до 10 минут. Пока ресурс создается, в колонке `EXTERNAL-IP` может отображаться состояние `pending`. Ожидаемое поведение будет разным: - у `traefik-public` должен появиться внешний IP-адрес; - у `traefik-private` внешний IP не появится, так как он использует внутренний балансировщик. Проверить состояние балансировщиков можно не только через `kubectl`, но и в панели управления Timeweb Cloud. Дождитесь завершения создания балансировщиков. На этом же этапе полезно убедиться, что оба класса `ingress` зарегистрированы в кластере: ```bash kubectl get ingressclass ``` В выводе должны быть классы public и private. ## Публикация публичных и приватных сервисов После развертывания двух экземпляров Traefik достаточно указывать нужный `IngressClass` в манифесте Ingress. Для публичного сервиса: ```yaml spec: ingressClassName: public ``` Для приватного сервиса: ```yaml spec: ingressClassName: private ``` Дальше весь трафик будет маршрутизироваться через соответствующий ingress-контроллер. ## Практический пример Ниже приведен полный набор манифестов для демонстрации. В примере будут: - два публичных сервиса `service1` и `service2`; - один приватный сервис `service3`; - два ingress-ресурса с разными IngressClass. #### ConfigMap с тестовыми HTML-страницами Создайте файл `config-map.yaml`: ```shell apiVersion: v1 kind: ConfigMap metadata: name: service-config namespace: ingress-example data: service1.html: | Service 1

Welcome to Service 1!

service2.html: | Service 2

Welcome to Service 2!

service3.html: | Service 3

Welcome to Service 3!

``` #### Публичный сервис service1 Создайте файл `service1-deployment.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: service1 namespace: ingress-example spec: replicas: 2 selector: matchLabels: app: service1 template: metadata: labels: app: service1 spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: config-volume mountPath: /usr/share/nginx/html volumes: - name: config-volume configMap: name: service-config items: - key: service1.html path: service1.html --- apiVersion: v1 kind: Service metadata: name: service1 namespace: ingress-example spec: selector: app: service1 ports: - protocol: TCP port: 80 targetPort: 80 ``` #### Публичный сервис service2 Создайте файл `service2-deployment.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: service2 namespace: ingress-example spec: replicas: 2 selector: matchLabels: app: service2 template: metadata: labels: app: service2 spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: config-volume mountPath: /usr/share/nginx/html volumes: - name: config-volume configMap: name: service-config items: - key: service2.html path: service2.html --- apiVersion: v1 kind: Service metadata: name: service2 namespace: ingress-example spec: selector: app: service2 ports: - protocol: TCP port: 80 targetPort: 80 ``` #### Приватный сервис service3 Создайте файл `service3-deployment.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: service3 namespace: ingress-example spec: replicas: 2 selector: matchLabels: app: service3 template: metadata: labels: app: service3 spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: config-volume mountPath: /usr/share/nginx/html volumes: - name: config-volume configMap: name: service-config items: - key: service3.html path: index.html --- apiVersion: v1 kind: Service metadata: name: service3 namespace: ingress-example spec: selector: app: service3 ports: - protocol: TCP port: 80 targetPort: 80 ``` #### Публичный ingress Создайте файл `ingress-public.yaml`: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-public-ingress namespace: ingress-example spec: ingressClassName: public rules: - host: ingress1.example.com http: paths: - path: /service1 pathType: Prefix backend: service: name: service1 port: number: 80 - path: /service2 pathType: Prefix backend: service: name: service2 port: number: 80 ``` Обратите внимание, что в `spec.ingressClassName` указано значение `public` — это означает, что Ingress будет обрабатываться публичным ingress-контроллером. #### Приватный ingress Создайте файл `ingress-private.yaml`: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-private-ingress namespace: ingress-example spec: ingressClassName: private rules: - host: ingress2.example.com http: paths: - path: / pathType: Prefix backend: service: name: service3 port: number: 80 ``` В `spec.ingressClassName` указано значение `private`, поэтому `Ingress` будет обрабатываться приватным ingress-контроллером. Создайте неймспейс `ingress-example`: ```bash kubectl create namespace ingress-example ``` После этого примените все манифесты: ```bash kubectl apply -f config-map.yaml kubectl apply -f service1-deployment.yaml kubectl apply -f service2-deployment.yaml kubectl apply -f service3-deployment.yaml kubectl apply -f ingress-public.yaml kubectl apply -f ingress-private.yaml ``` Теперь проверьте, что деплойменты, сервисы и ingress-ресурсы созданы: ```bash kubectl get deploy,svc,ingress -n ingress-example ``` В результате вы должны увидеть три сервиса, три деплоймента и два ingress-ресурса. Если какого-то ресурса нет, значит соответствующий манифест не применился или был изменен. Запросы к `ingress1.example.com/service1...` будут попадать в `service1`, а запросы к `ingress1.example.com/service2...` — в `service2`. Запросы к `ingress2.example.com/` будут попадать в `service3`. Такой сервис будет доступен только из приватной сети, если запрос приходит через внутренний балансировщик Traefik. ## Проверка работы Перед проверкой запросами полезно еще раз посмотреть, какой класс назначен каждому ingress: ```bash kubectl describe ingress example-public-ingress -n ingress-example kubectl describe ingress example-private-ingress -n ingress-example ``` Убедитесь, что у `example-public-ingress` указан `Ingress Class: public`, а у `example-private-ingress` — `Ingress Class: private`. Если класс не совпадает, Traefik не будет обрабатывать такой ресурс. > [!NOTE] > В примере используются имена `ingress1.example.com` и `ingress2.example.com`. Это условные хосты. Для проверки через `curl --resolve` их можно использовать без настройки реального DNS. Если вы хотите открывать публичный `ingress` в браузере, замените `ingress1.example.com` на реальный домен или поддомен и настройте для него DNS-запись. Когда публичный балансировщик получит внешний IP, проверьте маршруты командами: ```bash curl http://ingress1.example.com/service1.html \ --resolve ingress1.example.com:80:PUBLIC_LB_EXTERNAL_IP curl http://ingress1.example.com/service2.html \ --resolve ingress1.example.com:80:PUBLIC_LB_EXTERNAL_IP ``` Где `PUBLIC_LB_EXTERNAL_IP` — публичный IP, выделенный для балансировщика. Если в ответ приходит `404`, проверьте, что вы используете именно хост `ingress1.example.com` и пути `/service1` или `/service2`. Для приватного сервиса выполните проверку с машины, которая находится в той же приватной сети, что и кластер: ```bash curl http://ingress2.example.com/ \ --resolve ingress2.example.com:80:PRIVATE_LB_IP ``` Где `PRIVATE_LB_IP` — приватный IP балансировщика. В ответ вы должны получить HTML-страницу `service3`. Если приватный маршрут не открывается, проверьте, что запрос идет из приватной сети. Внешний интернет-трафик на такой `ingress` не попадет, даже если сам ресурс в кластере настроен правильно. # Виртуальные роутеры Source: https://timeweb.cloud/docs/k8s/network/virtual-routers-in-kubernetes Виртуальный роутер позволяет организовать сетевую архитектуру Kubernetes-кластера без использования публичных IP-адресов на воркер-нодах. В этом случае внешний доступ к сервисам настраивается централизованно — через Ingress или балансировщики нагрузки. Основные преимущества: - Экономия — воркеры не используют публичные IP. - Повышенная безопасность — нет прямого доступа к воркер-нодам из интернета. - Централизованная точка входа — внешний трафик проходит только через балансировщики или Ingress. - Более гибкая архитектура — воркер-ноды не привязаны к внешним IP и могут пересоздаваться без изменения сетевой схемы. При такой конфигурации инфраструктура становится более декларативной: сетевые правила и точки входа описываются на уровне кластера, а сами ноды остаются «эфемерными» ресурсами. ## Ограничения Перед настройкой обратите внимание на ограничения и особенности работы виртуальных роутеров: - Поддержка доступна только в локациях Санкт-Петербург, Москва и Амстердам. - К одному кластеру может быть подключен только один виртуальный роутер. - Один виртуальный роутер может использоваться несколькими Kubernetes-кластерами, если они находятся в одной приватной сети. - Роутер и кластер должны находиться в одной приватной сети. - В настройках виртуального роутера должен быть [включен DHCP для приватной сети](https://timeweb.cloud/docs/virtual-routers/usage-dhcp). - У виртуального роутера должен быть подключен публичный IP и настроен NAT для приватной сети. - Для каждой группы воркер-нод обязательно должен быть выбран один из вариантов сетевого подключения: использование публичных IP или использование виртуального роутера. ## Подключение роутера при создании кластера Вы можете подключить виртуальный роутер на этапе создания нового кластера. Опция «Публичный IP» на этапе конфигурации воркер-нод отключена по умолчанию. Если оставить ее выключенной, на этапе настройки сети появится возможность выбрать существующий виртуальный роутер или создать новый. Если в выбранной приватной сети нет подходящего роутера, он будет создан автоматически. При необходимости вы можете изменить параметры нового роутера, нажав кнопку «Изменить параметры». ![Scr 20260216 Omug](https://content.timeweb.com/assets/744223bc-cff8-488a-8e24-89e05bc7678a.png?width=1120&height=1196) Если при настройке кластера выбран новый роутер, создание кластера может занять немного больше времени — сначала будет создан виртуальный роутер, и только после этого начнется развертывание кластера. ## Подключение роутера к существующему кластеру Чтобы подключить виртуальный роутер к уже созданному кластеру, перейдите во вкладку «Сеть». В строке «Интеграция с роутерами» нажмите кнопку «Подключить». ![Scr 20260216 Onan](https://content.timeweb.com/assets/148e575f-b04f-49a5-b389-48ba637ae2ac.png?width=2086&height=1486) В открывшемся меню можно создать новый виртуальный роутер и сразу привязать его к кластеру либо выбрать уже существующий. В списке будут доступны только те роутеры, которые соответствуют требованиям: к ним подключен публичный IP, они находятся в одной приватной сети с кластером, а для этой сети включен DHCP. После подтверждения настроек роутер будет подключен к кластеру и станет доступен для использования в группах воркер-нод. ![Scr 20260216 Ongh](https://content.timeweb.com/assets/80df61aa-5c2f-4f46-9f89-b3863a4715de.png?width=2568&height=1654) ## Работа с воркер-нодами К кластеру может быть подключен только один виртуальный роутер, но способ сетевого подключения настраивается отдельно для каждой группы воркер-нод. Вы можете выбрать: использовать виртуальный роутер или назначать публичный IP каждому воркеру. Для изменения настроек откройте вкладку «Ресурсы». Начните создание новой группы, нажав «Добавить группы», либо откройте параметры существующей группы — нажмите на три точки рядом с нужной группой и выберите «Редактировать группу». В открывшемся меню доступна настройка «Публичный IP». Если отключить ее, группа будет использовать виртуальный роутер. Если роутер еще не был подключен к кластеру, он создастся автоматически. Если включить «Публичный IP», виртуальный роутер для этой группы использоваться не будет, а каждой воркер-ноде будет назначен собственный публичный адрес. ![Scr 20260219 Murj](https://content.timeweb.com/assets/9cd34a31-e960-4222-a33a-a5edbf09c890.png?width=2070&height=1534) ## Доступ к сервисам через проброс портов Если кластер подключен к приватной сети вместе с виртуальным роутером, можно организовать внешний доступ к сервису без использования Ingress или балансировщика — через проброс портов на роутере. В этом случае входящий трафик из интернета сначала поступает на публичный IP виртуального роутера, затем на указанный на нем порт и перенаправляется на приватный IP одной из воркер-нод. Далее запрос попадает на порт `NodePort`, открытый Kubernetes-сервисом, и обрабатывается приложением. Для такой схемы кластер и виртуальный роутер должны находиться в одной приватной сети, при этом к роутеру должен быть подключен публичный IP и настроен доступ к приватным IP воркер-нод. В кластере должен быть создан сервис с типом `NodePort`, а на самом роутере — правило проброса порта на выбранную ноду и соответствующий порт сервиса. При настройке стоит учитывать, что проброс выполняется на конкретную ноду. Если она станет недоступна, внешний доступ к сервису также перестанет работать. ### Пример использования Рассмотрим пример настройки. Создадим простой сервис и настроим к нему доступ из интернета через виртуальный роутер. Для удобства создадим отдельный namespace, в котором будут находиться все ресурсы: ```bash kubectl create namespace port-forward-example ``` Создадим `ConfigMap` со статической HTML-страницей. Файл `config-map.yaml`: ```yaml apiVersion: v1 kind: ConfigMap metadata: name: service-config namespace: port-forward-example data: index.html: | Demo Page

Hello from Kubernetes!

This is a static page served on port 30000.

``` Далее создадим `DaemonSet` и сервис. Файл `daemon-set.yaml`: ```yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: service namespace: port-forward-example spec: selector: matchLabels: app: service template: metadata: labels: app: service spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: config-volume mountPath: /usr/share/nginx/html volumes: - name: config-volume configMap: name: service-config items: - key: index.html path: index.html --- apiVersion: v1 kind: Service metadata: name: service namespace: port-forward-example spec: selector: app: service ports: - port: 80 targetPort: 80 nodePort: 30000 type: NodePort ``` В этом примере используется `DaemonSet`, чтобы поды запускались на каждой воркер-ноде, а сервис с типом `NodePort` открывает порт `30000` на всех нодах кластера. Применим манифесты: ```bash kubectl apply -f config-map.yaml kubectl apply -f daemon-set.yaml ``` Проверим, что поды успешно запущены: ```bash kubectl get pods -n port-forward-example ``` После этого в панели управления виртуальным роутером настройте проброс порта: 1. Перейдите в раздел «Проброс портов». 2. Выберите публичный IP и укажите внешний порт. 3. В качестве приватного IP укажите IP одной из воркер-нод. 4. Укажите порт `30000` (NodePort сервиса). 5. Сохраните правило. ![Scr 20260323 Oqju](https://content.timeweb.com/assets/3a05ce3d-6802-4352-aa5a-fab75bb5d8ff.png?width=2494&height=1658) После сохранения правило появится в списке, где будут отображаться публичный IP и внешний порт. ![Scr 20260323 Osjr](https://content.timeweb.com/assets/784f6c35-162e-49ea-9d04-e1b49ee549df.png?width=2070&height=1592) Для проверки откройте в браузере указанный IP и порт — должна отобразиться страница с текстом «Hello from Kubernetes!». ## Удаление виртуального роутера Перед удалением виртуального роутера необходимо отвязать его от кластера. Пока роутер используется хотя бы одной группой воркер-нод, возможность удаления в панели управления будет недоступна. Перейдите во вкладку «Ресурсы». Для каждой группы нажмите на три точки рядом с ее названием, выберите «Редактировать группу» и включите параметр «Публичный IP». После этого виртуальный роутер перестанет использоваться выбранной группой. Повторите действие для всех групп воркер-нод, в которых он был задействован. Перейдите во вкладку «Ресурсы». Для удаления нажмите на три точки рядом с нужной группой и выберите «Удалить». Повторите действие для всех групп воркер-нод, использующих виртуальный роутер. Когда роутер больше не используется воркерами, вернитесь во вкладку «Сеть». В строке «Интеграция с роутерами» станет активной кнопка «Отвязать» — нажмите ее, чтобы отключить роутер от кластера. ![Scr 20260216 Olco](https://content.timeweb.com/assets/481fd37c-c9c2-4d7c-90bf-e7e92b77975d.png?width=2112&height=1478) После отвязки откройте раздел «Сети» → «Роутеры», нажмите на три точки рядом с нужным роутером и выберите «Удалить». Кнопка удаления станет доступной сразу после отключения интеграции с кластером. ![Scr 20260216 Olne](https://content.timeweb.com/assets/21fbfaea-8e3b-44a7-9547-04bb8b147484.png?width=2092&height=1478) # Подключение сетевых дисков Source: https://timeweb.cloud/docs/k8s/network-drives-connection [Сетевые диски](https://timeweb.cloud/docs/network-drives) удобны для размещения данных, которые должны быть доступны между запусками подов или использовать на разных узлах. Они подходят для баз данных, резервного копирования, масштабирования хранилища по мере необходимости и изоляции данных между приложениями. > [!NOTE] > При использовании сетевых дисков в кластере действуют [те же ограничения](https://timeweb.cloud/docs/network-drives#ogranicheniya-setevyh-diskov), что и при использовании дисков с облачными серверами. Доступность сетевых дисков зависит от региона кластера: в Санкт-Петербурге доступны NVMe- и HDD-диски, в Москве — только NVMe-диски. CSI-драйвер сетевых дисков предназначен для интеграции сетевых дисков с кластером Kubernetes. Этот драйвер состоит из двух ключевых компонентов: 1. **Контроллер**: Отвечает за взаимодействие с API. Его задачи включают создание, удаление и изменение размера сетевых дисков. 2. **Node-агент**: Работает на каждом узле кластера и выполняет задачи, связанные с монтированием и управлением дисками на уровне операционной системы. Это включает запросы к API для монтирования или отмонтирования дисков, их форматирование в файловую систему `ext4` и, при необходимости, изменение размеров. Основные особенности драйвера: 1. Диски автоматически форматируются в `ext4`. 2. Драйвер поддерживает только режим `ReadWriteOnce`. Это означает, что один диск может быть подключен к одной ноде. При этом все поды на ноде будут иметь доступ к диску. Чтобы использовать сетевые диски в кластере, необходимо установить CSI-драйвер. Рассмотрим, как это сделать. ## Установка драйвера CSI Установить CSI-драйвер можно через панель управления кластером в разделе «Дополнения» или вручную — с помощью Helm. Рассмотрим оба варианта установки. > [!NOTE] > Для работы драйвера требуется 250 миллиядер и 250 МБ ОЗУ на каждой воркер-ноде. Кроме того, на одной из нод должно быть доступно еще 450 миллиядер и 626 МБ ОЗУ. Через панель управления В панели управления перейдите в раздел «Дополнения» и нажмите на дополнение «CSI-driver». ![Scr 20250818 Lolf](https://content.timeweb.com/assets/7182bc53-b204-45bf-ab07-8f1a42a79f59.png?width=1982&height=1436) В открывшемся окне нажмите кнопку «Установить». ![Scr 20250818 Lpck](https://content.timeweb.com/assets/57c915e6-ff05-4775-8f23-da0329457a7a.png?width=2006&height=1098) Дождитесь завершения установки. Через Helm Создайте файл `values.yaml` и добавьте следующие параметры: ```yml # Токен с доступом к сетевым дискам + кластерам k8s TW_API_SECRET: "токен" # ID из панели TW_CLUSTER_ID: "1000000" provisionerName: network-drives.csi.timeweb.cloud # plugin container image options image: # image name repository: cr-internal.twcstorage.ru/network-drives-csi/driver # image tag tag: 2 # image pull policy pullPolicy: Always # Node service options node: # node service log level logLevel: debug # force logs as json logJson: true # Controller service options controller: # controller replica count replicas: 1 # controller node selector nodeSelector: {} # controller toleration options tolerations: [] # RBAC options rbac: createRoles: true createServiceAccounts: true # metrics options metrics: podMonitor: enabled: false port: metrics path: /metrics interval: 60s ``` - `TW_API_SECRET` — токен доступа к API Timeweb Cloud. Получить токен можно в панели управления на странице «[API и Terraform](https://timeweb.cloud/my/api-keys)». - `TW_CLUSTER_ID` — ID Kubernetes-кластера. Это значение можно найти в URL страницы с информацией о вашем кластере в панели управления. ![Selection 141](https://content.timeweb.com/assets/235e7faf-4ff8-49b7-94e8-3f7e0d41d2ba.png?width=1354&height=615) Установите CSI-драйвер при помощи Helm: ```shell helm install csi-tw-helm oci://cr-internal.twcstorage.ru/network-drives-csi/csi-driver-timeweb-cloud \ -f values.yaml \ --namespace csi-driver-timeweb-cloud \ --create-namespace ``` Если необходимо установить конкретную версию драйвера, добавьте параметр `--version`: ```shell helm install csi-tw-helm oci://cr-internal.twcstorage.ru/network-drives-csi/csi-driver-timeweb-cloud \ -f values.yaml \ --namespace csi-driver-timeweb-cloud \ --create-namespace \ --version 1.0.0 ``` После установки убедитесь, что все поды в неймспейсе `csi-driver-timeweb-cloud` работают: ```shell kubectl get pods -n csi-driver-timeweb-cloud ``` Проверьте, что драйвер зарегистрирован: ```shell kubectl get csidrivers ``` Вывод должен быть примерно таким: ```shell NAME ATTACHREQUIRED PODINFOONMOUNT STORAGECAPACITY TOKENREQUESTS REQUIRESREPUBLISH MODES AGE network-drives.csi.timeweb.cloud false true true false Persistent 22h ``` ## Обновление драйвера Способ актуален как при установке драйвера через Helm, так и при установке через панель управления кластером. Для обновления необходимо удалить текущий CSI-драйвер и установить его заново. После обновления подключенные сетевые диски продолжат работать в штатном режиме — повторное подключение не требуется. Если драйвер устанавливался при помощи Helm, выполните удаление с помощью `kubectl`: ```shell kubectl delete -n csi-driver-timeweb-cloud csidriver network-drives.csi.timeweb.cloud ``` Если драйвер устанавливался через панель управления, перейдите в раздел «Дополнения» и кликните по карточке «CSI-driver». После этого нажмите кнопку «Удалить». ![Scr 20250922 Mzuv](https://content.timeweb.com/assets/b40fc15e-b3dc-41fc-a6a3-a593ca32d116.png?width=2000&height=1402) После удаления драйвера [установите его](https://timeweb.cloud/docs/k8s/network-drives-connection#ustanovka-drajvera-csi) заново. Рекомендуем использовать установку через панель управления. ## Создание диска при помощи манифеста Создание диска с использованием CSI-драйвера в Kubernetes начинается с создания `PersistentVolumeClaim` (PVC). Это запрос на предоставление тома с заданными параметрами, такими как размер, режим доступа и класс хранилища. Для начала создайте файл `pvc.yaml`, в котором нужно указать параметры PVC. Пример содержимого файла: ```yml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nvme namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: nvme.network-drives.csi.timeweb.cloud ``` В параметрах `PersistentVolumeClaim` указываются следующие значения: - `name` — имя вашего PVC. - `namespace` — пространство имен, где будет создан запрос. - `storage` — размер диска (минимальный размер — 1 ГБ). - `storageClassName` — класс хранилища: - `nvme.network-drives.csi.timeweb.cloud` — для NVMe-дисков, - `hdd.network-drives.csi.timeweb.cloud` — для HDD. О различиях между типами сетевых дисков вы можете прочитать в [этой статье](https://timeweb.cloud/docs/network-drives#tipy-setevyh-diskov). Учитывайте регион кластера: в Санкт-Петербурге доступны NVMe- и HDD-диски, в Москве — только NVMe-диски. После того, как манифест подготовлен, примените его с помощью команды: ```shell kubectl apply -f pvc.yaml ``` Чтобы расширить диск, измените значение параметра `storage` и повторно примените манифест. Это можно сделать в любой момент. Стоит учесть, что сам диск на этом этапе еще не будет создан. Он будет создан только тогда, когда PVC будет связан с работающим подом. Теперь создадим под, который будет использовать созданный PVC. Рассмотрим пример пода с Nginx, подключающим диск в качестве тома. Для этого создайте файл `nginx-pod.yaml`: ```yml apiVersion: v1 kind: Pod metadata: name: nginx-pvc namespace: default spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: nginx-storage mountPath: /usr/share/nginx/html volumes: - name: nginx-storage persistentVolumeClaim: claimName: pvc-nvme ``` В этом файле описывается под, в котором Nginx использует том для размещения данных: - `volumes` — задается подключение тома через PVC, который был создан ранее. - `claimName` — должно совпадать с именем PVC. - `volumeMounts` — указывается, куда именно в файловой системе контейнера будет подключен том (в данном случае — `/usr/share/nginx/html`). Примените манифест с помощью команды: ```shell kubectl apply -f nginx-pod.yaml ``` Убедитесь, что PVC создан и находится в статусе `Bound`: ```shell kubectl get pvc pvc-nvme ``` Вы должны увидеть подобный вывод: ```shell NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-nvme Bound pvc-a3a43b9e-6a1a-43e6-b218-3ff7d49b97b5 1Gi RWO nvme.network-drives.csi.timeweb.cloud 11s ``` Проверьте состояние пода: ```shell kubectl get pods nginx-pvc ``` Пример вывода: ```shell NAME READY STATUS RESTARTS AGE nginx-pvc 1/1 Running 0 2m17s ``` Если под или PVC не создаются, проверьте ошибки в `Events`: Для PVC: ```shell kubectl describe pvc pvc-nvme ``` Для пода: ```shell kubectl describe pod nginx-pvc ``` Обратите внимание, что при удалении PVC диск будет удален из панели управления. Если вы хотите предотвратить это, необходимо [создать сетевой диск](https://timeweb.cloud/docs/network-drives#sozdanie-setevogo-diska) в панели управления и подключить его по инструкции ниже. ## Увеличение объема диска Для увеличения объема существующего диска необходимо обновить манифест `PersistentVolumeClaim`. В нашем примере откройте файл `pvc.yaml` и измените значение в поле `spec.resources.requests.storage`. Например, чтобы указать 3 ГБ, манифест должен выглядеть так: ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nvme namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 3Gi storageClassName: nvme.network-drives.csi.timeweb.cloud ``` Сохраните изменения и примените обновленный манифест командой: ```shell kubectl apply -f pvc.yaml ``` ## Подключение существующего диска к кластеру Если у вас уже есть сетевой диск, который нужно подключить к Kubernetes, вам потребуется описать `PersistentVolume` (PV). Это действие связывает диск с кластером и позволяет использовать его в подах. Однако важно учитывать, что если на диске ранее были созданы разделы, они будут удалены. Kubernetes не работает с разделами и использует диск как единое пространство. Создайте файл `pv-existing-disk.yaml` с описанием PV: ```yml apiVersion: v1 kind: PersistentVolume metadata: name: existing-disk-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain csi: driver: network-drives.csi.timeweb.cloud volumeHandle: 0df2e9fc-ad17-414b-9e4c-373bbd0479cb fsType: ext4 storageClassName: nvme.network-drives.csi.timeweb.cloud ``` Что здесь важно: - `storageClassName` — выберите класс хранения, соответствующий типу вашего диска. Для NVMe-дисков используйте `nvme.network-drives.csi.timeweb.cloud`, для HDD — `hdd.network-drives.csi.timeweb.cloud`. - `persistentVolumeReclaimPolicy: Retain` — предотвращает удаление диска, если PVC будет удален. - `fsType` — файловая система, которая будет использоваться. - `volumeHandle` — это идентификатор диска. Чтобы его узнать, откройте раздел «[Сетевые диски](https://timeweb.cloud/my/network-drives)» в панели управления, выберите нужный диск и скопируйте `UUID` из URL страницы. ![Selection 142](https://content.timeweb.com/assets/7c9c5a50-4bef-4f9c-ba36-b716ad445b8b.png?width=1311&height=688) После описания PV нужно создать PVC, чтобы связать этот диск с подами. Создайте файл `pvc-existing-disk.yaml`: ```yml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: existing-disk-pvc spec: volumeMode: Filesystem accessModes: - ReadWriteOnce resources: requests: storage: 10Gi volumeName: existing-disk-pv storageClassName: nvme.network-drives.csi.timeweb.cloud ``` В этом манифесте обратите внимание на следующие поля: - `volumeName` — должно точно совпадать с именем PV, созданного ранее. - `storageClassName` — должно соответствовать значению, указанному в PV. - `resources.requests.storage` — укажите размер диска, равный значению, указанному в PV. Примените манифесты с помощью команд: ```shell kubectl apply -f pv-existing-disk.yaml kubectl apply -f pvc-existing-disk.yaml ``` Теперь PVC готов к использованию. Чтобы проверить, что диск подключен корректно, создайте тестовый под, который запишет файл на диск. Для этого подготовьте файл `write-file-pod.yaml`: ```yml apiVersion: v1 kind: Pod metadata: name: write-to-existing-disk spec: containers: - name: writer image: busybox command: ["/bin/sh", "-c"] args: ["echo 'Hello, Timeweb Cloud!' > /mnt/data/hello.txt && sleep 3600"] volumeMounts: - name: existing-disk-storage mountPath: /mnt/data volumes: - name: existing-disk-storage persistentVolumeClaim: claimName: existing-disk-pvc ``` Примените манифест пода: ```shell kubectl apply -f write-file-pod.yaml ``` Когда под запустится, проверьте содержимое файла, записанного на диск. Для этого выполните команду: ```shell kubectl exec -it write-to-existing-disk -- cat /mnt/data/hello.txt ``` В выводе вы должны увидеть: ```shell Hello, Timeweb Cloud! ``` Если вы хотите проверить содержимое диска вне Kubernetes, отключите его от кластера через панель управления, подключите к серверу и [примонтируйте диск](https://timeweb.cloud/docs/unix-guides/adding-removing-disk#montirovanie-diska). Убедитесь, что монтируете весь диск, а не его разделы, так как они не создаются при использовании Kubernetes. После монтирования в корне диска вы найдете файл `hello.txt`. # Реестр контейнеров Source: https://timeweb.cloud/docs/k8s/container-registry Реестр контейнеров (Container Registry) — это хранилище для Docker-образов и OCI-артефактов. В реестре можно хранить, распространять и использовать образы приложений для Kubernetes и других окружений. - [Создание реестра контейнеров](https://timeweb.cloud/docs/k8s/container-registry/create-registry) - [Интерфейс реестра контейнеров](https://timeweb.cloud/docs/k8s/container-registry/interface) - [Работа с Docker-образами](https://timeweb.cloud/docs/k8s/container-registry/docker-images) - [Использование реестра в Kubernetes](https://timeweb.cloud/docs/k8s/container-registry/kubernetes) - [Управление реестром с помощью regctl](https://timeweb.cloud/docs/k8s/container-registry/regctl) - [Загрузка Helm-чартов и OCI-артефактов](https://timeweb.cloud/docs/k8s/container-registry/helm-charts) # Создание реестра контейнеров Source: https://timeweb.cloud/docs/k8s/container-registry/create-registry Реестр контейнеров создается в панели управления. 1. Перейдите в раздел «Kubernetes» во вкладку «Реестры контейнеров». 2. Нажмите «Создать» или «Добавить». 3. Укажите параметры реестра: - - регион размещения; - объем хранилища; - имя реестра; - проект. Имя реестра должно быть уникальным. Используйте строчные латинские буквы, цифры и дефисы. Пробелы в имени не поддерживаются. Объем хранилища можно увеличить после создания реестра. Уменьшить объем нельзя. ![Интерфейс создания реестра контейнеров](https://content.timeweb.com/assets/b20c6a47-ad01-4015-9f45-023f8cb971bc.png?width=2172&height=1834) После создания реестра отобразится токен для авторизации. Токен показывается только один раз, поэтому сохраните его сразу. ![Токен для доступа к реестру контейнеров](https://content.timeweb.com/assets/3ea46d4f-7599-4028-8343-6e3b49563442.png?width=2154&height=1886) При потере токена, выпустите новый в разделе «[API и Terraform](https://timeweb.cloud/my/api-keys)». Токен, созданный при создании реестра, начинается с `registry-`. Обратите внимание: - токен для всех проектов дает доступ ко всем реестрам аккаунта; - токен для конкретного проекта дает доступ ко всем реестрам внутри этого проекта; - если токен был скомпрометирован, удалите его в разделе «[API и Terraform](https://timeweb.cloud/my/api-keys)». # Интерфейс реестра контейнеров Source: https://timeweb.cloud/docs/k8s/container-registry/interface После создания реестра в панели управления доступны вкладки «Дашборд», «Репозитории», «Настройки» и «История». ## Дашборд На дашборде отображаются: - занятый объем хранилища; - использование входящего и исходящего трафика; - команда для авторизации в реестре. ![Дашборд реестра контейнеров](https://content.timeweb.com/assets/03f09b5e-9db8-454a-9a80-073fcd7c9e19.png?width=2130&height=1852) ## Репозитории Во вкладке «Репозитории» отображаются: - список всех репозиториев в реестре; - образы внутри каждого репозитория; - теги и хэши образов. ![Scr 20260708 Nyim](https://content.timeweb.com/assets/9cea1d2d-591e-465b-ba61-ba516043b075.png?width=2170&height=1616) При нажатии на три точки рядом с образом или репозиторием можно: - удалить образ; - удалить весь репозиторий. ## Настройки В настройках можно изменить объем хранилища. Для этого нажмите «Изменить размер реестра», выберите новый объем и сохраните изменения. Уменьшить размер реестра нельзя. Также в настройках можно изменить проект, к которому относится реестр. ![Настройка реестра контейнеров](https://content.timeweb.com/assets/26dfb490-5be0-4acb-ac43-e7b6d3a09036.png?width=2172&height=1628) ## История Во вкладке «История» отображаются действия, выполненные с реестром. # Работа с Docker-образами Source: https://timeweb.cloud/docs/k8s/container-registry/docker-images В реестр контейнеров можно загружать и скачивать Docker-образы через Docker CLI. ## Авторизация Для авторизации используйте команду, указанную на дашборде реестра: ```bash docker login имя_реестра.registry.twcstorage.ru ``` После выполнения команды: - в качестве имени пользователя укажите любое значение, например имя реестра; - при запросе пароля введите токен, полученный при создании реестра. ## Загрузка образа Перед загрузкой назначьте образу тег, который включает адрес реестра и имя репозитория: ```bash docker tag имя_образа:тег имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_образа:тег ``` Замените: - `имя_образа` — на название локального образа; - `имя_реестра` — на имя, указанное при создании реестра; - `имя_репозитория` — на имя репозитория; - `тег` — на нужный тег, например `v1.0.0` или `latest`. Если указать имя несуществующего репозитория, он будет создан автоматически. После тегирования загрузите образ: ```bash docker push имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_образа:тег ``` ## Скачивание образа Скачать образ можно по тегу: ```bash docker pull имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_образа:тег ``` Или по хешу: ```bash docker pull имя_реестра.registry.twcstorage.ru/имя_репозитория@sha256:хеш ``` # Использование реестра в Kubernetes Source: https://timeweb.cloud/docs/k8s/container-registry/kubernetes Чтобы использовать реестр контейнеров в Kubernetes-кластере, создайте секрет с данными для подключения. Это можно сделать через панель управления. ## Подключение реестра к кластеру 1. Откройте кластер в панели управления. 2. Перейдите во вкладку «Управление». 3. Нажмите «Изменить» напротив строки «Нет подключенных реестров». 4. Выберите существующий реестр или создайте новый. 5. Укажите неймспейс, в котором будет размещен секрет. 6. Нажмите «Сохранить». ![Подключение реестра контейнеров к k8s](https://content.timeweb.com/assets/bcf3732f-20e7-4b19-972a-8260f6c5a395.png?width=2792&height=1802) Использовать реестр можно только в том неймспейсе, к которому он подключен. После сохранения в кластере будет создан секрет. Повторно открыв меню подключения реестра, вы увидите имя созданного секрета. ## Проверка секрета Проверьте наличие секрета: ```bash kubectl get secrets -n ``` Где `` — неймспейс, выбранный при подключении реестра. Пример вывода: ```bash NAME TYPE DATA AGE craas-doc kubernetes.io/dockerconfigjson 1 4m19s ``` ## Использование образа в манифесте Чтобы использовать образ из реестра, укажите его в манифесте и добавьте `imagePullSecrets`: ```yaml apiVersion: v1 kind: Pod metadata: name: test-hello-go spec: containers: - name: hello image: doc.registry.twcstorage.ru/go/hello-go:1.0.0 imagePullSecrets: - name: craas-doc ``` # Управление реестром с помощью regctl Source: https://timeweb.cloud/docs/k8s/container-registry/regctl Управлять реестром контейнеров можно не только через панель управления, но и с помощью сторонних CLI-утилит. Одна из таких утилит — [regctl](https://github.com/regclient/regclient), кроссплатформенная утилита для работы с реестрами. ## Установка Установите regctl одним из способов в зависимости от операционной системы. Windows Установите утилиту через [Scoop](https://scoop.sh/): ```bash scoop bucket add extras scoop install regclient ``` Для ручной установки скачайте бинарный файл из [репозитория regclient](https://github.com/regclient/regclient/releases). Переместите файл `regctl.exe` в директорию, которая добавлена в переменную окружения `PATH`. macOS Установите утилиту через [Homebrew](https://brew.sh/): ```bash brew install regclient ``` Для ручной установки скачайте бинарный файл из [репозитория regclient](https://github.com/regclient/regclient/releases). Например, для macOS на Apple Silicon: ```bash curl -L https://github.com/regclient/regclient/releases/latest/download/regctl-darwin-arm64 -o regctl ``` Сделайте файл исполняемым и переместите его в системную директорию: ```bash chmod +x regctl sudo mv regctl /usr/local/bin/regctl ``` Ubuntu Установите утилиту через Snap: ```bash sudo snap install regclient ``` Для ручной установки скачайте бинарный файл из [репозитория regclient](https://github.com/regclient/regclient/releases). Например, для процессоров `x86_64`: ```bash curl -L https://github.com/regclient/regclient/releases/latest/download/regctl-linux-amd64 -o regctl ``` Сделайте файл исполняемым и переместите его в системную директорию: ```bash chmod +x regctl sudo mv regctl /usr/local/bin/regctl ``` Проверьте установку: ```bash regctl version ``` Другие способы установки описаны в [официальной документации regclient](https://regclient.org/install/). ## Авторизация Для авторизации выполните команду: ```bash regctl registry login имя_реестра.registry.twcstorage.ru \ --user имя_пользователя \ --pass токен ``` Где: - `имя_реестра` — имя, указанное при создании реестра; - `имя_пользователя` — любое значение; - `токен` — токен, выданный при создании реестра. После выполнения команды данные будут сохранены в `~/.regctl/config.json`, и повторная авторизация не потребуется. ## Команды Получить список всех доступных команд: ```bash regctl ``` ### Загрузка образа Для проверки загрузки создайте локальный минимальный OCI-образ: ```bash regctl image create ocidir://minimal-image:latest \ --created now \ --platform linux/amd64 ``` Загрузите образ в реестр: ```bash regctl image copy \ ocidir://minimal-image:latest \ имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_образа:latest ``` Если указать имя несуществующего репозитория, он будет создан автоматически. ### Просмотр репозиториев и образов Вывести список всех репозиториев: ```bash regctl repo ls имя_реестра.registry.twcstorage.ru ``` Просмотреть теги образа: ```bash regctl tag ls имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_образа ``` Получить информацию об образе: ```bash regctl image inspect имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_образа:тег ``` ### Удаление образа Образ удаляется по его digest (хешу). Вместе с образом удаляются все теги, которые на него ссылаются. Получите digest образа: ```bash regctl image digest имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_образа:тег ``` Также digest можно найти в панели управления реестром, во вкладке «Репозитории». Удалите образ: ```bash regctl manifest rm имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_образа@sha256:хеш ``` Также образ можно удалить по тегу с флагом `--force-tag-dereference`: ```bash regctl manifest rm имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_образа:тег --force-tag-dereference ``` Обратите внимание, что при удалении образа исчезнут все теги, которые на него указывают. Например, если на образ ссылаются теги `latest`, `v1.2.3` и `stable`, будут удалены все три тега. При удалении образа через `regctl` место в реестре освобождается не сразу. Образ становится недоступен, но его слои удаляются позже при сборке мусора. Если место нужно освободить сразу, удалите образ через панель управления. ### Удаление тега Чтобы удалить только тег и оставить образ, выполните команду: ```bash regctl tag rm имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_образа:тег ``` Другие теги, которые указывают на тот же образ, продолжат работать. # Загрузка Helm-чартов и OCI-артефактов Source: https://timeweb.cloud/docs/k8s/container-registry/helm-charts Реестр контейнеров поддерживает спецификацию [OCI (Open Container Initiative)](https://opencontainers.org/). Поэтому в реестре можно хранить не только Docker-образы, но и другие артефакты, например Helm-чарты. Для загрузки Helm-чартов можно использовать [helm](https://timeweb.cloud/docs/k8s/deploy/helm) или стороннюю утилиту [oras](https://oras.land/). ## Через Helm Поддержка работы с OCI-реестрами появилась в Helm начиная с версии `3.8.0` и считается стабильной с `3.9.0`. #### Авторизация Для авторизации используйте команду: ```bash helm registry login имя_реестра.registry.twcstorage.ru -u iam ``` В качестве пароля укажите токен, выданный при создании реестра. #### Упаковка чарта Перед загрузкой упакуйте чарт: ```bash helm package ./имя_чарта ``` В результате будет создан архив, например `mychart-0.1.0.tgz`. Имя файла формируется на основе названия и версии из файла `Chart.yaml`. #### Загрузка чарта Для загрузки чарта используйте команду: ```bash helm push имя_запакованного_чарта oci://имя_реестра.registry.twcstorage.ru/имя_репозитория ``` Helm автоматически определит имя чарта и версию из архива. #### Скачивание чарта Для скачивания чарта выполните: ```bash helm pull oci://имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_чарта --version тег ``` ## Через oras `oras` позволяет загружать любые файлы как OCI-артефакты. #### Установка Перейдите [на страницу релизов](https://github.com/oras-project/oras/releases?roistat_visit=12470716) oras и скачайте архив для нужной операционной системы. Для Linux можно скачать архив через `wget`: ```bash wget https://github.com/oras-project/oras/releases/download/v1.2.3/oras_1.2.3_linux_amd64.tar.gz ``` Распакуйте архив: ```bash tar -xvzf oras_1.2.3_linux_amd64.tar.gz ``` Переместите бинарный файл: ```bash sudo mv oras /usr/local/bin/ ``` Проверьте установку: ```bash oras version ``` #### Авторизация Перед использованием авторизуйтесь в реестре: ```bash oras login имя_реестра.registry.twcstorage.ru ``` После выполнения команды: - в качестве имени пользователя укажите любое значение, например имя реестра; - при запросе пароля введите токен, полученный при создании реестра. #### Загрузка чарта Перед загрузкой упакуйте чарт: ```bash helm package ./имя_чарта ``` Загрузите архив в реестр: ```bash oras push имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_чарта:тег имя_запакованного_чарта ``` Проверьте, что артефакт успешно загружен: ```bash oras manifest fetch имя_реестра.registry.twcstorage.ru/имя_репозитория/имя_чарта:тег ``` Команда выведет OCI-манифест с типом артефакта, размером, хешем и другими метаданными. #### Скачивание Для скачивания артефакта выполните: ```bash oras pull имя_реестра.registry.twcstorage.ru/helm/mychart:1.0 ``` Артефакт будет загружен в текущую директорию. # Развертывание приложений Source: https://timeweb.cloud/docs/k8s/deploy - [Использование Helm](https://timeweb.cloud/docs/k8s/deploy/helm) - [Создание Helm-чарта](https://timeweb.cloud/docs/k8s/deploy/helm-chart-creation) # Использование Helm Source: https://timeweb.cloud/docs/k8s/deploy/helm Helm — это инструмент для управления Kubernetes-приложениями, упрощающий развертывание, обновление и обслуживание сложных приложений, состоящих из множества Kubernetes-объектов. По своей сути, Helm можно сравнить с пакетным менеджером для Kubernetes, таким как apt или yum в Linux, но адаптированным для работы с Kubernetes-кластерами. Helm решает несколько ключевых задач: #### Упрощение развертывания Приложения могут состоять из десятков или сотен объектов Kubernetes, таких как поды, сервисы, конфигурации и другие. Helm объединяет их в единый пакет, называемый чартом, который можно развернуть одной командой. Этот подход значительно снижает сложность ручной настройки приложений. #### Управление версиями приложений Каждый чарт может иметь несколько версий, что позволяет легко откатываться к предыдущей версии или обновлять приложение. Helm поддерживает управление версиями, отслеживание изменений развернутых приложений (релизов) и позволяет выполнять откаты при необходимости. #### Повторное использование конфигураций Helm использует шаблоны для генерации конфигурационных файлов Kubernetes, что облегчает настройку параметров, таких как количество реплик, настройки сетевого доступа, базы данных и другие переменные. Эти настройки хранятся в специальном конфигурационном файле — values.yaml. Это позволяет использовать один и тот же чарт в разных окружениях (разработка, тестирование, продакшн) с минимальными изменениями. #### Централизованное управление репозиториями Чарты хранятся в репозиториях, которые могут быть как публичными, так и частными. Helm позволяет добавлять различные репозитории, обновлять их и устанавливать приложения напрямую. Например, популярный репозиторий Bitnami содержит множество готовых к использованию чартов для различных сервисов. ## Установка Helm Helm тесно связан с версией Kubernetes, поэтому важно выбрать версию, совместимую с вашей версией кластера. Вы можете ознакомиться с таблицей совместимости версий Helm и Kubernetes в [официальной документации](https://helm.sh/docs/topics/version_skew/#supported-version-skew). Linux Чтобы установить Helm на Linux, можно использовать официальный скрипт для автоматической установки. Скачайте установочный скрипт и измените его права на выполнение: ```bash curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 && chmod 700 get_helm.sh ``` Запустите скрипт для установки последней версии Helm: ```bash ./get_helm.sh ``` Укажите версию Helm, совместимую с вашим Kubernetes-кластером: ```bash ./get_helm.sh -v 3.14.1 ``` #### Установка через репозиторий на Ubuntu Для установки Helm через системный пакетный менеджер на Ubuntu, выполните следующие шаги: Добавьте ключ подписи репозитория Helm: ```bash curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null ``` Установите пакет `apt-transport-https`, если он не был установлен ранее: ```bash sudo apt install apt-transport-https --yes ``` Добавьте репозиторий Helm в список источников APT: ```bash echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list ``` После этого выполните команду: ```bash sudo apt update ``` Теперь, когда все подготовительные шаги выполнены, можно установить Helm: ```bash sudo apt install helm ``` Эта команда устанавливает последнюю доступную версию Helm из репозитория. Укажите версию Helm, совместимую с вашим Kubernetes-кластером: ```bash sudo apt install helm=3.14.2-1 ``` Проверьте корректность установки, выполнив: ```bash helm version ``` ![Image1](https://content.timeweb.com/assets/16019808-4504-4d9a-ba6a-5af1f3af100f.png?width=720&height=87) Windows Чтобы установить Helm на Windows, выполните следующие шаги: Запустите PowerShell от имени администратора. Установите Helm с помощью следующей команды: ```shell winget install Helm.Helm ``` Установите версию Helm, совместимую с вашим Kubernetes-кластером: ```shell winget install Helm.Helm -v 3.14.1 ``` Проверьте версию Helm: ```shell helm version ``` ![Image3](https://content.timeweb.com/assets/fe5a9a18-0fa0-4771-b672-2cf6f8bfc6c7.png?width=1223&height=90) MacOS Чтобы установить Helm на MacOS, можно использовать официальный скрипт для автоматической установки. Скачайте установочный скрипт и измените его права на выполнение: ```bash curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 && chmod 700 get_helm.sh ``` Запустите скрипт для установки последней версии Helm: ```bash ./get_helm.sh ``` Укажите версию Helm, совместимую с вашим Kubernetes-кластером: ```bash ./get_helm.sh -v 3.14.1 ``` #### Установка через Homebrew Если вы используете Homebrew, Helm можно установить с его помощью. Обратите внимание, что в репозиториях Homebrew доступна только последняя версия Helm. Для установки выполните команду: ```bash brew install helm ``` Проверьте версию Helm: ```bash helm version ``` ![Image4](https://content.timeweb.com/assets/3c11a216-3d6c-4f6c-b0eb-2ab9e339ade6.png?width=1018&height=127) ## Настройка репозиториев Helm Helm использует репозитории для размещения и распространения чартов — пакетов приложений, которые можно устанавливать в Kubernetes. Репозитории помогают управлять приложениями из централизованных источников, что упрощает процессы установки, обновления и удаления приложений. ### Добавление репозитория Чтобы установить приложение из удаленного репозитория, его нужно сначала добавить в список доступных источников. Это делается с помощью команды `helm repo add`. Например, для добавления популярного репозитория Bitnami выполните следующую команду: ```bash helm repo add bitnami https://charts.bitnami.com/bitnami ``` Helm поддерживает как публичные, так и частные репозитории. Для работы с частными репозиториями могут потребоваться учетные данные для аутентификации, такие как токен или логин с паролем. ### Обновление репозиториев Иногда чарты в репозиториях обновляются, и чтобы убедиться, что у вас актуальные версии, необходимо периодически обновлять информацию о репозиториях. Для этого используется команда: ```bash helm repo update ``` Эта команда синхронизирует ваш локальный индекс чартов с актуальным содержимым удаленных репозиториев. ### Просмотр доступных репозиториев Вы можете посмотреть список всех подключенных репозиториев с помощью команды: ```bash helm repo list ``` Пример вывода: ![Image2](https://content.timeweb.com/assets/467f5232-e419-4b30-ac52-7448cc307865.png?width=681&height=188) ### Удаление репозитория Если какой-то репозиторий больше не нужен, его можно удалить с помощью команды `helm repo remove`. Например, чтобы удалить репозиторий Bitnami, выполните: ```bash helm repo remove bitnami ``` Эта команда удаляет репозиторий только из локальной конфигурации Helm. Сами чарты и установленные приложения при этом не затрагиваются. ## Установка приложений с помощью Helm После настройки репозиториев вы можете искать и устанавливать приложения в Kubernetes с помощью Helm. ### Поиск приложений в репозиториях Для поиска нужного чарта в подключенных репозиториях используйте команду: ```bash helm search repo <название_приложения> ``` Например, для поиска NGINX выполните: ```bash helm search repo nginx ``` ### Установка приложения Для установки найденного приложения выполните команду: ```bash helm install <имя_релиза> <репозиторий>/<название_чарта> ``` Например, для установки NGINX из репозитория Bitnami: ```bash helm install my-nginx bitnami/nginx ``` ### Проверка состояния установленного приложения Чтобы проверить состояние приложения, выполните: ```bash kubectl get pods ``` Для получения информации о релизе: ```bash helm status <имя_релиза> ``` ### Переопределение параметров установки Для изменения параметров чарта используйте: ```bash helm install my-nginx bitnami/nginx --set service.type=NodePort ``` ### Удаление приложения Чтобы удалить приложение и его ресурсы: ```bash helm uninstall <имя_релиза> ``` # Создание Helm-чарта Source: https://timeweb.cloud/docs/k8s/deploy/helm-chart-creation Helm-чарты позволяют упаковать Kubernetes-приложения в удобный пакет, включающий все необходимые ресурсы для их развертывания и управления. Чарты используются для автоматизации создания, обновления и удаления приложений в Kubernetes, что делает управление ими более простым и гибким. ## Создание нового чарта Для создания нового чарта используйте команду: ```bash helm create <имя_чарта> ``` Helm автоматически сгенерирует базовую структуру директорий и файлов, которые содержат необходимые шаблоны и конфигурации для развертывания приложения в Kubernetes. ## Основные файлы и директории - **Chart.yaml** Главный файл чарта, содержащий метаданные: название, версия, описание и версия приложения. Также может включать информацию о зависимостях, если приложение зависит от других чартов. Пример использования: - Указывает, какое приложение разворачивается, и его версию. - Упрощает управление версиями чарта и отслеживание изменений. - **values.yaml** Файл с параметрами по умолчанию, который используется для задания значений, применяемых к шаблонам чарта для генерации конечных манифестов Kubernetes. Пример использования: - Задает параметры, такие как количество реплик, тип сервиса, образ контейнера. - Позволяет переопределять значения через флаг `--set` или дополнительный файл при установке. - **templates/** В этой директории хранятся шаблоны YAML-файлов Kubernetes, определяющие объекты (поды, деплойменты, сервисы и т.д.), которые будут созданы при установке чарта. Шаблоны используют язык Go для динамической генерации манифестов на основе значений из `values.yaml`. Пример использования: - Шаблоны для создания объектов Kubernetes (например, `deployment.yaml`, `service.yaml`). - Логика для гибкой настройки ресурсов (например, количество реплик или тип сервиса). - **charts/** Директория для зависимостей — других чартов, необходимых для работы вашего приложения. Зависимости могут быть установлены локально или загружены из удаленных репозиториев. Пример использования: - Зависимости загружаются командой `helm dependency update`, если они указаны в `Chart.yaml`. - **.helmignore** Этот файл работает аналогично `.gitignore`, исключая файлы и директории при упаковке чарта в архив. Пример использования: - Исключение ненужных файлов (например, документации или временных файлов), чтобы они не попали в финальный пакет. Теперь, когда мы рассмотрели основную структуру чарта и назначение ключевых файлов, перейдем к практическому примеру. Мы создадим чарт для развертывания NGINX, настроим все необходимые параметры и рассмотрим, как шаблоны используют данные из `values.yaml` для генерации Kubernetes-ресурсов. ## Создание базовой структуры чарта Начните с создания базовой структуры чарта. Введите команду: ```shell helm create nginx-chart ``` Это создаст директорию `nginx-chart/` с базовыми файлами: ```shell nginx-chart ├── charts ├── Chart.yaml ├── templates │ ├── deployment.yaml │ ├── _helpers.tpl │ ├── hpa.yaml │ ├── ingress.yaml │ ├── NOTES.txt │ ├── serviceaccount.yaml │ ├── service.yaml │ └── tests │ └── test-connection.yaml └── values.yaml ``` ## Настройка файла Chart.yaml Файл `Chart.yaml` является ключевым элементом любого Helm-чарта. В этом файле указываются метаданные чарта, такие как его имя, версия, описание, а также информация о зависимостях. Пример содержимого `Chart.yaml` для чарта NGINX: ```yml apiVersion: v2 name: nginx-chart description: A Helm chart for deploying NGINX version: 0.1.0 appVersion: "1.21.0" ``` Ключевые поля: - **apiVersion**: Версия API Helm для данного чарта. Для чартов Helm 3 используйте `v2`. - **name**: Название вашего чарта. Оно должно быть уникальным в вашем репозитории. - **description**: Краткое описание того, что делает этот чарт. - **version**: Версия самого чарта. Каждый раз, когда вы вносите изменения в чарт, необходимо обновлять эту версию. - **appVersion**: Версия приложения (в данном случае NGINX), которая будет развернута. Это поле не влияет на логику Helm, но помогает пользователям видеть, какую версию приложения они устанавливают. ## Настройка файла values.yaml Файл `values.yaml` используется для указания значений по умолчанию для параметров, которые могут быть изменены при установке чарта. Настройте его следующим образом: ```yml replicaCount: 2 image: repository: nginx tag: "1.21.0" pullPolicy: IfNotPresent service: type: ClusterIP port: 80 serviceAccount: create: true name: "" ingress: enabled: false annotations: {} hosts: - host: chart-example.local paths: [] tls: [] autoscaling: enabled: false minReplicas: 1 maxReplicas: 5 targetCPUUtilizationPercentage: 80 resources: {} nodeSelector: {} tolerations: [] affinity: {} ``` Этот файл содержит следующие настройки: - **replicaCount**: Количество реплик приложения. - **image**: Настройки образа контейнера NGINX, включая версию (`tag`). - **service**: Тип сервиса и порт, через который будет доступен NGINX. - **serviceAccount**: Создание учетной записи сервиса для чарта. - **ingress**: Параметры для Ingress (по умолчанию выключено). - **autoscaling**: Параметры для авто-масштабирования (по умолчанию выключено). ## Шаблоны чарта Теперь настроим шаблоны в папке templates, которые будут использовать значения из `values.yaml`. #### templates/service.yaml Шаблон для создания Kubernetes-сервиса: ```yml apiVersion: v1 kind: Service metadata: name: {{ include "nginx-chart.fullname" . }} labels: app: {{ include "nginx-chart.name" . }} spec: type: {{ .Values.service.type }} ports: - port: {{ .Values.service.port }} targetPort: 80 selector: app: {{ include "nginx-chart.name" . }} ``` #### templates/deployment.yaml Шаблон для создания деплоймента NGINX: ```yml apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "nginx-chart.fullname" . }} labels: app: {{ include "nginx-chart.name" . }} spec: replicas: {{ .Values.replicaCount }} selector: matchLabels: app: {{ include "nginx-chart.name" . }} template: metadata: labels: app: {{ include "nginx-chart.name" . }} spec: serviceAccountName: {{ if .Values.serviceAccount.create }}{{ include "nginx-chart.serviceAccountName" . }}{{ else }}{{ .Values.serviceAccount.name }}{{ end }} containers: - name: nginx image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" ports: - containerPort: 80 ``` #### templates/serviceaccount.yaml Шаблон для создания учетной записи сервиса: ```yml {{- if .Values.serviceAccount.create }} apiVersion: v1 kind: ServiceAccount metadata: name: {{ include "nginx-chart.serviceAccountName" . }} {{- end }} ``` ## Проверка и установка чарта Проверьте чарт на наличие ошибок: ```shell helm lint ./nginx-chart ``` Установите чарт: ```shell helm install test-nginx ./nginx-chart ``` Проверьте статус релиза: ```shell helm status test-nginx ``` Проверьте состояние подов: ```shell kubectl get pods ``` ## Удаление чарта Когда приложение больше не нужно, его можно удалить: ```shell helm uninstall test-nginx ``` # Дополнения (аддоны) Source: https://timeweb.cloud/docs/k8s/addons В кластере Kubernetes можно использовать различные дополнения (аддоны) для расширения его функциональности. Они помогают управлять трафиком, мониторить сервисы, работать с хранилищем и обеспечивать безопасность. Некоторые дополнения, такие как **Nginx Ingress**, **Kubernetes Dashboard** и **CSI S3**, можно установить как на этапе создания кластера, так и позже. Управлять установкой и удалением аддонов можно во вкладке «Дополнения» в панели управления кластером. Дополнения, которые не представлены в панели управления, можно устанавливать вручную при помощи [Helm](https://timeweb.cloud/docs/k8s/deploy/helm). ## Apache Pulsar Apache Pulsar — это распределенная платформа для обмена сообщениями и потоковой обработки данных. Она используется для построения event-driven-архитектур, очередей, стриминга логов и интеграции микросервисов. #### Принцип работы При установке аддона в кластере автоматически разворачиваются основные компоненты Pulsar: ZooKeeper для координации, BookKeeper для хранения сообщений, Pulsar Broker для обработки и маршрутизации сообщений, Pulsar Proxy для клиентского доступа, Recovery для восстановления реплик данных, а также VictoriaMetrics и Grafana для мониторинга. Для хранения данных используются сетевые диски через CSI-драйвер. Количество реплик основных компонентов можно настраивать в параметрах аддона. #### Основные функции - Развертывание отказоустойчивой платформы обмена сообщениями. - Поддержка очередей, стриминга и event-driven-сценариев. - Масштабирование брокеров, прокси, ZooKeeper и BookKeeper. - Хранение сообщений на сетевых дисках. - Встроенный мониторинг через VictoriaMetrics и Grafana. > [!NOTE] > Подробная инструкция по работе [с Apache Pulsar](https://timeweb.cloud/docs/k8s/addons/apache-pulsar). ## ArgoCD ArgoCD — это инструмент GitOps для Kubernetes, который автоматизирует доставку приложений в кластер на основе состояния, описанного в Git-репозитории. #### Принцип работы ArgoCD отслеживает манифесты Kubernetes, Helm-чарты или Kustomize-конфигурации в Git-репозитории и сравнивает их с фактическим состоянием ресурсов в кластере. Если состояние отличается, ArgoCD показывает расхождение и может синхронизировать кластер с репозиторием вручную или автоматически. Такой подход позволяет хранить конфигурацию приложений в Git, управлять изменениями через pull request и быстро откатываться к предыдущим версиям. #### Основные функции - Доставка приложений в Kubernetes по GitOps-модели. - Синхронизация состояния кластера с Git-репозиторием. - Поддержка Kubernetes-манифестов, Helm и Kustomize. - Визуализация ресурсов приложения и их статуса. - Автоматическая или ручная синхронизация изменений. - Откат к предыдущим версиям конфигурации. ## Capsule Capsule — это дополнение, которое реализует концепцию мультиарендности в Kubernetes, обеспечивая изоляцию и контроль потребления ресурсов между различными группами пользователей. #### Принцип работы Capsule позволяет создавать логические тенанты на основе пространств имен с аннотациями и политиками, предоставляя пользователям возможность управлять своими ресурсами без воздействия на ресурсы других пользователей. #### Основные функции - Изоляция ресурсов между пользователями. - Управление квотами и ограничениями. - Настройка политики безопасности для различных пользователей. ## cert-manager cert-manager — это дополнение для Kubernetes, которое автоматизирует выпуск, обновление и управление TLS-сертификатами. #### Принцип работы cert-manager автоматически запрашивает и обновляет сертификаты, управляя их жизненным циклом с помощью CRD-объектов (CertificateRequest, Issuer, ClusterIssuer). Он поддерживает интеграцию с различными поставщиками сертификатов, такими как Let's Encrypt, HashiCorp Vault и внутренние центры сертификации. #### Основные функции - Автоматический выпуск сертификатов - Обновление сертификатов по истечении срока действия - Поддержка множества поставщиков (ACME, Vault, self-signed) > [!NOTE] > Подробная инструкция по работе [с cert-manager](https://timeweb.cloud/docs/k8s/addons/cert-manager). ## cert-manager Webhook cert-manager Webhook — это дополнение для Kubernetes, которое позволяет cert-manager автоматически создавать DNS-записи при валидации домена методом DNS-01. #### Принцип работы Webhook подключает cert-manager к DNS Timeweb Cloud. При выпуске сертификата cert-manager создает challenge для подтверждения владения доменом, а cert-manager Webhook автоматически добавляет нужную DNS-запись. После успешной проверки Let's Encrypt выпускает сертификат, а cert-manager сохраняет его в Kubernetes Secret. Для работы дополнения домен должен быть делегирован на NS Timeweb Cloud, а в кластере должен быть установлен cert-manager. #### Основные функции - Автоматическое создание DNS-записей для DNS-01-валидации. - Выпуск сертификатов Let's Encrypt через ClusterIssuer. - Поддержка wildcard-сертификатов. - Интеграция с cert-manager и Kubernetes Secret. > [!NOTE] > Подробная инструкция по работе [с cert-manager Webhook](https://timeweb.cloud/docs/k8s/addons/cert-manager-webhook). ## Cluster Proportional Autoscaler Cluster Proportional Autoscaler (CPA) — это контроллер, который автоматически масштабирует выбранный деплоймент в зависимости от количества нод или ядер в кластере. CPA особенно полезен для сервисов, которые должны масштабироваться пропорционально ресурсам кластера, например metrics-server или coredns. #### Принцип работы В отличие от горизонтального автоскейлера, CPA не использует метрики нагрузки. Вместо этого масштабирование происходит по заданным формулам, основанным на количестве нод и/или CPU. Поддерживаются два режима: - Linear — количество реплик рассчитывается по заданной формуле с учетом ядер и нод. - Ladder — количество реплик задается явно в виде таблицы соответствий (например, 2 ноды → 2 пода). #### Основные функции - Масштабирование деплойментов без метрик нагрузки. - Поддержка линейного и табличного (ladder) режима. - Учет как доступных, так и недоступных (unschedulable) нод. - Возможность гибкой настройки масштабирования через Helm. - Поддержка нескольких экземпляров CPA для разных целей. > [!NOTE] > Подробная инструкция по работе [с Cluster Proportional Autoscaler](https://timeweb.cloud/docs/k8s/addons/cpa). ## CSI S3 CSI S3 — это плагин для Container Storage Interface (CSI), который позволяет использовать хранилища данных S3 совместно с Kubernetes. #### Принцип работы CSI S3 предоставляет возможность динамически подключать объектные хранилища, совместимые с S3 (например, Ceph, MinIO, AWS S3), как стандартные персистентные тома для использования в Kubernetes. Это особенно полезно для размещения больших объемов данных в контейнерных приложениях. #### Основные функции - Подключение S3-хранилищ как постоянных томов (Persistent Volumes). - Поддержка динамического создания и удаления томов. - Гибкость в использовании различных S3-совместимых систем хранения данных. > [!NOTE] > Подробная инструкция по работе [с CSI S3](https://timeweb.cloud/docs/k8s/addons/csi-s3). ## CSI-driver CSI-driver — это дополнение для Kubernetes, которое подключает сетевые диски Timeweb Cloud к кластеру и позволяет использовать их как постоянные тома для приложений. #### Принцип работы CSI-драйвер интегрирует сетевые диски с Kubernetes через Container Storage Interface. Он состоит из контроллера и node-агента. Контроллер взаимодействует с API и отвечает за создание, удаление и изменение размера сетевых дисков. Node-агент работает на каждой ноде кластера и управляет монтированием дисков на уровне операционной системы. При создании PersistentVolumeClaim Kubernetes передает запрос драйверу, а драйвер создает сетевой диск и подключает его к нужной ноде. Диски автоматически форматируются в ext4 и используются приложениями как обычные persistent volumes. #### Основные функции - Подключение сетевых дисков к Kubernetes через CSI. - Динамическое создание дисков через PersistentVolumeClaim. - Изменение размера подключенных дисков. - Автоматическое форматирование дисков в ext4. - Поддержка storage-классов для NVMe- и HDD-дисков. - Работа в режиме ReadWriteOnce. > [!NOTE] > Подробная инструкция по работе [с CSI-driver](https://timeweb.cloud/docs/k8s/network-drives-connection). ## Envoy Gateway Envoy Gateway — это контроллер Gateway API для Kubernetes, который использует Envoy Proxy для обработки входящего трафика. Он позволяет публиковать HTTP, HTTPS, gRPC, TCP и UDP-сервисы и управлять маршрутизацией через стандартные ресурсы Kubernetes. #### Принцип работы Gateway API можно рассматривать как развитие Ingress. Вместо одного ресурса Ingress используются несколько объектов с разными зонами ответственности: GatewayClass, Gateway, HTTPRoute, GRPCRoute, TCPRoute, UDPRoute и TLSRoute. Envoy Gateway отслеживает эти ресурсы и на их основе создает Envoy Proxy, который принимает внешний трафик и направляет его к сервисам внутри кластера. #### Основные функции - Публикация HTTP, HTTPS, gRPC, TCP и UDP-сервисов. - Маршрутизация по доменам, путям и другим правилам Gateway API. - Управление TLS-настройками. - Применение политик трафика через Kubernetes-ресурсы. - Использование Envoy Proxy как data plane. > [!NOTE] > Подробная инструкция по работе [с Envoy Gateway](https://timeweb.cloud/docs/k8s/addons/envoy-gateway). ## ExternalDNS ExternalDNS — это инструмент для автоматического управления DNS-записями на основе ресурсов Kubernetes. Он создает и обновляет записи в DNS-провайдере в соответствии с аннотациями, указанными в манифестах сервисов и Ingress-ресурсов. #### Принцип работы ExternalDNS отслеживает изменения в объектах Kubernetes и создает или обновляет DNS-записи, в соответствии с внешними IP-адресами сервисов. Это позволяет автоматически привязывать доменные имена к сервисам в кластере без необходимости ручного управления DNS. #### Основные функции - Автоматическое создание и обновление DNS-записей. - Упрощённое управление доменными именами в Kubernetes. > [!NOTE] > Подробная инструкция по работе [ExternalDNS](https://timeweb.cloud/docs/k8s/addons/externaldns). ## Fluent Operator Fluent Operator — это Kubernetes-оператор для управления Fluentd и Fluent Bit, который автоматизирует сбор, маршрутизацию и обработку логов в кластере. #### Принцип работы Fluent Operator использует CRD для управления конфигурацией Fluentd и Fluent Bit, позволяя направлять контейнерные и системные логи в различные хранилища, такие как Elasticsearch, Loki, Kafka и другие. #### Основные функции - Централизованный сбор и управление логами - Гибкая маршрутизация логов в различные системы хранения - Настройка фильтрации, агрегации и обработки логов > [!NOTE] > Подробная инструкция по работе [с Fluent Operator](https://timeweb.cloud/docs/k8s/addons/fluent-operator). ## Grafana Loki Grafana Loki — это система сбора и просмотра логов, разработанная Grafana Labs. Она используется совместно с Grafana и обеспечивает удобную визуализацию логов Kubernetes. #### Принцип работы В отличие от традиционных стеков логирования (например, ELK), Loki не индексирует содержимое логов, а сохраняет их вместе с метаданными (именем пода, namespace и др.). Это делает систему менее ресурсоемкой. Логи собираются с помощью агента Promtail, установленного на каждой ноде, и отправляются в Loki. Просмотр логов осуществляется в Grafana с использованием языка запросов LogQL. #### Основные функции - Сбор логов с подов Kubernetes. - Хранение логов с привязкой к метаданным. - Просмотр логов в Grafana. - Поддержка запроса и фильтрации через LogQL. - Интеграция с альтернативными агентами (Fluent Bit, Filebeat, Logstash). > [!NOTE] > Подробная инструкция по работе [с Grafana Loki](https://timeweb.cloud/docs/k8s/addons/grafana-loki). ## Headlamp Headlamp — это веб-интерфейс для управления Kubernetes-кластером. Он позволяет просматривать ресурсы кластера, управлять ими и отслеживать состояние приложений без использования kubectl. #### Принцип работы Headlamp устанавливается в кластер и предоставляет графический интерфейс для работы с Kubernetes-ресурсами. После установки интерфейс открывается из панели управления кластером. Для входа используется токен, который можно получить во вкладке «Дашборд». Через Headlamp можно просматривать состояние кластера, рабочие нагрузки, хранилища, сетевые ресурсы, политики безопасности, конфигурации и пользовательские ресурсы. #### Основные функции - Просмотр информации о кластере и его состоянии. - Управление Pods, Deployments, StatefulSet и другими workload-ресурсами. - Работа с PVC, PV, storage-классами, сервисами и Ingress. - Просмотр ресурсов Gateway API. - Управление ролями, сервисными аккаунтами, ConfigMap, Secrets и CRD. - Создание ресурсов через веб-интерфейс. > [!NOTE] > Подробная инструкция по работе [с Headlamp](https://timeweb.cloud/docs/k8s/addons/headlamp). ## Istio Istio — это Service Mesh, которая обеспечивает управление трафиком, безопасность и мониторинг для сервисов в Kubernetes. #### Принцип работы Istio внедряет sidecar-прокси (Envoy) в каждый под, обеспечивая маршрутизацию, аутентификацию и мониторинг запросов внутри сервисной сети. #### Основные функции - Маршрутизация трафика. - Гибкое управление политиками безопасности. - Мониторинг и трассировка запросов. ## Istio Ingress Istio Ingress — это компонент Istio, который управляет внешним трафиком в сервисную сетку. #### Принцип работы Istio Ingress работает как точка входа в Service Mesh, обрабатывая внешние HTTP, HTTPS и TCP-запросы и направляя их к внутренним сервисам через Istio. #### Основные функции - Управление внешним трафиком. - Маршрутизация запросов. - Поддержка TLS и mTLS. ## Jaeger Jaeger — это инструмент трассировки распределенных систем, используемый для мониторинга взаимодействий между микросервисами и анализа их производительности. #### Принцип работы Jaeger собирает данные о запросах между сервисами, регистрируя временные метки и зависимости вызовов. Это позволяет отслеживать цепочку запросов, анализировать задержки и выявлять узкие места в системе. #### Основные функции - Трассировка распределенных запросов. - Анализ времени отклика сервисов. - Поиск узких мест в архитектуре. ## Kiali Kiali — это инструмент для управления и визуализации Service Mesh Istio в Kubernetes. #### Принцип работы Kiali предоставляет графическое представление сетевых взаимодействий между сервисами, отображая их зависимости, метрики и потенциальные проблемы. Он может интегрироваться с Prometheus, собирая данные о трафике, ошибках и производительности, а также упрощает управление конфигурацией Istio. #### Основные функции - Визуализация сервисной сети. - Мониторинг трафика и ошибок. - Управление конфигурацией Istio. ## Kube Prometheus Stack Kube Prometheus Stack — это набор инструментов для мониторинга Kubernetes, включающий Prometheus для сбора метрик, Alertmanager для управления оповещениями и Grafana для визуализации данных. #### Принцип работы Система автоматически собирает метрики из компонентов Kubernetes, подов и узлов, а также из сервисов, поддерживающих экспорт Prometheus-метрик. Данные хранятся в Prometheus, отображаются в Grafana, а Alertmanager отправляет уведомления при превышении заданных порогов. #### Основные функции - Сбор и хранение метрик. - Визуализация данных в Grafana. - Настройка оповещений. ## Kubernetes Dashboard > [!NOTE] > Аддон считается устаревшим и доступен только в кластерах, где он был установлен ранее. Kubernetes Dashboard — это веб-интерфейс для управления и мониторинга Kubernetes-кластера. Для работы плагина необходим Nginx Ingress. Поэтому после включения этого плагина автоматически выберется и Nginx Ingress. #### Принцип работы Dashboard предоставляет пользователям графический интерфейс для взаимодействия с кластером. Он позволяет просматривать информацию о статусе подов, узлов, сервисов и других ресурсов Kubernetes. Также через интерфейс можно создавать, изменять и удалять ресурсы. #### Основные функции - Просмотр состояния кластера (поды, узлы, сервисы, конфигурации). - Управление ресурсами кластера. - Мгновенный доступ к логам подов и информации о запущенных приложениях. - Управление секретами и конфигурациями. #### Вход в Kubernetes Dashboard Если вы включили опцию Kubernetes Dashboard для кластера, вы сможете перейти в Dashboard из панели управления. Для входа вам потребуется токен, который можно скопировать на вкладке «Дашборд». ![Вход в Kubernetes Dashboard](https://content.timeweb.com/assets/cfe952eb-0373-4a86-b082-b8584dbae90e.png?width=1021&height=919) ## MinIO Operator MinIO Operator — это дополнение для Kubernetes, позволяющее развернуть S3-совместимое хранилище на базе MinIO. Оператор упрощает управление пользователями, бакетами и конфигурацией с помощью манифестов Kubernetes. #### Принцип работы Оператор использует CRD-объекты для создания кластеров хранения (тенантов), назначения пользователей и управления конфигурацией. Данные могут храниться на сетевых дисках через CSI-драйвер. Доступ к консоли и S3 API реализуется через Nginx Ingress и TLS-сертификаты от cert-manager. #### Основные функции - Развертывание MinIO-хранилища с помощью CRD. - Управление пользователями и ключами доступа через секреты. - Интеграция с [Nginx Ingress](https://timeweb.cloud/docs/k8s/addons/nginx-ingress) и [cert-manager](https://timeweb.cloud/docs/k8s/addons/cert-manager). - Работа с S3 API и консолью управления. - Поддержка отказоустойчивых конфигураций (от 4 узлов). > [!NOTE] > Подробная инструкция по работе [с MinIO Operator](https://timeweb.cloud/docs/k8s/addons/minio-operator). ## NGINX Gateway Fabric NGINX Gateway Fabric — это контроллер Gateway API для Kubernetes, который использует NGINX для обработки входящего трафика. С его помощью можно публиковать сервисы, управлять маршрутизацией и постепенно переходить от Ingress к Gateway API. #### Принцип работы NGINX Gateway Fabric отслеживает ресурсы Gateway API: GatewayClass, Gateway, HTTPRoute, GRPCRoute, TCPRoute, UDPRoute и TLSRoute. На основе этих ресурсов контроллер создает NGINX data plane: поды NGINX и сервис, через который внешний трафик попадает в кластер и направляется к Kubernetes-сервисам. При стандартной установке создается GatewayClass с именем nginx, который обслуживает создаваемые шлюзы. #### Основные функции - Публикация HTTP, HTTPS, gRPC, TCP и UDP-сервисов. - Маршрутизация по доменам и путям. - Управление TLS. - Работа с ресурсами Gateway API. - Миграция существующих Ingress-ресурсов на Gateway API. > [!NOTE] > Подробная инструкция по работе [с NGINX Gateway Fabric](https://timeweb.cloud/docs/k8s/addons/nginx-gateway-fabric). ## Nginx Ingress Nginx Ingress — это контроллер Ingress, который управляет доступом внешнего трафика к сервисам внутри кластера Kubernetes через HTTP и HTTPS. Он маршрутизирует трафик на основе правил, определенных в ресурсах Ingress. #### Принцип работы Ingress-контроллер отслеживает объекты Ingress в Kubernetes и конфигурирует обратный прокси Nginx, чтобы направлять трафик на нужные сервисы. Это позволяет организовать доступ к различным микросервисам через единый IP-адрес, а также настроить балансировку нагрузки и маршрутизацию на основе доменных имен. #### Основные функции - Маршрутизация HTTP/HTTPS запросов. - Поддержка SSL/TLS. - Балансировка нагрузки. - Управление внешним доступом к сервисам в кластере. > [!NOTE] > Подробная инструкция по работе [с Nginx Ingress](https://timeweb.cloud/docs/k8s/addons/nginx-ingress). ## NVIDIA GPU Operator NVIDIA GPU Operator — это дополнение для Kubernetes, которое автоматизирует подготовку GPU-нод и управление компонентами NVIDIA, необходимыми для запуска нагрузок с использованием GPU. #### Принцип работы Оператор устанавливает и управляет компонентами NVIDIA в кластере: драйверами GPU, container runtime, device plugin, DCGM Exporter и другими сервисами. После установки Kubernetes начинает видеть GPU как выделяемый ресурс, который можно запрашивать в спецификациях подов. Это упрощает запуск ML-, AI-, render- и HPC-нагрузок в Kubernetes: администратору не нужно вручную настраивать каждую GPU-ноду и следить за совместимостью компонентов. #### Основные функции - Автоматическая настройка GPU-нод в Kubernetes. - Установка и управление NVIDIA-драйверами. - Публикация GPU как ресурса Kubernetes. - Поддержка запуска контейнеров с GPU. - Мониторинг состояния GPU через DCGM Exporter. - Упрощение эксплуатации ML-, AI- и HPC-нагрузок. ## OpenFaaS Kubernetes OpenFaaS — это платформа для запуска функций (Function as a Service) в Kubernetes. Она позволяет быстро разворачивать и выполнять контейнеризированные функции по запросу или событию. #### Принцип работы Функции в OpenFaaS упаковываются в Docker-образы и разворачиваются как поды в кластере. Платформа управляет их масштабированием, маршрутизацией запросов и безопасностью. Для работы с OpenFaaS доступны веб-интерфейс и CLI-утилита faas-cli. Есть поддержка популярных языков программирования через шаблоны: Python, Node.js, Go и другие. #### Основные функции - Развертывание функций по модели FaaS в Kubernetes. - Web-интерфейс и CLI для управления функциями. - Поддержка кастомных и встроенных функций. - Интеграция с Docker Hub. - Масштабирование функций в зависимости от нагрузки. > [!NOTE] > Подробная инструкция по работе [с OpenFaaS Kubernetes](https://timeweb.cloud/docs/k8s/addons/openfaas). ## Traefik Traefik — это Ingress-контроллер и балансировщик нагрузки для Kubernetes, обеспечивающий динамическую маршрутизацию трафика и автоматическое управление SSL-сертификатами. #### Принцип работы Автоматически обнаруживает сервисы в кластере и конфигурирует маршрутизацию HTTP/HTTPS трафика. #### Основные функции - Маршрутизация трафика. - Интеграция с Let’s Encrypt. > [!NOTE] > Подробная инструкция по работе [с Traefik](https://timeweb.cloud/docs/k8s/addons/traefik). ## TWC Alert Bot TWC Alert Bot — это дополнение для Kubernetes, которое отправляет уведомления о событиях в кластере в Telegram, Slack или Discord. Помогает оперативно реагировать на сбои и поддерживать стабильность инфраструктуры. #### Принцип работы Alert Bot отслеживает критичные события: рестарты контейнеров, сбои liveness- и readiness-проб, проблемы с нодами, ошибки деплоя и др. Для отправки уведомлений достаточно настроить один из поддерживаемых мессенджеров. Можно указать наблюдаемые неймспейсы, исключения по подам и включить только нужные типы алертов. #### Основные функции - Отправка уведомлений в Telegram, Slack и Discord. - Гибкая фильтрация по неймспейсам и именам подов. - Настройка типов алертов (рестарты, сбои проб, события Warning и др.). - Уведомления о превышении ресурсов и недоступности нод. - Простая установка и конфигурация через панель управления. > [!NOTE] > Подробная инструкция по работе [с TWC Alert Bot.](https://timeweb.cloud/docs/k8s/addons/twc-alert-bot) ## TWC DBaaS Operator TWC DBaaS Operator — это дополнение для Kubernetes, позволяющее создавать и управлять облачными базами данных Timeweb Cloud прямо из кластера с помощью CRD-ресурсов. #### Принцип работы Оператор использует собственные ресурсы (Instance, Database, User) для управления жизненным циклом баз данных. Поддерживаются MySQL, PostgreSQL и Redis. Создание происходит в несколько этапов: сначала инстанс (сервер), затем базы данных и пользователи с доступами. #### Основные функции - Управление базами данных из Kubernetes через CRD. - Поддержка MySQL, PostgreSQL и Redis. - Создание инстансов, баз и пользователей с правами доступа. - Гибкая настройка конфигураций и резервного копирования. - Интеграция с API Timeweb Cloud для выбора конфигурации. > [!NOTE] > Подробная инструкция по работе [с TWC DBaaS Operator.](https://timeweb.cloud/docs/k8s/addons/dbaas-operator) ## TWC Karpenter TWC Karpenter — это контроллер для Kubernetes, который автоматически создает и удаляет воркер-ноды в зависимости от текущей нагрузки в кластере. #### Принцип работы Karpenter отслеживает поды в статусе Pending, анализирует их требования к ресурсам и подбирает подходящую конфигурацию ноды. Затем он создает новую ноду через API и размещает на ней поды. При снижении нагрузки Karpenter может удалять неиспользуемые ноды, консолидировать нагрузку и отключать избыточные или менее эффективные по стоимости узлы. В отличие от классического Cluster Autoscaler, он не опирается только на заранее заданные размеры групп нод, а подбирает конфигурацию под текущую рабочую нагрузку. #### Основные функции - Автоматическое создание нод под поды, которые не удалось разместить. - Подбор конфигурации ноды под требования рабочей нагрузки. - Удаление неиспользуемых нод при снижении нагрузки. - Консолидация подов на меньшем количестве узлов. - Интеграция с группами нод Timeweb Cloud через NodeClass и NodePool. > [!NOTE] > Подробная инструкция по работе [с TWC Karpenter](https://timeweb.cloud/docs/k8s/addons/karpenter). ## Vault Vault — система управления секретами от HashiCorp. Позволяет централизованно хранить токены, пароли, сертификаты и другие чувствительные данные. В Kubernetes используется как внешнее хранилище секретов с возможностью гибкого контроля доступа. #### Принцип работы Vault устанавливается как аддон в кластер и может работать в dev- или HA-режиме. Dev-режим подходит только для разработки. В HA-режиме обеспечивается отказоустойчивость, масштабирование и использование распределенного хранилища (например, [CSI-S3](https://timeweb.cloud/docs/k8s/addons/csi-s3)). #### Основные функции - Централизованное и безопасное хранилище секретов. - Поддержка dev- и HA-режима. - Встроенный UI для управления данными. - Интеграция с Kubernetes: автоматическая подстановка секретов в поды. - Поддержка Raft и внешних CSI-хранилищ. > [!NOTE] > Подробная инструкция по работе [с Vault.](https://timeweb.cloud/docs/k8s/addons/vault) ## Velero Velero — это инструмент для резервного копирования, восстановления и миграции данных в Kubernetes. #### Принцип работы Позволяет делать бэкапы и восстанавливать данные на уровне namespace, ресурсов и PersistentVolume. #### Основные функции - Бэкап и восстановление ресурсов Kubernetes. - Миграция данных и приложений между кластерами. - Поддержка локальных и облачных хранилищ для резервных копий. > [!NOTE] > Подробная инструкция по работе [с Velero](https://timeweb.cloud/docs/k8s/addons/velero). ## VictoriaMetrics Operator VictoriaMetrics Operator — это оператор для Kubernetes, который автоматизирует развертывание и управление компонентами мониторинга на базе VictoriaMetrics. Он позволяет собирать, хранить и визуализировать метрики без необходимости ручной настройки каждого компонента. #### Принцип работы Оператор использует CRD-объекты для управления инфраструктурой мониторинга: - VMSingle — однозадачный экземпляр VictoriaMetrics, подходит для простых или тестовых кластеров. - VMCluster — масштабируемый вариант с несколькими компонентами, предназначенный для продакшена. - VMAgent — собирает метрики из подов и сервисов и передает их в VMSingle или VMCluster. - VMPodScrape — определяет, какие поды нужно опрашивать и как. Сбор метрик производится с помощью VMAgent, а доступ к данным возможен через веб-интерфейс VictoriaMetrics. #### Основные функции - Автоматическая установка компонентов мониторинга. - Сбор метрик из подов, сервисов и сторонних источников. - Гибкая настройка хранения и агрегации метрик. - Масштабируемость и поддержка продакшн-нагрузок. - Интеграция с Ingress для доступа к интерфейсу. > [!NOTE] > Подробная инструкция по работе [с VictoriaMetrics Operator](https://timeweb.cloud/docs/k8s/addons/victoriametrics-operator). ## WordPress WordPress — это CMS для создания сайтов и блогов. В Kubernetes она разворачивается как готовое приложение: аддон создает WordPress, базу данных, хранилище данных и сетевые настройки. #### Принцип работы При установке аддона в кластере создаются приложение WordPress, база данных MariaDB, два сетевых диска для хранения данных, LoadBalancer, объект Ingress и Kubernetes Secrets. Для доступа к сайту можно использовать балансировщик нагрузки или доменное имя через Nginx Ingress. Данные WordPress и MariaDB хранятся в PersistentVolumeClaim, поэтому остаются доступны при пересоздании подов. #### Основные функции - Автоматическое развертывание WordPress в Kubernetes. - Создание MariaDB для хранения данных сайта. - Использование сетевых дисков для WordPress и базы данных. - Настройка доступа через LoadBalancer и Ingress. - Возможность указать логин, пароль, почту администратора, домен и схему доступа. - Поддержка размещения файлов WordPress в S3-бакете при использовании CSI S3. > [!NOTE] > Подробная инструкция по работе [с WordPress](https://timeweb.cloud/docs/k8s/addons/wordpress). # Apache Pulsar Source: https://timeweb.cloud/docs/k8s/addons/apache-pulsar Apache Pulsar — это распределенная платформа для обмена сообщениями и потоковой обработки данных. Она используется для построения event-driven-архитектур, очередей, стриминга логов и интеграции микросервисов. В панели управления кластером вы можете развернуть Apache Pulsar как готовый аддон, и в кластере автоматически создадутся все необходимые компоненты: брокеры сообщений, хранилище данных, координаторы, прокси и система мониторинга. ## Установка Перед установкой Apache Pulsar убедитесь, что в кластере установлены: - [CSI-driver](https://timeweb.cloud/docs/k8s/network-drives-connection#ustanovka-drajvera-csi) — обязателен, используется для подключения сетевых дисков к BookKeeper и ZooKeeper. - Достаточное количество воркер-нод — по умолчанию кластер создается как отказоустойчивое решение. Для запуска необходимо не менее 4 воркер-нод с характеристиками: 4 CPU, 8 ГБ RAM, 120 ГБ NVMe. Для установки откройте раздел «Дополнения» в панели управления кластера и выберите «Apache Pulsar». ![Scr 20251229 Kssv](https://content.timeweb.com/assets/e60ea3c2-be67-4352-8d4a-c138f0effd0e.png?width=2166&height=1440) В открывшемся окне вы можете установить переключатель «Продвинутая установка» для редактирования параметров установки. Для тестирования можно оставить значения по умолчанию и нажать «Установить». ![Scr 20251229 Ktar](https://content.timeweb.com/assets/a9a33edd-c06e-414d-9bf9-88943a96f8cf.png?width=2154&height=1512) Для доступа к Grafana в настройках необходимо установить пароль. Укажите его в разделе: ```yaml grafana: enabled: true adminPassword: "password" ``` При использовании параметров по умолчанию будут развернуты: - `ZooKeeper` — координатор кластера; - `BookKeeper` — распределенное хранилище сообщений; - `Pulsar Broker` — обработка и маршрутизация сообщений; - `Pulsar Proxy` — точка входа для клиентов; - `Recovery` — восстановление реплик данных; - `VictoriaMetrics` и `Grafana` — мониторинг кластера. ## Настройка параметров ### Основные компоненты Состав кластера задается в блоке `components`: ```yaml components: zookeeper: true bookkeeper: true broker: true proxy: true autorecovery: true toolset: true ``` Здесь можно включать или отключать отдельные сервисы Pulsar. Например, для тестового окружения можно оставить только `ZooKeeper`, `BookKeeper`, `Broker` и `Proxy`. ### Количество реплик Основные сервисы масштабируются через параметры `replicaCount`: ```yaml zookeeper: replicaCount: 3 bookkeeper: replicaCount: 4 broker: replicaCount: 3 proxy: replicaCount: 3 ``` - `ZooKeeper` отвечает за координацию и должен иметь нечетное количество реплик. - `BookKeeper` хранит данные сообщений и определяет отказоустойчивость кластера. - `Broker` и `Proxy` масштабируются для распределения нагрузки между клиентами. ### Хранилище данных Pulsar использует сетевые диски для размещения всех сообщений. Томами управляют StatefulSet `ZooKeeper` и `BookKeeper`. Пример PVC для BookKeeper: ```yaml volumes: ledgers: size: 50Gi storageClassName: nvme.network-drives.csi.timeweb.cloud ``` Пример PVC для ZooKeeper: ```yaml zookeeper: volumes: data: size: 20Gi datalog: size: 20Gi ``` Все тома создаются с классом `nvme.network-drives.csi.timeweb.cloud`. При необходимости его можно заменить на [другой тип хранилища](https://timeweb.cloud/docs/k8s/network-drives-connection#sozdanie-diska-pri-pomoshchi-manifesta). Сетевые диски появятся в панели управления в разделе «Сетевые диски» и будут использоваться для доступности данных при перезапуске подов. ### Мониторинг Аддон автоматически устанавливает стек мониторинга VictoriaMetrics и Grafana: ```yaml victoria-metrics-k8s-stack: enabled: true grafana: enabled: true ``` В Grafana уже созданы дашборды Pulsar, показывающие: - количество сообщений; - нагрузку на брокеры; - задержки доставки; - использование дисков BookKeeper. ## После установки Проверьте состояние подов: ```bash kubectl get pods -n pulsar ``` В рабочем состоянии вы увидите: - несколько подов `pulsar-zookeeper-*`; - несколько подов `pulsar-bookie-*`; - `pulsar-broker-*` и `pulsar-proxy-*`; - поды мониторинга. Пример вывода: ```bash NAME READY STATUS RESTARTS AGE pulsar-bookie-0 1/1 Running 0 22h pulsar-bookie-1 1/1 Running 0 22h pulsar-bookie-2 1/1 Running 0 22h pulsar-bookie-3 1/1 Running 0 22h pulsar-bookie-init-24vrn 0/1 Completed 1 22h pulsar-broker-0 1/1 Running 0 22h pulsar-broker-1 1/1 Running 0 22h pulsar-broker-2 1/1 Running 0 22h pulsar-grafana-5b6cf7bb7b-vktzm 1/1 Running 0 22h pulsar-kube-state-metrics-55947c98cd-jkk6t 1/1 Running 0 22h pulsar-prometheus-node-exporter-9r8jj 1/1 Running 0 22h pulsar-prometheus-node-exporter-d8s2d 1/1 Running 0 22h pulsar-prometheus-node-exporter-gh895 1/1 Running 0 22h pulsar-prometheus-node-exporter-mhbc4 1/1 Running 0 22h pulsar-proxy-0 1/1 Running 0 22h pulsar-proxy-1 1/1 Running 0 22h pulsar-proxy-2 1/1 Running 0 22h pulsar-pulsar-init-rwlwh 0/1 Completed 0 22h pulsar-recovery-0 1/1 Running 0 22h pulsar-toolset-0 1/1 Running 0 22h pulsar-victoria-metrics-operator-84bd8795f6-fjwrm 1/1 Running 0 22h pulsar-zookeeper-0 1/1 Running 0 22h pulsar-zookeeper-1 1/1 Running 0 22h pulsar-zookeeper-2 1/1 Running 0 22h vmagent-pulsar-victoria-metrics-k8s-stack-5897fbdbdb-dnv9l 2/2 Running 0 22h vmsingle-pulsar-victoria-metrics-k8s-stack-bcdcb4884-fbccc 1/1 Running 0 22h ``` Доступ к Grafana Чтобы открыть Grafana, выполните: ```bash kubectl port-forward -n pulsar svc/pulsar-grafana 3000:80 ``` После этого Grafana будет доступна по адресу `http://localhost:3000`. В разделе «Dashboards» → «Pulsar» можно просматривать состояние кластера и поток сообщений в реальном времени. ![Scr 20251229 Maep](https://content.timeweb.com/assets/84363813-4f81-4089-9b96-86e4711bfa21.png?width=2938&height=1634) _Раздел «Dashboards» → «Pulsar» в интерфейсе [Grafana](https://grafana.com/)_ # cert-manager Source: https://timeweb.cloud/docs/k8s/addons/cert-manager cert-manager — это расширение для Kubernetes, которое автоматизирует выпуск и обновление сертификатов. Оно позволяет выпускать сертификаты от Let's Encrypt и других центров сертификации, а также использовать внутренние корневые сертификаты. cert-manager упрощает работу с сертификатами, автоматически продлевая их перед истечением срока действия и обеспечивая безопасное шифрование для сервисов в кластере. Он интегрируется с Ingress-контроллерами и поддерживает различные механизмы проверки домена. Это делает его удобным инструментом для автоматизации управления сертификатами в Kubernetes. ## Установка Для установки cert-manager откройте панель управления кластером, перейдите во вкладку «Дополнения» и выберите cert-manager. ![Selection 173](https://content.timeweb.com/assets/460b0f5d-e883-4746-a303-67b18e847ca8.png?width=1004&height=942) В открывшемся мастере установки нажмите кнопку «Установить» и дождитесь завершения процесса. ![Selection 174](https://content.timeweb.com/assets/3a3ba9d8-c08f-4934-b1ae-48808687154f.png?width=1005&height=787) Проверить корректность установки можно командой: ```shell kubectl get pods -n cert-manager ``` Все поды в неймспейсе `cert-manager` должны иметь статус «Running». ## Использование Чтобы cert-manager мог выпускать сертификаты, необходимо создать объект `ClusterIssuer`, который будет управлять сертификатами на уровне всего кластера. Пример манифеста: ```yml apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-prod spec: acme: email: email@example.com server: https://acme-v02.api.letsencrypt.org/directory privateKeySecretRef: name: letsencrypt-prod solvers: - http01: ingress: class: nginx ``` Здесь: - `email` — ваша почта. Она необходима для создания сертификатов, на нее будут приходить уведомления от Let's Encrypt. - `server` — адрес Let's Encrypt или другого центра сертификации. - `privateKeySecretRef` — секрет, в котором хранится закрытый ключ. - `solvers.http01.ingress.class` — метод подтверждения владения доменом через HTTP, в данном случае с использованием Ingress-контроллера nginx. Если вы используете другой Ingress-контроллер, необходимо заменить `nginx` на нужное значение, например, для Traefik: ```yml solvers: - http01: ingress: class: traefik ``` ## Пример использования cert-manager Рассмотрим использование cert-manager на примере ресурсов, описанных в статье про [Nginx Ingress](https://timeweb.cloud/docs/k8s/addons/nginx-ingress). Если вы следовали той инструкции, у вас уже настроены: - 3 деплоймента - Nginx Ingress - LoadBalancer Сервисы доступны по: - http://ingress1.example.com/service1 - http://ingress1.example.com/service2 - http://ingress2.example.com/ Теперь опишем `ClusterIssuer` в файле `cluster-issuer.yaml`: ```yml apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-prod spec: acme: email: email@example.com server: https://acme-v02.api.letsencrypt.org/directory privateKeySecretRef: name: letsencrypt-prod solvers: - http01: ingress: class: nginx ``` Применим манифест: ```shell kubectl apply -f cluster-issuer.yaml ``` Далее необходимо обновить манифест Ingress, добавив аннотацию для использования cert-manager и секцию `tls`. Обновленный `ingress.yaml`: ```yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress namespace: ingress-example annotations: nginx.ingress.kubernetes.io/rewrite-target: / cert-manager.io/cluster-issuer: letsencrypt-prod spec: rules: - host: ingress1.example.com http: paths: - path: /service1 pathType: Prefix backend: service: name: service1 port: number: 80 - path: /service2 pathType: Prefix backend: service: name: service2 port: number: 80 tls: - hosts: - ingress1.example.com secretName: ingress-tls ``` Изменения: - Добавлена аннотация `cert-manager.io/cluster-issuer: letsencrypt-prod`, указывающая cert-manager использовать созданный `ClusterIssuer`. - Добавлена секция `tls`, в которой указаны домены, для которых cert-manager должен выпустить сертификаты, и секрет `ingress-tls`, где они будут храниться. Применяем обновленный манифест: ```shell kubectl apply -f ingress.yaml ``` Через некоторое время cert-manager выпустит сертификаты и сохранит их в секрете `ingress-tls`. Проверить наличие сертификатов можно командой: ```shell kubectl get secret ingress-tls -n ingress-example -o yaml ``` Если все прошло успешно, в секрете должны появиться `tls.crt` и `tls.key`. Теперь можно проверить работу HTTPS: ```shell curl -v https://ingress1.example.com/service1 ``` Если запрос проходит без ошибок, значит, сертификаты успешно установлены, и сервисы работают по HTTPS. # cert-manager CSI Driver Source: https://timeweb.cloud/docs/k8s/addons/cert-manager-csi-driver cert-manager CSI Driver — это дополнение для Kubernetes, которое позволяет подключать TLS-сертификаты напрямую к подам. Оно работает вместе с [cert-manager](https://timeweb.cloud/docs/k8s/addons/cert-manager): параметры сертификата задаются в манифесте пода, а драйвер запрашивает сертификат и монтирует его вместе с приватным ключом в указанный каталог. Создавать отдельный ресурс `Certificate` и секрет для сертификата пода не требуется. Такой способ подключения подходит для приложений, которые сами обрабатывают TLS-соединения и читают сертификаты из файлов. Например, драйвер может выдать и подключить сертификат к поду с Nginx или предоставить каждому поду собственный сертификат для взаимной аутентификации между сервисами. Сертификаты выпускаются через настроенный `Issuer` или `ClusterIssuer`, в том числе от Let's Encrypt. Каждая реплика приложения получает собственный сертификат и ключ. Приватный ключ генерируется на ноде, где запущен под, хранится в оперативной памяти и не передается драйвером по сети. При удалении пода файлы удаляются, а при его пересоздании сертификат выпускается заново. Если сертификат нужно сохранять между пересозданиями подов или использовать для HTTPS на Ingress-контроллере, можно настроить его через cert-manager с ресурсом `Certificate` и секретом. ## Установка Для работы дополнения в кластере должен быть установлен [cert-manager](https://timeweb.cloud/docs/k8s/addons/cert-manager). Откройте панель управления кластером, перейдите во вкладку «Дополнения» и выберите cert-manager CSI Driver. В открывшемся мастере нажмите кнопку «Установить» и дождитесь завершения установки. ![аддон cert-manager CSI Driver](https://content.timeweb.com/assets/dac6a57b-4f37-414c-8f32-37696f9beb68.png?width=2164&height=1756) Для проверки [подключитесь к кластеру с помощью kubectl](https://timeweb.cloud/docs/k8s/cluster-connection/kubectl) и выполните команду: ```bash kubectl get csidriver csi.cert-manager.io ``` В выводе должен присутствовать драйвер `csi.cert-manager.io` с режимом `Ephemeral`. Он используется для временных томов, связанных с жизненным циклом пода. Создавать `StorageClass`, `PersistentVolume` и `PersistentVolumeClaim` для них не нужно. Драйвер запускается на рабочих нодах как `DaemonSet`. Проверить его состояние можно командой: ```bash kubectl get daemonsets -A ``` Найдите `DaemonSet` cert-manager CSI Driver. Значения в колонках `DESIRED` и `READY` должны совпадать и быть больше нуля. ## Пример использования В качестве примера развернем Nginx и подключим к нему сертификат с помощью cert-manager CSI Driver. Выпустим сертификат Let's Encrypt для домена `site.example.com`, подключим его к поду через CSI Driver и настроим доступ к сайту через балансировщик нагрузки. HTTPS-соединения будет обрабатывать Nginx внутри пода. Помимо cert-manager и cert-manager CSI Driver, для примера потребуются: - дополнение [cert-manager Webhook](https://timeweb.cloud/docs/k8s/addons/cert-manager-webhook) — для подтверждения владения доменом через `DNS-01`; - домен, расположенный на наших NS. В манифестах и командах замените `site.example.com` на свой домен или поддомен. ### Настройка ClusterIssuer Для выпуска сертификатов потребуется `ClusterIssuer` с именем `letsencrypt-dns`. Создайте его по [инструкции по настройке cert-manager Webhook](https://timeweb.cloud/docs/k8s/addons/cert-manager-webhook#nastrojka-clusterissuer), указав свою почту в параметре `email` и `ID` кластера в `groupName`. Если такой `ClusterIssuer` уже настроен, его можно использовать повторно. Проверьте готовность созданного ресурса: ```bash kubectl get clusterissuer letsencrypt-dns ``` В колонке `READY` должно быть значение `True`. При запросе сертификата cert-manager Webhook автоматически создаст TXT-запись в DNS. Это позволяет подтвердить владение доменом до запуска Nginx и настройки A-записи сайта. Выполнять шаги из раздел «Выпуск сертификата» из инструкции про Webhook не нужно. CSI Driver сам создаст `CertificateRequest` при запуске пода. Секрет, указанный в `privateKeySecretRef` у `ClusterIssuer`, будет хранить только ключ учетной записи ACME для взаимодействия с Let's Encrypt. ### Создание ConfigMap Для ресурсов сайта создадим отдельный неймспейс: ```bash kubectl create namespace csi-tls-example ``` Конфигурацию Nginx и HTML-страницу сохраним в `ConfigMap`. Создайте файл `nginx-config.yaml` со следующим содержимым: ```bash apiVersion: v1 kind: ConfigMap metadata: name: nginx-site-config namespace: csi-tls-example data: default.conf: | server { listen 8443 ssl; server_name site.example.com; ssl_certificate /tls/tls.crt; ssl_certificate_key /tls/tls.key; root /usr/share/nginx/html; index index.html; location / { try_files $uri $uri/ =404; } } index.html: | Nginx с сертификатом Let’s Encrypt

Сайт работает по HTTPS

Сертификат подключен через cert-manager CSI Driver.

``` В этом манифесте: - `default.conf` — конфигурация Nginx. Сервер принимает HTTPS-соединения на порту `8443` для домена из `server_name`. - `ssl_certificate` и `ssl_certificate_key` — пути к сертификату и приватному ключу, которые подключит CSI Driver. - `index.html` — страница, которая будет отображаться при обращении к сайту. Примените манифест: ```bash kubectl apply -f nginx-config.yaml ``` ### Создание Deployment Теперь создадим деплоймент с Nginx. Подключим к контейнеру конфигурацию и страницу из `ConfigMap`, а сертификат и ключ смонтируем в каталог `/tls` с помощью CSI Driver. Создайте файл `nginx-deployment.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-site namespace: csi-tls-example spec: replicas: 1 selector: matchLabels: app: nginx-site template: metadata: labels: app: nginx-site spec: containers: - name: nginx image: nginx:1.28-alpine ports: - name: https containerPort: 8443 readinessProbe: httpGet: path: / port: https scheme: HTTPS volumeMounts: - name: nginx-config mountPath: /etc/nginx/conf.d readOnly: true - name: html mountPath: /usr/share/nginx/html readOnly: true - name: tls mountPath: /tls readOnly: true volumes: - name: nginx-config configMap: name: nginx-site-config items: - key: default.conf path: default.conf - name: html configMap: name: nginx-site-config items: - key: index.html path: index.html - name: tls csi: driver: csi.cert-manager.io readOnly: true volumeAttributes: csi.cert-manager.io/issuer-name: letsencrypt-dns csi.cert-manager.io/issuer-kind: ClusterIssuer csi.cert-manager.io/dns-names: "site.example.com" csi.cert-manager.io/key-usages: "digital signature,key encipherment,server auth" ``` Параметры сертификата задаются в секции `volumeAttributes`: - `csi.cert-manager.io/issuer-name` — имя `Issuer`, через который будет выпущен сертификат. В примере используется `letsencrypt-dns`. - `csi.cert-manager.io/issuer-kind` — тип ресурса: `Issuer` или `ClusterIssuer`. При использовании `Issuer` он должен находиться в том же неймспейсе, что и под. - `csi.cert-manager.io/dns-names` — домен сайта. Если нужно указать несколько имен, перечислите их через запятую. - `csi.cert-manager.io/key-usages` — назначение ключа и сертификата. Значение `server auth` используется для аутентификации HTTPS-сервера. В секциях `volumes` и `volumeMounts` том подключается в режиме только для чтения — `readOnly: true`. Сертификат и ключ будут храниться в оперативной памяти ноды, в файловой системе `tmpfs`. В примере запускается одна реплика Nginx. При увеличении количества реплик каждый новый под получит отдельный сертификат для того же домена. При масштабировании и частом пересоздании подов учитывайте [лимиты Let's Encrypt](https://letsencrypt.org/docs/rate-limits/). Примените манифест: ```bash kubectl apply -f nginx-deployment.yaml ``` Проверьте состояние пода: ```bash kubectl get pods -n csi-tls-example ``` При создании пода драйвер сформирует `CertificateRequest` в неймспейсе `csi-tls-example`. cert-manager обработает запрос через `letsencrypt-dns`, а драйвер запишет полученный сертификат в подключенный том. Выпуск может занять несколько минут из-за распространения DNS-записей. В это время под может находиться в статусе `ContainerCreating`. После получения сертификата запустится Nginx. Повторно выполните команду проверки. У пода `nginx-site-...` в колонке `STATUS` должно появиться `Running`, а в `READY` — `1/1`. ### Проверка сертификата Проверить статус выпуска можно командой: ```bash kubectl get certificaterequests,orders,challenges -n csi-tls-example ``` При успешном выпуске у `CertificateRequest` в колонке `READY` будет значение `True`, а у `Order` — состояние `valid`. Ресурс `Challenge` после завершения проверки может быть удален автоматически. Проверьте, что файлы сертификата доступны в поде: ```bash kubectl exec deployment/nginx-site -n csi-tls-example -- ls -l /tls ``` В каталоге должны быть файлы `tls.crt` и `tls.key`. Первый содержит сертификат сайта и промежуточные сертификаты цепочки, второй — приватный ключ. Чтобы посмотреть центр сертификации, срок действия и доменное имя, передайте содержимое `tls.crt` в локальный `openssl`: ```bash kubectl exec deployment/nginx-site -n csi-tls-example -- cat /tls/tls.crt \ | openssl x509 -noout -issuer -dates -ext subjectAltName ``` В поле `issuer` будет указан центр сертификации Let's Encrypt, а в `Subject Alternative Name` — ваш домен. ### Создание балансировщика нагрузки Для доступа к сайту из интернета создадим `Service` типа `LoadBalancer`. Он получит внешний IP-адрес и будет передавать TCP-трафик на HTTPS-порт Nginx. Создайте файл `nginx-loadbalancer.yaml`: ```yaml apiVersion: v1 kind: Service metadata: name: nginx-site namespace: csi-tls-example spec: type: LoadBalancer selector: app: nginx-site ports: - name: https port: 443 targetPort: https protocol: TCP appProtocol: k8s.timeweb.cloud/proto-tcp ``` Балансировщик принимает соединения на порту `443` и передает их на порт `8443` в поде. Параметр `appProtocol: k8s.timeweb.cloud/proto-tcp` включает передачу TCP-трафика: TLS-соединение обрабатывает Nginx, где находятся сертификат и ключ. Настраивать сертификат на самом балансировщике не требуется. Примените манифест: ```bash kubectl apply -f nginx-loadbalancer.yaml ``` Дождитесь создания балансировщика и проверьте, что сервис получил внешний IP-адрес: ```bash kubectl get service nginx-site -n csi-tls-example ``` IP-адрес будет отображаться в колонке `EXTERNAL-IP`. Создание балансировщика также можно отследить в разделе «Балансировщики» панели управления. ### Настройка домена и проверка HTTPS Создайте A-запись для домена `site.example.com`, указав IP-адрес балансировщика. После обновления DNS откройте `https://site.example.com` в браузере. Должна появиться страница «Сайт работает по HTTPS» без предупреждений о сертификате. Если DNS еще не обновился, можно проверить сайт, явно указав IP-адрес балансировщика. Замените `EXTERNAL_IP` на полученный адрес и выполните: ```bash curl --fail --show-error \ --resolve site.example.com:443:EXTERNAL_IP \ https://site.example.com/ ``` Параметр `--resolve` направляет запрос на указанный IP-адрес, сохраняя проверку сертификата для домена `site.example.com`. ### Удаление примера Чтобы удалить ресурсы сайта, созданные в примере, выполните: ```bash kubectl delete namespace csi-tls-example ``` Вместе с неймспейсом будут удалены поды, конфигурация сайта и сервис `LoadBalancer`. Связанный балансировщик также будет удален из панели управления. Если домен больше не используется, удалите его A-запись. Дополнения, `ClusterIssuer` и ключ учетной записи ACME останутся в кластере — их можно использовать для других приложений. # cert-manager Webhook Source: https://timeweb.cloud/docs/k8s/addons/cert-manager-webhook cert-manager Webhook используется для автоматического создания DNS-записей при валидации домена с помощью метода DNS-01. Для корректной работы дополнения необходимо, чтобы: - домен делегированы [на наши NS](https://timeweb.cloud/docs/domains/dns-records-management#ns-servery); - в кластере установлен [cert-manager.](https://timeweb.cloud/docs/k8s/addons/cert-manager) ## Установка cert-manager Webhook Установите дополнение cert-manager Webhook через панель управления Kubernetes в разделе «Дополнения». ![Selection 283](https://content.timeweb.com/assets/821186e5-8b5a-4f02-80df-a8f0046c71b7.png?width=1038&height=950) После установки убедитесь, что запущен под, отвечающий за DNS01-валидацию: ```shell kubectl get pods -n cert-manager -l app=cert-manager-webhook-timeweb-cloud ``` У пода должен быть статус `Running`. ## Настройка ClusterIssuer Чтобы cert-manager мог выпускать сертификаты, необходимо создать объект `ClusterIssuer`. Он описывает, каким способом и через какого провайдера cert-manager будет выполнять валидацию доменов и получать сертификаты. Объект `ClusterIssuer` действует на уровне всего кластера и может использоваться из любых namespace'ов. Создайте файл `cluster-issuer.yaml`: ```yaml apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-dns spec: acme: server: https://acme-v02.api.letsencrypt.org/directory email: email@example.com # Укажите вашу почту privateKeySecretRef: name: letsencrypt-dns-account-key solvers: - dns01: webhook: groupName: twcloud- # Укажите ID вашего кластера solverName: twcloud-dns ``` Значение `privateKeySecretRef` указывает, где будет храниться ключ учетной записи, с помощью которой cert-manager взаимодействует с Let's Encrypt. Параметр `groupName` обязательно должен содержать ID вашего кластера. Его можно посмотреть в адресной строке браузера при открытии страницы управления кластером. ![Selection 284](https://content.timeweb.com/assets/7f13f3b4-db29-4948-92fe-addfcfb1fef4.png?width=1265&height=1000) Примените манифест: ```shell kubectl apply -f cluster-issuer.yaml ``` ## Выпуск сертификата Создайте файл `certificate.yaml`: ```yaml apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: example-com-tls namespace: default spec: secretName: example-com-tls issuerRef: name: letsencrypt-dns kind: ClusterIssuer dnsNames: - example.com - www.example.com ``` При использовании wildcard-домена обязательно заключайте его в кавычки: ```yaml dnsNames: - "*.example.com" ``` Для корректной работы сертификат должен находиться в том же неймспейсе, что и Ingress. Проверьте, что в манифесте указан нужный неймспейс. Замените домены на свои и примените манифест: ```shell kubectl apply -f certificate.yaml ``` ## Проверка статуса Проверить текущий статус выпуска сертификата можно так: ```shell kubectl get certificaterequests,orders,challenges -n default ``` При успешном выпуске сертификата вы увидите примерно следующее: ```shell NAME APPROVED DENIED READY ISSUER REQUESTER AGE certificaterequest.cert-manager.io/example-com-tls-1 True True letsencrypt-dns system:serviceaccount:cert-manager:cert-manager 91s NAME STATE AGE order.acme.cert-manager.io/example-com-tls-1-1905819700 valid 91s ``` ## Проверка сертификата После успешного выпуска проверьте, что секрет с сертификатом создан: ```shell kubectl get secret example-com-tls -n default -o yaml ``` Секрет будет содержать ключи `tls.crt` и `tls.key`. # Cluster Proportional Autoscaler Source: https://timeweb.cloud/docs/k8s/addons/cpa Cluster Proportional Autoscaler (CPA) — это контроллер, который автоматически масштабирует выбранный деплоймент в зависимости от количества нод в кластере. Он полезен в случаях, когда сервис должен быть доступен на каждой ноде или масштабироваться пропорционально объему ресурсов в кластере. CPA не использует метрики нагрузки, а работает на основе пропорциональных формул, которые задаются вручную. ## Режимы работы CPA поддерживает два режима расчета количества реплик: ### Linear В режиме `linear` количество реплик рассчитывается по следующей формуле: ```shell replicas = max(min, min(max, cores / coresPerReplica, nodes / nodesPerReplica)) ``` Можно использовать оба параметра (`coresPerReplica` и `nodesPerReplica`) или только один. Значения `min` и `max` ограничивают итоговое число реплик. Пример настройки: ```yaml config: linear: coresPerReplica: 2 nodesPerReplica: 1 min: 2 max: 20 preventSinglePointFailure: true includeUnschedulableNodes: true ``` В этом примере: - создается по 1 поду на каждую ноду; - дополнительно создается 1 под на каждые 2 CPU ядра; - всегда минимум 2 пода, максимум 20; - при наличии только одной ноды будет не 1, а 2 пода; - учитываются и те ноды, на которые нельзя запланировать поды. ### Ladder В режиме `ladder` количество реплик задается явно, через таблицу соответствий. Это удобно, когда нужно точное количество подов при конкретных размерах кластера. Пример настройки: ```yaml config: ladder: coresToReplicas: - [ 1, 1 ] - [ 64, 3 ] - [ 512, 5 ] - [ 1024, 7 ] - [ 2048, 10 ] nodesToReplicas: - [ 1, 1 ] - [ 2, 2 ] - [ 5, 3 ] ``` В этом примере: - если в кластере 1 нода — будет 1 под; - при 2 нодах — 2 пода; - при 5 и более нодах — 3 пода; - параллельно будет учитываться количество ядер, например: - при 64 ядрах — 3 пода; - при 2048 — 10 подов. ## Установка через ПУ Для установки Cluster Proportional Autoscaler откройте панель управления кластером, перейдите во вкладку «Дополнения» и выберите Cluster Proportional Autoscaler. ![Selection 330](https://content.timeweb.com/assets/fb827072-f98b-435c-8fee-22e36d032b64.png?width=1007&height=859) В открывшемся мастере вы можете изменить конфигурацию скейлера, отредактировав манифест в блоке «Конфигурация». ![Selection 331](https://content.timeweb.com/assets/46c0dc7e-8240-4a9b-a205-67f7d37f34ee.png?width=1003&height=806) По умолчанию скейлер будет настроен для работы с `metrics-server` в неймспейсе `kube-system`. Он использует линейный режим, создавая один под на каждую ноду: ```yaml config: linear: coresPerReplica: 1 nodesPerReplica: 1 min: 1 max: 100 preventSinglePointFailure: true includeUnschedulableNodes: true options: logToStdErr: true logLevel: 7 namespace: kube-system target: deployment/metrics-server ``` Если вы хотите масштабировать другой сервис — например, nginx в неймспейсе default — достаточно изменить параметры `target` и `namespace` в конфигурации перед установкой. Если вы хотите изменить параметры масштабирования или режим работы, отредактируйте блок `config`. Вы можете, например, раскомментировать параметры для `ladder` и использовать его вместо `linear`. > [!NOTE] > При установке через панель управления можно указать только один объект для масштабирования через параметр `target`. > > Если вы хотите масштабировать несколько ресурсов одновременно — например, `metrics-server` и `coredns` — используйте ручную установку с несколькими экземплярами скейлера. ## Установка вручную Если вы хотите более гибко настроить Cluster Proportional Autoscaler или применить несколько скейлеров для разных сервисов, используйте установку через [Helm](https://timeweb.cloud/docs/k8s/deploy/helm). Сначала добавьте репозиторий чарта: ```shell helm repo add cluster-proportional-autoscaler https://kubernetes-sigs.github.io/cluster-proportional-autoscaler ``` Эта команда добавит внешний источник, из которого будет установлен скейлер. Затем обновите список доступных чартов: ```shell helm repo update ``` Создайте файл `values.yaml` со следующим содержимым: ```yaml config: linear: coresPerReplica: 1 nodesPerReplica: 1 min: 1 max: 100 preventSinglePointFailure: true includeUnschedulableNodes: true options: logToStdErr: true logLevel: 7 namespace: kube-system target: deployment/metrics-server serviceAccount: create: true ``` Эта конфигурация включает линейный режим, при котором создается один под на каждую ноду (`nodesPerReplica: 1`). Параметры `min` и `max` ограничивают количество реплик. Флаг `preventSinglePointFailure` добавляет дополнительную реплику при наличии всего одной ноды, а `includeUnschedulableNodes` учитывает ноды, на которые нельзя запланировать поды. В разделе `options` задаются `namespace` и объект, который будет масштабироваться — в нашем случае это `deployment/metrics-server.` Раздел `serviceAccount` указывает, что Helm должен создать сервис-аккаунт с нужными правами автоматически. Установите скейлер с помощью команды: ```shell helm upgrade --install metrics-autoscaler cluster-proportional-autoscaler/cluster-proportional-autoscaler --values values.yaml ``` После установки убедитесь, что pod запущен: ```shell kubectl get pods -n kube-system ``` При ручной установке вы можете создавать несколько независимых экземпляров скейлера для разных целей. Для этого создайте отдельный файл, например `values-nginx.yaml`, измените в нем параметры `target` и `namespace`, и примените новую установку: ```shell helm upgrade --install nginx-autoscaler cluster-proportional-autoscaler/cluster-proportional-autoscaler --values values-nginx.yaml ``` Такой способ позволяет масштабировать любое количество сервисов с разными настройками. # CSI S3 Source: https://timeweb.cloud/docs/k8s/addons/csi-s3 Интеграция S3 в Kubernetes позволяет приложениям работать с объектным хранилищем как с обычной файловой системой. В Timeweb Cloud для этого используется CSI S3 (Container Storage Interface), который обеспечивает прозрачное подключение S3-бакетов к подам Kubernetes. Рассмотрим, как настроить использование CSI S3 в кластере Kubernetes. ## Установка CSI S3 Добавьте CSI S3 в существующий кластер следующим образом: 1. Перейдите во вкладку «Дополнения» на странице управления кластером. 2. Нажмите на три точки рядом с дополнением CSI S3 и выберите «Установить». ![Image2](https://content.timeweb.com/assets/5f93da12-34fa-48a9-be6a-3b49b4e7f897.png?width=762&height=387) 3. В появившемся окне выберите существующий S3-бакет, создайте новый или подключите внешний бакет S3. ![Image3](https://content.timeweb.com/assets/2c0b7594-5d24-4168-9744-1806a8aaa97e.png?width=764&height=534) После выбора бакета нажмите «Установить» и дождитесь завершения процесса. После установки бакет будет доступен для использования в кластере, и никаких дополнительных настроек не потребуется. ## Проверка установки Чтобы убедиться, что CSI S3 успешно установлен и подключен, выполните команду для получения списка `StorageClass`: ```shell kubectl get storageclass csi-s3 -o yaml ``` Также вы можете просмотреть данные для подключения S3, выполнив следующую команду: ```shell kubectl get secret csi-s3-secret -n csi-s3 -o yaml ``` Данные будут представлены в секции `data`, в формате `base64`. ## Использование CSI S3 в Kubernetes S3 — это объектное хранилище, и Kubernetes не может напрямую взаимодействовать с ним, так как Kubernetes работает с файловыми системами и блочными устройствами. Для подключения используется `PersistentVolumeClaim` (PVC), который позволяет приложениям запрашивать доступ к S3 через CSI-драйвер. Для монтирования S3-бакета используется FUSE-прослойка `geesefs`, которая обеспечивает доступ к файлам в S3 как к обычной файловой системе. Важно отметить, что CSI S3 не является полноценной POSIX-совместимой файловой системой. Это решение подходит для размещения статических файлов, таких как изображения, CSS, JS, конфигурационные файлы, или другие данные, которые не требуют высокой дисковой активности. Из-за отсутствия полной POSIX-совместимости могут возникнуть проблемы с размещением баз данных или других приложений, которые пытаются изменить права доступа или владельца файлов и папок. Также не поддерживаются частичная перезапись файлов и создание жестких ссылок (hardlinks). PVC выполняет роль «заявки» на хранилище. Это запрос к Kubernetes с просьбой предоставить хранилище с определенными параметрами. В ответ на этот запрос Kubernetes создает соответствующий PersistentVolume (PV), который затем связывается с PVC, обеспечивая доступ к хранилищу. Таким образом, CSI S3 преобразует объектное хранилище в том, который можно монтировать в поды. Ниже представлен пример манифеста `PersistentVolumeClaim` для подключения к S3: ```yml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-s3-pvc namespace: default spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi storageClassName: csi-s3 ``` #### Основные параметры PVC манифеста: - `apiVersion` и `kind`: Указывают, что данный ресурс является `PersistentVolumeClaim` версии v1. - `metadata`: Содержит имя PVC (`csi-s3-pvc`) и указывает, что он создается в неймспейсе `default`. - `accessModes`: Задает режим доступа к хранилищу. В данном случае используется `ReadWriteMany`, что означает возможность чтения и записи в хранилище несколькими подами одновременно. - `resources.requests.storage`: Указывает, что PVC запрашивает 5 GiB пространства в хранилище. Этот объем может быть использован приложением для размещения файлов. - `storageClassName`: Указывает, что используется StorageClass с именем `csi-s3`. ## Подключение PVC в Deployment Чтобы приложение могло использовать PVC, его необходимо подключить в манифесте Deployment. Пример ниже демонстрирует, как контейнер с образом Nginx использует подключенный PVC: ```yml apiVersion: apps/v1 kind: Deployment metadata: name: s3-app-deployment namespace: default spec: replicas: 1 selector: matchLabels: app: s3-app template: metadata: labels: app: s3-app spec: containers: - name: s3-app-container image: nginx volumeMounts: - name: s3-storage mountPath: /usr/share/nginx/html volumes: - name: s3-storage persistentVolumeClaim: claimName: csi-s3-pvc ``` #### Основные элементы манифеста Deployment: - `apiVersion` и `kind`: Указывают, что данный ресурс является Deployment версии `apps/v1`. - `metadata`: Содержит имя деплоймента (`s3-app-deployment`) и указывает, что он создается в неймспейсе `default`. - `replicas`: Задает количество реплик (в данном случае — 1), что позволяет масштабировать приложение. - `template`: Содержит спецификацию пода, который будет развернут в составе деплоймента. - `containers`: Описывает контейнеры, входящие в состав пода. В этом примере используется контейнер с образом `nginx`. - `volumeMounts`: Определяет точку монтирования тома в контейнере. В данном случае PVC монтируется в каталог `/usr/share/nginx/html`, чтобы контейнер мог использовать данные, размещенные в S3. - `volumes`: Описывает тома, используемые в поде. Здесь указано, что том `s3-storage` связан с PVC `csi-s3-pvc`. Это значит, что данные из S3 будут доступны контейнерам через этот том. Использование PVC позволяет приложению получить доступ к данным в S3, а также упрощает управление доступом и масштабирование, обеспечивая каждой реплике доступ к общим данным. # DBaaS Operator Source: https://timeweb.cloud/docs/k8s/addons/dbaas-operator TWC DBaaS Operator — это дополнение для Kubernetes, которое позволяет создавать и управлять облачными базами данных напрямую из кластера. Поддерживаемые базы данных: - [MySQL](https://timeweb.cloud/docs/dbaas/mysql) - [PostgreSQL](https://timeweb.cloud/docs/dbaas/postgresql) - [Valkey](https://timeweb.cloud/docs/dbaas/valkey) ## Установка Для установки дополнения перейдите в раздел «Дополнения» в панели управления кластером и выберите «TWC DBaaS Operator». ![Scr 20250806 Njjd](https://content.timeweb.com/assets/2e90274c-ef17-4522-939c-6081c1fcb368.png?width=2012&height=1444) В открывшемся окне нажмите кнопку «Установить» и дождитесь завершения установки. ![Scr 20250806 Njnp](https://content.timeweb.com/assets/9be9e6d3-b25e-436d-bcd8-f98521a69cdb.png?width=2006&height=962) После завершения установки, убедитесь, что все работает корректно. Для этого выполните команду: ```shell kubectl get pod -n tw-dbaas-operator ``` В выводе должен быть под со статусом `Running`: ```shell NAME READY STATUS RESTARTS AGE tw-dbaas-operator-856f97b959-k5jvp 1/1 Running 0 27m ``` Оператор создает три ресурса CustomResourceDefinition (CRD): - `instances.dbaas.timeweb.cloud` — управление инстансами DBaaS. - `databases.dbaas.timeweb.cloud` — управление базами данных внутри инстансов. - `users.dbaas.timeweb.cloud` — управление пользователями баз данных. ## Использование Работу с DBaaS через оператор можно разделить на три шага: 1. Создание инстанса базы данных. 2. Создание базы данных внутри инстанса. 3. Создание пользователей. ### Создание инстанса Сперва необходимо создать инстанс — это сама облачная база данных, с заданным типом, версией, конфигурацией и параметрами резервного копирования. Пример манифеста: ```yaml apiVersion: dbaas.timeweb.cloud/v1 kind: Instance metadata: name: mysqldbaas spec: type: "mysql" # mysql / redis / postgresql name: "k8smysql" # отображаемое имя в панели version: "8.0" pass_hash_type: "sha2" # только для MySQL (sha2 или native) backups: copy_count: 2 period: "day" enabled: true config: auto_increment_increment: "1" replica_count: 1 # количество реплик. Поддерживается только для MySQL и PostgreSQL. Поддерживаемые значения: 1, 3, 5. no_external_ip: false instance_size: preset_id: 123 ``` Параметры в блоке `config` уникальны для каждого типа базы данных. Список доступных параметров можно найти в отдельных статьях: - [MySQL](https://timeweb.cloud/docs/dbaas/mysql/parameters) - [PostgreSQL](https://timeweb.cloud/docs/dbaas/postgresql/parameters) - [Valkey](https://timeweb.cloud/docs/dbaas/valkey/parameters) Подходящий `preset_id` можно получить [при помощи запроса к API](https://timeweb.cloud/api-docs#tag/Bazy-dannyh/operation/getDatabasesPresets): ```bash curl -X GET \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TIMEWEB_CLOUD_TOKEN" \ "https://api.timeweb.cloud/api/v2/presets/dbs" ``` Для удобства можно использовать команду с фильтрацией и форматированием: ```bash curl -sS -H "Authorization: Bearer $TIMEWEB_CLOUD_TOKEN" \ "https://api.timeweb.cloud/api/v2/presets/dbs" \ | jq -r '.databases_presets[] | select(.type=="mysql") | [.id, .description_short, .location, .price] | @tsv' \ | column -t ``` ID пресета будет указан в первом столбце. При необходимости измените `type=="mysql"` на нужный тип базы данных. ### Создание базы данных После создания инстанса можно описать базы данных, которые будут в нем размещены. Пример манифеста: ```yaml apiVersion: dbaas.timeweb.cloud/v1 kind: Database metadata: name: database-sample spec: database_list: - name: "default_db" description: "" - name: "db0" description: "new db" dbaas_instance: name: "mysqldbaas" namespace: "default" ``` Поле `dbaas_instance` должно указывать на соответствующий инстанс. ### Включение расширений PostgreSQL Для баз PostgreSQL можно включить расширения. Для этого в манифесте `Database` добавьте поле `extensions` и перечислите в нем нужные расширения. Пример манифеста: ```yaml apiVersion: dbaas.timeweb.cloud/v1 kind: Database metadata: name: postgres-pgvector namespace: default spec: database_list: - name: "default_db" description: "PostgreSQL база с расширениями" dbaas_instance: name: "postgres-instance" namespace: "default" extensions: - "pg_stat_statements" - "timescaledb" - "postgres_fdw" - "postgis" - "uuid-ossp" - "amcheck" - "pg_stat_kcache" - "pg_trgm" - "pgcrypto" - "pgvector" - "citext" - "pgagent" - "postgis_topology" ``` Поле `extensions` поддерживается только для PostgreSQL. Для MySQL и Redis его указывать не нужно. Чтобы отключить расширения, передайте пустой список: ```yaml apiVersion: dbaas.timeweb.cloud/v1 kind: Database metadata: name: postgres-pgvector namespace: default spec: database_list: - name: "default_db" description: "PostgreSQL база с расширениями" dbaas_instance: name: "postgres-instance" namespace: "default" extensions: [] ``` ### Создание пользователя После того как базы данных созданы, можно добавить пользователей и выдать им права доступа. Пользователь привязывается к конкретному инстансу и может иметь разные права для разных баз внутри него. Пример манифеста: ```yaml apiVersion: dbaas.timeweb.cloud/v1 kind: User metadata: name: user-sample spec: user: "user0" passwordSecret: "user0Secret" description: "cool user" host: "192.168.%" permissions: - grants: ["ALTER", "UPDATE", "DELETE", "INSERT"] database: "default_db" - grants: ["SELECT"] database: "db1" dbaas_instance: name: "mysqldbaas" namespace: "default" --- apiVersion: v1 kind: Secret metadata: name: user0Secret type: Opaque data: password: cGFzc3dvcmQxMjM0 ``` Пароль для пользователя хранится в Kubernetes Secret в поле `password`, закодированном в base64. Создать его можно так: ```shell echo -n 'пароль' | base64 ``` В разделе permissions указываются права пользователя на конкретные базы данных. Права задаются в виде списка SQL-грантов для каждой базы. Список доступных привилегий можно найти в статьях: - [MySQL](https://timeweb.cloud/docs/dbaas/mysql/users-and-privileges#dostupnye-privilegii) - [PostgreSQL](https://timeweb.cloud/docs/dbaas/postgresql/users-and-privileges#dostupnye-privilegii) - [Valkey](https://timeweb.cloud/docs/dbaas/valkey/users-and-privileges#dostupnye-privilegii) # Envoy Gateway Source: https://timeweb.cloud/docs/k8s/addons/envoy-gateway Envoy Gateway — это контроллер Gateway API для Kubernetes, который использует Envoy Proxy для обработки входящего трафика. С его помощью можно публиковать HTTP, HTTPS, gRPC, TCP и UDP-сервисы, настраивать маршрутизацию по доменам и путям, управлять TLS и применять политики трафика через стандартные Kubernetes-ресурсы. Gateway API можно рассматривать как развитие Ingress. Вместо одного ресурса Ingress используются несколько объектов с разными зонами ответственности: - `GatewayClass` — указывает, какой контроллер будет обслуживать шлюзы. - `Gateway` — описывает точку входа: порты, протоколы и TLS-настройки. - `HTTPRoute` — задает правила маршрутизации HTTP-трафика к сервисам. - `GRPCRoute`, `TCPRoute`, `UDPRoute`, `TLSRoute` — используются для других типов трафика. Envoy Gateway отслеживает эти ресурсы и на их основе создает Envoy Proxy, который принимает внешний трафик и направляет его к сервисам внутри кластера. ## Установка Для установки Envoy Gateway откройте панель управления кластером, перейдите во вкладку «Дополнения» и выберите Envoy Gateway. В открывшемся мастере установки можно оставить параметры по умолчанию или включить продвинутую установку и изменить `values.yaml`. Для начала работы достаточно настроек по умолчанию. Нажмите «Установить» и дождитесь завершения установки. После этого проверьте, что поды Envoy Gateway запущены: ```bash kubectl get pods -n envoy-gateway-system ``` Все поды должны находиться в статусе `Running`. Также можно проверить, что в кластере появились ресурсы Gateway API: ```shell kubectl api-resources | grep gateway.networking.k8s.io ``` ## Пример использования Рассмотрим пример, в котором Envoy Gateway будет принимать HTTP-трафик на одном внешнем IP-адресе и направлять запросы в два разных сервиса: - `http://app.example.com/service1` — в сервис `service1`; - `http://app.example.com/service2` — в сервис `service2`. Для примера создадим отдельный неймспейс: ```bash kubectl create namespace envoy-example ``` ### Создание ConfigMap Создайте файл `configmap.yaml` с HTML-страницами для двух сервисов: ```shell apiVersion: v1 kind: ConfigMap metadata: name: nginx-pages namespace: envoy-example data: service1.html: | Service 1

Service 1

service2.html: | Service 2

Service 2

``` Примените манифест: ```bash kubectl apply -f configmap.yaml ``` ### Создание Deployment и Service Создайте файл `service1.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: service1 namespace: envoy-example spec: replicas: 2 selector: matchLabels: app: service1 template: metadata: labels: app: service1 spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: html mountPath: /usr/share/nginx/html volumes: - name: html configMap: name: nginx-pages items: - key: service1.html path: index.html --- apiVersion: v1 kind: Service metadata: name: service1 namespace: envoy-example spec: selector: app: service1 ports: - name: http port: 80 targetPort: 80 type: ClusterIP ``` Создайте файл `service2.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: service2 namespace: envoy-example spec: replicas: 2 selector: matchLabels: app: service2 template: metadata: labels: app: service2 spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: html mountPath: /usr/share/nginx/html volumes: - name: html configMap: name: nginx-pages items: - key: service2.html path: index.html --- apiVersion: v1 kind: Service metadata: name: service2 namespace: envoy-example spec: selector: app: service2 ports: - name: http port: 80 targetPort: 80 type: ClusterIP ``` Примените манифесты: ```bash kubectl apply -f service1.yaml kubectl apply -f service2.yaml ``` Проверьте, что поды запущены: ```bash kubectl get pods -n envoy-example ``` ### Создание GatewayClass `GatewayClass` связывает Gateway API с контроллером Envoy Gateway. Создайте файл `gatewayclass.yaml`: ```yaml apiVersion: gateway.networking.k8s.io/v1 kind: GatewayClass metadata: name: envoy-gateway spec: controllerName: gateway.envoyproxy.io/gatewayclass-controller ``` Примените манифест: ```bash kubectl apply -f gatewayclass.yaml ``` Проверьте статус: ```bash kubectl get gatewayclass envoy-gateway ``` В колонке `ACCEPTED` должно быть значение `True`. Это означает, что Envoy Gateway принял `GatewayClass` и будет обслуживать связанные с ним ресурсы `Gateway`. ### Создание Gateway Gateway описывает внешний вход в приложение. Создайте файл `gateway.yaml`: ```yaml apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: app-gateway namespace: envoy-example spec: gatewayClassName: envoy-gateway listeners: - name: http protocol: HTTP port: 80 allowedRoutes: namespaces: from: Same ``` Примените манифест: ```bash kubectl apply -f gateway.yaml ``` Когда `Gateway` будет создан, Envoy Gateway развернет Envoy Proxy и балансировщик нагрузки. Создание балансировщика можно отследить [в панели управления](https://timeweb.cloud/my/balancer) или проверить командой: ```bash kubectl get gateway app-gateway -n envoy-example ``` Дождитесь, когда в колонке `PROGRAMMED` появится значение `True`, а в колонке `ADDRESS` — внешний IP-адрес. Также можно посмотреть созданный сервис: ```bash kubectl get svc -n envoy-gateway-system \ -l gateway.envoyproxy.io/owning-gateway-namespace=envoy-example,gateway.envoyproxy.io/owning-gateway-name=app-gateway ``` Envoy Gateway по умолчанию создает балансировщик для каждого `Gateway`. Поэтому отдельный манифест `Service` типа `LoadBalancer`, как в классическом сценарии с Ingress-контроллером, не требуется. ### Создание HTTPRoute HTTPRoute задает правила маршрутизации. Создайте файл `httproute.yaml`: ```yaml apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: app-route namespace: envoy-example spec: parentRefs: - name: app-gateway hostnames: - app.example.com rules: - matches: - path: type: PathPrefix value: /service1 filters: - type: URLRewrite urlRewrite: path: type: ReplacePrefixMatch replacePrefixMatch: / backendRefs: - name: service1 port: 80 - matches: - path: type: PathPrefix value: /service2 filters: - type: URLRewrite urlRewrite: path: type: ReplacePrefixMatch replacePrefixMatch: / backendRefs: - name: service2 port: 80 ``` Примените манифест: ```bash kubectl apply -f httproute.yaml ``` Проверьте, что маршрут принят: ```bash kubectl get httproute app-route -n envoy-example -o yaml ``` В статусе ресурса должно быть: ```bash status: "True" type: Accepted ``` В этом манифесте `HTTPRoute` принимает запросы с доменом `app.example.com` и направляет их в разные сервисы по префиксу пути. Фильтр `URLRewrite` заменяет префиксы `/service1` и `/service2` на `/`, чтобы Nginx внутри каждого сервиса отдавал свою главную страницу. ### Проверка работы Получите внешний IP-адрес Gateway: ```bash kubectl get gateway app-gateway -n envoy-example ``` Пропишите этот IP-адрес в DNS-настройках домена app.example.com в виде A-записи. После обновления DNS проверьте доступность сервисов: ```bash curl http://app.example.com/service1 curl http://app.example.com/service2 ``` Если DNS еще не обновился, можно выполнить проверку по IP-адресу, передав заголовок `Host`: ```bash curl -H "Host: app.example.com" http:///service1 curl -H "Host: app.example.com" http:///service2 ``` В ответе должны отображаться страницы `Service 1` и `Service 2`. ### Удаление примера Чтобы удалить ресурсы, созданные в примере, выполните: ```bash kubectl delete namespace envoy-example kubectl delete gatewayclass envoy-gateway ``` Дополнение Envoy Gateway при этом останется установленным в кластере. Удалить его можно во вкладке «Дополнения» в панели управления кластером. ## Миграция с Nginx Ingress на Envoy Gateway Envoy Gateway можно развернуть рядом с Nginx Ingress и переносить маршруты постепенно. Такой подход позволяет сначала проверить ресурсы Gateway API на отдельном внешнем IP-адресе, а затем переключить DNS-записи или трафик на новый Gateway. Для автоматической конвертации Ingress-ресурсов можно использовать утилиту [ingress2gateway](https://github.com/kubernetes-sigs/ingress2gateway). Она читает существующие Ingress-ресурсы из кластера и выводит эквивалентные ресурсы Gateway API: `Gateway`, `HTTPRoute` и другие объекты. > [!NOTE] > ingress2gateway помогает подготовить миграцию, но не заменяет ручную проверку. Некоторые аннотации Nginx Ingress могут быть не поддержаны или потребовать ручной настройки после конвертации. ### Требования Перед миграцией подготовьте кластер: - установите Envoy Gateway; - [создайте GatewayClass](https://timeweb.cloud/docs/k8s/addons/envoy-gateway#sozdanie-gateway) для Envoy Gateway; - проверьте, что исходные Ingress-ресурсы работают через Nginx Ingress. Проверьте, что в кластере есть нужные классы: ```bash kubectl get ingressclass kubectl get gatewayclass ``` В выводе должны быть: - `IngressClass` с именем `nginx`; - `GatewayClass` с именем `envoy-gateway`. ### Установка ingress2gateway Если на локальной машине установлен Go, установите ingress2gateway командой: ```bash go install github.com/kubernetes-sigs/ingress2gateway@v1.0.0 ``` После установки бинарный файл будет доступен в директории `$(go env GOPATH)/bin`. Убедитесь, что эта директория добавлена в `PATH`. Также можно установить ingress2gateway через Homebrew: ```bash brew install ingress2gateway ``` Или скачать готовый бинарный файл со страницы [релизов проекта](https://github.com/kubernetes-sigs/ingress2gateway/releases). ### Исходный пример В примере ниже миграция выполняется для приложения, которое уже опубликовано через Nginx Ingress. В кластере есть неймспейс `ingress-migration-demo`. В нем находятся: - Ingress `migration-source`; - Service `service1` и `service2`; - два правила маршрутизации для домена `ingress-migration.example.com`: - `/service1` направляет трафик в `service1`; - `/service2` направляет трафик в `service2`. Проверьте исходный Ingress: ```bash kubectl get ingress -n ingress-migration-demo ``` В колонке `CLASS` должно быть значение `nginx`. ### Конвертация Ingress-ресурсов Чтобы сконвертировать этот Ingress в ресурсы Gateway API, выполните: ```bash ingress2gateway print \ --providers=ingress-nginx \ --emitter=envoy-gateway \ --ingress-nginx-ingress-class=nginx \ --namespace=ingress-migration-demo > gateway-migration.yaml ``` В этой команде: - `print` — режим, в котором ingress2gateway выводит сгенерированные ресурсы в стандартный вывод. За счет перенаправления `>` результат сохраняется в файл `gateway-migration.yaml`. - `--providers=ingress-nginx` — указывает тип исходного Ingress-контроллера. В этом примере исходные маршруты обслуживает Nginx Ingress, поэтому используется значение `ingress-nginx`. - `--emitter=envoy-gateway` — указывает, для какого Gateway API-контроллера подготовить результат. В этом примере целевой контроллер — Envoy Gateway. - `--ingress-nginx-ingress-class=nginx` — выбирает только Ingress-ресурсы класса `nginx`. Такой класс создает аддон Nginx Ingress в Timeweb Cloud. - `--namespace=ingress-migration-demo` — ограничивает чтение ресурсов неймспейсом `ingress-migration-demo`, где находится исходный Ingress из примера. Откройте файл `gateway-migration.yaml` и проверьте сгенерированные ресурсы перед применением. Проверьте `gatewayClassName` у ресурса `Gateway`. ingress2gateway может сгенерировать это значение на основе имени исходного `IngressClass`. Например, если исходный Ingress использует класс `nginx`, в сгенерированном Gateway может появиться: ```yaml spec: gatewayClassName: nginx ``` Envoy Gateway не будет обрабатывать такой `Gateway`, если в кластере нет `GatewayClass` с именем `nginx`. Для `GatewayClass` из примера замените значение на `envoy-gateway`: ```yaml spec: gatewayClassName: envoy-gateway ``` ### Применение ресурсов Gateway API После проверки примените файл: ```bash kubectl apply -f gateway-migration.yaml ``` Проверьте, что Gateway создан и получил внешний IP-адрес: ```bash kubectl get gateway -A ``` ### Тестирование перед переключением трафика Пока DNS-записи указывают на старый Nginx Ingress, новый Gateway можно проверить по внешнему IP-адресу с заголовком `Host`: ```bash curl -H "Host: app.example.com" http:/// ``` Где: - `app.example.com` — домен из `HTTPRoute`; - `` — IP-адрес нового Gateway; - `` — путь, который должен обрабатываться маршрутом. Сравните ответы старого Ingress и нового Gateway. Если все работает корректно, можно изменить DNS-записи на IP нового балансировщика. # ExternalDNS Source: https://timeweb.cloud/docs/k8s/addons/externaldns ExternalDNS — инструмент для автоматического управления DNS-записями на основе ресурсов Kubernetes. Он обновляет DNS-записи в соответствии с аннотациями, указанными в манифестах сервисов и ingress-ресурсов. ExternalDNS помогает упростить управление доменными именами для сервисов в кластере Kubernetes, устраняя необходимость вручную изменять записи в панели управления DNS. ## Установка Для установки ExternalDNS откройте панель управления кластером, перейдите во вкладку «Дополнения», нажмите на три точки рядом с ExternalDNS и нажмите «Установить». ![Selection 182](https://content.timeweb.com/assets/ec06f496-6887-4d0d-a065-de4908ab92c3.png?width=1028&height=860) После установки дождитесь обновления кластера и убедитесь, что ресурсы ExternalDNS имеют статус «Running»: ```shell kubectl get pods -n external-dns ``` ## Использование ExternalDNS Перед использованием ExternalDNS необходимо вручную создать домены в панели управления, чтобы ExternalDNS мог управлять их записями. #### Использование аннотаций в Ingress ExternalDNS управляет DNS-записями на основе аннотаций в манифестах. Например, для привязки доменного имени к Ingress-ресурсу можно использовать следующий манифест: ```yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress namespace: ingress-example annotations: external-dns.alpha.kubernetes.io/hostname: "app.example.com" external-dns.alpha.kubernetes.io/ttl: "1200" spec: rules: - host: app.example.com http: paths: - path: / pathType: Prefix backend: service: name: my-app port: number: 80 ``` Описание аннотаций: - `external-dns.alpha.kubernetes.io/hostname` — задает доменное имя, которое будет связано с этим ресурсом. - `external-dns.alpha.kubernetes.io/ttl` — задает TTL DNS-записи в секундах. Этот вариант подойдет, если Ingress-контроллер развернут на всех узлах. Однако у него есть недостатки: - Если Ingress-контроллер работает не на всех узлах, часть трафика может отправляться на недоступные IP-адреса. - Kubernetes может переместить поды на другие узлы, изменив IP-адреса, что приведет к недоступности сервиса. - DNS-балансировка не учитывает доступность узлов, из-за чего могут возникнуть потери трафика. #### Использование LoadBalancer (рекомендуемый вариант) Один из удобных способов работы с ExternalDNS — использовать его с [балансировщиком нагрузки](https://timeweb.cloud/docs/k8s/network/kubernetes-load-balancer). В этом случае сервис получает фиксированный внешний IP-адрес и балансирует трафик между подами. ExternalDNS автоматически создаст DNS-запись с этим IP-адресом. Пример манифеста: ```yml apiVersion: v1 kind: Service metadata: name: ingress-nginx namespace: ingress-nginx annotations: external-dns.alpha.kubernetes.io/hostname: "app.example.com" external-dns.alpha.kubernetes.io/ttl: "1200" spec: selector: app.kubernetes.io/name: ingress-nginx ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 443 type: LoadBalancer ``` В этом примере балансировщик направляет трафик в поды с `app.kubernetes.io/name: ingress-nginx`, где работает Ingress-контроллер. Использование ExternalDNS с балансировщиком нагрузки упрощает управление DNS. Вместо того чтобы следить за изменением IP-адресов на разных узлах, достаточно привязать доменное имя к одному фиксированному IP. Это снижает риски недоступности из-за смены узлов, а балансировка нагрузки между подами обеспечивает стабильную работу сервиса. При изменении конфигурации кластера ExternalDNS автоматически обновит DNS-запись, исключая необходимость ручного вмешательства. # Fluent Operator Source: https://timeweb.cloud/docs/k8s/addons/fluent-operator В кластерах Kubernetes приложения и системные сервисы генерируют большое количество логов. Для удобного анализа и хранения этих логов их можно собирать в системы вроде Elasticsearch, Loki, Kafka, Prometheus и других. Fluent Bit и Fluentd — инструменты для сбора и обработки логов. Но их настройка в Kubernetes может быть сложной: - Необходимо вручную создавать ресурсы (DaemonSet, StatefulSet); - Настраивать конфигурационные файлы; - Учитывать особенности контейнерных рантаймов; - Управлять секретами для аутентификации; - Следить за обновлениями и совместимостью. Fluent Operator упрощает этот процесс: - Автоматизирует развертывание Fluent Bit и Fluentd, создавая необходимые ресурсы. - Использует Custom Resource Definitions (CRD) для настройки входов, фильтров, выходов и других параметров через YAML-манифест. - Управляет обновлениями и масштабированием Fluent Bit/Fluentd в ответ на изменения в кластере. - Упрощает интеграцию с Elasticsearch, Loki, Kafka, Prometheus и другими. Вместо ручного создания конфигурации для Fluent Bit и Fluentd, вы устанавливаете Fluent Operator и описываете настройки. Оператор приводит кластер в нужное состояние и автоматически обновляет агенты при изменении конфигурации. #### Основные компоненты - **Fluent Bit**: легкий агент для сбора логов. - **Fluentd**: мощный агент, который можно использовать как DaemonSet или StatefulSet для сложной фильтрации и буферизации. - **Fluent Operator**: управляет Fluent Bit и Fluentd через CRD. ## Установка Fluent Operator можно установить через панель управления кластером: 1. Перейдите во вкладку «Дополнения» и найдите дополнение Fluent Operator. ![Selection 170](https://content.timeweb.com/assets/491f370e-0d84-4a29-a9b0-a1deb73145e4.png?width=1001&height=918) 2. Нажмите на него, чтобы открыть мастер настройки. 3. Выберите «Продвинутая установка», отредактируйте конфигурацию под свои задачи и нажмите «Установить». ![Selection 171](https://content.timeweb.com/assets/a7710a08-533d-4850-9ed3-ddc56496b6f2.png?width=996&height=803) ## Параметры установки #### Operator Секция `operator:` - **containerRuntime**: задает используемый контейнерный рантайм. В нашем управляемом Kubernetes используется `containerd`. Это значение менять не нужно. - **logPath**: путь к логам. Для `containerd` используется `/var/log`. - **disableComponentControllers**: список компонентов Fluent Operator, которые нужно отключить. Возможные значения: `fluent-bit` и `fluentd`. По умолчанию устанавливаются оба компонента. #### Fluent Bit Секция `input:` - `tail:` - `enable: true` — включает сбор логов с файлов, находящихся по пути `/var/log/containers/*.log`. - `path: "/var/log/containers/*.log"` — задает путь к лог-файлам контейнеров. - `refreshIntervalSeconds: 10` — частота обновления списка файлов логов (в секундах). - `memBufLimit: 100MB` — ограничение памяти для буфера. - `storageType: memory` — тип хранилища для буфера. Альтернативный вариант — `filesystem`, но перед использованием нужно подготовить том. - `readFromHead: false` — начинать читать логи с конца. - `skipLongLines: true` — пропускать слишком длинные строки. - `systemd:` - `enable: true` — включает сбор логов из journald. - `includeKubelet: true` — добавляет логи `kubelet` из `journald`. - `storageType: memory` — задает тип хранилища для буфера логов `journald`. Секция `output:` Здесь перечислены основные выходы. Для включения каждого достаточно выставить соответствующий ключ `enable: true` и задать параметры: **Elasticsearch** ```yml es: enable: false host: "" port: 9200 logstashPrefix: ks-logstash-log bufferSize: 20MB traceError: true httpUser: "" httpPassword: "" ``` Настройка для отправки логов в Elasticsearch. Укажите URL и порт сервиса, а также учетные данные для аутентификации. **Kafka** ```yml kafka: enable: false brokers: "" topics: ks-log bufferSize: 20MB retryLimit: "10" ``` Настройка для отправки логов в Kafka. Укажите список брокеров через запятую и топик для логов. **Loki** ```yml loki: enable: false retryLimit: "no_limits" host: 127.0.0.1 port: 3100 httpUser: myuser httpPassword: mypass tenantId: "" ``` Позволяет отправлять логи в Loki. Укажите хост, порт, учётные данные и идентификатор тенанта. **stdout** ```yml stdout: enable: true ``` Полезно для тестирования, так как выводит логи в стандартный вывод (`stdout`). Секция `filter:` - `multiline:` - `enable: false` — по умолчанию мультилайн отключён. - Можно настроить парсеры (go, python, java и т.д.) или подключать свои кастомные. - `kubernetes:` - `enable: true` — включает фильтр Kubernetes, чтобы дописывать метаданные подов, такие как `namespace`, `pod`, `labels`, `annotations`. - `labels: false`, `annotations: false` — по умолчанию не добавлять эти поля. - `containerd:` - `enable: true` — включает фильтр для парсинга Containerd-логов. - `systemd:` - `enable: true` — включает фильтр для парсинга `journald`. #### Fluentd - `enable` — если нужно использовать Fluentd (вместо или вместе с Fluent Bit), установите `true`. - `mode`: - `collector` — устанавливает StatefulSet. - `agent` — устанавливает DaemonSet (как Fluent Bit), то есть один агент на ноду. - `forward`: - `port: 24224` — стандартный вход в Fluentd через форвардинг. - `output` — аналогично Fluent Bit, есть секции `es`, `kafka`, `opensearch` и т.д. ## Удаление Удаление дополнения через панель управления не поддерживается, но его можно выполнить вручную. Для этого выполните следующие шаги: 1. Удалите объект `fluent-bit`: ```shell kubectl delete -n fluent-operator fluentbit/fluent-bit ``` 2. Удалите Helm-релиз `fluent-operator`: ```shell helm uninstall -n fluent-operator fluent-operator ``` 3. Удалите все CRD, связанные с `fluent-operator`: ```shell kubectl delete crd $(kubectl get crd | grep fluent | awk '{print $1}') ``` 4. Проверьте, что все связанные ресурсы и пространства имен удалены: ```shell kubectl get namespaces ``` После выполнения этих шагов Fluent Operator будет полностью удален из вашего кластера. # Grafana Loki Source: https://timeweb.cloud/docs/k8s/addons/grafana-loki Grafana Loki — это система сбора и просмотра логов, созданная командой Grafana Labs. Она используется совместно с Grafana для удобной визуализации логов. В отличие от ELK-стека, Loki не индексирует содержимое логов, а хранит их вместе с метаданными (например, имя пода или namespace). Это делает систему более быстрой и менее требовательной к ресурсам. Чаще всего Loki используется в связке с Promtail — агентом, который собирает логи с нод и отправляет их в Loki. Затем вы можете просматривать эти логи прямо в Grafana с помощью запросов на языке LogQL. ## Установка Для установки перейдите в раздел «Дополнения» в панели управления кластера. ![Scr 20250702 Nwug](https://content.timeweb.com/assets/ccd7c712-1040-4d91-b94e-95d32dec837e.png?width=2042&height=1602) После выбора дополнения «Grafana Loki» в панели управления вы увидите YAML-конфигурацию с параметрами по умолчанию. ![Scr 20250702 Nwyg](https://content.timeweb.com/assets/28cd4ab4-139a-449f-8e49-277608ba827c.png?width=2052&height=1612) Кратко опишем, за что отвечает каждый блок. ```yaml test_pod: enabled: true image: bats/bats:1.8.2 ``` Запускает тестовый под с утилитой `bats`, которая проверяет, что Loki доступен и принимает логи. Используется только для автоматической валидации после установки. ```yaml loki: enabled: true isDefault: true ``` Основной компонент — Loki, который принимает и хранит логи. Здесь можно настроить: - `url` — внутренний адрес сервиса Loki (используется другими компонентами). - `readinessProbe` и `livenessProbe` — проверки состояния сервиса. - `datasource` — настройки подключения к Loki как к источнику данных в Grafana. Если вы используете Grafana, `datasource.uid` может быть задан для явного подключения источника. ```yaml promtail: enabled: true config: clients: - url: http://:3100/loki/api/v1/push ``` Promtail — агент, который собирает логи с узлов кластера (из `/var/log/containers/*.log`) и отправляет их в Loki. Используется по умолчанию. Если вы планируете использовать альтернативные сборщики логов, например, Filebeat или Fluent Bit — можно отключить. ```yaml fluent-bit: enabled: false filebeat: enabled: false filebeatConfig: ... logstash: enabled: false filters: ... outputs: ... ``` Альтернативные агенты для сбора логов. Их можно включить, если Promtail не подходит для вашего случая (например, вы уже используете [Fluent Operator](https://timeweb.cloud/docs/k8s/addons/fluent-operator)). По умолчанию они отключены. ```yaml grafana: enabled: false ``` Отвечает за установку Grafana. Если вы хотите просматривать логи через веб-интерфейс — укажите значение `enabled: true`. Если в кластере уже установлена Grafana, можно оставить выключенным и подключить Loki вручную как источник данных. ```yaml prometheus: enabled: false isDefault: false url: ... ``` Позволяет подключить Prometheus как источник метрик в Grafana. Сам Prometheus при этом не устанавливается — этот блок лишь добавляет его как `datasource`. Можно включить, если у вас уже настроен Prometheus в кластере и вы хотите использовать его в Grafana вместе с Loki. ```yaml proxy: http_proxy: "" https_proxy: "" no_proxy: "" ``` Настройки прокси, которые могут быть нужны при подключении к внешним сервисам. ## Пример использования В качестве примера рассмотрим работу дополнения в связке с Promtail. В роли источника логов запустим под, который будет писать сообщения в стандартный вывод. Kubelet сохраняет эти сообщения в файл в директории `/var/log/containers/`. Promtail, установленный как DaemonSet, считывает эти файлы и отправляет содержимое в Loki. Loki сохраняет логи, а Grafana позволяет их просматривать через веб-интерфейс. Установите дополнение в панели управления. В окне конфигурации оставьте все параметры по умолчанию, изменив только: ```yaml grafana: enabled: false ``` на: ```yaml grafana: enabled: true ``` Это позволит развернуть Grafana, через которую потом будем смотреть логи. Также установите дополнение [Nginx Ingress](https://timeweb.cloud/docs/k8s/addons/nginx-ingress#ustanovka-nginx-ingress) — оно нужно для доступа к интерфейсу Grafana по доменному имени. Проверьте, что все поды запущены: ```shell kubectl get pods -n loki ``` Вы должны увидеть примерно следующее: ```shell NAME READY STATUS RESTARTS AGE loki-stack-0 1/1 Running 0 3h5m loki-stack-grafana-878d56dc6-s28sq 2/2 Running 0 3h5m loki-stack-promtail-5wtlr 1/1 Running 0 3h5m loki-stack-promtail-hl6pl 1/1 Running 0 3h5m ``` Проверьте, что ingress-контроллер работает: ```shell kubectl get pods -n ingress-nginx ``` Также проверьте сервисы Grafana Loki: ```shell kubectl get svc -n loki ``` Пример вывода: ```shell NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE loki-stack ClusterIP 10.111.63.222 3100/TCP 3h7m loki-stack-grafana ClusterIP 10.104.154.158 80/TCP 3h7m loki-stack-headless ClusterIP None 3100/TCP 3h7m loki-stack-memberlist ClusterIP None 7946/TCP 3h7m ``` После этого настроим nginx ingress для работы с Grafana по домену. Для этого [создадим балансировщик](https://timeweb.cloud/docs/k8s/network/kubernetes-load-balancer). Создайте манифест `loadbalancer.yaml`: ```yaml apiVersion: v1 kind: Service metadata: name: ingress-nginx namespace: ingress-nginx spec: selector: app.kubernetes.io/name: ingress-nginx ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 443 type: LoadBalancer ``` Примените манифест: ```shell kubectl apply -f loadbalancer.yaml ``` Создайте правило Ingress в файле `grafana-ingress.yaml`: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: grafana namespace: loki annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: grafana.example.com http: paths: - path: / pathType: Prefix backend: service: name: loki-stack-grafana port: number: 80 ``` Измените `host: grafana.example.com`, указав домен, по которому вы хотите, чтобы открывался веб-интерфейс Grafana. В качестве A-записи для этого домена укажите IP созданного балансировщика. Примените манифест: ```shell kubectl apply -f loadbalancer.yaml ``` Теперь создадим под `logger`, который будет записывать сообщения, эмулируя логи: ```shell kubectl run logger --image=busybox --restart=Never -- sh -c 'while true; do echo "hello from logger"; sleep 5; done' ``` Проверьте, что под запустился: ```shell kubectl get pods ``` У пода `logger` должен быть статус `Running`. Теперь обратимся к веб-интерфейсу графаны. Откройте домен, указанный ранее в Ingress. При переходе вас встретит окно авторизации Grafana. В качестве логина укажите: ```shell admin ``` Пароль для авторизации хранится в секрете. Получите его командой: ```shell kubectl get secret -n loki loki-stack-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ``` В интерфейсе Grafana перейдите в раздел «Explore». ![Scr 20250701 Ojyo](https://content.timeweb.com/assets/fb7fe9a5-d27a-493a-b0d3-143bf0fc39d7.png?width=2884&height=1562) _Основное меню в интерфейсе [Grafana](https://grafana.com/)_ Выберите источник данных «Loki». В поле «Label filters» укажите `pod=logger` и запустите запрос, нажав на кнопку «Run query». ![Scr 20250701 Oksp](https://content.timeweb.com/assets/95f8c71a-1a12-467d-8f0a-acbc4d23f752.png?width=2858&height=1364) _Запуск запроса в интерфейсе [Grafana](https://grafana.com/)_ После этого пролистайте страницу вниз. Вы увидите записи в логе «hello from logger». ![Scr 20250701 Olsq](https://content.timeweb.com/assets/373ffcef-2c0e-453f-9bdf-6dcd46366ed8.png?width=2880&height=1608) _Просмотр логов в интерфейсе [Grafana](https://grafana.com/)_ # Headlamp Source: https://timeweb.cloud/docs/k8s/addons/headlamp Headlamp — это веб-интерфейс для управления кластером. Он позволяет просматривать ресурсы кластера, управлять ими и отслеживать состояние приложений без использования [kubectl](https://timeweb.cloud/docs/k8s/cluster-connection/kubectl). ## Установка Перед установкой дополнения убедитесь, что: - В кластере установлен [Nginx Ingress](https://timeweb.cloud/docs/k8s/addons/nginx-ingress). - Есть хотя бы одна нода с публичным IP-адресом. Включить публичный IP можно в [настройках группы воркеров](https://timeweb.cloud/docs/k8s/manage-cluster/worker-node#upravlenie-gruppoj-vorker-nod). Перейдите во вкладку «Дополнения» в панели управления кластером и нажмите на карточку аддона «Headlamp». ![Scr 20260326 Pxid](https://content.timeweb.com/assets/0f49e91a-a529-4d5c-ae6f-6759636fcf5c.png?width=2228&height=1642) В открывшемся меню вы можете включить продвинутую установку или использовать параметры по умолчанию. При редактировании параметров вы можете указать, например: - домен, по которому будет доступен интерфейс; - настройки ingress; - настроить OIDC. Нажмите «Установить», чтобы начать установку. После завершения в карточке дополнения появится статус «Добавлено». Проверить, что дополнение установлено корректно, можно командой: ```bash kubectl get pod -n headlamp ``` В случае успешной установки вы увидите под в статусе «Running». ## Авторизация После установки иконка Headlamp появится в панели управления кластером. ![Scr 20260326 Pwht](https://content.timeweb.com/assets/979c8b66-c17b-4b06-9032-555203b5a26a.png?width=2148&height=1642) Нажмите на нее, чтобы открыть интерфейс. Если вы не авторизованы, потребуется указать токен. Получить токен можно во вкладке «Дашборд» панели управления, нажав на «Скопировать» рядом с «Токен Dashboard». ![Scr 20260326 Pwlc](https://content.timeweb.com/assets/97a002c7-c020-4563-92c4-d01443704a7b.png?width=2102&height=1624) После авторизации откроется интерфейс Headlamp. Основные разделы: - Cluster — информация о кластере и его состоянии; - Map — визуализация ресурсов и их связей; - Workloads — управление рабочими нагрузками (Pods, Deployments, StatefulSet); - Storage — PVC, PV и storage-классы; - Network — сервисы, ingress и сетевые политики; - Gateway — ресурсы Gateway API; - Security — роли, сервисные аккаунты и политики доступа; - Configuration — ConfigMap, Secrets и другие настройки; - Custom Resources — пользовательские ресурсы (CRD); - Create — создание ресурсов через интерфейс. ![Scr 20260326 Pwzc](https://content.timeweb.com/assets/6454a333-1712-4216-ad93-808ab30dced1.png?width=2926&height=1658) _Интерфейс [Headlamp](https://headlamp.dev/)_ ## Настройка авторизации Если интерфейс Headlamp доступен извне, рекомендуется настроить дополнительную базовую авторизацию. Headlamp не поддерживает авторизацию по логину и паролю напрямую. Для этого используется `basic auth` на уровне `ingress`. Создайте файл с логином и паролем: ```bash htpasswd -c auth admin ``` где `admin` — имя пользователя. Во время выполнения команды потребуется дважды ввести желаемый пароль. В результате будет создан файл `auth`. Если утилита `htpasswd` отсутствует, установите пакет `apache2-utils`. Затем создайте секрет в неймспейсе `headlamp` с использованием ранее полученного файла: ```bash kubectl create secret generic headlamp-basic-auth \ --from-file=auth \ -n headlamp ``` Перейдите в раздел «Дополнения» панели управления кластером и откройте установленный Headlamp. Включите продвинутую установку и найдите блок: ```yaml ingress: enabled: true # Желательно настроить авторизацию: https://headlamp.dev/docs/latest/installation/in-cluster/basic-auth/ annotations: {} ``` Удалите `{}` возле `annotations` и добавьте аннотации: ```yaml ingress: enabled: true annotations: nginx.ingress.kubernetes.io/auth-type: basic nginx.ingress.kubernetes.io/auth-secret: headlamp-basic-auth nginx.ingress.kubernetes.io/auth-realm: "Authentication Required" ``` Нажмите «Сохранить» и дождитесь обновления дополнения. После этого при обращении к Headlamp сначала потребуется ввести логин и пароль, а затем токен. Чтобы изменить пароль, создайте новый файл `auth` и обновите секрет в кластере. # MinIO Operator Source: https://timeweb.cloud/docs/k8s/addons/minio-operator MinIO Operator — это аддон для Kubernetes, который упрощает развертывание и управление S3-совместимыми хранилищами на базе MinIO. Он позволяет создавать распределенные кластеры хранения через CRD, управлять пользователями, бакетами и конфигурацией через Kubernetes-манифесты. ## Установка в ПУ > [!NOTE] > Для работы аддона необходимо, чтобы в кластере был установлен [аддон CSI-driver](https://timeweb.cloud/docs/k8s/network-drives-connection#ustanovka-drajvera-csi). Для установки MinIO Operator, в панели управления кластером, перейдите во вкладку «Дополнения». Найдите «MinIO Operator» в списке и нажмите на него. ![Scr 20250903 Kpxi](https://content.timeweb.com/assets/b8f3a003-d2f7-4ea8-ab49-06ddd547e2d3.png?width=1976&height=1440) В открывшемся окне можно при необходимости изменить параметры установки. Описание параметров доступно [в официальной документации](https://docs.min.io/community/minio-object-store/reference/operator-chart-values.html#minio-operator-chart-values). Воспользоваться аддоном можно не меняя настроек по умолчанию. Для установки аддона нажмите на кнопку «Установить». ![Scr 20250828 Lape](https://content.timeweb.com/assets/074b972c-34ac-4f4c-b258-6d5ddf34cdc0.png?width=2014&height=1406) Дождитесь завершения установки. Для проверки, что установка завершена корректно, выполните команду: ```shell kubectl get all -n operator ``` У запущенных подов должен быть статус `Running`. ## Пример использования В качестве примера развернем кластер MinIO из одного узла. Данные будут храниться на сетевом диске, а доступ к кластеру будет организован через Nginx Ingress с настроенным HTTPS. > [!NOTE] > В продакшн-среде рекомендуется использовать не менее 4 узлов для обеспечения отказоустойчивость. #### Предварительные требования В кластере должны быть установлены аддоны: - [Nginx Ingress](https://timeweb.cloud/docs/k8s/addons/nginx-ingress) - [CSI-driver](https://timeweb.cloud/docs/k8s/network-drives-connection) - [cert-manager](https://timeweb.cloud/docs/k8s/addons/cert-manager) - MinIO Operator Все аддоны установлены с параметрами по умолчанию. Для доступа к консоли и S3 API мы будем использовать два поддомена: - `minio-console.timeweb-example.cloud` — для доступа к панели управления; - `s3.timeweb-example.cloud` — для доступа к S3 API. Перейдем к созданию кластера. Сначала опишем создание неймспейса в файле `namespace.yaml`: ```yaml apiVersion: v1 kind: Namespace metadata: name: minio-tenant ``` Теперь опишем тенант в файле `tenant.yaml`: ```yaml apiVersion: minio.min.io/v2 kind: Tenant metadata: name: myminio namespace: minio-tenant spec: configuration: name: storage-configuration users: - name: storage-user image: quay.io/minio/minio:RELEASE.2025-04-08T15-41-24Z requestAutoCert: false mountPath: /export podManagementPolicy: Parallel pools: - name: pool-0 servers: 1 volumesPerServer: 1 volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi storageClassName: nvme.network-drives.csi.timeweb.cloud ``` Здесь: `pools` — определяет пул серверов (узлов) для MinIO: - `servers: 1` — количество серверов в пуле. - `volumesPerServer: 1` — количество томов, подключаемых к каждому серверу; - `volumeClaimTemplate` — шаблон для создания PVC. Указываем: - `accessModes: ReadWriteOnce` — том может быть смонтирован только одним подом на одном узле; - `storage: 2Gi` — размер тома; - `storageClassName: nvme.network-drives.csi.timeweb.cloud` — класс хранилища, соответствующий NVMe-дискам, предоставляемым CSI-драйвером. Обязательный параметр `spec.configuration.name`, в котором мы передаем имя секрета. Параметр используется для создания root-пользователя. В секции `spec.users` указывается список пользователей, для каждого из которых должен быть создан секрет с `access` и `secret key`. Имя секрета передается в поле `name`. Опишем секрет `storage-configuration.yaml`: ```yaml apiVersion: v1 kind: Secret metadata: name: storage-configuration namespace: minio-tenant type: Opaque stringData: config.env: |- export MINIO_ROOT_USER="minio" export MINIO_ROOT_PASSWORD="minio123" export MINIO_BROWSER="on" ``` И `storage-user.yaml`: ```yaml apiVersion: v1 kind: Secret metadata: name: storage-user namespace: minio-tenant type: Opaque data: CONSOLE_ACCESS_KEY: Y29uc29sZQ== # console CONSOLE_SECRET_KEY: Y29uc29sZTEyMw== # console123 ``` Обратите внимание, что `CONSOLE_ACCESS_KEY` и `CONSOLE_SECRET_KEY` передаются закодированные в base64. Например: ```shell echo -n "console" | base64 # Y29uc29sZQ== echo -n "console123" | base64 # Y29uc29sZTEyMw== ``` Применим все манифесты: ```bash kubectl apply -f namespace.yaml kubectl apply -f storage-configuration.yaml kubectl apply -f storage-user.yaml kubectl apply -f tenant.yaml ``` Проверьте, что все манифесты успешно применились и все сервисы корректно запустились: ```bash kubectl get all -n minio-tenant ``` Вы должны будете увидеть примерно такой вывод: ```shell NAME READY STATUS RESTARTS AGE pod/myminio-pool-0-0 2/2 Running 0 113m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/minio ClusterIP 10.97.190.5 80/TCP 113m service/myminio-console ClusterIP 10.96.97.1 9090/TCP 113m service/myminio-hl ClusterIP None 9000/TCP 113m NAME READY AGE statefulset.apps/myminio-pool-0 1/1 113m ``` Теперь перейдем к настройке Nginx Ingress. Создадим файл `ingress.yaml`: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: myminio-ingress namespace: minio-tenant annotations: nginx.ingress.kubernetes.io/backend-protocol: "HTTP" nginx.ingress.kubernetes.io/proxy-body-size: "0" cert-manager.io/cluster-issuer: letsencrypt-prod spec: ingressClassName: nginx rules: - host: minio-console.timeweb-example.cloud http: paths: - path: / pathType: Prefix backend: service: name: myminio-console port: number: 9090 - host: s3.timeweb-example.cloud http: paths: - path: / pathType: Prefix backend: service: name: minio port: number: 80 tls: - hosts: - minio-console.timeweb-example.cloud secretName: minio-console-tls - hosts: - s3.timeweb-example.cloud secretName: s3-tls ``` Не забудьте заменить домены `s3.timeweb-example.cloud` и `minio-console.timeweb-example.cloud`. Для выпуска сертификатов создадим `cluster-issuer.yaml`: ```yaml apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-prod spec: acme: email: example@timeweb.cloud server: https://acme-v02.api.letsencrypt.org/directory privateKeySecretRef: name: letsencrypt-prod solvers: - http01: ingress: class: nginx ``` Поменяйте `example@timeweb.cloud` на вашу почту — она будет использоваться Let's Encrypt. Опишем балансировщик нагрузки в файле `lb.yaml`: ```yaml apiVersion: v1 kind: Service metadata: name: ingress-nginx namespace: ingress-nginx spec: type: LoadBalancer selector: app.kubernetes.io/name: ingress-nginx ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 443 ``` Примените все манифесты: ```bash kubectl apply -f ingress.yaml kubectl apply -f cluster-issuer.yaml kubectl apply -f lb.yaml ``` Дождитесь завершения создания балансировщика нагрузки в панели управления и укажите для доменов в качестве A-записи IP-адрес балансировщика. Проверьте, что ingress запущен, а сертификаты выпущены: ```shell kubectl get ingress -n minio-tenant kubectl get certificates -n minio-tenant ``` Теперь можно перейти к панели управления MinIO. Перейдите по домену MinIO-консоли, в нашем примере — это `minio-console.timeweb-example.cloud`. Вы увидите страницу авторизации. ![Scr 20250903 Jwnm](https://content.timeweb.com/assets/da55381a-9f8c-4cd0-b40e-551d0863d574.png?width=2934&height=1638) _Страница авторизации [MinIO](https://www.min.io/)_ Для авторизации используйте данные, указанные в секретах `storage-user.yaml` или `storage-configuration.yaml`, например, логин `console` и пароль `console123`. Перейдите в раздел «Buckets», чтобы создать бакет. ![Scr 20250903 Jylx](https://content.timeweb.com/assets/ae2b7521-9475-44b6-bc88-ace5479d281c.png?width=2910&height=1578) _Раздел «Buckets» в интерфейсе [MinIO](https://www.min.io/)_ Перейдите в раздел «Access Keys», чтобы создать данные для подключения — например, [с помощью S3cmd](https://timeweb.cloud/docs/s3-storage/tools/s3cmd). Простой конфиг для подключения будет выглядеть так: ```bash [default] access_key = [Access Key] secret_key = [Secret Key] host_base = s3.timeweb-example.cloud host_bucket = s3.timeweb-example.cloud use_https = True ``` # NGINX Gateway Fabric Source: https://timeweb.cloud/docs/k8s/addons/nginx-gateway-fabric NGINX Gateway Fabric — это контроллер Gateway API для Kubernetes, который использует NGINX для обработки входящего трафика. С его помощью можно публиковать HTTP, HTTPS, gRPC, TCP и UDP-сервисы, настраивать маршрутизацию по доменам и путям, управлять TLS и постепенно переходить от Ingress к Gateway API. Gateway API можно рассматривать как развитие Ingress. Вместо одного ресурса Ingress используются несколько объектов с разными зонами ответственности: - `GatewayClass` — указывает, какой контроллер будет обслуживать шлюзы. - `Gateway` — описывает точку входа: порты, протоколы, домены и TLS-настройки. - `HTTPRoute` — задает правила маршрутизации HTTP-трафика к сервисам. - `GRPCRoute`, `TCPRoute`, `UDPRoute`, `TLSRoute` — используются для других типов трафика. NGINX Gateway Fabric отслеживает ресурсы Gateway API и на их основе создает NGINX data plane: поды NGINX и сервис, через который внешний трафик попадает в кластер и направляется к Kubernetes-сервисам. ## Установка Перед установкой NGINX Gateway Fabric из панели управления нужно вручную установить CRD Gateway API. В команде укажите версию NGINX Gateway Fabric в параметре ref. Например, для версии `v2.6.3`: ```bash kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v2.6.3" | kubectl apply -f - ``` После установки CRD откройте панель управления кластером, перейдите во вкладку «Дополнения» и выберите NGINX Gateway Fabric. В открывшемся мастере установки можно оставить параметры по умолчанию или включить продвинутую установку и изменить `values`. Для начала работы достаточно настроек по умолчанию. Нажмите «Установить» и дождитесь завершения установки. После этого проверьте, что поды NGINX Gateway Fabric запущены: ```bash kubectl get pods -n nginx-gateway ``` Все поды должны находиться в статусе `Running`. Также можно проверить, что в кластере появились ресурсы Gateway API: ```bash kubectl api-resources | grep gateway.networking.k8s.io ``` При стандартной установке NGINX Gateway Fabric создает `GatewayClass` с именем `nginx`. Проверьте его статус: ```bash kubectl get gatewayclass nginx ``` В колонке `ACCEPTED` должно быть значение `True`. ## Использование Рассмотрим пример, в котором NGINX Gateway Fabric будет принимать HTTP-трафик на одном внешнем IP-адресе и направлять запросы в два разных сервиса: - `http://app.example.com/service1` — в сервис `service1`; - `http://app.example.com/service2` — в сервис `service2`. Для примера создадим отдельный неймспейс: ```bash kubectl create namespace nginx-gateway-example ``` ### Создание ConfigMap Создайте файл `configmap.yaml` с HTML-страницами для двух сервисов: ```shell apiVersion: v1 kind: ConfigMap metadata: name: nginx-pages namespace: nginx-gateway-example data: service1.html: | Service 1

Service 1

service2.html: | Service 2

Service 2

``` Примените манифест: ```bash kubectl apply -f configmap.yaml ``` ### Создание Deployment и Service Создайте файл `service1.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: service1 namespace: nginx-gateway-example spec: replicas: 2 selector: matchLabels: app: service1 template: metadata: labels: app: service1 spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: html mountPath: /usr/share/nginx/html volumes: - name: html configMap: name: nginx-pages items: - key: service1.html path: index.html --- apiVersion: v1 kind: Service metadata: name: service1 namespace: nginx-gateway-example spec: selector: app: service1 ports: - name: http port: 80 targetPort: 80 type: ClusterIP ``` Создайте файл `service2.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: service2 namespace: nginx-gateway-example spec: replicas: 2 selector: matchLabels: app: service2 template: metadata: labels: app: service2 spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: html mountPath: /usr/share/nginx/html volumes: - name: html configMap: name: nginx-pages items: - key: service2.html path: index.html --- apiVersion: v1 kind: Service metadata: name: service2 namespace: nginx-gateway-example spec: selector: app: service2 ports: - name: http port: 80 targetPort: 80 type: ClusterIP ``` Примените манифесты: ```bash kubectl apply -f service1.yaml kubectl apply -f service2.yaml ``` Проверьте, что поды запущены: ```bash kubectl get pods -n nginx-gateway-example ``` ### Создание Gateway Gateway описывает внешний вход в приложение. При стандартной установке NGINX Gateway Fabric обслуживает `Gateway` с `gatewayClassName: nginx`. Создайте файл `gateway.yaml`: ```yaml apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: app-gateway namespace: nginx-gateway-example spec: gatewayClassName: nginx listeners: - name: http hostname: app.example.com protocol: HTTP port: 80 allowedRoutes: namespaces: from: Same ``` Примените манифест: ```bash kubectl apply -f gateway.yaml ``` Когда Gateway будет создан, NGINX Gateway Fabric развернет NGINX data plane и балансировщик нагрузки в неймспейсе `nginx-gateway-example`. Проверить статус можно командой: ```bash kubectl get gateway app-gateway -n nginx-gateway-example ``` Дождитесь, когда в колонке `PROGRAMMED` появится значение `True`, а в колонке `ADDRESS` — внешний IP-адрес. Также можно посмотреть созданные ресурсы: ```bash kubectl get deployments -n nginx-gateway-example kubectl get svc -n nginx-gateway-example ``` NGINX Gateway Fabric создает отдельный NGINX data plane для каждого `Gateway`. Поэтому отдельный манифест `Service` типа `LoadBalancer`, как в классическом сценарии с Ingress-контроллером, не требуется. ### Создание HTTPRoute HTTPRoute задает правила маршрутизации. Создайте файл `httproute.yaml`: ```yaml apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: app-route namespace: nginx-gateway-example spec: parentRefs: - name: app-gateway hostnames: - app.example.com rules: - matches: - path: type: PathPrefix value: /service1 filters: - type: URLRewrite urlRewrite: path: type: ReplacePrefixMatch replacePrefixMatch: / backendRefs: - name: service1 port: 80 - matches: - path: type: PathPrefix value: /service2 filters: - type: URLRewrite urlRewrite: path: type: ReplacePrefixMatch replacePrefixMatch: / backendRefs: - name: service2 port: 80 ``` Примените манифест: ```bash kubectl apply -f httproute.yaml ``` Проверьте, что маршрут принят: ```bash kubectl get httproute app-route -n nginx-gateway-example -o yaml ``` В статусе ресурса должны быть условия: ```bash status: "True" type: Accepted status: "True" type: ResolvedRefs ``` В этом манифесте `HTTPRoute` принимает запросы с доменом `app.example.com` и направляет их в разные сервисы по префиксу пути. Фильтр URLRewrite заменяет префиксы `/service1` и `/service2` на `/`, чтобы NGINX внутри каждого сервиса отдавал свою главную страницу. ### Проверка работы Пропишите IP-адрес балансировщика в DNS-настройках домена `app.example.com` в качестве A-записи. После обновления DNS проверьте доступность сервисов: ```bash curl http://app.example.com/service1 curl http://app.example.com/service2 ``` Если DNS еще не обновился, можно выполнить проверку по IP-адресу, передав заголовок `Host`: ```bash curl -H "Host: app.example.com" http:///service1 curl -H "Host: app.example.com" http:///service2 ``` В ответе должны отображаться страницы `Service 1` и `Service 2`. ### Удаление примера Чтобы удалить ресурсы, созданные в примере, выполните: ```bash kubectl delete namespace nginx-gateway-example ``` Дополнение NGINX Gateway Fabric при этом останется установленным в кластере. Удалить его можно во вкладке «Дополнения» в панели управления кластером. ## Миграция с Nginx Ingress на NGINX Gateway Fabric NGINX Gateway Fabric можно развернуть рядом с Nginx Ingress и переносить маршруты постепенно. Такой подход позволяет сначала проверить ресурсы Gateway API на отдельном внешнем IP-адресе, а затем переключить DNS-записи или трафик на новый `Gateway`. Для автоматической конвертации Ingress-ресурсов можно использовать утилиту [ingress2gateway](https://github.com/kubernetes-sigs/ingress2gateway). Она читает существующие Ingress-ресурсы из кластера или из YAML-файлов и выводит эквивалентные ресурсы Gateway API: `Gateway`, `HTTPRoute` и другие объекты. > [!NOTE] > ingress2gateway помогает подготовить миграцию, но не заменяет ручную проверку. Некоторые аннотации Nginx Ingress могут быть не поддержаны или потребовать ручной настройки после конвертации. ### Требования Перед миграцией подготовьте кластер: - установите NGINX Gateway Fabric; - проверьте, что исходные Ingress-ресурсы работают через Nginx Ingress; - проверьте, что в кластере есть `GatewayClass` с именем `nginx`. Если Nginx Ingress установлен из панели управления Timeweb Cloud, для него используется `IngressClass` с именем `nginx`. Это имя понадобится при запуске ingress2gateway. Проверьте классы: ```bash kubectl get ingressclass kubectl get gatewayclass ``` В выводе должны быть: - `IngressClass` с именем `nginx`; - `GatewayClass` с именем `nginx`. ### Установка ingress2gateway Если на локальной машине установлен Go, установите ingress2gateway командой: ```bash go install github.com/kubernetes-sigs/ingress2gateway@v1.1.0 ``` После установки бинарный файл будет доступен в директории `$(go env GOPATH)/bin`. Убедитесь, что эта директория добавлена в `PATH`. Также можно установить ingress2gateway через Homebrew: ```bash brew install ingress2gateway ``` Или скачать готовый бинарный файл со [страницы релизов проекта](https://github.com/kubernetes-sigs/ingress2gateway/releases). ### Исходный пример В примере ниже миграция выполняется для приложения, которое уже опубликовано через Nginx Ingress. В кластере есть неймспейс `ingress-migration-demo`. В нем находятся: - Ingress migration-source; - Service `service1` и `service2`; - два правила маршрутизации для домена `app.example.com`: - `/service1` направляет трафик в `service1`; - `/service2` направляет трафик в `service2`. Проверьте исходный Ingress: ```bash kubectl get ingress -n ingress-migration-demo ``` В колонке `CLASS` должно быть значение `nginx`. ### Конвертация Ingress-ресурсов Чтобы сконвертировать этот Ingress в ресурсы Gateway API, выполните: ```yaml ingress2gateway print \ --providers=ingress-nginx \ --ingress-nginx-ingress-class=nginx \ --namespace=ingress-migration-demo > gateway-migration.yaml ``` В этой команде: - `print` — режим, в котором ingress2gateway выводит сгенерированные ресурсы в стандартный вывод. За счет перенаправления `>` результат сохраняется в файл `gateway-migration.yaml`. - `--providers=ingress-nginx` — указывает тип исходного Ingress-контроллера. В нашем примере исходные маршруты обслуживает Nginx Ingress. - `--ingress-nginx-ingress-class=nginx` — выбирает только Ingress-ресурсы класса nginx. - `--namespace=ingress-migration-demo` — ограничивает чтение ресурсов неймспейсом `ingress-migration-demo`, где находится исходный Ingress из примера. Откройте файл `gateway-migration.yaml` и проверьте сгенерированные ресурсы перед применением. Проверьте `gatewayClassName` у ресурса `Gateway`. Для NGINX Gateway Fabric при стандартной установке значение должно быть `nginx`: ```yaml spec: gatewayClassName: nginx ``` Также проверьте правила `HTTPRoute`. Некоторые Ingress-аннотации могут быть преобразованы в фильтры или типы совпадений, которые нужно скорректировать вручную. Например, для обычной маршрутизации по префиксу пути используйте `PathPrefix`: ```yaml rules: - matches: - path: type: PathPrefix value: /service1 filters: - type: URLRewrite urlRewrite: path: type: ReplacePrefixMatch replacePrefixMatch: / backendRefs: - name: service1 port: 80 ``` Если в сгенерированном файле есть RegularExpression-маршруты или неподдержанные аннотации, проверьте их совместимость с NGINX Gateway Fabric и замените на поддерживаемые правила Gateway API. ### Применение ресурсов Gateway API После проверки примените файл: ```bash kubectl apply -f gateway-migration.yaml ``` Проверьте, что Gateway создан и получил внешний IP-адрес: ```bash kubectl get gateway -A ``` ### Тестирование перед переключением трафика Пока DNS-записи указывают на старый Nginx Ingress, новый Gateway можно проверить по внешнему IP-адресу с заголовком `Host`: ```bash curl -H "Host: app.example.com" http:/// ``` Где: - `app.example.com` — домен из HTTPRoute; - `` — IP-адрес нового `Gateway`; - `` — путь, который должен обрабатываться маршрутом. Сравните ответы старого `Ingress` и нового `Gateway`. Если все работает корректно, можно изменить DNS-записи на IP нового балансировщика. # Nginx Ingress Source: https://timeweb.cloud/docs/k8s/addons/nginx-ingress Ingress — это ресурс Kubernetes, позволяющий организовать доступ к сервисам внутри кластера через HTTP и HTTPS. Он предоставляет маршрутизацию на основе URL, доменов и других параметров. В этой статье рассмотрим использование Nginx Ingress на примере трех деплойментов Nginx, имитирующих три разных сервиса. Мы также настроим SSL-сертификат для защиты соединения. ## Установка Nginx Ingress Для начала необходимо установить Nginx Ingress в кластере. В панели управления кластером перейдите во вкладку «Дополнения», нажмите на три точки рядом с Nginx Ingress и выберите «Установить». ![Image2](https://content.timeweb.com/assets/83134417-3b7b-47cd-bbe9-af31473436a1.png?width=1025&height=934) После установки проверьте, что Ingress работает корректно. Выполните команду: ```shell kubectl get pods -n ingress-nginx ``` Убедитесь, что все поды находятся в статусе `Running`. ## Настройка деплойментов и сервисов Рассмотрим пример использования Nginx Ingress. Мы развернем три `Deployment` с образами Nginx, каждый будет имитировать отдельный сервис. К каждому `Deployment` мы создадим `Service` с типом `ClusterIP` — это тип сервиса по умолчанию в Kubernetes, который выдаёт внутренний IP-адрес внутри кластера. Такой сервис не доступен извне напрямую, однако он может быть опубликован во внешнюю сеть с помощью Ingress. Для удобства создадим отдельный неймспейс, в котором будут находиться все манифесты: ```shell kubectl create namespace ingress-example ``` Чтобы отличать сервисы друг от друга, создадим `ConfigMap` с тремя разными HTML-страницами. Создайте файл `configmap.yaml` с таким содержанием: ```shell apiVersion: v1 kind: ConfigMap metadata: name: service-config namespace: ingress-example data: service1.html: | Service 1

Welcome to Service 1!

service2.html: | Service 2

Welcome to Service 2!

service3.html: | Service 3

Welcome to Service 3!

``` Теперь опишем деплойменты: **service1-deployment.yaml**: ```yml apiVersion: apps/v1 kind: Deployment metadata: name: service1 namespace: ingress-example spec: replicas: 2 selector: matchLabels: app: service1 template: metadata: labels: app: service1 spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: config-volume mountPath: /usr/share/nginx/html volumes: - name: config-volume configMap: name: service-config items: - key: service1.html path: index.html --- apiVersion: v1 kind: Service metadata: name: service1 namespace: ingress-example spec: selector: app: service1 ports: - protocol: TCP port: 80 targetPort: 80 type: ClusterIP ``` Пояснения к манифесту: 1. **Deployment** - **replicas**: 2 указывает, что будет запущено две реплики подов с Nginx. - В секции **selector** и **template.metadata.labels** задаётся соответствие между подами и тем, как их будет находить сервис. - **volumeMounts** и **volumes** используются, чтобы подмонтировать файл `service1.html` из `ConfigMap` в директорию, откуда Nginx по умолчанию раздает контент. 3. **Service** - **ClusterIP** означает, что сервис будет доступен только внутри кластера по выделенному IP-адресу. Для внешнего доступа мы будем использовать Ingress. Манифесты для `service2` и `service3` аналогичны, отличается только имя сервиса и используемый HTML-файл. **service2-deployment.yaml**: ```yml apiVersion: apps/v1 kind: Deployment metadata: name: service2 namespace: ingress-example spec: replicas: 2 selector: matchLabels: app: service2 template: metadata: labels: app: service2 spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: config-volume mountPath: /usr/share/nginx/html volumes: - name: config-volume configMap: name: service-config items: - key: service2.html path: index.html --- apiVersion: v1 kind: Service metadata: name: service2 namespace: ingress-example spec: selector: app: service2 ports: - protocol: TCP port: 80 targetPort: 80 type: ClusterIP ``` **service3-deployment.yaml**: ```yml apiVersion: apps/v1 kind: Deployment metadata: name: service3 namespace: ingress-example spec: replicas: 2 selector: matchLabels: app: service3 template: metadata: labels: app: service3 spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: config-volume mountPath: /usr/share/nginx/html volumes: - name: config-volume configMap: name: service-config items: - key: service3.html path: index.html --- apiVersion: v1 kind: Service metadata: name: service3 namespace: ingress-example spec: selector: app: service3 ports: - protocol: TCP port: 80 targetPort: 80 type: ClusterIP ``` Применим все манифесты: ```shell kubectl apply -f configmap.yaml kubectl apply -f service1-deployment.yaml kubectl apply -f service2-deployment.yaml kubectl apply -f service3-deployment.yaml ``` Проверим статус подов: ```shell kubectl get pods -n ingress-example ``` Все поды должны иметь статус `Running`. На этом подготовительные работы можно считать завершенными. ## Создание Ingress С помощью Ingress мы укажем, какой трафик (по доменам и путям) перенаправлять на соответствующие сервисы. Создадим манифест `ingress.yaml`: ```yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress namespace: ingress-example annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: ingress1.example.com http: paths: - path: /service1 pathType: Prefix backend: service: name: service1 port: number: 80 - path: /service2 pathType: Prefix backend: service: name: service2 port: number: 80 - host: ingress2.example.com http: paths: - path: / pathType: Prefix backend: service: name: service3 port: number: 80 ``` Пояснения к манифесту: - **rules.host** задает домен, к которому будет привязан Ingress. - **paths** определяет правила маршрутизации: - При обращении к `ingress1.example.com/service1` будет перенаправление на `service1`. - При обращении к `ingress1.example.com/service2` будет перенаправление на `service2`. - При обращении к `ingress2.example.com/` будет перенаправление на `service3`. Применим манифест: ```shell kubectl apply -f ingress.yaml ``` ## Создание LoadBalancer Чтобы обратиться к Nginx Ingress из внешней сети, создадим `Service` типа `LoadBalancer`, который будет отвечать за балансировку нагрузки и предоставит нам внешний IP-адрес. Подготовим для этого манифест `loadbalancer.yaml` следующего содержания: ```yml apiVersion: v1 kind: Service metadata: name: ingress-nginx namespace: ingress-nginx spec: selector: app.kubernetes.io/name: ingress-nginx ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 443 type: LoadBalancer ``` Применим манифест: ```shell kubectl apply -f loadbalancer.yaml ``` Дождитесь, пока балансировщик создастся, и убедитесь, что у него появился внешний IP-адрес: ```shell kubectl get services -n ingress-nginx ``` Внешний IP будет отображен в колонке `EXTERNAL-IP`. Полученный IP-адрес необходимо прописать в DNS-настройках домена в виде А-записей для доменов `ingress1.example.com` и `ingress2.example.com`. После обновления DNS ваши домены будут указывать на этот балансировщик, и вы сможете обращаться к сервисам по внешним URL: - `http://ingress1.example.com/service1` — отобразится заголовок «Welcome to Service 1!». - `http://ingress1.example.com/service2` — отобразится заголовок «Welcome to Service 2!». - `http://ingress2.example.com/` — отобразится заголовок «Welcome to Service 3!». ## Настройка SSL-сертификата Для обеспечения защищенного соединения в Nginx Ingress необходимо добавить существующий SSL-сертификат в виде Kubernetes-секрета, а затем указать этот секрет в манифесте Ingress. > [!NOTE] > Если вы хотите автоматизировать выпуск и продление сертификатов (например, через Let’s Encrypt), рекомендуем использовать инструмент [cert-manager](https://timeweb.cloud/docs/k8s/addons/cert-manager). ### Подготовка файлов сертификата и ключа Сохраните файл ключа `tls.key` и сертификат `tls.crt` локально. Если вы заказывали сертификат в Timeweb Cloud, содержимое ключа и сертификата можно скопировать со страницы управления сертификатом в панели Timeweb Cloud. Убедитесь, что сертификат не просрочен и соответствует доменам, которые вы хотите защитить. ![Image1](https://content.timeweb.com/assets/b5cadaa3-8dae-4e85-8009-d10cf4e75af4.png?width=1035&height=541) ### Создание Kubernetes-секрета Чтобы добавить сертификат в кластер, необходимо закодировать файлы в Base64 и создать манифест секрета. Выполните в терминале команды: ```yml base64 -w 0 ./tls.crt base64 -w 0 ./tls.key ``` Затем создайте файл `tls-secret.yaml` следующего содержания: ```yml apiVersion: v1 kind: Secret metadata: name: ingress-example-tls namespace: ingress-example type: kubernetes.io/tls data: tls.crt: |- tls.key: |- ``` Сохраните файл и примените манифест: ```shell kubectl apply -f tls-secret.yaml ``` Проверьте, что значения ключа и сертификата ненулевые. Для этого выполните: ```shell kubectl describe secret ingress-example-tls -n ingress-example ``` ### Обновление манифеста Ingress Обновите ваш манифест `ingress.yaml`, добавив секцию `tls`, и укажите имя созданного секрета: ```yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress namespace: ingress-example annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: tls: - hosts: - ingress1.example.com - ingress2.example.com secretName: ingress-example-tls rules: - host: ingress1.example.com http: paths: - path: /service1 pathType: Prefix backend: service: name: service1 port: number: 80 - path: /service2 pathType: Prefix backend: service: name: service2 port: number: 80 - host: ingress2.example.com http: paths: - path: / pathType: Prefix backend: service: name: service3 port: number: 80 ``` Примените измененный манифест: ```shell kubectl apply -f ingress.yaml ``` Теперь при обращении к `ingress1.example.com` или `ingress2.example.com` по HTTPS браузер будет использовать сертификат, указанный в секрете `ingress-example-tls`. Таким образом, трафик к вашим сервисам будет защищен. Если у вас несколько сертификатов для разных доменов, создайте `Secret` для каждого из них. Например, для доменов `example.com` и `example.org` создайте два секрета. После этого обновите манифест Ingress, добавив секцию `tls` для каждого домена: ```yml spec: tls: - hosts: - example.com secretName: example-com-tls - hosts: - example.org secretName: example-org-tls ``` После этого каждый домен будет использовать свой сертификат, указанный в соответствующем секрете. # OpenFaaS Kubernetes Source: https://timeweb.cloud/docs/k8s/addons/openfaas OpenFaaS — это платформа с открытым исходным кодом для запуска функций (FaaS) поверх Kubernetes. Она упрощает деплой небольших единиц кода, которые выполняются по запросу или событию. В основе OpenFaaS лежит модель Function as a Service (FaaS), при которой вы пишете функцию и оборачиваете ее в Docker-образ. OpenFaaS отвечает за масштабирование, сетевые вызовы и управление жизненным циклом. Для взаимодействия используется удобный веб-интерфейс и CLI-утилита faas-cli. Функции можно писать на популярных языках — Python, Node.js, Go и других — с помощью готовых шаблонов. Полная документация по OpenFaaS Kubernetes доступна [на официальном сайте](https://docs.openfaas.com/) дополнения. ## Установка плагина Для установки OpenFaaS Kubernetes откройте раздел «Дополнения» в панели управления кластером. Найдите «OpenFaaS Kubernetes» в списке и нажмите на него. ![Scr 20250709 Mlfn](https://content.timeweb.com/assets/8ef2cb18-a5b5-4097-a429-0663b7542e61.png?width=1726&height=1576) В открывшемся окне можно изменить параметры установки. Найдите секцию `ingress` и включите ее — установите `enabled: true`, а также укажите свой домен в параметре `host`. Это упростит доступ к дашборду и позволит использовать `faas-cli`. Если вы включаете `ingress`, можно отключить `exposeServices`, который используется по умолчанию. ![Scr 20250709 Mlof](https://content.timeweb.com/assets/8d82de72-256d-482f-b4f9-9d7507db3044.png?width=1540&height=1552) После указания параметров нажмите кнопку «Установить» и дождитесь завершения установки. Чтобы убедиться, что все работает, проверьте состояние подов в неймспейсе `openfaas-fn`: ```shell kubectl get pods -n openfaas-fn ``` Пример вывода: ```shell NAME READY STATUS RESTARTS AGE alertmanager-57767d864c-hdqdn 1/1 Running 0 19h gateway-5f9c4b5754-ksr6x 2/2 Running 1 (19h ago) 19h nats-6ddf479847-dxr2g 1/1 Running 0 19h prometheus-6cbd946f66-wqdf8 1/1 Running 0 19h queue-worker-57c7479989-bw282 1/1 Running 0 19h ``` Если все поды в статусе Running — установка прошла успешно. ## Установка CLI Для работы с OpenFaaS из консоли потребуется утилита `faas-cli`. С ее помощью можно создавать функции, собирать и отправлять образы, деплоить их в кластер, вызывать функции и просматривать их статус. Утилита доступна для Linux, macOS и Windows. Для ее установки выполните следующие команды: Linux ```shell curl -sSL https://cli.openfaas.com | sh ``` MacOS ```shell curl -sSL https://cli.openfaas.com | sh ``` Или через Homebrew: ```shell brew install faas-cli ``` Windows (PowerShell) ```shell $version = (Invoke-WebRequest "https://api.github.com/repos/openfaas/faas-cli/releases/latest" | ConvertFrom-Json)[0].tag_name (New-Object System.Net.WebClient).DownloadFile("https://github.com/openfaas/faas-cli/releases/download/$version/faas-cli.exe", "faas-cli.exe") ``` После установки убедитесь, что все работает корректно: ```shell faas-cli version ``` ## Пример использования Рассмотрим пример использования OpenFaaS. Развернем плагин, привяжем домен для удобного доступа к дашборду и обращения к OpenFaaS через CLI, установим функцию из встроенного стора и создадим собственную функцию с деплоем через Docker Hub. Предварительные требования: - Домен или поддомен, по которому будет доступен OpenFaaS; - установленное дополнение Nginx Ingress; - аккаунт в Docker Hub (для кастомных функций); - установленная утилита faas-cli; - установленный Docker. Перейдите к установке плагина OpenFaaS в панели управления. В разделе «Конфигурация» найдите секцию `ingress` и включите ее, изменив `enabled: false` на `enabled: true`. Также задайте значение `host`, указав домен, по которому будет доступен дашборд. Запустите установку плагина. Теперь необходимо создать балансировщик нагрузки. Создайте манифест `loadbalancer.yaml`: ```yaml apiVersion: v1 kind: Service metadata: name: ingress-nginx-lb namespace: ingress-nginx spec: selector: app.kubernetes.io/name: ingress-nginx type: LoadBalancer ports: - name: http port: 80 targetPort: 80 appProtocol: k8s.timeweb.cloud/proto-http - name: https port: 443 targetPort: 443 appProtocol: k8s.timeweb.cloud/proto-https ``` Примените манифест: ```shell kubectl apply -f loadbalancer.yaml ``` После создания балансировщика, привяжите A-запись к домену. Если домен размещен на наших NS-серверах — просто выберите созданный балансировщик, при настройке А-записи домена. Если используется сторонний DNS, получите IP-адрес балансировщика и добавьте запись вручную: ```shell kubectl get svc --all-namespaces --field-selector spec.type=LoadBalancer ``` IP будет в колонке `EXTERNAL-IP`. Перейдите по домену, указанному при установке. Откроется окно базовой авторизации. - Логин: `admin` - Пароль: можно получить командой: ```shell kubectl -n openfaas-fn get secret basic-auth -o jsonpath="{.data.basic-auth-password}" | base64 --decode ``` После входа откроется главный экран дашборда. ![Scr 20250709 Nvkl](https://content.timeweb.com/assets/e036c968-493b-4791-ab5a-c7966782647e.png?width=2894&height=848) _Главный экран интерфейса [OpenFaaS](https://www.openfaas.com/)_ Перейдем к использованию функций. Установим функцию из встроенного стора OpenFaaS. Сначала авторизуйтесь через CLI. Это позволит выполнять команды, связанные с управлением функциями: ```shell faas-cli login \ --gateway http://<домен> \ --username admin \ --password <пароль> ``` Где: - домен — адрес, указанный при установке OpenFaaS; - admin — имя пользователя по умолчанию; - пароль — пароль можно получить при выполнении команды: ```shell kubectl -n openfaas-fn get secret basic-auth -o jsonpath="{.data.basic-auth-password}" | base64 --decode ``` Теперь установим функцию `figlet`, которая преобразует текст в ASCII-арт: ```shell faas-cli store deploy figlet \ --gateway http://<домен> ``` Убедитесь, что функция установилась: ```shell faas-cli list \ --gateway http://<домен> ``` В списке появится функция `figlet` со статусом `Ready`. Вызовите функцию с передачей строки на вход: ```shell echo "TimewebCloud" | faas-cli invoke figlet \ --gateway http://<домен> ``` В ответ вы получите ASCII-арт с переданным текстом. ![Scr 20250709 Oezl](https://content.timeweb.com/assets/c1c3cd50-e3ef-43fc-856b-9bf97ebe88d3.png?width=1198&height=320) Теперь рассмотрим деплой кастомной функции. Выберите шаблон: ```shell faas-cli template store list ``` Создайте новую функцию на базе нужного шаблона, например `python3-http`: ```shell faas-cli new hello-k8s --lang python3-http ``` Будут созданы: - `hello-k8s/handler.py` — код функции; - `stack.yaml` — манифест функции. Перед сборкой отредактируйте файл `stack.yaml`, указав путь до образа в Docker Hub. Например: ```yaml functions: hello-k8s: lang: python3-http handler: ./hello-k8s image: dockerhubuser/hello-k8s:latest ``` В поле image укажите имя пользователя Docker Hub и название образа. Обратите внимание, что в OpenFaaS Community Edition разрешена работа только с публичными образами. Соберите образ: ```shell faas-cli build -f stack.yaml ``` После сборки образа опубликуйте его в Docker Hub: ```shell faas-cli push -f stack.yaml ``` И наконец, задеплойте функцию в кластер: ```shell faas-cli deploy -f stack.yaml \ --gateway http://<домен> ``` После выполнения команды появится ссылка, по которой доступна функция. ![Scr 20250709 Ohdk](https://content.timeweb.com/assets/67ed7fe8-9a22-4515-aeb8-0e9f49c8a07e.png?width=1550&height=282) Перейдите по ссылке — вы увидите результат выполнения — сообщение «Hello from OpenFaaS!». # TWC Alert Bot Source: https://timeweb.cloud/docs/k8s/addons/twc-alert-bot TWC Alert Bot — аддон для Kubernetes, который отправляет уведомления о событиях в кластере в Telegram, Discord или Slack. Он отслеживает рестарты подов, ошибки `liveness`\- и `readiness`\-проб, недоступность нод и другие потенциально критичные события. Дополнение поможет быстро реагировать на проблемы и поддерживать стабильность инфраструктуры. ## Установка Перейдите во вкладку «Дополнения» в панели управления кластером и нажмите на карточку аддона «TWC Alert Bot». ![Image 20250917162010743](https://content.timeweb.com/assets/85434aaa-4d3a-42d5-b3ce-d28464264a7f.png?width=1998&height=1434) Обязательный параметр для работы уведомлений — `clusterName`. Это произвольное имя кластера, которым будут подписываться уведомления. По умолчанию используется имя кластера. Параметры для подключения Telegram, Slack или Discord описаны в [разделе о настройке уведомлений](https://timeweb.cloud/docs/k8s/addons/twc-alert-bot#nastrojka-uvedomlenij). Можно указать, какие неймспейсы отслеживать, с помощью параметра: ```yaml namespaceToWatch: "" ``` Если нужно получать уведомления только из конкретных неймспейсов — укажите их через запятую: ```yaml namespaceToWatch: "default,production" ``` Также можно исключить из наблюдения определенные поды. Для этого используется параметр `exceptions`. Можно указывать как точные имена подов, так и части имен. Если имя пода совпадает с одной из строк — алерт по нему не придет. ```yaml exceptions: - "test-" - "debug-" - "-temp-" - "my-pod" ``` Сами уведомления настраиваются в секции `alerts:` в манифесте. Доступные варианты: | **Параметр** | **Описание** | | --- | --- | | `podRestarts` | Алерты по рестартам контейнеров в подах | | `podAddDelete` | Алерты при создании и удалении подов | | `workloadAddDelete` | Алерты при создании и удалении деплойментов | | `serviceAddDelete` | Алерты при создании и удалении сервисов | | `podPendingError` | Алерты по зависшим или ошибочным подам (`Pending`, `Unknown`) | | `probesFailures` | Алерты по сбоям `liveness`\- и `readiness`\-проб | | `nodeNotReady` | Алерты при переходе ноды в состояние `NotReady` | | `nodeResources` | Алерты по превышению порогов CPU/Memory на нодах | | `warnEvents` | Алерты по прочим Warning-событиям (например, `FailedScheduling`) | После настройки нажмите «Установить». ![Image 20250917162500189](https://content.timeweb.com/assets/1bc2b83b-e468-41c2-af2c-8dc45abdf167.png?width=2026&height=1404) Проверьте, что установка завершена корректно. Для этого выполните команду ```shell kubectl get all -n twc-alert-bot ``` Вы увидите примерно такой вывод: ```bash NAME READY STATUS RESTARTS AGE pod/twc-alert-bot-7955f9c94b-j57w6 1/1 Running 0 19s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/twc-alert-bot 1/1 1 1 19s NAME DESIRED CURRENT READY AGE replicaset.apps/twc-alert-bot-7955f9c94b 1 1 1 19s ``` ## Настройка уведомлений Чтобы получать уведомления от бота, подключите один или несколько мессенджеров. Telegram Чтобы бот отправлял уведомления в Telegram, укажите в конфигурации: ```shell telegramEnabled: true ``` Обязательные параметры для работы уведомлений: - `telegramBotToken` — токен, полученный с помощью бота [@BotFather](https://t.me/BotFather). - `telegramChatId` — ID чата или канала, в который будут отправляться уведомления. - `clusterName` — произвольное имя кластера, которым будут подписываться уведомления. ### Получение токена Токен необходим для управления ботом. Для создания бота перейдите к [@BotFather](https://t.me/BotFather). Создайте нового бота, отправив команду `/newbot`. Затем укажите имя и юзернейм бота. После этого [@BotFather](https://t.me/BotFather) пришлет токен нового бота. ![Image 20250916183700806](https://content.timeweb.com/assets/d54fe4e4-6f7c-486d-a374-10dd3fef79b9.png?width=1630&height=1228) _Получение токена в интерфейсе [Telegram](https://telegram.org/)_ Этот токен необходимо указать в конфигурации дополнения: ```bash telegramBotToken: "8119738188:AAnjknsd788asd0kl2309s3pipa11239" ``` Добавьте созданного бота в группу или канал с правом на отправку сообщений. ### Получение ID чата Бот может взаимодействовать с пользователями в канале, группе или личном чате. Чтобы получить нужный `chat_id`, выполните одно из следующих действий: - Добавьте бота в группу - Добавьте бота в канал в качестве администратора - Откройте личный чат с ботом После этого отправьте любое сообщение в соответствующий чат (группу, канал или личный). Затем откройте в браузере ссылку: ```shell https://api.telegram.org/bot<ТОКЕН_БОТА>/getUpdates ``` Вы увидите JSON с последними сообщениями, полученными ботом. Найдите блок `chat.id` — он содержит нужный идентификатор: - Для групп и каналов — значение будет отрицательным. - Для личных чатов — положительным. ![Scr 20250918 Kbzc](https://content.timeweb.com/assets/2ae29f93-d3b7-4c39-bea8-efe86487b697.png?width=1868&height=1466) _Просмотр JSON-файла на странице [api.telegram.org](https://api.telegram.org)_ В конфигурации дополнения укажите полученный ID: ```shell telegramChatId: "-1001236503122" ``` По умолчанию также включен параметр: ```shell telegramSendTestMessage: true ``` Благодаря этому параметру бот сразу после установки попытается отправить тестовое сообщение. Если все подключено корректно, вы его увидите. Slack Создайте App. Перейдите на [страницу создания App](https://api.slack.com/apps?new_app=1), нажмите кнопку «Create an App» и выберите пункт «From scratch». Укажите имя App и выберите воркспейс для подключения. Затем нажмите «Create App». ![Image 20250917114319240](https://content.timeweb.com/assets/e99e3cf4-f46b-4946-a603-a177e1261682.png?width=1172&height=1108) _Создание App в [Slack](https://slack.com/)_ Сразу после создания вы будете перенаправлены на страницу настроек App. Перейдите в раздел «Incoming Webhooks», включите вебхуки и создайте новый, нажав кнопку «Add New Webhook». ![Image 20250917114613683](https://content.timeweb.com/assets/d04b378c-600a-483e-a834-edb2b9cacad4.png?width=1874&height=1656) _Страница настроек App в [Slack](https://slack.com/)_ В открывшемся окне выберите канал, в который приложение сможет отправлять сообщения. Затем нажмите «Allow». ![Image 20250917114645794](https://content.timeweb.com/assets/4295db8c-2c0c-433d-b7cc-afaeae1ea7a8.png?width=1164&height=1014) _Выбор канала в [Slack](https://slack.com/)_ После этого вы снова окажетесь на странице настроек, где теперь будет отображаться URL вебхука. Скопируйте его. ![Image 20250917120344567](https://content.timeweb.com/assets/6ae606cc-f017-4802-b642-43460a5ab5e2.png?width=1834&height=1340) _Страница настроек App в [Slack](https://slack.com/)_ Вернитесь к конфигурации дополнения и найдите фрагмент: ```yaml webhooks: [] # - type: slack # url: "https://hooks.slack.com/services/XXX/YYY/ZZZ" # - type: discord # url: https://discord.com/api/webhooks/... ``` Удалите квадратные скобки и раскомментируйте строки, связанные со Slack. В поле url укажите URL вебхука, который вы получили ранее. В итоге конфигурация должна выглядеть так: ```yaml webhooks: - type: slack url: "https://hooks.slack.com/services/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Jz" # - type: discord # url: "https://discord.com/api/webhooks/..." ``` Discord Создайте вебхук. Для этого перейдите в настройки канала, в который будут отправляться уведомления. ![Image 20250917142215743](https://content.timeweb.com/assets/a0d706b4-6daf-4a65-86ee-161e79077b44.png?width=2006&height=722) _Настройки канала в интерфейсе [Discord](https://discord.com/)_ В открывшемся окне настроек перейдите в раздел «Интеграции» и нажмите кнопку «Создать вебхук». ![Image 20250917142629659](https://content.timeweb.com/assets/61c51793-95fa-4dc0-8e21-55e3fc231f59.png?width=2120&height=880) _Раздел «Интеграции» в интерфейсе [Discord](https://discord.com/)_ Затем в появившемся окне снова нажмите «Создать вебхук». После этого разверните его настройки, нажав на созданный вебхук. ![Image 20250917142745076](https://content.timeweb.com/assets/a30f52f9-aa63-4457-af41-7e9b394eac06.png?width=2104&height=1182) _Раздел «Интеграции» → «Вебхуки» в интерфейсе [Discord](https://discord.com/)_ Скопируйте URL вебхука — он понадобится для настройки интеграции. Вернитесь к конфигурации дополнения и найдите фрагмент: ```yaml webhooks: [] # - type: slack # url: "https://hooks.slack.com/services/XXX/YYY/ZZZ" # - type: discord # url: https://discord.com/api/webhooks/... ``` Удалите квадратные скобки и раскомментируйте строки, связанные с Discord. В поле `url` укажите скопированный ранее вебхук. Конфигурация должна выглядеть так: ```yaml webhooks: # - type: slack # url: "https://hooks.slack.com/services/XXX/YYY/ZZZ" - type: discord url: "https://discord.com/api/webhooks/14178357700512334/Z97wSlcrpipanjsS5hsbonushUqD5bSg_WcSptOmckvOj0pBslEZrm8" ``` На этом настройка завершена. # TWC Karpenter Source: https://timeweb.cloud/docs/k8s/addons/karpenter Karpenter — это контроллер для Kubernetes, который автоматически создает и удаляет воркер-ноды в зависимости от нагрузки в кластере. Он похож на встроенный [механизм автомасштабирования нод](https://timeweb.cloud/docs/k8s/kubernetes-autoscaling/kubernetes-autoscaler), но работает более гибко: анализирует поды в статусе Pending, подбирает подходящую конфигурацию и создает ноду под текущую нагрузку. При снижении нагрузки неиспользуемые ноды автоматически удаляются. При увеличении нагрузки в кластере Karpenter: - отслеживает поды, которые не удалось разместить; - анализирует их требования и подбирает подходящую конфигурацию ноды; - создает новую ноду через API и размещает на ней поды. При этом Karpenter не использует заранее заданные размеры групп нод, а подбирает конфигурацию под текущую рабочую нагрузку. Это позволяет точнее выбирать тип инстанса и эффективнее использовать ресурсы. При снижении нагрузки он анализирует использование нод и может: - удалять неиспользуемые ноды; - консолидировать нагрузку, перенося поды на меньшее количество узлов; - отключать избыточные или менее эффективные по стоимости ноды. По сравнению с Cluster Autoscaler, Karpenter: - быстрее реагирует на изменение нагрузки; - подбирает конфигурацию ноды под конкретную рабочую нагрузку; - поддерживает консолидацию и оптимизацию ресурсов; - позволяет снизить затраты за счет более точного подбора конфигурации; - тесно интегрируется с облачным провайдером и использует его API для управления нодами. ## Установка > [!NOTE] > Для установки в кластере должна быть хотя бы одна воркер-нода с конфигурацией не менее 2 vCPU и 4 ГБ RAM. Перейдите в раздел «Дополнения» в панели управления кластером, найдите «TWC Karpenter» и откройте карточку аддона. ![Scr 20260408 Oszq](https://content.timeweb.com/assets/e5cba43d-8cad-437a-9a08-2f40e8da2631.png?width=2108&height=1666) Нажмите кнопку «Установить» и дождитесь завершения установки. Проверить состояние можно командой: ```bash kubectl get pods -n karpenter ``` Пример вывода: ```bash NAME READY STATUS RESTARTS AGE karpenter-provider-timeweb-cloud-dc96f8664-dbcb6 1/1 Running 0 3d21h ``` Если под находится в статусе `Running`, установка прошла успешно. ## Использование Перед использованием необходимо создать группы нод, которые сможет использовать Karpenter. Аддон не создает группы нод автоматически. Создайте одну или несколько групп с нужными конфигурациями, после чего Karpenter сможет использовать их для масштабирования. При создании группы отключите автомасштабирование и автохилинг. Karpenter самостоятельно управляет количеством нод и их состоянием, поэтому эти механизмы должны быть отключены. ### NodeClass Для настройки дополнения сначала создайте манифест `nodeclass.yaml`. Ресурс `NodeClass` описывает, какую группу нод использовать и какие параметры применять к создаваемым узлам. Минимальный пример `nodeclass.yaml`: ```yaml apiVersion: karpenter.k8s.timeweb.cloud/v1alpha1 kind: NodeClass metadata: name: default spec: labels: environment: production managed-by: karpenter ``` Для более гибкой настройки можно указать дополнительные параметры. Расширенный пример `nodeclass.yaml`: ```yaml apiVersion: karpenter.k8s.timeweb.cloud/v1alpha1 kind: NodeClass metadata: name: default spec: nodeGroupID: 12345 labels: environment: production managed-by: karpenter maxCapacityPerGroup: 10 ``` В этом манифесте: - `nodeGroupID` задает конкретную группу нод, в которой будут создаваться узлы; - `labels` позволяет назначить дополнительные метки создаваемым нодам; - `maxCapacityPerGroup` ограничивает максимальное количество нод в группе. Узнать `nodeGroupID` можно в панели управления кластером. Перейдите в раздел «Ресурсы», нажмите на три точки рядом с нужной группой и выберите «Редактировать группу». Откроется страница с URL вида: ```shell https://timeweb.cloud/my/kubernetes///edit ``` Значение `` в этом URL и есть идентификатор группы нод. Примените манифест: ```bash kubectl apply -f nodeclass.yaml ``` ### NodePool После создания `NodeClass` необходимо настроить `NodePool`. Этот ресурс определяет требования к нодам, которые будет создавать Karpenter. Здесь задаются параметры, по которым подбирается подходящая конфигурация: тип инстанса, зона, архитектура и другие ограничения. Создайте файл `nodepool.yaml` со следующим содержимым: ```yaml apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: # Шаблон для новых нод template: spec: nodeClassRef: group: karpenter.k8s.timeweb.cloud kind: NodeClass name: default # Требования к нодам requirements: # Архитектура - key: kubernetes.io/arch operator: In values: ["amd64"] # Операционная система - key: kubernetes.io/os operator: In values: ["linux"] # Instance type — типы которые могут использоваться # Формат: nvme-{cpu}cpu-{ram}ram или highcpu-{cpu}cpu-{ram}ram или dedicatedcpu-{cpu}cpu-{ram}ram или gpu-{cpu}cpu-{ram}ram - key: node.kubernetes.io/instance-type operator: In values: ["nvme-1cpu-2ram", "nvme-2cpu-2ram", "nvme-2cpu-4ram", "nvme-4cpu-8ram", "dedicatedcpu-1cpu-4ram", "dedicatedcpu-2cpu-8ram", "dedicatedcpu-3cpu-12ram", "dedicatedcpu-4cpu-16ram"] - key: karpenter.sh/capacity-type operator: In values: ["on-demand"] # Зона доступности - key: topology.kubernetes.io/zone operator: In values: ["spb-3"] # Ограничения на ресурсы для всех нод в пуле limits: cpu: "1000" # Максимум 1000 CPU по всем узлам memory: 1000Gi # Максимум 1000Gi памяти по всем узлам # Политики disruption (consolidationPolicy: WhenEmpty или WhenEmptyOrUnderutilized) disruption: consolidationPolicy: WhenEmptyOrUnderutilized consolidateAfter: 5m ``` В этом манифесте: - `nodeClassRef` указывает, какой `NodeClass` использовать для создания нод; - `requirements` в блоке задаются ограничения на параметры нод; - `node.kubernetes.io/instance-type` определяет допустимые конфигурации воркеров; - `kubernetes.io/arch` задает архитектуру нод (поддерживается только `amd64`); - `kubernetes.io/os` задает операционную систему (поддерживается только `linux`); - `topology.kubernetes.io/zone` задает зону доступности (поддерживается только `spb-3`); - `limits` ограничивает суммарные ресурсы всех нод; - `disruption` управляет удалением неиспользуемых нод. Обратите внимание, что значения в `requirements` должны соответствовать параметрам доступных групп нод. Например, если у вас создано несколько групп нод, укажите в `instance-type` только те конфигурации, которые используются в этих группах. Примените манифест: ```bash kubectl apply -f nodepool.yaml ``` После применения манифестов убедитесь, что ресурсы созданы: ```bash kubectl get nodeclass kubectl get nodepool ``` Пример вывода: ```shell NAME READY AGE default True 3d22h NAME NODECLASS NODES READY AGE default default 1 True 3d22h ``` ### Пример использования Создадим `deployment` с запросами ресурсов. Создайте файл `inflate.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: inflate spec: replicas: 1 selector: matchLabels: app: inflate template: metadata: labels: app: inflate spec: containers: - name: inflate image: public.ecr.aws/eks-distro/kubernetes/pause:3.7 resources: requests: cpu: "250m" memory: "256Mi" ``` Примените манифест: ```bash kubectl apply -f inflate.yaml ``` Увеличьте количество подов: ```bash kubectl scale deployment inflate --replicas=15 ``` Если ресурсов текущих нод недостаточно, часть подов перейдет в статус `Pending`. После этого Karpenter создаст новую ноду, и поды начнут создаваться. Проверить процесс можно командами: ```bash kubectl get pods kubectl get nodes ``` При появлении новых нод в списке при выполнении `kubectl get nodes` можно считать, что Karpenter настроен корректно и работает. # Traefik Source: https://timeweb.cloud/docs/k8s/addons/traefik Traefik — это ингресс контроллер и реверс прокси для работы в облачных средах и Kubernetes. Он автоматически обнаруживает сервисы, обеспечивает SSL/TLS-терминацию и расширенные возможности маршрутизации. Использование Traefik в Kubernetes позволяет гибко управлять маршрутизацией трафика к сервисам внутри кластера. ## Установка 1. Перейдите во вкладку «Дополнения» в панели управления кластером. 2. Найдите Traefik и нажмите на него. ![Image2](https://content.timeweb.com/assets/d841405b-2287-4ae5-8a83-815501fb6bd9.png?width=999&height=861) 3. Откроется мастер установки. Вы можете загрузить собственный `values.yaml` для кастомизации установки или оставить настройки по умолчанию. Запустите установку, нажав на кнопку «Установить». ![Image1](https://content.timeweb.com/assets/add88e43-c082-40d6-af2f-6f9c6e32ade0.png?width=1002&height=789) 4. Дождитесь завершения установки. После этого убедитесь, что все поды в неймспейсе `traefik` запущены и находятся в статусе «Running»: ```shell kubectl get pods -n traefik ``` ## Использование По умолчанию в установленной конфигурации Traefik использует четыре `entryPoints` (входные точки): - :8000/tcp — HTTP (`web`) - :8443/tcp — HTTPS (`websecure`) - :8080/tcp — API Dashboard (`traefik`) - :9100/tcp — Метрики Prometheus (`metrics`) Для работы с Traefik необходимо создать `Service`, который будет маршрутизировать трафик к вашему приложению: ```yml apiVersion: v1 kind: Service metadata: name: example-service namespace: default spec: selector: app: example-app ports: - protocol: TCP port: 80 targetPort: 80 ``` Этот манифест создает сервис `example-service` в пространстве имен `default`, который: - Маршрутизирует HTTP-трафик (порт `80`). - Направляет его на поды, имеющие метку `app: example-app`. - Передает запросы на `targetPort: 80` внутри подов. Теперь можно настроить маршрутизацию через Traefik с помощью `IngressRoute`: ```yml apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: example-service-route namespace: default spec: entryPoints: - web routes: - match: Host(`service.example.com`) kind: Rule services: - name: example-service port: 80 ``` В этом манифесте: - `entryPoints: web` — указывает, что маршрутизация происходит через HTTP (`8000/tcp`). - `match: Host(‘service.example.com’)` — задает правило маршрутизации по доменному имени. - Запросы направляются на сервис `example-service` на порт `80`. ## Пример использования Рассмотрим использование Traefik на примере. Создадим два деплоймента Nginx, которые будут работать на двух разных доменах — service1.example.com и service2.example.com. Также настроим балансировщик нагрузки и маршрутизацию через Traefik. В завершение настроим SSL-сертификаты средствами Traefik. ### Создание ConfigMap Сначала создадим файл `configmap-nginx.yaml`, который определит HTML-страницы для каждого сервиса: ```yml apiVersion: v1 kind: ConfigMap metadata: name: nginx-pages namespace: default data: index1.html: | Service 1

Service 1

index2.html: | Service 2

Service 2

``` ### Создание Deployment для Nginx Манифест `service1-nginx.yaml` описывает деплоймент для первого сервиса: ```yml apiVersion: apps/v1 kind: Deployment metadata: name: service1 namespace: default labels: app: service1 spec: replicas: 2 selector: matchLabels: app: service1 template: metadata: labels: app: service1 spec: containers: - name: nginx image: nginx volumeMounts: - name: html-volume mountPath: /usr/share/nginx/html ports: - containerPort: 80 volumes: - name: html-volume configMap: name: nginx-pages items: - key: index1.html path: index.html ``` Манифест `service2-nginx.yaml` описывает деплоймент для второго сервиса: ```yml apiVersion: apps/v1 kind: Deployment metadata: name: service2 namespace: default labels: app: service2 spec: replicas: 2 selector: matchLabels: app: service2 template: metadata: labels: app: service2 spec: containers: - name: nginx image: nginx volumeMounts: - name: html-volume mountPath: /usr/share/nginx/html ports: - containerPort: 80 volumes: - name: html-volume configMap: name: nginx-pages items: - key: index2.html path: index.html ``` ### Создание Service Определим сервисы, к которым Traefik будет направляться трафик. Манифест `service1-service.yaml`: ```yml apiVersion: v1 kind: Service metadata: name: service1 namespace: default spec: selector: app: service1 ports: - protocol: TCP port: 80 targetPort: 80 ``` Этот манифест создает сервис `service1`, который будет принимать HTTP-запросы на порт `80` и перенаправлять их на поды, имеющие метку `app: service1`. Манифест `service2-service.yaml`: ```yml apiVersion: v1 kind: Service metadata: name: service2 namespace: default spec: selector: app: service2 ports: - protocol: TCP port: 80 targetPort: 80 ``` ### Создание маршрутов в Traefik В манифесте `service1-ingressroute.yaml` описывается маршрут для первого сервиса: ```yml apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: service1-route namespace: default spec: entryPoints: - web routes: - match: Host(`service1.example.com`) kind: Rule services: - name: service1 port: 80 ``` Этот манифест определяет `IngressRoute` для `service1.example.com`. Разберем его компоненты: - `entryPoints: web` — указывает, что маршрут будет доступен через HTTP (порт `80`, указанный в балансировщике Traefik). - `match: Host(‘service1.example.com’)` — определяет, что данный маршрут будет срабатывать при обращении к домену `service1.example.com`. - `name: service1` — маршрут передает трафик в сервис `service1`. - `port: 80` — передача происходит на порт `80` внутри Kubernetes-сервиса `service1`. Файл `service2-ingressroute.yaml` описывает маршрут для второго сервиса: ```yml apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: service2-route namespace: default spec: entryPoints: - web routes: - match: Host(`service2.example.com`) kind: Rule services: - name: service2 port: 80 ``` ### Настройка балансировщика нагрузки Опишем балансировщик для Traefik в `traefik-loadbalancer.yaml`: ```yml apiVersion: v1 kind: Service metadata: name: traefik namespace: traefik spec: type: LoadBalancer selector: app.kubernetes.io/name: traefik ports: - name: web port: 80 targetPort: 8000 - name: websecure port: 443 targetPort: 8443 ``` ### Применение конфигурации Применяем все манифесты: ```shell kubectl apply -f ./ ``` После завершения создания балансировщика указываем его IP-адрес в качестве A-записей для доменов. Теперь можно обращаться к сервисам: - `http://service1.example.com` - `http://service2.example.com` Таким образом, мы настроили два сервиса в Kubernetes с использованием Traefik, обеспечили маршрутизацию и балансировку нагрузки. ## Настройка SSL При использовании Traefik можно получать SSL-сертификаты двумя способами: - встроенными средствами Traefik; - с использованием [cert-manager](https://timeweb.cloud/docs/k8s/addons/cert-manager). Выбор метода зависит от конфигурации кластера. Если используются другие Ingress-контроллеры, рекомендуется cert-manager для централизованного управления сертификатами. Если же в кластере используется только Traefik, можно воспользоваться встроенной функцией получения сертификатов. ### Обновление конфигурации Traefik Для включения поддержки Let's Encrypt необходимо изменить конфигурацию Traefik: 1. Перейдите в панель управления кластером → «Дополнения» → выберите Traefik. 2. Включите режим продвинутой установки. 3. Приведите конфигурацию к виду: ```yml image: registry: dockerhub.timeweb.cloud deployment: kind: Deployment updateStrategy: rollingUpdate: maxUnavailable: 1 maxSurge: 0 additionalArguments: - "--certificatesresolvers.le.acme.email=admin@example.com" - "--certificatesresolvers.le.acme.storage=/data/acme.json" - "--certificatesresolvers.le.acme.tlschallenge=true" ``` **Что изменилось**: - По умолчанию, Traefik устанавливается как `DaemonSet`. В этом режиме сертификаты средствами Traefik получить невозможно. Поэтому тип развёртывания меняется на `Deployment`. - Добавлен сегмент `additionalArguments`. В `--certificatesresolvers.le.acme.email` укажите свою почту для регистрации в Let's Encrypt. ![Image3](https://content.timeweb.com/assets/e008b3c5-d119-44ca-9865-2265b79f7daf.png?width=996&height=873) 4. Сохраните изменения и дождитесь завершения обновления. ### Проверка конфигурации После обновления убедитесь, что конфигурация применена корректно: ```shell kubectl get pod -n traefik ``` Затем проверьте наличие параметров ACME: ```shell kubectl get pod имя_пода -n traefik -o yaml | grep acme ``` Вывод должен содержать строки: ```shell - --certificatesresolvers.le.acme.email=admin@example.com - --certificatesresolvers.le.acme.storage=/data/acme.json - --certificatesresolvers.le.acme.tlschallenge=true ``` ### Автоматический редирект с HTTP на HTTPS Создадим `middleware` для автоматического редиректа с HTTP на HTTPS. Файл `redirect-https.yaml`: ```yml apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: redirect-to-https namespace: default spec: redirectScheme: scheme: https permanent: true ``` Применим манифест: ```shell kubectl apply -f redirect-https.yaml ``` ### Обновление IngressRoute Обновим `IngressRoute`, добавив `middleware` для редиректа с HTTP на HTTPS. Манифест `service1-ingressroute.yaml`: ```yml apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: service1-route namespace: default spec: entryPoints: - web routes: - match: Host(`service1.example.com`) kind: Rule middlewares: - name: redirect-to-https services: - name: service1 port: 80 ``` Манифест `service2-ingressroute.yaml`: ```yml apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: service2-route namespace: default spec: entryPoints: - web routes: - match: Host(`service2.example.com`) kind: Rule middlewares: - name: redirect-to-https services: - name: service2 port: 80 ``` Теперь в манифестах маршрутизации `service1-ingressroute.yaml` и `service2-ingressroute.yaml` добавляется middleware `redirect-to-https`, которая автоматически перенаправляет HTTP-запросы на HTTPS. Обновляем манифесты: ```shell kubectl apply -f service1-ingressroute.yaml kubectl apply -f service2-ingressroute.yaml ``` ### Настройка HTTPS IngressRoute Теперь нам необходимо создать отдельные `IngressRoute` для HTTPS. Это необходимо, потому что стандартные HTTP-маршруты не обрабатывают TLS, и для работы HTTPS необходимо задать `certResolver`, который будет использовать Let's Encrypt для автоматического получения сертификатов. В новых `IngressRoute` указываются `entryPoints: websecure` и параметр `tls`, который активирует поддержку шифрования. Манифест `service1-ingressroute-https.yaml`: ```yml apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: service1-route-https namespace: default spec: entryPoints: - websecure routes: - match: Host(`service1.example.com`) kind: Rule services: - name: service1 port: 80 tls: certResolver: le ``` Манифест `service2-ingressroute-https.yaml`: ```yml apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: service2-route-https namespace: default spec: entryPoints: - websecure routes: - match: Host(`service2.example.com`) kind: Rule services: - name: service2 port: 80 tls: certResolver: le ``` Применяем манифесты для новых роутов: ```shell kubectl apply -f service1-ingressroute-https.yaml kubectl apply -f service2-ingressroute-https.yaml ``` ### Проверка выпуска сертификатов Проверить, что сертификаты успешно выпущены, можно с помощью команды: ```shell kubectl logs -n traefik -l app.kubernetes.io/name=traefik | grep acme ``` Теперь доступ к сервисам осуществляется через HTTPS: - `https://service1.example.com` - `https://service2.example.com` Таким образом, мы настроили автоматическое получение SSL-сертификатов с помощью Let's Encrypt в Traefik и обеспечили безопасное подключение к сервисам. ## Настройка дашборда Traefik предоставляет веб-интерфейс, который позволяет отслеживать состояние маршрутов, сервисов, middleware и других ресурсов, управляемых инстансом Traefik. Дашборд помогает диагностировать проблемы, анализировать маршрутизацию трафика и контролировать конфигурацию. По умолчанию дашборд Traefik доступен без авторизации, что создает угрозу безопасности, так как любому пользователю будет доступна информация о запущенных сервисах. Чтобы защитить доступ, настроим базовую авторизацию с помощью middleware. 1. Получим хэш желаемого пароля: ```shell mkpasswd -m bcrypt "password" ``` 2. Данные для авторизации мы сохраним в секрете Kubernetes, поэтому их нужно закодировать в base64: ```shell echo -n 'логин:полученный_ранее_хэш' | base64 ``` 3. Теперь опишем секрет в манифесте `dashboard-secret.yaml`: ```yml apiVersion: v1 kind: Secret metadata: name: dashboard-auth-secret namespace: traefik type: Opaque data: users: | логин:пароль_закодированный_в_base64 ``` 4. Применим манифест: ```shell kubectl apply -f dashboard-secret.yaml ``` 5. Теперь опишем middleware в файле `dashboard-auth.yaml`: ```yml apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: dashboard-auth namespace: traefik spec: basicAuth: secret: dashboard-auth-secret ``` 6. Применяем манифест: ```shell kubectl apply -f dashboard-auth.yaml ``` 7. Наконец, опишем `IngressRoute` для дашборда в файле `dashboard-ingress.yaml`: ```yml apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: traefik-dashboard namespace: traefik spec: entryPoints: - websecure routes: - match: Host(`dashboard.example.com`) kind: Rule middlewares: - name: dashboard-auth services: - kind: TraefikService name: api@internal tls: certResolver: le ``` Этот манифест задает маршрут для доступа к дашборду Traefik через HTTPS, применяя базовую авторизацию. Описание параметров: - `entryPoints: websecure` — указывает, что маршрут будет доступен только через HTTPS. - `match: Host(dashboard.example.com)` — направляет запросы, полученные для dashboard.example.com, к дашборду. - `middlewares` — применяет созданную ранее middleware `dashboard-auth`, обеспечивающую базовую HTTP-аутентификацию. - `services` — указывает, что запросы должны направляться к встроенному сервису `api@internal`, который отвечает за отображение дашборда. - `tls.certResolver: le` — активирует автоматическое получение SSL-сертификата через Let's Encrypt. 8. Применим манифест: ```shell kubectl apply -f dashboard-ingress.yaml ``` 9. Теперь обратимся к `https://dashboard.example.com`. После авторизации вы увидите дашборд. # Vault Source: https://timeweb.cloud/docs/k8s/addons/vault Vault — это система управления секретами от HashiCorp, которая позволяет безопасно хранить и получать доступ к токенам, паролям, сертификатам и другим чувствительным данным. В Kubernetes Vault используется как внешнее хранилище секретов и может обеспечивать централизованное управление доступом к ним. ## Установка Установить Vault в кластер можно через панель управления. Для этого: Перейдите во вкладку «Дополнения» на странице управления кластером. Найдите карточку «Vault» и нажмите «Установить». ![Scr 20251021 Piuk](https://content.timeweb.com/assets/f96762ca-3fae-4978-abd8-0fc40d7ce61b.png?width=1984&height=1656) В появившемся окне вы можете изменить параметры установки: 1. Переключитесь в режим продвинутой установки; 2. Отредактируйте конфигурацию вручную или загрузите свой файл `values.yaml`; 3. Нажмите кнопку «Установить». ![Scr 20251021 Pizg](https://content.timeweb.com/assets/c861f3e3-215e-4d4c-b0b3-0a1e60a485c5.png?width=1984&height=1592) Конфигурация по умолчанию подразумевает что дополнение будет использоваться в dev-режиме. Это упрощенный режим, в котором Vault автоматически инициализируется, не требует настройки хранилища и использует предустановленный `root token`. Такой режим подходит только для тестирования и разработки — он небезопасен для продакшена. ## Проверка установки После завершения установки дополнения убедитесь, что компоненты Vault успешно запустились. Для этого выполните команду: ```shell kubectl get pods -n vault ``` Вы должны увидеть список подов, среди которых: - `vault-0` — основной под Vault; - `vault-agent-injector-xxx` — сервис, отвечающий за автоматическую подстановку секретов в поды; - дополнительные поды (например, `vault-1`, `vault-2`), если установлен в HA-режиме. Если в конфигурации была включена опция `ui = true` (по умолчанию включена), вы можете получить доступ к веб-интерфейсу Vault: Пробросьте порт с помощью следующей команды: ```shell kubectl port-forward -n vault svc/vault 8200:8200 ``` Откройте браузер и перейдите по адресу: ```shell http://localhost:8200 ``` В dev-режиме Vault уже инициализирован, и вы можете авторизоваться с помощью токена, указанного в конфигурации. По умолчанию значение такое: ```shell devRootToken: "root" ``` ![Scr 20251021 Qnui](https://content.timeweb.com/assets/cfcd1d4a-6972-4dd6-a46f-8a12771aee34.png?width=1612&height=875) _Интерфейс [HashiCorp Vault](https://www.hashicorp.com/en/products/vault)_ ## Режим HA Режим **HA** (High Availability) позволяет развернуть несколько экземпляров Vault с распределенным хранением данных. Это обеспечивает: - отказоустойчивость — при выходе из строя одного экземпляра кластер продолжит работать; - централизованное хранилище; - возможность масштабирования. Один из подов становится лидером, остальные работают в режиме `standby`. Запросы на чтение/запись обрабатывает только лидер, но в случае его недоступности управление автоматически перейдет к одному из `standby`\-подов. > [!NOTE] > Для работы в этом режиме рекомендуем установить и использовать дополнения [CSI-S3](https://timeweb.cloud/docs/k8s/addons/csi-s3) или [CSI-driver](https://timeweb.cloud/docs/k8s/network-drives-connection). Чтобы включить режим HA, в конфигурации дополнения укажите параметры: - `server.dev.enabled: false` — отключаем dev-режим; - `server.standalone.enabled: false` — отключаем standalone-режим; - `server.ha.enabled: true` — включаем HA-режим; - `server.ha.replicas: 3` — указываем количество реплик; - `server.ha.raft.enabled: true` — используем встроенное хранилище Raft; - `server.dataStorage.storageClass: csi-s3` — подключаем S3-хранилище через CSI. Пример конфигурации (нажмите, чтобы развернуть) ```yaml global: enabled: true namespace: "" imagePullSecrets: [] tlsDisable: true externalVaultAddr: "" openshift: false psp: enable: false annotations: | seccomp.security.alpha.kubernetes.io/allowedProfileNames: docker/default,runtime/default apparmor.security.beta.kubernetes.io/allowedProfileNames: runtime/default seccomp.security.alpha.kubernetes.io/defaultProfileName: runtime/default apparmor.security.beta.kubernetes.io/defaultProfileName: runtime/default serverTelemetry: prometheusOperator: false injector: enabled: true replicas: 1 port: 8080 leaderElector: enabled: true metrics: enabled: false externalVaultAddr: "" image: repository: "hashicorp/vault-k8s" tag: "1.7.0" pullPolicy: IfNotPresent agentImage: repository: "hashicorp/vault" tag: "1.20.4" agentDefaults: cpuLimit: "500m" cpuRequest: "250m" memLimit: "128Mi" memRequest: "64Mi" template: "map" templateConfig: exitOnRetryFailure: true staticSecretRenderInterval: "" livenessProbe: failureThreshold: 2 initialDelaySeconds: 5 periodSeconds: 2 successThreshold: 1 timeoutSeconds: 5 readinessProbe: failureThreshold: 2 initialDelaySeconds: 5 periodSeconds: 2 successThreshold: 1 timeoutSeconds: 5 startupProbe: failureThreshold: 12 initialDelaySeconds: 5 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 5 authPath: "auth/kubernetes" logLevel: "info" logFormat: "standard" revokeOnShutdown: false webhook: failurePolicy: Ignore matchPolicy: Exact timeoutSeconds: 30 namespaceSelector: {} objectSelector: | matchExpressions: - key: app.kubernetes.io/name operator: NotIn values: - {{ template "vault.name" . }}-agent-injector annotations: {} failurePolicy: Ignore namespaceSelector: {} objectSelector: {} webhookAnnotations: {} certs: secretName: null caBundle: "" certName: tls.crt keyName: tls.key securityContext: pod: {} container: {} resources: {} extraEnvironmentVars: {} affinity: | podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app.kubernetes.io/name: {{ template "vault.name" . }}-agent-injector app.kubernetes.io/instance: "{{ .Release.Name }}" component: webhook topologyKey: kubernetes.io/hostname topologySpreadConstraints: [] tolerations: [] nodeSelector: {} priorityClassName: "" annotations: {} extraLabels: {} hostNetwork: false service: annotations: {} serviceAccount: annotations: {} podDisruptionBudget: {} strategy: {} server: enabled: true enterpriseLicense: secretName: "" secretKey: "license" image: repository: "hashicorp/vault" tag: "1.20.4" pullPolicy: IfNotPresent updateStrategyType: "OnDelete" logLevel: "info" logFormat: "standard" resources: {} ingress: enabled: false labels: {} annotations: {} ingressClassName: "" pathType: Prefix activeService: true hosts: - host: chart-example.local paths: [] extraPaths: [] tls: [] hostAliases: [] route: enabled: false activeService: true labels: {} annotations: {} host: chart-example.local tls: termination: passthrough authDelegator: enabled: true extraInitContainers: null extraContainers: null shareProcessNamespace: false extraArgs: "" extraPorts: null readinessProbe: enabled: true port: 8200 failureThreshold: 2 initialDelaySeconds: 5 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 3 livenessProbe: enabled: false execCommand: [] path: "/v1/sys/health?standbyok=true" port: 8200 failureThreshold: 2 initialDelaySeconds: 60 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 3 terminationGracePeriodSeconds: 10 preStopSleepSeconds: 5 preStop: [] postStart: [] extraEnvironmentVars: {} extraSecretEnvironmentVars: [] extraVolumes: [] volumes: null volumeMounts: null affinity: | podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app.kubernetes.io/name: {{ template "vault.name" . }} app.kubernetes.io/instance: "{{ .Release.Name }}" component: server topologyKey: kubernetes.io/hostname topologySpreadConstraints: [] tolerations: [] nodeSelector: {} networkPolicy: enabled: false egress: [] ingress: - from: - namespaceSelector: {} ports: - port: 8200 protocol: TCP - port: 8201 protocol: TCP priorityClassName: "" extraLabels: {} annotations: {} includeConfigAnnotation: false service: enabled: true active: enabled: true annotations: {} standby: enabled: true annotations: {} instanceSelector: enabled: true ipFamilyPolicy: "" ipFamilies: [] publishNotReadyAddresses: true externalTrafficPolicy: Cluster port: 8200 targetPort: 8200 annotations: {} dataStorage: enabled: true size: 1Gi mountPath: "/vault/data" storageClass: "csi-s3" accessMode: ReadWriteOnce annotations: {} labels: {} persistentVolumeClaimRetentionPolicy: {} auditStorage: enabled: false size: 1Gi mountPath: "/vault/audit" storageClass: "csi-s3" accessMode: ReadWriteOnce annotations: {} labels: {} dev: enabled: false devRootToken: "root" standalone: enabled: false config: |- ui = true listener "tcp" { tls_disable = 1 address = "[::]:8200" cluster_address = "[::]:8201" } storage "file" { path = "/vault/data" } ha: enabled: true replicas: 3 apiAddr: null clusterAddr: null raft: enabled: true setNodeId: false config: | ui = true listener "tcp" { tls_disable = 1 address = "[::]:8200" cluster_address = "[::]:8201" } storage "raft" { path = "/vault/data" } service_registration "kubernetes" {} disruptionBudget: enabled: true maxUnavailable: null serviceAccount: create: true name: "" createSecret: false annotations: {} extraLabels: {} serviceDiscovery: enabled: true statefulSet: annotations: {} securityContext: pod: {} container: {} hostNetwork: false ui: enabled: true publishNotReadyAddresses: true activeVaultPodOnly: false serviceType: "ClusterIP" serviceNodePort: null externalPort: 8200 targetPort: 8200 serviceIPFamilyPolicy: "" serviceIPFamilies: [] externalTrafficPolicy: Cluster annotations: {} csi: enabled: true image: repository: "hashicorp/vault-csi-provider" tag: "1.5.1" pullPolicy: IfNotPresent volumes: null volumeMounts: null resources: {} hmacSecretName: "" hostNetwork: false daemonSet: updateStrategy: type: RollingUpdate maxUnavailable: "" annotations: {} providersDir: "/var/run/secrets-store-csi-providers" kubeletRootDir: "/var/lib/kubelet" extraLabels: {} securityContext: pod: {} container: {} pod: annotations: {} tolerations: [] nodeSelector: {} affinity: {} extraLabels: {} agent: enabled: true extraArgs: [] image: repository: "hashicorp/vault" tag: "1.20.4" pullPolicy: IfNotPresent logFormat: standard logLevel: info resources: {} securityContext: container: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsNonRoot: true runAsUser: 100 runAsGroup: 1000 priorityClassName: "" serviceAccount: annotations: {} extraLabels: {} readinessProbe: failureThreshold: 2 initialDelaySeconds: 5 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 3 livenessProbe: failureThreshold: 2 initialDelaySeconds: 5 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 3 logLevel: "info" debug: false extraArgs: [] serverTelemetry: serviceMonitor: enabled: false selectors: {} interval: 30s scrapeTimeout: 10s tlsConfig: {} authorization: {} metricRelabelings: [] prometheusRules: enabled: false selectors: {} rules: [] ``` После установки кластера с включенным HA-режимом Vault не инициализируется автоматически. Это нужно сделать вручную с помощью CLI. Для инициализации Vault подключитесь к основному поду (`vault-0`) : ```shell kubectl exec -it vault-0 -n vault -- /bin/sh ``` И выполните команды: ```shell export VAULT_ADDR=http://127.0.0.1:8200 export VAULT_CLIENT_TIMEOUT=300s vault operator init ``` В результате вы получите несколько `Unseal Keys` и `Initial Root Token`. Сохраните эти данные в надежном месте — без них восстановить доступ к Vault будет невозможно. Пример вывода: ```shell Unseal Key 1: 4ErPXwe87rjULP6yz7h3XZ8Dr/nhTyMrVLiIsQ8s5ksX Unseal Key 2: IVk3hipR5D/yR5ngi1LJaaxRwarEWjR/hjC8DFwXuNYb Unseal Key 3: qBCx+7B+wiehep0yArs7nVT73SyMYXh+AH3jCXTCs80H Unseal Key 4: CQm+0tOTS9wZQWYJJU8Roo2tMCGS+dZt7eXMDLjU5gX+ Unseal Key 5: KTvyD+vhEXPNQgcQJQe69Gu/sjkhhl/ScGZNnmmN64xC Initial Root Token: hvs.uKO8ZtmUgARVtrLhzBlQV4tA ``` По умолчанию создается 5 ключей, из которых требуется минимум 3 для активации хранилища. После инициализации Vault находится в `sealed` состоянии. Чтобы запустить кластер, его нужно активировать. Для этого: 1. Подключитесь к каждому поду по очереди (`vault-0`, `vault-1`, `vault-2`). 2. Выполните команду, указав три любых из полученных ключей: ```shell vault operator unseal vault operator unseal vault operator unseal ``` 3. Проверьте статус: ```shell vault status ``` Если все прошло успешно, `Sealed` будет иметь значение `false`. # Velero Source: https://timeweb.cloud/docs/k8s/addons/velero Velero — это инструмент для резервного копирования, восстановления и переноса данных в Kubernetes. Он позволяет создавать бэкапы и восстанавливать состояние кластеров, а также выполнять миграции между кластерами. Для работы с Velero необходимо установить Velero CLI на локальную машину и настроить его в вашем кластере Kubernetes. ## Предварительные требования Перед началом установки убедитесь, что выполнены следующие условия: 1. Настроен доступ к вашему Kubernetes-кластеру через kubectl. Инструкцию по настройке можно найти [здесь](https://timeweb.cloud/docs/k8s/cluster-connection/kubectl). 2. Создан S3-бакет для размещения резервных копий. Создать бакет можно по [инструкции](https://timeweb.cloud/docs/s3-storage/manage-storage/create-bucket). Создадим отдельный неймспейс для Velero: ```shell kubectl create namespace velero ``` ## Создание секрета S3 Для настройки доступа Velero к S3-бакету создадим секрет. Создайте файл манифеста `velero-credentials-secret.yaml` со следующим содержимым: ```yml apiVersion: v1 kind: Secret metadata: name: cloud-credentials namespace: velero type: Opaque stringData: cloud: | [default] aws_access_key_id=S3_Access_Key aws_secret_access_key=S3_Secret_Access_Key ``` Замените `S3_Access_Key` и `S3_Secret_Access_Key` на свои ключи доступа к S3. ![Selection 167](https://content.timeweb.com/assets/da926458-bf59-46af-8ed6-138437f06649.png?width=870&height=873) Примените манифест: ```shell kubectl apply -f velero-credentials-secret.yaml ``` Проверьте создание секрета: ```shell kubectl describe secrets cloud-credentials -n velero ``` Значение `Data.cloud` должно быть ненулевым. ![Screenshot 01 25 25 21:02:04](https://content.timeweb.com/assets/a2bcb618-2f84-468d-9167-677df048cd57.png?width=549&height=214) ## Установка Velero CLI Бинарный файл Скачайте архив с последней версией Velero с официальной [страницы релизов](https://github.com/vmware-tanzu/velero/releases) GitHub: ```shell wget https://github.com/vmware-tanzu/velero/releases/download/v1.15.2/velero-v1.15.2-linux-amd64.tar.gz ``` Распакуйте архив: ```shell tar -xvzf velero-v1.15.2-linux-amd64.tar.gz ``` Переместите бинарный файл Velero в директорию `/usr/local/bin`: ```shell sudo mv ./velero-v1.15.2-linux-amd64/velero /usr/local/bin/ ``` Homebrew Для установки Velero на macOS выполните команду: ```shell brew install velero ``` Chocolatey Для установки Velero на Windows с использованием Chocolatey выполните команду: ```shell choco install velero ``` Проверьте установку: ```shell velero version ``` ![Screenshot 01 25 25 21:04:13](https://content.timeweb.com/assets/bc2ed7e0-d1e8-457c-b8d9-9dd6a2381b67.png?width=625&height=128) ## Установка Velero в кластере Создайте файл `values.yaml` с минимально необходимой конфигурацией: ```yml namespace: name: velero labels: {} credentials: existingSecret: cloud-credentials configuration: backupStorageLocation: - name: default provider: aws bucket: имя_бакета default: true config: region: ru-1 s3ForcePathStyle: true s3Url: https://s3.twcstorage.ru volumeSnapshotLocation: - name: default provider: aws config: region: ru-1 initContainers: - name: velero-plugin-for-aws image: velero/velero-plugin-for-aws:v1.7.0 volumeMounts: - mountPath: /target name: plugins ``` **Описание параметров:** - `backupStorageLocation`: Настраивает хранилище для бэкапов. - `bucket`: Имя S3-бакета. - `s3Url`: URL для S3-хранилища Timeweb Cloud. - `initContainers`: Добавляет необходимый плагин для работы с S3. - `credentials.existingSecret`: Ссылается на ранее созданный секрет `cloud-credentials`, содержащий ключи доступа к S3. ### Установка через панель управления 1. Перейдите в панель управления кластером и откройте вкладку «Дополнения». Выберите Velero. ![Selection 168](https://content.timeweb.com/assets/de030e07-6fba-433c-9483-c6591cf320dd.png?width=1006&height=919) 2. Включите режим продвинутой установки и загрузите файл `values.yaml`, нажав на «Загрузить конфигурацию из файла». ![Selection 169](https://content.timeweb.com/assets/1df243ec-48b9-45a4-b06f-77f9d2a974ae.png?width=997&height=881) 3. Нажмите «Установить». 4. Дождитесь завершения установки и проверьте стутс подов: ```shell kubectl get pods -n velero ``` ### Установка через Helm Вы можете установить Velero при помощи [Helm](https://timeweb.cloud/docs/k8s/deploy/helm). Для этого: 1. Добавьте репозиторий Velero: ```yml helm repo add velero https://vmware-tanzu.github.io/helm-charts helm repo update ``` 2. Установите Velero с использованием файла конфигурации: ```shell helm install velero velero/velero -f values.yaml --namespace velero ``` 3. Проверьте установку: ```shell kubectl get pods -n velero ``` Статус подов Velero должен быть `Running`. ## Использование Для демонстрации работы Velero создадим тестовый деплоймент с Nginx и покажем процесс создания резервной копии, удаления ресурсов и последующего восстановления данных. #### Создание бэкапа 1. Создайте деплоймент с Nginx в отдельном неймспейсе: ```yml kubectl create namespace nginx-test kubectl create deployment nginx --image=nginx -n nginx-test ``` 2. Создайте бэкап: ```shell velero backup create nginx-backup --include-namespaces nginx-test ``` Мы указали параметр `--include-namespaces`, чтобы выполнить копирование всего неймспейса. Вы также можете указать другие параметры при создании бэкапа: - `--include-resources`: включает конкретные ресурсы (например, `pods`, `services`). - `--exclude-resources`: исключает определённые ресурсы. - `--ttl`: задаёт время жизни бэкапа (например, `10h15m0s`). 3. Проверьте статус бэкапа: ```shell velero backup describe nginx-backup ``` #### Восстановление данных 1. Удалите тестовый неймспейс: ```shell kubectl delete namespace nginx-test ``` 2. Восстановите ресурсы из бэкапа: ```shell velero restore create --from-backup nginx-backup ``` 3. Убедитесь, что неймспейс и деплоймент восстановлены: ```shell kubectl get all -n nginx-test ``` ## Управление расписанием и статусами бэкапов Помимо создания бэкапов вручную, Velero позволяет автоматизировать создание резервных копий по расписанию. Также вы можете управлять существующими бэкапами. ### Настройка автоматического создания бэкапов Вы можете настроить расписание для регулярного создания резервных копий. Например, чтобы создавать бэкап всех неймспейсов каждый день в полночь: ```shell velero schedule create имя_задачи --schedule "0 0 * * *" --include-namespaces '*' ``` - `--schedule "0 0 * * *":` расписание в формате Cron (каждый день в 00:00). - `--include-namespaces '*'`: включить все неймспейсы. Для создания бэкапов одного неймспейса раз в час: ```shell velero schedule create имя_задачи --schedule "0 * * * *" --include-namespaces my-namespace ``` Проверить расписание создания бэкапов можно командой: ```shell velero schedule get ``` Если задача в расписании больше не нужна, ее можно удалить: ```shell velero schedule delete имя_задачи ``` ### Просмотр и управление бэкапами Список всех существующих бэкапов можно вывести командой: ```shell velero backup get ``` Для удаления старого бэкапа воспользуйтесь командой: ```shell velero backup delete имя_бэкапа ``` Чтобы проверить детали бэкапа, включая его статус и ресурсы, выполните: ```shell velero backup describe имя_бэкапа --details ``` Эти функции позволяют гибко управлять процессами резервного копирования и восстановить данные в нужный момент. # VictoriaMetrics Operator Source: https://timeweb.cloud/docs/k8s/addons/victoriametrics-operator VictoriaMetrics Operator — оператор для Kubernetes, для автоматизации развертывания и управления компонентами мониторинга на базе VictoriaMetrics. Он позволяет создавать и настраивать отдельные сервисы для сбора, хранения и визуализации метрик. Оператор использует CRD для управления инфраструктурой мониторинга. Основные используемые компоненты: - **VMSingle** — компонент, отвечающий за хранение метрик. Это одиночный инстанс VictoriaMetrics. Она удобна для простых проектов и малонагруженных кластеров. - **VMCluster** — масштабируемый вариант, включающий реплику хранения и прокси. Подходит для продакшена и больших объемов данных. - **VMAgent** — компонент, который собирает метрики с подов, сервисов и других источников. Он отправляет их в VMSingle или VMCluster по remoteWrite. - **VMPodScrape** — объект, описывающий, какие поды и по каким адресам и портам нужно опрашивать для получения метрик. Полная документация по VictoriaMetrics Operator доступна [на официальном сайте](https://docs.victoriametrics.com/operator/) дополнения. ## Установка Для установки VictoriaMetrics Operator перейдите в раздел «Дополнения» в панели управления кластером. Найдите «VictoriaMetrics Operator» в списке и нажмите на него. ![Scr 20250704 Okhr](https://content.timeweb.com/assets/24c6e10f-6731-4eee-b081-ac2ccaf7919d.png?width=2020&height=1608) В открывшемся окне можно при необходимости изменить параметры установки — например, задать собственный неймспейс, изменить версии компонентов или отключить ненужные CRD. После настройки нажмите кнопку «Установить». После установки в кластере появится неймспейс `victoria-metrics-operator` и все необходимые CRD, включая `VMSingle`, `VMAgent`, `VMPodScrape` и другие. Увидеть их вы можете, выполнив: ```shell kubectl get crd | grep 'vm' ``` ## Пример использования В примере мы: - Развернем VMSingle — хранилище метрик - Настроим VMAgent, чтобы собирать метрики из источников - Запустим под с Nginx и `nginx-prometheus-exporter`, чтобы передавать метрики - Создадим VMPodScrape, чтобы VMAgent собирал эти метрики - Настроим Ingress для доступа к веб-интерфейсу VictoriaMetrics Помимо дополнения VictoriaMetrics Operator, для примера потребуется установленное дополнение [Nginx Ingress](https://timeweb.cloud/docs/k8s/addons/nginx-ingress). Создадим компонент VMSingle, который будет принимать и хранить метрики. В примере мы зададим минимальный набор ресурсов и храним данные только в памяти в течение 1 дня. Создайте файл `vmsingle.yaml` со следующим содержимым: ```yaml apiVersion: operator.victoriametrics.com/v1beta1 kind: VMSingle metadata: name: vm-single namespace: victoria-metrics-operator spec: retentionPeriod: "1d" resources: requests: cpu: 100m memory: 256Mi ``` Если вы хотите хранить метрики дольше, стоит рассмотреть использование [сетевых дисков](https://timeweb.cloud/docs/k8s/network-drives-connection). Теперь создадим компонент VMAgent, который будет собирать метрики и передавать их в VMSingle. Создайте файл `vmagent.yaml`: ```yaml apiVersion: operator.victoriametrics.com/v1beta1 kind: VMAgent metadata: name: vmagent namespace: victoria-metrics-operator spec: remoteWrite: - url: http://vmsingle-vm-single.victoria-metrics-operator:8428/api/v1/write scrapeInterval: 30s selectAllByDefault: true port: "8429" ``` Развернем под с Nginx и экспортером метрик. В качестве источника метрик используется `nginx-prometheus-exporter`, который будет читать данные с эндпоинта `/stub_status`. Создайте файл `nginx.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx namespace: victoria-metrics-operator spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.25 ports: - containerPort: 80 name: http volumeMounts: - name: nginx-conf mountPath: /etc/nginx/conf.d/default.conf subPath: default.conf - name: exporter image: nginx/nginx-prometheus-exporter:1.1.0 args: - "-nginx.scrape-uri=http://localhost/stub_status" ports: - containerPort: 9113 name: metrics volumes: - name: nginx-conf configMap: name: nginx-conf --- apiVersion: v1 kind: ConfigMap metadata: name: nginx-conf namespace: victoria-metrics-operator data: default.conf: | server { listen 80; location / { return 200 'OK'; } location /stub_status { stub_status; allow 127.0.0.1; deny all; } } --- apiVersion: v1 kind: Service metadata: name: nginx namespace: victoria-metrics-operator spec: selector: app: nginx ports: - name: http port: 80 targetPort: http - name: metrics port: 9113 targetPort: metrics ``` Чтобы указать VMAgent, с каких подов собирать метрики, создадим объект VMPodScrape. Он выберет все поды с меткой `app: nginx` и будет опрашивать порт `metrics` по пути `/metrics`. Создайте файл `vmpodscrape.yaml`: ```yaml apiVersion: operator.victoriametrics.com/v1beta1 kind: VMPodScrape metadata: name: nginx-scrape namespace: victoria-metrics-operator spec: selector: matchLabels: app: nginx podMetricsEndpoints: - port: metrics path: /metrics interval: 30s ``` Прежде чем создавать Ingress, убедитесь, что в кластере есть сервис с типом LoadBalancer, он необходим для доступа к UI извне. Посмотреть текущие балансировщики можно командой: ```shell kubectl get svc -n ingress-nginx ``` Если балансировщик отсутствует, создайте его: ```yaml apiVersion: v1 kind: Service metadata: name: nginx-loadbalancer namespace: ingress-nginx spec: selector: app.kubernetes.io/name: ingress-nginx ports: - port: 80 targetPort: 80 appProtocol: k8s.timeweb.cloud/proto-http type: LoadBalancer ``` После создания получите внешний адрес сервиса: ```shell kubectl get svc -n ingress-nginx nginx-loadbalancer ``` Укажите его как A-запись для домена, по которому будет доступен UI VictoriaMetrics. Наконец, создадим Ingress, чтобы получить доступ к веб-интерфейсу VictoriaMetrics. Укажите в хосте нужное вам доменное имя. Создайте файл `vm-ui-ingress.yaml`: ```yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: vm-ui namespace: victoria-metrics-operator spec: ingressClassName: nginx rules: - host: vm.example.com http: paths: - path: / pathType: Prefix backend: service: name: vmsingle-vm-single port: number: 8428 ``` Примените все манифесты, созданные ранее: ```shell kubectl apply -f vmsingle.yaml kubectl apply -f vmagent.yaml kubectl apply -f nginx.yaml kubectl apply -f vmpodscrape.yaml kubectl apply -f vm-ui-ingress.yaml ``` После этого перейдите по адресу, указанному в манифесте `vm-ui-ingress.yaml`. В нашем примере это `http://vm.example.com`. В интерфейсе выберите пункт «vmui», чтобы открыть веб-интерфейс VictoriaMetrics. В поле «Query» введите имя метрики, например `up`, и нажмите «Execute Query». Если все настроено правильно, вы увидите значение метрик, которые собираются с пода Nginx. ![Scr 20250703 Lxom](https://content.timeweb.com/assets/0c8b8536-6b4e-4adf-be8a-9296ea98cc4b.png?width=2894&height=1600) _Раздел «Query» в веб-интерфейсе [VictoriaMetrics](https://victoriametrics.com/)_ # WordPress Source: https://timeweb.cloud/docs/k8s/addons/wordpress WordPress — это популярная CMS для создания сайтов и блогов. В Kubernetes она разворачивается полностью автоматически: приложение, база данных, хранилище данных и сетевые настройки создаются аддоном. ## Установка Перед установкой WordPress убедитесь, что установлены: - [CSI-driver](https://timeweb.cloud/docs/k8s/network-drives-connection) — обязательный компонент, обеспечивает работу сетевых дисков для WordPress и MariaDB. - [Nginx Ingress](https://timeweb.cloud/docs/k8s/addons/nginx-ingress) — необходим для настройки доступа к сайту по доменному имени. - [CSI S3](https://timeweb.cloud/docs/k8s/addons/csi-s3) — если вы хотите размещать файлы WordPress в S3-бакете. Для установки откройте раздел «Дополнения» в панели управления кластера и выберите «WordPress». ![Scr 20251211 Kurv](https://content.timeweb.com/assets/a06072fc-6901-452f-b671-6305eb12e5f6.png?width=2272&height=1444) После выбора дополнения откроется YAML-конфигурация. Для установки достаточно: - указать `wordpressUsername` и `wordpressPassword`; - включить `ingress.enabled: true`; - указать домен в `ingress.hostname`. В этом случае будут развернуты: - WordPress; - база данных MariaDB; - два сетевых диска для размещения данных; - LoadBalancer; - объект Ingress; - Kubernetes Secrets. ## Настройка параметров ### Основные настройки Ключевые настройки WordPress собраны в одном блоке: ```yaml wordpressUsername: user wordpressPassword: "" existingSecret: "" wordpressEmail: user@example.com wordpressFirstName: FirstName wordpressLastName: LastName wordpressBlogName: User's Blog! wordpressTablePrefix: wp_ wordpressScheme: http wordpressSkipInstall: false wordpressExtraConfigContent: "" wordpressConfiguration: "" existingWordPressConfigurationSecret: "" wordpressConfigureCache: false wordpressPlugins: none apacheConfiguration: "" existingApacheConfigurationConfigMap: "" customPostInitScripts: {} smtpHost: "" smtpPort: "" smtpUser: "" smtpPassword: "" smtpProtocol: "" smtpFromEmail: "" smtpFromName: "" smtpExistingSecret: "" allowEmptyPassword: true allowOverrideNone: false overrideDatabaseSettings: false htaccessPersistenceEnabled: false customHTAccessCM: "" command: [] args: [] extraEnvVars: [] extraEnvVarsCM: "" extraEnvVarsSecret: "" ``` Здесь указываются: - логин и пароль администратора; - адрес электронной почты; - имя сайта; - схема доступа (`http`/`https`). Остальные параметры относятся к расширенной настройке CMS (SMTP, переменные окружения). Их можно оставить без изменений. ### Сетевые настройки **Балансировщик нагрузки** По умолчанию создается [LoadBalancer](https://timeweb.cloud/docs/k8s/network/kubernetes-load-balancer): ```yaml service: type: LoadBalancer ``` Он получает внешний IP-адрес, через который доступен сайт. **Ingress** Дополнительно можно настроить доступ по доменному имени, указав его в настройках Ingress-контроллера: ```yaml ingress: enabled: true hostname: example.com path: / tls: false ``` ### Хранилище данных Создаются два тома (PVC): PVC для WordPress: ```yaml persistence: enabled: true size: 10Gi ``` PVC для MariaDB: ```yaml mariadb: enabled: true primary: persistence: enabled: true storageClass: "nvme.network-drives.csi.timeweb.cloud" size: 8Gi ``` Оба тома создаются с классом `nvme.network-drives.csi.timeweb.cloud`. Вы можете изменить класс хранения, указав другой в параметре `global.defaultStorageClass` или задав `storageClass` вручную в соответствующих блоках. После установки сетевые диски появятся в панели управления, [в разделе «Сетевые диски»](https://timeweb.cloud/docs/k8s/network-drives-connection). Постоянные хранилища нужны, чтобы данные оставались доступны при пересоздании подов. ## После установки Дождитесь завершения создания балансировщика и создайте A-запись для домена, указав IP-адрес балансировщика. Проверьте состояние подов: ```shell kubectl get pods -n wordpress ``` Вы увидите два пода — в них запущены WordPress и база данных: ```shell NAME READY STATUS RESTARTS AGE wordpress-5f77d8758b-6g2z2 1/1 Running 0 23h wordpress-mariadb-0 1/1 Running 0 23h ``` Проверьте сервисы: ```shell kubectl get svc -n wordpress ``` Пример вывода: ```shell NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE wordpress LoadBalancer 10.105.62.193 185.154.193.137 80:31401/TCP,443:32277/TCP 23h wordpress-mariadb ClusterIP 10.105.69.70 3306/TCP 23h wordpress-mariadb-headless ClusterIP None 3306/TCP 23h ``` Поле `EXTERNAL-IP` указывает на IP-адрес балансировщика, через который доступно приложение. # App Platform Source: https://timeweb.cloud/docs/apps App Platform — это облачный сервис для автоматической выгрузки кода из репозиториев и автодеплоя ваших приложений на серверах Timeweb Cloud. Сервис поддерживает большинство популярных фреймворков и позволяет подключать любые репозитории, развернутые на платформах [GitHub](https://github.com/), [GitLab](https://about.gitlab.com/) или [Bitbucket](https://bitbucket.org/). ![Group 1321314120](https://content.timeweb.com/assets/e2b658af-f3ab-4cdb-8bf3-c90eeed23571?width=1920&height=1119) ## Как использовать App Platform? **Шаг 1.** Вы заказываете сервис — подключаете репозиторий на GitHub, GitLab или Bitbucket и выбираете нужный фреймворк и сервер с подходящими параметрами. **Шаг 2.** Все остальное делаем мы: - Запускаем сервер с необходимым ПО. - «Подтягиваем» ваш код из репозитория. - Ставим зависимости, используя соответствующий фреймворку менеджер пакетов (например, `yarn` для Node.js-приложений или `pip` для Python, Django и т.д.). - Собираем код и проверяем корректность сборки. - Запускаем ваше приложение. - Перезапускаем его в случае сбоя. После запуска сервиса вы можете работать с кодом, как обычно: вносить правки и дополнения и делать коммиты в репозиторий. Сервис App Platform автоматически отследит наличие изменений и, если у вас включен автодеплой, выкатит обновления в продакшен-среду. Если что-то пошло не так и нужно откатиться на прошлую версию — запустите новый деплой с коммитом, по которому был последний успешный деплой. К приложению будет привязан бесплатный технический домен с SSL Let's Encrypt, который можно использовать для тестирования и запросов к вашему приложению. # Принципы работы Source: https://timeweb.cloud/docs/apps/how-it-works Основная функция сервиса приложений — автоматический деплой. App Platform автоматически выгружает на сервер код вашего сайта, API-сервиса, приложения и т.п. Процесс работы с App Platform при использовании **backend-фреймворков** выглядит так: 1. **Подключение репозитория**: Вы подключаете репозиторий к Timeweb Cloud, выполняя вход в свой аккаунт на [GitHub, GitLab или Bitbucket](https://timeweb.cloud/docs/apps/connecting-repositories#podkluchenie-repozitoriya-iz-gitlab-github-ili-bitbucket), или [по ссылке](https://timeweb.cloud/docs/apps/connecting-repositories#podkluchenie-repozitoriya-po-ssylke). 2. **Подтягивание кода и установка зависимостей**: Сервис автоматически подтягивает код из указанного репозитория и устанавливает необходимые зависимости, указанные в специальных файлах — таких как `requirements.txt` для Python или `package.json` для Node.js. 3. **Сборка приложения**: Сервис определяет параметры сборки для вашего приложения и собирает его. 4. **Запуск в Docker-контейнере**: После сборки запускается Docker-контейнер с подходящим окружением, внутри которого работает ваше приложение. 5. **Настройка Nginx**: App Platform автоматически настраивает Nginx для проксирования вашего домена на запущенное приложение. При выполнении `git push` в ваш репозиторий (при включенном автодеплое) процесс начинается заново — начиная со второго этапа: сервис подтягивает код, ставит зависимости, собирает приложение и так далее. Важно понимать, что каждый новый деплой запускает новое окружение, то есть создается новый Docker-контейнер, в котором не сохраняются данные из предыдущих версий контейнера. Это позволяет обеспечить чистоту деплоя, но имеет свои особенности в управлении данными. #### Управление данными при использовании App Platform Поскольку данные внутри Docker-контейнера не сохраняются при повторном деплое, важно предусмотреть использование внешних хранилищ для данных, которые необходимо сохранить между деплоями: - **Файлы и медиа**: Если ваше приложение позволяет пользователям или администратору загружать файлы или медиа-контент, рекомендуется сохранять их в хранилище, таком как [S3](https://timeweb.cloud/docs/s3-storage). Это гарантирует, что данные останутся доступными после обновления или повторного деплоя приложения. - **Базы данных**: В качестве базы данных также следует использовать внешние решения, такие как [облачные базы данных](https://timeweb.cloud/docs/dbaas) или отдельные серверы баз данных, чтобы информация не терялась при обновлении контейнера. К приложению будет привязан бесплатный технический домен с SSL-сертификатом Let's Encrypt, который можно использовать для тестирования работы и, если вам это подходит, — для запросов к приложению. В дальнейшем вы сможете привязать к приложению [свой домен](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#privyazka-domena). При этом установить собственный или платный SSL-сертификат для домена нельзя. Работа сервиса с **frontend-приложениями** имеет одно важное отличие от backend-приложений — после сборки мы не создаем Docker-контейнер, приложение хранится в директории на сервере. Такое приложение — это статические файлы, которые отдаются клиентам с сервера. Однако, в отличие от обычного размещения приложения на сервере, где вам нужно самостоятельно настраивать окружение, сервис App Platform, как и в случае с бэкенд-приложениями, сделает всё за вас: - «подтянет» код из репозитория, - установит зависимости и ПО, - настроит Nginx, - выпустит SSL-сертификат, - выполнит сборку вашего приложения. А в дальнейшем будет автоматически деплоить изменения — если вы оставите включенной опцию автодеплоя. # Подключение репозиториев Source: https://timeweb.cloud/docs/apps/connecting-repositories Подключить нужный репозиторий вы можете в процессе создания нового приложения в разделе «App Platform». Сервис поддерживает подключение репозиториев, созданных в ваших аккаунтах GitLab, GitHub и Bitbucket, а также подключение по URL любых репозиториев с внешним адресом, в том числе развернутых в Gitea, self-hosted GitLab, GitHub Enterprise и др. > [!NOTE] > В настоящее время поддержка [Git LFS](https://git-lfs.com/) отсутствует. При размещении проектов, которые содержат большие статичные файлы, рекомендуем использовать внешние хранилища, например, [S3](https://timeweb.cloud/docs/s3-storage). ## Подключение репозитория из GitLab, GitHub или Bitbucket Чтобы подключить репозиторий: 1. Перейдите в раздел «App Platform» и нажмите «Создать». 2. На шаге «Репозиторий» кликните на иконку нужной платформы. ![Step2](https://content.timeweb.com/assets/30b3958f-fc81-4499-96c6-992394d8b2fb?width=742&height=357) 3. Авторизуйтесь в своем аккаунте. 4. Предоставьте доступ к нужным репозиториям. 5. Выберите в панели репозиторий для деплоя. **Если вы уже авторизованы в своем аккаунте GitHub, GitLab или Bitbucket**, панель автоматически отобразит доступные репозитории. Вам достаточно выбрать нужный. ![37513073 880a 4d69 96ca E49b6b66fb43](https://content.timeweb.com/assets/0b8af1cc-69d9-4398-a3c6-fc483ed9aa98?width=755&height=453) **Если вы авторизованы, но нужного репозитория нет в списке:** 1. Кликните «Добавить аккаунт». ![3f31ba98 1140 4674 8a28 744638edfede](https://content.timeweb.com/assets/4c7c2c8e-8c51-4ca9-8f31-d041ce8dc526?width=745&height=319) 2. Выберите платформу. 3. Авторизуйтесь при необходимости. 4. Выберите нужные репозитории и сохраните изменения. После выберите в панели нужный репозиторий для деплоя. ## Подключение репозитория по ссылке Вы можете подключить к сервису App Platform любой репозиторий, у которого есть внешний HTTP- или HTTPS-адрес, в том числе репозитории из self-hosted GitLab, GitHub Enterprise, Sourcecraft, GitFlic, GitVerse или репозитории, размещенные у провайдеров, которые мы не поддерживаем напрямую (например, Gitea). Также опцию можно использовать в целях безопасности: если вы не хотите выдавать доступ ко всему Git-аккаунту целиком, с помощью ссылки можно подключить только отдельный репозиторий. > [!NOTE] > Обратите внимание, что для репозиториев, подключенных по ссылке, будет недоступен автодеплой — после внесения изменений в код потребуется [запустить деплой приложения вручную](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#smena-parametrov-i-novyj-deploj), выбрав нужный коммит. Если репозиторий публичный, достаточно указать только URL. Если репозиторий приватный, потребуются реквизиты для доступа — токен, который генерируется в интерфейсе провайдера в настройках репозитория или аккаунта. Подключение по логину и паролю доступно только для GitFlic. Получение токена для каждого провайдера: - [GitHub](https://timeweb.cloud/docs/apps/connecting-repositories#poluchenie-tokena-v-github) - [GitLab](https://timeweb.cloud/docs/apps/connecting-repositories#poluchenie-tokena-v-gitlab) - [Bitbucket](https://timeweb.cloud/docs/apps/connecting-repositories#poluchenie-tokena-i-ssylki-v-bitbucket) - [Sourcecraft](https://timeweb.cloud/docs/apps/connecting-repositories#poluchenie-tokena-v-sourcecraft) - [GitFlic](https://timeweb.cloud/docs/apps/connecting-repositories#poluchenie-tokena-v-gitflic) - [GitVerse](https://timeweb.cloud/docs/apps/connecting-repositories#poluchenie-tokena-v-gitverse) ### Подключение репозитория Подключить репозиторий по ссылке можно при создании нового приложения: 1. Перейдите в раздел «App Platform» и нажмите «Создать». 2. В пункте «Репозиторий» кликните «Добавить аккаунт» и далее — «Подключите git-репозиторий по URL». ![Scr 20260520 Mibl](https://content.timeweb.com/assets/96256e9b-24a7-4dde-be6b-4edd42c24b37.png?width=1354&height=1036) 3. Укажите ссылку на репозиторий и реквизиты доступа, если репозиторий приватный. ![2fd04f76 58a9 4a37 9149 31b00e2734a9](https://content.timeweb.com/assets/e634aa9c-ff9a-432a-bb2c-3f9a3d8c8270?width=664&height=713) 4. Нажмите «Подключить». Подключенный репозиторий и доступные коммиты отобразятся в панели управления. ![608dc6f7 8273 4ce4 B2cc 148b08824c20](https://content.timeweb.com/assets/d9f69886-47ef-4ffc-b5b8-fb989af2438f?width=757&height=656) ### Получение ссылки в GitHub, GitLab или Bitbucket Ссылка для подключения должна быть в формате Git URL, например: ```shell https://github.com/timeweb-cloud-apps/app-example-celery.git ``` В GitHub можно получить нужную ссылку, кликнув на «Code» → «HTTPS»: ![Fa97c14a A44c 4fe3 Bcca C60c8e5928b6](https://content.timeweb.com/assets/1ba7311c-5546-43c5-8f85-c77ecd393448?width=453&height=387) _Получение ссылки на репозиторий в интерфейсе [GitHub](https://github.com/)_ Аналогично в GitLab или Bitbucket: перейти в нужный репозиторий → клик на «Code/Clone» → «Clone with HTTPS». ### Получение ссылки в Sourcecraft Перейдите на главную страницу вашего репозитория. В правом верхнем углу нажмите на кнопку «Клонировать» и скопируйте ссылку под заголовком «HTTPS». ![Получение ссылки на репозиторий в интерфейсе Sourcecraft](https://content.timeweb.com/assets/41288f80-38d4-4b70-89fb-b1d982247bdc.png?width=3416&height=1288) _Получение ссылки на репозиторий в интерфейсе [Sourcecraft](https://sourcecraft.dev/)_ ### Получение ссылки в GitFlic Перейдите на главную страницу вашего репозитория. Нажмите на кнопку «Код» и скопируйте ссылку из вкладки «HTTPS**»**. ![Получение ссылки на репозиторий в интерфейсе GitFlic](https://content.timeweb.com/assets/15cbad8b-55d5-42a0-b3d6-a20d3f7d986e.png?width=3410&height=1686) _Получение ссылки на репозиторий в интерфейсе [GitFlic](https://gitflic.ru/)_ ### Получение ссылки в GitVerse Перейдите на главную страницу вашего репозитория. Нажмите на кнопку «Код» и скопируйте ссылку из вкладки «HTTPS». ![Scr 20260520 Meai](https://content.timeweb.com/assets/74f3d7be-78c8-43bd-bb6c-3ff1da6e8c74.png?width=3414&height=1678) _Получение ссылки на репозиторий в интерфейсе [GitVerse](https://gitverse.ru/)_ ### Получение токена и ссылки в Bitbucket Чтобы получить токен: 1. Перейдите в **«**Account settings» → «Security» → [«API Tokens»](https://id.atlassian.com/manage-profile/security/api-tokens). 2. Нажмите «Create API Token with scopes». 3. Укажите имя и дату истечения для токена. Нажмите «Next». 4. Выберите «Bitbucket» и нажмите «Next». 5. Выберите `read:repository:bitbucket` и нажмите «Next». 6. Нажмите «Create token». 7. Скопируйте токен и вставьте его в поле «Пароль или токен» в панели Timeweb Cloud. 8. Зайдите в репозиторий и нажмите «Clone». Скопируйте все, что идет после `git clone`, и вставьте в поле «URL репозитория». 9. Скопируйте часть ссылки между `https://` и `@` и вставьте в поле «Имя пользователя». ### Получение токена в GitHub Подключить по ссылке репозиторий GitHub с помощью пароля от учетной записи не получится; для этого необходим именно токен. Чтобы сгенерировать токен в GitHub: 1. Перейдите в «Settings» → «Developer Settings» → «Personal access tokens» → «Tokens (classic)» → «Generate new token» → «Generate new token (classic)». 2. Задайте имя токена, срок действия и разрешения. Для работы с приватными репозиториями нужно выбрать «repo». ![F6920e65 A30c 4032 B4b6 E25211169f56](https://content.timeweb.com/assets/94cd5763-d66b-46c6-8793-21bd5bb20590?width=1353&height=727) _Создание нового токена в интерфейсе [GitHub](https://github.com/)_ 3. Нажмите «Generate token». 4. Скопируйте токен и вставьте его в поле «Пароль или токен» в панели Timeweb Cloud. ### Получение токена в GitLab Для подключения по ссылке репозиториев GitLab можно использовать пароль от учетной записи или токен, сгенерированный в настройках вашего аккаунта GitLab. Чтобы сгенерировать токен: 1. Перейдите в «Preferences» → «Access Tokens». 2. Cоздайте новый токен, указав его имя, срок действия и разрешения. Как минимум, потребуется разрешение на чтение репозиториев. 3. Нажмите «Create personal access token». 4. Скопируйте токен и вставьте его в поле «Пароль или токен» в панели Timeweb Cloud. ### Получение токена в Sourcecraft 1. Перейдите на [главную страницу панели управления](https://sourcecraft.dev/me/dashboard). 2. В левом меню перейдите в раздел «Доступ» → «Персональные токены доступа». ![Раздел «Персональные токены доступа» в интерфейсе Sourcecraft](https://content.timeweb.com/assets/655925e7-fae7-40dd-b710-0568d87be4d9.png?width=3414&height=1434) _Раздел «Персональные токены доступа» в интерфейсе [Sourcecraft](https://sourcecraft.dev/)_ 3. Нажмите кнопку «Создать новый токен». 4. Укажите имя токена и время жизни, а также выберите репозиторий, к которому нужен доступ, или выберите пункт «Все репозитории». В пункте «Роль» достаточно выбрать минимальные права — «Просмотр репозитория». 5. Скопируйте полученный токен и вставьте его в поле «Пароль или токен». В поле «Имя пользователя» укажите логин вашего аккаунта Sourcecraft. ### Получение токена в GitFlic 1. Нажмите на иконку пользователя в правом верхнем углу и в открывшемся меню выберите «Настройки». 2. В правом меню перейдите [в раздел API токены](https://gitflic.ru/settings/access-token). 3. Нажмите кнопку «Создать». 4. Укажите название токена и выберите дату окончания его действия. Если ничего не указывать, токен будет бессрочным. 5. Для токена достаточно выдать минимальные права — на чтение. 6. Нажмите кнопку «Создать токен». 7. Скопируйте полученный токен и вставьте его в поле «Пароль или токен». В поле «Имя пользователя» укажите логин вашего аккаунта GitFlic. ### Получение токена в GitVerse 1. Нажмите на иконку пользователя в правом верхнем углу и в открывшемся меню выберите «Настройки». 2. Перейдите в раздел [Управление токенами](https://gitverse.ru/settings/tokens). 3. Укажите имя токена и срок его действия. 4. В разделе «Функциональность» достаточно выбрать минимальные права — чтение для репозиториев. 5. Нажмите кнопку «Генерировать токен». 6. Скопируйте полученный токен и вставьте его в поле «Пароль или токен». Для подключения репозитория GitVerse достаточно указать токен и ссылку на репозиторий. ## Удаление подключенных репозиториев Любой добавленный репозиторий можно отвязать от панели управления на странице создания нового приложения. > [!NOTE] > При отключении репозитория любые деплои (как автоматические, так и ручные) всех приложений, созданных из этого репозитория, станут невозможны. 1. Перейдите в раздел App Platform и нажмите «Добавить». 2. Кликните на выпадающий список репозиториев и нажмите «Удалить» у нужного из них. ![Без Названия](https://content.timeweb.com/assets/bd87bdc0-9e0e-4bd2-ae2c-7f2ac8912d0a?width=1313&height=852) 3. На следующем шаге подтвердите действие. ## Сервис App Platform не видит нужный репозиторий Если ваш аккаунт GitHub, GitLab или Bitbucket подключен, но в панели управления не отображается нужный репозиторий, причин может быть две: - Вы авторизовались в свой аккаунт GitHub, GitLab или Bitbucket в сервисе App Platform, а после этого добавили новый репозиторий. - Вы разрешили подключить только отдельные репозитории, а не все, и нужный репозиторий не выбран. Чтобы решить проблему: 1. Кликните «Добавить аккаунт». ![3f31ba98 1140 4674 8a28 744638edfede](https://content.timeweb.com/assets/4c7c2c8e-8c51-4ca9-8f31-d041ce8dc526?width=745&height=319) 2. Выберите платформу. ![1d2f1c03 Ca39 4520 Bc95 86e22b8ce42f](https://content.timeweb.com/assets/a5a1a163-c7b1-420e-bf80-2c8b3ad73a98?width=785&height=359) 3. Авторизуйтесь, если необходимо. 4. Выберите нужный репозиторий и сохраните изменения. ![Image2](https://content.timeweb.com/assets/65022223-b64e-4415-a63c-ee81a537a786?width=885&height=716) _Окно «Repository access» в интерфейсе [GitHub](https://github.com/)_ Подключенные репозитории отобразятся в панели управления, и вы сможете выбрать нужный. # Тарификация фронтенд-приложений Source: https://timeweb.cloud/docs/apps/frontend-pricing Для фронтенд-приложений применяется поресурсная модель списания — вы оплачиваете только фактическое использование ресурсов. Списания происходят за любые входящие HTTP-запросы к приложению. Учитываются в том числе запросы на загрузку статических файлов, таких как стили, скрипты, изображения и другие ресурсы. Тип HTTP-запроса и используемый метод значения не имеют. Списание выполняется ежечасно. Если на аккаунте недостаточно средств при очередном списании — приложение будет автоматически остановлено. Каждому приложению выделяется 2 ГБ NVMe-хранилища. Стоимость одного входящего запроса — 0,000495 ₽, то есть 4,95 ₽ за 10 000 запросов. ## Ограничение количества запросов Чтобы избежать перерасхода средств, вы можете установить лимит на количество входящих запросов. После достижения лимита приложение будет остановлено, а списания — прекращены. Для установки лимита: 1. Перейдите в раздел «App Platform» и кликните на нужное приложение. 2. Перейдите во вкладку «Настройки» . 3. Нажмите кнопку «Установить лимит» в строке «Лимиты входящих запросов». ![Scr 20251223 Oxzh](https://content.timeweb.com/assets/48f0e964-7a09-4a5e-9588-b6ec1420ca19.png?width=2162&height=1456) 4. В открывшемся окне включите ограничение количества запросов, укажите максимальное число входящих запросов и нажмите на кнопку «Сохранить». ## Просмотр статистики запросов На вкладке «Дашборд» отображается текущее количество запросов за месяц и график за периоды: - последний час; - последние 6 часов; - сутки; - неделя. ![Scr 20251223 Oymo](https://content.timeweb.com/assets/f3ea5f01-d90f-4051-8ede-894a1917faa2.png?width=2150&height=1470) # Деплой frontend-приложений Source: https://timeweb.cloud/docs/apps/deploying-frontend-apps Чтобы развернуть frontend-приложение, перейдите в раздел «App Platform» и нажмите кнопку «Создать» или «Добавить». ## Шаг 1. Выбор приложения В пункте «Тип» выберите вкладку «Frontend», затем нужный фреймворк и версию Node.js, необходимую для работы вашего приложения. ![Scr 20260127 Kqtg](https://content.timeweb.com/assets/f3fbb000-4d9e-4f43-b179-4e4aeeb878fb.png?width=1050&height=986) ## Шаг 2. Подключение репозитория и выбор ветки Вы можете подключить репозиторий: - **Из своего аккаунта GitHub, GitLab или Bitbucket**. Кликните на название платформы, авторизуйтесь и выберите нужный репозиторий. Если вы уже авторизованы, панель сразу покажет доступные репозитории. - **По URL** — укажите ссылку на репозиторий, созданный на любой платформе. Кликните «Подключите git-репозиторий по URL» (либо «Добавить аккаунт» → «Подключите git-репозиторий по URL») и укажите Git URL репозитория. Если репозиторий приватный, введите реквизиты доступа. Подробнее о подключении репозиториев — [здесь](https://timeweb.cloud/docs/apps/connecting-repositories). ![Scr 20260127 Kqzx](https://content.timeweb.com/assets/16d30409-a1fb-49d6-8dc7-421635a2c5f3.png?width=1058&height=1068) Выберите ветку для деплоя. В меню выбора ветки отображаются только 200 последних веток. При подключении репозитория GitLab, GitHub или Bitbucket также отображается ветка по умолчанию (`master`, `main` или `default`). Если вы подключаете репозиторий через аккаунт, опция «Сборка по последнему выполненному коммиту» будет включена по умолчанию. В этом случае App Platform выполнит деплой по последнему коммиту и в дальнейшем будет автоматически пересобирать приложение при появлении новых коммитов в репозитории. При необходимости вы сможете [отключить автодеплой](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#avtodeploj) в дальнейшем. Если вы хотите выбрать конкретный коммит вручную, отключите эту опцию. ## Шаг 3. Регион Выберите регион размещения сервера. ![Scr 20260127 Krcz](https://content.timeweb.com/assets/a57cfd68-b2b1-45d4-bf49-23e8ee1aa9dd.png?width=1088&height=648) ## Шаг 4. Конфигурация Для всех frontend-приложений выделяется 2 ГБ NVMe-диска. Выбор конфигурации сервера не предусмотрен — для приложений [действует поресурсная тарификация](https://timeweb.cloud/docs/apps/frontend-pricing). ![Scr 20260127 Kreq](https://content.timeweb.com/assets/bc813d23-8079-45a4-9e20-9cb28be58045.png?width=1046&height=296) Для приложений [Nuxt](https://timeweb.cloud/docs/apps/deploying-frontend-apps/nuxt) и [Next.js](https://timeweb.cloud/docs/apps/deploying-frontend-apps/nextjs) вы можете включить поддержку SSR — тогда станет доступен выбор конфигурации сервера, аналогично [бэкенд-приложениям](https://timeweb.cloud/docs/apps/deploying-backend-applications). ![6d47cd9d 3d6b 4e42 Abd0 2a6d9a51142c](https://content.timeweb.com/assets/5c71246d-880d-4728-beb9-65fc9da2e770.png?width=1036&height=804) ## Шаг 5. Настройка приложения На этом этапе вы можете задать команду сборки, установить необходимые зависимости, указать директорию проекта, директорию сборки и задать переменные окружения. ![96bc7e53 5f16 44c7 9914 05f3572c7b81](https://content.timeweb.com/assets/0e2d54fc-683d-4cb7-a401-aa55217ff1e4.png?width=660&height=624) #### Команда сборки и директория сборки Сервис автоматически предложит команду и директорию сборки для вашего проекта. При необходимости вы можете их отредактировать, однако в большинстве случаев изменения не требуются. Параметр «Директория сборки» не меняет директорию, из которой выполняется команда сборки. Он указывает путь (относительно корня репозитория) к директории, в которой будут находиться собранные файлы, например, `index.html`. Если одновременно указаны «Путь до директории проекта» и «Директория сборки», итоговый путь, из которого будут отдаваться файлы сайта, формируется как: ```shell Путь до директории проекта + Директория сборки ``` Например, если указано: - Путь до директории проекта: `/apps/frontend` - Директория сборки: `dist` то файлы будут браться из директории `/apps/frontend/dist`. #### Зависимости В разделе зависимостей можно указать системные пакеты, которые необходимы, например, для сборки проекта. Все перечисленные пакеты будут переданы в команду `apt install`. Если пакетов несколько — укажите их через пробел. #### Директория проекта По умолчанию команда сборки запускается в корне репозитория. Если файлы вашего проекта, включая `package.json`, размещены в поддиректории (например: `/apps/frontend`), укажите путь к ней относительно корня в поле «Путь до директории проекта». При указании пути: - Рабочая директория переключается на указанную папку. - Зависимости устанавливаются из файлов проекта в этой папке. - Команды сборки и запуска также выполняются из этой папки. #### Переменные Вы можете [задать переменные окружения](https://timeweb.cloud/docs/apps/variables), если это требуется для вашего проекта. Все параметры можно [изменить позже](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#smena-parametrov-i-novyj-deploj) и перезапустить деплой с новыми настройками. ## Шаг 6. Информация о приложении Укажите имя приложения и при необходимости добавьте комментарий. Эти данные будут отображаться в панели управления. Также выберите проект, в который нужно добавить приложение. ![Scr 20260127 Krlt](https://content.timeweb.com/assets/9545896f-ec75-4884-9fe6-f734f8ec9241.png?width=1086&height=670) Эти настройки также можно изменить в дальнейшем. ## Шаг 7. Деплой Нажмите «Заказать». Как только процесс начнется, на вкладке «Деплой» появится лог. Если во время деплоя произойдет ошибка, в логе отобразится ее причина. Лог будет автоматически проанализирован нейросетью, и вы увидите список возможных причин возникновения ошибки. После завершения деплоя статус приложения обновится, а в логе появится сообщение об успешном завершении. ![Scr 20260127 Kspd](https://content.timeweb.com/assets/90f8613e-ffa7-403b-8448-2f332d6a7377.png?width=2202&height=1664) Технический домен, привязанный по умолчанию, отображается на главной странице раздела «App Platform». ![Scr 20260127 Ksrv](https://content.timeweb.com/assets/0c874c39-8739-4f49-9b11-ac649b4afa73.png?width=2174&height=1556) Также его можно найти во вкладке «Настройки» конкретного приложения. ![Scr 20260127 Ktbk](https://content.timeweb.com/assets/169c44a2-b63d-41f6-bb98-4165a08e3303.png?width=2172&height=1454) Собственный домен можно привязать [по нашей инструкции](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#privyazka-domena). В дальнейшем App Platform будет отслеживать обновления в репозитории и, если включен автодеплой, автоматически перезапускать проект с новыми изменениями. # Деплой приложения Angular Source: https://timeweb.cloud/docs/apps/deploying-frontend-apps/angular Пример Angular-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-angular). Также у нас есть [туториал](https://timeweb.cloud/tutorials/cloud/kak-razvernut-prilozhenie-na-angular) по развертыванию приложения Angular в App Platform. > [!NOTE] > Для версий Angular 16 и ниже директория сборки по умолчанию не использует папку `browser/`. Поэтому эту директорию нужно удалить из пути сборки. Для сборки Angular-проекта по умолчанию выполняются следующие команды: ```bash DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \ curl \ {% if system_dependencies %}{{ system_dependencies | join(' ') }}{% endif %} \ && rm -rf /var/lib/apt/lists/* npm install -g @angular/cli@latest ``` Где `system_dependencies` — зависимости, указанные в панели управления. Далее зависимости устанавливаются с помощью пакетного менеджера — `yarn`, `pnpm` или `npm`, в зависимости от файлов проекта: ```bash yarn install pnpm install npm install ``` # Деплой приложения Ember Source: https://timeweb.cloud/docs/apps/deploying-frontend-apps/ember Пример Ember-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-ember). Для сборки Ember-проекта по умолчанию выполняются следующие команды: ```bash DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \ curl \ {% if system_dependencies %}{{ system_dependencies | join(' ') }}{% endif %} \ && rm -rf /var/lib/apt/lists/* ``` Где `system_dependencies` — зависимости, указанные в панели управления. Далее зависимости устанавливаются с помощью пакетного менеджера — `yarn`, `pnpm` или `npm`, в зависимости от файлов проекта: ```bash yarn install pnpm install npm install ``` # Деплой приложения Next.js Source: https://timeweb.cloud/docs/apps/deploying-frontend-apps/nextjs Пример Next.js-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-next). Также у нас есть [туториал](https://timeweb.cloud/tutorials/cloud/kak-razvernut-prilozhenie-na-next-js) по деплою приложения Next.js в App Platform. Для сборки Next.js-проекта по умолчанию выполняются следующие команды: ```bash DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \ curl \ {% if system_dependencies %}{{ system_dependencies | join(' ') }}{% endif %} \ && rm -rf /var/lib/apt/lists/* ``` Где `system_dependencies` — зависимости, указанные в панели управления. Далее зависимости устанавливаются с помощью пакетного менеджера — `yarn`, `pnpm` или `npm`, в зависимости от файлов проекта: ```bash yarn install pnpm install npm install ``` ## Поддержка SSR При создании приложения вы можете включить поддержку SSR. ![Scr 20260326 Lpkw](https://content.timeweb.com/assets/3308763d-358d-4f23-88ef-75b0da6d33c2.png?width=1726&height=1418) В этом случае приложение перейдет в режим [бэкенд-приложения](https://timeweb.cloud/docs/apps/deploying-backend-applications): - Потребуется выбрать конфигурацию сервера. - Интерфейс панели управления после деплоя будет идентичен бэкенд-приложению. - Можно будет задать команду запуска. Команда запуска по умолчанию: ```bash npm start ``` Отключить поддержку SSR после деплоя нельзя. Чтобы изменить режим, необходимо создать новое приложение с нужной настройкой. # Деплой приложения Nuxt Source: https://timeweb.cloud/docs/apps/deploying-frontend-apps/nuxt Пример Nuxt-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-nuxt). Также у нас есть [туториал](https://timeweb.cloud/tutorials/cloud/kak-razvernut-prilozhenie-na-nuxt) по развертыванию Nuxt в App Platform. Для сборки Nuxt-проекта по умолчанию выполняются следующие команды: ```bash DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \ curl \ {% if system_dependencies %}{{ system_dependencies | join(' ') }}{% endif %} \ && rm -rf /var/lib/apt/lists/* ``` Где `system_dependencies` — зависимости, указанные в панели управления. Далее зависимости устанавливаются с помощью пакетного менеджера — `yarn`, `pnpm` или `npm`, в зависимости от файлов проекта: ```bash yarn install pnpm install npm install ``` ## Поддержка SSR При создании приложения вы можете включить поддержку SSR. ![Scr 20260326 Lmcm](https://content.timeweb.com/assets/eec14251-d3d0-44fc-82f0-c0c00433ba62.png?width=1650&height=1436) В этом случае приложение перейдет в режим [бэкенд-приложения](https://timeweb.cloud/docs/apps/deploying-backend-applications): - Потребуется выбрать конфигурацию сервера. - Интерфейс панели управления после деплоя будет идентичен бэкенд-приложению. - Можно будет задать команду запуска. Команда запуска по умолчанию: ```shell node .output/server/index.mjs ``` Отключить поддержку SSR после деплоя нельзя. Чтобы изменить режим, необходимо создать новое приложение с нужной настройкой. # Деплой приложения Preact Source: https://timeweb.cloud/docs/apps/deploying-frontend-apps/preact Пример Preact-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-preact). Для сборки Preact-проекта по умолчанию выполняются следующие команды: ```bash DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \ curl \ {% if system_dependencies %}{{ system_dependencies | join(' ') }}{% endif %} \ && rm -rf /var/lib/apt/lists/* ``` Где `system_dependencies` — зависимости, указанные в панели управления. Далее зависимости устанавливаются с помощью пакетного менеджера — `yarn`, `pnpm` или `npm`, в зависимости от файлов проекта: ```bash yarn install pnpm install npm install ``` # Деплой приложения React Source: https://timeweb.cloud/docs/apps/deploying-frontend-apps/react Пример React-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-react). Также у нас есть [туториал](https://timeweb.cloud/tutorials/react/kak-razvernut-prilozhenie-na-react) с практическим примером развертывания React в App Platform. Для сборки React-проекта по умолчанию выполняются следующие команды: ```bash DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \ curl \ {% if system_dependencies %}{{ system_dependencies | join(' ') }}{% endif %} \ && rm -rf /var/lib/apt/lists/* ``` Где `system_dependencies` — зависимости, указанные в панели управления. Далее зависимости устанавливаются с помощью пакетного менеджера — `yarn`, `pnpm` или `npm`, в зависимости от файлов проекта: ```bash yarn install pnpm install npm install ``` # Деплой приложения Svelte Source: https://timeweb.cloud/docs/apps/deploying-frontend-apps/svelte Пример Svelte-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-svelte). Для сборки Svelte-проекта по умолчанию выполняются следующие команды: ```bash DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \ curl \ {% if system_dependencies %}{{ system_dependencies | join(' ') }}{% endif %} \ && rm -rf /var/lib/apt/lists/* ``` Где `system_dependencies` — зависимости, указанные в панели управления. Далее зависимости устанавливаются с помощью пакетного менеджера — `yarn`, `pnpm` или `npm`, в зависимости от файлов проекта: ```bash yarn install pnpm install npm install ``` # Деплой приложения Vue Source: https://timeweb.cloud/docs/apps/deploying-frontend-apps/vue Пример Vue-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-vue). Также у нас есть инструкция [с примером деплоя](https://timeweb.cloud/tutorials/cloud/supabase-primery-ispolzovaniya-v-web-razrabotke-s-vue#deploj-prilojeniya-na-vue--supabase) приложения Vue с Supabase. Для сборки Vue-проекта по умолчанию выполняются следующие команды: ```bash DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \ curl \ {% if system_dependencies %}{{ system_dependencies | join(' ') }}{% endif %} \ && rm -rf /var/lib/apt/lists/* ``` Где `system_dependencies` — зависимости, указанные в панели управления. Далее зависимости устанавливаются с помощью пакетного менеджера — `yarn`, `pnpm` или `npm`, в зависимости от файлов проекта: ```bash yarn install pnpm install npm install ``` # Другой JS-фреймворк Source: https://timeweb.cloud/docs/apps/deploying-frontend-apps/other Для сборки проекта на любом JS-фреймворке мы по умолчанию выполним команды: ```bash DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \ curl \ {% if system_dependencies %}{{ system_dependencies | join(' ') }}{% endif %} \ && rm -rf /var/lib/apt/lists/* ``` Где `system_dependencies` — зависимости, указанные в панели управления. Далее зависимости устанавливаются с помощью пакетного менеджера — `yarn`, `pnpm` или `npm`, в зависимости от файлов проекта: ```bash yarn install pnpm install npm install ``` # HTML/CSS/JS Source: https://timeweb.cloud/docs/apps/deploying-frontend-apps/static-website Формат HTML/CSS/JS предназначен для деплоя уже собранных frontend-приложений и статических сайтов. Например, его можно использовать для проектов, созданных с помощью Hugo, Astro, VitePress, Jekyll и других статических генераторов. В отличие от Vue, React или других frontend-фреймворков, приложение не собирается на стороне платформы. App Platform сразу использует готовые статические файлы из репозитория. ## Подготовка проекта Перед деплоем необходимо локально собрать проект. В результате должна появиться директория со статическими файлами — например: - `dist` - `build` - `public` В директории должен находиться файл `index.html` и остальные ресурсы сайта. Например, для Hugo сборка выполняется командой: ```bash hugo ``` После этого статические файлы появятся в директории `public`. ## Особенности деплоя Для HTML/CSS/JS-приложений недоступны: - команда сборки; - директория сборки; - настройка зависимостей. Это связано с тем, что приложение считается уже собранным и не требует этапа сборки во время деплоя. ## Директория проекта Если статические файлы находятся не в корне репозитория, укажите путь до директории проекта. Например, если собранный сайт находится в директории `/public`, укажите: ```bash public ``` В этом случае App Platform будет отдавать файлы из этой директории. # Деплой backend-приложений Source: https://timeweb.cloud/docs/apps/deploying-backend-applications Создать backend-приложение можно из панели управления. Для этого перейдите в раздел «[App Platform](https://timeweb.cloud/my/apps)», нажмите кнопку «Добавить» и выберите тип «Backend». ### Шаг 1. Выбор приложения В пункте «Тип» выберите фреймворк, который использует ваше приложение. Вы можете отсортировать фреймворки по языку программирования. ![Image4](https://content.timeweb.com/assets/863f303b-958c-4af1-95ea-868407ef0cae.png?width=501&height=712) ### Шаг 2. Подключение репозитория ![Image9](https://content.timeweb.com/assets/b7815c2e-bf78-40ec-a45b-6af45e15aff5.png?width=505&height=215) Вы можете подключить репозиторий одним из способов: - Из своего аккаунта GitHub, GitLab или Bitbucket. Кликните на название платформы, авторизуйтесь и выберите нужный репозиторий. Если вы уже авторизованы, панель сразу покажет доступные репозитории. - По URL, указав ссылку на репозиторий, созданный на любой платформе. Нажмите «Подключите git-репозиторий по URL» (или «Добавить аккаунт» → «Подключите git-репозиторий по URL») и укажите Git URL. Если репозиторий приватный — введите логин и пароль или токен доступа. При подключении по ссылке автодеплой будет недоступен — для обновления приложения при изменениях в коде потребуется запускать деплой вручную. Подробнее о подключении репозиториев — [здесь](https://timeweb.cloud/docs/apps/connecting-repositories). ### Шаг 3. Выбор ветки и коммита ![Image1](https://content.timeweb.com/assets/27b72f27-84ba-440e-abd7-981521d16f15.png?width=745&height=233) Выберите ветку для деплоя. В меню выбора ветки отображаются только 200 последних веток. При подключении репозитория GitLab, GitHub или Bitbucket также отображается ветка по умолчанию (`master`, `main` или `default`). По умолчанию мы включаем опцию «Сборка по последнему выполненному коммиту». В этом случае App Platform выполнит деплой по самому актуальному коммиту, а в дальнейшем будет автоматически пересобирать приложение при добавлении новых коммитов в репозиторий. При необходимости вы сможете [отключить автодеплой](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#avtodeploj) в дальнейшем. Если вы хотите выбрать конкретный коммит вручную — отключите эту опцию. ![Image6](https://content.timeweb.com/assets/0c89ef1f-e432-41ee-bca5-bd2297eb33dd.png?width=763&height=470) ### Шаг 4. Регион и конфигурация сервера Приложения разворачиваются на отдельных облачных серверах. Выберите регион размещения и подходящую конфигурацию сервера. Вы можете выбрать один из готовых тарифов или настроить конфигурацию вручную на вкладке «Произвольная». В дальнейшем, если потребуется, вы сможете перейти на более мощный тариф. ![Be4444cf 7b4f 4ddf B9db A735db4d30ab](https://content.timeweb.com/assets/14af2fb6-4726-43ce-a85d-583abc04b9b0.png?width=759&height=817) ### Шаг 5. Настройка приватной сети ![Image2](https://content.timeweb.com/assets/30e5e420-a7e0-464f-89f8-4ba5bf129361.png?width=412&height=193) На этом этапе вы можете выбрать приватную сеть, в которую будет добавлено приложение, и указать IP-адрес, который оно будет использовать. Обратите внимание, что изменить приватную сеть после деплоя нельзя. Если для приложения настроен приватный IP-адрес, во время повторного деплоя возможна кратковременная недоступность приложения. Это связано с тем, что перед запуском новой версии необходимо освободить занятые порты. ### Шаг 6. Настройка приложения ![8900c053 7978 4e9c 83ce F58f5b8fbdcd](https://content.timeweb.com/assets/bf136a70-5a1f-4cad-8587-b2a1aaf8e379.png?width=660&height=713) На этом этапе можно: - задать команду сборки; - установить зависимости; - указать команду запуска; - задать путь до директории проекта; - задать [путь проверки состояния](https://timeweb.cloud/docs/apps/healthcheck-path); - задать переменные окружения. Если нужны дополнительные системные пакеты (например, для сборки проекта), укажите их в разделе «Зависимости». Они будут переданы в команду `apt install`. Несколько зависимостей указываются через пробел. В большинстве случаев команда запуска определяется автоматически — ее можно не менять. Если файлы вашего проекта размещены не в корне репозитория, а в поддиректории, укажите путь к ней в поле «Путь до директории проекта». При указании пути: - Рабочая директория переключается на указанную папку. - Зависимости устанавливаются из файлов проекта в этой папке. - Команды сборки и запуска также выполняются из этой папки. У вас будет возможность [внести изменения](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#smena-parametrov-i-novyj-deploj) в любые из этих параметров в дальнейшем и перезапустить деплой с новыми настройками, если потребуется. ### Шаг 7. Информация о приложении Задайте свое имя приложения, если требуется, и комментарий к нему. Это данные, которые будут отображаться в панели управления. Также выберите, в какой проект его нужно добавить. ![Image8](https://content.timeweb.com/assets/1f79ee3f-9784-48e0-9a55-191fe9eeb555.png?width=507&height=308) Эти настройки также можно изменить в дальнейшем. ### Шаг 8. Деплой Нажмите «Запустить деплой». Как только процесс начнется, вы увидите лог деплоя на вкладке «Деплой». Как правило, он содержит всю необходимую информацию для устранения возможных ошибок. Если что-то пойдет не так, например, из-за наличия ошибок в коде, в логе будут выведены уведомления о них с уточнением причины проблемы. При первом развертывании проекта установка сервера может занять некоторое время. Как только процесс завершится, статус приложения обновится, а также вы увидите сообщение об этом в логе. ![Image5](https://content.timeweb.com/assets/41e738d6-5281-4e99-bc31-a8b0ad5b7c18.png?width=1022&height=846) Готово! IP-адрес приложения и бесплатный технический домен, привязанный к нему по умолчанию, можно найти на вкладе «Дашборд». Приложение будет доступно по 443 порту; порт 80 также открыт. Привязать собственный домен можно [по нашей инструкции](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#privyazka-domena). ![Image10](https://content.timeweb.com/assets/ac357161-c86c-46fb-829c-d18cb6895dd4.png?width=1010&height=802) В дальнейшем App Platform будет отслеживать обновления в репозитории и, если включен [автодеплой](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#avtodeploj), автоматически перезапускать проект с новыми изменениями. # Деплой приложения Phoenix Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/phoenix > [!NOTE] > Пример Phoenix-приложения для деплоя можно найти [на Гитхабе](https://github.com/timeweb-cloud-apps/app-example-phoenix). ## Сборка приложения При сборке приложения используется следующая среда: - Elixir 1.15–1.19, версия выбирается при создании приложения в App Platofrm - Erlang - inotify-tools По умолчанию во время сборки будут выполнены следующие команды: ```shell apt install -y elixir erlang inotify-tools --fix-missing ``` Для запуска используется команда по умолчанию: ```shell mix phx.server ``` Убедитесь, что в корне проекта находится файл `mix.exs`, и он содержит корректную конфигурацию Phoenix-приложения. ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Beego Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/beego > [!NOTE] > Пример Beego-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-beego). ## Сборка приложения При сборке приложения используется следующая среда: - Go (устанавливается из PPA `longsleep/golang-backports`) По умолчанию во время сборки будут выполнены следующие команды: ```shell add-apt-repository -y ppa:longsleep/golang-backports && apt-get install -y golang-go --fix-missing ``` Если в проекте присутствует файл `go.mod`, дополнительно будут установлены все зависимости: ```shell go mod download ``` Для запуска используется команда по умолчанию: ```shell go run main.go ``` Где `main.go` — основной файла проекта, который инициализирует запуск приложения. Убедитесь, что файл называется именно так. ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Gin Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/gin > [!NOTE] > Пример Gin-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-gin). Также у нас есть [туториал](https://timeweb.cloud/tutorials/go/kak-razvernut-prilozhenie-na-gin) с примером развертывания приложения Gin в App Platform. ## Сборка приложения При сборке приложения используется следующая среда: - Go (устанавливается из PPA `longsleep/golang-backports`) По умолчанию во время сборки будут выполнены следующие команды: ```shell add-apt-repository -y ppa:longsleep/golang-backports && apt-get install -y golang-go --fix-missing ``` Если в проекте присутствует файл `go.mod`, будут установлены все зависимости, указанные в нем: ```shell go mod download ``` Для запуска по умолчанию используется команда: ```shell go run main.go ``` Где `main.go` — основной файла проекта, который инициализирует запуск приложения. Убедитесь, что файл называется именно так. ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Spring Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/spring > [!NOTE] > Пример Spring-приложения для деплоя можно найти на[Гитхабе](https://github.com/timeweb-cloud-apps/app-example-spring). ## Сборка приложения При сборке приложения используется следующая среда: - OpenJDK 8, 11, 17, 18, 19, 21 или 25 - Maven Во время сборки будут выполнены следующие команды: ```shell apt install -y openjdk-{{env_version}}-jre-headless maven ``` Для запуска используется команда по умолчанию: ```shell mvn spring-boot:run ``` Убедитесь, что в проекте присутствует файл `pom.xml`, и в нем корректно описана зависимость `spring-boot-starter`. ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Ktor Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/ktor > [!NOTE] > Пример Ktor-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-ktor). ## Сборка приложения При сборке приложения используется среда: - OpenJDK - Kotlin - Gradle Сборка выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». Если в проекте есть файл `gradlew`, шаблон выполнит сборку через Gradle Wrapper. Если файла `gradlew` нет, будет использован системный Gradle. По умолчанию во время сборки будет выполнена команда: ```bash ./gradlew buildFatJar --no-daemon ``` Если Gradle Wrapper не найден: ```bash gradle buildFatJar --no-daemon ``` После сборки App Platform выбирает JAR-файл для запуска в следующем порядке: 1. Если в директории `build/libs/` есть файл вида `*-all.jar`, будет использован он. Обычно так называется `fat JAR`, который собирает Ktor. 2. Если файла `*-all.jar` нет, будет использован первый найденный `.jar` из директории `build/libs/`. Убедитесь, что в проекте корректно настроен Ktor Gradle plugin и доступна задача `buildFatJar`. ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения ASP.NET Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/asp-net > [!NOTE] > Пример .NET-приложения для деплоя можно найти[на Гитхабе](https://github.com/timeweb-cloud-apps/app-example-net-core). У нас также есть [туториал](https://timeweb.cloud/tutorials/cloud/kak-razvernut-prilozhenie-asp-net-core) с примером развертывания приложения ASP.NET в сервисе App Platform. При сборке приложения используется одна из следующих версий .NET (в зависимости от выбора при создании приложения): - .NET 8.0 - .NET 9.0 - .NET 10.0 При запуске приложения по умолчанию устанавливается переменная окружения: ```shell ASPNETCORE_URLS=http://0.0.0.0:8080 ``` Это необходимо для корректного проброса порта и работы приложения внутри контейнера. Команда запуска по умолчанию: ```shell dotnet run ``` ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Express Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/express В App Platform для Express-приложений доступны три рантайма: Node.js, Bun и Deno. Процесс деплоя зависит от выбранного рантайма: отличаются пакетный менеджер, команда сборки, команда запуска и файл, в котором описываются скрипты или задачи. ## Сборка приложения Node.js > [!NOTE] > Пример Express.js-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-express). При сборке приложения используется следующая среда: - Node.js: 20, 22 или 24 - npm - yarn - PM2 (последняя версия) Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». Во время сборки будут выполнены следующие команды: ```shell apt install -y nodejs --fix-missing npm install pm2@latest -g npm install express ``` Если в проекте есть файл `package.json` и используется `yarn`, дополнительно будет выполнено: ```shell apt remove -y cmdtest yarn npm install --global yarn cd / && yarn install --check-files ``` В остальных случаях при наличии `package.json`: ```shell cd / && npm install ``` `` — путь к каталогу, в котором находится `package.json`. Для запуска используется менеджер процессов PM2. Команда по умолчанию: ```shell pm2 start --no-daemon файл.js ``` Вместо `файл.js` может использоваться один из следующих файлов : - `app.js` - `server.js` - `main.js` - `index.js` Deno > [!NOTE] > Пример Express.js-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-express-deno). При сборке приложения используется следующая среда: - Deno: 2.7.14, 2.7.10 или 2.6.0 - пакетный менеджер `deno` Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». По умолчанию отдельная команда сборки не требуется. App Platform запускает приложение в контейнере с Deno, поэтому команда `deno compile` для типового деплоя не используется. Для запуска используется команда: ```bash deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts ``` Также команду запуска можно описать через задачу: ```bash deno task start ``` В этом случае App Platform выполнит команду `deno task start`, а Deno запустит задачу `start` из файла `deno.json`. В этой задаче укажите команду `deno run`, флаги доступа и путь к исполняемому файлу приложения. Например: ```js "tasks": { "start": "deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts" } ``` В этом примере основной файл приложения находится по пути `main.ts`. Если в вашем проекте используется другой файл, укажите путь к нему. ### Флаги доступа Deno требует явно указывать разрешения, которые нужны приложению: - `--allow-net` — сетевые запросы - `--allow-read` — чтение файлов - `--allow-write` — запись файлов - `--allow-env` — переменные окружения - `--allow-run` — запуск подпроцессов - `--allow-ffi` — нативные библиотеки - `--allow-hrtime` — высокоточный таймер - `--allow-sys` — системная информация, например ОС или CPU - `--allow-all` или `-A` — все разрешения сразу - `--watch` — перезапуск приложения при изменениях Например, если приложению нужны сетевые запросы, переменные окружения и чтение файлов, используйте: ``` deno run --allow-net --allow-env --allow-read src/index.ts ``` Bun > [!NOTE] > Пример Express.js-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-express-bun). При сборке приложения используется следующая среда: - Bun - пакетный менеджер `bun` Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». Для сборки используется команда: ```bash bun build ``` Для запуска используется команда: ```bash bun run start ``` App Platform запускает скрипт `start` из файла `package.json`. В этом скрипте укажите путь к исполняемому файлу приложения. Например: ```js "scripts": { "start": "bun run src/main.ts" } ``` В этом примере основной файл приложения находится по пути `src/main.ts`. Если в вашем проекте используется другой файл, укажите путь к нему. ## Устранение неполадок ### Не удается выполнить развертывание Если с развертыванием возникают проблемы, в первую очередь проверьте лог деплоя. Вы сможете определить, в какой момент что-то пошло не так. Зачастую проблемы связаны с командой запуска. Проверьте, что всё в вашей среде разработки работает с pm2. Убедитесь, что все модули, необходимые для запуска приложения, присутствуют в файле `package.json`. ### Please add build instruction to your script section in package.json Проблема связана с тем, что команда сборки `yarn build` обращается к файлу `package.json`, и если значение директивы `build` не указано, возникает ошибка. Чтобы устранить ее, необходимо добавить необходимые директивы в секцию `scripts` файла `package.json`. Подробнее об использовании `scripts` — [здесь](https://docs.npmjs.com/cli/v10/using-npm/scripts). ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Fastify Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/fastify В App Platform для Fastify-приложений доступны три рантайма: Node.js, Bun и Deno. Процесс деплоя зависит от выбранного рантайма: отличаются пакетный менеджер, команда сборки, команда запуска и файл, в котором описываются скрипты или задачи. ## Сборка приложения Node.js > [!NOTE] > Пример Fastify-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-fastify). При сборке приложения используется следующая среда: - Node.js: 20, 22 или 24 - npm - yarn Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». Если в проекте есть файл `package.json` и используется `yarn`, дополнительно будет выполнено: ```shell apt remove -y cmdtest yarn npm install --global yarn cd / && yarn install --check-files ``` В остальных случаях при наличии `package.json`: ```shell cd / && npm install ``` `` — путь к каталогу, в котором находится `package.json`. Для запуска используется команда: ``` npm run start ``` Deno > [!NOTE] > Пример Fastify-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-fastify-bun). При сборке приложения используется следующая среда: - Deno: 2.7.14, 2.7.10 или 2.6.0 - пакетный менеджер `deno` Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». По умолчанию отдельная команда сборки не требуется. App Platform запускает приложение в контейнере с Deno, поэтому команда `deno compile` для типового деплоя не используется. Для запуска используется команда: ```bash deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts ``` Также команду запуска можно описать через задачу: ```bash deno task start ``` В этом случае App Platform выполнит команду `deno task start`, а Deno запустит задачу `start` из файла `deno.json`. В этой задаче укажите команду `deno run`, флаги доступа и путь к исполняемому файлу приложения. Например: ```js "tasks": { "start": "deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts" } ``` В этом примере основной файл приложения находится по пути `main.ts`. Если в вашем проекте используется другой файл, укажите путь к нему. ### Флаги доступа Deno требует явно указывать разрешения, которые нужны приложению: - `--allow-net` — сетевые запросы - `--allow-read` — чтение файлов - `--allow-write` — запись файлов - `--allow-env` — переменные окружения - `--allow-run` — запуск подпроцессов - `--allow-ffi` — нативные библиотеки - `--allow-hrtime` — высокоточный таймер - `--allow-sys` — системная информация, например ОС или CPU - `--allow-all` или `-A` — все разрешения сразу - `--watch` — перезапуск приложения при изменениях Например, если приложению нужны сетевые запросы, переменные окружения и чтение файлов, используйте: ``` deno run --allow-net --allow-env --allow-read src/index.ts ``` Bun > [!NOTE] > Пример Fastify-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-fastify-deno). При сборке приложения используется следующая среда: - Bun - пакетный менеджер `bun` Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». Для сборки используется команда: ```bash bun build ``` Для запуска используется команда: ```bash bun run start ``` App Platform запускает скрипт `start` из файла `package.json`. В этом скрипте укажите путь к исполняемому файлу приложения. Например: ```js "scripts": { "start": "bun run src/main.ts" } ``` В этом примере основной файл приложения находится по пути `src/main.ts`. Если в вашем проекте используется другой файл, укажите путь к нему. ## Устранение неполадок ### Не удается выполнить развертывание Если с развертыванием возникают проблемы, в первую очередь проверьте лог деплоя. Вы сможете определить, в какой момент что-то пошло не так. Зачастую проблемы связаны с командой запуска. Убедитесь, что все модули, необходимые для запуска приложения, присутствуют в файле `package.json`. ### Please add build instruction to your script section in package.json Проблема связана с тем, что команда сборки обращается к файлу `package.json`, и если значение директивы `build` не указано, возникает ошибка. Чтобы ее устранить, следует добавить необходимые директивы в секцию `scripts` файла `package.json`. Подробнее об использовании `scripts` — [здесь](https://docs.npmjs.com/cli/v10/using-npm/scripts). ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Hapi Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/hapi В App Platform для Hapi-приложений доступны три рантайма: Node.js, Bun и Deno. Процесс деплоя зависит от выбранного рантайма: отличаются пакетный менеджер, команда сборки, команда запуска и файл, в котором описываются скрипты или задачи. ## Сборка приложения Node.js > [!NOTE] > Пример Hapi-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-hapi). При сборке приложения используется следующая среда: - Node.js: 20, 22 или 24 - npm - yarn - PM2 (последняя версия) Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». Во время сборки будут выполнены следующие команды: ```shell apt install -y nodejs --fix-missing npm install pm2@latest -g npm install hapi @hapi/hapi ``` Если в проекте есть файл `package.json` и используется `yarn`, дополнительно будет выполнено: ```shell apt remove -y cmdtest yarn npm install --global yarn cd / && yarn install --check-files ``` В остальных случаях при наличии `package.json`: ```shell cd / && npm install ``` `` — путь к каталогу, в котором находится `package.json`. Для запуска используется менеджер процессов PM2. Команда по умолчанию: ``` pm2 start --no-daemon index.js ``` Deno > [!NOTE] > Пример Hapi-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-hapi-deno). При сборке приложения используется следующая среда: - Deno: 2.7.14, 2.7.10 или 2.6.0 - пакетный менеджер `deno` Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». По умолчанию отдельная команда сборки не требуется. App Platform запускает приложение в контейнере с Deno, поэтому команда `deno compile` для типового деплоя не используется. Для запуска используется команда: ```bash deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts ``` Также команду запуска можно описать через задачу: ```bash deno task start ``` В этом случае App Platform выполнит команду `deno task start`, а Deno запустит задачу `start` из файла `deno.json`. В этой задаче укажите команду `deno run`, флаги доступа и путь к исполняемому файлу приложения. Например: ```js "tasks": { "start": "deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts" } ``` В этом примере основной файл приложения находится по пути `main.ts`. Если в вашем проекте используется другой файл, укажите путь к нему. ### Флаги доступа Deno требует явно указывать разрешения, которые нужны приложению: - `--allow-net` — сетевые запросы - `--allow-read` — чтение файлов - `--allow-write` — запись файлов - `--allow-env` — переменные окружения - `--allow-run` — запуск подпроцессов - `--allow-ffi` — нативные библиотеки - `--allow-hrtime` — высокоточный таймер - `--allow-sys` — системная информация, например ОС или CPU - `--allow-all` или `-A` — все разрешения сразу - `--watch` — перезапуск приложения при изменениях Например, если приложению нужны сетевые запросы, переменные окружения и чтение файлов, используйте: ``` deno run --allow-net --allow-env --allow-read src/index.ts ``` Bun > [!NOTE] > Пример Hapi-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-hapi-bun). При сборке приложения используется следующая среда: - Bun - пакетный менеджер `bun` Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». Для сборки используется команда: ```bash bun build ``` Для запуска используется команда: ```bash bun run start ``` App Platform запускает скрипт `start` из файла `package.json`. В этом скрипте укажите путь к исполняемому файлу приложения. Например: ```js "scripts": { "start": "bun run src/main.ts" } ``` В этом примере основной файл приложения находится по пути `src/main.ts`. Если в вашем проекте используется другой файл, укажите путь к нему. ## Устранение неполадок ### Не удается выполнить развертывание Если с развертыванием возникают проблемы, в первую очередь проверьте лог деплоя. Вы сможете определить, в какой момент что-то пошло не так. Зачастую проблемы связаны с командой запуска. Проверьте, что всё в вашей среде разработки работает с `pm2`. Убедитесь, что все модули, необходимые для запуска приложения, присутствуют в файле `package.json`. ### Please add build instruction to your script section in package.json Проблема связана с тем, что команда сборки `yarn build` обращается к файлу `package.json`, и если значение директивы `build` не указано, возникает ошибка. Чтобы ее устранить, нужно добавить необходимые директивы в секцию `scripts` файла `package.json`. Подробнее об использовании `scripts` — [здесь](https://docs.npmjs.com/cli/v10/using-npm/scripts). ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Nest Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/nest В App Platform для Nest-приложений доступны три рантайма: Node.js, Bun и Deno. Процесс деплоя зависит от выбранного рантайма: отличаются пакетный менеджер, команда сборки, команда запуска и файл, в котором описываются скрипты или задачи. ## Сборка приложения Node.js > [!NOTE] > Пример эталонного Nest-приложения для запуска можно найти [в нашем Гитхабе](https://github.com/timeweb-cloud-apps/app-example-nest?roistat_visit=11910906). Также у нас есть [туториал](https://timeweb.cloud/tutorials/nodejs/kak-razvernut-prilozhenie-na-nest) с примером развертывания приложения Nest в App Platform. При сборке приложения используется следующая среда: - Node.js: 20, 22 или 24 - npm - yarn Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». Во время сборки будут выполнены следующие команды: ```shell apt remove -y cmdtest yarn npm install --global yarn cd / && yarn install --check-files ``` Если в проекте есть файл `package.json` и используется `yarn`, дополнительно будет выполнено: ```shell apt remove -y cmdtest yarn npm install --global yarn cd / && yarn install --check-files ``` В остальных случаях при наличии `package.json`: ```shell cd / && npm install ``` `` — путь к каталогу, в котором находится `package.json`. Для запуска используется команда по умолчанию: ``` npm run start:prod ``` Deno > [!NOTE] > Пример Nest-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-nest-deno). При сборке приложения используется следующая среда: - Deno: 2.7.14, 2.7.10 или 2.6.0 - пакетный менеджер `deno` Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». По умолчанию отдельная команда сборки не требуется. App Platform запускает приложение в контейнере с Deno, поэтому команда `deno compile` для типового деплоя не используется. Для запуска используется команда: ```bash deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts ``` Также команду запуска можно описать через задачу: ```bash deno task start ``` В этом случае App Platform выполнит команду `deno task start`, а Deno запустит задачу `start` из файла `deno.json`. В этой задаче укажите команду `deno run`, флаги доступа и путь к исполняемому файлу приложения. Например: ```js "tasks": { "start": "deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts" } ``` В этом примере основной файл приложения находится по пути `main.ts`. Если в вашем проекте используется другой файл, укажите путь к нему. ### Флаги доступа Deno требует явно указывать разрешения, которые нужны приложению: - `--allow-net` — сетевые запросы - `--allow-read` — чтение файлов - `--allow-write` — запись файлов - `--allow-env` — переменные окружения - `--allow-run` — запуск подпроцессов - `--allow-ffi` — нативные библиотеки - `--allow-hrtime` — высокоточный таймер - `--allow-sys` — системная информация, например ОС или CPU - `--allow-all` или `-A` — все разрешения сразу - `--watch` — перезапуск приложения при изменениях Например, если приложению нужны сетевые запросы, переменные окружения и чтение файлов, используйте: ``` deno run --allow-net --allow-env --allow-read src/index.ts ``` Bun > [!NOTE] > Пример Nest-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-nest-bun). При сборке приложения используется следующая среда: - Bun - пакетный менеджер `bun` Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». Для сборки используется команда: ```bash bun build ``` Для запуска используется команда: ```bash bun run start ``` App Platform запускает скрипт `start` из файла `package.json`. В этом скрипте укажите путь к исполняемому файлу приложения. Например: ```js "scripts": { "start": "bun run src/main.ts" } ``` В этом примере основной файл приложения находится по пути `src/main.ts`. Если в вашем проекте используется другой файл, укажите путь к нему. ## Устранение неполадок ### Не удается выполнить развертывание Если с развертыванием возникают проблемы, в первую очередь проверьте лог деплоя. Вы сможете определить, в какой момент что-то пошло не так. Зачастую проблемы связаны с командой запуска. Убедитесь, что все модули, необходимые для запуска приложения, присутствуют в файле `package.json`. ### Please add build instruction to your script section in package.json Проблема связана с тем, что команда сборки `npm run build` обращается к файлу `package.json`, и если значение директивы `build` не указано, возникает ошибка. Чтобы ее устранить, следует добавить необходимые директивы в секцию `scripts` файла `package.json`. Подробнее об использовании `scripts` — [здесь](https://docs.npmjs.com/cli/v10/using-npm/scripts). ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Laravel Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/laravel > [!NOTE] > Пример Laravel-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-laravel). Также у нас есть [туториал](https://timeweb.cloud/tutorials/cloud/kak-razvernut-prilozhenie-na-laravel) по деплою приложения Laravel в App Platform. ## Сборка приложения При сборке приложения используется следующая среда: - PHP 8.2–8.5 (версия выбирается при создании приложения) - Composer Для запуска приложения по умолчанию используется команда: ```shell php artisan serve --host=0.0.0.0 --port=8000 ``` После деплоя для приложения будет автоматически настроен SSL-сертификат, и оно будет открываться по HTTPS. Однако Laravel по умолчанию может продолжать генерировать ссылки с HTTP, что может вызывать ошибки при выполнении AJAX-запросов или отправке форм. Чтобы принудительно использовать HTTPS, добавьте в файл `app/Providers/AppServiceProvider.php` следующий код: ```php public function boot() { URL::forceScheme('https'); } ``` ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Symfony Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/symfony > [!NOTE] > Пример Symfony-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-symfony). ## Сборка приложения При сборке приложения используется следующая среда: - PHP 8.2–8.5 (версия выбирается при создании приложения) - Composer - Symfony CLI (устанавливается автоматически) Для запуска используется команда по умолчанию: ```shell symfony server:start ``` Убедитесь, что в проекте присутствует `symfony.lock`, а также правильно настроены переменные окружения и .env-файлы. ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Yii Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/yii > [!NOTE] > Пример Yii-приложения для деплоя можно найти на[Гитхабе](https://github.com/timeweb-cloud-apps/app-example-yii). ## Сборка приложения При сборке приложения используется следующая среда: - PHP 8.2–8.5 (версия выбирается при создании приложения) - Composer Для запуска используется команда по умолчанию: ```shell php yii serve 0.0.0.0 ``` ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Celery Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/celery > [!NOTE] > Пример Celery-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-celery). ## Сборка приложения При сборке приложения используется следующая среда: - Python 3.10-3.14 (версия выбирается при создании приложения) - pip - gunicorn - Системные библиотеки для работы с PostgreSQL и MySQL По умолчанию во время сборки будут выполнены следующие команды: ```shell apt-get install -y python3 python3-pip gunicorn python3-psycopg2 libpq-dev python-dev default-mysql-client python3-dev default-libmysqlclient-dev python3-mysqldb --fix-missing pip3 install psycopg2 ln /usr/bin/python3 /usr/bin/python -sf ln /usr/bin/pip3 /usr/bin/pip -sf pip3 install celery ``` Для установки зависимостей в команду сборки добавьте следующую строку: ```shell pip3 install --upgrade -r requirements.txt ``` Для запуска по умолчанию используется команда: ```shell celery -A tasks worker --loglevel=INFO ``` ## Требования к приложению - Убедитесь, что основной файл проекта называется `main.py`. - Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. ## Устранение неполадок ### Не удается выполнить развертывание Если с развертыванием возникают проблемы, в первую очередь проверьте лог деплоя. Вы сможете определить, в какой момент что-то пошло не так. Зачастую проблемы связаны с командой запуска. Проверьте, что всё в вашей среде разработки работает с gunicorn. Убедитесь, что все модули, необходимые для запуска приложения, присутствуют в файле `requirements.txt`. # Деплой приложения Django Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/django > [!NOTE] > Пример Django-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-django). Также у нас есть [туториал](https://timeweb.cloud/tutorials/cloud/kak-razvernut-prilozhenie-na-django) с практическим примером развертывания Django-приложения в App Platform. ## Сборка приложения При сборке приложения используется следующая среда: - Python 3.10–3.14 (версия выбирается при создании приложения) - pip - gunicorn - Системные библиотеки для работы с PostgreSQL и MySQL По умолчанию во время сборки будут выполнены следующие команды: ```shell apt-get install -y python3 python3-pip gunicorn python3-psycopg2 libpq-dev python-dev default-mysql-client python3-dev default-libmysqlclient-dev python3-mysqldb --fix-missing pip3 install psycopg2 django ln /usr/bin/python3 /usr/bin/python -sf ln /usr/bin/pip3 /usr/bin/pip -sf ``` Для установки зависимостей в команду сборки добавьте следующую строку: ```shell pip3 install --upgrade -r requirements.txt ``` Для запуска по умолчанию используется команда: ```shell python3 manage.py runserver 0.0.0.0:8000 ``` Также вы можете задать переменные. Например, можно задать хосты, с которых Django может получать запросы. Для этого укажите ключ `DJANGO_ALLOWED_HOSTS`, а в значении задайте IP-адреса или хостнеймы. Можно указать несколько хостов через запятую, без пробелов. По умолчанию эта переменная принимает значение `127.0.0.1,localhost`. Подробнее о настройках можно почитать в [документации Django](https://docs.djangoproject.com/en/5.2/ref/settings/). ## Требования к приложению - Убедитесь, что файл `manage.py` находится в корне проекта и используется как точка входа в приложение. - Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. - В настройках необходимо обязательно указать `DEBUG=True`, иначе статика не будет раздаваться. ## Устранение неполадок ### Не удается выполнить развертывание Если с развертыванием возникают проблемы, в первую очередь проверьте лог деплоя. Вы сможете определить, в какой момент что-то пошло не так. Зачастую проблемы связаны с командой запуска. Проверьте, что всё в вашей среде разработки работает с gunicorn. Убедитесь, что все модули, необходимые для запуска приложения, присутствуют в файле `requirements.txt`. ### DisallowedHost at /Invalid HTTP_HOST Проблема возникает в случае, если в файле `settings.py` не задано имя хоста. Данная настройка является мерой безопасности для предотвращения атак с подменой HTTP-заголовка Host (HTTP Host header attacks). Для устранения проблемы нужно внести изменения в файл `settings.py`, указав в директиве `ALLOWED_HOSTS` используемый вами домен, например: ```shell ALLOWED_HOSTS = ["your.domain.com"] ``` Вы также можете разрешить все домены, если не хотите использовать эту меру безопасности: ```shell ALLOWED_HOSTS = ["*"] ``` # Деплой приложения FastAPI Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/fastapi > [!NOTE] > Пример FastAPI-приложения для деплоя можно найти на[Гитхабе](https://github.com/timeweb-cloud-apps/app-example-fastapi). ## Сборка приложения При сборке приложения используется следующая среда: - Python 3.10–3.14 (версия выбирается при создании приложения) - pip - gunicorn - Системные библиотеки для работы с PostgreSQL и MySQL По умолчанию во время сборки будут выполнены следующие команды: ```shell apt install -y python3 python3-pip gunicorn python3-psycopg2 libpq-dev python-dev default-mysql-client python3-dev default-libmysqlclient-dev python3-mysqldb --fix-missing pip3 install psycopg2 fastapi uvicorn ln /usr/bin/python3 /usr/bin/python -sf ln /usr/bin/pip3 /usr/bin/pip -sf ``` Для установки зависимостей в команду сборки добавьте следующую строку: ```shell pip3 install --upgrade -r requirements.txt ``` Для запуска по умолчанию используется команда: ```shell uvicorn main:app --host 0.0.0.0 ``` При необходимости вы можете указать порт явно. Например: ```shell uvicorn main:app --host 0.0.0.0 --port 80 ``` ## Требования к приложению - Убедитесь, что основной файл проекта называется `main.py`. - Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Flask Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/flask > [!NOTE] > Пример Flask-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-flask). Также у нас есть [туториал](https://timeweb.cloud/tutorials/cloud/razvertyvanie-proekta-python-flask) по деплою приложения Flask в App Platform. ## Сборка приложения При сборке приложения используется следующая среда: - Python 3.10–3.14 (версия выбирается при создании приложения) - pip - gunicorn - Системные библиотеки для работы с PostgreSQL и MySQL По умолчанию во время сборки будут выполнены следующие команды: ```shell apt install -y python3 python3-pip gunicorn python3-psycopg2 libpq-dev python-dev default-mysql-client python3-dev default-libmysqlclient-dev python3-mysqldb --fix-missing pip3 install psycopg2 flask ln /usr/bin/python3 /usr/bin/python -sf ln /usr/bin/pip3 /usr/bin/pip -sf ``` Для установки зависимостей в команду сборки добавьте следующую строку: ```shell pip3 install --upgrade -r requirements.txt ``` Для корректного деплоя может потребоваться отредактировать команду запуска под ваш проект, задав проброс порта, например: ```shell gunicorn main:app --timeout 60 --bind 0.0.0.0:80 ``` ## Требования к приложению - Убедитесь, что основной файл проекта (точка входа в приложение) имеет имя `main.py`. - Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. ## Устранение неполадок ### Не удается выполнить развертывание Если с развертыванием возникают проблемы, в первую очередь проверьте лог деплоя. Чаще всего ошибки связаны с: - отсутствием файла `main.py` или переменной `app` - неправильной командой запуска - отсутствием зависимостей в `requirements.txt` Убедитесь, что команда `gunicorn main:app` успешно запускается в вашей локальной среде. # Деплой приложения Actix Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/actix > [!NOTE] > Пример Actix-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-actix). ## Сборка приложения При сборке приложения используется среда: - Rust - Cargo Сборка выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». Шаблон использует `multistage build`: на первом этапе собирается бинарный файл в режиме `release`, а на втором запускается готовое приложение. По умолчанию во время сборки будет выполнена команда: ```bash cargo build --locked --release ``` Убедитесь, что в проекте присутствует файл `Cargo.toml`, и в нем корректно описаны зависимости приложения. Флаг `--locked` фиксирует версии зависимостей из `Cargo.lock`, поэтому файл `Cargo.lock` должен быть актуальным и добавленным в репозиторий. Если для сборки нужны дополнительные системные пакеты, например библиотеки для работы с OpenSSL, укажите их в поле «Зависимости». Они будут установлены до запуска `cargo build`. ## Выбор бинарного файла для запуска После сборки App Platform выбирает бинарный файл для запуска в следующем порядке: 1. Если в команде сборки явно указан флаг `--bin ` или `--bin=`, будет использован этот бинарный файл. 2. Если флаг `--bin` не указан, шаблон попробует определить бинарный файл по значению `default-run` из файла `Cargo.toml` через `cargo metadata`. 3. Если `default-run` не задан, шаблон просканирует директорию `target/release`. 4. Если найден ровно один исполняемый бинарный файл, будет запущен он. Если кандидатов несколько, сборка завершится с ошибкой. В этом случае укажите бинарный файл явно в команде сборки: ```bash cargo build --locked --release --bin ``` ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой приложения Axum Source: https://timeweb.cloud/docs/apps/deploying-backend-applications/axum > [!NOTE] > Пример Axum-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-axum). ## Сборка приложения При сборке приложения используется среда: - Rust - Cargo Сборка выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта». Шаблон использует `multistage build`: на первом этапе собирается бинарный файл в режиме `release`, а на втором запускается готовое приложение. По умолчанию во время сборки будет выполнена команда: ```bash cargo build --locked --release ``` Убедитесь, что в проекте присутствует файл `Cargo.toml`, и в нем корректно описаны зависимости приложения. Флаг `--locked` фиксирует версии зависимостей из `Cargo.lock`, поэтому файл `Cargo.lock` должен быть актуальным и добавленным в репозиторий. Если для сборки нужны дополнительные системные пакеты, например библиотеки для работы с OpenSSL, укажите их в поле «Зависимости». Они будут установлены до запуска `cargo build`. ## Выбор бинарного файла для запуска После сборки App Platform выбирает бинарный файл запуска в следующем порядке: 1. Если в команде сборки явно указан флаг `--bin ` или `--bin=`, будет использован этот бинарный файл. 2. Если флаг `--bin` не указан, шаблон попробует определить бинарный файл по значению `default-run` из файла `Cargo.toml` через `cargo metadata`. 3. Если `default-run` не задан, шаблон просканирует директорию `target/release`. 4. Если найден ровно один исполняемый бинарный файл, будет запущен он. Если кандидатов несколько, сборка завершится с ошибкой. В этом случае укажите бинарный файл явно в команде сборки: ```bash cargo build --locked --release --bin ``` ## Требования к приложению Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут. # Деплой из Dockerfile Source: https://timeweb.cloud/docs/apps/deploying-with-dockerfile Сервис App Platform позволяет развернуть приложение с помощью Dockerfile, размещенного в репозитории. Благодаря этому вы можете деплоить любые приложения, в том числе созданные на фронтенд- и бэкенд-фреймворках, которые сервис не поддерживает напрямую. > [!NOTE] > У нас есть [туториал](https://timeweb.cloud/tutorials/cloud/kak-razvernut-veb-prilozhenie-pri-pomoshchi-dockerfile) с примером развертывания приложения через Dockerfile. ### Требования для запуска - Dockerfile может быть размещен в корне репозитория или по пути, который вы укажете в поле «Путь до директории проекта», и должен содержать необходимые инструкции для сборки и запуска и приложения. Пример докерфайла и приложения можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-docker-flask). - В Dockerfile должен быть прописан параметр `EXPOSE`, чтобы сервис мог определить, какой порт должен слушать веб-сервер. Если `EXPOSE` не задан, веб-сервер по умолчанию будет слушать порт контейнера `8080`. Пример: ```shell FROM python:3.6 MAINTAINER Name Name "mail@mail.com" COPY . /app WORKDIR /app RUN pip install -r requirements.txt ENTRYPOINT ["python"] CMD ["app.py"] EXPOSE 3478 ``` - Необходимые переменные окружения могут быть заданы как в самом докерфайле, так в процессе запуска приложения в панели управления. ### Шаг 1. Выбор приложения В пункте «Тип» перейдите на вкладку **Dockerfile.** ![Cd26173f E5e9 45eb 9775 D9dd0f4eced0](https://content.timeweb.com/assets/97afa156-2cc0-4510-a031-81e5518efe43.png?width=759&height=406) ### Шаг 2. Подключение репозитория Выберите репозиторий с приложением. В корне репозитория должен быть размещен Dockerfile. Репозиторий можно подключить: - **Из вашего аккаунта GitHub, GitLab или Bitbucket**. Кликните на название платформы, авторизуйтесь и выберите нужный репозиторий. Если вы уже авторизованы, панель сразу покажет доступные репозитории. - **По URL, указав ссылку на репозиторий, созданный на любой платформе**. Кликните «Подключите git-репозиторий по URL» (либо «Добавить аккаунт» → «Подключите git-репозиторий по URL») и укажите Git URL репозитория. Если репозиторий приватный, введите реквизиты доступа. Подробнее о подключении репозиториев — [здесь](https://timeweb.cloud/docs/apps/connecting-repositories). ### Шаг 3. Выбор ветки и коммита ![517295ae 5c3b 46dd Bff5 48b5cde866a5](https://content.timeweb.com/assets/b3a1fbfe-8d40-4eea-851d-921c466bafb7?width=745&height=233) Выберите ветку для деплоя. В меню выбора ветки отображаются только 200 последних веток. При подключении репозитория GitLab, GitHub или Bitbucket также отображается ветка по умолчанию (`master`, `main` или `default`). По умолчанию мы включаем опцию «Сборка по последнему выполненному коммиту». В этом случае App Platform выполнит деплой по самому актуальному коммиту, а в дальнейшем будет автоматически пересобирать приложение при добавлении новых коммитов в репозиторий. При необходимости вы сможете [отключить автодеплой](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#avtodeploj) в дальнейшем. Если вы хотите выбрать конкретный коммит вручную — отключите эту опцию. ![7690c0ce 69f7 49cb 94b3 7afdb3d18245](https://content.timeweb.com/assets/ca832158-f84b-43fb-8aa4-5f339c0fedd1?width=763&height=470) ### Шаг 4. Регион и конфигурация сервера Приложения разворачиваются на отдельных облачных серверах. Выберите регион размещения и подходящую конфигурацию сервера. Вы можете выбрать один из готовых тарифов или настроить конфигурацию вручную на вкладке «Произвольная». В дальнейшем, если потребуется, вы сможете перейти на более мощный тариф. ![Be4444cf 7b4f 4ddf B9db A735db4d30ab](https://content.timeweb.com/assets/14af2fb6-4726-43ce-a85d-583abc04b9b0.png?width=759&height=817) ### Шаг 5. Настройка приватной сети ![Image2](https://content.timeweb.com/assets/30e5e420-a7e0-464f-89f8-4ba5bf129361.png?width=412&height=193) На этом этапе вы можете выбрать приватную сеть, в которую будет добавлено приложение, и указать IP-адрес, который оно будет использовать. Обратите внимание, что изменить приватную сеть после деплоя нельзя. Если для приложения настроен приватный IP-адрес, во время повторного деплоя возможна кратковременная недоступность приложения. Это связано с тем, что перед запуском новой версии необходимо освободить занятые порты. ### Шаг 6. Настройка приложения ![81d357e7 4836 463f A737 27935c4ae48b](https://content.timeweb.com/assets/1b667380-5dfc-4ebd-a0e3-f51b2ad09ca7.png?width=638&height=402) Сервис автоматически прочитает инструкции из докерфайла и соберет приложение в соответствии с ними. Если Dockerfile размещен в корне репозитория, оставьте поле «Путь к директории проекта» пустым. Если Dockerfile размещен в поддиректории, укажите путь к ней относительно корня в поле «Путь к директории проекта». Этот путь используется как расположение Dockerfile и становится контекстом сборки. Вы также можете задать [путь проверки состояния](https://timeweb.cloud/docs/apps/healthcheck-path) и [переменные](https://timeweb.cloud/docs/apps/variables) (`ENV`), если это необходимо. Если они прописаны в докерфайле, дублировать их не требуется. В дальнейшем у вас будет возможность [внести изменения](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#smena-parametrov-i-novyj-deploj) в параметры приложения, а также выбрать другую ветку и коммит, и перезапустить деплой с новыми настройками, если потребуется. ### Шаг 7. Информация о приложении Задайте свое имя приложения, если требуется, и комментарий к нему. Это данные, которые будут отображаться в панели управления. Также выберите, в какой проект его нужно добавить. ![5c5d10af 256b 431a 8264 02c3ec0927ac](https://content.timeweb.com/assets/a0824121-5540-461f-bfe8-1ab1c534b122?width=755&height=471) Эти настройки также можно изменить в дальнейшем. ### Шаг 8. Деплой Нажмите Запустить деплой. Как только процесс начнется, вы увидите лог деплоя на вкладке «Деплой». Как правило, он содержит всю необходимую информацию для устранения возможных ошибок. Если что-то пойдет не так, например, из-за наличия ошибок в коде, в логе будут выведены уведомления о них с уточнением причины проблемы. При первом развертывании проекта установка сервера может занять некоторое время. Как только процесс завершится, статус приложения обновится, а также вы увидите сообщение об этом в логе. ![Group 1321314123](https://content.timeweb.com/assets/75a81d9c-4786-4b04-ac3a-0ecb3cfa8f45?width=1920&height=1119) **Готово!** IP-адрес приложения и бесплатный технический домен, привязанный к нему по умолчанию, можно найти на вкладе «Дашборд». Привязать собственный домен можно [по нашей инструкции](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#privyazka-domena). Приложение будет доступно по 443 порту; порт 80 также открыт. ![Без Названия](https://content.timeweb.com/assets/7ff03d83-f737-4aa6-a7a8-1cc898693def?width=1463&height=1125) В дальнейшем App Platform будет отслеживать обновления в репозитории и, если включен [автодеплой](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#avtodeploj), автоматически перезапускать проект с новыми изменениями. # Деплой из Docker Compose Source: https://timeweb.cloud/docs/apps/deploying-with-docker-compose Сервис App Platform позволяет развернуть приложение с помощью Docker Compose, размещенного в репозитории. Это дает возможность запускать любые приложения, включая те, что работают на фронтенд- и бэкенд-фреймворках, не поддерживаемых сервисом напрямую. ### Условия для корректного деплоя 1. `Dockerfile` и файл `docker-compose.yml` должны находиться в корне подключенного репозитория. Пример можно найти в [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-docker-compose). Если `Dockerfile` размещен в другом месте, путь к нему необходимо указать явно в манифесте `docker-compose.yml`. Например: ```bash services: app: build: context: ./app # Путь к папке с исходным кодом dockerfile: ./docker/Dockerfile.prod # Явный путь к Dockerfile ``` 2. В манифесте нельзя использовать порты `80` и `443` в качестве хост-портов — они зарезервированы под веб-сервер. Вместо них используйте любые другие порты. 3. Проксирование настраивается только для первого сервиса в `docker-compose.yml`. Остальные сервисы, если у них заданы хост-порты, будут доступны с их явным указанием. Например: ```yml services: my-app: ports: - "9000:80" adminer: ports: - "8080:8080" ``` В этом случае `my-app` доступен по основному домену, а `adminer` — по `http://домен:8080`. 4. В `docker-compose.yml` нельзя использовать следующие директивы: - `cap_add` - `cgroup` - `cgroup_parent` - `devices` - `privileged` - `device_cgroup_rules` - `volumes` - `ipc` - `pid` - `security_opt` - `userns_mode` - `sysctls` - `volumes_from` - `uts` - `extra_hosts` - `use_api_socket` - `network_mode: container:...` - `include` - `extends` Также запрещены параметры: - `external` в секциях `volumes`, `networks`, `configs` и `secrets`; - `name`; - `driver_opts`; И выход за пределы разрешенной директории (`path traversal`) в значении `file` для `configs` и `secrets`. При попытке задеплоить манифест с любой из этих директив или параметров возникнет ошибка. 5. При настройке сети запрещен режим `host`. ### Шаг 1. Выбор приложения В пункте «Тип» перейдите на вкладку **Docker** и выберите **Docker Compose**. ![Image5](https://content.timeweb.com/assets/dc0a9daf-dcff-475f-9926-23cdff98410f.png?width=512&height=315) ### Шаг 2. Подключение репозитория Выберите репозиторий с приложением. В корне репозитория должен быть размещен `docker-compose.yml`. Репозиторий можно подключить: - Из вашего аккаунта GitHub, GitLab или Bitbucket. Кликните на название платформы, авторизуйтесь и выберите нужный репозиторий. Если вы уже авторизованы, панель сразу покажет доступные репозитории. - По URL, указав ссылку на репозиторий, созданный на любой платформе. Кликните «Подключите git-репозиторий по URL» (либо «Добавить аккаунт» → «Подключите git-репозиторий по URL») и укажите Git URL репозитория. Если репозиторий приватный, введите реквизиты доступа. Подробнее о подключении репозиториев — [здесь](https://timeweb.cloud/docs/apps/connecting-repositories). ### Шаг 3. Выбор ветки и коммита ![Image3](https://content.timeweb.com/assets/34ea051e-6f85-45a0-90be-fd9527785cb5.png?width=524&height=477) Выберите ветку для деплоя. В меню выбора ветки отображаются только 200 последних веток. При подключении репозитория GitLab, GitHub или Bitbucket также отображается ветка по умолчанию (`master`, `main` или `default`). По умолчанию мы включаем опцию «Сборка по последнему выполненному коммиту». В этом случае App Platform выполнит деплой по самому актуальному коммиту, а в дальнейшем будет автоматически пересобирать приложение при добавлении новых коммитов в репозиторий. При необходимости вы сможете отключить автодеплой в дальнейшем. Если вы хотите выбрать конкретный коммит вручную — отключите эту опцию. ### Шаг 4. Регион и конфигурация сервера Приложения разворачиваются на отдельных облачных серверах. Выберите регион размещения и подходящую конфигурацию сервера. Вы можете выбрать один из готовых тарифов или настроить конфигурацию вручную на вкладке «Произвольная». В дальнейшем, если потребуется, вы сможете перейти на более мощный тариф. ![Be4444cf 7b4f 4ddf B9db A735db4d30ab](https://content.timeweb.com/assets/14af2fb6-4726-43ce-a85d-583abc04b9b0.png?width=759&height=817) ### Шаг 5. Настройка приватной сети ![Image2](https://content.timeweb.com/assets/30e5e420-a7e0-464f-89f8-4ba5bf129361.png?width=412&height=193) На этом этапе вы можете выбрать приватную сеть, в которую будет добавлено приложение, и указать IP-адрес, который оно будет использовать. Обратите внимание, что изменить приватную сеть после деплоя нельзя. Если для приложения настроен приватный IP-адрес, во время повторного деплоя возможна кратковременная недоступность приложения. Это связано с тем, что перед запуском новой версии необходимо освободить занятые порты. ### Шаг 6. Настройка приложения Сервис автоматически прочитает инструкции из `docker-compose.yml` и соберет приложение в соответствии с ними. На этом этапе вы можете задать переменные, если это необходимо. Если они прописаны в `docker-compose.yml` или в `Dockerfile`, дублировать их не требуется. ![Scr 20251107 Lyeg](https://content.timeweb.com/assets/38095fe4-0d8c-4a4d-8edf-c3d89bda044a.png?width=1080&height=278) Переменные можно использовать как на этапе сборки, так и во время выполнения приложения. Чтобы использовать переменные в качестве аргументов сборки, передайте их в `docker-compose.yml` следующим образом: ```yaml build: context: . args: - ARGUMENT_VAR=${example_var} ``` После этого вы сможете использовать переменную в `Dockerfile`: ```yaml ARG ARGUMENT_VAR=${example_var} ``` В дальнейшем у вас будет возможность внести изменения в параметры приложения, а также выбрать другую ветку и коммит, и перезапустить деплой с новыми настройками, если потребуется. ### Шаг 7. Информация о приложении Задайте свое имя приложения, если требуется, и комментарий к нему. Это данные, которые будут отображаться в панели управления. Также выберите, в какой проект его нужно добавить. ![Scr 20251107 Lyhz](https://content.timeweb.com/assets/9c14830a-f804-4e5d-9969-7d56e68be706.png?width=1024&height=612) Эти настройки также можно изменить в дальнейшем. ### Шаг 8. Деплой Нажмите Запустить деплой. Как только процесс начнется, вы увидите лог деплоя во вкладке «Деплой». Как правило, он содержит всю необходимую информацию для устранения возможных ошибок. Если что-то пойдет не так, например, из-за наличия ошибок в коде, в логе будут выведены уведомления о них с уточнением причины проблемы. При первом развертывании проекта установка сервера может занять некоторое время. Как только процесс завершится, статус приложения обновится, а также вы увидите сообщение об этом в логе. ![Image4](https://content.timeweb.com/assets/3ad893f2-1cee-430d-80f8-c3015118de84.png?width=1018&height=857) IP-адрес приложения и бесплатный технический домен, привязанный к нему по умолчанию, можно найти на вкладе «Дашборд». Привязать собственный домен можно [по нашей инструкции](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#privyazka-domena). ![Image2](https://content.timeweb.com/assets/482e5f49-aa10-4e7f-bef5-e592e614b106.png?width=1015&height=803) В дальнейшем App Platform будет отслеживать обновления в репозитории и, если включен автодеплой, автоматически перезапускать проект с новыми изменениями. # Деплой из Docker Hub Source: https://timeweb.cloud/docs/apps/deploying-with-docker-hub Сервис App Platform позволяет развернуть приложение напрямую из Docker Hub без подключения аккаунтов и авторизации. Единственное условие — образ должен быть публичным. Такой способ подходит для быстрого запуска готовых решений, если вам не требуется изменять образ вручную. Например, вы можете развернуть n8n или другие сервисы, распространяемые через Docker Hub. ## Особенности работы App Platform автоматически настраивает доступ к приложению через обратный прокси. Порт приложения определяется из: - метаданных Docker-образа (например, `EXPOSE`); - переменных окружения, если они явно задают порт. Если порт не указан, используется значение по умолчанию. Пользователю не требуется вручную настраивать проксирование — сервис автоматически направляет трафик с внешних портов `80` и `443` на порт контейнера. Помимо доступа по домену через HTTPS, для приложений из Docker Hub также может быть доступно прямое подключение к сервисным портам по адресу `домен:порт`. Это может быть полезно для сервисов, которые работают не по HTTP. Например, после запуска MySQL-контейнера вы сможете подключиться к базе данных напрямую через клиент, указав домен приложения и порт MySQL. При редеплое приложение может временно становиться недоступным. ## Шаг 1. Выбор приложения В пункте «Тип» перейдите на вкладку «Docker Hub». ## Шаг 2. Настройка приложения Укажите параметры контейнера: - имя образа в Docker Hub, из которого будет развернуто приложение; - тег или дайджест для выбора конкретной версии образа; - переменные окружения (можно выбрать существующие или задать новые). Учтите, что развертывание возможно только из публичных образов. В дальнейшем вы сможете изменить образ, тег и переменные в настройках приложения и выполнить новый деплой. ![Добавить App 05 19 2026 11 36 Am](https://content.timeweb.com/assets/f1bea773-925c-4fb5-9d2b-8a6b81a62db7.png?width=755&height=665) ## Шаг 3. Регион и конфигурация сервера Приложения разворачиваются на отдельных облачных серверах. Выберите регион размещения и подходящую конфигурацию сервера. Вы можете выбрать один из готовых тарифов или настроить конфигурацию вручную на вкладке «Произвольная». В дальнейшем, если потребуется, вы сможете перейти на более мощный тариф. ## Шаг 4. Настройка приватной сети На этом этапе вы можете выбрать приватную сеть, в которую будет добавлено приложение, и указать IP-адрес, который оно будет использовать. Обратите внимание, что изменить приватную сеть после деплоя нельзя. Если для приложения настроен приватный IP-адрес, во время повторного деплоя возможна кратковременная недоступность приложения. Это связано с тем, что перед запуском новой версии необходимо освободить занятые порты. ## Шаг 5. Информация о приложении Задайте свое имя приложения, если требуется, и комментарий к нему. Это данные, которые будут отображаться в панели управления. Также выберите, в какой проект его нужно добавить. Эти настройки также можно изменить в дальнейшем. ## Шаг 6. Деплой Нажмите Запустить деплой. Как только процесс начнется, вы увидите лог деплоя во вкладке «Деплой». Как правило, он содержит всю необходимую информацию для устранения возможных ошибок. Если что-то пойдет не так, например, из-за наличия ошибок в коде, в логе будут выведены уведомления о них с уточнением причины проблемы. При первом развертывании проекта установка сервера может занять некоторое время. Как только процесс завершится, статус приложения обновится, а также вы увидите сообщение об этом в логе. ![Scr 20260507 Olls](https://content.timeweb.com/assets/9c3be311-e1aa-4367-8ab5-2fe8f3cbf4f3.png?width=2086&height=1704) IP-адрес приложения и бесплатный технический домен, привязанный к нему по умолчанию, можно найти на вкладе «Дашборд». Привязать собственный домен можно [по нашей инструкции](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#privyazka-domena). ![Scr 20260507 Olpa](https://content.timeweb.com/assets/6635be6b-7f68-44f4-a611-cf53a5d09943.png?width=2124&height=1594) # Управление App Platform в панели Source: https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli Вы можете управлять параметрами деплоя, привязывать домены, останавливать и перезапускать контейнеры с помощью инструментов панели Timeweb Cloud. ## Автодеплой Вы можете включить автоматический деплой при создании приложения в панели, оставив включенной опцию «Сборка по последнему выполненному коммиту». ![Selection 239](https://content.timeweb.com/assets/6442a0b2-e653-46d5-8f89-87f304850f83.png?width=525&height=606) В этом случае сервис будет отслеживать изменения в репозитории и при появлении новых коммитов обновлять приложение автоматически. > [!NOTE] > Автодеплой недоступен, если приложение было развернуто из репозитория, подключенного по ссылке. В этом случае после нового коммита будет необходимо запустить новый деплой вручную. В дальнейшем вы всегда можете отключать или включать автодеплой в панели управления, в настройках вашего приложения. 1. Перейдите в раздел «App Platform» и кликните на нужное приложение в списке. 2. На вкладке «Настройки» кликните «Редактировать» в блоке «Настройки деплоя». 3. Включите или выключите опцию «Сборка по последнему выполненному коммиту» и сохраните изменения. ![Selection 238](https://content.timeweb.com/assets/f20aba69-3d5c-4105-82de-876bf53e09c6.png?width=408&height=891) ## Смена параметров и новый деплой Параметры сборки, указанные при первом деплое приложения, можно изменить в панели управления, чтобы применить их для следующего развертывания. 1. Перейдите в раздел «App Platform» и кликните на нужное приложение в списке. 2. На вкладке «Настройки» кликните «Редактировать» в блоке «Настройки деплоя». 3. Укажите нужные вам параметры. 4. Выберите коммит и сохраните изменения. 5. В следующем окне подтвердите запуск деплоя. ## Повторный деплой Чтобы запустить деплой заново: 1. Перейдите в раздел «App Platform» и выберите нужное приложение в списке. 2. На вкладке «Деплой» выберите нужный коммит (текущий коммит уже будет выбран по умолчанию). 3. Нажмите «Выполнить откат к коммиту». ![Selection 240](https://content.timeweb.com/assets/6e4ed12d-b95a-4acc-9814-6fb70d94bef4.png?width=1015&height=851) ## Остановка деплоя Чтобы остановить текущий деплой: 1. Перейдите в раздел «App Platform» и кликните на нужное приложение в списке. 2. На вкладке «Деплой» нажмите на кнопку «Остановить деплой». ![Selection 241](https://content.timeweb.com/assets/cbf2c6b6-406d-4abf-8032-a8b7cddd1e20.png?width=1024&height=868) ## Логи деплоя Логи деплоя доступны на странице вашего приложения на вкладке «Деплой». ![Screenshot 04 04 25 18:04:44](https://content.timeweb.com/assets/056bcc58-09b1-45bf-8789-22a6b14cd054.png?width=1015&height=841) Логи доступны в двух режимах: стандартном и расширенном, при котором в панель будут выводиться все логи в режиме отладке (DEBUG). ![Selection 242](https://content.timeweb.com/assets/412909f4-9277-447b-9dae-8ade48c91d80.png?width=1010&height=846) ## Статистика использования ресурсов - **Backend-приложения** Для Backend-приложений и приложений, развернутых через Dockerfile или Docker Compose, в панели управления доступен Дашборд, где можно отслеживать использование ресурсов: процессора, памяти, интернет-канала, дискового пространства. ![Без Названия](https://content.timeweb.com/assets/e6aff630-ca6c-4282-97ad-1168f61ff4db.png?width=1558&height=1502) Если вы видите, что нагрузка регулярно достигает критических значений и приложению требуется больше ресурсов для стабильной работы, вы можете перейти на более мощный сервер, выбрав его параметры в разделе «Настройки» → «Выбрать конфигурацию». - **Frontend-приложения** Для frontend-приложений подобная статистика не ведется, и раздел «Дашборд» у них отсутствует. Для фронтенда мы отслеживаем только количество запросов в месяц, однако в настоящий момент эти данные не отображаются в панели управления — функционал появится позже. В случае, если приложение достигнет лимита запросов, мы свяжемся с вами по email и сориентируем по последующим шагам. ## Привязка домена ### Технический домен При создании любого приложения мы автоматически привяжем к нему бесплатный технический домен и выпустим SSL-сертификат Let's Encrypt. После деплоя приложения вы можете привязать к нему свой собственный домен вместо технического. ### Собственный домен К приложению можно привязать домен из панели Timeweb Cloud, внешний домен, зарегистрированный у другого провайдера, или поддомен. После привязки домена мы автоматически выпустим для него бесплатный SSL-сертификат Let's Encrypt. Сертификат будет продлеваться автоматически за неделю до истечения срока действия. > [!NOTE] > Если вы хотите привязать поддомен, сначала создайте его [по инструкции](https://timeweb.cloud/docs/domains/subdomains#sozdanie-poddomena). Чтобы привязать домен к приложению: 1. Перейдите в раздел «App Platform» и кликните на нужное приложение. 2. Откройте вкладку «Настройки». 3. В блоке «Домены» нажмите «Редактировать». 4. В открывшемся окне выберите вариант привязки: - если домен находится в панели Timeweb Cloud, выберите его из списка; - если домен зарегистрирован у другого провайдера, выберите «Внешний домен» и укажите доменное имя. На стороне провайдера [добавьте A-запись](https://timeweb.cloud/docs/domains/dns-records-management-other-registrars) из подсказки в панели и дождитесь обновления DNS-записи. 6. Нажмите «Сохранить». ![Привязка домена в App Platform](https://content.timeweb.com/assets/3b9e33ea-df70-412a-8e43-e04f5a1a612a.png?width=2782&height=1958) Если домен находится в панели Timeweb Cloud и уже был привязан к другому сервису, при выборе этого домена для приложения его A-запись будет изменена. К одному приложению можно привязать любое количество доменов. Чтобы отвязать домен, откройте окно редактирования доменов и нажмите на крестик рядом с нужным доменом. Привязка и отвязка домена запускают повторный деплой приложения. ## Просмотр логов Для backend-приложений логи доступны во вкладке «Логи приложения». ![Screenshot 04 04 25 18:03:43](https://content.timeweb.com/assets/464eb23c-115b-48d6-aee6-cfe888438403.png?width=1003&height=850) Для frontend-приложений логи расположены во вкладке «Логи доступа». Логи отображаются только за последние сутки. При скачивании будут загружены последние 10 000 строк логов. ![Scr 20260219 Olbu](https://content.timeweb.com/assets/d2f01e7c-5a87-43b2-bea4-faf82f66160f.png?width=2104&height=1528) ## Перезагрузка приложения Если вы наблюдаете какие-то неполадки в работе приложения, можно попробовать выполнить перезапуск контейнера/сервера, в котором оно запущено. > [!NOTE] > Опция доступна для Backend-приложений и приложений, развернутых через Dockerfile или Docker Compose. Это можно сделать из панели управления: ![Selection 243](https://content.timeweb.com/assets/bb8f66be-d3d3-4732-8c7b-954a7aecb3c3.png?width=1013&height=797) ## Приостановка приложения Если по каким-то причинам вам нужно временно приостановить работу приложения и сделать его недоступным, можно остановить контейнер/сервер в панели: ![Selection 244](https://content.timeweb.com/assets/6e70689d-2671-4d4c-9fac-48057cc7adb2.png?width=1017&height=798) Запустить его заново можно будет здесь же. ## Изменение конфигурации сервера Бэкенд-приложения и приложения, развернутые через Dockerfile или Docker Compose, работают на отдельных облачных серверах. Если приложению требуется больше ресурсов, вы можете изменить конфигурацию сервера, на котором оно запущено. Менять тариф можно только в сторону увеличения, так как уменьшить размер диска невозможно без риска серьезных повреждений файловой системы. Чтобы увеличить тариф: 1. Перейдите в раздел «App Platform» и кликните на нужное приложение. 2. На вкладке «Настройки» кликните «Выбрать конфигурацию». 3. Выберите новый конфиг и нажмите «Сохранить и перезагрузить». ## Настройка сети Настройка доступна только для backend-приложений. Во вкладке «Сеть» вы можете увидеть, к какой приватной сети подключено приложение. Изменить приватную сеть нельзя — ее выбор доступен только при создании приложения. Вы также можете подключить для приложения файрвол, нажав на кнопку «Настроить» в разделе «Firewall». Можно выбрать существующий файрвол или создать новый. ## Удаление приложения Чтобы удалить приложение: 1. Перейдите в раздел «App Platform». 2. Кликните на три точки у нужного приложения и кликните «Удалить» 3. Подтвердите действие. # Подключение корневых сертификатов Source: https://timeweb.cloud/docs/apps/trusted-certificates Корневой сертификат подтверждает доверие к центру сертификации, который выпускает цифровые сертификаты. Если добавить корневой сертификат в доверенное хранилище, приложение сможет проверять подлинность выпущенных этим центром сертификатов и устанавливать защищенное HTTPS-соединение с ресурсами, которые их используют. В App Platform можно подключить сертификаты следующих центров сертификации: - Минцифры — корневой сертификат Национального удостоверяющего центра Минцифры России (Russian Trusted CA). - ТЦИ — корневой ECDSA-сертификат [Центра сертификации ООО «ТЦИ»](https://tlscc.ru/). Центр выпускает TLS-сертификаты ECDSA и ГОСТ. В App Platform подключает только корневой ECDSA-сертификат. Эти сертификаты могут потребоваться, например, при работе с API банков и государственных организаций. По умолчанию они отсутствуют в доверенных хранилищах многих операционных систем, языковых сред и HTTP-библиотек, поэтому их необходимо добавить самостоятельно. Подключить сертификаты можно для backend-приложениий, а также для приложений, развернутых с помощью Dockerfile или Docker Compose. Для frontend-приложений сертификаты не требуются. ## Подключение сертификатов Сертификаты можно подключить при создании нового приложения или позже в настройках уже существующего. Подключайте сертификаты того центра сертификации, которым выпущен сертификат ресурса, к которому обращается приложение. ### При создании приложения Чтобы подключить сертификаты при создании приложения, на этапе «Настройка приложения» включите переключатели для нужных сертификатов: - «Сертификаты Минцифры»; - «Сертификаты ТЦИ». ![Включение сертификатов ](https://content.timeweb.com/assets/2bc2d53e-602b-4835-88af-7672c41d6dde.png?width=1056&height=546) ### В существующем приложении Чтобы подключить сертификаты к уже созданному приложению: 1. Перейдите в раздел «App Platform» и выберите нужное приложение. 2. Откройте вкладку «Настройки». 3. В строке «Сертификаты» нажмите на кнопку «Изменить» 4. В открывшемся окне отметьте нужные сертификаты и нажмите на кнопку «Сохранить». После сохранения запустится повторный деплой приложения. ![Настройка сертификатов ](https://content.timeweb.com/assets/ba208aaa-ed0c-4711-8c50-ab0edc42fe24.png?width=2782&height=1622) ## Установка сертификатов для приложений из Dockerfile и Docker Compose Для приложений, развернутых с помощью Dockerfile или Docker Compose, App Platform добавляет файлы сертификатов в контейнер, но не устанавливает их в доверенное хранилище автоматически. Настроить доверие к сертификатам необходимо самостоятельно. Для этого добавьте нужные инструкции в `Dockerfile` сервиса, который будет обращаться к внешнему ресурсу. Минцифры App Platform добавит в контейнер три файла: - `/usr/local/share/ca-certificates/russian-trusted/russian_trusted_root_ca.crt` — корневой сертификат; - `/usr/local/share/ca-certificates/russian-trusted/russian_trusted_sub_ca.crt` — промежуточный сертификат; - `/usr/local/share/ca-certificates/russian-trusted/russian_trusted_ca_bundle.crt` — корневой и промежуточный сертификаты в одном файле. В зависимости от рантайма может потребоваться объединенный файл или два отдельных сертификата. ### Node.js Задайте переменную `NODE_EXTRA_CA_CERTS`: ```bash ENV NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/russian-trusted/russian_trusted_ca_bundle.crt ``` Переменная используется при запросах через `https`, `fetch`, `axios` и другие HTTP-клиенты. Вносить изменения в код приложения не требуется. ### Python Для приложений, использующих `requests`, `httpx` или `aiohttp`, задайте переменные: ```docker ENV REQUESTS_CA_BUNDLE=/usr/local/share/ca-certificates/russian-trusted/russian_trusted_ca_bundle.crt ENV SSL_CERT_FILE=/usr/local/share/ca-certificates/russian-trusted/russian_trusted_ca_bundle.crt ``` Переменная `REQUESTS_CA_BUNDLE` используется библиотекой requests, а `SSL_CERT_FILE` — стандартным модулем `ssl` и библиотеками, которые работают через него. ### Go Задайте переменную `SSL_CERT_FILE`: ```docker ENV SSL_CERT_FILE=/usr/local/share/ca-certificates/russian-trusted/russian_trusted_ca_bundle.crt ``` ### Java и другие JVM-языки JVM использует собственное хранилище сертификатов, поэтому указать путь к объединенному PEM-файлу недостаточно. Импортируйте корневой и промежуточный сертификаты по отдельности: ```bash RUN keytool -importcert -noprompt -trustcacerts \ -alias russian_trusted_root \ -file /usr/local/share/ca-certificates/russian-trusted/russian_trusted_root_ca.crt \ -keystore "$JAVA_HOME/lib/security/cacerts" -storepass changeit && \ keytool -importcert -noprompt -trustcacerts \ -alias russian_trusted_sub \ -file /usr/local/share/ca-certificates/russian-trusted/russian_trusted_sub_ca.crt \ -keystore "$JAVA_HOME/lib/security/cacerts" -storepass changeit ``` Инструкция подходит для Java, Kotlin, Scala и других языков, которые работают на JVM. ### .NET Задайте переменную `SSL_CERT_FILE`: ```docker ENV SSL_CERT_FILE=/usr/local/share/ca-certificates/russian-trusted/russian_trusted_ca_bundle.crt ``` ### Установка в системное хранилище Если приложение обращается к API через `curl`, `wget`, `OpenSSL` или другие инструменты, которые используют системное хранилище сертификатов, установите сертификаты в это хранилище: ```bash RUN cp /usr/local/share/ca-certificates/russian-trusted/russian_trusted_root_ca.crt \ /usr/local/share/ca-certificates/russian-trusted/russian_trusted_sub_ca.crt \ /usr/local/share/ca-certificates/ \ && update-ca-certificates ``` Для выполнения команды в образе должен быть установлен пакет `ca-certificates`. После установки указывать путь к сертификатам для `curl`, `wget` и большинства приложений, использующих системное хранилище, не требуется. ТЦИ App Platform добавит в контейнер корневой ECDSA-сертификат ТЦИ: - `/usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt`. ### Node.js Задайте переменную `NODE_EXTRA_CA_CERTS`: ```docker ENV NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt ``` Переменная используется при запросах через `https`, `fetch`, `axios` и другие HTTP-клиенты. Вносить изменения в код приложения не требуется. ### Python Для приложений, использующих `requests`, `httpx` или `aiohttp`, задайте переменные: ```docker ENV REQUESTS_CA_BUNDLE=/usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt ENV SSL_CERT_FILE=/usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt ``` Переменная `REQUESTS_CA_BUNDLE` используется библиотекой requests, а `SSL_CERT_FILE` — стандартным модулем `ssl` и библиотеками, которые работают через него. ### Go Задайте переменную `SSL_CERT_FILE`: ```docker ENV SSL_CERT_FILE=/usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt ``` ### Java и другие JVM-языки JVM использует собственное хранилище сертификатов, поэтому импортируйте сертификат с помощью `keytool`: ```bash RUN keytool -importcert -noprompt -trustcacerts \ -alias tci_ecdsa_root \ -file /usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt \ -keystore "$JAVA_HOME/lib/security/cacerts" -storepass changeit ``` Инструкция подходит для Java, Kotlin, Scala и других языков, которые работают на JVM. ### .NET Задайте переменную `SSL_CERT_FILE`: ```docker ENV SSL_CERT_FILE=/usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt ``` ### Установка в системное хранилище Если приложение обращается к внешнему ресурсу через `curl`, `wget`, `OpenSSL` или другие инструменты, которые используют системное хранилище сертификатов, установите сертификат в это хранилище: ```bash RUN cp /usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt \ /usr/local/share/ca-certificates/ \ && update-ca-certificates ``` Для выполнения команды в образе должен быть установлен пакет ca-`certificates`. После установки указывать путь к сертификату для `curl`, `wget` и большинства приложений, использующих системное хранилище, не требуется. # Частые вопросы об App Platform Source: https://timeweb.cloud/docs/apps/faq В статье собрали ответы на самые популярные вопросы об App Platform, которые возникают у наших пользователей. ## Мой аккаунт GitHub, GitLab или Bitbucket подключен, но App Platform не видит нужный репозиторий. Что делать? Обычно это происходит в двух случаях: - Вы авторизовались в свой аккаунт GitHub, GitLab или Bitbucket в сервисе App Platform, а после этого добавили новый репозиторий. - Вы разрешили подключить только отдельные репозитории, а не все, и нужный репозиторий не выбран. Чтобы решить проблему: 1. Кликните «Добавить аккаунт». ![3f31ba98 1140 4674 8a28 744638edfede](https://content.timeweb.com/assets/4c7c2c8e-8c51-4ca9-8f31-d041ce8dc526?width=745&height=319) 2. Выберите платформу. ![1d2f1c03 Ca39 4520 Bc95 86e22b8ce42f](https://content.timeweb.com/assets/a5a1a163-c7b1-420e-bf80-2c8b3ad73a98?width=785&height=359) 3. Авторизуйтесь, если необходимо. 4. Выберите нужный репозиторий и сохраните изменения. ![Image2](https://content.timeweb.com/assets/65022223-b64e-4415-a63c-ee81a537a786?width=885&height=716) Подключенные репозитории отобразятся в панели управления, и вы сможете выбрать нужный. ## Можно ли удалить подключенный репозиторий? Да, любой добавленный репозиторий можно отвязать от панели управления на странице создания нового приложения. > [!NOTE] > При отключении репозитория любые деплои (как автоматические, так и ручные) всех приложений, созданных из этого репозитория, станут невозможны. 1. Перейдите в раздел «App Platform» и нажмите «Добавить». 2. Кликните на выпадающий список репозиториев и нажмите «Удалить» у нужного из них. 3. На следующем шаге подтвердите действие. ## У меня развернуто локальное хранилище репозиториев Git. Как подключить его к App Platform? Это возможно, если у git-репозитория есть внешний HTTP/HTTPS-адрес. Для этого необходимо воспользоваться опцией [подключения репозиториев по URL](https://timeweb.cloud/docs/apps/connecting-repositories#podkluchenie-repozitoriya-po-ssylke). Обратите внимание, что при этом будет недоступен автодеплой — после обновлений в коде будет необходимо [запускать деплой приложения вручную](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#smena-parametrov-i-novyj-deploj), выбрав нужный коммит. ## Можно ли подключить репозитории не из GitHub, GitLab или Bitbucket? Да, вы можете [подключить репозиторий по ссылке](https://timeweb.cloud/docs/apps/connecting-repositories#podkluchenie-repozitoriya-po-ssylke). Этим способом можно подключать любые репозитории, у которых есть внешний HTTP- или HTTPS-адрес, в том числе, self-hosted-хранилища или репозитории, размещенные у провайдеров, которые мы не поддерживаем напрямую (например, Gitea). ## Есть ли примеры приложений для развертывания? Примеры фронтенд-приложений, а также пример приложения Flask для запуска через Dockerfile, доступны в нашем [Гитхабе](https://github.com/timeweb-cloud?tab=repositories). Удобнее всего перейти к нужному демо из панели управления при создании нового App, кликнув на иконку Гитхаба у приложения: ![758c1894 3376 48b6 Ac0b A2c84d038a6f](https://content.timeweb.com/assets/5a574fbd-b926-4a56-b75e-d8148985a5f1?width=1475&height=924) ## Можно ли получить FTP-доступ к приложению? Приложение запущено внутри Docker-контейнера, и получить к нему FTP-доступ невозможно. Кроме того, это не имеет смысла: при каждом новом деплое все файлы будут удалены. Загружать файлы необходимо в репозиторий проекта, тогда App Platform автоматически выгрузит их при деплое. А для размещения пользовательских файлов можно использовать сторонние хранилища, например, [S3](https://timeweb.cloud/my/storage). ## Как получить SSH-доступ к приложению? Для backend-приложений и приложений, развернутых через Dockerfile, можно получить доступ к контейнеру с вашим приложением с помощью консоли в панели управления: ![1cfa455a 9ed5 4eb4 92ca 41b957011817](https://content.timeweb.com/assets/57f7c300-4284-4902-97d9-392e3b2ff44f?width=1490&height=1323) ## Как поменять версию Node.js в среде развертывания контейнера? Какая версия используется? Вы можете выбрать версию Node.js при создании приложения. Доступны версии 20, 22, 24. ![92b67ec8 105c 4fb5 8b97 38199a825f05](https://content.timeweb.com/assets/d2e802f5-4d39-426b-8b9b-f3e71cd60ceb.png?width=1377&height=821) ## Какая версия Python используется? Как ее изменить? В App Platform доступны версии Python 3.10, 3.11, 3.12, 3.13, 3.14. Версию можно выбрать при создании приложения. ![641fa840 F934 4150 8f93 Df7e431392bf](https://content.timeweb.com/assets/a8eb0965-5383-405a-b8b7-393b28229d94.png?width=1370&height=819) ## Как привязать свой домен к приложению? Привязать собственный домен можно [по нашей инструкции](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#privyazka-domena). Также, для тестовых целей можно использовать бесплатный технический домен, который был автоматически привязан к приложению при деплое. ## Как управлять хранилищем (диском) на экземпляре? Такой возможности нет. Необходимо использовать внешнее хранилище для данных, например, S3 или любое другое. Также к экземпляру приложения невозможно примонтировать что-либо по сети; доступна только отправка файлов через API или протокол, не подразумевающий монтирование сетевой файловой системы. ## Поддерживается ли работа с приложением при помощи MCP-сервера? Да, доступна экспериментальная реализация MCP-сервера. Инструкция по интеграции и описание доступных методов опубликованы вместе с пакетом [timeweb-mcp-server](https://www.npmjs.com/package/timeweb-mcp-server?activeTab=readme). # Добавление VCS-провайдеров через API Source: https://timeweb.cloud/docs/apps/adding-vcs-provider-api Чтобы добавить VCS-провайдера GitHub, GitLab или Bitbucket с помощью метода API [/api/v1/vcs-provider](https://timeweb.cloud/api-docs#tag/Apps/operation/addProvider), вам потребуется токен, который необходимо получить в интерфейсе провайдера. > [!NOTE] > Авторизация по токену (PAT-авторизация) доступна только при использовании API, а авторизация через OAuth — только в панели управления. > > Для OAuth-авторизации мы будем следить за сроком жизни токена и своевременно его обновлять. Для PAT-авторизации вам необходимо делать это самостоятельно. > > При обращении к ресурсам провайдера через панель или API будет использоваться последняя пройденная авторизация. ## Получение токена в GitHub Для добавления аккаунта GitHub вам будет нужен `Fine-grained personal access token`. Чтобы его получить: 1. Авторизуйтесь в своем аккаунте [GitHub](https://github.com/login). 2. [Верифицируйте свой емейл](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address), если это еще не было сделано. 3. Перейдите в раздел [Fine-grained tokens](https://github.com/settings/tokens?type=beta) (кликнуть на профиль → **Settings** → **Developer settings** → **Personal access tokens** → **Fine-grained tokens**). 4. Нажмите **Generate new token**. 5. Укажите имя токена в **Token name**. 6. Выберите дату истечения токена в **Expiration**. 7. При желании добавьте описание в поле **Description**. 8. В пункте **Resource owner** выберите владельца ресурса. С помощью токена можно будет получить доступ только для ресурсов выбранного владельца. 9. В пункте **Repository access** выберите, к каким репозиториям должен быть доступ по токену. 10. Если на прошлом шаге вы указали **Only select repositories**, выберите конкретные репозитории из выпадающего списка **Selected repositories**. 11. В разделе **Permissions** выберите разрешения: - `Webhooks: read and write` - `Contents: read-only` 12. Нажмите **Generate token**. 13. Скопируйте полученный токен и передайте в качестве значения `provider_token` при добавлении провайдера. Подробная инструкция доступна в [документации GitHub](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token). ## Получение токена в GitLab Для добавления аккаунта GitLab вам потребуется `Personal access token`. Получить его можно так: 1. Авторизуйтесь в своем аккаунте [GitLab](https://gitlab.com/users/sign_in). 2. Кликните на аватар аккаунта слева и выберите **Edit profile**. 3. В левом меню выберите **Access tokens** → **Add new token**. 4. Введите имя токена и дату его истечения. Дата истечения может быть не позднее 365 с текущей даты. Этот же период применится по умолчанию, если не указать дату. 5. Укажите разрешение: - `api` 6. Кликните **Create personal access token**. 7. Скопируйте полученный токен и передайте в качестве значения `provider_token` при добавлении провайдера. Сохраните токен у себя — вы не сможете получить доступ к нему после того, как закроете страницу. ## Получение токена в Bitbucket Для добавления аккаунта Bitbucket необходимо использовать `App Password`. Получить его можно так: 1. Авторизуйтесь в своем аккаунте [Bitbucket](https://bitbucket.org/product). 2. Кликните на значок шестеренки справа вверху и перейдите в **Personal Bitbucket settings**. 3. В меню слева выберите **App password** и кликните **Create app password**. 4. Задайте удобное имя (**Label**) и следующие разрешения: - `Account: Read` - `Projects: Read` - `Repositories: Read` - `Webhooks: Read and write` 5. Нажмите **Create**. 6. Откроется окно с вашим app password. Скопируйте его и передайте в качестве значения `provider_token` при добавлении провайдера. # Переменные Source: https://timeweb.cloud/docs/apps/variables В App Platform вы можете использовать переменные — например, для передачи паролей, путей, токенов и других параметров окружения. > [!NOTE] > К одному приложению можно привязать не более 1000 переменных, вне зависимости от их вида. ## Виды переменных Переменные делятся на два вида: локальные и глобальные. Локальные переменные: - Привязаны к одному приложению; - Удаляются вместе с приложением; - Настраиваются при создании или редактировании приложения. Глобальные переменные: - Хранятся отдельно от приложений; - Можно использовать в нескольких приложениях; - Управляются централизованно во вкладке «App Platform» → «Переменные». ## Локальные переменные Локальные переменные можно задать при создании приложения или при редактировании настроек уже существующего приложения. ### При создании приложения Локальные переменные можно добавить при деплое приложения. Для этого в разделе «Настройки приложения», в строке «Переменные» нажмите кнопку «Добавить». ![Image9](https://content.timeweb.com/assets/c84f46f2-0751-4cdd-ab42-4ed4bee74714.png?width=932&height=684) В открывшемся окне укажите название и значение переменной. При необходимости добавьте другие переменные с помощью кнопки «Добавить еще». При установке флага «Сохранить как глобальную» переменная станет доступна в других приложениях. ![Image11](https://content.timeweb.com/assets/f0ab6de4-a1e0-486c-832a-0380107e7111.png?width=908&height=758) Также можно загрузить переменные из файла. Для этого нажмите «Загрузить из файла». Загрузить можно только файл с именем `.env`. Переменные должны быть указаны в формате: ```shell APP_NAME=MyApp APP_ENV=production DB_HOST=localhost DB_PORT=3306 ``` ### В существующем приложении 1. Перейдите в раздел App Platform и кликните на нужное приложение. 2. Перейдите во вкладку «Настройки» и нажмите кнопку «Редактировать» в строке «Настройка деплоя». ![Image13](https://content.timeweb.com/assets/5634666b-4589-41d2-a750-298588d563eb.png?width=1999&height=1165) 3. В открывшемся окне нажмите кнопку «Добавить» в блоке «Переменные». Откроется то же окно, что и при создании приложения. ![Image5](https://content.timeweb.com/assets/76ca36a7-2e9a-42b2-88b1-5b8621eef6fe.png?width=1999&height=1499) ### Редактирование локальной переменной 1. Перейдите в раздел App Platform и кликните на нужное приложение. 2. На вкладке «Настройки» нажмите кнопку «Редактировать» в строке «Настройка деплоя». 3. В разделе «Переменные» нажмите на иконку карандаша рядом с нужной переменной. ![Image10](https://content.timeweb.com/assets/5bd3a13c-bf24-4a4e-b143-5bae1473edeb.png?width=1999&height=1451) 4. В открывшемся окне внесите изменения и нажмите «Сохранить». ### Удаление локальной переменной 1. Перейдите в раздел App Platform и кликните на приложение. 2. На вкладке «Настройки» нажмите кнопку «Редактировать» в строке «Настройка деплоя». 3. Нажмите на крестик рядом с переменной, которую нужно удалить. ![Image3](https://content.timeweb.com/assets/fcf63f23-36fc-4717-b6a3-bfcbfaeca599.png?width=1999&height=1473) ## Глобальные переменные Глобальные переменные управляются централизованно и отображаются во вкладке «App Platform» → «Переменные». ![Image1](https://content.timeweb.com/assets/3af9217b-0800-460a-b8d1-74f2479ca242.png?width=1999&height=1446) ### Создание глобальной переменной Перейдите в «App Platform» → «Переменные» и нажмите кнопку «Добавить». ![Image12](https://content.timeweb.com/assets/09cf9cee-831a-41c4-bb36-d1913a909dca.png?width=1999&height=1446) В открывшемся окне укажите название и значение переменной. При необходимости добавьте дополнительные переменные с помощью кнопки «Добавить еще». ![Image7](https://content.timeweb.com/assets/09c48f3c-b2e9-499d-ae85-8fc0925a448f.png?width=1999&height=1290) Также можно загрузить переменные из файла. Для этого нажмите «Загрузить из файла». Загрузить можно только файл с именем `.env`. Переменные должны быть указаны в формате: ```shell APP_NAME=MyApp APP_ENV=production DB_HOST=localhost DB_PORT=3306 ``` Добавленные переменные можно выбрать при создании нового приложения или при редактировании существующего. Для этого используйте выпадающий список в разделе «Переменные». ![Image6](https://content.timeweb.com/assets/54a3a91b-ad71-41dc-b5d5-964133ecc7e7.png?width=1114&height=1080) ### Редактирование глобальной переменной Откройте раздел «App Platform» → «Переменные», нажмите на три точки рядом с нужной переменной и выберите «Редактировать». ![Image4](https://content.timeweb.com/assets/c1f24a34-4437-4c45-93fb-0f690c2392d6.png?width=1999&height=1142) В открывшемся окне внесите изменения и нажмите «Сохранить». ### Удаление глобальной переменной В разделе «App Platform» → «Переменные» нажмите на три точки рядом с переменной и выберите «Удалить». ![Image2](https://content.timeweb.com/assets/b1115e3b-1dfc-454c-8aa9-5d6d72a3208d.png?width=1999&height=1142) Подтвердите удаление в открывшемся окне. Если переменная используется в приложениях, появится список таких приложений. Чтобы переменная осталась в этих приложениях как локальная, установите галочку «Оставить переменную в приложениях». ![Image8](https://content.timeweb.com/assets/d0aa369e-5a80-4300-9dc7-f033232cbee7.png?width=1999&height=1295) # Путь проверки состояния Source: https://timeweb.cloud/docs/apps/healthcheck-path Путь проверки состояния нужен, если вы хотите выполнять периодическую проверку того, запущено ли приложение и работает ли оно корректно. По умолчанию, если проверка состояния не включена, после деплоя выполняется только базовая проверка: система убеждается, что контейнер с приложением успешно запущен. При этом работоспособность самого приложения не оценивается — оно может отвечать некорректно или не отвечать совсем — статус деплоя останется успешным. Чтобы избежать таких ситуаций, можно настроить путь проверки состояния. Для этого в приложении должен быть реализован эндпоинт, который не зависит от внешних факторов (например, готовности базы данных или сторонних сервисов) и отражает состояние приложения. Этот эндпоинт вы сможете указать при настройке — например, `/health`, `/status` или `/ping`. ## Как работает Во всех случаях запрос к пути проверки состояния выполняется с `localhost`. Главное требование — возвращать код `2xx`. Содержимое ответа неважно, главное — корректный код ответа. ### При редеплое Если путь проверки состояния указан, система делает до трех последовательных GET-запросов к новому инстансу приложения. - Если хотя бы один запрос возвращает код `2xx` — деплой считается успешным, и новая версия приложения становится активной. - Если три проверки подряд завершаются ошибкой (любой ответ, отличный от `2xx`) — деплой считается неуспешным, и продолжает работать предыдущая версия. - Проверки продолжаются до тех пор, пока не будет: - один успешный ответ, - три неуспешных ответа подряд через 40 секунд после запуска, - или не пройдет 180 секунд — если за это время ни одно из условий не выполнено, деплой считается неуспешным. В логах деплоя появится сообщение, если проверка не пройдена. ### После запуска После успешного деплоя система продолжает регулярно проверять работоспособность приложения: один запрос каждые 30 секунд. Если три проверки подряд завершаются ошибкой, приложение автоматически перезапускается. Это отобразится в логах приложения. ![Scr 20251125 Olid](https://content.timeweb.com/assets/e710bb31-70ef-4448-a157-49f7a170b5c3.png?width=2152&height=1666) ## Настройка Путь проверки состояния можно указать как при создании приложения, так и для уже существующего. ### При создании приложения В разделе «Настройка приложения» укажите путь в поле «Путь проверки состояния». Например, если в приложении реализован эндпоинт `/health`, который доступен по адресу `https://домен/health`, укажите: ```shell /health ``` ![Scr 20251125 Qqdp](https://content.timeweb.com/assets/acf63b28-a9a1-4566-857e-6f257f2898d7.png?width=1010&height=822) ### Для уже созданного приложения 1. Откройте нужное приложение в панели управления. 2. Перейдите на вкладку «Настройки». 3. В блоке «Настройки деплоя» нажмите кнопку «Редактировать». 4. Введите путь проверки состояния. 5. Нажмите «Сохранить данные». После этого автоматически запустится новый деплой с обновленной настройкой. ![Scr 20251125 Qqlz](https://content.timeweb.com/assets/de3a0ff1-626e-4f84-a558-10b221016303.png?width=2140&height=1552) ## Docker и Docker Compose Если вы используете деплой через Dockerfile, в панели управления будет доступна [настройка пути проверки состояния](https://timeweb.cloud/docs/apps/healthcheck-path#nastrojka). Путь проверки состояния, указанный в панели управления, имеет приоритет над `HEALTHCHECK` в Dockerfile. Проверка из Dockerfile используется только в том случае, если поле «Путь проверки состояния» в панели оставлено пустым. Настройка через Dockerfile подробно описана в [официальной документации](https://docs.docker.com/reference/dockerfile/#healthcheck). Пример: ```shell HEALTHCHECK --interval=30s --timeout=10s --retries=3 \ CMD curl -f http://localhost/health || exit 1 ``` Для деплоев через Docker Compose настройка пути проверки состояния в панели управления не поддерживается. Если при этом используется Dockerfile, вы можете настроить `HEALTHCHECK` внутри него — правило будет работать, как описано выше. # Стенды Source: https://timeweb.cloud/docs/apps/stands Стенды — это отдельные окружения, которые позволяют тестировать изменения без влияния на основную версию приложения. Стенд разворачивается как независимый экземпляр приложения с собственной сборкой и доступен по отдельному техническому домену. Стенды доступны для фронтенд-, бэкенд- и Docker-приложений. Максимальное количество стендов для одного приложения — 10. Для бэкенд- и Docker-приложений стенды предоставляются бесплатно и разворачиваются на той же виртуальной машине, что и основное приложение. Стенд использует ресурсы этой же машины — их должно быть достаточно для его запуска и работы. Для фронтенд-приложений запросы [тарифицируются так же](https://timeweb.cloud/docs/apps/frontend-pricing), как и для основного приложения. Стенды не поддерживаются для приложений, развернутых через Docker Compose. ## Создание стенда Чтобы создать стенд, откройте приложение в панели управления и перейдите на вкладку «Стенды». ![Scr 20260401 Oqpo](https://content.timeweb.com/assets/27fb8e0a-8ca3-4c82-8905-9e8bb1572e42.png?width=2120&height=1612) Если стенды еще не создавались, сразу отобразится выбор ветки для создания стенда. В противном случае нажмите «Добавить стенд». В открывшемся окне укажите: - имя стенда; - ветку репозитория; - коммит для сборки или включите использование последнего коммита; - выберите существующие или добавьте новые переменные. ![Scr 20260420 Qgjx](https://content.timeweb.com/assets/36e499dc-70b2-41ba-af9e-e5828af324ab.png?width=2082&height=1608) Нажмите «Создать». После этого будет выполнен деплой стенда. Для него автоматически создается технический домен, по которому будет доступно приложение. ## Управление стендами Во вкладке «Стенды» отображаются все созданные стенды. При наведении на стенд отображается значок просмотра. Нажмите на него, чтобы скопировать URL, по которому доступно приложение в стенде. ![Scr 20260401 Otlr](https://content.timeweb.com/assets/51e9d536-b9ec-45da-af1c-d42e678285b7.png?width=2104&height=1590) При нажатии на стенд в списке откроется окно с вкладками «Настройки» и «Логи стенда». Во вкладке «Настройки» можно: - включить или выключить стенд; - изменить название стенда; - изменить ветку репозитория; - изменить коммит; - управлять переменными; - скопировать URL стенда. ![Scr 20260420 Qgyi](https://content.timeweb.com/assets/967b1f27-4c71-4916-a2ea-84694c226768.png?width=2112&height=1608) Во вкладке «Логи стенда» отображаются: - логи деплоя; - логи приложения — для бэкенд- и Docker-приложений; - логи доступа — для фронтенд-приложений. ![Scr 20260401 Otzx](https://content.timeweb.com/assets/aea36ec7-231d-489f-a7f4-265ee51851b6.png?width=2142&height=1580) Чтобы удалить стенд, нажмите на меню с тремя точками рядом с ним и выберите «Удалить». ![Scr 20260401 Oueu](https://content.timeweb.com/assets/e75fe52a-9e25-4170-9ca5-d74399a1892f.png?width=2138&height=1586) # Клонирование приложения Source: https://timeweb.cloud/docs/apps/cloning С помощью клонирования вы можете быстро создать копию существующего приложения. В новое приложение будут перенесены его тип, подключенный репозиторий и настройки деплоя, в том числе переменные. После клонирования приложения работают независимо друг от друга. Стоимость нового приложения может отличаться от стоимости исходного — она будет рассчитана по актуальным тарифам на момент клонирования. > [!NOTE] > При клонировании приложения [стенды](https://timeweb.cloud/docs/apps/stands) не будут скопированы. Перед клонированием убедитесь, что на балансе достаточно средств для оплаты нового приложения. Если средств не хватает, при запуске клонирования появится уведомление о необходимости оплаты. Чтобы клонировать приложение: 1. Перейдите в раздел «App Platform». 2. Зайдите в панель управления нужного приложения. 3. Нажмите на иконку «Клонировать» в верхнем меню. ![Клонирование приложения](https://content.timeweb.com/assets/515bba1d-b6f0-4815-a2c6-491885073c93.png?width=2156&height=1622) 4. Проверьте настройки нового приложения. При необходимости измените их. 5. Укажите имя приложения и выберите проект, в который нужно его добавить. 6. Нажмите «Заказать». App Platform автоматически создаст новое приложение и запустит его деплой. Процесс может занять несколько минут. Работа исходного приложения при этом не прерывается. После завершения деплоя приложение-клон будет доступно по новому техническому домену. Его можно найти на главной странице раздела «App Platform» или во вкладке «Дашборд» приложения. # Настройка веб-сервера Source: https://timeweb.cloud/docs/apps/reverse-proxy App Platform автоматически настраивает веб-сервер при создании приложения. При необходимости вы можете изменить параметры обработки запросов и ответов: настроить редиректы, HTTP-заголовки, включить сжатие данных. Набор доступных параметров зависит от типа приложения. Для frontend-приложений также можно настроить обработку несуществующих путей, а для backend- и Docker-приложений — ограничить размер тела запроса и время ожидания заголовков ответа. Настройки веб-сервера применяются к доменам, привязанным к приложению. ## Настройка веб-сервера Чтобы изменить настройки веб-сервера: 1. Перейдите в раздел «App Platform» и выберите нужное приложение. 2. Откройте вкладку «Настройки». 3. В строке «Настройки веб-сервера» нажмите «Настроить». 4. Укажите нужные параметры и нажмите «Сохранить». ![Настройка параметров веб-сервера](https://content.timeweb.com/assets/2815ee04-97b0-4fe9-b36f-8d9e3be40240.png?width=1078&height=1418) 5. После сохранения настроек запустится деплой приложения. ## Общие параметры Для всех типов приложений доступна настройка редиректов, HTTP-заголовков и сжатия. ### Редиректы Редиректы позволяют перенаправлять запросы с одного пути или домена на другой. Для одного приложения можно добавить не более 10 редиректов. Для настройки редиректа укажите: - тип — `path` или `host`; - исходный путь или домен в поле `Source`; - целевой путь или домен в поле `Destination`; - код ответа в поле `Code`. Доступны следующие коды ответа: - `301` — постоянный редирект; - `302` — временный редирект; - `307` — временный редирект с сохранением метода и тела запроса; - `308` — постоянный редирект с сохранением метода и тела запроса. #### Редирект по пути Для редиректа по пути выберите тип `path`. Значения `Source` и `Destination` должны начинаться с `/`, например `/old` и `/new`. При настройке учитывайте ограничения: - исходный и целевой пути не должны совпадать; - в путях нельзя указывать параметры запроса после `?` и фрагменты после `#`; - параметры исходного запроса сохраняются при редиректе. Например, при редиректе с `/old` на `/new` запрос к `/old?source=mail` будет перенаправлен на `/new?source=mail`. #### Редирект по домену Для редиректа по домену выберите тип `host`. Исходный и целевой домены можно выбрать только среди доменов, привязанных к приложению. ### Заголовки Вы можете добавить, заменить или удалить HTTP-заголовки в ответах веб-сервера. Для одного приложения можно настроить не более 10 правил. Для каждого заголовка выберите тип: - `set` — задать новое значение заголовка или заменить существующее; - `add` — добавить еще одно значение заголовка; - `delete` — удалить заголовок из ответа. Для типов `set` и `add` укажите имя и значение заголовка. Для типа `delete` укажите только имя. Для одного имени заголовка нельзя: - создать несколько правил типа `set`; - одновременно использовать разные типы — например, `set` и `add` или `add` и `delete`. Несколько правил типа `add` для одного заголовка разрешены. ### Сжатие Сжатие уменьшает объем данных, которые веб-сервер передает клиенту, и может ускорить загрузку приложения. Чтобы включить сжатие, выберите один или несколько алгоритмов: - `gzip`; - `zstd`. ## Параметры frontend-приложений Для frontend-приложений дополнительно доступна настройка SPA Fallback. ### SPA Fallback SPA Fallback определяет, какой файл приложение будет возвращать при обращении к несуществующему пути. Если опция включена, веб-сервер вернет файл `/index.html`. Если опция выключена и в сборке есть файл `/404.html`, веб-сервер вернет его. Если файла нет, откроется пустая страница с кодом ответа `404`. ## Параметры backend- и Docker-приложений Для backend-приложений, а также приложений, развернутых с помощью Dockerfile, Docker Compose или образа из Docker Hub, дополнительно доступна настройка ограничения размера тела запроса и таймаута ожидания заголовков ответа. ### Максимальный размер тела запроса Параметр ограничивает размер тела входящего HTTP-запроса. Например, с его помощью можно ограничить размер загружаемых файлов. Укажите число больше `0`. Значение рассчитывается в КБ, единицу измерения вводить не нужно. Максимально допустимый размер тела запроса — `1 048 576` КБ, что эквивалентно `1` ГБ. Если тело запроса превышает установленное ограничение, веб-сервер отклонит запрос до его передачи приложению. ### Таймаут ожидания заголовков ответа Параметр определяет, сколько времени веб-сервер будет ждать заголовки ответа от приложения. Укажите число больше `0`. Значение рассчитывается в миллисекундах, единицу измерения вводить не нужно. Например, чтобы задать таймаут в одну секунду, укажите `1000`. Максимально допустимый таймаут — `120 000` миллисекунд, то есть `120` секунд. # Настройка балансировщика для приложений Source: https://timeweb.cloud/docs/apps/configuring-load-balancer Балансировщик нагрузки распределяет входящий трафик между приложениями. Это позволяет горизонтально масштабировать сервис и повысить его доступность и отказоустойчивость. ## Ограничения - Балансировщик нагрузки не поддерживается для frontend-приложений. - Балансировщик и приложения должны находиться в одной приватной сети. Приложения добавляются в балансировку только по приватному IP-адресу. - Для корректной работы необходимо указать порт приложения в настройках проверки доступности балансировщика. ## Настройка В примере рассмотрим, как добавить приложение App Platform в балансировщик нагрузки, настроить домен и SSL-сертификат. Дополнительные параметры, которые можно настроить для балансировщика, описаны в статье [про управление балансировщиками нагрузки](https://timeweb.cloud/docs/load-balancer/manage-balancer). ### Создание приложения и балансировщика 1. [Создайте приватную сеть](https://timeweb.cloud/docs/vpc/managing-bgp-networks/creating-bgp-networks) в локации, в которой хотите разместить приложение и балансировщик. 2. Создайте приложение и добавьте его в ранее созданную приватную сеть. > [!NOTE] > Приватную сеть можно выбрать только при создании приложения. Если приложение уже создано в другой сети, [создайте его копию](https://timeweb.cloud/docs/apps/cloning) и при клонировании выберите нужную приватную сеть. 3. [Создайте балансировщик нагрузки](https://timeweb.cloud/docs/load-balancer/create-balancer) и добавьте его в ту же приватную сеть. Остальные параметры можно оставить по умолчанию — настройки приложения вы укажете после создания балансировщика. Теперь приложение и балансировщик находятся в одной локации и приватной сети. ### Добавление приложения в балансировку > [!NOTE] > В примере добавим в балансировку одно приложение, чтобы показать порядок настройки. Использовать балансировщик с одним приложением не имеет смысла, этот вариант рассматривается только в качестве примера: нагрузка не будет распределяться между несколькими экземплярами. Вы можете [создать копию приложения](https://timeweb.cloud/docs/apps/cloning) и добавить ее в балансировку вместе с исходным приложением. 1. Перейдите в раздел «Балансировщики» и выберите нужный балансировщик. 2. Откройте вкладку «Серверы». 3. Нажмите «Добавить» или «Изменить». 4. Выберите нужное приложение из выпадающего списка. 5. Нажмите «Сохранить». ![Раздел «Серверы»](https://content.timeweb.com/assets/e847341b-203b-4c80-8e2d-5c3dbfc8f69c.png?width=2176&height=1634) ### Настройка правил балансировки 1. Откройте вкладку «Конфигурация» балансировщика. 2. В строке «Правила балансировки» нажмите «Изменить». 3. Настройте правило для HTTP-трафика: - для балансировщика выберите протокол `HTTP` и укажите порт `80`; - для приложения выберите протокол `HTTP` и укажите порт, на котором оно запускается. Например, для Django по умолчанию используется порт `8000`. 5. Добавьте правило для HTTPS-трафика: - для балансировщика выберите протокол `HTTPS` и укажите порт `443`; - для приложения выберите протокол `HTTP` и укажите порт, на котором оно запускается. ![Правила балансировки](https://content.timeweb.com/assets/046888d3-52c4-4cd6-91d3-44729ab7e4cf.png?width=874&height=1074) 5. Нажмите «Сохранить». ### Настройка проверки доступности Для корректной работы балансировщика настройте проверку доступности приложения: 1. Откройте вкладку «Конфигурация» балансировщика. 2. В строке «Расширенные настройки» нажмите «Настроить». 3. В разделе «Проверка доступности» выберите протокол `TCP` и укажите порт приложения. Остальные настройки можно оставить по умолчанию. ![Расширенные настройки балансировщика](https://content.timeweb.com/assets/69399b37-a3de-45f3-8abd-6b5edc0f5d66.png?width=814&height=960) 4. Пролистайте страницу ниже и включите опцию «Переадресация HTTP на HTTPS». Она понадобится для настройки домена на следующем этапе. 5. Нажмите «Сохранить». ### Настройка домена и SSL-сертификата 1. Откройте вкладку «Конфигурация» балансировщика. 2. В строке «SSL-сертификат» нажмите «Редактировать». 3. Выберите сертификат и домен, по которому должно быть доступно приложение. 4. Нажмите «Сохранить». Дождитесь применения настроек и выпуска сертификата и проверьте работу приложения по домену, привязанному к балансировщику. # Облако VMware Source: https://timeweb.cloud/docs/vmware Облако VMware — это сервис, который позволяет создавать собственные виртуальные дата-центры в облачной инфраструктуре. Виртуальные ЦОДы в Timeweb Cloud создаются на базе процессоров Intel Xeon Gold 6448Y и AMD EPYC 9274F, имеют канал 1 Гбит/с и безлимитный трафик. Регион размещения инфраструктуры — Москва. Управление ресурсами внутри виртуальных ДЦ выполняется через VMware vCloud Director — панель управления от VMware, с помощью которой можно разворачивать сервисы, управлять их конфигурациями и масштабировать инфраструктуру под ваши задачи. Облако VMware позволяет гибко управлять вычислительными ресурсами и при этом не нести затраты на покупку и обслуживание «железа». Оно подойдет: - Стартапам — для быстрого запуска сервисов без капитальных вложений; - Среднему бизнесу — для удобного резервирования и масштабирования ресурсов; - Крупным организациям — для построения отказоустойчивой и безопасной инфраструктуры. Возможные сценарии использования облака VMware: - Резервная площадка для быстрого восстановления после сбоев. - Размещение локальной инфраструктуры в облаке с полным контролем. - Тестовые и dev-среды для разработки и тестирования приложений. - Организация гибридного облака с единым центром управления. - Моментально масштабируемая инфраструктура для быстрорастущих проектов. # Быстрый старт VMware Source: https://timeweb.cloud/docs/vmware/quickstart В статье разберем базовый сценарий работы с облаком VMware: создадим виртуальный дата-центр, подготовим сеть, развернем одну виртуальную машину, настроим доступ в интернет и откроем доступ к ней по портам `22` и `443`. В примере установим Ubuntu 24, пробросим наружу `22` порт, который нужен для SSH, и `443` порт для HTTPS-сервиса внутри ВМ. В качестве приложения на `443` порту будем использовать Nginx. В VMware Cloud Director есть несколько сущностей, которые нужны уже в самом простом сценарии: - **Дата-центр** — ваш набор ресурсов: vCPU, RAM, диски и сетевые возможности. - **Сеть** — внутренняя сеть, в которой будет работать виртуальная машина. - **Edge** — сетевой шлюз дата-центра. Через него настраиваются SNAT и DNAT. - **Каталог** — хранилище ISO-образов и шаблонов. Еще в интерфейсе VMware встречается [vApp](https://timeweb.cloud/docs/vmware/manage-data-centers/vapps). Это логическая группа ВМ. Для сценария с одной машиной он не обязателен, поэтому в этой инструкции будем создавать отдельную ВМ без vApp. ## Шаг 1. Создание виртуального дата-центра Чтобы создать дата-центр: 1. В панели управления Timeweb Cloud откройте раздел «Облако VMware». 2. Нажмите «Создать» или «Добавить». 3. Выберите конфигурацию: - количество vCPU; - объем RAM; - тип и объем дисков. 5. Укажите имя дата-центра. 6. Нажмите «Заказать». После создания дата-центр появится в списке. На вкладке «Конфигурация» будут доступны реквизиты для входа в VMware Cloud Director. ![Image1](https://content.timeweb.com/assets/b7afdbaa-e6d7-4d9f-a2c9-274cdb066299.png?width=1999&height=1525) Изменить конфигурацию дата-центра можно только через запрос в поддержку. ## Шаг 2. Вход в VMware Cloud Director Откройте карточку дата-центра в панели управления аккаунтом, перейдите на вкладку «Конфигурация», нажмите кнопку «Войти в VMware Cloud Director» и используйте логин и пароль из этой вкладки для входа в VMware Cloud Director. Дальнейшая настройка выполняется уже в интерфейсе Cloud Director. ## Шаг 3. Настройка каталога и загрузка образа Вы можете создавать ВМ из ISO-образа. Для этого нужно создать каталог и загрузить в него образы. Также вы можете воспользоваться каталогом наших образов. 1. Перейдите в «Content Hub» → «Catalogs». 2. Перейдите в «Provider ISO Library». 3. Перейдите во вкладку «Application Images». Здесь вы увидите список образов, доступных по умолчанию. Чтобы создать свой каталог, выполните следующие действия: 1. Перейдите в «Content Hub» → «Catalogs». 2. Нажмите «New». ![Image4](https://content.timeweb.com/assets/c8246068-5bcc-4ae3-8c73-423061a3900d.png?width=1999&height=1130) 3. Укажите имя каталога. 4. При необходимости выберите привязку к конкретной storage policy. Пользовательские каталоги используют дисковое пространство дата-центра, в отличие от наших встроенных каталогов, которые не занимают место в хранилище пользователя. По умолчанию применяется политика хранения из раздела «Data Centers» → нужный дата-центр → «Storage Policies» → «Content». Настройка storage policy имеет смысл, если в дата-центре используются диски разных классов: gold, silver или bronze. В этом случае можно выбрать, на каком типе хранилища будут размещаться образы. 5. Нажмите «OK». Загрузите ISO-образ: 1. Перейдите в «Content Hub» → «Content». 2. Нажмите «Add» → «Media». ![Image2](https://content.timeweb.com/assets/64c0fedc-ccd4-4775-b781-257be3f80c4b.png?width=1999&height=1117) 3. Выберите каталог. 4. При необходимости задайте имя файла. 5. Выберите ISO-образ на компьютере. 6. Нажмите «OK» и дождитесь завершения загрузки. После загрузки образ появится в разделе «Media» и станет доступен при создании ВМ. ## Шаг 4. Создание внутренней сети Перед созданием ВМ лучше сразу подготовить сеть. В противном случае машина будет создана без доступа в интернет. Узнаем публичный IP, выделенный для нашего дата-центра. Он понадобится нам далее для настройки SNAT и DNAT: 1. Перейдите в «Networking» → «IP Spaces». ![Image6](https://content.timeweb.com/assets/75bb3795-f213-436f-bb5b-c02f67588570.png?width=1999&height=1085) 2. Выберите доступную сеть. 3. Перейдите во вкладку «Floating IPs». 4. Нажмите на кнопку «Request». ![Image7](https://content.timeweb.com/assets/606de0d8-1256-45cc-9598-a103f33fffba.png?width=1999&height=1136) 5. В открывшемся меню укажите количество IP адресов. По умолчанию для дата-центра выделяется один адрес. Нажмите кнопку «Request». 6. В колонке «IP Address» будет указан выделенный публичный IP — запомните его. Создадим сеть: 1. Перейдите в «Data Centers». 2. Откройте нужный дата-центр. 3. Перейдите на вкладку «Networks». 4. Нажмите «New». 5. В поле «Scope» выберите «Current Organization Virtual Data Center». 6. В поле «Network Type» выберите «Routed». 7. В поле «Edge Connection» выберите Edge-коннектор, созданный по умолчанию. 8. В разделе «General»: - укажите имя сети; - в поле «Gateway CIDR» укажите, например, `172.16.8.1/24`. 10. Остальные настройки оставьте по умолчанию. 11. Нажмите «Finish». В этом примере: - `172.16.8.1` — адрес шлюза внутри сети; - `/24` — размер подсети; - адреса ВМ будут выдаваться из этой же внутренней сети. ## Шаг 5. Включение DHCP Чтобы не задавать IP-адрес вручную внутри гостевой ОС, удобнее сразу включить DHCP. Для этого: 1. На вкладке «Networks» откройте созданную сеть. 2. Перейдите в раздел «DHCP». 3. Нажмите «Activate». ![Image9](https://content.timeweb.com/assets/c076e62f-096d-4719-a0ee-dad5131bd452.png?width=1999&height=1124) 4. В «General Settings» выберите «Gateway». 5. В «DHCP Pools» нажмите «Add» и задайте диапазон, например `172.16.8.2-172.16.8.40`. 6. В поле «DNS through DHCP» при необходимости укажите DNS-серверы, например: - `8.8.8.8` - `8.8.4.4` 8. Нажмите «Finish». После этого ВМ, подключенные к этой сети, смогут автоматически получать внутренний IP-адрес. ## Шаг 6. Настройка SNAT для выхода в интернет На этом этапе у сети уже есть шлюз и DHCP, но этого недостаточно, чтобы ВМ могла выходить в интернет. Для этого нужно настроить правило SNAT. SNAT позволяет виртуальным машинам с внутренними адресами использовать внешний публичный IP для исходящих подключений. Чтобы настроить SNAT: 1. Перейдите в «Data Centers» и откройте нужный дата-центр. 2. Перейдите на вкладку «Edges». 3. Выберите шлюз по умолчанию. 4. Откройте вкладку «NAT». 5. Нажмите «New». 6. Заполните параметры: - «Name» — название, например `snat-main`; - «NAT Action» — SNAT; - «External IP» — публичный IP дата-центра; - «Internal IP» — диапазон внутренней сети, например `172.16.8.0/24`. 8. Сохраните правило. После этого ВМ из этой сети смогут выходить в интернет. ## Шаг 7. Создание виртуальной машины Теперь можно создавать ВМ. 1. Перейдите в «Data Centers». 2. Откройте нужный дата-центр. 3. На вкладке «Virtual Machines» нажмите «New VM». 4. Укажите: - «Name» — имя ВМ в интерфейсе Cloud Director; - «Computer name» — имя хоста внутри ОС. Дальше выберите способ создания. #### Если создаете ВМ из ISO-образа: 1. В поле «Type» выберите New. 2. Укажите «Guest OS Family» и «Guest OS». 3. В поле «Boot image» выберите загруженный ISO-образ. 4. В разделе «Compute» задайте CPU и RAM. 5. В разделе «Storage» задайте размер диска и storage policy. #### Если создаете ВМ из шаблона: 1. В поле «Type» выберите «From Template». 2. Выберите нужный шаблон. 3. Укажите storage policy. #### Подключите ВМ к сети: На этапе «Networking»: 1. Нажмите «Customize». 2. В поле «Network» выберите созданную сеть. 3. Выберите автоматическое получение IP, если используете DHCP. ![Image10](https://content.timeweb.com/assets/5fa79a73-1ca5-4b7b-906f-fd2a9d0b51bd.png?width=1999&height=1140) 4. Нажмите «OK». ## Шаг 8. Настройка ВМ Выберите созданную ВМ в меню и откройте консоль, нажав на «Launch web console». ![Image8](https://content.timeweb.com/assets/c64f8b05-3615-45f3-80a0-1e7da61b9808.png?width=1999&height=1130) Выполните установку ОС, если ВМ создавалась из установочного образа. После этого проверьте, что ВМ загрузилась без ошибок и получила IP-адрес из вашей внутренней сети. Например, в Ubuntu это можно проверить командой: ```bash ip a ``` ![Image5](https://content.timeweb.com/assets/6064044b-ae69-4e7f-b854-93ebdb7cfae3.png?width=1999&height=1294) Например, если ВМ получила адрес `172.16.8.2`, именно этот адрес понадобится дальше для правил DNAT. Также стоит сразу проверить, что SSH-сервер внутри ОС действительно запущен. В Ubuntu для проверки выполните команду: ```bash systemctl status ssh ``` ## Шаг 9. Настройка DNAT для порта 22 Теперь откроем SSH-доступ к ВМ извне. DNAT работает в обратную сторону по сравнению с SNAT: он принимает входящее подключение на внешний IP и перенаправляет его на внутренний адрес виртуальной машины. Чтобы создать правило для SSH: 1. Перейдите в «Data Centers» и откройте нужный дата-центр. 2. Перейдите в раздел «Edges». 3. Выберите шлюз по умолчанию. 4. Перейдите на вкладку «NAT». ![Image3](https://content.timeweb.com/assets/7f85d03c-545d-4c60-ae3b-5b1f3fea2b27.png?width=1999&height=1117) 5. Нажмите «New». 6. Укажите: - Name — например `dnat-ssh`; - NAT Action — DNAT; - External IP — публичный IP дата-центра; - External Port — с; - Internal IP — внутренний IP ВМ, полученный на прошлом шаге, например `172.16.8.2`. 8. Нажмите «Save». > [!NOTE] > Если маппинг портов не нужен, поле «Application» можно не заполнять. В этом случае будет использоваться одинаковый внешний и внутренний порт. Если необходимо настроить маппинг портов, выберите профиль приложения в поле «Application» и укажите разные значения внешнего и внутреннего портов. После этого к ВМ можно будет подключаться по SSH через публичный IP дата-центра: ```bash ssh user@PUBLIC_IP ``` На уровне Edge также можно настроить правила файрвола. По умолчанию для файрвола может действовать правило `Any - Any - Allow`, то есть без ограничений по источнику и назначению. Если позже понадобится настроить правила файрвола, перейдите в Data Centers → ваш дата-центр → Edges, выберите шлюз по умолчанию и откройте вкладку Firewall. ## Шаг 10. Настройка приложения В качестве приложения развернем Nginx с тестовой страницей и сразу подготовим его к работе по HTTPS. Для базового сценария используем самоподписанный сертификат: этого достаточно, чтобы проверить проброс 443 порта. Если позже понадобится сертификат Let's Encrypt, его можно будет выпустить после настройки домена и подходящего способа валидации. Сначала подключитесь к ВМ по SSH: ```bash ssh user@PUBLIC_IP ``` Установите Nginx и OpenSSL: ```bash sudo apt update sudo apt install -y nginx openssl ``` Создайте простую тестовую страницу: ```bash echo '

vmware app is working

' | sudo tee /var/www/html/index.html ``` Сгенерируйте самоподписанный сертификат: ```bash sudo mkdir -p /etc/nginx/ssl sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt -subj "/CN=PUBLIC_IP" ``` Где `PUBLIC_IP` — публичный IP дата-центра. Откройте конфигурацию сайта по умолчанию в текстовом редакторе: ```bash sudo nano /etc/nginx/sites-available/default ``` Вставьте в файл такую конфигурацию: ```bash server { listen 80 default_server; listen [::]:80 default_server; return 301 https://$host$request_uri; } server { listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; root /var/www/html; index index.html; location / { try_files $uri $uri/ =404; } } ``` Чтобы сохранить файл в nano, нажмите `Ctrl+O`, затем `Enter`. После этого нажмите `Ctrl+X` для выхода. Проверьте конфигурацию и перезапустите Nginx: ```bash sudo nginx -t sudo systemctl reload nginx ``` Пока DNAT для `443` еще не настроен, убедитесь локально, что сервис отвечает: ```bash curl -k https://127.0.0.1 ``` После этого приложение внутри ВМ уже готово. На следующем шаге останется опубликовать `443` порт через DNAT, чтобы сервис стал доступен извне. ## Шаг 11. Настройка DNAT для порта 443 По той же схеме откроем доступ к веб-серверу. 1. Перейдите в «Data Centers» и откройте ваш дата-центр. 2. Перейдите в раздел «Edges». 3. Выберите шлюз по умолчанию. 4. На вкладке «NAT» снова нажмите «New». 5. Укажите: - Name — например `dnat-https`; - NAT Action — DNAT; - External IP — тот же публичный IP; - External Port — `443`; - Internal IP — внутренний IP той же ВМ; 7. Нажмите «Save». После этого входящий трафик на `443` будет перенаправляться на вашу ВМ. Для проверки откройте в браузере страницу `https://IP_вашего_сервера`. Браузер покажет предупреждение о сертификате, потому что мы использовали самоподписанный сертификат. Согласитесь с рисками, после чего вы увидите тестовую страницу. # Создание виртуального дата-центра Source: https://timeweb.cloud/docs/vmware/create-data-center Чтобы создать виртуальный дата-центр: 1. Перейдите в раздел «Облако VMware» и нажмите «Создать» или «Добавить». 2. Выберите конфигурацию дата-центра. Изменить ее будет можно только через запрос в поддержку. - - **Количество ядер vCPU** - **Объем RAM** - **Диски**: Активируйте переключатель у нужного типа диска и укажите желаемый объем. Можно заказать все три типа дисков, но не более одного диска каждого типа. Диски определяют Storage policy — политику хранения данных: - - - Gold: NVMe, 25000 IOPS - Silver: SSD, 8000 IOPS - Bronze: HDD, 300 IOPS 3. Укажите удобное имя дата-центра, которое будет отображаться в панели управления. 4. Нажмите «Заказать». Дата-центр будет создан в течение пары минут и отобразится в разделе «Облако VMware». Реквизиты доступа можно найти в панели управления на вкладке «Конфигурация». > [!NOTE] > Публичный IP-адрес для дата-центра будет выдан автоматически. Увеличить количество IP-адресов можно по запросу в поддержку. # Управление дата-центром Source: https://timeweb.cloud/docs/vmware/manage-data-centers Управление дата-центром выполняется через интерфейс VMware Cloud Director. Логин и пароль для входа можно найти в панели управления Timeweb Cloud на вкладке «Конфигурация». ![6b36fdf4 Cd9c 426b B886 93abaa2d9de2](https://content.timeweb.com/assets/4cc67373-e291-4b89-9998-6bb303cbc8ef.png?width=1540&height=803) Полную документацию VMware Cloud Director можно найти на [официальном сайте](https://techdocs.broadcom.com/us/en/vmware-cis/cloud-director/vmware-cloud-director/10-5/map-for-vmware-cloud-director-tenant-portal-guide-10-5.html). # Пользователи Source: https://timeweb.cloud/docs/vmware/manage-data-centers/users Вы можете создавать и удалять пользователей дата-центра и управлять их правами. ## Создание пользователя 1. Перейдите в Cloud Director → **Administration**. 2. В разделе **Access Control** выберите **Users**. 3. Нажмите **New**. ![Image4](https://content.timeweb.com/assets/3df4e5bb-666c-4af3-96ff-23e5b31b26db.png?width=1920&height=869) _Раздел Users в интерфейсе [VMware](https://www.vmware.com/)_ 4. Введите имя и пароль пользователя и выберите его роль. ![Image6](https://content.timeweb.com/assets/adcd4342-26ae-4735-ab88-6633de164693.png?width=1071&height=792) _Создание нового пользователя в интерфейсе [VMware](https://www.vmware.com/)_ - - **Catalog Author**. Доступ к созданию и публикации каталогов — хранилищ шаблонов виртуальных машин, vApp, ISO-образов. - **Console Access Only**. Доступ в гостевую систему виртуальных машин без возможности управления самой ВМ (запуск, остановка, удаление и пр. недоступны). - **Defer to Identity Provider**. Роль определяется через внешнего провайдера аутентификации (например, Active Directory или SAML IdP). - **Organization Administrator**. Полный доступ ко всем созданным дата-центрам и управлению ими. - **vApp Author**. Доступ к созданию и управлению vApp: запуск новых ВМ из шаблонов, их включение/выключение, настройка базовых параметров. - **vApp User**. Доступ к работе с назначенными vApp или ВМ: запуск, остановка, консоль, базовые операции. Нет доступа к созданию новых сущностей. 4. (Опционально) Укажите данные конкретного сотрудника, для которого создается пользователь. 5. Нажмите **Save**. ## Редактирование пользователя Чтобы изменить имя, пароль или роль пользователя дата-центра: 1. Перейдите в Cloud Director → **Administration**. 2. В разделе **Access Control** выберите **Users**. 3. Кликните на нужного пользователя. 4. Нажмите **Edit**. ![Image5](https://content.timeweb.com/assets/12ea839f-68f1-4567-ad99-923f22a82f63.png?width=1920&height=869) _Настройки пользователя в интерфейсе [VMware](https://www.vmware.com/)_ 5. Измените необходимые параметры и сохраните изменения кнопкой **Save**. Чтобы изменить квоты на количество ВМ для пользователя: 1. Перейдите в Cloud Director → **Administration**. 2. В разделе **Access Control** выберите **Users**. 3. Кликните на нужного пользователя. 4. Перейдите на вкладку **Quotas** и нажмите **Edit**. 5. Укажите необходимые значения и нажмите **Save**. ## Блокировка пользователя Чтобы запретить доступ пользователя к ресурсам, вы можете заблокировать его. Для этого: 1. Перейдите в Cloud Director → **Administration**. 2. В разделе Access Control выберите **Users**. 3. Кликните на нужного пользователя. 4. Нажмите **Disable**. 5. Подтвердите действие. ![Image8](https://content.timeweb.com/assets/27b54b7f-1e0a-4bd5-a0aa-607c0333f15f.png?width=1920&height=869) _Настройки пользователя в интерфейсе [VMware](https://www.vmware.com/)_ Снять блокировку можно в любой момент в этом же разделе — по клику на **Enable**. ## Удаление пользователя > [!NOTE] > Если вам нужно временно ограничить доступ пользователя к ресурсам, его можно [заблокировать](https://timeweb.cloud/docs/vmware/manage-data-centers/users#blokirovka-polzovatelya). Чтобы безвозвратно удалить пользователя: 1. Перейдите в Cloud Director → **Administration**. 2. В разделе **Access Control** выберите **Users**. 3. Кликните на нужного пользователя. 4. Нажмите **Disable** в верхнем меню. 5. Подтвердите действие. 6. Нажмите **Delete**. 7. Подтвердите действие. # Виртуальные машины Source: https://timeweb.cloud/docs/vmware/manage-data-centers/virtual-machines ## Создание виртуальных машин В интерфейсе Cloud Director вы можете создавать виртуальные машины (ВМ) отдельно или внутри [vApp](https://timeweb.cloud/docs/vmware/manage-data-centers/vapps) — групп виртуальных машин. - Чтобы сразу создать ВМ с нужной ОС, предварительно [создайте каталог](https://timeweb.cloud/docs/vmware/manage-data-centers/catalogs) и [загрузите в него ISO-образ](https://timeweb.cloud/docs/vmware/manage-data-centers/catalogs#zagruzka-iso-obrazov). - Чтобы ВМ имела доступ в интернет, предварительно [создайте и настройте сеть](https://timeweb.cloud/docs/vmware/manage-data-centers/networks). ### Создание отдельной ВМ Чтобы создать отдельную ВМ: 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. На вкладке **Virtual Machines** нажмите **New VM**. ![Image7](https://content.timeweb.com/assets/3568c32e-f184-4e0f-a431-9bff46e7b3f5.png?width=1920&height=869) _Раздел Virtual Machines в интерфейсе [VMware](https://www.vmware.com/)_ 4. Укажите **Name** и **Computer name**: - - **Name** — имя ВМ, будет отображаться в интерфейсе Сloud Director, может быть любым. - **Computer name** — имя компьютера, будет использоваться внутри операционной системы (имя хоста для Linux или имя, которое отображается в свойствах системы, для Windows). Должно быть уникальным, может содержать латинские буквы, цифры и дефисы, максимум 15 символов для Windows и 63 для Linux. 5. В пункте **Type** выберите способ создания ВМ: с нуля или из готового шаблона. Для создания с нуля: - - Выберите тип **New**. - В **Guest OS Family** выберите семейство ОС. - В **Guest OS** выберите конкретную ОС. - В **Boot image** выберите загрузочный образ (должен быть добавлен заранее). Вы также можете создать «пустую» ВМ и подключить образ позднее. - В разделе **Compute** задайте параметры ВМ: количество ядер процессора и объем памяти. - В разделе **Storage** укажите объем диска и политику хранения. Для создания из шаблона: - - Выберите тип **From Template**. - Выберите нужный шаблон (должен быть [создан заранее](https://timeweb.cloud/docs/vmware/manage-data-centers/vapp-templates)). - Выберите политику хранения. 6. В разделе **Networking** выберите сеть и способ получения IP-адреса. Этот шаг можно пропустить — тогда ВМ будет создана без доступа в интернет. 7. Нажмите **ОК**, чтобы запустить создание ВМ. ### Создание ВМ внутри vApp 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **vApps**. 4. У нужного vApp кликните **Actions** → **Add** → **Add VM**. ![Image10](https://content.timeweb.com/assets/1b44226c-41c7-4780-ab4c-f77c014b9eef.png?width=1920&height=869) _Раздел vApps в интерфейсе [VMware](https://www.vmware.com/)_ 5. Нажмите **Add Virtual Machine** в левом нижнем углу. Откроется форма создания ВМ. 6. Создайте ВМ по [инструкции выше](https://timeweb.cloud/docs/vmware/manage-data-centers/virtual-machines#sozdanie-otdelnoj-vm). ## Включение и выключение ВМ Чтобы включить или выключить ВМ: 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **Virtual Machines**. 4. У нужной ВМ кликните **Actions** → **Power** и выберите **Power Off** или **Power On**, в зависимости от текущего состояния ВМ. ![Image12](https://content.timeweb.com/assets/fec97065-0d35-4fb1-a2e5-51bd198813b5.png?width=1920&height=869) _Меню Actions в разделе Virtual Machines в интерфейсе [VMware](https://www.vmware.com/)_ ## Запуск консоли ВМ Чтобы запустить консоль виртуальной машины: 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **Virtual Machines**. 4. На карточке нужной ВМ кликните **VM Console**. ![5485b5bf 892f 49ea A85d 4b4f4a9abafb](https://content.timeweb.com/assets/bebeb42c-3717-4b1b-be4c-a7fc31b0e618.png?width=1920&height=869) _Раздел Virtual Machines в интерфейсе [VMware](https://www.vmware.com/)_ Консоль откроется в новом окне. ## Снапшоты ВМ Снапшот — это снимок текущего состояния ВМ и ОС со всеми данными, который позволяет быстро «откатить» изменения, если что-то пошло не так. Для одной ВМ доступно создание одного снапшота; при создании следующего он заменит собой предыдущий. ### Создание снапшота > [!NOTE] > Если вам нужно создать снапшоты всех ВМ внутри vApp, это можно сделать массово [из настроек vApp](https://timeweb.cloud/docs/vmware/manage-data-centers/vapps#upravlenie-vm-v-vapp). 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **Virtual Machines**. 4. Кликните на **Actions** у нужной ВМ и выберите **Snapshot** → **Create snapshot**. ![Image11](https://content.timeweb.com/assets/7619771c-f3f2-4f2d-922b-17da20d363e1.png?width=1920&height=869) _Меню Actions в разделе Virtual Machines в интерфейсе [VMware](https://www.vmware.com/)_ 5. Введите имя снапшота и нажмите **Create**. Снапшот будет отображен в разделе **Compute** → **Virtual Machines** → **Details** у нужной ВМ → **Snaphots**. ### Восстановление данных из снапшота 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **Virtual Machines**. 4. Кликните на **Actions** у нужной ВМ и выберите **Snapshot** → **Revert to Current**. ![Image15](https://content.timeweb.com/assets/709a8c9b-9ca5-4be4-b3ff-5a1f2dcb85cd.png?width=1920&height=869) _Меню Actions в разделе Virtual Machines в интерфейсе [VMware](https://www.vmware.com/)_ 5. Подтвердите действие. ### Удаление снапшота 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **Virtual Machines**. 4. Кликните на **Actions** у нужной ВМ и выберите **Snapshot** → **Remove All**. ## Добавление ВМ в vApp Действие доступно как для отдельно созданных ВМ, так и для ВМ, уже добавленных в какой-либо vApp: в этом случае вы можете либо перенести ВМ в другой vApp, либо скопировать ее. 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **Virtual Machines**. 4. У нужной ВМ кликните **Actions** и выберите **Move** для перемещения ВМ или **Copy** для ее копирования. 5. Выберите vApp, в который нужно перенести ВМ. 6. Выберите политику хранения. 7. Подтвердите действие. ## Удаление ВМ Чтобы удалить виртуальную машину: 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **Virtual Machines**. 4. Остановите ВМ, кликнув на **Actions** → **Power** → **Power Off**. 5. Кликните на **Actions** у нужной ВМ и выберите **Delete**. 6. Подтвердите удаление. # vApps Source: https://timeweb.cloud/docs/vmware/manage-data-centers/vapps vApp — это логическая группа виртуальных машин (ВМ) с предустановленной конфигурацией сети и ресурсов, объединенных в одно целое. vApp позволяет: - управлять несколькими ВМ как единым объектом; - запускать и останавливать группы ВМ одновременно; - управлять настройками сети, ресурсами CPU/Memory и дисками для всей группы; - хранить vApp как шаблон для последующего развертывания. ## Создание vApp vApp можно создавать с нуля, из локального OVF/OVA-файла или из [шаблона](https://timeweb.cloud/docs/vmware/manage-data-centers/vapp-templates), сохраненного в [каталоге](https://timeweb.cloud/docs/vmware/manage-data-centers/catalogs). ### Создание vApp с нуля 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **vApps**. 4. Кликните **New** → **New vApp**. 5. Укажите имя vApp (будет отображаться в Cloud Director, может быть любым). 6. (Опционально) Нажмите **Add Virtual Machine**, чтобы сразу [создать ВМ](https://timeweb.cloud/docs/vmware/manage-data-centers/virtual-machines#sozdanie-otdelnoj-vm) внутри этого vApp. Вы также можете создать ВМ позднее, после чего [добавить ее в vApp](https://timeweb.cloud/docs/vmware/manage-data-centers/virtual-machines#dobavlenie-vm-v-vapp). ### Создание vApp из OVF/OVA Для создания vApp из файла `.ovf` или `.ova`: 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **vApps**. 4. Кликните **New** → **Add vApp From OVF**. ![Image13](https://content.timeweb.com/assets/0798773d-6c06-4927-9ec3-86560396c222.png?width=1920&height=869) _Раздел vApps в интерфейсе [VMware](https://www.vmware.com/)_ 5. Укажите путь к файлу на вашем устройстве: - для OVA — загрузите файл `.ova`. - для OVF — загрузите все файлы шаблона по очереди: .`ovf`, `.vmdk` и `.mf`. 6. Просмотрите информацию о создаваемом vApp. 7. Укажите имя vApp. 8. Выберите политику хранения и, при необходимости, измените имя компьютера. 9. Выберите сеть для нового vApp. 10. Укажите объем ресурсов для VM в vApp. 11. Проверьте введенные данные и запустите создание vApp. ### Создание vApp из шаблона 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **vApps**. 4. Кликните **New** → **Add vApp From Catalog**. ![Image14](https://content.timeweb.com/assets/64246ca9-70b8-4bd9-bdbf-2a2635b107bb.png?width=1920&height=869) _Раздел vApps в интерфейсе [VMware](https://www.vmware.com/)_ 5. Выберите нужный шаблон (должен быть [создан заранее](https://timeweb.cloud/docs/vmware/manage-data-centers/vapp-templates)). 6. Укажите имя нового vApp. 7. Задайте параметры: - **Runtime lease** — время работы vApp до автоматической остановки (по умолчанию — не ограничено); - **Storage lease** — срок после выключения vApp, по истечении которого он будет удален или перемещен в просроченные объекты (по умолчанию — 30 дней). 8. Выберите политику хранения. 9. Укажите объем ресурсов для VM в vApp. 10. Выберите сеть для нового vApp. 11. Проверьте введенные данные и запустите создание vApp. ## Копирование vApp Вы можете создавать идентичные копии vApp для их размещения в других ДЦ. Чтобы скопировать vApp: 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **vApps**. 4. Кликните на **Actions** у нужного vApp: - Чтобы переместить vApp в другой ДЦ, выберите **Move**. - Чтобы скопировать vApp, выберите **Copy**. ![5fca8115 7cc8 436f A4ea 094911b5c8a1](https://content.timeweb.com/assets/fa5d18b9-ad29-45f7-b21b-17b145980351.png?width=1920&height=869) _Меню Actions в разделе vApps в интерфейсе [VMware](https://www.vmware.com/)_ 5. При копировании задайте имя для нового vApp. 6. Выберите нужный дата-центр. 7. Нажмите ОК. ## Управление ВМ в vApp Вы можете массово включать, выключать, перезапускать ВМ внутри одного vApp из его настроек. Для этого: 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **vApps**. 4. Кликните на **Actions** у нужного vApp. Здесь вам доступны: - - Выключение всех ВМ: **Power** → **Power Off**. - Включение всех ВМ: **Power** → **Start**. - Выключение всех ВМ с завершением работы гостевых ОС: **Power** → **Stop**. - Сброс состояния (памяти, кэша) без выключения ВМ: **Power** → **Reset**. - Приостановка всех ВМ: **Power** → **Suspend**. - Отключение после приостановки: **Power** → **Discard suspended state**. - Создание снапшотов всех ВМ: **Snapshot** → **Create snapshot**. - Восстановление данных из снапшотов для всех ВМ: **Snapshot** → **Revert to Snapshot**. - Удаление снапшотов всех VM: **Snapshot** → **Remove Snapshot**. ## Удаление vApp > [!NOTE] > Перед удалением убедитесь, что в vApp не осталось нужных вам ВМ. При необходимости их можно [перенести в другой vApp](https://timeweb.cloud/docs/vmware/manage-data-centers/virtual-machines#dobavlenie-vm-v-vapp). Чтобы удалить vApp: 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **vApps**. 4. У нужного vApp кликните **Actions** → **Power** → **Stop**, чтобы выключить его. 5. После выключения кликните **Actions** → **Delete**. 6. Подтвердите действие. # Шаблоны vApp и ВМ Source: https://timeweb.cloud/docs/vmware/manage-data-centers/vapp-templates Шаблоны vApp в Cloud Director можно использовать как: - шаблоны ВМ — если внутри шаблона vApp создана только одна ВМ; - шаблоны целой группы ВМ, если вы часто создаете vApps с одинаковыми параметрами. ## Создание шаблона vApp Чтобы сохранить существующий vApp как шаблон: 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите в раздел **Compute** → **vApps**. 4. Кликните на **Actions** у нужного **vApp** и выберите **Create Template**. ![Image17](https://content.timeweb.com/assets/bc788698-3de7-4f33-8c93-35b1a7b76f54.png?width=1920&height=869) _Меню Actions в разделе vApps в интерфейсе [VMware](https://www.vmware.com/)_ 5. Выберите [каталог](https://timeweb.cloud/docs/vmware/manage-data-centers/catalogs), где будет храниться шаблон. 6. Укажите имя шаблона. 7. В поле **When using this template** выберите нужный вариант: - - **Make identical copy** — при использовании шаблона будет автоматически создаваться точно такой же vApp; - **Customize VM settings** — при использовании шаблона можно будет настроить параметры ВМ. 8. Нажмите **ОК**. ## Создание шаблона ВМ > [!NOTE] > Этот способ доступен только для виртуальных машин, **не** созданных из шаблона. 1. Перейдите в Cloud Director → **Data Centers**. 2. Перейдите во вкладку **Virtual Machines**. 3. Нажмите на **Actions** у нужной ВМ и выберите пункт **Create Template**. 4. В следующем окне: - - Выберите каталог хранения шаблона - Укажите имя шаблона. - При необходимости добавьте описание. ## Копирование и перемещение шаблона Созданные шаблоны можно перемещать или копировать в другие каталоги. 1. Перейдите в Cloud Director. 2. Откройте раздел **Content Hub** → **Content**. 3. Перейдите на вкладку **vApp Templates**. 4. Кликните на нужный шаблон. ![Image18](https://content.timeweb.com/assets/ec1fa568-0ffd-4b3a-9020-fd23be263bb9.png?width=1920&height=869) _Раздел Content в интерфейсе [VMware](https://www.vmware.com/)_ 5. Чтобы скопировать шаблон в другой каталог, кликните **Copy To** и выберите нужный каталог. 6. Чтобы полностью переместить в другой каталог, кликните **Move To** и выберите нужный каталог. ![Image19](https://content.timeweb.com/assets/a6d49f9d-b3ef-44ca-a8b6-b34f6343337a.png?width=1920&height=869) _Раздел Content в интерфейсе [VMware](https://www.vmware.com/)_ 7. Нажмите Save. ## Удаление шаблона 1. Перейдите в Cloud Director. 2. Откройте раздел **Content Hub** → **Content**. 3. Перейдите на вкладку **vApp Templates**. 4. Кликните на нужный шаблон. 5. Нажмите **Delete** в верхнем меню. 6. Подтвердите действие. ![Image21](https://content.timeweb.com/assets/eee987b0-2bf9-439b-9bce-09e1cbad0926.png?width=1920&height=869) _Раздел Content в интерфейсе [VMware](https://www.vmware.com/)_ # Сети Source: https://timeweb.cloud/docs/vmware/manage-data-centers/networks Настройка сети нужна, чтобы виртуальные машины могли выходить в интернет. Мы рассмотрим типовой сценарий: создадим сеть, включим DHCP и настроим SNAT. Этого будет достаточно для работы ВМ. ## Создание сети 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите во вкладку **Networks**. 4. Нажмите **New**, чтобы создать новую сеть. 5. В поле **Scope** выберите **Current Organization Virtual Data Center.** 6. В **Network Type** выберите **Routed** — это необходимо для настройки доступа во внешнюю сеть. 7. В **Edge Connection** выберите созданный по умолчанию Edge-коннектор. 8. В разделе **General** укажите имя сети. В поле **Gateway CIDR** укажите значение `172.16.8.1/24` — это диапазон локальных адресов, доступных для назначения виртуальным машинам. Остальные настройки оставьте по умолчанию. 9. В разделах **Static IP Pools**, **DNS** и **Segment Profile Template** заполнять ничего не нужно. 10. Нажмите **Finish**, чтобы создать сеть. Теперь сеть будет доступна при создании виртуальных машин. ## Настройка DHCP Настройка DHCP не обязательна, но с ней проще — IP-адреса будут назначаться автоматически. 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите во вкладку **Networks**. 4. Кликните на нужную сеть — откроется меню ее настроек. 5. Перейдите в раздел **DHCP** и нажмите **Activate**. 6. В разделе **General Settings** выберите **Gateway** — это означает, что DHCP-сервер будет работать через шлюз. Остальное можно не менять. 7. В **DHCP Pools** нажмите **Add** и задайте диапазон IP-адресов, которые будут выдаваться ВМ. Если вы использовали параметры из предыдущего раздела, можно задать диапазон `172.16.8.2-172.16.8.40`. Это даст 39 доступных адресов. 8. В пункте **DNS through DHCP** укажите желаемые DNS, например, DNS Google — `8.8.8.8` и `8.8.4.4`. 9. Нажмите **Finish**, чтобы сохранить настройки DHCP. Теперь виртуальные машины будут получать IP-адреса автоматически при подключении к сети. ## Настройка SNAT SNAT (Source NAT) позволяет виртуальным машинам использовать один внешний IP-адрес для выхода в интернет. 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите во вкладку **Edges**. 4. Выберите шлюз, созданный по умолчанию. 5. Перейдите во вкладку **NAT** и нажмите **New**. 6. Укажите параметры: - - Имя NAT. - В поле **NAT Action** выберите **SNAT**. - В **External IP** — публичный IP, выделенный для вашего облака. - В **Internal IP** укажите диапазон `172.16.8.0/24` — адреса, которые будут использовать SNAT для выхода в интернет. 7. Остальные настройки можно оставить по умолчанию. 8. Нажмите **Save**, чтобы создать правило. ## Настройка DNAT DNAT нужен, если вы хотите открыть доступ к какому-либо сервису, запущенному на виртуальной машине, из внешней сети. 1. Перейдите в Cloud Director → **Data Centers**. 2. Кликните на нужный дата-центр. 3. Перейдите во вкладку **Edges**. 4. Выберите шлюз, созданный по умолчанию. 5. Перейдите во вкладку **NAT** и нажмите **New**. 6. Укажите параметры: - - Имя NAT. - В поле **NAT Action** выберите **DNAT**. - В **External IP** укажите публичный IP, выделенный для вашего дата-центра. Обратите внимание, что для одного внешнего IP можно создать несколько правил NAT, используя разные порты. - В **External Port** укажите порт, по которому будет осуществляться подключение извне, например `1337`. - В **Internal IP** укажите внутренний IP виртуальной машины, на которой работает нужный сервис. - В **Application** выберите нужный протокол/сервис. Например, SSH. 7. Остальные настройки можно оставить по умолчанию. 8. Нажмите **Save**, чтобы создать правило. Теперь доступ к сервису будет открыт. Если вы следовали примеру, вы можете подключиться к виртуальной машине по SSH так: ```shell ssh root@external_ip -p 1337 ``` ## Использование созданной сети Теперь вы можете выбрать эту сеть при создании виртуальной машины. Для этого в разделе **Networking** нажмите **Customize** и выберите нужную сеть в поле **Network**. ![Image1](https://content.timeweb.com/assets/356f185e-8400-4909-840d-25f0758f0ffd.png?width=1772&height=350) _Раздел Networking в интерфейсе [VMware](https://www.vmware.com/)_ # Каталоги Source: https://timeweb.cloud/docs/vmware/manage-data-centers/catalogs Для работы с ресурсами VMware вам понадобится каталог — в нем можно хранить готовые образы ВМ, шаблоны vApp и различные медиафайлы. ## Создание каталога Чтобы создать каталог: 1. Перейдите в Cloud Director. 2. В меню слева перейдите в **Content Hub** → **Catalogs**. 3. Кликните **New**. ![Image22](https://content.timeweb.com/assets/4daae5ed-5ff1-4c02-adac-7c2b61509ced.png?width=1920&height=869) _Раздел Catalogs в интерфейсе [VMware](https://www.vmware.com/)_ 4. В поле **Name** укажите имя каталога (может быть любым). 5. Если нужно, чтобы каталог был доступен только внутри определенного дата-центра, включите опцию **Create on a specific storage policy?** и выберите нужный дата-центр. 6. Нажмите **ОК** для создания. ## Загрузка ISO-образов Вы можете загружать в каталоги ISO-образы, необходимые для работы. Для этого: 1. Перейдите в Cloud Director. 2. В меню слева перейдите в **Content Hub** → **Content**. 3. Нажмите **Add** → **Media**. ![Image23](https://content.timeweb.com/assets/11b226d9-9009-40f9-9aae-d798a9e2e7dc.png?width=1920&height=869) _Раздел Content в интерфейсе [VMware](https://www.vmware.com/)_ 4. Выберите нужный каталог. 5. При желании задайте новое имя файлу. 6. Выберите файл образа на своем устройстве и нажмите ОК, чтобы начать загрузку. Когда она завершится, образ будет доступен в разделе **Content Hub** → **Content** → **Media**. ## Перенос образов между каталогами Вы можете скопировать или перенести образ из одного каталога в другой. 1. Перейдите в Cloud Director. 2. Перейдите в раздел **Content Hub** → **Content** → **Media**. 3. Кликните на три точки у нужного образа. 4. Чтобы скопировать образ в другой каталог, выберите **Copy To**. 5. Чтобы полностью переместить образ в другой каталог, выберите **Move To**. 6. Выберите нужный каталог. 7. Нажмите **Save**. ![Image1](https://content.timeweb.com/assets/44db9dd8-6594-4b2c-8afa-e935743edd25.png?width=1920&height=869) _Меню действий с образами в разделе Content в интерфейсе [VMware](https://www.vmware.com/)_ ## Смена владельца каталога Смена владельца может понадобиться, если вы планируете отключить пользователя, который является владельцем в настоящий момент. 1. Перейдите в Cloud Director. 2. В меню слева перейдите в **Content Hub** → **Catalogs**. 3. Нажмите на три точки у нужного каталога и выберите **Change owner**. ![Image2](https://content.timeweb.com/assets/aba5bbc9-ff9f-4a39-911a-f86640b03587.png?width=1920&height=869) _Меню действий с каталогами в разделе Catalogs в интерфейсе [VMware](https://www.vmware.com/)_ 4. Выберите нового владельца и сохраните изменения. ## Удаление каталога > [!NOTE] > Перед удалением убедитесь, что в каталоге не осталось нужных файлов и шаблонов — они будут удалены безвозвратно. Все необходимые файлы можно [перенести в другой каталог](https://timeweb.cloud/docs/vmware/manage-data-centers/catalogs#perenos-obrazov-mejdu-katalogami). 1. Перейдите в Cloud Director. 2. В меню слева перейдите в **Content Hub** → **Catalogs**. 3. Нажмите на три точки у нужного каталога и выберите **Delete Catalog**. ![Image3](https://content.timeweb.com/assets/2ef9f588-9f68-4221-ba93-2c1390613510.png?width=1920&height=869) _Меню действий с каталогами в разделе Catalogs в интерфейсе [VMware](https://www.vmware.com/)_ 4. Подтвердите удаление. # Удаление дата-центра Source: https://timeweb.cloud/docs/vmware/delete-data-center > [!NOTE] > При удалении дата-центра из панели управления Timeweb Cloud будут безвозвратно удалены все ресурсы, созданные в VMware Cloud Director, и данные на них. Чтобы удалить дата-центр: 1. Перейдите в раздел «Облако VMware». 2. Кликните на три точки у нужного дата-центра и выберите «Удалить». ![6549e667 0285 40a3 8be9 E747a535a792](https://content.timeweb.com/assets/82cf2275-cfcc-4c2c-9b30-c7faadb0a191.png?width=1557&height=809) 3. Подтвердите действие. # AI-агенты Source: https://timeweb.cloud/docs/ai-agents Платформа AI-агентов позволяет создавать виртуальных помощников на базе [генеративных моделей](https://timeweb.cloud/docs/ai-agents/pricing/models) искусственного интеллекта. Агентов можно использовать для различных задач, связанных с генерацией текстовых данных, например: - консультации и ответы на вопросы пользователей в формате чата; - анализ предоставленных данных и формирование отчетов; - ведение программ обучения для погружения новых сотрудников. Платформа дает возможность добавлять собственные источники данных (базы знаний), чтобы агенты генерировали релевантные тексты по вашей тематике. Перед внедрением агента в проект вы сможете протестировать его работу и детально настроить его под ваши требования с помощью плейграунда (песочницы) в панели управления. Работать с AI-агентами можно: - **Через эндпоинты** Каждый агент получает свой API-эндпоинт, который вы можете [интегрировать](https://timeweb.cloud/docs/ai-agents/manage-agents/api-access-key) в свое приложение и настроить необходимые параметры. - **Через чат-бот** Любой из агентов может быть встроен на веб-страницу или в приложение [в качестве чат-бота](https://timeweb.cloud/docs/ai-agents/manage-agents/embed-chatbots). - **Через бот в мессенджере** Агент может быть интегрирован в ваш бот [Telegram](https://timeweb.cloud/docs/ai-agents/manage-agents/telegram-bots) или [Макс](https://timeweb.cloud/docs/ai-agents/manage-agents/max-bots), чтобы клиенты могли взаимодействовать с ним через привычный мессенджер. - **Через внешний чат** Можно вести диалог с агентами вне панели управления Timeweb Cloud [в отдельном интерфейсе чата](https://timeweb.cloud/docs/ai-agents/manage-agents/external-chat). В нем доступны все агенты, созданные на аккаунте. # Управление агентами Source: https://timeweb.cloud/docs/ai-agents/manage-agents - [Создание агента](https://timeweb.cloud/docs/ai-agents/manage-agents/create) - [Промпты для агентов](https://timeweb.cloud/docs/ai-agents/manage-agents/instructions) - [Смена или подключение базы знаний](https://timeweb.cloud/docs/ai-agents/manage-agents/change-knowledge-base) - [Настройка и тестирование агента](https://timeweb.cloud/docs/ai-agents/manage-agents/playground) - [Ключи доступа](https://timeweb.cloud/docs/ai-agents/manage-agents/api-access-key) - [Встраивание чат-ботов](https://timeweb.cloud/docs/ai-agents/manage-agents/embed-chatbots) - [Вложения в чатах](https://timeweb.cloud/docs/ai-agents/manage-agents/attachments-in-chats) - [Внешний чат](https://timeweb.cloud/docs/ai-agents/manage-agents/external-chat) - [Подключение Telegram-ботов](https://timeweb.cloud/docs/ai-agents/manage-agents/telegram-bots) - [Подключение Макс-ботов](https://timeweb.cloud/docs/ai-agents/manage-agents/max-bots) - [История чатов](https://timeweb.cloud/docs/ai-agents/manage-agents/chat-history) - [Включение веб-поиска](https://timeweb.cloud/docs/ai-agents/manage-agents/web-search) - [Приостановка и удаление агента](https://timeweb.cloud/docs/ai-agents/manage-agents/pause-remove) # Создание агента Source: https://timeweb.cloud/docs/ai-agents/manage-agents/create Чтобы создать нового AI-агента: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и нажмите «Создать» или «Добавить». 2. Выберите ИИ-модель для агента. Ее можно будет изменить в дальнейшем. 3. Настройте тариф агента. Стоимость агента составляет 1 рубль в месяц, а токены оплачиваются по [поресурсной модели](https://timeweb.cloud/docs/ai-agents/pricing/billing-models) pay-as-you-go. Входящие и исходящие токены тарифицируются отдельно. Списания за сервис выполняются с баланса каждый час. **Лимит токенов.** Вы можете настроить [лимит потребления токенов](https://timeweb.cloud/docs/ai-agents/pricing/token-limit) в день, чтобы контролировать их расход. Лимит можно изменить в любой момент в дальнейшем. **Веб-поиск.** Позволяет агенту [искать информацию в интернете](https://timeweb.cloud/docs/ai-agents/manage-agents/web-search). Эту настройку можно изменить в дальнейшем. Опция платная. **Генерация изображений.** Позволяет [создавать изображения](https://timeweb.cloud/docs/ai-agents/manage-agents/image-generation) в чате с агентом. Эту настройку можно изменить в дальнейшем. Стоимость рассчитывается по токенам. 4. Задайте промпт — [инструкцию для агента](https://timeweb.cloud/docs/ai-agents/manage-agents/instructions), которая объясняет, что он должен делать. Вы можете использовать одну из готовых инструкций, скорректировав ее под ваши условия, или [написать свою инструкцию](https://timeweb.cloud/docs/ai-agents/manage-agents/instructions#rekomendacii-dlya-sostavleniya-instrukcij) полностью с нуля. Дополнительно можно подключить существующий [навык](https://timeweb.cloud/docs/ai-agents/manage-agents/skills) или создать новый. 5. Подключите существующую [базу знаний](https://timeweb.cloud/docs/ai-agents/manage-knowledge-bases) или создайте новую и выберите [режим поиска](https://timeweb.cloud/docs/ai-agents/manage-knowledge-bases/search-mode) по базе. Вы также можете создать базу позднее и подключить ее [в настройках агентах](https://timeweb.cloud/docs/ai-agents/manage-agents/change-knowledge-base). Базы знаний позволяют агентам формировать более полные и точные ответы, опираясь на предоставленные вами источники данных. Примеры баз знаний — документация по продукту, информация о ценах, каталоги товаров. 6. Подключите существующий [MCP-сервер](https://timeweb.cloud/docs/ai-agents/mcp-server) или создайте новый. Вы также можете подключить MCP-сервер позднее и добавить его [в настройках агентах](https://timeweb.cloud/docs/ai-agents/manage-agents/change-knowledge-base). 7. Заполните информацию об агенте: удобное имя, комментарий, проект, в который его нужно добавить. 8. Проверьте все выбранные параметры и нажмите «Заказать». Запуск займет несколько минут, после чего вы сможете начать работу с агентом. # Системные промпты для агентов Source: https://timeweb.cloud/docs/ai-agents/manage-agents/instructions Промпт — это текстовый запрос, который определяет как модель должна формировать ответ. Существует два типа промптов: - **Промпт пользователя** — текст запроса от конечного пользователя. - **Системный промпт** — текстовая инструкция, определяющая поведение агента: его цель, роль, стиль общения и ограничения. Системный промпт (также инструкция) — влияет на контекст, в котором агент интерпретирует запросы. Он передается с каждым запросом к модели при использовании как встроенного виджета, так и API. Правильно сформулированный промпт повышает точность и релевантность ответов. Системные промпты позволяют адаптировать агента под конкретные сценарии. Например: - эксперт в конкретной области; - помощник с узкой специализацией; - персонаж с заданным стилем речи. Перед запуском агента в проекте вы сможете протестировать его работу в плейграунде и дополнительно уточнить инструкцию. ## Как добавить инструкцию Способ добавления инструкции зависит от выбранного способа использования агента: ### OpenAI-совместимый API При использовании OpenAI-совместимого API системный промпт указывается при каждой отправке запроса — как сообщение [с ролью system](https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api#system). ### Виджет и нативный API Для виджета и нативного API настройка системного промпта выполняется в панели управления. Указать инструкцию можно: - При [создании агента](https://timeweb.cloud/docs/ai-agents/manage-agents/create). Вы можете выбрать один из готовых примеров или ввести собственную инструкцию. ![4846b8dd Ba05 4961 8fec 82503fd96120 20251031163819993](https://content.timeweb.com/assets/53e996fa-c975-493d-9e9f-3a4a05581e95.png?width=996&height=584) - Позже — в разделе «Плейграунд», в настройках существующего агента. ![Image 20251101121333931](https://content.timeweb.com/assets/32995fbd-516b-4008-b1b9-cf95cca4a211.png?width=2008&height=1362) ## Рекомендации для составления инструкций Чтобы создать максимально эффективную инструкцию, отразите в ней следующие ключевые моменты: - кем является агент (например, турагентом, сотрудником поддержки и т.д.), - каковы его цели (давать ответы на вопросы, проверять корректность присланных данных, рекомендовать услуги); - на какие данные нужно ориентироваться (использовать те или иные ресурсы); - какие ограничения у него есть (какие темы можно обсуждать, на каких языках общаться). #### 1\. Личность агента Определите личность агента, указав его имя, задачи, область экспертизы. **Хороший пример:** Тебя зовут Webby, ты — виртуальный помощник, который помогает пользователям находить ответы в документации Timeweb Cloud и предоставляет экспертные рекомендации на ее основе. **Плохой пример:** Ты — виртуальный помощник на сайте Timeweb Cloud. #### 2\. Цель агента Сформулируйте цели следующим образом: - Укажите основную цель агента. - Перечислите его ключевые обязанности и сферу действия. - Опишите его приоритеты, тип помощи и ограничения. **Хороший пример:** Твоя главная задача — помогать пользователям разобраться в сервисах Timeweb Cloud и использовать их. Ты должен предоставлять точные, понятные и полные ответы на основе документации Timeweb Cloud. **Плохой пример:** Отвечай на вопросы о сервисах Timeweb Cloud. #### 3\. Экспертиза агента Экспертиза агента — это области и темы, по которым агент может предоставить точные и релевантные ответы. - Используйте четкие формулировки. - Укажите конкретные функции агента. - Укажите, на какие данные и базы знаний он должен опираться. - Научите агента приводить примеры для объяснения сложных вопросов, брать их из проверенных источников и избегать вымышленных примеров. - Научите агента использовать пошаговые инструкции, форматируйте их с помощью таблиц или блоков кода. **Хороший пример:** Ты — специалист по сервисам Timeweb Cloud и устранению неполадок в них. Твой основной фокус — облачные базы данных, облачные серверы и Kubernetes. В качестве главного источника истинной информации используй документацию Timeweb Cloud, в качестве дополнительного — инструкции Timeweb Cloud. Твои знания в первую очередь основаны на документации, во вторую — на данных из инструкций. Никогда не придумывай информацию сам. При ответе на технические вопросы составляй пошаговые инструкции и используй примеры из документации или инструкций Timeweb Cloud. Для наглядного представления информации используй таблицы. **Плохой пример:** Ты знаешь всё о платформе Timeweb Cloud на базе ее документации. Не выдумывай ответы. Добавляй примеры, когда это полезно. #### 4\. Темы и стиль общения Сформулируйте рамки работы агента по тематикам и стилю общения: - Укажите, о чем агент может говорить, а какие темы ему запрещены. - Уточните основной язык общения и поддерживаемые языки. - Укажите необходимый стиль, тон общения. **Хороший пример:** Давай ответы только на основе документации и инструкций Timeweb Cloud. Не обсуждай с пользователями юридические вопросы или жалобы — в таких случаях отправляй клиента в поддержку. Ты понимаешь и используешь в общении только русский и английский языки. Если пользователь обращается на другом языке, вежливо попроси его сформулировать запрос на русском или английском. Общайся с пользователями вежливо и доброжелательно, обращайся на «вы» с маленькой буквы. **Плохой пример:** Не отвечай на юридические вопросы или жалобы. Общайся только на русском и английском. Будь вежлив. #### 5\. Ограничения компетенций агента - Явно пропишите, что агент должен признать, если не знает ответа. - Научите агента задавать уточняющие вопросы при неясных или неполных запросах. - Научите агента отправлять пользователя в документацию или поддержку, если сам он помочь не может. **Хороший пример:** Если ты не знаешь ответа, скажи: У меня недостаточно информации, чтобы ответить на этот вопрос. Я с радостью помогу с чем-то еще. Если запрос неполный, уточни детали: Пожалуйста, опишите подробнее, что вы хотите сделать. Если чего-то не знаешь, явно сообщи об этом и рекомендуй обратиться в документацию Timeweb Cloud или в поддержку. **Плохой пример:** Если не можешь ответить, сообщи пользователю и дай ссылку на документацию. # Подключение базы знаний Source: https://timeweb.cloud/docs/ai-agents/manage-agents/change-knowledge-base [База знаний](https://timeweb.cloud/docs/ai-agents/manage-knowledge-bases) — это материалы, из которых агент извлекает релевантную информацию при формировании ответов. Это могут быть, например, документация по вашему продукту или каталоги товаров. Если вы не подключили базу знаний при создании агента или вам нужно изменить ее на другую, это можно сделать в панели управления. 1. [Создайте базу знаний](https://timeweb.cloud/docs/ai-agents/manage-knowledge-bases/create), если это еще не сделано. 2. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 3. На вкладке «Управление» нажмите «Изменить» у базы знаний. ![Brainy Erinome 2026 08 20 12 12](https://content.timeweb.com/assets/756f1c60-a296-4b63-8cc3-044ca3d278a4.png?width=1583&height=1218) 4. Выберите нужную базу знаний. 5. Выберите [режим поиска](https://timeweb.cloud/docs/ai-agents/manage-knowledge-bases/search-mode) по базе. 6. Сохраните изменения. ![Brainy Erinome 2026 08 20 12 16](https://content.timeweb.com/assets/4a59e7df-5f0e-4949-bf15-d0229f37d518.png?width=1745&height=856) # Тестирование и настройка агента (Плейграунд) Source: https://timeweb.cloud/docs/ai-agents/manage-agents/playground Плейграунд («песочница») — это тестовая площадка, где вы можете проверить работу AI-агента и донастроить его под ваши требования. ![Scr 20260827 Ozwj](https://content.timeweb.com/assets/92b7dbf6-e552-4b4f-bd5f-77e6b430fbfa.png?width=2112&height=1966) Чтобы протестировать агента: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 2. Перейдите на вкладку «Плейграунд». Вы увидите промпт, заданный на этапе создания агента, настройки агента, а ниже — интерфейс чат-бота для взаимодействия с ним. 3. Начните общение с агентом, чтобы оценить корректность и скорость ответа, а также степень детализации и стиль общения. 4. Если нужно скорректировать работу агента, попробуйте изменить его параметры. ### Промпт Уточните формулировки в инструкции для агента, допишите недостающие требования. Здесь вам помогут наши [рекомендации для инструкций](https://timeweb.cloud/docs/ai-agents/manage-agents/instructions#rekomendacii-dlya-sostavleniya-instrukcij). Нажмите «Сохранить изменения», чтобы применить новый промпт и снова протестируйте агента. ### Настройки агента В блоке справа вы можете настроить параметры агента. То, какие параметры будут доступны для редактирования, зависит от модели. - **Максимальное количество токенов** — задает максимальное количество токенов, которое модель может использовать для ответа. Чем выше значение, тем больше текста выдает модель в ответ. - **Температура** — задает степень креативности модели. Чем выше значение, тем более креативные, непредсказуемые (и не всегда корректные) ответы будет выдавать агент. - **Top P** — задает порог вероятности выбора слов. Чем выше значение, тем более разнообразны будут ответы. Более низкие значения обеспечат связность и сфокусированность ответов. - **Улучшать запрос для поиска** — если включено, агент переформулирует ваш запрос для более точного поиска в базе знаний. Выключите, чтобы искать строго по введенным словам и фразам. - **Штраф за присутствие** — снижает количество повторов, накладывая ограничение на токены, которые уже встречались в тексте. Чем больше значение, тем меньше повторений. - **Штраф за частоту** — снижает количество повторов на основе частоты появления токенов. Чем больше значение, тем меньше повторений. Нажмите «Сохранить изменения», чтобы применить выбранные параметры к агенту, и протестируйте его работу. # Ключи доступа Source: https://timeweb.cloud/docs/ai-agents/manage-agents/api-access-key Ключи доступа, или токены, необходимы для выполнения API-запросов к агенту. Чтобы добавить ключ доступа: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 2. На вкладке «Управление» нажмите «Изменить» в блоке «Доступ по API». ![Witty Cygnus 04 16 2026 10 36 Am](https://content.timeweb.com/assets/b3239833-aae1-40b9-80e7-c6de91f7a2ee.png?width=1586&height=869) 3. Нажмите «Добавить новый ключ». 4. Задайте удобное имя или оставьте значение по умолчанию и нажмите «Добавить». 5. Скопируйте значение ключа и сохраните в надежном месте. Вы не сможете повторно посмотреть его в интерфейсе в панели. ![Witty Cygnus 04 16 2026 10 38 Am](https://content.timeweb.com/assets/28776b7b-7274-4bdc-abec-1ea713b1c0a9.png?width=1751&height=869) Используйте полученный ключ в своем приложении или веб-сайте для авторизации запросов к агенту. # Встраивание чат-ботов Source: https://timeweb.cloud/docs/ai-agents/manage-agents/embed-chatbots Чат-боты на базе AI-агентов можно встраивать в ваши приложения и веб-сайты, чтобы пользователи могли взаимодействовать с ними. Чтобы настроить чат и получить код для его встраивания: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 2. На вкладке «Интеграции» нажмите «Настроить» в блоке «Чат для встраивания». ![1ed812f3 9720 4eac B388 0ca38698f571](https://content.timeweb.com/assets/e6b2dbcc-318a-4728-a12e-89f0d38ff068.png?width=1565&height=809) Откроется интерфейс управления чатом. ## Настройка внешнего вида чата Во вкладке «Настройки» вы можете включить чат и настроить его внешний вид. Управлять интерфейсом можно как перед встраиванием чата на сайт, так и в любой момент после. Доступны следующие параметры: - Имя агента - Подпись для имени - Приветственное сообщение - Акцентный цвет - Шрифт - Иконку - Расположение виджета чата на сайте ![Чат](https://content.timeweb.com/assets/ed026d46-b750-4e2c-af09-97f20da0a946.png?width=1592&height=1160) > [!NOTE] > Выбранный шрифт не загружается вместе с чатом. Браузер будет использовать шрифт из системы пользователя, если он совпадает с указанным. В противном случае будет использоваться близкий аналог. ## Разрешенные домены Во вкладке «Домены» вы можете указать, на каких сайтах разрешено использовать виджет. По умолчанию агент доступен для встраивания на любом домене. Но если вы добавите хотя бы один домен, использование ограничится только указанными адресами. ![846834d0 0bb4 429e 8bae 7475f034e331](https://content.timeweb.com/assets/465290ef-d8e3-4146-b614-686dddb5e1f7.png?width=1575&height=716) ## Код для вставки Во вкладке «Вставка» отображается готовый код, который можно разместить на сайте. Просто скопируйте его и вставьте в HTML между тегами ``. ![E8d87a52 F83a 4ee5 Bbdb A2c304705e32](https://content.timeweb.com/assets/039a652e-65cd-4e7c-b56b-43ae70bfdfc0.png?width=1571&height=718) # Вложения в чатах Source: https://timeweb.cloud/docs/ai-agents/manage-agents/attachments-in-chats При работе с агентом через [чат-бот](https://timeweb.cloud/docs/ai-agents/manage-agents/embed-chatbots) или [внешний чат](https://timeweb.cloud/docs/ai-agents/manage-agents/external-chat) пользователь может прикреплять к сообщениям текстовые файлы и изображения. Опция полезна в сценариях, где агенту требуется анализ дополнительных материалов — например, скриншотов ошибок, фотографий чеков, накладных и других документов. ## Поддерживаемые форматы Набор поддерживаемых форматов зависит от используемой модели: **ChatGPT**, **Grok**: `.jpg`, `.jpeg`, `.png`, `.webp`, `.gif`, `.pdf`, `.doc`, `.docx`, `.xls`, `.xlsx`, `.json`, `.csv`, `.md`, `.html`, `.txt`, `.js`, `.ts`, `.py`, `.java`, `.c`, `.cpp`, `.cs`, `.go`, `.rs`, `.rb`, `.php`, `.swift`, `.kt`, `.scala`, `.sql`, `.yaml`, `.yml`, `.xml`, `.tsv`, `.iif`, `.rtf`, `.odt`, `.ppt`, `.pptx`. **Claude**: `.jpg`, `.jpeg`, `.png`, `.webp`, `.gif`, `.pdf`, `.doc`, `.docx`, `.xls`, `.xlsx`, `.json`, `.csv`, `.md`, `.html`, `.txt`, `.js`, `.ts`, `.py`, `.java`, `.c`, `.cpp`, `.cs`, `.go`, `.rs`, `.rb`, `.php`, `.swift`, `.kt`, `.scala`, `.sql`, `.yaml`, `.yml`, `.xml`. **Gemini**: `.jpg`, `.jpeg`, `.png`, `.webp`, `.gif`, `.pdf`, `.doc`, `.docx`, `.xls`, `.xlsx`, `.json`, `.csv`, `.md`, `.html`, `.txt`, `.js`, `.ts`, `.py`, `.java`, `.c`, `.cpp`, `.cs`, `.go`, `.rs`, `.rb`, `.php`, `.swift`, `.kt`, `.scala`, `.sql`, `.yaml`, `.yml`, `.xml`, `.rtf`. **Qwen**: `.jpg`, `.jpeg`, `.png`, `.webp`, `.gif`, `.heic`, `.heif`, `.bmp`, `.tif`, `.tiff`. **Moonshot**, **DeepSeek**, **Yandex, GLM**: загрузка файлов недоступна. Максимальный размер файла — 5 МБ. Можно прикрепить несколько файлов одновременно. ## Расход токенов При обработке файлов агент расходует токены. **Очень приблизительно** расход токенов можно рассчитать по формулам ниже. Изображение: ```shell (Ширина / 512) * (Высота / 512) * 700 ``` Текст на русском: ```shell Количество символов / 3.5 ``` Текст на английском: ```shell Количество символов / 4 ``` # Внешний чат Source: https://timeweb.cloud/docs/ai-agents/manage-agents/external-chat Внешний чат [Timeweb.AI](https://timeweb.ai/) — это интерфейс для общения с AI-агентами вне панели управления. Он позволяет работать с агентами в привычном формате диалога и использовать все их возможности. При использовании внешнего чата сохраняются настройки агента, заданные в панели управления: системные промпты, подключения к MCP-серверам и база знаний. ## Запуск внешнего чата Открыть внешний чат можно: - **Из панели Timeweb Cloud** 1. 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и откройте страницу любого существующего агента. 2. В окне управления агентом нажмите кнопку «Внешний чат». ![143bf5b8 42ad 4b87 8d20 3db1b03147e2](https://content.timeweb.com/assets/6bad975a-d1b8-45c7-b215-da37d5061bbc.png?width=1565&height=869) Чат откроется в новой вкладке браузера. - **По прямой ссылке** Для доступа вы должны быть авторизованы в своем аккаунте Timeweb Cloud. 1. 1. Перейдите на страницу [ai.timeweb.cloud](https://ai.timeweb.cloud/). 2. Кликните на любого агента в списке. ## Работа с чатами Выберите агента, с которым будете работать. В списке отображаются все AI-агенты, созданные на вашем аккаунте. При необходимости агента можно изменить позже — для этого используйте выпадающее меню в верхней части интерфейса. ![Image2](https://content.timeweb.com/assets/44e164dc-f544-4fd7-ba76-2ae05cabdf66.png?width=1999&height=1142) Чтобы начать новый диалог, нажмите кнопку «Новый чат». После этого откроется новая сессия общения. Слева отображается список всех созданных чатов с конкретным агентом. Вы можете переключаться между ними, чтобы продолжить предыдущий диалог или вернуться к более ранним сообщениям. Нажмите на три точки рядом с именем аккаунта в левом нижнем углу, чтобы открыть меню. В нем можно перейти на [страницу настроек агента](https://timeweb.cloud/docs/ai-agents/manage-agents/playground), изменить тему, удалить все чаты или выйти из аккаунта. ## Настройка доступов По умолчанию внешний чат доступен только владельцу аккаунта. Чтобы выдать доступ другим людям, например, отдельным сотрудникам или командам, вы можете создать дополнительных пользователей. Пользователи, которым выдан доступ к внешнему чату, отображаются в разделе «AI-агенты» → «Настройки» → «Управлять». ### Создание нового пользователя Чтобы выдать доступ: 1. Перейдите в раздел «ИИ-сервисы» → «Настройки». 2. Нажмите «Управлять». 3. Кликните «Добавить» или «Добавить пользователя». 4. Укажите емейл пользователя — он будет использоваться в качестве логина. 5. Задайте пароль или оставьте значение по умолчанию. Пароль может быть длиной от 8 до 30 символов и содержать цифры, латинские буквы и спецсимволы. 6. (Опционально) Укажите комментарий. Он будет виден только вам. 7. Нажмите «Добавить». На емейл пользователя придет письмо со ссылкой для входа. При первом логине будет возможность скопировать предложенный пароль и сохранить его. Теперь пользователь может работать с агентами в интерфейсе [ai.timeweb.cloud](https://ai.timeweb.cloud/). ### Доступ для существующего пользователя Если нужный пользователь уже [создан](https://timeweb.cloud/docs/iam/upravlenie-polzovatelyami) в панели управления, вы можете выдать ему доступ к внешнему чату: 1. Перейдите в раздел «Настройки аккаунта» → [«Пользователи»](https://timeweb.cloud/my/account/users). 2. Кликните на пользователя. 3. Во вкладке «Права и доступы» выдайте права к разделам: - AI-агенты — «Управление» - Внешний чат AI-агентов — «Управление» 4. Сохраните изменения. ### Смена пароля Изменить пароль пользователя может только владелец аккаунта. Это можно сделать напрямую в разделе «AI-агенты»: 1. Перейдите в раздел «ИИ-сервисы» → «Настройки». 2. Нажмите «Управлять». 3. Кликните на три точки рядом с пользователем и нажмите «Редактировать». 4. Задайте новый пароль и сохраните изменения. 5. Передайте пароль пользователю — он не будет отправлен с нашей стороны. Пароль также можно изменить в разделе «Настройки аккаунта» → [«Пользователи»](https://timeweb.cloud/my/account/users). ### Запрет доступа Чтобы запретить пользователю доступ к внешнему чату, измените его настройки доступа: 1. Перейдите в раздел «Настройки аккаунта» → [«Пользователи»](https://timeweb.cloud/my/account/users). 2. Кликните на пользователя. 3. Во вкладке «Права и доступы» выберите «Нет доступа» в пункте «Внешний чат AI-агентов». 4. Сохраните изменения. ### Удаление пользователя > [!NOTE] > Это действие удалит пользователя **со всего аккаунта**, не только из раздела «AI-агенты». Если нужно сохранить доступ к другим разделам панели, но ограничить доступ к агентам, [поменяйте права](https://timeweb.cloud/docs/ai-agents/manage-agents/external-chat#zapret-dostupa) пользователя. Чтобы безвозвратно удалить пользователя: 1. Перейдите в раздел «ИИ-сервисы» → «Настройки». 2. Нажмите «Управлять». 3. Кликните на три точки рядом с пользователем и нажмите «Удалить». 4. Подтвердите действие. # Подключение Telegram-ботов Source: https://timeweb.cloud/docs/ai-agents/manage-agents/telegram-bots Вы можете интегрировать AI-агента в Telegram-бот, чтобы ваши клиенты могли общаться с агентом через мессенджер. К одному агенту можно подключить несколько ботов. Для этого: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 2. На вкладке «Интеграции» нажмите на карточку «Телеграм-боты». ![Scr 20260626 Oxvw](https://content.timeweb.com/assets/c914dc50-e5ef-49cf-91d1-8972500959f8.png?width=2122&height=1604) 3. Введите API-токен вашего бота, полученный от BotFather при его создании. 4. (Опционально) Укажите комментарий для бота. Он будет отображаться в панели управления. 5. (Опционально) Если нужно, чтобы работать с агентом могли только конкретные Telegram-аккаунты, включите опцию «Ограничить доступ» и укажите их логины (без @). Ограничение действует как в личной переписке с ботом, так и в группах. Если у аккаунта нет доступа, бот ответит: «Создатель агента ограничил круг лиц, которые могут с ним общаться». 6. Нажмите «Добавить». ![Scr 20260626 Oxzn](https://content.timeweb.com/assets/0ef83275-3a7f-4605-8115-86f3cf8fbe7e.png?width=2806&height=1660) Теперь с агентом можно работать через ваш Telegram-бот. # Подключение Макс-ботов Source: https://timeweb.cloud/docs/ai-agents/manage-agents/max-bots Вы можете интегрировать AI-агента в бот Макс, чтобы ваши клиенты могли общаться с агентом через мессенджер. К одному агенту можно подключить несколько ботов. Создание чат-ботов в Макс доступно только для и юридических лиц и ИП, у которых есть верифицированный профиль организации на [платформе Макс для партнеров](https://business.max.ru/self). Создать чат-бот можно по инструкции [в документации Макс](https://dev.max.ru/docs/chatbots/bots-create), после чего необходимо дождаться успешного прохождения модерации. ## Получение токена в Макс После того, как модерация пройдена, [получите токен](https://dev.max.ru/docs/chatbots/bots-nocode/create#%D0%A2%D0%BE%D0%BA%D0%B5%D0%BD%20%D0%B1%D0%BE%D1%82%D0%B0) — уникальный идентификатор вашего бота. 1. Откройте [платформу Макс для партнеров](https://business.max.ru/self) и перейдите в раздел «Чат-боты». 2. Перейдите в раздел «Интеграция» и нажмите «Получить токен». 3. Скопируйте значение токена. ## Подключение агента к боту Теперь все готово к подключению бота Макс к вашему ИИ-агенту. В панели Timeweb Cloud: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 2. На вкладке «Интеграции» нажмите на карточку «Макс-боты». ![Scr 20260626 Oxvw](https://content.timeweb.com/assets/14cf1d99-de1a-49cf-a1ac-c0578f855fe9.png?width=2122&height=1604) 3. Введите токен вашего бота, полученный [по инструкции выше](https://timeweb.cloud/docs/ai-agents/manage-agents/max-bots#poluchenie-tokena-v-maks). 4. (Опционально) Укажите комментарий для бота. Он будет отображаться в панели управления. 5. Нажмите «Добавить». ![Scr 20260626 Oyjj](https://content.timeweb.com/assets/55b50678-fae5-409b-b354-cded39066865.png?width=2750&height=1598) Теперь с агентом можно работать через ваш Макс-бот. # Интеграция с Jivo Source: https://timeweb.cloud/docs/ai-agents/manage-agents/jivo AI-агента можно подключить к Jivo-чату, чтобы пользователи могли общаться с ним через канал связи Jivo. Ограничения интеграции: - к одному боту в Jivo можно подключить одного AI-агента; - одного бота можно подключить к одному каналу связи; - подключить можно только AI-агентов. ## Регистрация в Jivo Если у вас еще нет аккаунта Jivo, зарегистрируйтесь в сервисе: 1. Перейдите на сайт [jivo.ru](https://www.jivo.ru/) и нажмите «Зарегистрироваться». 2. Укажите емейл и пароль для аккаунта, затем согласитесь на обработку персональных данных. 3. Заполните поля «Имя» и «Должность или отдел». При необходимости установите аватар и настройте цвета чата. Эти параметры можно будет изменить позднее. 4. Выберите приглашение в чат. 5. Укажите домен сайта или включите опцию «У меня пока нет вебсайта». Укажите номер телефона и страну ведения бизнеса. 6. Выберите, для чего вы планируете использовать Jivo. 7. Скачайте приложение или выберите «Я установлю программу позже». После этого регистрация будет завершена. При первой авторизации в панели управления Jivo вам будет предложено выбрать канал, через который будет вестись общение с пользователями. Все каналы связи отображаются в разделе «Управление» → «Каналы связи». ![Интерфейс настройки jivo.ru](https://content.timeweb.com/assets/5109865f-7a44-4fc6-9ba7-b5487394f9fd.png?width=3392&height=1962) _Интерфейс настройки [Jivo](https://www.jivo.ru/)_ Вы можете изменить имя канала связи: для этого нажмите «Настроить» рядом с нужным каналом. Имя канала потребуется при подключении бота. ## Подключение бота Для подключения бота нужно получить Provider ID от поддержки Jivo. Чтобы запросить Provider ID: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на агента, которого хотите подключить к Jivo. 2. Откройте вкладку «Интеграции». 3. Нажмите на карточку Jivo в разделе «Внешние сервисы». 4. В открывшемся окне скопируйте сообщение для поддержки Jivo. В нем уже будут указаны адрес сервера для отправки событий и токен. ![Scr 20260626 Oxbb](https://content.timeweb.com/assets/13882c13-c49e-4900-9de6-c38fec87c14d.png?width=2788&height=1580) 5. Вставьте сообщение в почтовом клиенте и укажите канал связи, к которому нужно подключить бота. 6. Отправьте письмо на [info@jivosite.com](mailto:info@jivosite.com) с емейла администратора в Jivo. В течение нескольких часов поддержка Jivo ответит и пришлет Provider ID. ![Сообщение от поддержки Jivo](https://content.timeweb.com/assets/3aa457f4-ec15-40d7-ae2a-beeedb72ce25.png?width=1550&height=672) Чтобы завершить подключение: 1. Скопируйте Provider ID из письма от поддержки Jivo. 2. Вернитесь в настройки агента. 3. Откройте вкладку «Интеграции» и настройки Jivo. 4. Укажите полученное значение в поле «Provider ID». 5. Нажмите «Сохранить». ## Проверка интеграции После сохранения настроек проверьте работу интеграции: отправьте сообщение в чат Jivo. Первым должен ответить AI-агент. Его ответ также будет отображаться в чате Jivo со стороны администратора. Подключенного бота можно найти в панели Jivo в разделе «Управление» → «Расширения». ![Интерфейс настройки Jivo](https://content.timeweb.com/assets/ae2bd96c-1ff1-41ca-9062-cf17ff9cc308.png?width=3102&height=1966) _Интерфейс настройки [Jivo](https://www.jivo.ru/)_ # История чатов Source: https://timeweb.cloud/docs/ai-agents/manage-agents/chat-history Для оценки качества ответов агента вы можете просматривать все диалоги с ним во вкладке «История чатов». Диалоги сохраняются при работе с агентом [через виджет чата на вашем сайте](https://timeweb.cloud/docs/ai-agents/manage-agents/embed-chatbots) или [через Telegram](https://timeweb.cloud/docs/ai-agents/manage-agents/telegram-bots), а также при тестировании агента [в плейграунде](https://timeweb.cloud/docs/ai-agents/manage-agents/playground). При работе через API сообщения не сохраняются. Для работы с историей чатов доступны фильтры: 1. По реакциям. 2. По среднему времени ответа. 3. По периоду. ![Scr 20260114 Palq 2](https://content.timeweb.com/assets/10eace85-332d-46d5-a08b-31688c872120.png?width=2186&height=1518) Нажав на кнопку скачивания, вы можете загрузить историю чатов в формате `.csv`. Перед скачиванием можно выбрать нужный период. При скачивании выгружаются только 2000 последних сообщений. ![Scr 20260114 Ppvs](https://content.timeweb.com/assets/2bfb87a3-05dd-4e0e-b175-64699f6bb58f.png?width=2172&height=1538) ```shell ID диалога,ID агента,ID сообщения,Время создания сообщения,Автор сообщения,Текст сообщения,Ответ понравился,Время ответа (с) ai-agent-5755-c0381c41-7583-1824-bbd3-07d1fe32ae80,5755,,"02.12.2025, 7:48",,,, ,,5146985,"02.12.2025, 7:48",Пользователь,,, ,,5146987,"02.12.2025, 7:48",Пользователь,Что изображено на скрине?,, ,,5146993,"02.12.2025, 7:48",Бот,"Это кабинет Timeweb Cloud. Открыта страница виртуального роутера VR1 (статус «Включен») в разделе Сети. Активна вкладка «Статические маршруты» — сейчас маршрутов нет, есть кнопка «Добавить маршрут». Сверху — вкладки «Дашборд», «Приватные сети», «Статические маршруты», «Проброс портов», «Конфигурация». Слева — меню сервисов (облачные серверы, базы данных, Kubernetes и т. п.).",, ``` # Веб-поиск Source: https://timeweb.cloud/docs/ai-agents/manage-agents/web-search Для того чтобы агент мог искать необходимую информацию в сети, можно подключить опцию веб-поиска. Стоимость опции составляет 0,49 рублей за один запрос. ## Зачем нужен веб-поиск Веб-поиск позволяет агенту обращаться к интернету в момент обработки запроса и получать актуальные данные о текущих событиях, ценах и изменившихся фактах. Без веб-поиска агент работает на основе знаний языковой модели, которая обучена на данных до определенной даты. Веб-поиск полезен при работе с такой информацией, как: - Свежие новости и события - Текущие цены, курсы валют, рыночные данных - Изменяющиеся справочные данные (расписания, тарифы, контакты компаний) - Уточнение фактов, которые могли измениться с момента обучения модели - Поиск конкретных страниц и источников по запросу пользователя Для получения информации используется поисковая система Яндекс. ## Когда агент использует веб-поиск При включенном веб-поиске агент анализирует каждый входящий запрос и определяет, нужно ли искать дополнительную информацию в интернете: - Если запрос полностью покрывается знаниями модели, поиск не запускается. - Если для качественного ответа нужны актуальные данные, агент выполняет один или несколько поисковых запросов, получает результаты и использует их при формировании ответа. > [!NOTE] > Решение о выполнении поиска принимает сама модель. Принудительно запустить или запретить поиск для конкретного запроса нельзя. ## Ограничение области поиска При создании агента или в дальнейшем [в его настройках](https://timeweb.cloud/docs/ai-agents/manage-agents/web-search#v-nastrojkah-sushchestvuushchego-agenta) вы можете ограничить область веб-поиска определенными доменами. В этом случае вместо поиска по всему интернету агент выполняет запрос только по указанным источникам. ![Witty Cygnus 06 04 2026 01 33 Pm 06 04 2026 01 45 Pm](https://content.timeweb.com/assets/d778161c-c100-4cb0-bd35-b95556c7f642.png?width=1742&height=869) Это позволяет повысить точность и релевантность ответов, использовать только доверенные и проверенные ресурсы и исключить результаты с форумов, агрегаторов и случайных сайтов. Функция особенно полезна в сценариях, где агент должен опираться на официальные данные или ограниченный перечень внешних ресурсов. ## Настройка веб-поиска Управлять настройками веб-поиска можно при создании агента и в его настройках. ### При создании агента Оставьте опцию «Поиск в интернете» включенной или отключите ее на шаге «Тариф». Вы также можете сразу настроить [ограничение области поиска](https://timeweb.cloud/docs/ai-agents/manage-agents/web-search#ogranichenie-oblasti-poiska) либо сделать это позднее в настройках. ![Создать AI Агента 06 04 2026 01 37 Pm](https://content.timeweb.com/assets/fe352a49-5a3d-4540-9315-3692c2da45fb.png?width=751&height=618) ### В настройках существующего агента Чтобы настроить поиск в интернете для существующего агента: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 2. Перейдите на вкладку «Управление». 3. Включите или выключите опцию «Поиск информации в интернете». ![Witty Cygnus 05 18 2026 09 51 Am](https://content.timeweb.com/assets/644cabb1-7ad2-462b-8d39-a1650143027a.png?width=1574&height=792) 4. Если необходимо, включите [ограничение области поиска](https://timeweb.cloud/docs/ai-agents/manage-agents/web-search#ogranichenie-oblasti-poiska) и задайте разрешенные домены. 5. Сохраните изменения. ![Witty Cygnus 06 04 2026 01 33 Pm](https://content.timeweb.com/assets/8bf561f0-d088-4b93-bd60-1d30983d4031.png?width=1742&height=869) # Генерация изображений Source: https://timeweb.cloud/docs/ai-agents/manage-agents/image-generation Опция генерации изображений позволяет создавать изображения по текстовому описанию в диалоге с агентом. Агент самостоятельно определяет, является ли сообщение запросом на генерацию изображения, и передает его на обработку [image-модели](https://timeweb.cloud/docs/ai-agents/manage-agents/image-generation#dostupnye-modeli), выбранной при включении опции. Если запрос не относится к генерации, агент ответит обычным текстовым сообщением. Генерация изображений доступна при работе с агентом через [внешний чат](https://timeweb.cloud/docs/ai-agents/manage-agents/external-chat) или [встраиваемый виджет](https://timeweb.cloud/docs/ai-agents/manage-agents/embed-chatbots). Стоимость зависит от выбранной модели и считается по токенам — отдельно входящим (промпт) и исходящим (сгенерированное изображение). ## Доступные модели При включении генерации изображений можно выбрать одну из следующих моделей: - Gemini 3.1 Flash Image Preview - Gemini 3 Pro Image Preview - GPT Image 2 - GPT Image 2.5 Flare - GPT Image 2.5 Sunburst - FLUX.2 \[pro\] - FLUX.2 \[klein\] 9B - FLUX.2 \[max\] Вы всегда можете изменить свой выбор и переключиться на другую модель [в настройках агента](https://timeweb.cloud/docs/ai-agents/manage-agents/image-generation#v-nastrojkah-sushchestvuushchego-agenta). ## Подключение и отключение генерации изображений Включить или отключить генерацию изображений можно при создании агента или в настройках существующего агента. ### При создании агента На шаге «Тариф» включите опцию «Генерация изображений» и выберите предпочтительную модель. ![Group 2 2026 09 03 12 03](https://content.timeweb.com/assets/7a727503-030b-46b6-a5e9-f38a64c825b9.png?width=761&height=939) ### В настройках существующего агента 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 2. Перейдите во вкладку «Управление». 3. Нажмите «Изменить» в блоке «Генерация изображений». ![Witty Cygnus 05 21 2026 12 22 Pm](https://content.timeweb.com/assets/715caf00-271e-4662-b861-1f31cddf9029.png?width=1574&height=876) 4. Включите или выключите опцию. 5. При включении выберите в выпадающем списке модель для генерации изображений. 6. Нажмите «Сохранить». ![Witty Cygnus 05 21 2026 12 23 Pm](https://content.timeweb.com/assets/5d0b944b-4d90-4e84-9884-039ad302f0b4.png?width=1741&height=868) # Навыки Source: https://timeweb.cloud/docs/ai-agents/manage-agents/skills Навыки — это текстовые инструкции, которые AI-агент использует в определенных ситуациях. В отличие от [системного промпта](https://timeweb.cloud/docs/ai-agents/manage-agents/instructions), полная инструкция навыка не передается модели с каждым запросом. В контекст постоянно добавляется только описание из поля «Когда применять». Если запрос подходит под это описание, агент дополнительно использует инструкцию из навыка. Такой подход помогает сократить расход входящих токенов: объемные инструкции попадают в контекст только тогда, когда они нужны. Навыки работают при [использовании виджета](https://timeweb.cloud/docs/ai-agents/manage-agents/embed-chatbots), [внешнего чата](https://timeweb.cloud/docs/ai-agents/manage-agents/external-chat) или [API](https://timeweb.cloud/docs/ai-agents/api-usage/native-api). ## Как работают навыки К одному агенту можно подключить несколько навыков. Один навык также можно использовать с несколькими агентами. При подготовке одного ответа агент может использовать сразу несколько навыков, если запрос соответствует условиям их применения. Если инструкции в навыке и системном промпте противоречат друг другу, агент следует системному промпту. Если агент использовал навык при подготовке ответа, в чате отобразится соответствующий лейбл. ## Создание навыка Создать навык можно в разделе «[Навыки](https://timeweb.cloud/my/cloud-ai/skills)» или при создании агента. ### В разделе «Навыки» 1. Перейдите в раздел «ИИ-сервисы» → «Навыки». 2. Нажмите «Добавить». 3. Задайте параметры навыка. 4. Нажмите «Добавить». После создания навык появится в разделе «ИИ-сервисы» → «Навыки». ### При создании агента На шаге «Инструкция и навыки» выберите существующий навык или нажмите «Добавить новый». При создании нового навыка задайте его параметры и нажмите «Добавить». ![Создание навыка при создании агента](https://content.timeweb.com/assets/61121c20-f95c-4bc4-9f9e-e0c4d4bcf07f.png?width=874&height=486) ## Параметры навыка При создании навыка укажите: - Название навыка — имя, под которым навык отображается в панели управления; - Когда применять — описание ситуаций, в которых агент должен использовать навык. Это описание передается агенту при каждом запросе; - Инструкция — текст инструкции, которую агент использует, если запрос соответствует описанию из поля «Когда применять»; - Агенты — список агентов, к которым нужно сразу подключить навык. Поле необязательное. ![Параметры навыка](https://content.timeweb.com/assets/f8501774-0dc3-4092-b9b7-d7ab73d432ed.png?width=734&height=906) ## Подключение навыка к агенту Чтобы подключить к агенту ранее созданный навык: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 2. Перейдите на вкладку «Управление». 3. В блоке «Ресурсы» нажмите «Изменить» в строке «Навыки». 4. Выберите нужный навык и его версию. ## Редактирование и версии навыка Чтобы изменить навык, перейдите в раздел «ИИ-сервисы» → «Навыки» и кликните на нужный навык. Откроется редактор, в котором можно изменить его параметры. При сохранении изменения можно выбрать, для каких подключенных агентов будет использоваться новая версия. ![Сохранение изменений](https://content.timeweb.com/assets/66e6d414-d3bc-48f7-b332-bb75a4721578.png?width=2182&height=1552) Каждое изменение, кроме названия, создает новую версию навыка. Это позволяет вернуться к предыдущей инструкции. Чтобы выбрать версию: - кликните на нее в правом меню редактора; - или измените версию при подключении навыка к агенту. Для одного навыка можно создать не более 50 версий. После создания 50-й версии нельзя сохранить изменения, которые создали бы следующую версию. Чтобы продолжить редактировать инструкцию вы можете создать копию навыка. ## Копирование навыка При копировании создается новый навык, в который переносится только выбранная в редакторе версия. История других версий не копируется, поэтому счетчик версий нового навыка начинается заново. Чтобы создать копию: 1. Перейдите в раздел «ИИ-сервисы» → «Навыки». 2. Откройте нужный навык и выберите версию, которую нужно скопировать. 3. Вернитесь к списку навыков, нажмите на три точки рядом с нужным навыком и выберите «Дублировать». Копия будет создана сразу и появится в списке. ## Удаление навыка Чтобы удалить навык: 1. Перейдите в раздел «ИИ-сервисы» → «Навыки». 2. Нажмите на три точки рядом с нужным навыком и выберите «Удалить». 3. Подтвердите удаление. # Приостановка и удаление агента Source: https://timeweb.cloud/docs/ai-agents/manage-agents/pause-remove Вы можете в любой момент: - поставить агента на паузу; - полностью удалить агента. ## Приостановка агента Вы можете временно приостановить агента, например, чтобы донастроить его работу и внешний вид, после чего запустить его снова. После остановки агента виджет чата на вашем сайте перестанет отображаться. При обращении к агенту по API также будет возвращаться ошибка 400. > [!NOTE] > При приостановке агента сервис тарифицируется как обычно. Дата списания ежемесячной платы не изменится. 1. Перейдите в раздел «ИИ-сервисы» → «Агенты». 2. Наведите курсор на нужного агента и нажмите на значок паузы. ![Без Названия (2)](https://content.timeweb.com/assets/f546c4aa-e5f3-4bb3-9446-72ce4dcf6157.png?width=1569&height=806) 3. Подтвердите действие. Другой вариант — кликнуть на нужного агента и нажать значок паузы справа вверху. ![Без Названия (3)](https://content.timeweb.com/assets/c42bd755-7f63-4c9d-9eda-e7f1763812a5.png?width=1535&height=825) ## Возобновление работы агента Чтобы снова запустить агента после приостановки: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты». 2. Наведите курсор на нужного агента и нажмите на значок старта. ![B2f4b8e1 D661 4915 80a1 3fd02f527a4b](https://content.timeweb.com/assets/7e2e435a-64d5-4ba9-b0f9-0820fbf41e31.png?width=1543&height=804) Либо кликните на нужного агента и нажмите на значок старта справа вверху: ![796f87ca A972 4002 Af5b 76b86ab9fd8e](https://content.timeweb.com/assets/089fd2a6-6c47-4c02-9129-3cd46474517f.png?width=1565&height=815) ## Удаление агента Если агент больше не требуется, вы можете удалить его полностью. Это действие необратимо. > [!NOTE] > Базы знаний, подключенные к агенту, удалены не будут. Если какие-то из них больше не нужны, вы можете удалить их вручную на вкладке «Базы знаний». Вместе с базой знаний будет автоматически удалена развернутая для нее [база данных](https://timeweb.cloud/my/database). 1. Перейдите в раздел «ИИ-сервисы» → «Агенты». 2. Наведите курсор на нужного агента, кликните на три точки справа и нажмите «Удалить». ![F2431aad 9e80 40d2 Bda5 7ce8828239c4](https://content.timeweb.com/assets/f1d46c5b-cf14-4144-95f2-96d8bd5c8f71.png?width=1538&height=807) 3. Подтвердите действие. Либо кликните на агента и нажмите значок удаления справа вверху. ![D87f9555 F2a4 45db 824d Db127abecbb0](https://content.timeweb.com/assets/c93f5e13-8fb6-44a1-9a79-8c64ed5b8e25.png?width=1565&height=815) # Использование API Source: https://timeweb.cloud/docs/ai-agents/api-usage - [Поддерживаемые типы API](https://timeweb.cloud/docs/ai-agents/api-usage/types-of-api) - [Нативный API](https://timeweb.cloud/docs/ai-agents/api-usage/native-api) - [OpenAI-совместимый API](https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api) - [AI Gateway](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway) - [Files API в AI Gateway](https://timeweb.cloud/docs/ai-agents/api-usage/files-api) - [Работа с аудио в AI Gateway](https://timeweb.cloud/docs/ai-agents/api-usage/audio-api) - [Open WebUI](https://timeweb.cloud/docs/ai-agents/api-usage/open-webui) # Поддерживаемые типы API Source: https://timeweb.cloud/docs/ai-agents/api-usage/types-of-api Мы поддерживаем три типа API для работы с AI-агентами и моделями: - [OpenAI-совместимый API](https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api) — подходит для интеграции с внешними библиотеками и UI, использует стандартную структуру запросов; - [Нативный API](https://timeweb.cloud/docs/ai-agents/api-usage/native-api) — более простой в использовании, особенно если нужен быстрый результат без внешних зависимостей. - [AI Gateway](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway) — API для прямой работы с моделями без использования AI-агентов. ## Основные отличия | **Характеристика** | **OpenAI-совместимый API** | **Нативный API** | **AI Gateway** | | --- | --- | --- | --- | | **Объект работы** | Агент | Агент | Модель | | **Формат запроса** | `messages[]` | `message + parentMessageId` | `messages[], responses` | | **История сообщений** | Передается в запросе | Сохраняется | Передается в запросе | | **RAG / MCP** | Есть | Есть | Нет | | **Настройки модели** | Через панель управления агента | Через параметры запроса | Передаются в каждом запросе | | **Выбор модели** | Ограничен агентом | Ограничен агентом | Любая доступная | | **Потоковые ответы** | Поддерживаются | Не поддерживаются | Поддерживаются | ## Какой API выбрать Используйте OpenAI-совместимый API, если: - Вы хотите интегрировать агента с внешними библиотеками (например, LangChain, Open WebUI); - Уже используете OpenAI и хотите просто заменить URL; - Важно получать usage-статистику (токены, модель); - Требуются потоковые ответы; - Планируете использовать мультимодальные сообщения. Используйте нативный API, если: - Нужна встроенная история сообщений без явной передачи контекста; - Вы создаете простое приложение с минимальной зависимостью от сторонних библиотек; - Важно получить ответ в простом формате; - Требуется быстрая и легкая интеграция, например, для MVP. Используйте AI Gateway, если: - Нужно работать напрямую с моделями без логики агента; - Вы реализуете собственную логику (например, RAG или маршрутизацию запросов); - Требуется доступ к нескольким моделям через единый API; - Вы используете OpenAI SDK и хотите переключаться между моделями без изменения кода. # Нативный API Source: https://timeweb.cloud/docs/ai-agents/api-usage/native-api Вы можете взаимодействовать с AI-агентами при помощи нативного API. ## Аутентификация В каждом запросе необходимо [указывать API-токен](https://timeweb.cloud/docs/ai-agents/manage-agents/api-access-key). Токен передается в формате: ```shell --header "authorization: Bearer $TOKEN" ``` В cURL-примерах вы можете: - указать токен вручную, заменив `$TOKEN` на ваш реальный токен в каждом запросе; - или использовать переменную окружения, чтобы не вставлять токен каждый раз: ```shell export TOKEN=ваш_токен_доступа ``` В этом случае менять заголовок в примерах не потребуется — переменная `$TOKEN` будет подставляться автоматически. В примерах на Python и Node.js токен указывается напрямую в коде и обозначается как `{{token}}`. Мы рекомендуем хранить его в переменных окружения или конфигурационных файлах, а не в коде, чтобы избежать утечек. ## ID агента Для работы с агентом также требуется его Access ID. Вы можете найти его во вкладке «Дашборд» в панели управления агентом. ![Scr 20260827 Plcq](https://content.timeweb.com/assets/7eb67b6e-ecc1-4b20-9369-3024506833ba.png?width=2152&height=1704) ## Настройка агента При использовании нативного API применяются настройки, указанные в разделе «[Плейграунд](https://timeweb.cloud/docs/ai-agents/manage-agents/playground)». ## Отправка сообщения агенту Метод позволяет отправить сообщение AI-агенту и получить ответ. **Запрос**: ```shell POST /api/v1/cloud-ai/agents/{access_id}/call ``` cURL ```js curl --request POST \ --url https://api.timeweb.cloud/api/v1/cloud-ai/agents//call \ --header "authorization: Bearer $TOKEN" \ --header "content-type: application/json" \ --data '{ "message": "Привет!", "parent_message_id": "3adfea84-bcdb-44b5-8914-92035e75ec24" }' ``` Python ```py import requests url = "https://api.timeweb.cloud/api/v1/cloud-ai/agents//call" payload = { "message": "Привет", "parent_message_id": "3adfea84-bcdb-44b5-8914-92035e75ec24" } headers = { "content-type": "application/json", "authorization": "Bearer {{token}}" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` Node.js ```js const request = require('request'); const options = { method: 'POST', url: 'https://api.timeweb.cloud/api/v1/cloud-ai/agents//call', headers: {'content-type': 'application/json', authorization: 'Bearer {{token}}'}, body: {message: 'Привет', parent_message_id: '3adfea84-bcdb-44b5-8914-92035e75ec24'}, json: true }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); ``` Параметры: - `message` — текст запроса к агенту. - `parent_message_id` — ID сообщения для продолжения диалога. Параметр необязательный. В качестве значения можно использовать не только последний ответ, но и любой другой ID сообщения из чата. Пример ответа: ```js { "message": "ответ агента", "id": "340b7381-2834-4b98-a51c-e68f8d0abd5b", "response_id": "ed08981f-126b-49e7-856d-d122b3a53f26" } ``` Значение `id` из ответа можно использовать как `parent_message_id` в следующих запросах. Поле `finish_reason` указывает на причину завершения генерации ответа. Возможно четыре значения: - `stop` — ответ сгенерирован полностью, без ошибок; - `length` — ответ не уместился в [максимальное количество токенов](https://timeweb.cloud/docs/ai-agents/manage-agents/playground#nastrojki-agenta), поэтому генерация была прервана; - `content_filter` — сработал фильтр провайдера, предоставляющего доступ к AI (например, OpenAI или xAI), и генерация была остановлена. Под фильтрами подразумевается, например, цензурирование некоторых тем со стороны провайдера; - `error` — во время генерации произошла ошибка. Чтобы узнать причину, [создайте тикет в поддержку](https://timeweb.cloud/my/support/help-question) и приложите тело ответа. # OpenAI-совместимый API Source: https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api OpenAI-совместимый API — это способ унифицировать структуру запросов и ответов к разным AI-провайдерам. Вместо того чтобы разбираться с десятками разных форматов, вы работаете с единым стандартом, понятным SDK, библиотекам и интерфейсам. ## Зачем нужна унификация Сравним два варианта нативных API: `agent.timeweb.cloud` и условный `api.somerandomai.com`. Посмотрим, как у них реализована отправка сообщений. ![Aiapi Example](https://content.timeweb.com/assets/e16f7974-1fb9-427b-8f5b-2e021a6273e7.png?width=1316&height=1004) При одинаковой задаче структура запросов сильно отличается. Например, в одном API для сохранения контекста используется параметр `parent_message_id`, а в другом — вложенный объект: ```js "context": { "thread_id": "abc123", "reply_to": "msg789" }, ``` Кроме того, при работе с нашим API настройки задаются отдельным запросом, а в примере стороннего API — передаются в объекте `settings` вместе с каждым сообщением. В результате приходится: - Писать отдельный клиент под каждый API; - Разбираться с названиями полей и особенностями работы; - Тестировать все с нуля. OpenAI-совместимый API решает эту проблему. Структура всегда одна и та же: массив `messages` с полями `role` и `content`, стандартные параметры (`model`, `temperature`, `max_tokens`). Отличия остаются только в URL и названии модели. ![Blue2](https://content.timeweb.com/assets/60563a27-fc57-4d02-9c60-d52398e5512c.png?width=1560&height=1218) Чем это удобно: - Быстрая интеграция в любое ПО, которое поддерживает OpenAI API; - Поддержка популярных библиотек (например, LangChain); - Работа с готовыми UI (например, [Open WebUI](https://timeweb.cloud/docs/ai-agents/api-usage/open-webui)); - Минимум усилий при миграции с OpenAI. ## Ограничения и особенности В текущей реализации API не полностью совместим с OpenAI. #### Не поддерживается: - `Embeddings` — эндпоинт `/v1/embeddings` отсутствует; - `Fine-tuning` — обучение и кастомизация моделей; - `Images API` — генерация изображений; - `Audio API` — преобразование речи в текст и обратно (кроме аудиосообщений в чате); - `Assistants API` — создание и управление ассистентами; #### Особенности реализации: - Указанная в запросе модель игнорируется — используется модель, заданная в настройках агента. - Некоторые параметры могут игнорироваться в зависимости от выбранной модели агента. - [Промпт, указанный в настройках AI-агента](https://timeweb.cloud/docs/ai-agents/manage-agents/instructions), используется при запросах без явного указания. ## Использование Рассмотрим, как использовать OpenAI-совместимый API. > [!NOTE] > Все доступные методы API можно найти [в документации](https://agent.timeweb.cloud/docs). ### Аутентификация Вне зависимости от выбранного типа API (приватный или публичный), для отправки запросов необходимо [указывать API-токен](https://timeweb.cloud/docs/ai-agents/manage-agents/api-access-key). Токен передается в заголовке запроса в следующем формате: ```shell Authorization: Bearer $TOKEN ``` В cURL-примерах вы можете: - указать токен вручную, заменив `$TOKEN` на ваш реальный токен в каждом запросе; - или использовать переменную окружения, чтобы не вставлять токен каждый раз: ```shell export TOKEN=ваш_токен_доступа ``` В этом случае менять заголовок в примерах не потребуется — переменная `$TOKEN` будет подставляться автоматически. В примерах на Python и Node.js токен указывается напрямую в коде и обозначается как `{{token}}`. Мы рекомендуем хранить его в переменных окружения или конфигурационных файлах, а не в коде, чтобы избежать утечек. ### Базовый URL Для работы с API также потребуется базовый URL. Вы можете найти его во вкладке «Дашборд» в панели управления агентом. ![Scr 20251003 Phme](https://content.timeweb.com/assets/7ac4875b-9324-4552-a992-be4953102a21.png?width=1524&height=1750) ### Отправка сообщения агенту Поддерживается два способа — Chat Completions и Text Completions. Способ Text Completions считается устаревшим и реализован только для поддержания обратной совместимости, мы не рекомендуем его использовать. #### Пример использования Chat Completions ```shell POST /api/v1/cloud-ai/agents/{{agent_id}}/v1/chat/completions ``` cURL ```js curl --request POST \ --url https://agent.timeweb.cloud/api/v1/cloud-ai/agents/{{agent_id}}/v1/chat/completions \ --header 'authorization: Bearer $TOKEN' \ --header 'content-type: application/json' \ --data '{ "model": "gpt-4.1", "messages": [ { "role": "user", "content": "Привет!" } ], "temperature": 1, "max_tokens": 100, "stream": false }' ``` Python ```py import requests url = "https://agent.timeweb.cloud/api/v1/cloud-ai/agents/{{agent_id}}/v1/chat/completions" payload = { "model": "gpt.1", "messages": [ { "role": "user", "content": "Привет!" } ], "temperature": 1, "max_tokens": 100, "stream": False } headers = { "authorization": "Bearer {{token}}", "content-type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` Node.js ```js const request = require('request'); const options = { method: 'POST', url: 'https://agent.timeweb.cloud/api/v1/cloud-ai/agents/{{agent_id}}/v1/chat/completions', headers: {authorization: 'Bearer {{token}}', 'content-type': 'application/json'}, body: { model: 'gpt.1', messages: [{role: 'user', content: 'Привет!'}], temperature: 1, max_tokens: 100, stream: false }, json: true }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); ``` **Параметры**: - `model` — необязательный, игнорируется (для совместимости). - `messages` — массив сообщений: - `role` — [роль отправителя](https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api#roli) (`user`, `assistant`, `system`), - `content` — текст сообщения. - `temperature` — креативность ответа. - `max_tokens` — ограничение длины ответа. - `stream` — потоковый вывод (true/false). > [!NOTE] > Для моделей `gpt-5` параметр `max_tokens` заменен на `max_completion_tokens`, а использование `temperature` вызовет ошибку. Дополнительные параметры могут отличаться в зависимости от модели. При составлении запроса ориентируйтесь на параметры, доступные в панели управления для выбранной модели: если параметр есть в панели, значит он поддерживается при обращении через API. **Пример ответа**: ```js { "id": "fc8cd652-af12-4a89-8ef7-490a0526e8d3", "object": "chat.completion", "created": 1757601532, "model": "gpt-4.1", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Привет! Чем могу помочь? 😊" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 10, "completion_tokens": 8, "total_tokens": 18 } } ``` #### Пример использования Text Completions ```shell POST /api/v1/cloud-ai/agents/{{agent_id}}/v1/completions ``` cURL ```bash curl --request POST \ --url https://agent.timeweb.cloud/api/v1/cloud-ai/agents/{{agent_id}}/v1/completions \ --header 'authorization: Bearer $TOKEN' \ --header 'content-type: application/json' \ --data '{ "prompt": "Привет!", "model": "gpt-4.1", "max_tokens": 100, "temperature": 0.7, "top_p": 0.9, "n": 1, "stream": false, "logprobs": null, "echo": false, "stop": [ "\n" ], "presence_penalty": 0, "frequency_penalty": 0, "best_of": 1, "user": "timeweb" }' ``` Python ```py import requests url = "https://agent.timeweb.cloud/api/v1/cloud-ai/agents/{{agent_id}}/v1/completions" payload = { "prompt": "Привет!", "model": "4.1", "max_tokens": 100, "temperature": 0.7, "top_p": 0.9, "n": 1, "stream": False, "logprobs": None, "echo": False, "stop": [" "], "presence_penalty": 0, "frequency_penalty": 0, "best_of": 1, "user": "timeweb" } headers = { "authorization": "Bearer {{token}}", "content-type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` Node.js ```js const request = require('request'); const options = { method: 'POST', url: 'https://agent.timeweb.cloud/api/v1/cloud-ai/agents/{{agent_id}}/v1/completions', headers: {authorization: 'Bearer {{token}}', 'content-type': 'application/json'}, body: { prompt: 'Привет!', model: 'gpt-4.1', max_tokens: 100, temperature: 0.7, top_p: 0.9, n: 1, stream: false, logprobs: null, echo: false, stop: ['\n'], presence_penalty: 0, frequency_penalty: 0, best_of: 1, user: 'timeweb' }, json: true }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); ``` **Параметры**: - `prompt` — текст запроса. - `model` — игнорируется, указывается для совместимости. - `max_tokens` — ограничение длины ответа. - `temperature` — уровень креативности. - `top_p` — выборка по вероятностям. - `n` — количество вариантов ответа (игнорируется). - `stream` — потоковый вывод. Остальные параметры (`logprobs`, `echo`, `stop`, `presence_penalty`, `frequency_penalty`, `best_of`, `user`) поддерживаются частично и в основном для совместимости. **Пример ответа**: ```js { "id": "7f967459-428c-46ad-87f0-213ff951024d", "object": "text_completion", "created": 1757601892, "model": "gpt-4.1", "choices": [ { "text": "Привет! Чем могу помочь? 😊", "index": 0, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 10, "completion_tokens": 8, "total_tokens": 18 }, "response_id": "ea9aa124-0c51-467c-9ab6-218ab4ec65e7" } ``` ## Роли В режиме **Chat Completions** каждое сообщение передается с указанием роли. Существует три типа ролей: - **user** — пользовательский запрос; - **assistant** — ответ модели; - **system** — инструкция, определяющая поведение агента. ### user Роль `user` используется для передачи обычных запросов пользователя к ИИ. **Пример**: ```js { "role": "user", "content": "Сколько будет 2+5?" } ``` ### assistant Роль `assistant` применяется при передаче истории сообщений. Она указывает, что это ответ ИИ на предыдущий запрос. Важно помнить, что при работе с OpenAI-совместимым API история диалога передается в каждом запросе, поэтому необходимо указывать как запросы (`user`), так и ответы (`assistant`), чтобы сохранить контекст. **Пример**: ```bash curl --request POST \ --url https://agent.timeweb.cloud/api/v1/cloud-ai/agents/{{agent_id}}/v1/chat/completions \ --header 'authorization: Bearer $TOKEN' \ --header 'content-type: application/json' \ --data '{ "model": "gpt-4", "messages": [ { "role": "user", "content": "Сколько будет 2+5? Напиши только ответ без форматирования" }, { "role": "assistant", "content": "7" }, { "role": "user", "content": "Теперь умножь получившееся число на 2. Напиши только ответ без форматирования" } ] }' ``` В запросе мы передали предыдущий вопрос и ответ, указав `"role": "user"` для сообщений пользователя и `"role": "assistant"` — для ответов ИИ. Последнее сообщение с ролью `user` остается без ответа — именно на него модель сгенерирует новый ответ. **Пример ответа**: ```bash { "index": 0, "message": { "role": "assistant", "content": "14", "refusal": null, "annotations": [] }, "finish_reason": "stop" } ``` ### system Роль `system` используется для задания системного промпта — инструкции, которая определяет поведение агента: стиль, тон, ограничения, цели. Обычно это первое сообщение в массиве messages. Подробнее о системных промптах [написали в отдельной статье](https://timeweb.cloud/docs/ai-agents/manage-agents/instructions). Если посмотреть на пример использования `assistant`, можно заметить, что в запросах пользователя повторяется инструкция: ```shell Напиши только ответ без форматирования ``` Это дублирование можно избежать, указав инструкцию один раз в системном промпте. **Пример**: ```bash curl --request POST \ --url https://agent.timeweb.cloud/api/v1/cloud-ai/agents/{{agent_id}}/v1/chat/completions \ --header 'authorization: Bearer $TOKEN' \ --header 'content-type: application/json' \ --data '{ "model": "gpt-4", "messages": [ { "role": "system", "content": "При ответе на вопросы отправляй только результат вычислений, без какого-либо форматирования." }, { "role": "user", "content": "Сколько будет 2+5?" }, { "role": "assistant", "content": "7" }, { "role": "user", "content": "Теперь умножь получившееся число на 2" } ] }' ``` Теперь модель будет следовать инструкции, даже если она не повторяется в каждом запросе пользователя. # AI Gateway Source: https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway AI Gateway — это API для работы напрямую с языковыми моделями без использования AI-агентов. В отличие от [OpenAI-совместимого API](https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api) и [нативного API](https://timeweb.cloud/docs/ai-agents/api-usage/native-api), AI Gateway не предоставляет возможности агентов, такие как: - RAG; - MCP; - Системные настройки (системный промпт, температура, ограничения на длину ответа). AI Gateway подходит, когда требуется работать с моделями напрямую, без логики AI-агента. Например: - если вы реализуете собственную логику поверх моделей (строите RAG, подключение MCP); - если нужна единая точка доступа к нескольким моделям; - если вы уже используете OpenAI SDK и хотите переключаться между моделями без изменения кода. Отличия AI Gateway от OpenAI-совместимого API: | | **OpenAI-совместимый API** | **AI Gateway** | | --- | --- | --- | | **Объект работы** | Агент | Модель | | **RAG / MCP** | Есть | Нет | | **Системные настройки** | Можно задать в панели управления агента | Передаются с каждым запросом | | **Выбор модели** | Модель агента | Любая доступная | Для работы с API рекомендуется использовать OpenAI SDK — он абстрагирует различия и упрощает интеграцию. Поддерживаемые методы и возможности зависят от используемой модели. Например, эндпоинт `responses` доступен только для моделей с поддержкой размышлений. В AI Gateway не поддерживаются: - `Fine-tuning` — обучение и кастомизация моделей; - `Video API` — работа с видео. ## Управление AI Gateway Для работы с AI Gateway перейдите во вкладку «AI Gateway» в разделе «ИИ-сервисы». В интерфейсе доступны три вкладки: - «Модели»; - «Подключение»; - «API-ключи». ### Выбор модели Во вкладке «Модели» отображаются доступные модели и их параметры: - тип; - объем контекста; - максимальная длина ответа; - стоимость входящих и исходящих токенов. Чтобы найти подходящую модель, отфильтруйте список по типу или провайдеру либо введите название модели в поле поиска. ![Модели](https://content.timeweb.com/assets/dab6ed12-59ec-4741-9c82-305bd6452a98.png?width=2244&height=1596) Для сопоставления характеристик нажмите «Сравнить модели» и выберите нужные модели. ### Получение параметров подключения Во вкладке «Подключение» выберите модель и инструмент — язык программирования, для которого требуется пример. В интерфейсе отобразятся: - базовый URL для подключения; - стоимость входящих и исходящих токенов выбранной модели; - команда для установки библиотеки OpenAI; - базовый пример подключения к API. ![ПОдключение](https://content.timeweb.com/assets/b6b57ae6-dfb2-4c62-a624-0e01548a8365.png?width=2166&height=1942) ### Создание API-ключа AI Gateway использует отдельные ключи, не связанные с API-ключами аккаунта. > [!NOTE] > Каждый API-ключ тарифицируется отдельно и стоит 1 ₽ в месяц. Чтобы создать API-ключ: 1. Перейдите во вкладку «API-ключи» и нажмите «Добавить». 2. Укажите имя ключа и при необходимости добавьте комментарий. 3. Выберите срок действия: 30, 60 или 90 дней, один год либо бессрочно. 4. Выберите проект, в который будет добавлен ключ. 5. Нажмите «Создать». ![Создание ключа](https://content.timeweb.com/assets/f11ad7ee-c3af-4663-859b-74d2ea002377.png?width=2758&height=1962) После создания ключ отобразится один раз. Скопируйте его и сохраните в надежном месте — повторно посмотреть ключ не получится. ### Управление API-ключами Во вкладке «API-ключи» отображаются все созданные ключи, даты их создания, сроки действия и комментарии. Чтобы перегенерировать или удалить ключ, нажмите на три точки рядом с ним и выберите нужное действие. ![Ключи](https://content.timeweb.com/assets/9be63129-4020-4eee-9c62-4445646cc30b.png?width=2180&height=1640) Кликните на карточку ключа, чтобы перейти в его панель управления. В ней доступны две вкладки: - «Дашборд» — позволяет отслеживать количество входящих и исходящих токенов, их расход и количество запросов. Статистику можно отфильтровать по периоду и модели; - «Управление» — позволяет установить лимит на использование токенов. ![Дашборд](https://content.timeweb.com/assets/34de0159-6c21-44fb-9564-e05d39e4a7e8.png?width=2170&height=1618) ## Использование Для работы с AI Gateway рекомендуем использовать OpenAI SDK — с ним не нужно вручную отправлять HTTP-запросы и интеграция становится проще. Доступные SDK: - [Python](https://github.com/openai/openai-python) - [Node.js](https://github.com/openai/openai-node) - [Java](https://github.com/openai/openai-java) - [Go](https://github.com/openai/openai-go) Полный список SDK доступен [в репозитории OpenAI](https://github.com/orgs/openai/repositories). В примерах ниже мы используем Python и библиотеку `openai`. Установить ее можно с помощью `pip`: ```bash pip install openai ``` ### Отправка запроса Для отправки сообщений используется метод `Chat Completions`. При его использовании сообщения передаются в массиве `messages`. Каждое сообщение содержит: - `role` — [роль отправителя](https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api#roli) (`user`, `assistant`, `system`); - `content` — текст сообщения. ```py from openai import OpenAI client = OpenAI( api_key="YOUR_API_KEY", base_url="https://api.timeweb.ai/v1" ) response = client.chat.completions.create( model="MODEL_NAME", messages=[ { "role": "system", "content": "Отвечай кратко и по существу.", }, { "role": "user", "content": "Объясни, что такое Kubernetes", }, ], ) print(response.choices[0].message.content) ``` Параметры: - `api_key` — API-ключ AI Gateway. Замените значение на ваш ключ. - `base_url` — базовый URL для подключения к AI Gateway. - `model` — имя используемой модели. Укажите модель, которую хотите использовать. - `messages` — массив сообщений с ролями и текстом. ### Отправка запроса с историей сообщений Чтобы сохранить контекст диалога, передавайте предыдущие сообщения в массиве `messages`: ```py from openai import OpenAI client = OpenAI( api_key="YOUR_API_KEY", base_url="https://api.timeweb.ai/v1" ) response = client.chat.completions.create( model="MODEL_NAME", messages=[ { "role": "system", "content": "Отвечай только короткими фразами.", }, { "role": "user", "content": "Сколько будет 2 + 5?", }, { "role": "assistant", "content": "7", }, { "role": "user", "content": "Теперь умножь результат на 2", }, ], ) print(response.choices[0].message.content) ``` В примере передаются предыдущие сообщения (`assistant` и `user`), чтобы сохранить контекст диалога. ### Отправка запроса (Responses API) `Responses API` — более новый способ работы с моделями. Он упрощает структуру запроса и не требует явного формирования массива `messages`. ```py from openai import OpenAI client = OpenAI( api_key="YOUR_API_KEY", base_url="https://api.timeweb.ai/v1" ) response = client.responses.create( model="MODEL_NAME", instructions="Отвечай кратко и по существу.", input="Объясни, что такое Kubernetes" ) print(response.output_text) ``` Параметры: - `model` — имя используемой модели; - `instructions` — инструкция для модели (аналог системного промпта); - `input` — текст запроса. ### Отправка запроса с историей сообщений (Responses API) Чтобы сохранить контекст диалога при использовании Responses API, укажите `previous_response_id` — идентификатор предыдущего ответа. ```py from openai import OpenAI client = OpenAI( api_key="YOUR_API_KEY", base_url="https://api.timeweb.ai/v1" ) response = client.responses.create( model="MODEL_NAME", instructions="Отвечай только короткими фразами.", input="Сколько будет 2 + 5?" ) next_response = client.responses.create( model="MODEL_NAME", instructions="Отвечай только короткими фразами.", previous_response_id=response.id, input="Теперь умножь результат на 2" ) print(next_response.output_text) ``` В этом примере первый запрос возвращает объект ответа, содержащий уникальный идентификатор `id`. Этот идентификатор передается в параметре `previous_response_id` при следующем запросе, что позволяет продолжить диалог без передачи всей истории сообщений. Параметр `model` необходимо указывать в каждом запросе, включая последующие вызовы с `previous_response_id`. ### Получение списка моделей AI Gateway позволяет получить список доступных моделей: ```py from openai import OpenAI client = OpenAI( api_key="YOUR_API_KEY", base_url="https://api.timeweb.ai/v1" ) models = client.models.list() for model in models.data: print(model.id) ``` Метод `models.list()` возвращает список моделей, которые можно использовать в параметре `model`. ### Использование embeddings `Embeddings` используются для преобразования текста в векторное представление. Это может применяться, например, для поиска по смыслу, кластеризации или работы с RAG. В AI Gateway для создания embeddings доступна модель `openai/text-embedding-3-large`. ```py from openai import OpenAI client = OpenAI( api_key="YOUR_API_KEY", base_url="https://api.timeweb.ai/v1" ) response = client.embeddings.create( model="openai/text-embedding-3-large", input="Текст для векторизации", ) print(response.data[0].embedding) ``` Метод возвращает векторное представление переданного текста. # Files API в AI Gateway Source: https://timeweb.cloud/docs/ai-agents/api-usage/files-api Files API позволяет загружать файлы в AI Gateway и передавать их моделям в запросах. Это удобно, когда модели нужно обработать документ, таблицу, текстовый файл или другой материал, который не требуется каждый раз вставлять в тело запроса. Файл загружается один раз, после чего AI Gateway возвращает его идентификатор. Этот идентификатор можно использовать в последующих запросах к модели. ## Подготовка токена Для работы с Files API нужен [API-ключ AI Gateway](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway#sozdanie-api-klucha). Создать ключ можно в разделе «ИИ-сервисы» во вкладке «AI Gateway» → «API-ключи». В примерах используется переменная окружения `TIMEWEB_AI_TOKEN`, чтобы не указывать ключ напрямую в каждом запросе. На Linux и macOS переменную можно задать командой: ```bash export TIMEWEB_AI_TOKEN="ваш_API-ключ" ``` После этого значение переменной будет доступно в текущей сессии терминала. Чтобы переменная сохранялась после перезапуска терминала, добавьте эту же строку в файл конфигурации вашей оболочки, например `~/.zshrc` для zsh или `~/.bashrc` для bash. ## Методы API Ниже приведены методы для работы с файлами через API. Для запросов к уже загруженному файлу используется идентификатор `file_id`, который возвращается при загрузке. ### Загрузка файла Чтобы загрузить файл, отправьте POST-запрос на эндпоинт `/v1/files`: ```bash curl --request POST \ --url https://api.timeweb.ai/v1/files \ --header "authorization: Bearer $TIMEWEB_AI_TOKEN" \ --header "content-type: multipart/form-data" \ --form purpose=user_data \ --form "file=@" \ --form "target_model_names=openai/gpt-4.1" ``` Параметры: - `purpose` — назначение файла. В AI Gateway поддерживаются только значения `user_data` и messages. Значение `user_data` используется для работы с файлами в запросах к моделям, `messages` доступно при работе с моделями Claude. Другие значения `purpose` не поддерживаются. - `file` — путь к локальному файлу. Перед путем указывается символ `@`, например `file=@/Users/timeweb_cloud/test.txt`. - `target_model_names` — имена моделей, для которых загружается файл. Если файл должен быть доступен нескольким моделям, перечислите их через запятую, например `target_model_names=openai/gpt-4.1,openai/gpt-5`. Корректные имена моделей можно найти во вкладке «Подключение» в разделе AI Gateway. Загруженный файл будет доступен только для модели, указанной в параметре `model`. Пример ответа: ```js { "id": "file-bGl0ZWxsbTpmaWxlLUdmMWRD1mDEZEtEOGZqQ1BBWjlxWk47bW9kZWwsb3BlbmFpL2dwdC00LjE7bGl0ZWxsbV9vd25lcl91c2VyX2lkLG50OTQ1NDI", "bytes": 27, "created_at": 1782804439, "filename": "testfile.txt", "object": "file", "purpose": "user_data", "status": "processed", "expires_at": null, "status_details": null } ``` Для дальнейшей работы с файлом используйте значение поля `id`. ### Получение информации о файле Метод позволяет получить метаданные загруженного файла: ```bash curl --request GET \ --url https://api.timeweb.ai/v1/files/ \ --header "authorization: Bearer $TIMEWEB_AI_TOKEN" ``` Где `file_id` — идентификатор файла, полученный при загрузке. ### Получение содержимого файла Метод `/content` реализован для совместимости с Files API и дальнейшего расширения сценариев работы с файлами: ```bash curl --request GET \ --url https://api.timeweb.ai/v1/files//content \ --header "authorization: Bearer $TIMEWEB_AI_TOKEN" ``` Получение содержимого доступно только для подходящих значений purpose, например для сценариев `fine-tuning`. Такие сценарии сейчас не поддерживаются в AI Gateway. Для файлов с `purpose=user_data` или `purpose=messages` метод для чтения содержимого файла не используется. ### Удаление файла Чтобы удалить файл, отправьте DELETE-запрос: ```bash curl --request DELETE \ --url https://api.timeweb.ai/v1/files/ \ --header "authorization: Bearer $TIMEWEB_AI_TOKEN" ``` После удаления идентификатор файла нельзя использовать в запросах к модели. ## Пример работы с файлом Рассмотрим пример с загрузкой текстового файла `test.txt`, который расположен по пути `/Users/timeweb_cloud/test.txt`. ```bash curl --request POST \ --url https://api.timeweb.ai/v1/files \ --header "authorization: Bearer $TIMEWEB_AI_TOKEN" \ --header "content-type: multipart/form-data" \ --form purpose=user_data \ --form "file=@/Users/timeweb_cloud/test.txt" \ --form "target_model_names=openai/gpt-4.1" ``` В параметре `file` указан полный путь к файлу на локальном компьютере. Если файл находится в текущей директории терминала, можно указать относительный путь, например `file=@test.txt`. Пример ответа: ```js { "id": "file-bGl0ZWxsbTpmaWxlL87mMWRDV7NEZEtEOGZqQ1BBWjlxWk47bW9kZWwsb3BlbmFpL2dwdC00LjE7bGl0ZWxsbV9vd25lcl91c2VyX2lkLG50OTQ1NDI", "bytes": 27, "created_at": 1782804439, "filename": "test.txt", "object": "file", "purpose": "user_data", "status": "processed", "expires_at": null, "status_details": null } ``` После загрузки файл можно передать модели в Responses API. Для этого в запросе используется объект с типом `input_file`, а в поле `file_id` передается идентификатор из ответа на загрузку: ```shell curl https://api.timeweb.ai/v1/responses \ --header "Content-Type: application/json" \ --header "Authorization: Bearer $TIMEWEB_AI_TOKEN" \ --data '{ "model": "openai/gpt-4.1", "input": [ { "role": "user", "content": [ { "type": "input_text", "text": "Прочитай загруженный файл и кратко перескажи, что в нем написано." }, { "type": "input_file", "file_id": "file-bGl0ZWxsbTpmaWxlL87mMWRDV7NEZEtEOGZqQ1BBWjlxWk47bW9kZWwsb3BlbmFpL2dwdC00LjE7bGl0ZWxsbV9vd25lcl91c2VyX2lkLG50OTQ1NDI" } ] } ] }' ``` Модель в запросе должна совпадать с моделью, для которой файл был загружен. # Работа с аудио в AI Gateway Source: https://timeweb.cloud/docs/ai-agents/api-usage/audio-api В AI Gateway доступны модели для синтеза и распознавания речи. С их помощью можно озвучивать тексты, добавлять голосовые ответы в приложения, расшифровывать звонки и преобразовывать другие аудиозаписи в текст. Для синтеза речи, или TTS (Text-to-Speech), используется модель `openai/gpt-4o-mini-tts`. Для распознавания речи, или STT (Speech-to-Text), доступны модели `openai/gpt-4o-mini-transcribe` и `openai/gpt-4o-transcribe`. ## Возможности синтеза речи Модель `openai/gpt-4o-mini-tts` создает аудио на основе переданного текста. Модель поддерживает русский и другие языки, а также позволяет управлять звучанием речи с помощью инструкции: например, задать темп, интонацию, эмоциональную окраску или тон. Для генерации можно выбрать один из голосов: - `alloy`; - `ash`; - `ballad`; - `coral`; - `echo`; - `fable`; - `nova`; - `onyx`; - `sage`; - `shimmer`; - `verse`; - `marin`; - `cedar`. Послушать примеры голосов можно на сайте [OpenAI.fm](https://openai.fm/). Поддерживаются следующие форматы аудио: - `mp3` — используется по умолчанию; - `opus` — подходит для потоковой передачи и голосовой связи; - `aac` — формат сжатия, который используется, например, на мобильных устройствах; - `flac` — формат сжатия без потери качества; - `wav` — несжатое аудио; - `pcm` — необработанные аудиоданные без заголовка файла. Форматы `wav` и `pcm` подходят для сценариев, в которых важна минимальная задержка. AI Gateway также поддерживает потоковую передачу: воспроизведение можно начать до завершения генерации всего аудио. ## Возможности транскрибации Модели `openai/gpt-4o-mini-transcribe` и `openai/gpt-4o-transcribe` преобразуют речь из аудиофайла в текст. Язык записи можно определить автоматически или указать в запросе явно. Для транскрибации можно использовать файлы следующих форматов: `mp3`, `mp4`, `mpeg`, `mpga`, `m4a`, `wav` и `webm`. Результат можно получить в формате `json` или обычного текста. В запросе также можно передать параметр `prompt` с дополнительным контекстом. Он помогает модели правильно распознавать: - имена и фамилии; - названия продуктов и компаний; - аббревиатуры; - профессиональные термины; - слова, написание которых сложно определить только по произношению. Если запись разделена на несколько фрагментов, в `prompt` можно передавать текст предыдущего фрагмента. Это помогает модели сохранять контекст между запросами. ## Как считаются токены В аудиомоделях учитываются текстовые токены и аудиотокены. Текстовые токены зависят от объема текста, а аудиотокены — от продолжительности аудио. При синтезе речи (TTS-модели): - `input_tokens` — текстовые токены переданного текста; - `output_tokens` — аудиотокены созданной записи. Одна секунда аудио считается за один аудиотокен. Например, если модель создала аудио продолжительностью четыре секунды, будет учтено четыре выходных аудиотокена. Количество входных текстовых токенов зависит от длины исходного текста. При транскрибации (STT-модели): - `input_tokens` — аудиотокены исходной записи: примерно 10 токенов за одну секунду; - `output_tokens` — текстовые токены расшифровки. Например, для записи продолжительностью 10 секунд будет потрачено примерно 100 входных аудиотокенов. Количество выходных текстовых токенов зависит от длины расшифровки. ## Ограничения и особенности - Аудиомодели доступны только в AI Gateway. - Потоковая генерация и воспроизведение речи поддерживаются только для TTS. - Транскрибация звука с микрофона в реальном времени не поддерживается. - Для транскрибации доступны форматы ответа `json` и `plain text`. ## Подключение Для работы с аудиомоделями нужен [API-ключ AI Gateway](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway#sozdanie-api-klucha). Создать его можно в разделе «ИИ-сервисы» во вкладке «AI Gateway» → «API-ключи». В примерах используется переменная окружения `TIMEWEB_AI_TOKEN`, чтобы не указывать ключ непосредственно в коде. В Linux и macOS ее можно задать командой: ```bash export TIMEWEB_AI_TOKEN="ваш_API-ключ" ``` Установите библиотеку OpenAI: ```bash pip install openai ``` Создайте клиент и укажите базовый URL AI Gateway: ```py import os from openai import OpenAI client = OpenAI( api_key=os.environ["TIMEWEB_AI_TOKEN"], base_url="https://api.timeweb.ai/v1", ) ``` ## Синтез речи Для синтеза речи используется метод `audio.speech.create()`. ### Создание аудиофайла В следующем примере модель озвучивает текст и сохраняет результат в файл `speech.mp3`: ```py import os from pathlib import Path from openai import OpenAI client = OpenAI( api_key=os.environ["TIMEWEB_AI_TOKEN"], base_url="https://api.timeweb.ai/v1", ) speech_file = Path("speech.mp3") with client.audio.speech.with_streaming_response.create( model="openai/gpt-4o-mini-tts", voice="shimmer", input="Привет! Это проверка синтеза речи.", instructions="Говори спокойно и доброжелательно.", response_format="mp3", ) as response: response.stream_to_file(speech_file) ``` Параметры: - `model` — модель для синтеза речи; - `voice` — голос, которым будет озвучен текст; - `input` — текст для озвучивания; - `instructions` — инструкция, определяющая манеру речи; - `response_format` — формат созданного аудио. ### Потоковое воспроизведение Чтобы начать воспроизведение до завершения генерации, используйте асинхронный клиент и `LocalAudioPlayer`. Для работы `LocalAudioPlayer` установите библиотеки `numpy` и `sounddevice`: ```bash pip install numpy sounddevice ``` Пример потокового воспроизведения: ```py import asyncio import os from openai import AsyncOpenAI from openai.helpers import LocalAudioPlayer client = AsyncOpenAI( api_key=os.environ["TIMEWEB_AI_TOKEN"], base_url="https://api.timeweb.ai/v1", ) async def main() -> None: async with client.audio.speech.with_streaming_response.create( model="openai/gpt-4o-mini-tts", voice="shimmer", input="Привет! Это проверка потокового синтеза речи.", response_format="pcm", ) as response: await LocalAudioPlayer().play(response) if __name__ == "__main__": asyncio.run(main()) ``` В примере используется формат `pcm`, поэтому аудио можно воспроизводить по мере получения данных от модели. ## Транскрибация аудио Для преобразования речи в текст используется метод `audio.transcriptions.create()`. ### Транскрибация из файла В следующем примере модель расшифровывает русскую речь из файла `audio.mp3`: ```py import os from openai import OpenAI client = OpenAI( api_key=os.environ["TIMEWEB_AI_TOKEN"], base_url="https://api.timeweb.ai/v1", ) with open("audio.mp3", "rb") as audio_file: transcription = client.audio.transcriptions.create( model="openai/gpt-4o-mini-transcribe", file=audio_file, language="ru", response_format="json", ) print(transcription.text) ``` Параметры: - `model` — модель для транскрибации; - `file` — аудиофайл, который нужно преобразовать в текст; - `language` — язык аудио. Если параметр не указан, модель определит язык автоматически; - `response_format` — формат ответа: `json` или `text`. ### Передача контекста С помощью параметра `prompt` можно передать модели термины, дополнительный контекст и требования к результату. Также, можно попросить ее удалить слова-паразиты: ```py import os from openai import OpenAI client = OpenAI( api_key=os.environ["TIMEWEB_AI_TOKEN"], base_url="https://api.timeweb.ai/v1", ) with open("meeting.mp3", "rb") as audio_file: transcription = client.audio.transcriptions.create( model="openai/gpt-4o-transcribe", file=audio_file, language="ru", response_format="json", prompt=( "Запись посвящена Kubernetes и облачной инфраструктуре. " "В разговоре упоминаются Timeweb Cloud, kubectl и Ingress. " "Удали из расшифровки слова-паразиты и междометия. " "Сохрани смысл и не перефразируй остальную речь." ), ) print(transcription.text) ``` В примере `prompt` помогает модели распознать технические термины и задает требования к готовому тексту. Параметр не заменяет содержимое аудио, а дополняет его контекстом и инструкциями. ### Транскрибация звука с микрофона AI Gateway не поддерживает транскрибацию в реальном времени. Для приближенного к реальному времени результата можно записывать звук короткими фрагментами и отправлять каждый фрагмент в API отдельно. Установите дополнительные библиотеки: ```shell pip install numpy sounddevice ``` Пример ниже записывает звук фрагментами по три секунды. Между соседними фрагментами добавляется небольшое перекрытие, чтобы модель не потеряла слова на границе записи: ```py import io import os import queue import threading import time import wave from dataclasses import dataclass import numpy as np import sounddevice as sd from openai import OpenAI MODEL = "openai/gpt-4o-mini-transcribe" SAMPLE_RATE = 16_000 CHANNELS = 1 SAMPLE_WIDTH_BYTES = 2 CHUNK_SECONDS = 3.0 OVERLAP_SECONDS = 0.4 FRAMES_PER_BLOCK = 1_600 client = OpenAI( api_key=os.environ["TIMEWEB_AI_TOKEN"], base_url="https://api.timeweb.ai/v1", ) @dataclass class AudioChunk: index: int pcm_data: bytes audio_queue: queue.Queue[AudioChunk | None] = queue.Queue(maxsize=10) stop_event = threading.Event() def pcm_to_wav_bytes(pcm_data: bytes) -> io.BytesIO: wav_buffer = io.BytesIO() with wave.open(wav_buffer, "wb") as wav_file: wav_file.setnchannels(CHANNELS) wav_file.setsampwidth(SAMPLE_WIDTH_BYTES) wav_file.setframerate(SAMPLE_RATE) wav_file.writeframes(pcm_data) wav_buffer.seek(0) wav_buffer.name = "chunk.wav" return wav_buffer def transcription_worker() -> None: while True: chunk = audio_queue.get() if chunk is None: audio_queue.task_done() break try: wav_file = pcm_to_wav_bytes(chunk.pcm_data) started_at = time.perf_counter() transcription = client.audio.transcriptions.create( model=MODEL, file=wav_file, language="ru", response_format="json", ) elapsed = time.perf_counter() - started_at text = getattr(transcription, "text", "").strip() if text: print( f"\n[{chunk.index:04d}] " f"({elapsed:.2f} сек.) {text}", flush=True, ) else: print( f"\n[{chunk.index:04d}] " f"({elapsed:.2f} сек.) [тишина]", flush=True, ) except Exception as exc: print( f"\nОшибка транскрибации фрагмента " f"{chunk.index}: {exc}", flush=True, ) finally: audio_queue.task_done() def record_microphone() -> None: chunk_samples = int(SAMPLE_RATE * CHUNK_SECONDS) overlap_samples = int(SAMPLE_RATE * OVERLAP_SECONDS) accumulated = np.empty(0, dtype=np.int16) previous_tail = np.empty(0, dtype=np.int16) chunk_index = 1 print("Говорите. Для остановки нажмите Ctrl+C.") with sd.InputStream( samplerate=SAMPLE_RATE, channels=CHANNELS, dtype="int16", blocksize=FRAMES_PER_BLOCK, ) as stream: while not stop_event.is_set(): block, overflowed = stream.read(FRAMES_PER_BLOCK) if overflowed: print("\nПредупреждение: переполнение аудиобуфера.") accumulated = np.concatenate((accumulated, block[:, 0])) while len(accumulated) >= chunk_samples: current_samples = accumulated[:chunk_samples] accumulated = accumulated[chunk_samples:] if len(previous_tail) > 0: samples_to_send = np.concatenate( (previous_tail, current_samples) ) else: samples_to_send = current_samples if overlap_samples > 0: previous_tail = current_samples[-overlap_samples:].copy() else: previous_tail = np.empty(0, dtype=np.int16) audio_chunk = AudioChunk( index=chunk_index, pcm_data=samples_to_send.astype( "= SAMPLE_RATE // 2: if len(previous_tail) > 0: accumulated = np.concatenate( (previous_tail, accumulated) ) audio_queue.put( AudioChunk( index=chunk_index, pcm_data=accumulated.astype( " None: worker = threading.Thread( target=transcription_worker, daemon=True, ) worker.start() try: record_microphone() except KeyboardInterrupt: print("\nОстанавливаю запись...") stop_event.set() finally: audio_queue.put(None) audio_queue.join() worker.join(timeout=5) print("Готово.") if __name__ == "__main__": main() ``` Значения `CHUNK_SECONDS` и `OVERLAP_SECONDS` можно изменить. Более короткие фрагменты уменьшают задержку, но увеличивают количество запросов. Из-за перекрытия в результате могут повторяться отдельные слова — при необходимости удаляйте такие повторы при дальнейшей обработке текста. # Open WebUI Source: https://timeweb.cloud/docs/ai-agents/api-usage/open-webui Open WebUI — это удобный интерфейс чата для моделей, доступ к которым предоставляется через API. С его помощью можно общаться с AI-агентами в привычном формате диалога. Разберемся, как установить Open WebUI и подключить к нему AI-агента. Предполагается, что у вас уже создан AI-агент. Если нет, поможет [наша документация](https://timeweb.cloud/docs/ai-agents), где подробно описано, что такое агент и как его создать. ## Установка Интерфейс можно развернуть как локально на рабочем компьютере, так и на удаленном сервере, если нужен постоянный доступ к чату. > [!NOTE] > Для корректной работы Open WebUI потребуется минимум 2 ГБ ОЗУ. Убедитесь, что у вас установлены `docker` и `docker compose`: ```bash docker --version docker compose version ``` Если вы разворачиваете Open WebUI локально, достаточно создать файл `docker-compose.yaml` с содержимым: ```yaml services: openwebui: image: ghcr.io/open-webui/open-webui:main ports: - "3000:8080" volumes: - open-webui:/app/backend/data volumes: open-webui: ``` Если вы хотите развернуть интерфейс на сервере, для удобства доступа стоит использовать домен и SSL-сертификат. Для этого создайте файл `.env`: ```yaml DOMAIN=openwebui.example.com LETSENCRYPT_EMAIL=admin@example.com TZ=Europe/Moscow ``` В `DOMAIN` укажите домен, на котором будет работать интерфейс. Для домена должна быть настроена A-запись на ваш сервер. `LETSENCRYPT_EMAIL` — почтовый ящик, который будет использоваться для получения сертификата. `TZ` — таймзона. Создайте файл `docker-compose.yaml` со следующим содержимым: ```yaml version: "3.8" services: traefik: image: traefik:v3.1 container_name: traefik restart: unless-stopped command: - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.myresolver.acme.httpchallenge=true" - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.myresolver.acme.email=${LETSENCRYPT_EMAIL}" - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - "letsencrypt:/letsencrypt" openwebui: image: ghcr.io/open-webui/open-webui:main container_name: openwebui restart: unless-stopped environment: - TZ=${TZ} - WEBUI_URL=https://${DOMAIN} volumes: - openwebui-data:/app/backend/data labels: - "traefik.enable=true" # HTTPS-роутер - "traefik.http.routers.openwebui.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.openwebui.entrypoints=websecure" - "traefik.http.routers.openwebui.tls.certresolver=myresolver" - "traefik.http.services.openwebui.loadbalancer.server.port=8080" - "traefik.http.services.openwebui.loadbalancer.server.scheme=http" # HTTP-роутер с редиректом на HTTPS - "traefik.http.routers.openwebui-http.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.openwebui-http.entrypoints=web" - "traefik.http.routers.openwebui-http.middlewares=redirect-to-https" # Middleware для редиректа - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" volumes: openwebui-data: letsencrypt: ``` Сохраните манифест и запустите контейнер: ```shell docker compose up ``` Docker скачает образ и развернет Open WebUI. После появления логотипа в терминале откройте в браузере страницу `http://localhost:3000/` или используйте ваш домен, если интерфейс разворачивается на сервере (в дальнейшем в инструкции будем использовать localhost). ![Scr 20250910 Mnln](https://content.timeweb.com/assets/7778ed8e-34a9-4d32-873a-b23244ee47b6.png?width=2096&height=722) Если загрузилась приветственная страница — установка прошла успешно. ![Scr 20250910 Mopu](https://content.timeweb.com/assets/0d61dedb-cf4b-4d46-838d-16fd573c71c9.png?width=2742&height=1538) _Приветственная страница [Open WebUI](https://openwebui.com/)_ Вернитесь в терминал и остановите контейнер сочетанием `Ctrl+C`, а затем запустите его в фоновом режиме: ```bash docker compose up -d ``` В браузере обновите страницу `http://localhost:3000/`, вы также должны наблюдать приветственную страницу. ## Подключение агента Нажмите на кнопку «Давайте начнем». Заполните данные для создания аккаунта администратора. Если приложение разворачивается локально, можно указать простой пароль, но при установке на сервере с внешним доступом рекомендуем использовать стойкий пароль. Почта, введенная при регистрации, используется только как идентификатор и как логин для входа, никакие письма на нее не приходят. ![Image 20250910141353857](https://content.timeweb.com/assets/86ce3a80-c200-4292-aaac-8d9a67529a91.png?width=1204&height=788) _Создание аккаунта администратора в интерфейсе [Open WebUI](https://openwebui.com/)_ Open WebUI поддерживает два способа подключения агентов: - **Через прямое подключение** — для каждого пользователя указывается собственный API-ключ и URL; - **Для всех пользователей** — настройки подключения задаются один раз в панели администратора и используются по умолчанию. Рассмотрим оба варианта. Прямое подключение После создания аккаунта вы окажетесь в главном рабочем пространстве. Но чтобы подключить агентов, нужно сделать еще пару шагов. Нажмите на имя аккаунта в левом нижнем углу и выберите «Панель администратора». ![Image 20250910141455584](https://content.timeweb.com/assets/7e2bfbb3-82e9-455b-8992-baefeea1ff08.png?width=2790&height=1586) _Интерфейс [Open WebUI](https://openwebui.com/)_ Дальше откройте вкладку «Настройки» → пункт «Подключения» и включите переключатель напротив «Прямые подключения». Сохраните изменения. ![Image 20250910142207787](https://content.timeweb.com/assets/7b50215b-a8e6-4d0d-adb0-4dce2b8b00b7.png?width=2804&height=1590) _Раздел «Настройки» → «Подключения» в интерфейсе [Open WebUI](https://openwebui.com/)_ Теперь перейдем к подключению модели. Вновь нажмите на имя пользователя, но теперь выберите пункт «Настройки». ![Image 20250910142341297](https://content.timeweb.com/assets/51ec1662-6bfb-4fb3-b686-8bf54a6e745b.png?width=2802&height=1590) _Раздел «Настройки» → «Подключения» в интерфейсе [Open WebUI](https://openwebui.com/)_ Перейдите в раздел «Подключения» и нажмите на иконку плюсика. ![Image 20250910142504265](https://content.timeweb.com/assets/c1a845ee-3258-4d78-b65a-f5dc17abb1e8.png?width=1974&height=1328) _Раздел «Подключения» в интерфейсе [Open WebUI](https://openwebui.com/)_ В открывшемся меню укажите: - URL — значение из поля «OpenAI URL» во вкладке «Доступ» на странице агента в панели Timeweb Cloud; - Ключ — [API-токен для доступа к агенту](https://timeweb.cloud/docs/ai-agents/manage-agents/api-access-key) После этого нажмите на кнопку проверки соединения. Если ошибок нет — сохраните. ![Image 20250910154715217](https://content.timeweb.com/assets/f28aec02-aa8c-48c9-ad90-b5bc0b988d47.png?width=2832&height=1598) _Добавление соединения в интерфейсе [Open WebUI](https://openwebui.com/)_ Закройте окно с настройками и нажмите на кнопку «Новый чат». В меню выбора модели у вас отобразится модель вашего AI-агента. Если этого не произошло — обновите страницу браузера и проверьте вновь. ![Image 20250910155234645](https://content.timeweb.com/assets/b8b1d899-3aa9-43f8-ad7b-10a00aacec88.png?width=2796&height=1590) _Окно «Новый чат» в интерфейсе [Open WebUI](https://openwebui.com/)_ Общие настройки подключения Если вы хотите настроить доступ к агенту один раз для всех пользователей, сделайте следующее: Нажмите на имя аккаунта в левом нижнем углу и выберите «Панель администратора». ![Image5](https://content.timeweb.com/assets/93e7554a-2976-474c-aee9-8f7844b76e9e.png?width=1999&height=1137) _Интерфейс [Open WebUI](https://openwebui.com/)_ Перейдите во вкладку «Настройки» и нажмите на иконку плюса рядом с пунктом «API OpenAI». ![Image10](https://content.timeweb.com/assets/51ca4d6f-1580-4737-90b1-a4b8a6ae048e.png?width=1999&height=956) _Раздел «Настройки» → «Подключения» в интерфейсе [Open WebUI](https://openwebui.com/)_ В открывшемся меню укажите: - URL — значение из поля «OpenAI URL» во вкладке «Доступ» на странице агента в панели Timeweb Cloud; - Ключ — [API-токен для доступа к агенту](https://timeweb.cloud/docs/ai-agents/manage-agents/api-access-key) После этого нажмите на кнопку проверки соединения. Если ошибок нет — сохраните. ![Image11](https://content.timeweb.com/assets/3653286d-0d58-46f2-aa3c-b81ad3401f0c.png?width=1999&height=951) _Добавление соединения в интерфейсе [Open WebUI](https://openwebui.com/)_ Закройте окно с настройками и нажмите на кнопку «Новый чат». В меню выбора модели у вас отобразится модель вашего AI-агента. Если этого не произошло — обновите страницу браузера и проверьте вновь. ![Image8](https://content.timeweb.com/assets/bf90eb29-16fd-4836-92e4-d39ee930a483.png?width=1999&height=1138) _Окно с новым чатом в интерфейсе [Open WebUI](https://openwebui.com/)_ На этом установка и настройка Open WebUI завершена. # Управление базами знаний Source: https://timeweb.cloud/docs/ai-agents/manage-knowledge-bases База знаний — это приватное хранилище неструктурированных файлов, которое используется для генерации, дополненной поиском (Retrieval Augmented Generation, RAG). Иными словами, при подключении базы знаний агент не просто генерирует ответы на основе данных, по которым обучалась ИИ-модель, но также выполняет поиск по базе знаний с информацией, релевантной именно для ваших услуг и сервисов. Примерами баз знаний могут быть документация по продукту, информация о ценах, каталоги товаров. Для размещения базы знаний используется облачная база данных OpenSearch — она появится в [«Базах данных»](https://timeweb.cloud/my/database) вашей панели управления, когда вы создадите новую базу знаний. В качестве источников данных используются локальные файлы. В одну загрузку можно добавить до 100 файлов, размером не более 50 МБ каждый. Их можно загрузить файлы на этапе создания базы знаний, а также в дальнейшем в настройках базы. После индексации база знаний станет доступна агентам, к которым она подключена. Несколько агентов могут использовать одну и ту же базу. # Создание базы знаний Source: https://timeweb.cloud/docs/ai-agents/manage-knowledge-bases/create 1. Перейдите в раздел «ИИ-сервисы» → «Базы знаний». 2. Нажмите «Создать» или «Добавить». ![Ии Сервисы 2026 08 18 15 34](https://content.timeweb.com/assets/d2bec526-2035-43fe-a35d-be4e28be6cb6.png?width=1576&height=712) 3. Задайте параметры базы знаний: - - Загрузите источник данных. [Подробнее об источниках](https://timeweb.cloud/docs/ai-agents/manage-knowledge-bases/configure-data-sources#format-istochnikov-dannyh). - Выберите тариф облачной базы OpenSearch, которая будет использоваться для размещения данных. Вы сможете [увеличить тариф](https://timeweb.cloud/docs/dbaas/dbaas-manage#smena-tarifa) в дальнейшем, если потребуется. - Задайте имя базы знаний, чтобы было проще ориентироваться в них в панели управления. Дополнительно можно указать комментарий. 4. Нажмите «Заказать». ![Scr 20251118 Mejd](https://content.timeweb.com/assets/2c14e368-43b4-4047-89d3-ff4093f07722.png?width=846&height=965) Начнется процесс создания облачной базы данных и индексации загруженных файлов. Для индексации используется [модель встраивания text-embedding-3-large](https://timeweb.cloud/docs/ai-agents/pricing#baza-znanij). Скорость индексации зависит от размера файлов. # Настройка источников данных Source: https://timeweb.cloud/docs/ai-agents/manage-knowledge-bases/configure-data-sources Вы можете управлять источниками данных, которые используются в той или иной базе знаний: загружать новые файлы источников или удалять существующие. ## Формат источников данных Файлы источников данных могут быть в форматах: `.csv`, `.htm`, `.html`, `.md`, `.txt`, `.xml`, `.pdf`,`.doc`, `.docx`, `.xls`, `.xlsx`. В качестве источников необходимо использовать текстовые данные. Ограничений по содержимому или оформлению нет, кроме нюанса для таблиц: первая строка должна содержать имена колонок. Если источники данных содержат медиа (видео, изображения и др.), это не помешает индексации, но сами медиаданные распознаны не будут. Агент будет работать только с текстом. В источниках можно использовать ссылки, например, на вашу собственную документацию или онлайн-каталоги, чтобы агент мог присылать клиентам релевантные ссылки. Однако ссылки тоже будут распознаны как текст — агент не сможет самостоятельно прочитать и проанализировать содержимое веб-страницы по приведенному URL. ## Добавление источника данных 1. Перейдите в раздел «ИИ-сервисы» → «Базы знаний» 2. Выберите нужную базу и откройте вкладку «Источники данных». 3. Нажмите кнопку «Добавить источник». Выберите способ добавления: загрузка файла или подключение по ссылке. Поддерживаются форматы: `.csv`, `.doc`, `.docx`, `.htm`, `.html`, `.md`, `.txt`, `.xls`, `.xlsx`, `.xml`, `.pdf`. Максимальный размер каждого файла — 50 МБ. Для всех форматов используются специализированные парсеры. Например, при обработке HTML-страниц не индексируются JS-скрипты, CSS, мета-теги и другие технические элементы — только содержимое страницы. ### Загрузка файла Выберите вкладку «Загрузить файл» и добавьте от 1 до 100 файлов. ![Scr 20251215 Ocfy](https://content.timeweb.com/assets/98a5e92d-2ee8-472e-a341-82b0aa81024e.png?width=2216&height=1456) ### Подключение по ссылке Выберите вкладку «Подключить по ссылке» и вставьте ссылку в поле «Ссылка на источник». Нажмите «Добавить источник» — вы можете добавить сразу несколько. ![Scr 20251215 Oeuy](https://content.timeweb.com/assets/88cc3c46-d7c4-4fbb-901d-768c8eaf407e.png?width=2172&height=1500) При подключении по ссылке важно: - Страница должна быть доступна без авторизации; - Страница должна загружаться полностью при помощи `curl`, без генерации на клиенте (не SPA). Для источников, добавленных по ссылке, можно включить автоматическую переиндексацию. Для этого включите переключатель «Авто переиндексация по расписанию». Переиндексация выполняется при изменении заголовка `ETag`. Если `ETag` не передается, индекс обновляется при каждом запуске по расписанию. ## Управление источниками Во вкладке «Источники данных» отображаются все добавленные источники: - Иконка файла — источник загружен вручную; - Иконка глобуса — источник подключен по ссылке. ![Scr 20251215 Ozof](https://content.timeweb.com/assets/181bee58-dab8-4e24-9916-266e76a053e0.png?width=2132&height=1090) При наведении курсора появляется кнопка переиндексации. Она повторно загрузит содержимое и обновит индекс: - Для файлов — проиндексирует текущую версию; - Для ссылок — загрузит актуальное содержимое по ссылке. Кликнув по иконке с тремя точками напротив источника, вы можете: - Скачать файл (для источников, загруженных из файла); - Отредактировать ссылку или расписание (для источников, подключенных по ссылке); - Удалить источник — независимо от способа добавления. # Режимы поиска по базе Source: https://timeweb.cloud/docs/ai-agents/manage-knowledge-bases/search-mode При подключении базы к агенту вы можете выбрать режим поиска по базе знаний: агентский или классический. **Классический режим** — перед каждым запросом выполняется семантический поиск по базе знаний, и в контекст модели добавляются только найденные фрагменты. Например, ответ на вопрос о правилах возврата товара модель формирует по заранее загруженной политике компании без дополнительных запросов. **Агентный режим** — у модели появляются инструменты для поиска по базе знаний, и она сама выполняет дополнительные поиски, когда ей нужно уточнить информацию. В этом режиме модель может уточнить формулировку, выполнить несколько поисков подряд и собрать ответ из разных частей базы. Качество ответов в этом режиме заметно выше, особенно на сложных запросах, но поиск может занимать больше времени и ресурсов. Выбранный режим поиска можно изменить в любой момент в настройках агента: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 2. На вкладке «Управление» кликните «Изменить» в блоке с базой знаний. 3. Выберите нужный режим поиска. 4. Сохраните изменения. ![Brainy Erinome 2026 08 20 12 38](https://content.timeweb.com/assets/549ba9dd-8f52-44f4-9a59-4b0ae1442ce6.png?width=1749&height=856) # Тарификация агентов и баз знаний Source: https://timeweb.cloud/docs/ai-agents/pricing Для работы AI-агентов используются языковые модели и база знаний. В разделе представлены доступные модели, типы тарификации и правила работы с токенами. - [Доступные модели](https://timeweb.cloud/docs/ai-agents/pricing/models) - [Как работают токены](https://timeweb.cloud/docs/ai-agents/pricing/how-tokens-work) - [Тарификация агентов](https://timeweb.cloud/docs/ai-agents/pricing/billing-models) - [Тарификация баз знаний](https://timeweb.cloud/docs/ai-agents/pricing/knowledge-base-billing) - [Лимит потребления токенов](https://timeweb.cloud/docs/ai-agents/pricing/token-limit) - [Смена тарифа агента](https://timeweb.cloud/docs/ai-agents/pricing/change-plan) - [Покупка дополнительных токенов](https://timeweb.cloud/docs/ai-agents/pricing/buy-tokens) # Доступные модели Source: https://timeweb.cloud/docs/ai-agents/pricing/models ## Список доступных моделей В панели управления можно создать агентов на базе следующих больших языковых моделей: | **Провайдер** | **Модель** | **Размышления** | | --- | --- | --- | | OpenAI | GPT 4.1 | ❌ | | OpenAI | GPT 4.1 Mini | ❌ | | OpenAI | GPT 4o | ❌ | | OpenAI | GPT 5.1 | ✅ | | OpenAI | GPT 5.2 | ✅ | | OpenAI | GPT 5.3 Codex | ✅ | | OpenAI | GPT 5.4 | ✅ | | OpenAI | GPT 5.4 Mini | ✅ | | OpenAI | GPT 5.4 Nano | ✅ | | OpenAI | GPT 5.6 Luna | ✅ | | OpenAI | GPT 5.6 Sol | ✅ | | OpenAI | GPT 5.6 Terra | ✅ | | OpenAI | GPT 6 Astra | ✅ | | DeepSeek | DeepSeek V4 Flash | ✅ | | DeepSeek | DeepSeek V4 Pro | ✅ | | DeepSeek | DeepSeek V4.1 Flash | ✅ | | xAI | grok-code-fast | ✅ | | xAI | grok-4.3 | ✅ | | xAI | grok-4.5 | ✅ | | xAI | grok-4.6 | ✅ | | Anthropic | Claude Haiku 4.5 | ✅ | | Anthropic | Claude Sonnet 4.6 | ✅ | | Anthropic | Claude Sonnet 5 | ✅ | | Anthropic | Claude Opus 4.6 | ✅ | | Anthropic | Claude Opus 4.7 | ✅ | | Anthropic | Claude Opus 4.8 | ✅ | | Anthropic | Claude Opus 5 | ✅ | | Anthropic | Claude Fable 5 | ✅ | | Anthropic | Claude Fable 5.1 | ✅ | | Google AI | Gemini-3.5-flash | ✅ | | Google AI | Gemini-3.1-pro-preview | ✅ | | Google AI | Gemini-3.1-flash-lite | ✅ | | Google AI | Gemini-3.6-flash | ✅ | | Google AI | Gemini-3.7-flash | ✅ | | Google AI | Gemini-3.8-flash | ✅ | | Qwen | Qwen 3 Max | ❌ | | Qwen | Qwen 3.7 Max | ✅ | | Qwen | Qwen 3.8 Max | ✅ | | Qwen | Qwen 3.5 Flash | ✅ | | Qwen | Qwen 3.6 Flash | ✅ | | Qwen | Qwen 3.5 Plus | ✅ | | Qwen | Qwen 3.6 Plus | ✅ | | Qwen | Qwen 3.7 Plus | ✅ | | Yandex | Alice AI LLM | ✅ | | Yandex | Yandex GPT 5.1 Lite | ❌ | | Yandex | Yandex GPT 5.1 Pro | ✅ | | Moonshot | Kimi K2.6 | ✅ | | Moonshot | Kimi K2.7 Code | ✅ | | Moonshot | Kimi K3 | ✅ | | Z.ai | GLM 4.7 FlashX | ✅ | | Z.ai | GLM 4.7 | ✅ | | Z.ai | GLM 5.2 | ✅ | | Z.ai | GLM 5.3 | ✅ | | Z.ai | GLM 5.3 Flash | ✅ | При работе через API список версий может быть шире. Все доступные варианты можно найти [на сайте](https://timeweb.cloud/services/ai-agents). ## Модели с размышлениями Если при выборе модели отображается пиктограмма мозга — значит, модель поддерживает режим размышлений (reasoning). В этом режиме модель перед финальным ответом самостоятельно формулирует промежуточные рассуждения. Модель задает себе уточняющие вопросы и отвечает на них. Это позволяет добиться более точного, аргументированного ответа, особенно в сложных задачах. Каждая итерация размышлений требует дополнительного ввода и вывода текста, а значит — увеличивает количество затраченных токенов. Если модель поддерживает оба режима, с размышлениями и без, вы можете управлять ими на вкладке «Плейграунд»: ![Brainy Erinome 2026 08 12 09 35](https://content.timeweb.com/assets/66fd0696-31b3-47a8-815b-6aa353e6e1a8.png?width=1575&height=1280) # Как работают токены Source: https://timeweb.cloud/docs/ai-agents/pricing/how-tokens-work Модели работают с текстом, разбивая его на фрагменты — токены. Один токен может быть: - частью слова (например, «техно» + «логия»); - целым коротким словом (например, «кот»); - символом или знаком препинания. В среднем 1 000 токенов ≈ 750 слов на русском или английском языке. > [!NOTE] > Приведенные значения приблизительны и предназначены для общего представления о расходах. Каждая модель использует собственный токенизатор с уникальной логикой разбиения текста Токены тарифицируются как на входе, так и на выходе. Например, если ваш запрос содержит 20 токенов, а ответ от модели — 30 токенов, то всего будет списано 50 токенов из доступной квоты. Определить оптимальное количество токенов, необходимое для вашего агента, можно только в процессе работы, понаблюдав за динамикой потребления. # Тарификация агентов Source: https://timeweb.cloud/docs/ai-agents/pricing/billing-models AI-агенты тарифицируются по поресурсной модели pay-as-you-go. Все новые агенты создаются именно с этим типом тарификации. Пакетная тарификация применяется только к небольшой части агентов, которые были созданы вскоре после запуска сервиса. Поресурсная тарификация Стоимость агента составляет 1 рубль в месяц, а токены оплачиваются по модели pay-as-you-go. Входящие и исходящие токены учитываются отдельно, по разной стоимости. Актуальные цены можно найти в панели управления. Списания происходят с баланса аккаунта раз в час. Вы можете настроить [лимит потребления токенов](https://timeweb.cloud/docs/ai-agents/pricing/token-limit), чтобы контролировать их расход. Пакетная тарификация > [!NOTE] > Создать нового агента с пакетной тарификацией невозможно. При пакетной тарификации для агента предоставляется выбранный вами пакет токенов, который действует один месяц. Тариф автоматически продлевается раз в месяц единоразовым списанием, и вам становится доступен такой же пакет токенов. Токены, не израсходованные в текущем месяце, сгорают. При необходимости тариф можно [увеличить](https://timeweb.cloud/docs/ai-agents/pricing/change-plan?roistat_visit=4278826). Уменьшить его невозможно. Если токенов недостаточно, вы можете перейти на следующий тариф или докупить [дополнительный пакет токенов](https://timeweb.cloud/docs/ai-agents/pricing/buy-tokens?roistat_visit=4278826), который будет действовать до конца текущего оплаченного периода. # Тарификация баз знаний Source: https://timeweb.cloud/docs/ai-agents/pricing/knowledge-base-billing ## Расчет стоимости Стоимость базы знаний складывается из двух составляющих: - **Абонентская плата за токены **При создании базы знаний сразу списывается 450 ₽ за 10 млн токенов. Токены расходуются на индексацию базы, а также на все запросы к ней. Этот платеж повторяется ежемесячно. - **Почасовая оплата за базу данных OpenSearch **Для работы базы знаний используется [облачная база данных](https://timeweb.cloud/docs/dbaas). После создания базы начинает взиматься почасовая оплата. Размер платы зависит от выбранной конфигурации. При создании базы данных выбирайте минимальный подходящий тариф — в дальнейшем его можно будет увеличить. Уменьшение тарифа недоступно. #### Пример расчета При создании базы знаний с минимальной конфигурацией: - Сразу списывается 450 ₽ за 10 млн токенов (ежемесячный платеж). - В течение всего месяца с аккаунта списывается 1,23 ₽ каждый час за работу базы данных. ## Дополнительные токены При необходимости вы можете добавлять токены по цене 60 ₽ за 1 000 000 токенов, нажав кнопку «Добавить токены» в панели управления базой знаний. ![Scr 20251118 Mhxd](https://content.timeweb.com/assets/17ddc73e-cc3f-4fb3-af13-8f51789a7edf.png?width=2006&height=1450) Дополнительные токены будут добавлены до конца оплаченного периода. То есть, если следующее списание за единый тариф произойдет через два дня, дополнительные токены пропадут через два дня. ## Расход токенов при индексации Для индексации используется модель встраивания text-embedding-3-large, которая преобразует тексты в векторный формат. Это необходимо для индексации данных и последующей работы с ними. Расход токенов при индексации зависит от формата загружаемого файла. Ниже — пример приблизительного потребления токенов при загрузке документов разных объемов: | **Формат** | **1 МБ** | **10 МБ** | **100 МБ** | **500 МБ** | | --- | --- | --- | --- | --- | | `.txt` | 240 000 | 2 400 000 | 24 000 000 | 120 000 000 | | `.csv` | 450 000 | 4 500 000 | 45 000 000 | 225 000 000 | | `.xml` | 62 000 | 620 000 | 6 200 000 | 31 000 000 | | `.htm`, `.html` | 39 000 | 390 000 | 3 900 000 | 19 500 000 | | `.md` | 221 000 | 2 210 000 | 22 100 000 | 110 500 000 | Фактический расход может отличаться в зависимости от структуры и содержания файла. # Лимит потребления токенов Source: https://timeweb.cloud/docs/ai-agents/pricing/token-limit > [!NOTE] > Опция доступна только для агентов с [поресурсной](https://timeweb.cloud/docs/ai-agents/pricing/billing-models) тарификацией. При создании агента и в дальнейшем в его настройках вы можете настроить лимит потребления токенов, чтобы контролировать их расход. ## При создании агента На шаге «Тариф» укажите желаемый лимит. Вы сможете изменить его в любое время. ![Создать AI Агента 05 21 2026 01 32 Pm](https://content.timeweb.com/assets/2277b64a-bab9-4a1f-9ebc-f4ef5553d78c.png?width=755&height=560) ## В настройках агента 1. Кликните на нужного агента в разделе «ИИ-сервисы» → «Агенты». 2. Перейдите на вкладку «Управление» и кликните «Установить лимиты». ![Witty Cygnus 05 21 2026 01 34 Pm](https://content.timeweb.com/assets/3929b0c7-283d-4759-a2d2-6223b784d804.png?width=1561&height=869) 3. Включите или отключите лимит и установите нужное значение. 4. Сохраните изменения. ![Witty Cygnus 05 21 2026 01 34 Pm (1)](https://content.timeweb.com/assets/b3be41ad-0a47-4a29-a8fb-67a09765b15c.png?width=1745&height=869) # Смена тарифа агента Source: https://timeweb.cloud/docs/ai-agents/pricing/change-plan > [!NOTE] > Смена тарифа доступна только для агентов на [пакетной](https://timeweb.cloud/docs/ai-agents/pricing/billing-models) тарификации. Вы можете увеличить тариф по инструкции ниже или [докупить пакет токенов](https://timeweb.cloud/docs/ai-agents/pricing/buy-tokens) на текущий месяц, не меняя тариф. **Важно**: при изменении тарифа неиспользованные токены сгорят. Будет доступно только количество токенов, предусмотренное новым тарифом. Чтобы изменить тариф: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 2. На вкладке «Управление» нажмите «Изменить» в пункте с текущей конфигурацией. ![Image1](https://content.timeweb.com/assets/8d276193-3022-4c4c-8ea2-6ab1bff9cc0f.png?width=1999&height=1095) 3. Измените тариф и сохраните изменения. Изменения будут применены мгновенно, и счетчик токенов обновится. # Покупка дополнительных токенов Source: https://timeweb.cloud/docs/ai-agents/pricing/buy-tokens > [!NOTE] > Опция доступна только для агентов на [пакетной](https://timeweb.cloud/docs/ai-agents/pricing/billing-models) тарификации. Если вам необходимо увеличить количество токенов, вы можете [увеличить тариф](https://timeweb.cloud/docs/ai-agents/pricing/change-plan) или докупить токены отдельно. - Используйте смену тарифа, если увеличенное количество токенов требуется вам на постоянной основе — уменьшить тариф будет невозможно. - Если дополнительные токены нужны только сейчас — докупите необходимый пакет. Он будет действовать только до конца текущего оплаченного месяца, а в дальнейшем вы будете оплачивать стоимость вашего стандартного тарифа. Чтобы купить пакет токенов: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 2. На вкладке «Дашборд» нажмите «Добавить токены». ![1b706ebd 0dca 4572 921a A901f9a9bc8c](https://content.timeweb.com/assets/8cee8348-4386-40fc-9d92-a4548aade497.png?width=1527&height=824) 3. Укажите необходимое количество токенов (шаг — 250 тысяч) и нажмите «Подтвердить». ![D427b137 3693 4089 B684 67e061097779](https://content.timeweb.com/assets/f8a15f50-d6d8-48b5-b098-754838949989.png?width=1537&height=820) # Интеграция с агентскими средами Source: https://timeweb.cloud/docs/ai-agents/agent-environments - [Cline](https://timeweb.cloud/docs/ai-agents/agent-environments/cline) - [Codex](https://timeweb.cloud/docs/ai-agents/agent-environments/codex) - [OpenCode](https://timeweb.cloud/docs/ai-agents/agent-environments/opencode) - [Roo Code](https://timeweb.cloud/docs/ai-agents/agent-environments/roocode) # Cline Source: https://timeweb.cloud/docs/ai-agents/agent-environments/cline Cline — это расширение для VS Code, с помощью которого можно работать с AI-моделью прямо из редактора: задавать вопросы по проекту, редактировать код и выполнять команды в терминале. Cline можно использовать как альтернативу Roo Code, поддержка которого прекращена. ## Установка Cline Для установки расширения: 1. Откройте VS Code. 2. Перейдите в раздел «Extensions». 3. Найдите расширение Cline и установите его. ![Cline Install](https://content.timeweb.com/assets/6f7a56e6-9a66-433d-817a-0eecf7a51515.png?width=1999&height=1259) _Страница Cline в разделе «Extensions» интерфейса [VS Code](https://code.visualstudio.com/?roistat_visit=11910906)_ После установки в боковой панели появится вкладка Cline с интерфейсом чата. ## Настройка подключения При помощи расширения можно подключить как AI-агента, так и AI Gateway. Если вы хотите подключить AI-агента, вам потребуется: - [Базовый URL агента](https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api#bazovyj-url); - [API-ключ](https://timeweb.cloud/docs/ai-agents/manage-agents/api-access-key). Для подключения AI Gateway понадобится: - Базовый URL: `https://api.timeweb.ai/v1`; - [API-ключ](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway#sozdanie-api-klucha). Чтобы настроить подключение: 1. Перейдите во вкладку «Cline». 2. При первом открытии вкладки будет предложено выбрать тип аккаунта. Выберите пункт «Bring my own API key» и нажмите «Continue». ![Cline setup](https://content.timeweb.com/assets/932b54a2-7593-4057-b680-55bf108120fd.png?width=1999&height=1260) _Настройки Cline в интерфейсе [VS Code](https://code.visualstudio.com/?roistat_visit=11910906)_ 3. В настройках провайдера укажите: - `API Provider`: OpenAI Compatible; - `Base URL`: базовый URL; - `API Key`: ваш API-ключ; - `Model`: если вы используете AI-агента, поле можно оставить пустым или указать имя модели из настроек агента. При использовании AI Gateway укажите имя нужной модели, например `openai/gpt-5-nano`. Корректное имя модели можно найти в разделе «[Подключение](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway#poluchenie-parametrov-podklucheniya)». ![Интерфейс настройки Cline](https://content.timeweb.com/assets/333b2906-f0d2-4739-a2a9-887962331685.png?width=1999&height=1260) _Настройки Cline в интерфейсе [VS Code](https://code.visualstudio.com/?roistat_visit=11910906)_ 4. При необходимости настройте параметры генерации. Эти параметры будут учитываться только при использовании подключения AI Gateway. Для настройки разверните вкладку «Model configuration» и укажите: - `Context Window Size` — объем истории диалога, передаваемой в запросе; - `Max Output Tokens` — максимальное число токенов в ответе; - `Temperature` — степень вариативности ответа. 6. Нажмите «Done», затем — стрелку назад, чтобы вернуться к чату. Теперь вы можете отправлять сообщения агенту или модели прямо из редактора. # Codex Source: https://timeweb.cloud/docs/ai-agents/agent-environments/codex Codex — это AI-ассистент для разработки от OpenAI. С его помощью можно работать с проектом из десктопного приложения или терминала: задавать вопросы по коду, вносить изменения и запускать команды. К Codex можно подключить как AI-агента, так и AI Gateway. В первом случае вы работаете с уже настроенным агентом, во втором — обращаетесь к модели напрямую. ## Установка Codex Codex Desktop доступен для macOS и Windows. Скачать версию для своей ОС можно на [официальном сайте OpenAI](https://openai.com/ru-RU/codex/get-started/). Codex CLI можно установить на macOS или Linux командой: ```bash curl -fsSL https://chatgpt.com/codex/install.sh | sh ``` Для установки Codex CLI на Windows используйте PowerShell: ```shell powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex" ``` Codex CLI также можно установить через пакетные менеджеры: npm ```bash npm install -g @openai/codex ``` brew ```bash brew install --cask codex ``` ## Предварительные требования Подключить к Codex можно как AI-агента, так и AI Gateway. Если вы хотите подключить AI-агента, вам потребуется: - [Базовый URL агента](https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api#bazovyj-url); - [API-ключ](https://timeweb.cloud/docs/ai-agents/manage-agents/api-access-key). Для подключения AI Gateway понадобится: - Базовый URL: `https://api.timeweb.ai/v1`; - [API-ключ](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway#sozdanie-api-klucha). ## Настройка подключения Настройка выполняется в файле `~/.codex/config.toml`. Если вы ранее использовали Codex, сохраните текущую версию конфигурации: ```bash mv ~/.codex/config.toml ~/.codex/config.toml_old ``` Переименовав файл конфигурации обратно, вы сможете вернуть прежние настройки. Создайте или откройте файл конфигурации: ```bash nano ~/.codex/config.toml ``` Добавьте в файл конфигурацию подключения: ```bash model_provider = "timeweb_cloud" model = "openai/gpt-5-mini" [model_providers.timeweb_cloud] name = "Timeweb Cloud" base_url = "https://api.timeweb.ai/v1" env_key = "TIMEWEB_CLOUD_API_KEY" ``` В конфигурации измените: - `base_url` — базовый URL зависит от типа подключения. Для AI Gateway используйте `https://api.timeweb.ai/v1`, для AI-агента — базовый URL вашего агента; - `model` — если используете AI-агента, укажите имя модели из настроек агента. При использовании AI Gateway укажите имя нужной модели, например `openai/gpt-5-nano`. Корректное имя модели можно найти в разделе «[Подключение](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway#poluchenie-parametrov-podklucheniya)»; - `env_key` — укажите название переменной окружения, в которой будет храниться API-ключ; - `name` — при необходимости измените отображаемое имя провайдера. Codex берет ключ из переменной окружения, указанной в параметре `env_key`. Если в конфигурации используется `TIMEWEB_CLOUD_API_KEY`, выполните: Linux ```shell export TIMEWEB_CLOUD_API_KEY="ваш_API-ключ" ``` macOS ```bash launchctl setenv TIMEWEB_CLOUD_API_KEY "ваш_API-ключ" ``` Windows ```bash setx TIMEWEB_CLOUD_API_KEY "ваш_API-ключ" ``` После этого запустите Codex: ```bash codex ``` При использовании десктопной версии перезапустите приложение. Добавленная модель будет доступна как в Codex CLI, так и в десктопном приложении Codex. В десктопной версии модель отобразится в окне чата. ![Выбор модели в Codex](https://content.timeweb.com/assets/ce3dd717-18d3-49e4-bd17-e7b2734d34fa.png?width=2522&height=1546) _Выбор модели в интерфейсе [Codex](https://openai.com/ru-RU/codex/)_ # OpenCode Source: https://timeweb.cloud/docs/ai-agents/agent-environments/opencode OpenCode — это AI-ассистент для разработки. С его помощью можно задавать вопросы по проекту, редактировать код и выполнять команды без переключения в отдельный интерфейс. К OpenCode можно подключить как AI-агента, так и AI Gateway. В первом случае вы работаете с уже настроенным агентом, во втором — обращаетесь к модели напрямую. ## Установка OpenCode OpenCode можно установить на Windows, Linux или macOS. Доступны два варианта: TUI/CLI и десктопное приложение. Чтобы установить TUI/CLI-версию, используйте один из способов: curl ```bash curl -fsSL https://opencode.ai/install | bash ``` npm ```bash npm i -g opencode-ai ``` bun ```bash bun add -g opencode-ai ``` brew ```bash brew install anomalyco/tap/opencode ``` paru ```bash paru -S opencode ``` Десктопную версию можно установить через Homebrew: ```bash brew install --cask opencode-desktop ``` Также можно скачать бинарный файл с [официального сайта OpenCode](https://opencode.ai/ru/download) и установить его вручную. ## Предварительные требования Подключить к OpenCode можно как AI-агента, так и AI Gateway. Если вы хотите подключить AI-агента, вам потребуется: - [Базовый URL агента](https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api#bazovyj-url); - [API-ключ](https://timeweb.cloud/docs/ai-agents/manage-agents/api-access-key). Для подключения AI Gateway понадобится: - Базовый URL: `https://api.timeweb.ai/v1`; - [API-ключ](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway#sozdanie-api-klucha). ## Настройка подключения через терминал Этот способ подойдет, если вы используете TUI/CLI-версию OpenCode. Создайте или отредактируйте файл конфигурации opencode.json. Файл можно разместить: - в корне проекта — настройки будут применяться только для этого проекта; - глобально по пути `~/.config/opencode/opencode.json` — настройки будут доступны во всех проектах. В файле укажите конфигурацию для подключения: ```js { "$schema": "https://opencode.ai/config.json", "provider": { "timeweb-cloud": { "npm": "@ai-sdk/openai-compatible", "name": "Timeweb Cloud", "options": { "baseURL": "https://api.timeweb.ai/v1" }, "models": { "openai/gpt-5-mini": { "name": "openai/gpt-5-mini" } } } }, "model": "openai/gpt-5-mini" } ``` В конфигурации измените: - `baseURL` — если хотите использовать AI-агента, укажите базовый URL вашего агента. При использовании AI Gateway менять не нужно; - `models` — укажите модели, которые будут доступны в OpenCode; - `model` — если используете AI-агента, укажите имя модели из настроек агента. При использовании AI Gateway укажите имя нужной модели, например `openai/gpt-5-nano`. Корректное имя модели можно найти в разделе «[Подключение](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway#poluchenie-parametrov-podklucheniya)»; - `name` — при необходимости измените отображаемое имя провайдера. Сохраните и закройте файл. Теперь необходимо указать API-ключ. Для этого запустите OpenCode в терминале: ```bash opencode ``` В открывшемся TUI-интерфейсе выполните команду: ```bash /connect ``` С помощью стрелок прокрутите список провайдеров вниз и выберите пункт «Other». Укажите идентификатор провайдера. Он должен совпадать с названием провайдера в `opencode.json`, в нашем примере — `timeweb-cloud`. Вставьте API-ключ в поле ввода. OpenCode сохранит ключ в зашифрованном глобальном файле авторизации. После этого можно начать использовать OpenCode. Запустите агента снова, если ранее выходили из него. Чтобы выбрать добавленную модель, введите: ```bash /model ``` В поиске укажите имя провайдера, которое вы задали при добавлении. Затем проверьте подключение, отправив любое сообщение в чат. ## Настройка подключения в десктопном приложении Чтобы подключить провайдера в десктопном приложении: 1. Нажмите на иконку шестеренки. 2. Перейдите во вкладку «Провайдеры». 3. Пролистайте меню вниз и выберите пункт «Пользовательский провайдер». 4. Нажмите «Подключить». ![Настройки OpenCode](https://content.timeweb.com/assets/c7bdc033-6fd5-4fcb-8faf-05a53b3e4b63.png?width=2536&height=1510) _Интерфейс настройки [OpenCode](https://opencode.ai/)_ Укажите параметры подключения: - ID провайдера — произвольное имя, по которому можно будет найти провайдера; - Отображаемое имя — название провайдера в интерфейсе; - Базовый URL — базовый URL агента или AI Gateway; - API-ключ — ключ для доступа к агенту или AI Gateway; - Модели — список моделей, которые будут доступны для выбора. При использовании AI Gateway имя модели нужно указать в формате AI Gateway, например `openai/gpt-5-nano`. Корректное имя модели можно найти в разделе «[Подключение](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway#poluchenie-parametrov-podklucheniya)». При использовании AI-агента можно указать произвольное имя модели. ![Настройка OpenCode](https://content.timeweb.com/assets/6637fd58-0bb0-4a2f-b5f5-6e446ea5b02b.png?width=2548&height=1506) _Интерфейс настройки [OpenCode](https://opencode.ai/)_ Нажмите «Отправить», чтобы сохранить настройки. После этого найдите и выберите модель в чате. Проверьте, что подключение настроено корректно, отправив произвольный запрос. # Roo Code Source: https://timeweb.cloud/docs/ai-agents/agent-environments/roocode AI-агенты можно подключать к любым инструментам с поддержкой OpenAI API, в том числе к расширениям для VS Code. Например, через Roo Code агент может взаимодействовать с редактором: видеть файлы проекта, редактировать код и выполнять команды в терминале. > [!NOTE] > С 15 мая 2026 года поддержка Roo Code прекращена. В качестве альтернативы можно [использовать Cline](https://timeweb.cloud/docs/ai-agents/agent-environments/cline) — расширение с похожим функционалом и интерфейсом. ## Установка Roo Code Для установки расширения: 1. Откройте VS Code. 2. Перейдите в раздел «Extensions». 3. Найдите расширение Roo Code и установите его. ![Scr 20260119 Kdpu](https://content.timeweb.com/assets/581b3a15-5886-4dfc-8950-cb7ab95ac052.png?width=2726&height=1626) _Страница Roo Code в разделе «Extensions» интерфейса [VS Code](https://code.visualstudio.com/)_ После установки в боковой панели появится вкладка Roo Code с интерфейсом чата. ## Настройка подключения к AI-агенту Для настройки вам понадобится: - [Базовый URL агента](https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api#bazovyj-url), - [API-ключ](https://timeweb.cloud/docs/ai-agents/manage-agents/api-access-key). Чтобы настроить подключение: 1. Перейдите во вкладку «Roo Code». 2. Нажмите на иконку шестеренки, чтобы открыть настройки. 3. Перейдите в раздел «Providers». 4. В настройках провайдера укажите: - **API Provider**: `OpenAI Compatible`; - **Base URL**: базовый URL; - **API Key**: ваш API-ключ; - **Model**: имя модели, указанное в настройках агента. 5. При необходимости настройте параметры генерации: - **Context Window Size** — объем истории диалога, передаваемой в запросе; - **Max Completion Tokens** — максимальное число токенов в ответе. 6. Нажмите «Save», затем — стрелку назад, чтобы вернуться к чату. ![Scr 20260119 Kelt 2](https://content.timeweb.com/assets/1a5796c9-57e3-4d65-9304-90a7c94601cc.png?width=2806&height=1812) _Настройки Roo Code в интерфейсе [VS Code](https://code.visualstudio.com/)_ Теперь вы можете отправлять сообщения агенту прямо из редактора. Дополнительно вы можете изменить поведение агента, например, чтобы он отвечал по-русски. Для этого: 1. Перейдите в настройки Roo Code. 2. Откройте раздел «Prompts». 3. Добавьте в промпт фразу: `Отвечай по-русски`. ![Scr 20260119 Kkpd](https://content.timeweb.com/assets/4a12bb69-c9b0-4656-b7a2-d84a102bb606.png?width=2798&height=1766) _Настройки Roo Code в интерфейсе [VS Code](https://code.visualstudio.com/)_ # MCP-серверы Source: https://timeweb.cloud/docs/ai-agents/mcp-server MCP (Model Context Protocol) — это протокол, который позволяет AI-агенту работать не только с собственными знаниями, но и с внешними инструментами. Например, с его помощью агент может выполнять поиск в интернете, работать с документацией, подключаться к сервисам вроде Notion или управлять браузером и использовать полученные результаты при формировании ответа пользователю. MCP-сервер выступает посредником между AI-агентом и внешними сервисами. Сам агент не знает, как именно устроены эти сервисы и как с ними работать. Но он знает, что у MCP-сервера есть набор доступных инструментов, которыми можно воспользоваться. #### Как AI-агент узнает, какие инструменты доступны Когда AI-агент подключается к MCP-серверу, первое, что он делает, — запрашивает список доступных инструментов. В ответ сервер возвращает описание того, что он умеет: названия функций, их назначение, какие параметры они принимают и в каком формате возвращают результат. На этом этапе формируется контракт между агентом и MCP-сервером. Агент понимает, какие действия ему доступны, и может выбирать, какой инструмент использовать в той или иной ситуации. ![2](https://content.timeweb.com/assets/23b3f84f-b776-4b04-a0a5-1b241a0ad046.png?width=1920&height=927) Этот список инструментов можно получить и вручную — обычным HTTP-запросом. Например, у MCP-сервера exa search, который предоставляет AI-агенту доступ к поиску в интернете, можно запросить список инструментов так: ```bash curl -s https://mcp.exa.ai/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }' \ | sed -n 's/^data: //p' \ | jq ``` В ответ сервер вернет список инструментов. В нем можно увидеть, какие функции доступны, для чего они предназначены и какие параметры ожидают. Например, один инструмент отвечает за поиск по интернету, другой — за исследование компаний, третий — за поиск кода и документации. Для каждого инструмента явно описано, какие данные нужно передать на вход. Важно, что AI-агент не «угадывает» эти параметры и не придумывает формат запроса. Он работает строго по описанию, которое получил от MCP-сервера. #### Как выглядит работа с MCP при запросе пользователя После подключения и получения списка инструментов AI-агент «держит в голове», какие инструменты ему доступны и в каких случаях их можно использовать. Пользователь задает вопрос AI-агенту. Если агент может ответить на него сразу — он просто формирует ответ. Но если информации не хватает, агент понимает, что ему нужно воспользоваться внешним инструментом, и формирует запрос к MCP-серверу. > [!NOTE] > Можно явно указать агенту использовать инструменты. Например, при подключении Context7 в конце промпта можно написать: «Используй Context7», — и агент будет использовать инструменты этого MCP-сервера, а не придумывать информацию. Рассмотрим взаимодействие с MCP-сервером на примере exa search. Пользователь задает вопрос AI-агенту. Если агент понимает, что не может ответить сразу — например, потому что ему не хватает актуальной информации, — он решает обратиться к инструменту поиска и формирует запрос к MCP-серверу. MCP-сервер выполняет функцию поиска в exa search и возвращает AI-агенту структурированный результат. Дальше агент читает найденное, выбирает главное и уже на основе этих данных формирует ответ пользователю. ![1](https://content.timeweb.com/assets/6e1ff26a-544c-4b08-861d-1ecedff56f97.png?width=1920&height=927) MCP-сервер не отвечает пользователю напрямую и не принимает решений. Он выполняет конкретные функции и возвращает результат. Вся логика, интерпретация данных и генерация ответа остается на стороне AI-агента. ## Настройка подключения Вы можете подключить MCP-сервер вручную по этой инструкции или воспользоваться [галереей MCP-серверов](https://timeweb.cloud/docs/ai-agents/mcp-server#galereya-mcp-serverov), если в ней есть нужный вам сервер. MCP-серверы бывают двух типов: stdio и Streamable HTTP. Условно их можно разделить на локальные (stdio) и удаленные (Streamable HTTP). Подключать к агентам можно только удаленные серверы — Streamable HTTP. Чтобы добавить новое подключение: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и откройте вкладку «MCP-серверы». 2. Нажмите «Создать» или «Добавить». ![Scr 20260210 Koqx](https://content.timeweb.com/assets/4ed5644c-7b06-45e8-890c-fd181a26e40e.png?width=2080&height=1486) 3. Заполните поля: - Bearer-токен; - OAuth 2.0; - Кастомные заголовки; - Без авторизации. - Название — произвольное имя подключения; - Комментарий — необязательное поле; - Адрес сервера — URL, по которому доступен MCP-сервер; - Протокол — HTTP или SSE; - Авторизация — выберите способ аутентификации: 5. Нажмите «Добавить сервер». ![Scr 20260210 Kpbp](https://content.timeweb.com/assets/b8eadd6f-8431-4135-bd54-f39e0d180ced.png?width=2508&height=1464) После этого новое подключение появится в списке инструментов. ## Галерея MCP-серверов В панели управления доступны готовые к установке MCP-серверы — для их подключения достаточно указать только токены авторизации для нужного сервиса. ![MCP (2)](https://content.timeweb.com/assets/f1d881fb-eec0-4ce2-b6e5-f1573bc7e791.png?width=1666&height=869) ## Управление MCP-серверами агента Чтобы подключить сервер к конкретному агенту: 1. Перейдите в раздел «ИИ-сервисы» → «Агенты» и кликните на нужного агента. 2. Перейдите во вкладку «Управление». 3. В строке «MCP-серверы» нажмите «Изменить». ![Scr 20260210 Kpyk](https://content.timeweb.com/assets/7dd4e73b-4390-49cc-abf5-60088571436c.png?width=2140&height=1474) 3. В открывшемся окне выберите уже созданный MCP-сервер или нажмите «Добавить новый». 4. В этом же окне можно выбрать инструменты, которые будут использоваться агентом. Для этого нажмите на стрелку рядом с подключенным MCP-сервером. ![Scr 20260210 Kqvs](https://content.timeweb.com/assets/59cf46ed-e7a8-4632-a884-4b516872fe35.png?width=2526&height=1478) Чтобы отвязать MCP-сервер от агента, в этом же окне нажмите на кнопку «Удалить MCP-сервер». К одному агенту можно подключить несколько MCP-серверов. Одно подключение может использоваться несколькими агентами. ## Использование После подключения MCP-сервера агент будет использовать его функции как при работе через OpenAI-совместимый API, так и в интерфейсе виджета. При использовании OpenAI-совместимого API подключенные MCP-серверы применяются только в случае, если в запросе не передается параметр `tools` в явном виде. Потоковая передача данных (SSE) пока не поддерживается для агентов с подключенными MCP-серверами. # Timeweb Cloud MCP Source: https://timeweb.cloud/docs/ai-agents/timeweb-cloud-mcp MCP — это протокол, который позволяет AI-агентам работать с внешними инструментами и сервисами. Timeweb Cloud MCP дает агентам доступ к инфраструктуре в Timeweb Cloud через MCP-интерфейс: агент может получать данные, выполнять действия с ресурсами и использовать эти возможности в продуктах и агентских сценариях. ## Ограничения При работе с Timeweb Cloud MCP учитывайте, что: - методы удаления ресурсов не поддерживаются; - мутирующие методы требуют подтверждения перед выполнением; - перед выполнением действия агент уточнит в чате, действительно ли вы хотите его совершить. ## Подключение Для подключения Timeweb Cloud MCP нужен [API-токен Timeweb Cloud](https://timeweb.cloud/docs/account-management/token). Получить его можно во вкладке «[API и Terraform](https://timeweb.cloud/my/api-keys)». Ограничения прав, заданные для токена, отразятся и на работе MCP. Если агент не должен иметь доступ к какому-либо разделу, ограничьте доступ в настройках токена. Вы можете подключить Timeweb Cloud MCP к AI-агентам Timeweb Cloud или к сторонним агентам с поддержкой MCP. ## Подключение к AI-агентам Timeweb Cloud Чтобы подключить Timeweb Cloud MCP к AI-агенту: 1. Перейдите во вкладку «MCP-серверы» в разделе «ИИ-сервисы». 2. Выберите «Timeweb Cloud MCP». ![Scr 20260603 Pxhr](https://content.timeweb.com/assets/5cda5af3-ef75-4c1c-b9b8-90a20b9eea3a.png?width=2196&height=1652) 3. В открывшемся окне укажите полученный ранее токен в поле «API-токен». 4. Нажмите «Установить». После подключения MCP-сервер будет доступен при работе с агентом в чате и через API. При работе через AI Gateway MCP-сервер доступен не будет. ## Подключение к сторонним агентам Timeweb Cloud MCP можно подключить к сторонним агентам с поддержкой удаленных MCP-серверов. URL MCP-сервера: ```shell https://timeweb.cloud/api/v1/mcp ``` Для авторизации используйте API-токен Timeweb Cloud. Общий пример конфигурации: ```js { "mcpServers": { "timewebCloud": { "type": "http", "url": "https://timeweb.cloud/api/v1/mcp", "headers": { "Authorization": "Bearer TIMEWEB_CLOUD_TOKEN" } } } } ``` ### Добавление токена в переменные окружения Чтобы не указывать токен в каждом конфигурационном файле вручную, добавьте его в переменную окружения `TIMEWEB_CLOUD_TOKEN`. Замените `ваш_токен` на API-токен, полученный ранее. macOS Откройте терминал и выполните команды: ```shell launchctl setenv TIMEWEB_CLOUD_TOKEN "ваш_токен" ``` Windows Откройте PowerShell и выполните команду: ```shell [Environment]::SetEnvironmentVariable( "TIMEWEB_CLOUD_TOKEN", "ваш_токен", "User" ) ``` После этого закройте PowerShell и откройте его заново. Linux Откройте терминал и выполните команды: ```shell echo 'export TIMEWEB_CLOUD_TOKEN="ваш_токен"' >> ~/.bashrc source ~/.bashrc ``` ### Настройка Claude Code Для настройки MCP нужна консольная версия Claude Code. Это не то же самое, что десктопное приложение Claude Code или Cowork: они могут быть установлены, но команда `claude` при этом может отсутствовать. Чтобы проверить установку, откройте терминал или PowerShell и выполните команду: ```shell claude --version ``` Если команда выводит номер версии, переходите к подключению MCP-сервера. Если терминал пишет, что команда не найдена, установите Claude Code CLI. #### Установка Claude Code CLI macOS Выполните команду: ```shell curl -fsSL https://claude.ai/install.sh | bash ``` Windows Откройте PowerShell и выполните команду: ```shell irm https://claude.ai/install.ps1 | iex ``` После установки закройте терминал, откройте его заново и снова проверьте: ```shell claude --version ``` Если установщик сообщит, что каталог `.local\bin` не добавлен в `PATH`, добавьте его командой: ```shell setx PATH "$($env:PATH);C:\Users\$env:USERNAME\.local\bin" ``` Затем закройте PowerShell, откройте его заново и повторите проверку. #### Подключение MCP-сервера Добавьте Timeweb Cloud MCP: ```shell claude mcp add-json timewebCloud '{"type":"http","url":"https://timeweb.cloud/api/v1/mcp","headers":{"Authorization":"Bearer ${TIMEWEB_CLOUD_TOKEN}"}}' ``` Проверьте, что сервер добавлен: ```shell claude mcp list ``` Внутри Claude Code можно проверить состояние MCP-серверов командой: ```shell /mcp ``` ### Настройка Codex Codex хранит настройки MCP в файле `~/.codex/config.toml`. Откройте или создайте этот файл и добавьте конфигурацию: ```shell [mcp_servers.timewebCloud] url = "https://timeweb.cloud/api/v1/mcp" bearer_token_env_var = "TIMEWEB_CLOUD_TOKEN" ``` Проверить подключение можно через настройки. Нажмите «Настройки» → «Настройки» → «Серверы MCP» — в списке должно появиться новое подключение timewebCloud. ### Настройка Cursor Cursor читает настройки MCP из файла `mcp.json`. Для глобального подключения создайте или откройте файл: ```shell ~/.cursor/mcp.json ``` Для подключения только в рамках одного проекта создайте файл: ```shell .cursor/mcp.json ``` Добавьте конфигурацию: ```shell { "mcpServers": { "timewebCloud": { "url": "https://timeweb.cloud/api/v1/mcp", "headers": { "Authorization": "Bearer ${env:TIMEWEB_CLOUD_TOKEN}" } } } } ``` Перезапустите Cursor. После этого агент Cursor сможет использовать инструменты Timeweb Cloud MCP, если они подходят для запроса пользователя. Проверить подключение можно в настройках MCP: 1. Нажмите `Ctrl + Shift + P`. 2. Выполните команду MCP: Open MCP Settings. 3. Найдите сервер `timewebCloud` в списке. 4. Проверьте его статус: - - `Connected` — сервер подключен; - `Connecting` — идет подключение; - `Error` или `Disconnected` — есть проблема с подключением. ## Проверка подключения После подключения MCP-сервера проверьте, подключается ли он корректно. В чате с агентом попросите перечислить список доступных инструментов: ```shell Какие инструменты MCP тебе доступны для работы с Timeweb Cloud? Перечисли все инструменты. ``` При корректном подключении агент выведет список инструментов Timeweb Cloud MCP. ![Scr 20260603 Qcqn](https://content.timeweb.com/assets/8d33c61d-59af-4c0d-8918-0f03fdc5d2f3.png?width=1932&height=1778) Если что-то не работает, попросите агента проверить настройки MCP и подсказать, в чем ошибка. # AI-решения Source: https://timeweb.cloud/docs/ai-agents/ai-solutions AI-решения — сервис для запуска готовых AI-агентов. Вы выбираете решение и модель, а сервис автоматически создает облачный сервер и выполняет установку. Вам не придется настраивать сервер и агента вручную. Сейчас для установки доступен OpenClaw. Работать с агентом можно в чате в панели управления или через подключенного Телеграм-бота. ## Особенности работы - Для каждого решения создается облачный сервер с фиксированной конфигурацией. Изменить ее нельзя. - Локация сервера выбирается случайным образом. - Подключение к серверу по SSH и управление им из панели управления недоступны. - К серверу подключается публичный IP-адрес. - Агент запускается в Docker-контейнере и не имеет прямого доступа к облачному серверу, на котором работает. ## Тарификация Стоимость AI-решения складывается из трех составляющих: - Облачный сервер и публчиный IP-адрес. Плата за сервер и публичный IP фиксирована и списывается каждый час. - Ключ AI Gateway. Стоимость ключа составляет 1 ₽ в месяц. - Токены. Оплачиваются по факту использования. Стоимость зависит от выбранной модели и количества потраченных входящих и исходящих токенов. В разделе «[Подключенные сервисы](https://timeweb.cloud/my/finances/services)» AI-решение отображается как единый сервис с общей стоимостью всех составляющих. > [!NOTE] > При приостановке решения сервер продолжает тарифицироваться по обычной стоимости. ## Создание AI-решения Чтобы создать AI-решение: 1. Перейдите в раздел «ИИ-сервисы» → «AI-решения» и нажмите «Добавить». 2. Выберите OpenClaw и модель, которую будет использовать агент. Модель можно будет изменить в дальнейшем. ![Выбор модели](https://content.timeweb.com/assets/c7c09a49-9bb9-4e8f-97d1-32b8e0187d73.png?width=2174&height=1824) 3. Укажите имя агента и выберите проект. При необходимости добавьте комментарий. 4. Проверьте выбранные параметры, ознакомьтесь с условиями использования сервиса и согласитесь с ними. 5. Нажмите «Установить». Откройте созданное решение в разделе «ИИ-сервисы» → «AI-решения». Когда установка завершится, на вкладке «Чат» можно будет отправить сообщение агенту. ## Работа в чате Чтобы начать общение с агентом: 1. Перейдите в раздел «ИИ-сервисы» → «AI-решения» и кликните на нужное решение. 2. Откройте вкладку «Чат». 3. Введите сообщение с описанием задачи и отправьте его агенту. ![Чат с решением](https://content.timeweb.com/assets/ad732038-313d-41fe-a062-56b8475c8fb8.png?width=2092&height=1564) ## Управление AI-решением На вкладке «Управление» можно изменить модель, перевыпустить ключ AI Gateway и перейти к статистике использования токенов. ![Управление](https://content.timeweb.com/assets/1e316f12-5930-4379-9d1d-0cab63296923.png?width=2176&height=1568) ### Смена модели 1. Перейдите в раздел «ИИ-сервисы» → «AI-решения» и кликните на нужное решение. 2. На вкладке «Управление» нажмите «Изменить» в строке «Конфигурация». 3. Выберите нужную модель. ![Выбор модели](https://content.timeweb.com/assets/0b37bcd3-594b-4e61-93ab-2fb67e260d2e.png?width=1984&height=1584) 4. Нажмите «Сохранить». ### Расход и лимит токенов Чтобы посмотреть расход токенов: 1. Откройте нужное AI-решение и перейдите на вкладку «Управление». 2. В строке «AI Gateway ключ» нажмите «Дашборд ключа». В панели управления ключом можно посмотреть статистику использования токенов и задать лимит их потребления. ### Перевыпуск ключа AI Gateway Чтобы перевыпустить ключ: 1. Откройте нужное AI-решение и перейдите на вкладку «Управление». 2. В строке «AI Gateway ключ» нажмите «Перевыпустить». Новый ключ автоматически применится к решению. Указывать его в настройках вручную не требуется. ### Приостановка и удаление Созданное решение можно приостановить или удалить. Чтобы приостановить решение: 1. Перейдите в раздел «ИИ-сервисы» → «AI-решения» и кликните на нужное решение. 2. Нажмите на значок паузы справа вверху. При приостановке сервер продолжает тарифицироваться по обычной стоимости. Удалить решение можно двумя способами: - На странице решения нажмите на значок корзины справа вверху. - В разделе «ИИ-сервисы» → «AI-решения» нажмите на три точки рядом с нужным решением и выберите «Удалить». ## Подключение Телеграм-бота Вы можете подключить Телеграм-бота, чтобы общаться с агентом через мессенджер. К одному AI-решению можно подключить только одного Телеграм-бота. Предварительно создайте бота при помощи [BotFather](https://t.me/BotFather) в Телеграме и сохраните полученный API-токен. Чтобы подключить бота: 1. Перейдите в раздел «ИИ-сервисы» → «AI-решения» и кликните на нужное решение. 2. На вкладке «Интеграции» нажмите «Подключить». 3. В открывшемся окне укажите API-токен бота, полученный от BotFather, и нажмите «Добавить». ![Указание токена](https://content.timeweb.com/assets/4e75cf52-d93b-4858-ad1c-c617374ad41e.png?width=2764&height=1780) 4. Откройте чат с вашим ботом в Телеграме с аккаунта, которому нужен доступ к агенту, и отправьте любое сообщение. В ответ бот пришлет код для интеграции. ![Сообщение из бота](https://content.timeweb.com/assets/ea81d87d-b0a7-41d6-b9ad-bb37ea8e3ecc.png?width=982&height=522) 5. Скопируйте код, укажите его в панели управления Timeweb Cloud и нажмите «Подтвердить». ![Подключение бота](https://content.timeweb.com/assets/94f27115-c11f-4680-9a7e-4e1ba20f75cb.png?width=2706&height=1226) После подтверждения кода общаться с агентом через бота сможет только тот пользователь Телеграма, который получил этот код. Другим пользователям доступ не предоставляется. Отправьте боту сообщение с подключенного аккаунта, чтобы проверить его работу. # Зоны доступности Source: https://timeweb.cloud/docs/zony-dostupnosti Зона доступности — это изолированная часть инфраструктуры внутри конкретного региона. Если упрощать, можно воспринимать зону доступности как конкретный дата-центр. > [!NOTE] > Мы постепенно отказываемся от концепции зон доступности. Благодаря новой реализации сетей, мы можем обеспечить связность сервисов внутри одного региона вне зависимости от зоны доступности. > > Сейчас выбор конкретной зоны доступности доступен только клиентам, у которых уже созданы сервисы в разных зонах. Для новых пользователей и тех, у кого существующие сервисы созданы в одной зоне, будет предлагаться одна общая зона доступности. Зона доступности отображается как на этапе создания сервиса: ![E28aefb9 5055 4301 Af05 A23751564640](https://content.timeweb.com/assets/540aa9fb-f0aa-4d42-8259-e743062e7dc0?width=1462&height=585) Так и в дальнейшем, при наведении курсора на флажок с обозначением региона: ![A3bfb803 3922 46b8 9db6 Be49d7056c46](https://content.timeweb.com/assets/80faef37-d15b-42e9-bec3-db31e7a73064?width=1471&height=557) # Сервисы и зоны доступности Source: https://timeweb.cloud/docs/zony-dostupnosti/servisy-i-zony-dostupnosti В таблице приведены все существующие зоны доступности и сервисы, которые можно в них заказать. > [!NOTE] > IPv6 недоступны для сервисов в приватных сетях OVN, вне зависимости от зоны. Ниже перечислены все доступные регионы и соответствующие зоны. | **Регион** | **Зона доступности** | **Локация (для Terraform)** | | --- | --- | --- | | Санкт-Петербург | SPB-1 | \--- | | Санкт-Петербург | SPB-2 | \--- | | Санкт-Петербург | SPB-3 | ru-1 | | Санкт-Петербург | SPB-4 | \--- | | Москва | MSK-1 | ru-3 | | Новосибирск | NSK-1 | ru-2 | | Амстердам, Нидерланды | AMS-1 | nl-1 | | Франкфурт, Германия | FRA-1 | de-1 | | Алматы, Казахстан | ALA-1 | kz-1 | | Буффало, штат Нью-Йорк, США | BUF-2 | \--- | | Уэстбери, штат Нью-Йорк, США | \--- | \--- | | Хельсинки, Финляндия | \--- | \--- | | Париж, Франция | \--- | \--- | | Стамбул, Турция | \--- | \--- | | Лондон, Великобритания | \--- | \--- | ## Облачные серверы | **Зона доступности** | **Виртуальные серверы** | **Образы сервера** | | --- | --- | --- | | SPB-1 | ✅ | ✅ | | SPB-2 | ✅ | ✅ | | SPB-3 | ✅ | ✅ | | SPB-4 | ✅ | ✅ | | MSK-1 | ✅ | ✅ | | NSK-1 | ✅ | ✅ | | AMS-1 | ✅ | ✅ | | FRA-1 | ✅ | ✅ | | ALA-1 | ✅ | ✅ | | BUF-2 | ✅ | ❌ | ## Выделенные серверы | **Регион** | **Выделенные серверы** | | --- | --- | | Санкт-Петербург | ✅ | | Москва | ✅ | | Новосибирск | ❌ | | Алматы | ❌ | | Амстердам | ✅ | | Франкфурт | ✅ | | Хельсинки | ✅ | | Стамбул | ✅ | | Париж | ✅ | | Лондон | ✅ | | Уэстбери, Нью-Йорк | ✅ | ## Сети | **Зона доступности** | **Приватная сеть** | **Защита от DDOS** | **IPv6** | **Firewall** | **Балансировщик нагрузки** | | --- | --- | --- | --- | --- | --- | | SPB-1 | ✅ | ✅ | ✅ | ✅ | ❌ | | SPB-2 | ❌ | ✅ | ✅ | ✅ | ❌ | | SPB-3 | ✅ | ✅ | ✅ | ✅ | ✅ | | SPB-4 | ✅ | ✅ | ✅ | ✅ | ✅ | | MSK-1 | ✅ | ✅ | ✅ | ✅ | ✅ | | NSK-1 | ❌ | ❌ | ❌ | ✅ | ❌ | | AMS-1 | ✅ | ❌ | ✅ | ✅ | ✅ | | FRA-1 | ✅ | ❌ | ❌ | ✅ | ✅ | | ALA-1 | ❌ | ❌ | ✅ | ✅ | ❌ | | BUF-2 | ❌ | ❌ | ✅ | ✅ | ❌ | ## **Облачные сервисы** | **Зона доступности** | **Базы данных** | **Хранилище S3** | **Kubernetes** | **App Platform** | | --- | --- | --- | --- | --- | | SPB-1 | ❌ | ✅ | ❌ | ❌ | | SPB-2 | ❌ | ✅ | ❌ | ❌ | | SPB-3 | ✅ | ✅ | ✅ | ✅ | | SPB-4 | ❌ | ✅ | ❌ | ❌ | | MSK-1 | ✅ | ❌ | ✅ | ✅ | | NSK-1 | ❌ | ❌ | ❌ | ✅ (только frontend) | | AMS-1 | ✅ | ❌ | ✅ | ✅ | | FRA-1 | ✅ | ❌ | ❌ | ✅ | | ALA-1 | ❌ | ❌ | ❌ | ✅ (только frontend) | | BUF-2 | ❌ | ❌ | ❌ | ❌ | # Virtual Private Cloud Source: https://timeweb.cloud/docs/vpc VPC (virtual private cloud) — это бесплатный сервис приватных сетей, который позволяет связывать облачные ресурсы между собой, изолировать их от других сервисов на аккаунте, управлять их сетевыми настройками и доступом в интернет, задавать размеры сетей по своему усмотрению и назначать IP-адреса для сервисов из диапазона адресов приватной сети. В приватные сети можно объединять: - облачные серверы линейки Premium NVMe, - базы данных, - балансировщики нагрузки, - кластеры Kubernetes (только для BGP-сетей). В настоящий момент мы поддерживаем два типа сетей: OVN и BGP. Все новые создаваемые сети — [BGP](https://timeweb.cloud/docs/vpc/managing-bgp-networks). Сети OVN, которые были созданы ранее, сохранятся на вашем аккаунте, и вы сможете управлять ими, как прежде. В панели управления сети разных типов отмечаются разными иконками: ![72544d50 D49e 4055 Ba47 958ba51b8dfa](https://content.timeweb.com/assets/09eb141b-845d-4113-9031-e084978ce083.png?width=1112&height=542) # Управление сетями OVN Source: https://timeweb.cloud/docs/vpc/managing-ovn-networks Управлять приватными сетями и просматривать список всех созданных сетей вы можете в панели управления в разделе «Сети» — «Приватные сети». ![B74545fe C266 4b9f Aaca 75a587baf4c5](https://content.timeweb.com/assets/881b9cfb-4306-460a-a16a-c0f1204b3872?width=1461&height=743) ## Создание приватной сети > [!NOTE] > Создать новую приватную сеть OVN больше невозможно. Все новые сети создаются на базе [BGP](https://timeweb.cloud/docs/vpc/managing-bgp-networks). ## Добавление сервисов в приватную сеть Добавить сервер или облачный сервис в приватную сеть можно из раздела «Сети» — «Приватные сети», со страницы существующего VDS-сервера, а также при создании нового сервиса. ### Из раздела приватных сетей В разделе «Приватные сети» вы можете добавить в уже созданную сеть: - новый облачный сервис (базу данных, балансировщик или сервер), - существующий VDS-сервер. #### **Добавление нового сервиса** 1. В разделе «Приватные сети» и кликните на нужную сеть. 2. В блоке «Сервисы» нажмите «Добавить». 3. Выберите опцию «Новый». 4. Выберите тип сервиса: сервер, базу данных или балансировщик нагрузки. Список доступных сервисов будет отличаться в зависимости от того, в какой зоне доступности создана данная приватная сеть. ![1dffb7fc Fe4f 4fc2 A240 Dec8cc0b85c2](https://content.timeweb.com/assets/2dfccadb-d9c9-45f5-9263-d4a94bd5ab25?width=1466&height=828) 5. Вы будете переадресованы на страницу создания сервиса, где на шаге «Сеть» уже будет указана нужная сеть. 6. Завершите создание сервиса. Сервис будет создан в зоне доступности приватной сети и добавлен в эту сеть. Приватный IP-адрес для сервиса будет выдан автоматически. #### **Добавление существующего VDS** > [!NOTE] > Если зоны доступности сервера и приватной сети отличаются, публичный IP-адрес сервера потребуется изменить. 1. В разделе «Сети» — «Приватные сети» кликните на нужную сеть. 2. В блоке «Сервисы» нажмите «Добавить». 3. Выберите опцию «Существующий». 4. Выберите нужный сервер из списка. ![Ef8b8c33 6df4 4840 8ac4 61dfd38668e5](https://content.timeweb.com/assets/9e524737-74fd-4145-aaae-716ea306d382?width=1445&height=827) 5. Нажмите «Добавить». 6. Запустится процесс переноса сервера в приватную сеть. Это займет некоторое время: в среднем, 10 ГБ переносится за 1 минуту. На протяжении этого процесса сервер **будет доступен**. После завершения переноса сервер будет перезагружен, его простой составит 5-10 минут. Если сервер был создан в другой зоне доступности, он будет перенесен в зону доступности приватной сети. Приватный адрес будет выдан серверу автоматически, увидеть его можно на странице сети. ### **Со страницы сервера** > [!NOTE] > Если зоны доступности сервера и приватной сети отличаются, публичный IP-адрес сервера потребуется изменить. Чтобы добавить сервер в приватную сеть: 1. На странице сервера перейдите на вкладку «Сеть». 2. В пункте «Приватная сеть» кликните «Включить». ![A235834f 5e9b 4d98 82a7 82e56d9594e3](https://content.timeweb.com/assets/ec7716ea-bf85-48c2-9eeb-67ee9afeb3ad?width=1460&height=1102) 3. Выберите нужную сеть из списка или опцию «Добавить сеть» для создания новой сети. - Если вы создаете новую сеть, вам будет предложен диапазон адресов — можно оставить значение по умолчанию или указать свое. - При добавлении сервера в существующую сеть, ему будет автоматически выдан локальный адрес из диапазона выбранной сети. 5. Нажмите «Подключить». ![730c749e A623 44dc 86d7 7edb1e8710fa](https://content.timeweb.com/assets/1401713e-a63e-4ead-a586-937baa91b3c3?width=1458&height=781) Запустится процесс переноса сервера в приватную сеть. Его продолжительность зависит от размера диска сервера: в среднем, 10 ГБ переносится за 1 минуту. На протяжении всего этого процесса сервер **будет доступен**. После завершения переноса сервер будет перезагружен, его недоступность составит 5-10 минут. Если сервер был создан в другой зоне доступности, он будет перенесен в зону доступности приватной сети. Приватный адрес будет выдан серверу автоматически, увидеть его можно на странице сети в «Приватных сетях» и на вкладке «Сеть» на странице сервера. ### При создании сервиса При создании нового сервера, базы данных или балансировщика в пункте «Сеть» выберите из выпадающего списка нужную приватную сеть. ![27938c68 71e3 4d5d 838d 9f3c01456d19](https://content.timeweb.com/assets/4cf5cbd3-93e5-4f68-ad81-876f4b3c65ac?width=757&height=559) После создания сервиса он будет добавлен в нужную сеть, что отобразится в разделе «Приватные сети». IP-адрес для сервиса будет выдан автоматически. ## Перенос сервисов между сетями > [!NOTE] > Автоматический перенос сервисов, описанный ниже, возможен только между приватными сетями одного типа (из OVN в OVN). > > Для переноса сервера из OVN в BGP его необходимо [удалить из текущей приватной сети](https://timeweb.cloud/docs/vpc/managing-ovn-networks#udalenie-servisov-iz-privatnoj-seti), после чего добавить в нужную сеть BGP. Сервер должен быть создан в том же регионе, что и BGP-сеть. > > Для облачных сервисов перенос из OVN в BGP невозможен. Чтобы перенести сервис в другую сеть: 1. Перейдите на страницу нужного сервиса. 2. На вкладке «Сеть» в блоке «Приватная сеть» кликните «Настроить». 3. Выберите нужную зону доступности в блоке «Регион» (актуально для Санкт-Петербурга). 4. Выберите нужную сеть из списка или опцию «Добавить сеть» для создания новой. 5. Если зоны доступности текущей и новой приватной сети отличаются, публичный IP-адрес сервера будет изменен. Выберите один из существующих IP-адресов либо опцию «Создать публичный IP». 6. Нажмите «Перенести и перезагрузить». ![Bfbf8421 37d7 4169 Bc29 81b121b84159](https://content.timeweb.com/assets/073dcb28-4ac1-4d81-b9b1-040aea8209c1?width=1524&height=1205) Запустится процесс переноса в приватную сеть. Его продолжительность зависит от объема диска: в среднем, 10 ГБ переносится за 1 минуту. Во время переноса сервис будет доступен, а по его завершению — перезагружен. Недоступность составит 5-10 минут. При переносе VDS в приватную сеть в другой зоне доступности его публичный IP-адрес будет изменен. ## Удаление сервисов из приватной сети > [!NOTE] > Удаление из приватной сети доступно только для VDS. Исключить из сети облачный сервис невозможно — но его можно перенести в другую приватную сеть. Чтобы исключить сервер из приватной сети: 1. Перейдите на страницу нужного сервера. 2. На вкладке «Сеть» в блоке «Приватная сеть» кликните «Настроить». 3. Выберите вкладку «Исключить из сети». 4. Выберите зону доступности, в которой должен находиться сервер после исключения из приватной сети (актуально для Санкт-Петербурга). 5. Выберите, какой публичный IP назначить серверу: один из существующих или новый. 6. Нажмите «Исключить и перезагрузить» и на следующем шаге подтвердите действие. ![C418b9a5 C892 406f 8302 44763d0798cd](https://content.timeweb.com/assets/4ccdca39-a00e-49a2-b827-f91c06c05323?width=1529&height=1040) Запустится процесс удаления сервера из данной сети. Его продолжительность зависит от размера диска сервера: 10 ГБ = 1 минута. После завершения процесса сервер будет перезагружен, его недоступность составит 5-10 минут. На сетевой интерфейс будет назначен публичный IP-адрес. ## История действий На вкладке «История» логируются действия с приватной сетью, а именно: - Создание VPC - Создание сервиса в сети - Перенос сервиса из публичной или другой приватной сети - Перенос сервиса в другую приватную сеть - Исключение сервиса из сети при его удалении с аккаунта ![488414f9 Abb6 4e30 86a3 6b7b3d16d84b](https://content.timeweb.com/assets/6cb3b005-b598-4585-bb97-692cb0ebdb0f?width=1460&height=698) ## Удаление приватной сети Можно удалить только сеть, в которую не добавлены никакие сервисы. Сеть с добавленными сервисами удалить невозможно. Для удаления приватной сети: 1. Перейдите в раздел «Сети» — «Приватные сети». 2. Кликните на три точки справа у нужной сети. 3. Нажмите «Удалить приватную сеть». 4. Введите имя сети или код подтверждения, в зависимости от ваших [настроек](https://timeweb.cloud/docs/account-management/notifications#uvedomleniya-pri-udalenii-servisov), чтобы подтвердить удаление. ![B9a039ab D6dd 4bdc B925 405ae29ce573](https://content.timeweb.com/assets/87f5f8af-f73d-42e2-829d-c2f2667ecd4c?width=1462&height=705) # Управление сетями BGP Source: https://timeweb.cloud/docs/vpc/managing-bgp-networks Мы поддерживаем два типа приватных сетей: OVN и BGP. Они имеют определенные инфраструктурные отличия, в связи с чем управление ими также будет отличаться. Информацию по работе с OVN-сетями можно найти [здесь](https://timeweb.cloud/docs/vpc/managing-ovn-networks). В панели управления сети отмечаются разными иконками, чтобы вам было проще в них ориентироваться: ![72544d50 D49e 4055 Ba47 958ba51b8dfa](https://content.timeweb.com/assets/09eb141b-845d-4113-9031-e084978ce083.png?width=1112&height=542) ## Особенности BGP-сетей - На сервере в BGP-сети доступно два интерфейса: с белым IP-адресом и серым. - Для серверов в BGP-сетях доступны IPv6-адреса. - Настраивать маршрутизацию вы можете самостоятельно внутри ОС, без обращения в поддержку. - Настраивать IP-адреса на интерфейсе вы можете по своему усмотрению, вне зависимости от подсети, указанной в панели управления. Скажем, если в панели вы создали сеть 192.168.0.0/24, вы все равно сможете настроить на сервере адреса из сети 10.0.0.0/24. - Базы данных с репликацией (MySQL) и кластеры Kubernetes работают только в BGP-сетях. - В настоящий момент для BGP-сетей недоступен режим «Только исходящий». - BGP-сети доступны только в Санкт-Петербурге, Москве, Германии и Нидерландах. # Создание приватной сети BGP Source: https://timeweb.cloud/docs/vpc/managing-bgp-networks/creating-bgp-networks Создать новую приватную сеть BGP можно в Москве, Санкт-Петербурге, Амстердаме и Франкфурте. Создание новых OVN-сетей недоступно. Чтобы создать новую приватную сеть: 1. Перейдите в раздел «Сети» — «Приватные сети» и нажмите «Создать» или «Добавить». 2. Выберите регион сети: Санкт-Петербург, Москву, Амстердам или Франкфурт 3. Задайте диапазон адресов для подсети: можно оставить значение по умолчанию или указать собственное. 4. Укажите имя сети и комментарий, при необходимости. 5. Нажмите «Создать». ![Scr 20260203 Pgsh](https://content.timeweb.com/assets/b148de25-a147-438d-8f6d-8c0b619a7224.png?width=2094&height=1450) Новая созданная сеть отобразится в списке сетей, и вы сможете перейти к ее настройкам и добавлению сервисов. Новую сеть также можно создать **при создании нового сервиса**. Для этого: 1. При создании нового сервера, базы данных, балансировщика или кластера Kubernetes в пункте «Сеть» выберите вариант «Добавить сеть». 2. Если необходимо, самостоятельно укажите адрес подсети и ее размер или оставьте значения по умолчанию. ![Dfb66700 875d 40d1 946d Af78c546940b](https://content.timeweb.com/assets/7d505ce2-07b4-4c45-a858-ecbaf30a3c1c.png?width=764&height=510) Сеть будет создана одновременно с облачным сервисом, и вы сможете найти ее в разделе «Приватные сети». Сервис будет автоматически добавлен в эту сеть. > [!NOTE] > При создании облачного сервера приватный IP нужно настроить вручную по [этой](https://timeweb.cloud/docs/vpc/managing-bgp-networks/configuring-private-ip) инструкции. # Добавление сервисов в сеть Source: https://timeweb.cloud/docs/vpc/managing-bgp-networks/adding-services-to-bgp Вы можете добавлять сервисы в приватные сети несколькими способами: - Из раздела «Сети» — «Приватные сети». - Со страницы сервиса. - При создании нового сервиса. > [!NOTE] > Кластеры Kubernetes можно добавить в сеть только при создании нового кластера. Если сервис уже добавлен в одну из сетей, его можно перенести в другую по [инструкции](https://timeweb.cloud/docs/vpc/managing-bgp-networks/moving-services-between-bgp). > [!NOTE] > Адреса, у которых последний октет равен 1, 2 или 3, зарезервированы для системных нужд и не могут использоваться для размещения сервисов. ## Добавление любых сервисов Чтобы добавить сервер, базу данных или балансировщик в одну из приватных сетей: 1. В разделе «Приватные сети» и кликните на нужную сеть. 2. В блоке «Сервисы» нажмите «Добавить». 3. Выберите, какой сервис вы добавляете: новый или существующий. - При добавлении нового: - Выберите тип сервиса: сервер, базу данных или балансировщик нагрузки. - Вы будете переадресованы на страницу создания сервиса с нужной сетью. Завершите его создание. Сервис будет автоматически добавлен в выбранную сеть. - При добавлении существующего: - Выберите нужный сервис из выпадающего списка. - Нажмите «Добавить». - Запустится процесс переноса сервера в приватную сеть. В среднем, 10 ГБ диска переносится за 1 минуту. Во время переноса сервис **будет доступен**, а после его завершения — перезагружен. Простой составит 5-10 минут. 4. Если добавленный сервис до этого был в другой сети, то после переноса ему будет нужно назначить приватный IP-адрес вручную. Для серверов — по [нашей инструкции](https://timeweb.cloud/docs/vpc/managing-bgp-networks/configuring-private-ip), для других сервисов — через [поддержку](https://timeweb.cloud/my/support/help-problem). > [!NOTE] > Если вы добавляете сервер, зона доступности которого отличается от зоны доступности приватной сети, публичный IP-адрес сервера потребуется изменить. ## Добавление серверов Существующий облачный сервер можно добавить в нужную сеть не только через «Приватные сети», но и через настройки сервера. Этот способ доступен и для облачных сервисов (баз данных и балансировщиков), однако в данном случае будет выполняться перенос между сетями — так как облачный сервис не может быть создан без приватной сети. Чтобы добавить сервер в приватную сеть: 1. На странице сервера перейдите на вкладку «Сеть». 2. В пункте «Приватная сеть» кликните «Включить». ![79c6614c Dde7 43e6 B466 A477bcda26c7](https://content.timeweb.com/assets/5bcfe87b-1372-4064-a7ea-2162bc938b2a.png?width=1565&height=1288) 3. Выберите нужную BGP-сеть из списка или опцию «Добавить сеть» для создания новой сети. - Если вы создаете новую сеть, вам будет предложен диапазон адресов — можно оставить значение по умолчанию или указать свое. - При добавлении сервера в существующую сеть, ему будет автоматически выдан локальный адрес из диапазона выбранной сети. ![De00d064 Fb5f 4f60 9073 36c56e1ff4b8](https://content.timeweb.com/assets/74a704d4-3b2e-4d8f-bd88-1aeeab9bbd0c.png?width=1540&height=845) 4. Нажмите «Подключить». Запустится перенос сервера в приватную сеть. В среднем, 10 ГБ переносится за 1 минуту. В процессе сервер **будет доступен**, а после завершения переноса — перезагружен. Простой составит 5-10 минут. Если сервер был создан в другой зоне доступности, он будет перенесен в зону доступности приватной сети, а его публичный IP потребуется изменить. ## Добавление в сеть при создании сервиса Вы можете добавить сервис (сервер, базу данных, балансировщик или кластер Kubernetes) в нужную сеть еще на этапе его создания. Для этого в пункте «Сеть» выберите из выпадающего списка нужную приватную сеть. ![E5c7619a 9e57 4ae5 877f F3d060d0a6c6](https://content.timeweb.com/assets/abd57a56-a889-4da8-87b1-35dca5651442.png?width=752&height=488) Сервис будет создан сразу в выбранной вами сети. > [!NOTE] > Кластер Kubernetes будет невозможно перенести в другую приватную сеть после его создания. # Перенос сервисов между сетями Source: https://timeweb.cloud/docs/vpc/managing-bgp-networks/moving-services-between-bgp Сервисы можно переносить между сетями с учетом следующих нюансов: - Автоматический перенос сервисов возможен только между приватными сетями BGP. - Перенести сервис из OVN в BGP невозможно, но можно удалить его из текущей сети OVN, после чего добавить в нужную сеть BGP. Убедитесь, что сервис и BGP-сеть созданы в одном регионе. - После переноса приватный IP для сервиса будет нужно [назначить вручную](https://timeweb.cloud/docs/vpc/managing-bgp-networks/configuring-private-ip). - Кластеры Kubernetes нельзя переносить между любыми сетями. **Чтобы перенести сервис в другую сеть:** 1. Перейдите на страницу нужного сервиса. 2. На вкладке «Сеть» в блоке «Приватная сеть» кликните «Настроить». 3. Выберите нужную сеть из списка или опцию «Добавить сеть» для создания новой. 4. Нажмите «Перенести». ![720406cb F515 43cc Aeff Abacfa79af1e](https://content.timeweb.com/assets/b9819641-923b-47ff-bd05-0412f2cb9e18.png?width=1529&height=820) Запустится процесс переноса в приватную сеть. В среднем, 10 ГБ переносится за 1 минуту. Во время переноса сервис будет доступен, а по его завершению — перезагружен. Недоступность составит 5-10 минут. 5. После переноса сервису назначьте сервису приватный IP-адрес. Это можно сделать: - для облачных серверов — по [нашей инструкции](https://timeweb.cloud/docs/vpc/managing-bgp-networks/configuring-private-ip); - для баз данных и балансировщиков — через [обращение в поддержку](https://timeweb.cloud/my/support/help-problem). # Настройка приватных IP-адресов Source: https://timeweb.cloud/docs/vpc/managing-bgp-networks/configuring-private-ip При работе с BGP-сетями вам может потребоваться назначить приватный IP-адрес для сервера вручную. В зависимости от ОС, установленной на сервере, это можно сделать по одной из инструкций ниже. В примерах мы будем настраивать IP `192.168.0.12/24`. Замените его на нужный вам адрес. ## CentOS, AlmaLinux 1. Проверьте текущие сетевые настройки: ```shell ip a ``` Следующий вывод говорит о том, что на интерфейс `ens8` не назначен приватный IP (отсутствует поле `inet` с приватным адресом): ```shell 3: ens8: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:52:00:43:ee:26 brd ff:ff:ff:ff:ff:ff altname enp0s8 inet6 fe80::6f23:a5e7:7cb1:d9d9/64 scope link noprefixroute valid_lft forever preferred_lft forever ``` 2. Добавьте приватный IP на интерфейс. Сначала узнайте имя соединения: ```shell nmcli connection show ``` ![Screenshot 09 13 24 12:12:06](https://content.timeweb.com/assets/dbb822db-5ffa-4b62-a187-48e133b81b4d.png?width=769&height=58) Найдите имя, которое указано для `ens8`. В нашем случае это — `Wired connection 1`. Добавьте приватный IP к соединению: ```shell nmcli connection modify 'Wired connection 1' ipv4.addresses 192.168.0.12/24 ``` Где: - `192.168.0.12` — это необходимый приватный IP. 3. Проверьте, что IP добавлен: ```shell nmcli connection show 'Wired connection 1' | grep addresses ``` 4. Отключите старые настройки. Проверьте директорию `/etc/sysconfig/network-scripts/`, выполнив команду: ```shell ls /etc/sysconfig/network-scripts/ ``` Если в директории есть файл `ifcfg-ens8`, переместите его в другую директорию, чтобы отключить старые настройки: ```shell mv /etc/sysconfig/network-scripts/ifcfg-ens8 /root/ifcfg-ens8-Backup-$(date +"%Y%m%d") ``` 5. Добавьте конфигурацию для сохранения изменений после перезагрузки. Чтобы изменения сохранились после перезагрузки сервера, добавьте строку `network: {config: disabled}` в файл `/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg`: ```shell echo 'network: {config: disabled}' >> /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg ``` 6. Настройте прослушивание адреса. После перезагрузки сервера адрес может не успеть добавиться, когда другие службы захотят его прослушивать. Поэтому разрешаем `bind` на адреса, которых нет на интерфейсе. Откройте файл `/etc/sysctl.conf`: ```shell vi /etc/sysctl.conf ``` Допишите в него следующие строки: ```shell net.ipv4.ip_nonlocal_bind = 1 net.ipv6.ip_nonlocal_bind = 1 ``` Перезагрузите конфигурацию: ```shell sysctl -p /etc/sysctl.conf ``` 7. Перезапустите службу NetworkManager: ```shell systemctl restart NetworkManager.service ``` 8. Проверьте результат: ```shell ip a ``` Если приватный IP-адрес успешно добавлен, вы увидите строку с вашим IP, например: ```shell 3: ens8: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:52:00:43:ee:26 brd ff:ff:ff:ff:ff:ff inet 192.168.0.12/24 scope global ens8 valid_lft forever preferred_lft forever ``` ## Debian, Astra Linux > [!NOTE] > Начиная с Debian 12, для настройки сети используется Netplan. Если вы работаете с этой версией, воспользуйтесь инструкцией для Ubuntu. 1. Проверьте текущие сетевые настройки. Выполните команду: ```shell ip a ``` Следующий вывод говорит о том, что на интерфейс `eth1` не назначен приватный IP (отсутствует поле `inet` с приватным адресом): ```shell 3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:52:00:f2:d0:09 brd ff:ff:ff:ff:ff:ff altname enp0s8 altname ens8 inet6 fe80::5652:ff:fef2:d009/64 scope link valid_lft forever preferred_lft forever ``` 2. Добавьте приватный IP к соединению. Откройте файл конфигурации интерфейсов: ```shell nano /etc/network/interfaces ``` Добавьте следующие строки: ```shell auto eth1 allow-hotplug eth1 iface eth1 inet static address 192.168.0.12/24 ``` Где: - `eth1` — имя интерфейса, полученное при выполнении `ip a`. - `192.168.0.12` — приватный IP, который добавляем к интерфейсу. 3. Настройте прослушивание адреса. После перезагрузки сервера адрес может не успеть добавиться, когда другие службы захотят его прослушивать. Поэтому разрешаем `bind` на адреса, которых нет на интерфейсе. Откройте файл `/etc/sysctl.conf`: ```shell nano /etc/sysctl.conf ``` Добавьте следующие строки: ```shell net.ipv4.ip_nonlocal_bind = 1 net.ipv6.ip_nonlocal_bind = 1 ``` Перезагрузите конфигурацию: ```shell sysctl -p /etc/sysctl.conf ``` 4. Перезапустите сетевой сервис. Для применения изменений перезапустите сетевую службу: ```shell systemctl restart networking.service ``` 5. Проверьте результат: ```shell ip a ``` Если приватный IP-адрес успешно добавлен, вы увидите строку с вашим IP, например: ```shell 3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:52:00:c3:bb:ae brd ff:ff:ff:ff:ff:ff altname enp0s8 altname ens8 inet 192.168.0.12/24 brd 192.168.0.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::5652:ff:fec3:bbae/64 scope link valid_lft forever preferred_lft forever ``` ## Ubuntu 1. Проверьте текущие сетевые настройки. ```shell ip a ``` Следующий вывод говорит о том, что на интерфейс `eth1` не назначен никакой приватный IP (отсутствует поле `inet` с приватным адресом): ```shell 3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:52:00:f2:d0:09 brd ff:ff:ff:ff:ff:ff altname enp0s8 altname ens8 inet6 fe80::5652:ff:fef2:d009/64 scope link valid_lft forever preferred_lft forever ``` 2. Настройте приватный IP через Netplan. Откройте или создайте файл конфигурации Netplan: ```shell nano /etc/netplan/99-ipv4.yaml ``` Добавьте следующую конфигурацию: ```shell network: version: 2 renderer: networkd ethernets: eth1: dhcp4: false addresses: - "192.168.0.12/24" ``` Где: - `eth1` — имя интерфейса, полученное при выполнении `ip a`. - `192.168.0.12` — приватный IP, который добавляем к интерфейсу. Закройте права на чтение этого файла всем, кроме `root`: ```shell chmod 600 /etc/netplan/99-ipv4.yaml ``` 3. Примените изменения в Netplan. После внесения изменений в файл, примените конфигурацию Netplan: ```shell netplan apply ``` 4. Настройте прослушивание адреса. После перезагрузки сервера адрес может не успеть добавиться, когда другие службы захотят его прослушивать. Поэтому разрешаем `bind` на адреса, которых нет на интерфейсе. Откройте файл `/etc/sysctl.conf`: ```shell nano /etc/sysctl.conf ``` Допишите в него эти строки: ```shell net.ipv4.ip_nonlocal_bind = 1 net.ipv6.ip_nonlocal_bind = 1 ``` Перезагрузите конфигурацию `sysctl`: ```shell sysctl -p /etc/sysctl.conf ``` 5. Перезапустите сетевой сервис. Для применения изменений перезапустите сетевую службу: ``` systemctl restart systemd-networkd ``` 6. Проверьте результат: ```shell ip a ``` Если приватный IP-адрес успешно добавлен, вы увидите строку с вашим IP, например: ```shell 3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:52:00:c3:bb:ae brd ff:ff:ff:ff:ff:ff altname enp0s8 altname ens8 inet 192.168.0.12/24 brd 192.168.0.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::5652:ff:fec3:bbae/64 scope link valid_lft forever preferred_lft forever ``` ## Arch Linux 1. Проверьте текущие сетевые настройки: ```shell ip a ``` Следующий вывод говорит о том, что на интерфейс eth1 не назначен никакой приватный IP (отсутствует поле inet с приватным адресом): ```shell 3: eth1: mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 54:52:00:c6:bd:44 brd ff:ff:ff:ff:ff:ff ``` 2. Настройте приватный IP через systemd-networkd. Создайте файл конфигурации сети: ```shell nano /etc/systemd/network/eth1.network ``` Добавьте следующую конфигурацию: ```shell [Match] Name=eth1 [Network] Address=192.168.0.12/24 ``` Где: - `eth1` — имя интерфейса, полученное при выполнении `ip a`. - `192.168.0.12` — приватный IP, который добавляем к интерфейсу. 3. Активируйте systemd-networkd: ```shell systemctl enable --now systemd-networkd ``` 4. Настройте прослушивание адреса. После перезагрузки сервера адрес может не успеть добавиться, когда другие службы захотят его прослушивать. Чтобы этого избежать, разрешите `bind` на адреса, которых ещё нет на интерфейсе. Создайте файл: ```shell nano /etc/sysctl.d/99-nonlocal-bind.conf ``` Добавьте строки: ```shell net.ipv4.ip_nonlocal_bind = 1 net.ipv6.ip_nonlocal_bind = 1 ``` Сохраните файл и примените изменения: ```shell sudo sysctl --system ``` 5. Проверьте результат. Выполните команду: ```shell ip a ``` Если приватный IP-адрес успешно добавлен, вы увидите строку с вашим IP, например: ```shell 3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:52:00:c6:bd:44 brd ff:ff:ff:ff:ff:ff inet 192.168.0.12/24 brd 192.168.0.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::5652:ff:fec6:bd44/64 scope link proto kernel_ll valid_lft forever preferred_lft forever ``` ## Windows 1. Проверьте сетевые настройки Откройте командную строку и выполните команду: ```shell ipconfig ``` Найдите сетевой интерфейс, у которого отсутствует Pv4-адрес, привязанный к VDS. ![Selection 085](https://content.timeweb.com/assets/8fda82c4-59a2-4e0d-a92b-747ca907a9fa.png?width=611&height=474) 2. Откройте настройки сети Кликните правой кнопкой мыши на значок сети в правом нижнем углу панели задач и выберите «Open Network & Internet settings». ![Selection 086](https://content.timeweb.com/assets/cc4fc9f8-b001-4445-b679-3d6f67ab45ba.png?width=369&height=146) _Переход к разделу «Open Network & Internet settings» в интерфейсе [ОС Windows Server](https://www.microsoft.com/en-us/windows-server)_ Выберите «Ethernet», затем нажмите «Change adapter options». ![Selection 088](https://content.timeweb.com/assets/b6535a6e-0ffa-4af5-8dbc-66ae764a6fa6.png?width=1194&height=550) _Раздел «Ethernet» в интерфейсе [ОС Windows Server](https://www.microsoft.com/en-us/windows-server)_ 3. Настройте сетевой интерфейс Найдите интерфейс, который был определен на предыдущем шаге, нажмите на него правой кнопкой мыши и выберите «Properties». ![Selection 089](https://content.timeweb.com/assets/47b1777d-5a18-40e9-a78d-a7e6e27bf67b.png?width=572&height=429) _Контекстное меню в интерфейсе [ОС Windows Server](https://www.microsoft.com/en-us/windows-server)_ В окне свойств выберите «Internet Protocol Version 4 (TCP/IPv4)» и нажмите «Properties». ![Selection 090](https://content.timeweb.com/assets/01bb08cf-fb87-42d3-af80-352f6c6dbfe4.png?width=358&height=500) _Окно «Свойства» в интерфейсе [ОС Windows Server](https://www.microsoft.com/en-us/windows-server)_ Укажите следующие параметры: - **IP address**: приватный IP сервера, указанный в панели управления. - **Subnet mask**: 255.255.255.0 - **Default gateway**: приватный IP сервера, изменив последний октет на «1». ![Selection 091](https://content.timeweb.com/assets/1fa8293d-0591-4af2-b002-0f93ded5b1cb.png?width=394&height=486) _Настройка приватного IP в интерфейсе [ОС Windows Server](https://www.microsoft.com/en-us/windows-server)_ 4. Сохраните изменения Нажмите «OK» для сохранения настроек и закройте все окна. 5. Проверьте подключение Выполните команду `ping` до любого сервиса в приватной сети, чтобы убедиться в правильности настройки: ```shell ping [адрес сервиса] ``` Если настройки выполнены правильно, вы получите ответ от сервиса. ![Screenshot 11 13 24 16:42:44](https://content.timeweb.com/assets/9093277e-5684-43b8-88d0-c298b897c60d.png?width=475&height=215) # Устранение неполадок Source: https://timeweb.cloud/docs/vpc/managing-bgp-networks/troubleshooting Ниже рассмотрим возможные проблемы в работе BGP-сетей и способы их решения. ## Не назначен приватный IP на интерфейс Если для сервера не назначен приватный IP, он не сможет «общаться» с другими сервисами в той же приватной сети. Для проверки попробуйте пропинговать один из сервисов с сервера: ```shell ping ``` Например: ```shell ping 192.168.0.7 ``` Если в результате будет подобный вывод, это означает, что к сервису обратиться не удалось: ```shell PING 192.168.0.7 (192.168.0.7) 56(84) bytes of data. --- 192.168.0.7 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 1013ms ``` **Решение** 1. Проверьте наличие приватного IP-адреса на сервере: ```shell ip a ``` Если приватный IP не назначен (отсутствует поле `inet` с приватным адресом), вывод будет примерно таким: ```shell 3: ens8: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:52:00:43:ee:26 brd ff:ff:ff:ff:ff:ff altname enp0s8 inet6 fe80::6f23:a5e7:7cb1:d9d9/64 scope link noprefixroute valid_lft forever preferred_lft forever ``` 2. Добавьте приватный IP на интерфейс по [нашей инструкции](https://timeweb.cloud/docs/vpc/managing-bgp-networks/configuring-private-ip). 3. Попробуйте снова обратиться с сервера к другому сервису в приватной сети: ```shell ping 192.168.0.7 ``` Если настройки выполнены корректно, вы увидите успешный пинг: ```shell PING 192.168.0.7 (192.168.0.7) 56(84) bytes of data. 64 bytes from 192.168.0.7: icmp_seq=1 ttl=64 time=0.554 ms 64 bytes from 192.168.0.7: icmp_seq=2 ttl=64 time=0.486 ms --- 192.168.0.7 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1042ms rtt min/avg/max/mdev = 0.486/0.520/0.554/0.034 ms ``` Если вы выполнили описанные шаги, но проблема сохраняется — [напишите в поддержку](https://timeweb.cloud/my/support/help-problem). ## Сетевой интерфейс не поднят Для проверки выполните команду: ```shell ip a ``` Наличие записи в выводе `state DOWN` говорит о том, что интерфейс не поднят: ```shell 3: eth1: mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 54:52:00:90:73:a9 brd ff:ff:ff:ff:ff:ff altname enp0s8 altname ens8 ``` #### Решение 1. Выполните команду: ```shell ip link set dev eth1 up ``` 2. Проверьте статус интерфейса: ```shell ip a ``` В выводе должен отобразиться статус `UP`: ```shell 3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:52:00:90:73:a9 brd ff:ff:ff:ff:ff:ff altname enp0s8 altname ens8 inet6 fe80::5652:ff:fe90:73a9/64 scope link tentative valid_lft forever preferred_lft forever ``` 3. Добавьте приватный адрес по [нашей инструкции](https://timeweb.cloud/docs/vpc/managing-bgp-networks/configuring-private-ip). 4. Попробуйте обратиться с сервера к другому сервису в той же приватной сети. ```shell ping ``` Например: ```shell ping 192.168.0.7 ``` Если все настроено корректно, пинг успешно пройдет: ```shell PING 192.168.0.7 (192.168.0.7) 56(84) bytes of data. 64 bytes from 192.168.0.7: icmp_seq=1 ttl=64 time=0.554 ms 64 bytes from 192.168.0.7: icmp_seq=2 ttl=64 time=0.486 ms --- 192.168.0.7 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1042ms rtt min/avg/max/mdev = 0.486/0.520/0.554/0.034 ms ``` Если вы выполнили описанные шаги, но проблема сохраняется — [напишите в поддержку](https://timeweb.cloud/my/support/help-problem). ## Отсутствует сетевой интерфейс Для проверки выполните команду: ```shell ip a ``` В выводе отсутствует интерфейс `eth1`: ```shell 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether de:de:8e:8a:3d:b0 brd ff:ff:ff:ff:ff:ff altname enp0s3 altname ens3 inet 176.124.215.153/24 brd 176.124.215.255 scope global dynamic eth0 valid_lft 84614sec preferred_lft 84614sec inet6 fe80::dcde:8eff:fe8a:3db0/64 scope link valid_lft forever preferred_lft forever ``` Для решения проблемы [напишите в поддержку](https://timeweb.cloud/my/support/help-problem). # Удаление сервисов из сети Source: https://timeweb.cloud/docs/vpc/managing-bgp-networks/removing-services-from-bgp Удаление из приватной сети **доступно только для облачных серверов**. Исключить из сети облачный сервис невозможно — но его можно [перенести в другую приватную сеть](https://timeweb.cloud/docs/vpc/managing-bgp-networks/moving-services-between-bgp) (кроме кластеров Kubernetes). Чтобы исключить сервер из приватной сети: 1. Перейдите на страницу нужного сервера. 2. На вкладке «Сеть» в блоке «Приватная сеть» кликните «Настроить». 3. Выберите вкладку «Исключить из сети». 4. Выберите зону доступности, в которой должен находиться сервер после исключения из приватной сети (актуально для Санкт-Петербурга). 5. Нажмите «Исключить и перезагрузить» 6. Подтвердите действие. Запустится процесс удаления сервера из сети. В среднем, на 10 ГБ требуется около 1 минуты. После завершения процесса сервер будет перезагружен, его недоступность составит 5-10 минут. # Удаление приватной сети Source: https://timeweb.cloud/docs/vpc/managing-bgp-networks/removing-network > [!NOTE] > Удалить можно только сеть, в которую не добавлены сервисы. Для удаления приватной сети: 1. Перейдите в раздел «Сети» → «Приватные сети». 2. Кликните на три точки справа у нужной сети. 3. Нажмите «Удалить приватную сеть». 4. Введите имя сети, чтобы подтвердить удаление. 5. Нажмите «Удалить приватную сеть». ![E8dd81fb 9069 41ff 8e96 1044e1ef8da8](https://content.timeweb.com/assets/1b0cb863-b70c-41f0-865e-a40cbeb66c51.png?width=1553&height=838) Либо: 1. Перейдите в раздел «Сети» → «Приватные сети». 2. Кликните на нужную сеть. 3. Нажмите на значок удаления справа вверху. 4. Введите имя сети, чтобы подтвердить удаление. 5. Нажмите «Удалить приватную сеть». ![0c7eb0ae 1582 479d B44e 50b66317eee9](https://content.timeweb.com/assets/ed49c524-66bc-49f1-8eeb-445b8358a402.png?width=1558&height=828) # Маршрутизация трафика (NAT) Source: https://timeweb.cloud/docs/vpc/nat NAT (network address translation) — это механизм преобразования адресов, который позволяет подменять приватный адрес сервиса на публичный IP при обращении во внешнюю сеть. > [!NOTE] > NAT доступен только в OVN-сетях. Пакеты, отправляемые с сервисов, проходят через устройство маршрутизации трафика, которое анализирует адрес назначения. Если адрес локальный — пакет пересылается внутри сети по локальному адресу. Если внешний — маршрутизатор заменяет локальный IP сервиса на публичный IP шлюза и отправляет пакет «наружу». При использовании NAT отпадает необходимость выдавать сервисам уникальные публичные IP для выхода во внешнюю сеть — вы можете использовать один внешний IP для всех сервисов внутри приватной сети. Сервисы, не имеющие собственного публичного IP, будут выходить в интернет через IP-адрес шлюза. > [!NOTE] > Обратите внимание, что это касается именно **исходящих** запросов во внешнюю сеть. Если вам нужно обращаться к сервису из интернета (например, подключаться к базе данных через phpMyAdmin), необходимо, чтобы у него был свой публичный адрес. Если для сети еще не назначен публичный IP, то при включении NAT вы сможете выбрать один из свободных публичных IP на аккаунте (IP должен быть создан в той же зоне доступности, что и приватная сеть) либо создать новый. Если в дальнейшем NAT перестанет быть нужен, IP можно будет отвязать от сети и использовать для других сервисов на аккаунте или удалить. Работа с NAT в полном объеме сейчас доступна только через панель управления. Управление NAT с помощью инструментов автоматизации (API, Terraform, CLI) будет реализовано в ближайшее время. ## Включение и отключение NAT Включить или отключить NAT можно: - **При создании новой OVN-сети** ![E238abbf 95da 4734 Af8a 8355cb69b8e9](https://content.timeweb.com/assets/6df05c50-f76d-4c9a-ab45-504fe055e4a5?width=1505&height=1686) - **В настройках существующей сети** ![5a72fd18 77ca 460b A575 A48b59f9dac7](https://content.timeweb.com/assets/102af8ad-0918-4ed5-9b8d-4b446afc6dfc?width=1515&height=846) Если к сети еще не привязан [публичный IP-адрес](https://timeweb.cloud/docs/public-ip), его будет нужно привязать при включении NAT. Вы сможете выбрать один из свободных публичных IP на аккаунте (IP должен быть создан в той же зоне доступности, что и приватная сеть) либо создать новый. ![C1df027c 342d 4d35 Aba9 60d5fd7b1dd7](https://content.timeweb.com/assets/3c914b38-f609-41fe-ace0-2cfda0fd00c9?width=1514&height=846) NAT будет включен автоматически, если одному из сервисов в приватной сети включить правило маршрутизации «Только исходящий». **При отключении NAT:** - Все сервисы в приватной сети, для которых включено правило маршрутизации трафика «Только исходящий», потеряют доступ в интернет и будут доступны только внутри приватной сети. - Публичный IP будет отвязан от приватной сети, но останется на вашем аккаунте. При повторном включении NAT вы сможете при необходимости выбрать тот же самый IP. Если публичный IP для приватной сети больше не нужен, его можно [привязать к другому сервису](https://timeweb.cloud/docs/public-ip/add-ip-to-service#perenos-ip-na-drugoj-servis) или [удалить](https://timeweb.cloud/docs/public-ip/delete-ip). ## Правила маршрутизации трафика Для сервисов могут быть установлены следующие правила маршрутизации трафика: | **Облачные серверы** | Входящий и исходящий Только исходящий Только в приватной сети | | --- | --- | | **Облачные базы данных** | Входящий и исходящий Только в приватной сети | | **Балансировщики** | Входящий и исходящий | | **Кластеры Kubernetes** | Входящий и исходящий | - **Входящий и исходящий** Разрешен входящий и исходящий трафик в/из внешней сети. У сервиса есть собственный публичный IP, через который он выходит в интернет. При отключении правила «Входящий и исходящий», публичный IP-адрес будет отвязан от сервиса. При повторном включении вы сможете выбрать один из существующих публичных адресов или создать новый IP. - **Только исходящий** Разрешен исходящий трафик во внешнюю сеть, входящий трафик из интернета запрещен. У сервиса нет собственного публичного IP, он работает за NAT и может выходить в сеть через публичный IP шлюза. При включении правила «Только исходящий» для одного из сервисов в приватной сети, для сети будет автоматически включен NAT и выдан внешний IP шлюза. При отключении NAT все сервисы с правилом «Только исходящий» потеряют доступ в интернет и правило изменится на «Только в приватной сети». - **Только в приватной сети** Разрешен только трафик внутри приватной сети, весь внешний трафик запрещен. У сервиса нет собственного публичного IP. > [!NOTE] > Правило маршрутизации «Только исходящий» в настоящий момент недоступно в приватных [BGP-сетях](https://timeweb.cloud/docs/vpc/managing-bgp-networks). ## Настройка правил Настраивать правила маршрутизации трафика вы можете: - **На странице приватной сети** Для этого кликните на иконку с текущим значением правила маршрутизации и выберите новое. ![B9ddf633 A05c 42dc 9f7b 99d2b2f7457a](https://content.timeweb.com/assets/96e02bf1-808e-4cc7-8b21-d112bef5a905?width=1493&height=1148) - **На странице сервиса на вкладке «Сеть»** **Для облачных серверов** — кликните «Настроить» в пункте «Правила маршрутизации (NAT)». На следующей странице вы сможете выбрать новое правило маршрутизации и сохранить изменения. ![8acdb3de 9732 4739 91c9 890805fa7a39](https://content.timeweb.com/assets/f577e255-d95b-48db-b78a-30e013c5b5a6?width=1477&height=1109) **Для баз данных** — включите или выключите опцию «Разрешить доступ по публичному IP-адресу». Разрешенный доступ означает правило маршрутизации «Входящий и исходящий». Если доступ запрещен, используется правило «Только в приватной сети». ![8b522ec2 3f77 4441 99fe E6325269c6bc](https://content.timeweb.com/assets/c27bc94b-509c-472e-b499-dd14bc1e1dc3?width=1478&height=968) ## Оплата Опция NAT бесплатна, оплачивается только публичный IP-адрес, который используется в качестве внешнего адреса приватной сети. Оплата за публичный IP списывается, пока он существует на аккаунте, даже если NAT уже отключен. Чтобы прекратить списания, IP-адрес нужно [удалить](https://timeweb.cloud/docs/public-ip/delete-ip) — это можно сделать в разделе «Сети» — «Публичные IP». # Балансировщик нагрузки Source: https://timeweb.cloud/docs/load-balancer Балансировщик нагрузки (Load balancer) позволяет распределять входящий трафик между несколькими серверами для повышения доступности и отказоустойчивости вашего сервиса. Основные преимущества балансировщика: - Горизонтальное масштабирование ресурсов. - Балансировка нагрузки для TCP-сессий. - Поддержка портов HTTP, HTTP2, HTTPS, TCP. - Отказоустойчивость вашего сервера приложений. В балансировку можно добавить как серверы, созданные в Timeweb Cloud, так и сторонние серверы. После создания балансировщика ему будет назначен публичный IP-адрес, который вам необходимо использовать в качестве адреса сервера приложений и перенаправить на него домен вашего сайта. Заказать сервис можно в панели управления в разделе «[Балансировщики](https://timeweb.cloud/my/balancer)». Если вы пока не клиент Timeweb Cloud, зарегистрировать учетную запись и заказать балансировщик можно на [нашем сайте](https://timeweb.cloud/services/load-balancer). > [!NOTE] > Сервис доступен в Санкт-Петербурге, Москве, Нидерландах и Германии. # Создание балансировщика Source: https://timeweb.cloud/docs/load-balancer/create-balancer Чтобы создать новый балансировщик нагрузки: 1. Перейдите в раздел «[Балансировщики](https://timeweb.cloud/my/balancer/)» и нажмите «Создать» или «Добавить». 2. Выберите регион и тариф. В разных регионах доступны разные тарифные линейки. Тарифы с двумя нодами предполагают создание реплики балансировщика для обеспечения отказоустойчивости. | Регион | Ноды | Интернет-канал | Лимит HTTP-запросов в секунду | Лимит HTTPS-запросов в секунду | | --- | --- | --- | --- | --- | | Санкт-Петербург и Москва | 1 | 500 Мбит/с | 5 000 | 700 | | 1 | 1 Гбит/с | 10 000 | 1 500 | | | 2 | 1 Гбит/с | 20 000 | 3 000 | | | Нидерланды и Германия | 1 | 200 Мбит/с | 2000 | 280 | | 2 | 200 Мбит/с | 2000 | 280 | | ![Screenshot 04 18 25 17:47:59](https://content.timeweb.com/assets/5e9efc51-945f-4491-9d3a-ca68c299282f.png?width=1019&height=948) 3. Задайте настройки сети: - - Выберите один из существующих публичных IP на аккаунте или создайте новый. - Выберите одну существующих приватных сетей или создайте новую. - При необходимости укажите приватный IP вручную. 4. Если вы хотите подключить DDoS-защиту для балансировщика (опция доступна в Москве и Петербурге), необходимо предварительно заказать [публичный IP-адрес с DDoS-защитой](https://timeweb.cloud/docs/public-ip/ddos-zashchita-dlya-plavayushchih-ip), после чего выбрать этот IP при создании балансировщика. ![E5c7619a 9e57 4ae5 877f F3d060d0a6c6](https://content.timeweb.com/assets/abd57a56-a889-4da8-87b1-35dca5651442.png?width=752&height=488) 3. Укажите базовые настройки для балансировщика: ![Screenshot 11 26 24 16:53:35](https://content.timeweb.com/assets/15bfa201-0d04-4b58-9c58-5e8e8cba59d2.png?width=408&height=798) 4.1. В случае необходимости включите использование SSL-сертификата. При активации этой функции к балансировщику сразу привяжется домен и настроится SSL-сертификат. Вы можете установить как Let's Encrypt, так и свой сертификат, указав ключи и домен. 4.2. Добавьте серверы в балансировку. Можно добавить как серверы, созданные в Timeweb Cloud, так и сторонние серверы. - Для добавления сервера, созданного на этом же аккаунте, выберите его из выпадающего списка. - Для добавления стороннего сервера введите его IP-адрес. Серверы можно будет удалять и добавлять после создания балансировщика. 4.3. Задайте правила переадресации. Для создания балансировщика должно быть задано как минимум одно правило переадресации. Вам необходимо указать протокол и порт для сервера и для балансировщика. Доступные протоколы: HTTP, HTTP2, HTTPS, TCP, TCP+TLS. Для каждого протокола по умолчанию будет указан стандартный порт, но вы можете изменить его значение по своему усмотрению. Указанные параметры будут применены ко всем серверам в балансировке. Если вы настраиваете работу по HTTPS, необходимо использовать протокол TCP и порт 443. Если вы используете Cloudflare, в качестве исходного и целевого протоколов необходимо использовать только TCP. [Подробнее о настройке](https://timeweb.cloud/docs/load-balancer/manage-balancer#nuansy-ispolzovaniya). 4.4. Нажав на кнопку «Расширенные настройки», вы можете выбрать алгоритм балансировки, настроить правила проверки доступности, изменить настройки подключения, включить перенаправление на HTTPS, прокси-протокол и backend keep-alive. Все эти параметры можно будет изменить после создания балансировщика. Подробнее эти настройки рассмотрены в статье [об управлении балансировщиками](https://timeweb.cloud/docs/load-balancer/manage-balancer). 5. Укажите имя балансировщика и выберите, в какой проект он должен быть добавлен. Этих параметров достаточно, чтобы запустить балансировщик, но вы также можете настроить дополнительные параметры, кликнув «Расширенные настройки» в блоке «Настройки». Список добавленных серверов, правила и настройки переадресации можно будет изменить после создания балансировщика. # Управление балансировщиками Source: https://timeweb.cloud/docs/load-balancer/manage-balancer Управление балансировщиками, созданными в панели Timeweb Cloud. ## Расширенные настройки балансировщика При создании балансировщика вам достаточно добавить в него сервисы и задать правила переадресации. Остальные настройки можно оставить по умолчанию. Однако также у вас есть возможность выполнить детальную настройку. - Для настройки нового балансировщика — нажмите «Расширенные настройки» в пункте «Настройки» при создании балансировщика. - Для настройки существующего балансировщика — перейдите в раздел «Балансировщики», кликните на нужный балансировщик и нажмите «Настроить» или «Изменить» у параметра, который нужно скорректировать: ![89d7cb48 B95d 4c68 Ab04 5e1ac6a360b4](https://content.timeweb.com/assets/110df029-f3ad-41ff-bf58-a90701e10d0a.png?width=1524&height=979) При применении изменений подключение может кратковременно прерываться, но в большинстве случаев это происходит незаметно для работы балансировщика и серверов. ### Алгоритм балансировки Выберите предпочтительный алгоритм перенаправления запросов. ![Algorithm](https://content.timeweb.com/assets/215b8cfe-a369-448a-a799-4ce7c34f2990?width=640&height=235) - **Round Robin** — алгоритм, при котором запросы передаются на серверы по кругу: первый запрос — на первый сервер, следующий запрос — на второй сервер, и так далее до последнего сервера, после чего цикл начинается заново. - **Least Connections** — алгоритм, при котором каждый новый запрос передается на тот сервер, на котором в данный момент меньше всего активных подключений. Этот метод позволяет распределять нагрузку на серверы достаточно равномерно. ### Запоминать сессии Включение настройки позволит балансировщику использовать cookie-файлы, чтобы перенаправлять запросы одного и того же клиента на один и тот же сервер. Однако если сервер станет не доступен, балансировщик перенаправит запрос клиента на другой сервер. ![Sticky Sessions](https://content.timeweb.com/assets/5c0e4475-0cfd-4097-a681-d3635ae33c3b?width=628&height=219) ### Проверка доступности Проверка доступности (или health check) выполняется в фоновом режиме. Балансировщик отправляет на серверы проверяющие запросы и исключает из балансировки серверы, не прошедшие проверку, а после возвращает их снова, если проверка пройдена. Вы можете задать параметры проверки по своему усмотрению, определив, что будет считаться успешной или неуспешной проверкой, или оставить значения по умолчанию. ![Healthcheck](https://content.timeweb.com/assets/9f34731b-a6c3-48d2-b1ca-432b3db79c89?width=622&height=596) В первую очередь укажите основные параметры отправки проверяющих запросов на сервер: протокол и порт. Для корректной работы рекомендуем использовать протокол TCP. Также можно указать собственные значения для параметров: - **Интервал проверки** — частота отправки проверяющих запросов. - **Ожидание ответа** — срок ожидания ответа на проверяющий запрос. - **Порог ошибок** — число неуспешных проверок подряд (число раз, когда сервер не ответил на проверяющие запросы), при достижении которого сервер исключается из балансировки. - **Порог корректных ответов** — число успешных проверок подряд, при достижении которого сервер возвращается в балансировку. ### Параметры балансировщика Помимо параметров проверки доступности, вы можете указать следующие параметры: - **Максимальное количество соединений** — максимальное количество одновременных соединений, которые сможет обрабатывать балансировщик. - **Таймаут подключения** — тайм-аут в миллисекундах для установки TCP-соединения с сервером. - **Таймаут клиента** — максимальное время ожидания активности от клиента. - **Таймаут сервера** — максимальное время ожидания активности от сервера. - **Таймаут HTTP-запроса** — максимальное время ожидания завершения HTTP-запроса. ![Screenshot 04 02 25 17:58:34](https://content.timeweb.com/assets/70626975-5a64-4f47-ac7d-fe1f0cb0f958.png?width=512&height=446) ### Перенаправление на SSL При включении настройки весь HTTP-трафик, поступающий на балансировщик, будет перенаправляться на защищенное соединение. Для работы настройки необходимо, чтобы было создано хотя бы одно правило переадресации с HTTP на HTTPS. ### Proxy protocol Включение Proxy-протокола позволяет перенаправлять данные о подключении клиента (IP-адрес и порт) на конечный сервер, а не отбрасывать их на балансировщике. Это может быть необходимо для сбора статистики по трафику, отображения версии сайта или приложения на нужном языке или с нужным набором функций в зависимости от страны пользователя и в других подобных случаях. Proxy-протокол будет работать для всех созданных правил, которые имеют целевой протокол HTTP или HTTPS. Важно, чтобы конфигурация конечных серверов поддерживала Proxy protocol, в противном случае при проверке доступности серверы будут отдавать ошибку 400, и балансировщик перестанет перенаправлять на них запросы. Способ настройки сервера для работы с proxy protocol зависит от используемого вами ПО. По ссылкам ниже можно найти инструкции для: - [Nginx](https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/#configuring-nginx-to-accept-the-proxy-protocol) - [Apache](https://httpd.apache.org/docs/2.4/mod/mod_remoteip.html#remoteipproxyprotocol) ### Backend keep-alive При включении настройки будет поддерживаться режим постоянного соединения с серверами (keep-alive) для всех правил с целевым протоколом HTTP или HTTPS. Это позволяет балансировщику поддерживать меньшее количество TCP-соединений для обмена запросами с серверами. В большинстве случаев включение этой опции помогает повысить производительность и снизить время отклика для клиента. ## Особенности и ограничения При настройке переадресации на HTTP и HTTPS необходимо учитывать следующие нюансы. ### Настройка работы по HTTP Если в настройках переадресации используется протокол HTTP, при обращении по домену вы можете столкнуться с ошибкой 503 Service Unavailable. Для устранения проблемы необходимо в настройках проверки доступности указать протокол TCP вместо HTTP: ![HTTP](https://content.timeweb.com/assets/40d39ceb-f4c8-47d0-b314-dd087b52c6bd?width=619&height=165) ### Настройка работы по HTTPS Для корректной работы переадресации по HTTPS необходимо выполнить следующие настройки: 1. В правилах переадресации добавить правило с протоколом TCP (вместо HTTPS) и портом 443, как на скриншоте: ![Https](https://content.timeweb.com/assets/f7ef102c-b31f-44f3-bd10-eb999cd8a5f6?width=664&height=641) 2. В проверке доступности использовать протокол TCP, как на скриншоте: ![HTTP](https://content.timeweb.com/assets/f40ad387-e01a-4191-abc3-da3431abcdae?width=619&height=165) 3. В качестве A-записи домена указать IP-адрес балансировщика. 4. На каждый сервер, добавленный в балансировку, добавить сертификат домена. ### Настройка при использовании Cloudflare Если ваш домен имеет NS-серверы Cloudflare, то при направлении домена на IP-адрес балансировщика необходимо в качестве исходного и целевого протоколов выбирать только TCP. Другие протоколы не поддерживаются. ![48e4aea8 Fd16 4ad6 98b1 C91fc27addd8](https://content.timeweb.com/assets/6a1f25a8-c014-4c4a-8bd3-580c7b279403?width=590&height=711) ### Ограничения портов Нельзя настроить 22 порт в качестве исходного. При попытке подключения к балансировщику по порту 22 возникнет ошибка `Connection refused`. ![Scr 20250825 Jzax](https://content.timeweb.com/assets/c37da5cf-59c4-474d-95c7-14b4f816049c.png?width=812&height=526) ## Сервисы в балансировке На вкладке «Серверы» вы можете увидеть все сервисы, находящиеся в балансировке. Для каждого из подключенных сервисов отображается статус доступности, IP-адрес и время даунтайма, если сервис недоступен. Задержка при обновлении статуса доступности может составлять до 60 секунд. ![Screenshot 11 05 24 11:30:50](https://content.timeweb.com/assets/4a0b0c05-e78d-49f8-85e2-1e6017950aa5.png?width=782&height=378) Добавить или удалить сервис в балансировщике можно, нажав на кнопку «Изменить». ![Screenshot 11 05 24 11:31:35](https://content.timeweb.com/assets/2ee60259-df1f-4bd7-a815-00aa041e0c93.png?width=412&height=335) ## Окно обслуживания Окно обслуживания — это период, в который мы можем устанавливать обновления и оптимизировать работу сервисов. Доступны два варианта: - В любое время - В заданное время Время указывается в вашем часовом поясе. Вы можете задать окно обслуживания при создании балансировщика, а также управлять им в настройках. Чтобы изменить окно обслуживания: 1. В разделе «Балансировщики» кликните на нужный балансировщик. 2. На вкладке «Конфигурация» нажмите «Изменить» в блоке «Окно обслуживания балансировщика». 3. Выберите нужный вариант и сохраните изменения. ## Настройка доменов После создания балансировщика ему будет выделен публичный IP-адрес, который необходимо использовать в качестве адреса сервера приложений. IP будет указан в разделе «Балансировщики». ![Balancer Main](https://content.timeweb.com/assets/7a86bdb7-9a8a-47d9-abbb-987d9066da86?width=1213&height=403) Укажите IP-адрес балансировщика в качестве A-записи ваших доменов. ## Установка SSL-сертификата После настройки домена вы можете выпустить SSL-сертификат. Для этого перейдите во вкладку «Конфигурация» и нажмите кнопку «Установить» рядом с пунктом «SSL-сертификат». ![Selection 040](https://content.timeweb.com/assets/72116353-c738-493c-bb0d-a5f08bd7e2c3.png?width=866&height=689) В открывшемся меню выберите нужный домен и снова нажмите кнопку «Установить». ![Selection 041](https://content.timeweb.com/assets/1219d96e-8540-47ae-ad35-695306e08745.png?width=490&height=457) Дождитесь завершения установки. После этого привязанный домен отобразится во вкладке «Дашборд». ![Selection 042](https://content.timeweb.com/assets/86555472-e958-4f6c-a6c2-d975927c7294.png?width=864&height=518) ## Дашборд Вы можете отслеживать: - Количество запросов в секунду (RPS). - Количество HTTP 4хх/5хх ошибок. - Количество запросов и ответов. - Время отклика. ![Screenshot 09 27 24 18:21:00](https://content.timeweb.com/assets/0fea938c-fdef-4f66-a0f7-70742845524f.png?width=778&height=727) ## История действий Вы можете просмотреть действия, которые выполнялись с балансировщиком, на вкладке «История». ![Dac26ff1 8a06 42b2 A797 D7a98e82ceb5](https://content.timeweb.com/assets/3bbd3d09-51b1-451c-8f3c-4ba64f4ab0fd?width=1113&height=788) Мы логируем следующие события: - Создание балансировщика - Добавление сервера в балансировку - Удаление сервера из балансировки - Создание правил балансировки - Изменение правил балансировки - Изменение настроек балансировщика - Удаление балансировщика ## Оплата Стоимость включается в абонентскую плату, и списания выполняются ежедневно. При заказе сервиса первый платеж необходимо выполнить сразу после создания балансировщика, чтобы его запустить. Вы можете выбрать, как вы хотите произвести оплату: списать средства с баланса или оплатить отдельно. При выборе «Списать со счета», если на балансе достаточно средств, балансировщик будет создан и запущен сразу после нажатия кнопки «Подключить». Если средств недостаточно, вы будете переадресованы в раздел «Баланс и платежи» для пополнения баланса. При выборе «Оплатить отдельно» нажмите «Перейти к оплате», после чего вы будете переадресованы в раздел «Баланс и платежи». Выберите период и способ оплаты и произведите платеж. Как только оплата поступит, балансировщик будет запущен. ## Удаление балансировщика Чтобы удалить балансировщик, кликните на три точки у нужного балансировщика: ![Balancer Remove](https://content.timeweb.com/assets/0bdab34c-4199-4b35-8a9b-7be3949c6ebe?width=1213&height=406) Либо кликните на иконку удаления в настройках балансировщика: ![B70fb164 5bfa 476c 9c12 E20678e5e9a9](https://content.timeweb.com/assets/7671f8a5-8f88-4845-9f37-8db64fe846af?width=1116&height=247) В открывшемся окне введите имя балансировщика или код подтверждения, в зависимости от [ваших настроек](https://timeweb.cloud/docs/account-management/notifications#uvedomleniya-pri-udalenii-servisov). При удалении балансировщика: - На серверы, добавленные в балансировку, перестанет перенаправляться трафик. Вам потребуется обновить A-записи у доменов. - Сами серверы удалены не будут. # Firewall Source: https://timeweb.cloud/docs/firewall Файрвол как сервис (FWaas, FireWall as a Service) — облачное решение, которое позволяет управлять входящим и исходящим трафиком облачных серверов и облачных сервисов (баз данных, балансировщиков и приложений App Platform) с помощью устанавливаемых вами правил. Вам не требуется вносить каких-либо изменений в настройки сервера на уровне операционной системы. Достаточно задать правила через панель управления и выбрать, к каким серверам и сервисам они должны применяться. - На одном аккаунте можно создать до 50 групп правил. - В группу можно добавить до 100 правил для каждого типа трафика (входящего и исходящего). - В группу можно включить до 200 сервисов. - Один сервис можно включать только в разрешающие группы правил или только в запрещающие. Группу правил можно применить к любым виртуальным серверам, базам данных и балансировщикам на аккаунте, вне зависимости от региона и зоны доступности, где они созданы. # Управление Firewall Source: https://timeweb.cloud/docs/firewall/upravlenie-fajrvolom Файрвол представляет из себя группу правил, регулирующих тот или иной трафик. Вы можете создать на аккаунте до 50 групп правил — то есть до 50 файрволов. ![Image 138](https://content.timeweb.com/assets/b3093d94-a8d5-429c-9f3f-20538b042c7f?width=1473&height=818) Группы правил двух типов: разрешающие трафик (whitelist) и запрещающие трафик (blacklist). Сервис может быть добавлен только в группы одного типа: только разрешающие или только запрещающие. При этом, сервис может быть добавлен в две, три и более группы правил одного типа (например, в пять групп правил, разрешающих трафик). В этом случае для сервиса будут применены все заданные правила. Управлять файрволом можно из раздела «Сети» — «[Firewall](https://timeweb.cloud/my/firewalls)» или из сетевых настроек конкретного сервиса. ## Принципы работы файрвола При использовании файрвола важно учитывать следующие особенности его работы: - Если не создано ни одного правила, файрвол не применяется: весь входящий и исходящий трафик разрешен. - Файрвол начинает применяться отдельно к входящему и исходящему трафику: - если в группе есть только входящие правила, фильтрация применяется только к входящему трафику; - если есть только исходящие правила, фильтрация применяется только к исходящему трафику; - если есть правила и на вход, и на выход — фильтрация будет применяться в обе стороны. - Группы правил бывают двух типов: - Разрешающие (whitelist) — работает по принципу белого списка: будет разрешен только трафик, указанный в правилах, все остальное будет заблокировано. - Запрещающие (blacklist) — работает по принципу черного списка: будет запрещен только трафик, указанный в правилах, все остальное будет разрешено. - Сервис может быть добавлен только в группы одного типа: разрешающие или запрещающие. - Сервис может быть одновременно добавлен в несколько групп одного типа — в этом случае правила объединяться и применяться вместе. > [!NOTE] > Если вы используете разрешающий файрвол, даже одно правило на исходящий трафик включает фильтрацию. Это значит, что все, что не указано явно, будет заблокировано — включая обращения к сайтам, API и другим внешним сервисам. > > Мы не рекомендуем создавать разрешающие правила для исходящего трафика, если нет конкретной необходимости ограничивать соединения. ## Файрвол и сервисы в приватных сетях При настройке правил файрвола для сервисов в приватных сетях необходимо корректно настроить правила для работы DHCP — службы, через которую сервисы получают свой приватный IP-адрес. Если этого не сделать, сервис может потерять IP после истечения срока аренды, что приведет к нарушению работы NAT и недоступности сервиса в интернете. > [!NOTE] > Эти настройки необходимо выполнять, если у вас установлены **разрешающие** правила файрвола для сервисов, добавленных в приватные сети. - Если у вас **созданы правила только для входящего трафика**, необходимо разрешить входящий трафик на порт 68/UDP с IP-адреса шлюза приватной сети, в которую включен сервис. Пример настройки: ![7ed4a282 B875 47cb Bf0a 6a1f56ce1c7a](https://content.timeweb.com/assets/09d51131-f51c-47d8-a368-ea5c1f8eb9ea?width=578&height=770) Вместо `192.168.0.1` подставьте адрес шлюза вашей приватной сети либо разрешите всю серую подсеть (в этом примере `192.168.0.0/24`) или любые адреса (`0.0.0.0/0`). > [!NOTE] > Если в одну группу файрвола добавлены сервисы из разных приватных сетей с разными адресами шлюзов, нужно таким же образом создать разрешающее правило для каждого шлюза. - Если **созданы правила только для исходящего трафика**, необходимо разрешить исходящий трафик на адрес `255.255.255.255` по порту 67/UDP. Пример настройки: ![20dd95fc 2dfe 4dfe B8f5 2b2f3b3aeb6d](https://content.timeweb.com/assets/bf6a10d1-55a5-43c5-af34-17e6c1141824?width=575&height=769) Вместо `255.255.255.255` можно также указывать `0.0.0.0/0`, чтобы разрешить все адреса. - Если есть **правила и для входящего, и для исходящего трафика**, нужно выполнить обе настройки. ## Создание файрвола Панель управления ### Из раздела Firewall 1. Перейдите в раздел «Сети» — «Firewall» и нажмите «Добавить». 2. Выберите, что нужно сделать: разрешить трафик или запретить трафик. 3. [Задайте правила файрвола](https://timeweb.cloud/docs/firewall/upravlenie-fajrvolom#sozdanie-novyh-pravil) для входящего и/или исходящего трафика. В дальнейшем вы сможете [отредактировать заданные правила](https://timeweb.cloud/docs/firewall/upravlenie-fajrvolom#redaktirovanie-pravil) или [удалить](https://timeweb.cloud/docs/firewall/upravlenie-fajrvolom#udalenie-pravil) их, а также добавить новые правила в файрвол. 4. Выберите, [к каким сервисам должны применяться](https://timeweb.cloud/docs/firewall/upravlenie-fajrvolom#dobavlenie-servisov-v-fajrvol) указанные правила. В дальнейшем вы сможете добавить/удалить сервисы из файрвола. 5. Укажите свое имя файрвола при необходимости и нажмите «Создать». ![4d07d815 5842 4dfe 892c 055f69b8651a](https://content.timeweb.com/assets/7b3b9daa-cfef-440f-92f9-ae52ac894f88?width=1465&height=812) ### Со страницы сервиса Вы также можете перейти к созданию файрвола из настроек конкретного сервиса, на вкладке «Сеть»: ![3dc35e5c C75a 4dfc 9e84 F935f1926020](https://content.timeweb.com/assets/24696b6a-5da6-4ade-93a6-7f17dba4e940.png?width=1570&height=942) В блоке «Firewall» кликните «Настроить» — «Создать новый». Вы будете переадресованы в раздел «Firewall» на форму создания новой группы правил, где сможете задать правила, добавить сервисы и сохранить новый файрвол. Terraform Дальнейшее описание предполагает, что у вас уже установлен Terraform, настроен провайдер Timeweb Cloud и инициализирован проект ([шаги 1–4 этой инструкции](https://timeweb.cloud/docs/terraform/nachalo-raboty-s-terraform)). Создание файрвола начинается с ресурса `twc_firewall`, который задает сам файрвол, указав его имя и описание: ```yml resource "twc_firewall" "example-firewall" { name = "example-firewall" description = "Example firewall description" } ``` Этот код создает файрвол с именем «example-firewall» и описанием «Example firewall description». ### Полный пример Полный пример включает создание двух серверов, создание файрвола, привязку серверов к файрволу и настройку популярных портов: ```yml terraform { required_providers { twc = { source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud" } } required_version = ">= 1.5.3" } provider "twc" { token = "<ваш токен>" } # Запрос данных о системе Ubuntu 22.04 data "twc_os" "os" { family = "linux" name = "ubuntu" version = "22.04" } # Запрос данных о пресете (конфигурации сервера) data "twc_presets" "preset" { description_short = "Cloud-15" } # Создание серверов resource "twc_server" "vds-with-preset" { name = "Server 1" os_id = data.twc_os.os.id preset_id = data.twc_presets.preset.id } resource "twc_server" "vds-with-preset-2" { name = "Server 2" os_id = data.twc_os.os.id preset_id = data.twc_presets.preset.id } # Добавление IPv4 для созданных серверов resource "twc_floating_ip" "floating-ip1" { availability_zone = "spb-3" resource { type = "server" id = twc_server.vds-with-preset.id } } resource "twc_floating_ip" "floating-ip2" { availability_zone = "spb-3" resource { type = "server" id = twc_server.vds-with-preset-2.id } } # Создание файрвола и привязка серверов resource "twc_firewall" "example-firewall" { name = "example-firewall" description = "Example firewall with multiple port rules" link { id = twc_server.vds-with-preset.id type = "server" } link { id = twc_server.vds-with-preset-2.id type = "server" } } # Создание правил для популярных портов resource "twc_firewall_rule" "example-firewall-rules" { firewall_id = twc_firewall.example-firewall.id description = "Правила для популярных портов" for_each = toset([for port in [22, 80, 443, 8080] : format("%d", port)]) direction = "ingress" port = each.value protocol = "tcp" } ``` Перед запуском не забудьте указать токен. Чтобы выполнить этот код, сохраните его в файл с расширением `.tf` и выполните команды: ```shell terraform init terraform plan terraform apply ``` Это инициализирует Terraform и применит конфигурацию для создания необходимых ресурсов. ## Настройка правил Вы можете создавать новые правила при создании нового файрвола, добавлять новые правила к уже существующим файрволам, редактировать заданные правила и удалять их. Панель управления ### Создание новых правил > [!NOTE] > Если выбрана опция «Разрешить трафик», будет разрешен только трафик, соответствующий созданному правилу. Весь остальной трафик будет заблокирован. > > Если выбрана опция «Запретить трафик», будет разрешен весь трафик, кроме заданного правилами. Чтобы создать новое правило при создании нового файрвола: 1. Выберите, что нужно сделать: разрешить определенный трафик или запретить. 2. Кликните «Добавить правило» в блоке «Входящий трафик» или «Исходящий трафик». ![Caaf237a D3b4 4795 817e C96676ed141b](https://content.timeweb.com/assets/675573c3-3409-4595-bfa7-0eb00226c422?width=1455&height=1068) 2. Укажите параметры правила: - **Подсеть или адрес**. Можно указать конкретный IP, подсеть или значение `0.0.0.0/0`, чтобы разрешить/запретить все адреса и подсети, — либо можно выбрать **Для всех адресов**. В настоящий момент опция «Для всех адресов» работает для IPv4; для аналогичной настройки для IPv6-адресов потребуется создать отдельное правило, указав адрес `::/0`. - **Тип**. Можно задать собственное правило или выбрать один из готовых типов. В этом случае протокол и порт заполнятся автоматически. - **Протокол**. Можно выбрать TCP, UDP или ICMP. - **Порт**. Можно указать порт или диапазон портов. ![D26d83d4 78fb 4148 Acb7 4a5ba1914659](https://content.timeweb.com/assets/760da152-4b8c-4b6d-9c02-7b251764358e?width=1450&height=872) 3. Нажмите «Добавить». Вы также можете добавлять новые правила к уже существующим файрволам. Для этого: 1. Перейдите в раздел «Сети» — «Firewall». 2. Кликните на нужную группу правил. 3. Нажмите «Добавить» в нужном блоке. ![83944a42 0eb5 4d6c 9ce3 D60b342813e5](https://content.timeweb.com/assets/358aa1a9-4bb4-4e84-be5d-5a9d8178acf7?width=1466&height=778) 4. Задайте параметры правила и сохраните изменения. ### Редактирование правил Чтобы внести изменения в уже созданное правило: 1. Перейдите в раздел «Сети» — «Firewall» 2. Кликните на нужную группу правил. 3. Кликните на нужное правило. ![15b461ca D2bc 4340 Ac02 35c26935bd70](https://content.timeweb.com/assets/bd57cdae-253e-4733-967f-1947aa16e376?width=1460&height=781) 4. Внесите правки и сохраните изменения. ![0dd73fd9 048c 4279 9fec A48942bd00bd](https://content.timeweb.com/assets/09f85785-ce80-41e1-b29d-f7804b60f0c2?width=1465&height=845) ### Удаление правил Чтобы удалить правило: 1. Перейдите в раздел «Сети» — «Firewall». 2. Кликните на нужную группу правил. 3. Кликните на три точки у нужного правила и нажмите «Удалить правило». ![1e620657 008f 4faf 858c E3e0518df67f](https://content.timeweb.com/assets/55b6bd9c-0086-4d4a-87d1-c00e520ce982?width=1461&height=800) 4. Подтвердите удаление. Terraform ### Добавление правила для порта Чтобы добавить правило, разрешающее входящий трафик (`ingress`) на определенный порт (например, порт `80` для `HTTP`), используйте ресурс `twc_firewall_rule`: ```yml resource "twc_firewall_rule" "example-firewall-rule" { firewall_id = twc_firewall.example-firewall.id description = "Allow HTTP traffic" direction = "ingress" port = 80 protocol = "tcp" cidr = "0.0.0.0/0" } ``` Этот пример показывает, как разрешить трафик на порт `80` из любого источника (`CIDR 0.0.0.0/0`). ### Создание правил для диапазона портов Если необходимо создать правила для диапазона портов, это можно сделать с помощью цикла `for_each` и функции `range`: ```yml resource "twc_firewall_rule" "example-firewall-rules" { firewall_id = twc_firewall.example-firewall.id description = "Правила для диапазона портов 8000-8010" for_each = toset([for port in range(8000, 8010) : format("%d", port)]) direction = "ingress" port = each.value protocol = "tcp" } ``` В этом примере функция `range(8000, 8010)` создает список чисел от `8000` до `8010` включительно, который затем передается в `toset()` для создания уникального набора. Для каждого порта в этом диапазоне создается отдельное правило в файрволе. Поскольку `for_each` требует для работы с коллекциями данные, состоящие из строк, порты преобразуются в строки с помощью функции `format()`, где `%d` — это формат для целого числа. В переменную `port` подставляется результат цикла `each.value`. ### Создание правил для конкретных портов Для настройки доступа к нескольким конкретным портам также можно использовать цикл. Например, чтобы открыть порты `22`, `80`, `443` и `8080`: ```yml resource "twc_firewall_rule" "example-firewall-rules" { firewall_id = twc_firewall.example-firewall.id description = "Правила для популярных портов" for_each = toset([for port in [22, 80, 443, 8080] : format("%d", port)]) direction = "ingress" port = each.value protocol = "tcp" } ``` Мы создаем список портов `[22, 80, 443, 8080]` и используем цикл `for` для преобразования каждого порта в строку с помощью функции `format("%d", port)`. В результате для каждого порта создается отдельное правило в файрволе. ## Добавление сервисов в файрвол Вы можете добавлять сервисы в файрвол как при его создании, так и в дальнейшем, когда файрвол уже существует. Добавить сервис в разрешающую группу правил можно только при условии, что он не добавлен в запрещающую группу правил, и наоборот. Сервис может быть одновременно добавлен в несколько групп правил одного типа (разрешающих или запрещающих). Панель управления #### Из раздела Firewall При создании файрвола кликните «Выбрать сервис» в блоке «Подключить к сервисам» и выберите нужные: ![Image 137](https://content.timeweb.com/assets/54ac58cb-1c59-48ac-a9e1-579da7d1eb96?width=1387&height=920) Чтобы добавить сервисы в уже существующий файрвол: 1. Перейдите в раздел «Сети» — «Firewall». 2. Кликните на нужную группу правил. 3. Перейдите на вкладку «Серверы» и нажмите «Добавить». ![Adcd564e B0f9 411b 9cbb C5aeb9da1179](https://content.timeweb.com/assets/fe5d548e-2f04-44a0-83f6-434c104d4420?width=1455&height=665) 4. В открывшемся окне выберите нужные сервисы и сохраните изменения. ![Cfbfa8ea B927 4685 Abb9 C1363654284e](https://content.timeweb.com/assets/21fb070c-a9e3-4ab0-9d6b-4bb050ce434c?width=1487&height=951) #### Со страницы сервиса Вы можете добавить сервис в файрвол со страницы самого сервиса. Как и [при создании нового файрвола](https://timeweb.cloud/docs/firewall/upravlenie-fajrvolom#so-stranicy-servisa), это можно сделать во вкладке «Сеть». После перехода на нужную вкладку: 1. В блоке «Firewall» кликните «Настроить». 2. В открывшемся окне выберите нужную группу правил и нажмите «Сохранить». ![F1b5edfa D97a 4f02 92d8 6823e84dcfcf](https://content.timeweb.com/assets/79e99771-60fa-42c2-82d2-fd40e7d23339?width=1464&height=868) Сервис может быть одновременно добавлен в несколько разных групп правил. Terraform Чтобы привязать серверы к файрволу, необходимо использовать ссылки. Создадим два сервера через Terraform и привяжем их к файрволу: ```yml # Запрос данных о системе Ubuntu 22.04 data "twc_os" "os" { family = "linux" name = "ubuntu" version = "22.04" } # Запрос данных о пресете (конфигурации сервера) data "twc_presets" "preset" { description_short = "Cloud-15" } # Создание первого сервера resource "twc_server" "vds-with-preset" { name = "Server 1" os_id = data.twc_os.os.id preset_id = data.twc_presets.preset.id } # Создание второго сервера resource "twc_server" "vds-with-preset-2" { name = "Server 2" os_id = data.twc_os.os.id preset_id = data.twc_presets.preset.id } # Добавление IPv4 для созданных серверов resource "twc_floating_ip" "floating-ip1" { availability_zone = "spb-3" resource { type = "server" id = twc_server.vds-with-preset.id } } resource "twc_floating_ip" "floating-ip2" { availability_zone = "spb-3" resource { type = "server" id = twc_server.vds-with-preset-2.id } } # Создание файрвола и привязка серверов resource "twc_firewall" "example-firewall" { name = "example-firewall" description = "Example firewall with multiple port rules" link { id = twc_server.vds-with-preset.id type = "server" } link { id = twc_server.vds-with-preset-2.id type = "server" } } ``` С помощью директивы `link` мы привязали оба сервера к файрволу. ### Удаление сервисов из файрвола #### Из раздела Firewall 1. Перейдите в раздел «Сети» — «Firewall». 2. Кликните на нужную группу правил. 3. Перейдите на вкладку «Сервисы». 4. Кликните на три точки у нужного сервиса и кликните «Исключить сервис из группы». ![Fa13f1ec 856d 4868 8cec Dfc9fb3de5c8](https://content.timeweb.com/assets/a6a102f2-fc6c-4670-882d-2315eafe71e1?width=1460&height=648) 5. Подтвердите удаление. #### Со страницы сервиса Исключить сервис из файрвола можно на странице сервиса на вкладке «Сеть». После перехода на нужную вкладку: 1. В блоке Firewall на странице сервиса кликните на три точки у нужной группы правил и кликните «Отключить Firewall». 2. Подтвердите отключение группы правил для этого сервиса. ![19e93326 5fe3 4195 827c C23222f7149d](https://content.timeweb.com/assets/9aea5e78-efeb-4c8e-8e84-908bf7cd96b9?width=1455&height=581) ## Удаление файрвола Чтобы безвозвратно удалить файрвол: 1. Перейдите в раздел «Сети» — «Firewall». 2. Кликните на три точки у нужного файрвола. 3. Кликните «Удалить группу правил». ![0ee89e5c 2a41 461e 900f Da7491d0ec18](https://content.timeweb.com/assets/aad16ca9-9bf7-47db-8b9b-a3eec4e0f7d5?width=1454&height=475) 4. Подтвердите удаление. Файрвол и созданные в нем правила будут удалены и больше не будут применяться к добавленным сервисам. # Публичные IP Source: https://timeweb.cloud/docs/public-ip Публичный IP — это внешний IPv4-адрес, который вы можете переносить между сервисами внутри одного региона: облачными серверами, базами данных, балансировщиками нагрузки, а также приватными сетями. ![44b75768 A52b 41ab 8180 8bc398e34b2d](https://content.timeweb.com/assets/468fc6d6-9f90-4998-b499-349a2a3952d1?width=1513&height=846) Привязка публичного IP к сервису позволяет ему выходить во внешнюю сеть; а привязка к приватной сети — [включает NAT](https://timeweb.cloud/docs/vpc/nat), благодаря чему все сервисы в этой сети с [правилом маршрутизации](https://timeweb.cloud/docs/vpc/nat#pravila-marshrutizacii-trafika) «Только исходящий» смогут выходить в Интернет через общий внешний IP-адрес. Публичный IP всегда закрепляется за аккаунтом в целом, и вы можете в дальнейшем назначать его другим сервисам. Если вы отключите доступ в интернет для сервиса, публичный IP будет от него отвязан, но сохранится на аккаунте — вы можете назначить его другому сервису или тому же самому, когда потребуется вернуть возможность доступа в интернет. Если вы удалите сервис, к которому привязан публичный IP, IP-адрес также сохранится за вашим аккаунтом, и вы сможете перенести его на другой сервис, когда это потребуется. Списания за IPv4 почасовые, актуальная стоимость доступна в панели управления в момент заказа. В сутки на одном аккаунте можно заказать не более 10 публичных IPv4-адресов. > [!NOTE] > Обратите внимание, что оплата списывается, даже если IP не привязан ни к какому сервису. Чтобы остановить списания, IP-адрес нужно удалить. # Создание публичного IP Source: https://timeweb.cloud/docs/public-ip/create-public-ip Заказать новый публичный IP можно в разделе «Сети» — «Публичные IP» или при заказе нового сервиса Timeweb Cloud (сервера, базы данных, балансировщика, приватной сети). ## Заказ публичного IP Чтобы заказать новый публичного IP: 1. Перейдите в раздел «Сети» — «Публичные IP» и кликните «Создать» или «Добавить». 2. Укажите параметры: 1. **Регион и зона доступности**. Публичный IP будет можно назначать только сервисам, созданным в той же [зоне доступности](https://timeweb.cloud/docs/zony-dostupnosti). ![981e4675 8bfc 4aaf Aff5 Fdfcb2b07509](https://content.timeweb.com/assets/aed74686-bd94-484a-89f0-41c2d2148e72?width=1496&height=781) 1. 2. **Количество адресов**. Выберите нужное число IP. В сутки можно заказать до 10 адресов. Если вам нужно больше — свяжитесь с поддержкой. 3. **DDoS-защита** (доступна только в Санкт-Петербурге и Москве). Позволяет сразу подключить защиту от атак на выдаваемые вам IP-адреса. Если вы заказываете несколько адресов, защита будет подключена для каждого из них. Стоимость сервиса — 550 рублей в месяц за один IP-адрес, не включая стоимость самого IP. ![1fa7351c Bbd2 48b0 B9d7 6e9764ea6ecd](https://content.timeweb.com/assets/b40eddea-f7c7-4693-b997-76834538324a.png?width=762&height=719) 3. Нажмите «Создать». IP-адреса будут выданы в течение нескольких минут и отобразятся в разделе «Публичные IP». Для удобства их можно отфильтровать по зоне доступности. ![F879d023 5d5f 424f 896f 625a7862e919](https://content.timeweb.com/assets/f7b817ca-552a-4a35-8d1d-5cc8b1ee323e?width=1242&height=869) Теперь вы можете назначить адреса нужным сервисам. ## Заказ публичного IP при создании сервиса Заказать новый публичный IP можно и при создании сервиса. Для этого в процессе создания сервера, базы или балансировщика в блоке «Сеть» выберите опцию «Публичный IP». ![26a8e29d 6cd1 4ac8 8cb1 8262592a44bf](https://content.timeweb.com/assets/efa286d5-297d-4bb9-ac86-6be1e894dcff.png?width=756&height=592) В этом случае IP будет сразу привязан к сервису, который вы создаете. В дальнейшем вы сможете переназначить его другому сервису в той же зоне доступности. # Подключение IP к сервису Source: https://timeweb.cloud/docs/public-ip/add-ip-to-service Вы можете в любой момент привязывать к сервисам публичные IP-адреса и отвязывать их. Если вы привязываете публичный IP для приватной сети, то в момент привязки для нее будет [включен NAT](https://timeweb.cloud/docs/vpc/nat). ## Привязка свободного IP к сервису Вы можете привязать новый публичный IP к любому сервису (VDS, балансировщику, базе данных, приватной сети), созданному в этой же [зоне доступности](https://timeweb.cloud/docs/zony-dostupnosti). Чтобы назначить публичный IP сервису: 1. Перейдите в раздел «Сети» — «Публичный IP». 2. Наведите курсор на строку с нужным IP — справа появится значок плюса: опция «Привязать сервис». ![Ee562a58 Aef5 4de9 B7fc 865fb6cfab0a](https://content.timeweb.com/assets/a7662177-6199-4c36-866c-2d5d5b125ade?width=1519&height=852) 3. Выберите сервис: - Если нужный сервис уже существует, выберите его из списка, и нажмите «Привязать». Здесь будут отображены только те сервисы, которые доступны для этого IP. ![Deafec5a F53f 4697 86c2 B2ab92144741](https://content.timeweb.com/assets/2492d89e-30bf-49d1-bd49-dfb8cedff309?width=1473&height=796) - Если сервиса еще нет, кликните «Новый» и выберите нужный тип — будут предложены только сервисы, доступные в локации и зоне этого IP. Далее вы будете перенаправлены на форму создания сервиса, где нужный IP, регион и зона доступности будут указаны автоматически. Завершите создание сервиса — IP по умолчанию будет привязан к нему. ![5e5f55b2 Bf9a 4411 A019 6af863119cd6](https://content.timeweb.com/assets/aef79259-c298-418a-a0f5-bc5c03eff767?width=1498&height=836) ## Перенос IP на другой сервис Публичные IP можно переносить между разными сервисами — приватными сетями, VDS, базами данных и балансировщиками — в одной зоне доступности. Чтобы изменить привязку IP, сначала нужно отвязать его от текущего сервиса и затем назначить новому. > [!NOTE] > Обратите внимание, что при отвязке плавающего IP от сервиса, этот сервис потеряет свой публичный IP и станет недоступен из внешней сети. 1. Перейдите в раздел «Сети» — «Публичные IP». 2. Наведите курсор на нужный IP и кликните на значок минуса — опцию «Отвязать сервис». ![376774de C9b6 4e6a B385 2a99b93ca6d3](https://content.timeweb.com/assets/79c1b7c1-1c81-48d0-8229-53bea73e0cd2?width=1510&height=842) 3. В следующем окне подтвердите действие. 4. Снова наведите курсор на строку с IP и выберите «Привязать сервис». ![9578d312 E29f 4b07 Aa12 6abe51808e98](https://content.timeweb.com/assets/df9983ac-2711-463e-8a0d-8ec715e9d450?width=1497&height=846) 5. Во всплывающем окне выберите нужный сервис из списка и нажмите «Привязать» или кликните «Новый», чтобы создать новую базу, сервер или балансировщик и сразу привязать этот IP. # Настройка обратной зоны Source: https://timeweb.cloud/docs/public-ip/setting-up-ptr > [!NOTE] > Настройка доступна для всех регионов, кроме Новосибирска. Вы можете настроить обратную зону (PTR-запись) вручную. Для этого: 1. Перейдите в раздел «Сети» → «Публичные IP». ![Публичные IP 06 05 2026 10 23 Am](https://content.timeweb.com/assets/5879f44e-a9c9-4200-9226-03181bc4f1d2.png?width=1569&height=802) 2. Кликните на нужный адрес из списка и перейдите на вкладку «PTR». 3. Укажите нужное значение и сохраните изменения. ![80 90 185 125 06 05 2026 10 32 Am](https://content.timeweb.com/assets/88bac8db-72f1-4743-a0b4-21990cc611ad.png?width=1575&height=808) # DDoS-защита для публичных IP Source: https://timeweb.cloud/docs/public-ip/ddos-zashchita-dlya-plavayushchih-ip При заказе публичных IP в **Санкт-Петербурге** и **Москве** вы можете подключить для них опцию [DDoS-защиты](https://timeweb.cloud/docs/anti-ddos). В этом случае вам будут выданы IP-адреса из специального защищенного диапазона. Защита предоставляется нашим партнером DDoS Guard и отражает атаки на уровнях L3/L4 и L7. > [!NOTE] > Подключить защиту можно **только при заказе** публичного IP. Если IP-адрес уже выдан, добавить для него DDoS-защиту невозможно. В этом случае закажите, пожалуйста, новый публичный IP и выберите нужную опцию при заказе. ![634b020a 7d42 42d2 83a3 F3dce5526591](https://content.timeweb.com/assets/3b657674-d742-4e17-8d9c-24f391b9f489.png?width=1538&height=1481) В списке публичных IP-адресов адреса с защитой отмечаются специальной иконкой: ![E4ba67cf 612c 4924 8a7d 59dd61a6ece8](https://content.timeweb.com/assets/c86cc3fd-f9f8-4f5c-9a66-b71bd3273cec?width=1321&height=861) # IPv6-адреса Source: https://timeweb.cloud/docs/public-ip/ipv6-adresa Для облачных серверов и баз данных доступны публичные IPv6-адреса. Они предоставляются бесплатно, но доступны не во всех регионах. В отличие от публичных IPv4-адресов, адреса IPv6 невозможно переносить между сервисами. ## Ограничения - IPv6-адреса недоступны для облачных серверов в Новосибирске. - IPv6-адреса недоступны для серверов и баз данных в OVN-сетях, вне зависимости от региона. - На один сервер можно добавить до 10 адресов IPv6. Каждый из них нужно настроить внутри сервера [по инструкции](https://timeweb.cloud/docs/unix-guides/adding-ip-addresses). - Базе можно выдать только один IPv6-адрес. Специальная настройка для него не требуется. ## Особенности - При [удалении дополнительного IPv6 с сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/network#otkluchenie-v-nastrojkah-servera) он будет удален из аккаунта. Основной IPv6 удалить невозможно. - При [отключении IPv6 для базы данных](https://timeweb.cloud/docs/dbaas/dbaas-manage/public-ip-access#zapretit-dostup) он останется закреплен за кластером. При повторном назначении IPv6, кластеру будет выдан тот же адрес. ## Как пользоваться IPv6 IPv6 можно пользоваться так же, как IPv4. Например, указать его в [FileZilla](https://timeweb.cloud/docs/general/filezilla) или подключиться к серверу по [SSH](https://timeweb.cloud/docs/unix-guides/ssh) и [SFTP](https://timeweb.cloud/docs/unix-guides/sftp): ``` ssh root@2a00:1450:400e:80d::200e sftp root@2a00:1450:400e:80d::200e ``` При этом важно, чтобы вам был выделен IPv6-адрес со стороны вашего интернет-провайдера. Если у вас отключен IPv6, вы можете увидеть сетевую ошибку, например, «Network is unreachable» или «Cannot assign requested address». Что можно сделать: - Проверьте, работает ли у вас IPv6, например, на сайте [test-ipv6.com](https://test-ipv6.com/). - Уточните у своего интернет-провайдера, предоставляют ли вам IPv6. - Проверьте в настройках роутера, что IPv6 включен. Это также можно уточнить у провайдера. - Проверьте в настройках своей ОС, что IPv6 включен ([Windows](https://support.microsoft.com/ru-ru/windows/%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%BE%D0%B2-tcp-ip-bd0a07af-15f5-cd6a-363f-ca2b6f391ace#WindowsVersion=Windows_11), [macOS](https://support.apple.com/ru-ru/guide/mac-help/mchlp2499/mac)). # Удаление публичных IP Source: https://timeweb.cloud/docs/public-ip/delete-ip > [!NOTE] > Если IP-адрес привязан к сервису, то при удалении IP сервис потеряет внешний IP и не будет доступен извне. Вернуть тот же самый публичный IP-адрес будет невозможно. Чтобы удалить публичный IP с аккаунта: 1. Перейдите в раздел «Сети» — «Публичные IP». 2. Нажмите на три точки у нужного адреса и выберите «Удалить IP-адрес». ![F762534a 80f0 417e 95b8 0e28c1e6a2fe](https://content.timeweb.com/assets/695c9751-8af4-429a-8126-7ab690a1f340?width=1510&height=844) Либо кликните на нужный адрес и нажмите на значок удаления справа вверху: ![7ca3989e B784 4718 A7b7 Cf6fc78c4520](https://content.timeweb.com/assets/9082f8d3-8f52-4f2a-8fc6-c6db42d1d1de?width=1524&height=734) 3. Подтвердите действие. # Сетевые диски Source: https://timeweb.cloud/docs/network-drives Сетевые диски — это масштабируемые блочные хранилища, подключаемые к серверу по сети. Вы можете использовать их как дополнительные диски для облачных серверов. В отличие от локальных дисков, сетевые диски: - Не привязаны к конкретному облачному серверу — диск можно отключить от одного и подключить к другому серверу в пределах одного аккаунта. - Размещаются отдельно от сервера, что обеспечивает дополнительную надежность и сохранность данных. - Можно [подключать к кластерам Kubernetes](https://timeweb.cloud/docs/k8s/network-drives-connection). ## Типы сетевых дисков Мы предлагаем два типа сетевых дисков, которые подойдут для разных задач. - **HDD**. Жесткие диски большого объема с невысокой скоростью чтения-записи. Можно использовать в качестве холодного хранилища для данных, к которым не требуется часто обращаться. - **NVMe**. Высокопроизводительные диски для максимально быстрого доступа к данным. | | **HDD** | **NVMe** | | --- | --- | --- | | **Цена за ГБ** | 3 ₽/мес | 12 ₽/мес | | **Минимальный размер, ГБ** | 100 | 10 | | **Максимальный размер, ГБ** | 50000 | 20000 | | **Шаг увеличения, ГБ** | 100 | 5 | | **Чтение, IOPS** | 150 - 2000 | 10 000 - 30 000 | | **Запись, IOPS** | 100 - 1000 | 7000 - 15 000 | | **Максимальная пропускная способность, Мбит/с** | 200 | 500 | ## Ограничения сетевых дисков На текущий момент сервис имеет следующие ограничения: - Сетевые диски доступны только в Санкт-Петербурге и Москве. - Сетевые диски в Москве можно подключать только к кластерам Kubernetes. Подключение к серверам в данный момент недоступно. - Подключать сетевой диск можно только к облачным серверам линеек Premium NVMe или Dedicated CPU. - Сетевые диски невозможно использовать в качестве загрузочных. - Изменить размер сетевого диска можно только в большую сторону. - Недоступно создание бэкапов и снапшотов сетевых дисков в панели управления. - Невозможно создать образ из сетевого диска. - Нет поддержки шифрования. # Создание сетевого диска Source: https://timeweb.cloud/docs/network-drives/create-drives Сетевой диск можно создать в разделе [«Сетевые диски»](https://timeweb.cloud/my/network-drives) или во вкладке «Конфигурация» облачного сервера при добавлении диска. Чтобы создать новый сетевой диск: 1. В панели управления перейдите в раздел [«Сетевые диски»](https://timeweb.cloud/my/network-drives) и нажмите «Создать». 2. Выберите регион и зону доступности диска. Обратите внимание: диск можно подключить только к серверам, созданным в той же зоне доступности. 3. Укажите тип диска и его размер. 4. Задайте имя диска и, при необходимости, добавьте комментарий. 5. Нажмите «Создать». ![Screenshot 01 16 25 18:22:40](https://content.timeweb.com/assets/04952361-460d-4df9-a130-ad2bbd138e6d.png?width=645&height=906) # Подключение сетевого диска Source: https://timeweb.cloud/docs/network-drives/connect-drives > [!NOTE] > По инструкции ниже можно подключить к облачному серверу. Для подключения диска к кластеру Kubernetes, воспользуйтесь [этой статьей](https://timeweb.cloud/docs/k8s/network-drives-connection). После создания сетевого диска его можно подключить к серверу. Для этого: 1. Перейдите во вкладку «Конфигурация» вашего облачного сервера. 2. В разделе «Подключенные диски» нажмите кнопку «Добавить диск». 3. Выберите тип «Сетевой». 4. В выпадающем списке выберите нужный сетевой диск. 5. Нажмите кнопку «Добавить». ![Screenshot 12 19 24 12:31:29](https://content.timeweb.com/assets/d4047b5c-b85d-40e2-8e10-1b6def7d0ba2.png?width=1017&height=482) После подключения диск станет доступен на сервере. Дальнейшая работа с диском: - Если диск новый, необходимо создать разделы, файловую систему и примонтировать диск. Подробная инструкция доступна по [ссылке](https://timeweb.cloud/docs/unix-guides/adding-removing-disk). - Если диск уже размечен, достаточно примонтировать его [по инструкции](https://timeweb.cloud/docs/unix-guides/adding-removing-disk#montirovanie-diska). # Изменение размера сетевого диска Source: https://timeweb.cloud/docs/network-drives/resize-drives Размер сетевого диска можно изменить только в большую сторону. Для изменения размера: 1. Перейдите в раздел [«Сетевые диски»](https://timeweb.cloud/my/network-drives) в панели управления. 2. Выберите нужный диск и кликните по нему. 3. Укажите новый размер и нажмите кнопку «Сохранить». После изменения размера диск необходимо [переразметить](https://timeweb.cloud/docs/unix-guides/disk-resizing). # Отключение диска Source: https://timeweb.cloud/docs/network-drives/disconnect-drives При отключении сетевого диска все данные на нем сохраняются. Вы сможете снова получить доступ к этим данным, подключив диск к любому облачному серверу. Перед отключением диска его необходимо отмонтировать, чтобы предотвратить возможную потерю данных. **Шаг 1. Отмонтируйте диск в операционной системе.** 1. Узнайте точку монтирования диска. Для этого выполните команду: ```shell lsblk ``` Пример вывода: ```shell NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 89.4M 1 loop /snap/lxd/31333 loop1 7:1 0 44.3M 1 loop /snap/snapd/23258 loop2 7:2 0 38.8M 1 loop /snap/snapd/21759 loop3 7:3 0 87M 1 loop /snap/lxd/29351 loop4 7:4 0 63.9M 1 loop /snap/core20/2318 loop5 7:5 0 63.7M 1 loop /snap/core20/2434 sda 8:0 0 10G 0 disk └─sda1 8:1 0 10G 0 part /mnt/disk2 vda 252:0 0 30G 0 disk └─vda1 252:1 0 30G 0 part / vdb 252:16 0 1M 1 disk vdc 252:32 0 20G 0 disk └─vdc1 252:33 0 15G 0 part ``` В данном примере наш диск — `sda`, а раздел `sda1` примонтирован к директории `/mnt/disk2`. 2. Отмонтируйте диск, выполнив команду: ```shell umount -l /mnt/disk2 ``` **Шаг 2. Отключите диск в панели управления.** 1. Перейдите во вкладку «Конфигурация» вашего облачного сервера. 2. В разделе «Подключенные диски» наведите курсор на нужный диск. 3. Нажмите кнопку «Отключить». ![Image4](https://content.timeweb.com/assets/22d25298-3953-4d97-b64e-f0993a8c55b4.png?width=792&height=644) # Удаление сетевого диска Source: https://timeweb.cloud/docs/network-drives/remove-drives Удалить диск можно даже в том случае, если он подключен к какому-либо серверу. Предварительно отключать диск не требуется. При удалении сетевого диска все данные на нем будут безвозвратно удалены. Убедитесь, что вы сохранили необходимую информацию. Чтобы удалить сетевой диск: 1. Перейдите в раздел «Сетевые диски» в панели управления. 2. Найдите нужный диск и нажмите на три точки рядом с ним. 3. В открывшемся меню выберите пункт «Удалить». ![Image1](https://content.timeweb.com/assets/6ae4a69f-d7eb-4e1b-b887-5ad71f314ac9.png?width=1015&height=481) # Виртуальные роутеры Source: https://timeweb.cloud/docs/virtual-routers Виртуальный роутер — это сетевой сервис, выступающий в качестве центрального узла для управления трафиком облачных ресурсов. Виртуальный роутер позволяет объединять приватные сети (VPC), обеспечивать им безопасный доступ в интернет, публиковать в сети внутренние сервисы и настраивать маршрутизацию трафика. Используя виртуальный роутер, вы получаете контроль над сетевыми потоками, повышаете безопасность и можете строить более сложные и отказоустойчивые сетевые топологии в облаке. В текущей реализации виртуальные роутеры можно использовать для решения следующих задач: #### Доступ в Интернет (NAT) **Что делает:** Предоставляет выход в интернет серверам внутри VPC, не имеющим собственных публичных IP-адресов, маскируя их трафик своим публичным IP. **Как работает:** Роутер заменяет приватный IP-адрес источника в исходящих пакетах на свой публичный IP-адрес. Ответы из интернета возвращаются на роутер, который направляет их обратно на исходный приватный сервер. Требует наличия публичного IP у роутера и правильной настройки шлюза на серверах. **Зачем нужно:** Для обновлений ОС, работы с внешними сервисами, отправки почты и т.д. с серверов, изолированных в VPC. #### Отказоустойчивость (HA, High Availability) **Что делает:** Обеспечивает непрерывную работу сети при сбое одного из экземпляров роутера, за счет использования двух синхронизированных экземпляров (нод). **Как работает IP-адресация в HA:** При подключении VPC к HA-роутеру в этой сети резервируется три IP-адреса: - **Один виртуальный (плавающий) IP**: Это основной IP-адрес шлюза, который вы должны прописать на своих серверах. Он всегда активен и принадлежит текущей активной ноде роутера. - **Два технических IP**: По одному IP-адресу для каждой физической ноды роутера. Они используются для служебных целей и не должны указываться как шлюз на клиентских серверах. **Зачем нужно:** Для критически важных сервисов, где недопустим простой сети из-за отказа одного компонента. # Управление роутерами в панели Source: https://timeweb.cloud/docs/virtual-routers/manage-routers В статье рассматриваем работу с роутерами в интерфейсе панели управления Timeweb Cloud. ## Создание виртуального роутера Чтобы создать виртуальный роутер: 1. Перейдите в раздел «Сети» → «Роутеры». 2. Нажмите «Создать» или «Добавить». 3. Выберите регион. Подключать к роутеру будет можно только приватные сети, размещенные в этом же регионе и зоне доступности. 4. Выберите тариф. Для использования отказоустойчивого роутера (HA, High Availability) выберите тариф с двумя нодами. 5. Выберите публичный адрес роутера, с которого он будет выходить в интернет. Если у вас есть свободные публичные IP в выбранной зоне доступности, система выведет их в списке. Адрес можно не указывать — в этом случае роутер будет создан только с приватным IP. 6. Выберите приватные сети, которые нужно подключить к роутеру. Для создания роутера необходимо выбрать хотя бы одну сеть. 7. Укажите удобное имя роутера и комментарий к нему. 8. Нажмите «Заказать». Роутер запустится в течение нескольких минут. ## Добавление приватных сетей Вы можете подключать приватные сети к уже существующему роутеру. Необходимая приватная сеть должна быть [создана предварительно](https://timeweb.cloud/docs/vpc/managing-bgp-networks/creating-bgp-networks). Чтобы добавить сеть к роутеру: 1. Перейдите в раздел «Сети» → «Роутеры». 2. Кликните на нужный роутер. 3. На вкладке «Приватные сети» нажмите «Добавить приватную сеть». 4. Выберите нужную сеть или сети и сохраните изменения. ![44d086fa 6aed 48de B209 21e0ebd7eb8d](https://content.timeweb.com/assets/1ab6d777-f3b7-43c3-b3e2-ea75f59c8479.png?width=1516&height=814) ## Удаление приватных сетей Сеть можно отключить от роутера в любой момент. Учтите, что к виртуальному роутеру должна быть подключена как минимум одна приватная сеть. Если это единственная подключенная сеть, удалить ее нельзя. Для удаления приватной сети: 1. Перейдите в раздел «Сети» → «Роутеры». 2. Кликните на нужный роутер. 3. На вкладке «Приватные сети» кликните на три точки у нужной сети и нажмите «Удалить». 4. Подтвердите действие. ![Bdaf6db9 575f 409e Ada0 A56eb68cd94b](https://content.timeweb.com/assets/caefba71-712c-442a-aba6-a05e6f4e26bf.png?width=1517&height=799) ## Удаление роутера Чтобы удалить виртуальный роутер: 1. Перейдите в раздел «Сети» → «Роутеры». 2. Кликните на три точки у роутера и нажмите «Удалить». 3. Подтвердите действие. ![24bd6198 326b 480c 8c57 A2002fac13df](https://content.timeweb.com/assets/4a1dd361-c128-4d61-9553-26f88d22330b.png?width=1521&height=813) Другой вариант — перейти в конкретный роутер и кликнуть иконку удаления справа вверху. ![0f3dbf7d Fc38 42d2 B507 C77da1abed2d](https://content.timeweb.com/assets/d4c1210d-4b51-42da-803e-eee844629a71.png?width=1518&height=752) # Настройка шлюза для доступа в интернет Source: https://timeweb.cloud/docs/virtual-routers/nat-gateway-setup Чтобы облачные серверы имели доступ к интернету при работе через виртуальный роутер в режиме NAT, необходимо настроить маршрут по умолчанию на каждом сервере. ## Настройка в Linux Инструкция подходит для Ubuntu, Debian, CentOS, Astra Linux, AlmaLinux и Arch Linux. 1. Запустите терминал. 2. Определите название интерфейса, подключенного к приватной сети, выполнив: ```shell ip addr ``` Найдите интерфейс, у которого в строке `inet` указан приватный IP из сети роутера, например: ```shell inet 192.168.0.7/24 ``` В этом примере интерфейс называется `eth1`. 3. Добавьте маршрут по умолчанию (замените `192.168.0.4` на IP-адрес вашего шлюза из раздела «Сети» → «Роутеры» → «Приватные сети»): ```shell sudo ip route add default via 192.168.0.4 dev eth1 ``` 4. Проверьте доступ к внешней сети: ```shell ping 8.8.8.8 ``` Чтобы маршрут сохранялся после перезагрузки, настройте его в конфигурации сети вашего дистрибутива. Ubuntu Создайте файл `/etc/netplan/60-custom.yaml`: ```shell sudo nano /etc/netplan/60-custom.yaml ``` Добавьте конфигурацию: ```shell network: version: 2 ethernets: eth1: routes: - to: 0.0.0.0/0 via: 192.168.0.4 ``` Замените `eth1` и `192.168.0.4` на свой интерфейс и шлюз. Закройте права на чтение этого файла всем, кроме `root`: ```shell sudo chmod 600 /etc/netplan/60-custom.yaml ``` Примените конфигурацию: ```shell sudo netplan apply ``` Проверьте: ```shell ip route ``` Debian/Astra > [!NOTE] > Начиная с Debian 12, для настройки сети используется Netplan. Если вы работаете с этой версией, воспользуйтесь инструкцией для Ubuntu. Откройте файл конфигурации: ```shell sudo nano /etc/network/interfaces ``` Найдите блок с интерфейсом и добавьте: ```shell auto eth1 iface eth1 inet static address 192.168.0.7/24 gateway 192.168.0.4 ``` Подставьте свои значения для шлюза и адреса. Примените конфигурацию: ```shell sudo systemctl restart networking ``` Проверьте: ```shell ip route ``` CentOS/AlmaLinux Установите шлюз (замените `ens3` и `192.168.0.4`): ```shell nmcli connection modify ens3 ipv4.gateway 192.168.0.4 nmcli connection modify ens3 ipv4.never-default no nmcli connection up ens3 ``` Проверьте: ```shell ip route ``` Arch Linux Создайте файл конфигурации: ```shell sudo nano /etc/systemd/network/10-private.network ``` Добавьте: ```shell [Match] Name=eth1 [Network] Gateway=192.168.0.4 ``` Примените конфигурацию: ```shell sudo systemctl restart systemd-networkd ``` Проверьте: ```shell ip route ``` ## Настройка в Windows 1. Запустите командную строку **от имени администратора**. 2. Определите номер вашего сетевого интерфейса: ```shell route print ``` Найдите в таблице нужный интерфейс и запомните его номер. 3. Добавьте маршрут командой: ```shell route add 0.0.0.0 mask 0.0.0.0 192.168.0.4 if <номер_интерфейса> ``` Чтобы маршрут сохранялся после перезагрузки, добавьте флаг `/p`: ```shell route add 0.0.0.0 mask 0.0.0.0 192.168.0.4 if <номер_интерфейса> /p ``` 4. Проверьте доступ к внешней сети: ```shell ping 8.8.8.8 ``` ## Удаление существующих маршрутов Если маршрут уже существует, удалите его командой ниже и выполните настройку заново. В Linux: ```shell sudo ip route del default via 192.168.0.4 dev eth1 ``` В Windows: ```shell route delete 0.0.0.0 ``` # Использование DHCP Source: https://timeweb.cloud/docs/virtual-routers/usage-dhcp DHCP (Dynamic Host Configuration Protocol) — это протокол, который отвечает за автоматическую выдачу сетевых параметров серверам. В наших виртуальных роутерах DHCP используется для выдачи IP-адреса и установки маршрута по умолчанию до шлюза. Для приватной сети можно включить DHCP в настройках виртуального роутера. Для этого в панели управления роутером перейдите во вкладку «Приватные сети» и активируйте DHCP у необходимых приватных сетей. После этого при создании или переустановке сервера и добавлении его в приватную сеть вы сможете включить использование DHCP. ![Image 20251001165509886](https://content.timeweb.com/assets/7a1deba6-77a8-4966-b99f-ad1ddb313245.png?width=2018&height=1452) > [!NOTE] > DHCP можно активировать только в одном роутере для приватной сети. Это важно, если сеть подключена к нескольким роутерам. После включения DHCP в роутере при создании или переустановке сервера появится возможность выбрать использование DHCP для приватной сети. ![Image 20251001173357629](https://content.timeweb.com/assets/90dbd0a1-893a-47ff-850f-1266a27b8122.png?width=1032&height=794) После создания сервера адрес интерфейса, отвечающего за приватную сеть, будет назначен автоматически. Проверьте это командой: ```shell ip a ``` Пример вывода: ```shell 3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:52:00:fa:9c:48 brd ff:ff:ff:ff:ff:ff altname enp0s8 altname ens8 inet 192.168.0.8/24 metric 50 brd 192.168.0.255 scope global dynamic eth1 valid_lft 86368sec preferred_lft 86368sec inet6 fe80::5652:ff:fefa:9c48/64 scope link valid_lft forever preferred_lft forever ``` Ключевой признак работы DHCP — отметка `dynamic` у IPv4-адреса интерфейса. Также вы увидите отметку о включении DHCP во вкладке «Сеть» облачного сервера. ![Image 20251001181638020](https://content.timeweb.com/assets/ea8d29a7-c7b2-421d-8233-287b0ba210f7.png?width=2016&height=1548) # Проброс портов Source: https://timeweb.cloud/docs/virtual-routers/dnat Проброс портов, или DNAT (Destination Network Address Translation), позволяет открыть доступ к сервисам, работающим внутри приватной сети, через внешний IP виртуального роутера. С его помощью можно, например, подключиться к веб-серверу или базе данных, запущенной на внутренней машине, напрямую из интернета. > [!NOTE] > При обращении к сервису по внешнему IP через проброшенный порт [правила файрвола](https://timeweb.cloud/docs/firewall) не применяются. ## Создание правил 1. Откройте вкладку «Проброс портов» в панели управления виртуальным роутером. 2. Нажмите «Добавить правило». ![Image 20251015175654431](https://content.timeweb.com/assets/c8bde013-3c04-4780-983e-1cf1d8deb24b.png?width=2562&height=1218) 3. В открывшемся окне укажите параметры маршрутизации: - Публичный IP — адрес, по которому будет доступен сервис снаружи. - Внешний порт — порт, на который будут приходить запросы. - Протокол — выберите один из вариантов: - TCP - UDP - TCP и UDP - Приватный IP — внутренний адрес сервера, на котором запущен нужный сервис. - Внутренний порт — порт, на котором сервис слушает соединения. ![Image 20251015180207319](https://content.timeweb.com/assets/aaebf325-fc99-4545-9c7f-fe679165f134.png?width=1158&height=888) 4. Нажмите «Сохранить», чтобы применить правило. При необходимости можно указать диапазон портов вместо одного значения — через тире, например `10-80`. Такой же диапазон нужно задать и для внутреннего, и для внешнего IP. ![Image 20251017144735070](https://content.timeweb.com/assets/9ab537bd-3b6a-4461-a098-ef5b39a758ea.png?width=902&height=622) Если порты не указаны вовсе, система применит диапазон `1–65535`, то есть пробросит все порты. Но в этом случае вы не сможете добавить новые правила, использующие тот же публичный IP. # Статические маршруты Source: https://timeweb.cloud/docs/virtual-routers/static-routes Статические маршруты (Static Routes) — это механизм, позволяющий настроить маршрутизацию между несколькими приватными сетями, подключенными к разным виртуальным роутерам в пределах одной локации. Использование статических маршрутов на виртуальном роутере позволяет связать эти сети, минуя необходимость настройки VPN-туннелей, что значительно упрощает организацию взаимодействия между сервисами, размещенными в разных подсетях. ## Настройка статических маршрутов 1. Для перейдите в панель управления виртуальным роутером и откройте раздел «Статические маршруты». 2. Нажмите на кнопку «Добавить маршрут». ![Scr 20251201 Onai](https://content.timeweb.com/assets/ddc10748-2768-427a-8b1b-b605d23e1070.png?width=2012&height=1452) 3. В появившемся окне укажите: - - Следующий узел (Next Hop) — IP-адрес или интерфейс виртуального роутера, через который должен быть перенаправлен трафик к сети назначения. - Сеть назначения — сеть, к которой вы хотите получить доступ. ![Scr 20251201 Oosh](https://content.timeweb.com/assets/686ee7f1-a52a-4c2a-a0d4-82903bcd1665.png?width=908&height=530) В простейшем случае: - в качестве следующего узла выберите другой виртуальный роутер, - в качестве сети назначения — подсеть, добавленную во втором роутере. ## Ограничения Статические маршруты могут быть добавлены только между сетями и роутерами, расположенными в пределах одной локации. В случае использования виртуального сервера в качестве следующего узла: - CIDR — сеть назначения указывается строго в формате CIDR (X.X.X.X/Y). - Конфликты — нельзя добавить маршрут, который конфликтует с уже подключенной к роутеру сетью. # Мониторинг Source: https://timeweb.cloud/docs/monitoring Сервис мониторинга позволяет отслеживать стабильность работы сайтов, серверов и приложений, размещенных в облачной инфраструктуре Timeweb Cloud или на сторонних платформах. С его помощью вы можете: - Контролировать доступность ресурсов. - Оперативно получать уведомления о сбоях и инцидентах. - Отслеживать срок действия SSL-сертификатов. - Получать уведомления о восстановлении доступности. [Уведомления](https://timeweb.cloud/docs/monitoring/manage#nastrojka-uvedomlenij) можно получать по email, в Telegram и Макс. Стоимость мониторинга одного сервиса — 30 рублей в месяц. Списания почасовые. Списания выполняются, даже если мониторинг [приостановлен](https://timeweb.cloud/docs/monitoring/manage#priostanovka-monitoringa). Чтобы остановить списания, необходимо [удалить](https://timeweb.cloud/docs/monitoring/delete) сервис из мониторинга. #### Опции в разработке Мы продолжаем работу над сервисом, и в ближайшее время будут реализованы следующие возможности: - Отслеживание даты окончания регистрации домена. - Расширение списка HTTP-методов (сейчас доступны только HEAD и GET). - Управление уведомлениями для каждого мониторинга отдельно. # Типы проверок Source: https://timeweb.cloud/docs/monitoring/types В мониторинге доступны следующие типы проверок. ## HTTP/HTTPS Контроль доступности сервисов с помощью HTTP-запросов. Назначение: - Проверка доступности сайта или сетевого ресурса - Проверка кода ответа (`200`, `500` и т.д.) - Контроль времени отклика Проверка считается успешной, если сервис вернул код ответа `2xx`. По умолчанию используется метод `HEAD`, так как он минимально нагружает сервер и работает быстрее. При необходимости также можно использовать `GET`. ## Ping Простой способ проверить, доступен ли сервис в сети. Назначение: - Проверка доступности сервера - Быстрый базовый health-check Проверка выполняется по протоколу ICMP. > [!NOTE] > Ping проверяет только сетевую доступность сервера, а не конкретного сервиса на нем. Если в работе сервиса случился сбой, но сам сервер отвечает, проверка будет считаться успешной. Для контроля доступности конкретных сервисов рекомендуем использовать проверки «HTTP/HTTPS» или «Порт TCP» ## Порт TCP Удобный метод для контроля доступности конкретных служб на сервере: баз данных, FTP, почтовых и других серверов. Назначение: - Проверка доступности сервиса на TCP-порту. Можно использовать как стандартные порты (например, `25` для SMTP, `53` для DNS), так и любой пользовательский порт в диапазоне от `1` до `65535`. ## Проверка SSL Доступна в рамках мониторинга «HTTP/HTTPS». Назначение: - Проверка корректности SSL-сертификата - Проверка срока действия сертификата - Уведомления о скором истечении - Уведомления о продлении SSL Мониторинг отправляет запрос к сервису по HTTPS и проверяет валидность сертификата и корректность его установки. # Добавление сервиса в мониторинг Source: https://timeweb.cloud/docs/monitoring/create Настройки мониторинга, за исключением типа проверки и хоста, можно будет изменить в дальнейшем. Чтобы добавить сервис в мониторинг: 1. Перейдите в раздел «Мониторинг». 2. Нажмите «Создать» или «Добавить». 3. Выберите тип мониторинга: **HTTP/HTTPS**, **Ping** или **Порт TCP**. 4. Выберите регион проверки. Мы рекомендуем выбирать несколько регионов, так как это повышает надежность мониторинга. Проверки только из одного региона могут вызывать ложные срабатывания из-за кратковременных неполадок в нем. 5. Задайте параметры мониторинга. HTTP/HTTPS - **Хост** Выберите домен из списка или введите любой домен вручную. Допустимые форматы: - - `http://example.com` - `https://example.com` Перевод кириллических и других IDN-доменов в punycode не требуется. - **Метод** По умолчанию используется `HEAD`, так как он быстрее и производительнее. Вы также можете выбрать `GET`. - **Интервал проверки** Время между проверками. - - Допустимый диапазон — от 1 до 30 минут. - Значение по умолчанию — 5 минут. - **Таймаут запроса** Время ожидания ответа от сервера. Чем меньше таймаут, тем быстрее мониторинг зафиксирует проблему, однако низкий таймаут также увеличивает вероятность ложного срабатывания. - - Допустимый диапазон — от 1 до 30 секунд. - Значение по умолчанию — 10 секунд. - **Следовать за редиректами** Если опция выключена, ответы с кодами `3xx` считаются ошибкой. Если включена, сервис следует за редиректом и оценивает конечный ответ. - **Мониторинг SSL-сертификата** Опция доступна, если указан хост с HTTPS. Если опция включена, сервис отслеживает срок окончания SSL-сертификата, успешность его продления, возможные проблемы с сертификатом. Уведомления отправляются: - - За 30, 14, 7, 3 и 1 день до окончания срока действия сертификата. - В день окончания срока действия. - После успешного продления сертификата. - **Заголовки запросов** Позволяет указать HTTP-заголовки, которые будут автоматически передаваться при каждой проверке. Полезно в случаях, когда для корректной обработки запроса необходима передача дополнительных параметров. Примеры использования: - - `Authorization` — для проверки доступности API, защищенных авторизацией (например, по Bearer-токену или Basic Auth). - `User-Agent` — для передачи собственного значения user-agent, например если сервер блокирует запросы с заголовками по умолчанию или фильтрует трафик по этому полю. - `Host` — чтобы переопределить заголовок `Host` и проверить ответ конкретного сайта или приложения, если сервер обслуживает несколько виртуальных хостов. Значение указывается в виде домена или поддомена без протокола, например: `example.com` или `api.example.com`. Ping - **Хост** Выберите IP-адрес из списка или введите IP или домен вручную. В списке доступны все публичные IP-адреса сервисов, созданных на аккаунте. Допустимые форматы: - - `192.168.100.1` - `example.com` Перевод кириллических и других IDN-доменов в punycode не требуется. > [!NOTE] > Если в качестве хоста указан домен, а не IP-адрес, для проверки используется A-запись домена. - **Интервал проверки** Время между проверками. - - Доступные значения — от 1 до 30 минут. - Значение по умолчанию — 5 минут. - **Таймаут запроса** Время ожидания ответа от сервера. Чем меньше таймаут, тем быстрее мониторинг зафиксирует проблему, однако низкий таймаут также увеличивает вероятность ложного срабатывания. - - Допустимый диапазон — от 1 до 30 секунд. - Значение по умолчанию — 10 секунд. Порт TCP - **Хост** Выберите IP-адрес из списка или введите любой IP или домен вручную. В списке доступны все публичные IP-адреса сервисов, созданных на аккаунте. Допустимые форматы: - - `192.168.100.1` - `example.com` Перевод кириллических и других IDN-доменов в punycode не требуется. > [!NOTE] > Если в качестве хоста указан домен, а не IP-адрес, для проверки используется A-запись домена. - **Порт** Указание TCP-порта позволяет проверить доступность конкретной службы. Выберите порт из списка или введите значение вручную, в диапазоне от 1 до 65535. - **Интервал проверки** Время между проверками. - - Доступные значения — от 1 до 30 минут. - Значение по умолчанию — 5 минут. - **Таймаут запроса** Время ожидания ответа от сервера. Чем меньше таймаут, тем быстрее мониторинг зафиксирует проблему, однако низкий таймаут также увеличивает вероятность ложного срабатывания. - - Допустимый диапазон — от 1 до 30 секунд. - Значение по умолчанию — 10 секунд. 6. Укажите имя мониторинга, которое будет отображаться в панели управления, и комментарий при необходимости. Если имя не указано, в панель будет выведено значение из поля «Хост». 7. Выберите, в какой проект нужно добавить мониторинг. 8. Нажмите «Заказать». Мониторинг для сервиса будет создан и начнет работать. # Управление мониторингом Source: https://timeweb.cloud/docs/monitoring/manage ## Просмотр инцидентов Когда мониторинг обнаруживает, что сервис недоступен, он автоматически заводит инцидент в панели управления и отправляет уведомление. Чтобы просмотреть все инциденты по конкретному сервису: 1. Перейдите в раздел «Мониторинг». 2. Кликните на нужный сервис. 3. Перейдите на вкладку «Инциденты». Инцидент будет в статусе «В процессе» до тех пор, пока мониторинг не определит, что сервис доступен во всех выбранных регионах. После этого инцидент перейдет в статус «Закрыт». Посмотреть статистику по сервису в целом можно на вкладке «Дашборд». На графике вы можете вывести данные за 6 часов, день, неделю, а также отсортировать их по регионам. Также на «Дашборде» можно сразу увидеть общее количество инцидентов, аптайм сервиса и когда была выполнена последняя проверка. ## Настройка уведомлений По умолчанию в мониторинге включены уведомления на емейл, а также в Telegram и Макс, если они привязаны к аккаунту. Вы можете изменить эти настройки в панели управления. Сейчас уведомления настраиваются сразу для всех сервисов, добавленных в мониторинг. В следующих релизах появится возможность гибко настраивать оповещения под каждый сервис отдельно. Для управления уведомлениями: 1. Кликните на логин аккаунта справа вверху и выберите «Настройки аккаунта». 2. Перейдите на вкладку «Уведомления». 3. Подключите удобные способы связи: Telegram или Макс. 4. Внизу в блоке «Уведомления» кликните на карточку «Мониторинг». 5. Включите необходимые уведомления. ## Изменение настроек мониторинга Вы можете изменить настройки мониторинга, указанные при добавлении сервиса: - регионы проверок - интервал - таймаут Для этого: 1. Перейдите в раздел «Мониторинг» и кликните на нужный сервис. 2. На вкладке «Управление» нажмите «Изменить» в пункте «Параметры мониторинга». 3. Задайте нужные параметры и сохраните изменения. ## Приостановка мониторинга Мониторинг конкретного сервиса можно приостановить в любой момент, а потом запустить снова. Когда мониторинг приостановлен, уведомления по нему прекращаются. Обратите внимание, что при приостановке мониторинга тарификация продолжается. Чтобы прекратить списания, сервис необходимо [удалить из мониторинга](https://timeweb.cloud/docs/monitoring/delete). Для приостановки мониторинга: 1. Перейдите в раздел «Мониторинг». 2. Кликните на три точки у нужного сервиса. 3. Выберите «Приостановить». 4. Подтвердите действие. Чтобы снова запустить мониторинг: 1. Перейдите в раздел «Мониторинг». 2. Кликните на три точки у нужного сервиса. 3. Нажмите «Запустить». # Коды ошибок Source: https://timeweb.cloud/docs/monitoring/error-codes В статье приведены ошибки, которые обрабатываются мониторингом, и их описания. ## Ошибки сети Ошибки, связанные с сетевыми проблемами и невозможностью подключения. | **Ошибка** | **Описание** | | --- | --- | | Не удалось установить соединение | Соединение не было установлено. Возможные причины: подключение отклонено сервером, соединение сброшено сервером или клиентом, сеть недоступна, доступ запрещен, хост недоступен, сокет закрыт | | Превышено время ожидания подключения | Время ожидания ответа от сервера истекло | ## Ошибки 4xx Ошибки HTTP с кодами `4xx` обычно возникают из-за неверных запросов, например, некорректного формата данных или недостаточного доступа. | **Ошибка** | **Описание** | | --- | --- | | 400 Bad Request | Неверный запрос. Сервер не может обработать запрос из-за синтаксической ошибки | | 401 Unauthorized | Неавторизованный доступ. Для выполнения запроса необходима аутентификация | | 402 Payment Required | Требуется оплата для продолжения запроса | | 403 Forbidden | Доступ к ресурсу запрещен | | 404 Not Found | Ресурс не найден на сервере | | 405 Method Not Allowed | Метод HTTP не разрешен для данного ресурса | | 406 Not Acceptable | Формат ответа, указанный в запросе, не поддерживается сервером | | 407 Proxy Authentication Required | Требуется аутентификация через прокси-сервер для выполнения запроса | | 408 Request Timeout | Превышено время ожидания запроса от клиента | | 409 Conflict | Конфликт с текущим состоянием ресурса, запрос не может быть выполнен | | 410 Gone | Ресурс был удален | | 411 Length Required | Не указан размер содержимого запроса | | 412 Precondition Failed | Не выполнено одно из условий для запроса | | 413 Payload Too Large | Тело запроса слишком велико для обработки сервером | | 414 URI Too Long | URI запроса слишком длинный для обработки сервером | | 415 Unsupported Media Type | Тип медиа в запросе не поддерживается сервером | | 416 Range Not Satisfiable | Запрашиваемый диапазон данных не может быть обработан сервером | | 417 Expectation Failed | Ожидания, указанные в запросе, не могут быть выполнены сервером | | 418 I'm a teapot | Шуточный ответ «я — чайник» | | 421 Misdirected Request | Запрос направлен не на тот сервер, который может его обработать | | 422 Unprocessable Entity | Запрос не может быть обработан из-за синтаксической ошибки в содержимом | | 423 Locked | Ресурс заблокирован и не может быть изменен | | 424 Failed Dependency | Запрос не может быть выполнен из-за сбоя в зависимых запросах | | 425 Too Early | Запрос поступил слишком рано, сервер еще не готов к его обработке | | 426 Upgrade Required | Требуется обновление протокола для выполнения запроса | | 428 Precondition Required | Требуется выполнение предварительных условий для выполнения запроса | | 429 Too Many Requests | Слишком много запросов было отправлено за короткий промежуток времени | | 431 Header Fields Too Large | Заголовки запроса слишком большие для обработки сервером | | 451 Unavailable For Legal Reasons | Доступ к ресурсу ограничен по юридическим причинам | ## Ошибки 5xx Ошибки HTTP с кодами `5xx` возникают, когда запрос не может быть обработан из-за внутренних проблем на сервере. | **Ошибка** | **Описание** | | --- | --- | | 500 Internal Server Error | Внутренняя ошибка сервера, запрос не может быть выполнен | | 501 Not Implemented | Необходимая функциональность не поддерживается сервером | | 502 Bad Gateway | Ошибка шлюза | | 503 Service Unavailable | Сервис временно недоступен | | 504 Gateway Timeout | Превышено время ожидания ответа от вышестоящего сервера | | 505 HTTP Version Not Supported | Запрашиваемая версия HTTP не поддерживается сервером | | 506 Variant Also Negotiates | Ошибка при попытке согласования варианта контента на сервере | | 507 Insufficient Storage | На сервере недостаточно места для выполнения запроса | | 508 Loop Detected | Обнаружен бесконечный цикл при обработке запроса | | 510 Not Extended | Необходимые расширения не поддерживаются сервером | | 511 Network Authentication Required | Для доступа к сети необходима аутентификация | ## Ошибки Nginx Ошибки, вызванные некорректной конфигурацией или обработкой запросов на стороне Nginx. | **Ошибка** | **Описание** | | --- | --- | | 494 Слишком большой заголовок | Размер заголовка запроса превышает ограничения, установленные на сервере | | 495 Неверный клиентский сертификат | Клиентский сертификат недействителен или не соответствует требованиям сервера | | 496 Требуется клиентский сертификат | Для соединения нужен корректный клиентский сертификат | | 497 HTTP-запрос на HTTPS-порт | HTTP-запрос отправлен на порт, ожидающий HTTPS-соединения | ## Ошибки Cloudflare Ошибки, вызванные некорректной настройкой или обработкой запросов при использовании Cloudflare. | **Ошибка** | **Описание** | | --- | --- | | 520 Неизвестный ответ | Сервер вернул пустой или неизвестный ответ | | 521 Сервер недоступен | Сервер отказал в соединении | | 522 Таймаут соединения | Превышено время ожидания соединения с сервером | | 523 Неверные DNS-записи | Сервер недоступен из-за неверных DNS-записей | | 524 Таймаут HTTP-ответа | Превышено время ожидания HTTP-ответа от сервера | | 525 Ошибка SSL-/TLS-рукопожатия | Произошла ошибка при установлении SSL/TLS- соединения | ## Ошибки DNS Ошибки, возникающие при разрешении доменных имен. | **Ошибка** | **Описание** | | --- | --- | | Хост не найден (HTTP / ICMP / TCP) | Указанный хост не найден в DNS | ## Ошибки сертификатов SSL/TLS Ошибки, выявляемые при проверке SSL-соединения. | **Ошибка** | **Описание** | | --- | --- | | Сертификат невалиден | Не удалось подтвердить валидность сертификата. Возможные причины: самоподписанный сертификат, невозможно проверить подпись сертификата, сертификат выпущен на другой домен, сертификат истек, сертификат еще не начал действовать и др.. | # Адреса серверов мониторинга Source: https://timeweb.cloud/docs/monitoring/monitoring-server-addresses Серверы мониторинга регулярно отправляют запросы к сервису, чтобы проверить его доступность. Если на вашей стороне настроены фильтры, WAF, firewall или анализ логов, используйте IP-адреса и User-Agent ниже, чтобы отличать эти запросы от обычного трафика. **IPv4-адреса**: ```shell 45.132.50.172 72.56.115.167 72.56.127.92 89.19.213.208 90.156.230.50 91.200.148.135 147.45.107.42 147.45.149.170 ``` **IPv6-адреса**: ```shell 2a03:6f00:8::17c 2a03:6f00:8::41 2a03:6f00:14:1::8c 2a03:6f00:14:1::93c 2a03:6f01:1:2::1:3d26 2a03:6f01:1:2::1:9a45 2a03:6f02::1:2f84 2a03:6f02::8a41 ``` Для HTTP/HTTPS-проверок мониторинг передает заголовок User-Agent: ```shell Timeweb-Cloud-Monitoring/1.0 ``` По этому значению можно определить запросы мониторинга в HTTP-логах или настроить отдельные правила обработки на стороне веб-сервера. Если на сервисе настроены ограничения доступа по IP-адресам, добавьте в список разрешенных адресов IPv4- и IPv6-адреса серверов мониторинга. Для HTTP/HTTPS-проверок также можно учитывать заголовок User-Agent. Для проверок Ping и Порт TCP заголовок User-Agent не передается, так как они не используют HTTP-запросы. # Удаление сервиса из мониторинга Source: https://timeweb.cloud/docs/monitoring/delete Если вам нужно временно прекратить мониторинг сервиса, его можно [приостановить](https://timeweb.cloud/docs/monitoring/manage#priostanovka-monitoringa). Чтобы безвозвратно удалить сервис из мониторинга: 1. Перейдите в раздел «Мониторинг». 2. Кликните на три точки у нужного сервиса. 3. Выберите «Удалить». 4. Подтвердите действие. # CDN Source: https://timeweb.cloud/docs/cdn CDN (Content Delivery Network, сеть доставки контента) — это распределенная сеть серверов, которая ускоряет загрузку сайтов и приложений за счет кэширования контента и его доставки с ближайшего к пользователю узла. Когда пользователь запрашивает файл, CDN проверяет, есть ли он в кэше, и если да — сразу отдает его пользователю с минимальной задержкой. Если файла нет, узел CDN запрашивает его у сервера-источника, сохраняет копию в кэше и затем использует ее для последующих запросов. Серверы CDN-сети размещены по всему миру: в России и СНГ, Европе, Азии, на Ближнем Востоке, в Северной Америке, Австралии и Океании. ## Когда нужен CDN CDN стоит использовать, если: - В проекте много статического контента: изображений, видео, JavaScript и CSS. - Вы работаете с крупными файлами и медиа. CDN ускоряет доставку тяжелого контента и повышает стабильность загрузки. - Аудитория распределена по разным регионам. Пользователи получают данные с ближайших узлов, что снижает задержки. - Нагрузка высокая или нестабильная. CDN берет на себя значительную часть трафика и снижает число обращений к серверу-источнику. - Вы раздаете данные из S3. CDN кэширует объекты и уменьшает количество прямых запросов к хранилищу. ## Стоимость сервиса Стоимость сервиса складывается из: - 1 ₽ в месяц за каждый CDN-ресурс; - 0,6 ₽ за 1 ГБ исходящего трафика по каждому ресурсу. Если CDN-ресурс неактивен в течение 7 дней, он [автоматически приостанавливается](https://timeweb.cloud/docs/cdn/deactivate#avtomaticheskaya-priostanovka). Неактивным считается ресурс, к которому за это время не поступило ни одного HTTP-запроса. ## Регионы присутствия | **Россия и СНГ** | Владивосток, Екатеринбург, Иркутск, Казань, Калининград, Краснодар, Красноярск, Махачкала, Москва, Нижний Новгород, Новосибирск, Норильск, Омск, Ростов-на-Дону, Самара, Санкт-Петербург, Симферополь, Ставрополь, Тюмень, Уфа, Хабаровск, Химки, Чита, Акколь, Алматы, Астана, Ашхабад, Бишкек, Ереван, Караганда, Кишинев, Костанай, Минск, Ташкент, Тбилиси | | --- | --- | | **Европа** | Амстердам, Брюссель, Варшава, Кишинев, Лондон, Мадрид, Милан, Париж, Стокгольм, Франкфурт-на-Майне | | **Азия** | Бандар-Сери-Бегаван, Бангкок, Бангалор, Вьентян, Гонконг, Дели, Куала-Лумпур, Макао, Медан, Пекин, Пномпень, Сеул, Токио, Тяньцзинь, Улан Батор, Хошимин, Ченнаи | | **Ближний Восток** | Абу-Даби, Багдад, Доха, Тегеран, Эль-Кувейт | | **Северная Америка** | Атланта, Ашберн, Бостон, Денвер, Лос-Анджелес, Майами, Нью-Йорк, Сан-Хосе, Сиэтл, Чикаго | | **Австралия и Океания** | Гамильтон, Мельбурн, Сидней, Сува | | **Африка** | Джибути | # Создание CDN-ресурса Source: https://timeweb.cloud/docs/cdn/create Чтобы создать новый CDN-ресурс: 1. Перейдите в раздел «Сети» → «CDN» и кликните «Добавить». 2. Укажите источник контента — откуда CDN будет забирать и кэшировать данные. Эту настройку можно изменить в дальнейшем. Источником контента может быть: - - **S3-бакет** Выберите нужный бакет из выпадающего списка. Если вам нужно подключить бакет, созданный на другом аккаунте или вне Timeweb Cloud, используйте опцию «Домен». - - **Домен** Выберите домен из существующих на аккаунте или введите нужный домен вручную. Если обращаться к домену необходимо по HTTP, отключите опцию «Использовать защищенное HTTPS-соединение для источника». Если вы подключаете приватный S3-бакет, после создания ресурса нужно настроить [AWS-авторизацию](https://timeweb.cloud/docs/cdn/settings/aws-auth). - - **IP-адрес** Выберите IP-адрес из существующих на аккаунте или введите нужный IP вручную. Если обращаться к адресу необходимо по HTTP, отключите опцию «Использовать защищенное HTTPS-соединение для источника». 3. Укажите удобное имя ресурса и комментарий при необходимости и выберите, в какой проект нужно добавить ресурс. 4. Нажмите «Заказать». Ресурс будет создан и появится в разделе «CDN». Теперь вы можете [настроить его](https://timeweb.cloud/docs/cdn/settings) необходимым образом. В качестве домена раздачи будет использоваться технический домен, который подключается к ресурсу автоматически при его создании. Найти его можно на Дашборде созданного ресурса, а добавить собственные домены — [в настройках](https://timeweb.cloud/docs/cdn/settings/origin-and-domains#nastrojka-domenov-razdachi). # Настройки ресурса Source: https://timeweb.cloud/docs/cdn/settings В панели управления вы можете гибко управлять CDN-настройками созданного ресурса. > [!NOTE] > Для применения изменений может потребоваться 10-20 минут. - [Источник контента и домены раздачи](https://timeweb.cloud/docs/cdn/settings/origin-and-domains) - [AWS-авторизация](https://timeweb.cloud/docs/cdn/settings/aws-auth) - [Кэширование](https://timeweb.cloud/docs/cdn/settings/cache) - [Безопасность](https://timeweb.cloud/docs/cdn/settings/security) - [Производительность](https://timeweb.cloud/docs/cdn/settings/performance) - [HTTP-заголовки](https://timeweb.cloud/docs/cdn/settings/http-headers) # Источник контента и домены раздачи Source: https://timeweb.cloud/docs/cdn/settings/origin-and-domains В настройках CDN-ресурса указываются источник контента и домены раздачи. Источник контента — это место, откуда CDN получает оригинальные файлы. В качестве источника можно использовать S3-бакет, домен или IP-адрес сервера. Домены раздачи — это адреса, через которые пользователи получают контент из CDN. По умолчанию для каждого CDN-ресурса создается технический домен. Также можно добавить собственные поддомены, например `cdn.example.com`. ## Как работает CDN-ресурс Рассмотрим пример: сайт `example.com` использует статические файлы — изображения, CSS и JS-скрипты. Эти файлы хранятся в S3-бакете `f6ec80b3-site-content`. Ссылка на бакет выглядит так: ```shell https://s3.twcstorage.ru/f6ec80b3-site-content ``` Например, изображение `image.png` будет доступно по адресу: ```shell https://s3.twcstorage.ru/f6ec80b3-site-content/image.png ``` При настройке CDN этот бакет выбирается как источник контента. После создания CDN-ресурса для него создается технический домен, например `uuxmvazs51.cdn.twcstorage.ru`. При использовании CDN ссылка на файл будет выглядеть так: ```shell https://uuxmvazs51.cdn.twcstorage.ru/image.png ``` Технический домен или собственный домен раздачи можно указать в CMS сайта для загрузки статических файлов через CDN. > [!NOTE] > Источник контента — это место, где хранятся оригинальные файлы. Домен раздачи — адрес, через который пользователи получают эти файлы через CDN. Работа CDN выглядит так: 1. Пользователь открывает страницу сайта `example.com`. 2. CMS формирует ссылки на статические файлы через домен раздачи CDN. 3. Браузер пользователя запрашивает файл, например `uuxmvazs51.cdn.twcstorage.ru/image.png`. 4. CDN принимает запрос и проверяет, есть ли файл в кеше. 5. Если файл уже есть в кеше, CDN сразу отдает его пользователю. 6. Если файла в кеше нет, CDN обращается к источнику контента — S3-бакету, например `f6ec80b3-site-content`. 7. S3-бакет отдает оригинальный файл, после чего CDN кэширует его и возвращает пользователю. ## Настройка источника контента и доменов раздачи Чтобы изменить источник контента или домены раздачи, откройте общие настройки CDN-ресурса: 1. Перейдите в раздел «Сети» → «CDN». 2. Кликните на нужный ресурс. 3. На вкладке «Управление» нажмите «Настроить» в блоке «Источник и домены раздачи». 4. Измените источник контента, домены раздачи или оба параметра. 5. Нажмите «Сохранить». ![Scr 20260513 Nejt](https://content.timeweb.com/assets/cc800673-1efb-4676-8e96-0c076ab30b58.png?width=2788&height=1958) ### Настройка источника контента В блоке «Источник контента» выберите тип источника. В качестве источника можно использовать: - **S3-бакет**. Можно выбрать бакет, созданный на вашем аккаунте в панели управления. Если бакет приватный, после сохранения изменений [настройте AWS-авторизацию](https://timeweb.cloud/docs/cdn/settings/aws-auth). - **Домен**. Можно выбрать домен из существующих на аккаунте или ввести нужный домен вручную. Этот вариант также используется для подключения стороннего S3-бакета по домену. - **IP-адрес**. Можно выбрать один из существующих сервисов на аккаунте или ввести нужный IP вручную. Если обращаться к источнику необходимо по HTTP, отключите опцию «Использовать HTTPS-соединение для источника». Если опция включена, CDN будет обращаться к источнику по HTTPS. ### Настройка доменов раздачи По умолчанию в качестве домена раздачи используется технический домен, который автоматически привязывается к CDN-ресурсу при его создании. Технический домен нельзя изменить или удалить. Вы также можете добавить собственные домены раздачи. В качестве домена раздачи можно использовать только поддомен, например `cdn.example.com`. Всего у CDN-ресурса может быть до трех доменов раздачи, включая технический. В блоке «Домены раздачи» добавьте или удалите домены. Технический домен удалить невозможно. Если добавили собственный домен раздачи, скопируйте технический домен CDN-ресурса — он потребуется для настройки CNAME. ### Настройка CNAME для домена раздачи Чтобы связать собственный домен раздачи с CDN-ресурсом, настройте для него CNAME-запись на стороне держателя NS-серверов. Если домен делегирован на наши NS-серверы, CNAME обновится автоматически. В этом случае ручная настройка DNS не требуется, но все другие CNAME-записи для выбранного поддомена будут удалены. > [!NOTE] > Автоматическое обновление CNAME сработает только при выборе существующего поддомена из списка. Создать поддомен можно [по этой инструкции](https://timeweb.cloud/docs/domains/subdomains#sozdanie-poddomena). Например, если домен раздачи — `cdn.example.com`, а технический домен CDN-ресурса — `uuxmvazs51.cdn.twcstorage.ru`, CNAME-запись должна выглядеть так: ```bash cdn.example.com CNAME uuxmvazs51.cdn.twcstorage.ru ``` Для настройки: 1. Перейдите в настройки DNS у провайдера, на чьих NS-серверах обслуживается домен. 2. Создайте CNAME-запись для поддомена раздачи. 3. В качестве значения укажите технический домен CDN-ресурса. 4. Сохраните изменения. Обновление DNS может занять от 15–30 минут до 24 часов. ## Возможные ошибки при настройке #### Избегайте создания петли при настройке CNAME Не указывайте домен раздачи в качестве CNAME для домена источника контента. В этом случае CDN будет запрашивать данные у источника, а источник — перенаправлять запрос обратно в CDN. Это приведет к зацикливанию запросов. При обнаружении такой конфигурации CDN-ресурс автоматически деактивируется. Чтобы восстановить его работу, исправьте петлю и повторно запустите CDN в панели управления. # AWS-авторизация Source: https://timeweb.cloud/docs/cdn/settings/aws-auth Настройка необходима, если в качестве источника контента указан приватный S3-бакет, который создан вне вашего аккаунта Timeweb Cloud. Чтобы настроить AWS-авторизацию: 1. Перейдите в раздел «Сети» → «CDN» и кликните на нужный ресурс. 2. На вкладке «Управление» нажмите «Настроить» в блоке «AWS-авторизация». 3. Включите опцию. 4. Укажите значения Access key и Secret key — найти их можно в настройках вашего бакета. 5. Нажмите «Сохранить». # Кэширование Source: https://timeweb.cloud/docs/cdn/settings/cache Для настройки параметров кэширования: 1. Перейдите в раздел «Сети» → «CDN». 2. Кликните на нужный ресурс. 3. На вкладке «Управление» нажмите «Настроить» в блоке «Кэширование». 4. Включите необходимые опции и задайте их настройки. 5. Нажмите «Сохранить». ## CDN-кэширование Определяет, как долго контент хранится на серверах CDN. Время указывается в секундах. **Как работает:** - При первом запросе файл загружается с сервера-источника и сохраняется в CDN. - Пока не истекло время кэширования, CDN отдает файл без обращения к источнику. - После истечения времени кэширования, CDN снова запрашивает файл у сервера-источник и обновляет его в кэше. Заданное в этом разделе время кэширования будет использоваться, если в ответах источника контента: - нет заголовков `Cache-Control` или `Expires`; - заголовки `Cache-Control` или `Expires` присутствуют, но включено игнорирование заголовков управления кэшированием. ## Кэширование в браузере Определяет, как долго контент хранится в браузере пользователя. Время указывается в секундах. Позволяет ускорить повторные визиты, снизить трафик и уменьшить количество запросов к CDN. **Как работает:** - При включении опции CDN добавляет заголовок `Cache-Control`. - Браузер сохраняет файл локально. - При повторном открытии страницы используется кэш и файл не загружается заново. ## Всегда онлайн Позволяет отдавать кэшированную версию контента, даже если время кэширования истекло и источник недоступен. За счет этого повышается доступность сервиса и улучшается пользовательский опыт: пользователь может получать контент даже при ошибках соединения, таймаутах и ошибках ответов сервера. # Безопасность Source: https://timeweb.cloud/docs/cdn/settings/security Для настройки параметров безопасности: 1. Перейдите в раздел «Сети» → «CDN» и кликните на нужный ресурс. 2. На вкладке «Управление» нажмите «Настроить» в блоке «Безопасность». 3. Включите необходимые опции и настройте их параметры. 4. Нажмите «Сохранить». ## Редирект с HTTP на HTTPS Автоматически перенаправляет все запросы с HTTP на защищенный протокол HTTPS. Это позволяет защищать данные пользователей, соответствовать требованиям браузеров и улучшать показатели SEO. **Как работает:** - Пользователь обращается по протоколу HTTP. - CDN возвращает редирект (301/302) на HTTPS. - Дальнейшее взаимодействие идет по защищенному соединению. Настройка применяется на уровне CDN и не требует дополнительной конфигурации на уровне сервера-источника. Перед включением опции убедитесь, что для доменов раздачи [выпущен SSL-сертификат](https://timeweb.cloud/docs/cdn/ssl). ## Secure token Ограничивает доступ к контенту с помощью подписанных URL. Может использоваться для контроля доступа к файлам, ограничения доступа к платному контенту, предотвращения прямого распространения ссылок. **Может использоваться для:** - защиты приватного или платного контента; - ограничения срока действия ссылок; - предотвращения прямого распространения ссылок; - ограничения доступа по IP-адресу. **Как работает:** - К URL добавляется специальная подпись (token), сгенерированная на основе секретного ключа. - CDN проверяет валидность подписи. - Если подпись корректна, доступ разрешается, если нет — возвращается ошибка 403 Forbidden. В поле «Секретный ключ» укажите произвольный секретный ключ, который будет использоваться для генерации подписей URL. **Ключ:** - создается и хранится на стороне клиента; - должен быть известен только вашему приложению и CDN; - используется при формировании подписанных ссылок. Рекомендуется использовать случайную строку длиной не менее 16 символов. Сгенерировать ее можно, например, так: ```bash openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32; echo ``` Строка будет такого вида: ```shell OCr2qxnZvdvMLtcy904EkABxn1eVPZLP ``` После включения Secure token ваше приложение должно формировать подписанные URL для доступа к контенту согласно алгоритму. #### Алгоритм формирования подписи Подписанный URL формируется на основе секретного ключа и параметров запроса. **1\. Формирование строки для подписи** Для расчета подписи используется строка вида: ```shell ``` - `` — секретный ключ, указанный в настройках; - `` — путь к запрашиваемому ресурсу; - `` — IP-адрес пользователя (используется только если включена проверка по IP); - `` — время истечения ссылки. Если проверка по IP или времени отключена, соответствующие значения в строку не добавляются. **2\. Вычисление подписи** - От полученной строки вычисляется MD5-хэш; - Результат кодируется в `base64` и приводится к URL-safe-формату: - символ `=` удаляется; - `+` заменяется на `-`; - `/` заменяется на `_`. **3\. Использование подписи в URL** Полученное значение используется как токен в пути URL ресурса: ```shell http:///md5(,)/ ``` #### Примечания - Домен CDN не участвует в расчете подписи. - Один и тот же ресурс может использоваться по HTTP и HTTPS с одной и той же подписью. #### Пример генерации подписанных ссылок: Python ```py import hashlib import base64 import time SECRET = "your_secret_key" CDN_DOMAIN = "https://example.cdn.twcstorage.ru" PATH = "/example.txt" # путь к файлу EXPIRES = int(time.time()) + 3600 # ссылка действует 1 час IP = "" # укажите IP, если используется ограничение # Формирование строки для подписи raw = SECRET + PATH + IP + str(EXPIRES) # MD5-хэш md5_hash = hashlib.md5(raw.encode()).digest() # base64 + URL-safe формат token = base64.b64encode(md5_hash).decode() token = token.replace("+", "-").replace("/", "_").replace("=", "") # Итоговый URL signed_url = f"{CDN_DOMAIN}/md5({token},{EXPIRES}){PATH}" print(signed_url) ``` NodeJS ```js const crypto = require('crypto'); const SECRET = 'your_secret_key'; const CDN_DOMAIN = 'https://example.cdn.twcstorage.ru'; const PATH = '/example.txt'; // путь к файлу const EXPIRES = Math.floor(Date.now() / 1000) + 3600; // ссылка действует 1 час const IP = ''; // укажите IP, если используется ограничение // Формирование строки для подписи const raw = `${SECRET}${PATH}${IP}${EXPIRES}`; // MD5-хэш const md5Hash = crypto .createHash('md5') .update(raw) .digest(); // base64 + URL-safe формат let token = md5Hash.toString('base64'); token = token .replace(/\+/g, '-') .replace(/\//g, '_') .replace(/=/g, ''); // Итоговый URL const signedUrl = `${CDN_DOMAIN}/md5(${token},${EXPIRES})${PATH}`; console.log(signedUrl); ``` Где: - `SECRET` — ключ, сгенерированный ранее. - `CDN_DOMAIN` — домен CDN-ресурса. - `PATH` — путь к файлу, начиная с `/`. Домен указывать не нужно. - `EXPIRES` — время истечения ссылки в формате Unix timestamp. - `IP` — указывается только если включено ограничение по IP. Если не используется, оставьте пустую строку. ## Ограничение по IP Доступно при включенной опции «Secure token». Разрешает доступ к контенту только с определенного IP-адреса. **Как работает:** - IP-адрес включается в подпись URL. - CDN сравнивает IP пользователя с указанным и запрещает доступ при несовпадении. # Производительность Source: https://timeweb.cloud/docs/cdn/settings/performance Для настройки параметров производительности: 1. Перейдите в раздел «Сети» → «CDN» и кликните на нужный ресурс. 2. На вкладке «Управление» нажмите «Настроить» в блоке «Контент и подключение». 3. Включите необходимые опции и настройте их параметры. 4. Нажмите «Сохранить». ## HTTP/3 Включает использование современного протокола HTTP/3 для передачи данных. Позволяет ускорить загрузку страниц, снизить задержки и улучшить пользовательский опыт. Эффект особенно заметен в мобильных сетях и при нестабильных соединениях. ## Сжатие Gzip Включает автоматическое сжатие текстового контента (HTML, CSS, JS, JSON) перед его передачей пользователю. Распаковку выполняет браузер на стороне клиента. Позволяет уменьшить объем трафика, ускорить загрузку страниц и снизить нагрузку на сеть. Gzip не применяется к уже сжатым форматам (например, изображениям или видео). ## Ускорение загрузки больших файлов Ускоряет загрузку больших файлов за счет их разделения на части. CDN кэширует файл небольшими блоками и отдает их независимо друг от друга. При повторных запросах отдельные части файла уже могут быть в кэше. Это снижает нагрузку на сервер-источник и улучшает стабильность при обрывах соединения. При включении опции вы можете указать размер блока: от 1 МБ до 1024 МБ. ## Конфигурация robots.txt Позволяет настроить, как поисковые роботы (Google, Яндекс и т.д.) будут индексировать контент на домене раздачи. > [!NOTE] > По умолчанию CDN-домены исключены из индексации, так как в противном случае поисковые роботы могут воспринять CDN-домен как зеркало сайта или источник дублирующегося контента, что может негативно повлиять на индексацию и SEO основного сайта. > > Меняйте эту настройку, только если вы точно знаете, что делаете. Можно выбрать одну из опций: - **Не индексировать** (по умолчанию) — поисковым роботам запрещено индексировать CDN-домен. - **Проксировать** — использовать `robots.txt` с основного сайта. - **Свой** — возможность задать собственный `robots.txt` для CDN для тонкой настройки правил индексации. Можно ввести директивы вручную или загрузить готовый файл. # HTTP-заголовки и методы Source: https://timeweb.cloud/docs/cdn/settings/http-headers Для настройки HTTP-заголовков: 1. Перейдите в раздел «Сети» → «CDN» и кликните на нужный ресурс. 2. На вкладке «Управление» нажмите «Настроить» в блоке «HTTP-заголовки». 3. Включите необходимые опции и укажите их параметры. 4. Нажмите «Сохранить». ## Заголовки запросов Позволяет добавлять кастомные HTTP-заголовки к запросам, которые CDN отправляет на сервер-источник при каждом запросе. Можно задать несколько пар «заголовок — значение». **Требуется для:** - передачи токенов авторизации; - интеграции с backend; - [управления доступом на стороне сервера-источника](https://timeweb.cloud/docs/cdn/protect-cdn-origin-with-http-header); - проксирования служебных данных. ## Поддержка CORS Позволяет управлять кросс-доменным доступом к контенту через CDN. **Как работает:** - CDN добавляет заголовок `Access-Control-Allow-Origin`. - Браузер проверяет значение этого заголовка и принимает решение, можно ли предоставить доступ к ресурсу со стороннего сайта. В поле «Домен» необходимо указать разрешенный источник запроса (`Origin`) — домен сайта, с которого браузер будет выполнять запросы к ресурсам CDN. Например: - сайт `https://example.com` выполняет запрос к ресурсу CDN; - браузер автоматически отправляет заголовок: `Origin: https://example.com`; - если в настройках CORS указан `example.com`, браузер разрешит доступ к ресурсу. **Допустимые форматы для поля «Домен»:** - `example.com` — точное совпадение; - `*.example.com` — все поддомены `example.com`, не включая сам домен `example.com`; - `.example.com` — домен `example.com` и все его поддомены; - `~a\d+\.example.com` — регулярное выражение. ### Всегда добавлять заголовок Доступно при включении опции «Поддержка заголовков CORS». Добавляет CORS-заголовки ко всем ответам CDN, независимо от кода ответа. По умолчанию заголовок добавляется только для успешных и редирект-ответов. При включении опции заголовок добавляется всегда. **Требуется для:** - работы фронтенда с API и CDN; - загрузки ресурсов с других доменов; - корректной работы SPA и веб-приложений. ## Поддерживаемые HTTP-методы Для работы с контентом через CDN поддерживаются методы `GET`, `HEAD` и `OPTIONS`. Подключение дополнительных HTTP-методов невозможно. # Управление SSL Source: https://timeweb.cloud/docs/cdn/ssl Чтобы ваши [домены раздачи](https://timeweb.cloud/docs/cdn/settings/origin-and-domains) работали по протоколу HTTPS, необходимо добавить для них SSL-сертификат. Через панель управления вы можете добавить существующий SSL или выпустить новый сертификат Let’s Encrypt. Выпуск SSL не требуется, если в качестве домена раздачи вы используете только технический домен, выданный при создании ресурса. Он настроен на работу по HTTPS по умолчанию. ## Выпуск SSL Let’s Encrypt Сертификат будет выпущен на все домены раздачи, подключенные к ресурсу на момент выпуска SSL. Предварительно убедитесь, что для всех доменов раздачи указана [корректная CNAME-запись](https://timeweb.cloud/docs/cdn/settings/origin-and-domains#nastrojka-cname-dlya-domena-razdachi) и изменения DNS уже применены. В противном случае выпуск сертификата завершится ошибкой. Чтобы выпустить бесплатный SSL Let’s Encrypt: 1. Перейдите в раздел «Сети» → «CDN» и кликните на нужный ресурс. 2. Откройте вкладку «SSL-сертификаты». 3. Нажмите «Выпустить Let’s Encrypt». Сертификат будет выпущен и отобразится на вкладке «SSL-сертификаты» вашего CDN-ресурса. Обычно это занимает пару минут, но в отдельных случаях процесс может длиться до 10-20 минут. > [!NOTE] > После выпуска SSL [включите редирект на HTTPS](https://timeweb.cloud/docs/cdn/settings/security#redirekt-s-http-na-https) в настройках ресурса. Продление сертификата будет выполняться автоматически. ## Добавление существующего SSL Если для домена раздачи уже выпущен SSL-сертификат, вы можете загрузить его следующим образом: 1. Перейдите в раздел «Сети» → «CDN» и кликните на нужный ресурс. 2. Откройте вкладку «SSL-сертификаты». 3. Нажмите «Загрузить». 4. Вставьте значения ключа и сертификата в соответствующие поля либо загрузите их файлы. 5. Нажмите «Заказать». Сертификат будет добавлен и отобразится на вкладке «SSL-сертификаты» вашего CDN-ресурса. 6. Кликните на три точки у сертификата и нажмите «Привязать». > [!NOTE] > После привязки SSL [включите редирект на HTTPS](https://timeweb.cloud/docs/cdn/settings/security#redirekt-s-http-na-https) в настройках ресурса. ## Удаление сертификата Если сертификат больше не нужен (например, он истек или был заменен на другой), его можно удалить из списка сертификатов. Для этого : 1. Перейдите в раздел «Сети» → «CDN» и кликните на нужный ресурс. 2. Откройте вкладку «SSL-сертификаты». 3. Кликните на три точки у сертификата и выберите «Удалить». 4. Подтвердите удаление. # Очистка кэша Source: https://timeweb.cloud/docs/cdn/clear Функция позволяет удалить выбранные файлы из CDN-кэша. После очистки кэшированных данных CDN при следующем запросе заново запрашивает актуальную версию файла с сервера-источника. Используется для: - принудительного обновления контента; - удаления устаревших версий файлов; - обеспечения актуальности данных, отдаваемых через CDN. Очистка кэша не влияет на оригинальные файлы на сервере-источнике. Чтобы очистить кэш: 1. Перейдите в раздел «Сети» → «CDN». 2. Кликните на нужный ресурс. 3. Нажмите на иконку очистки справа вверху. ![Wild Lacerta 04 30 2026 10 28 Am](https://content.timeweb.com/assets/2d615cdf-4150-4c0e-a508-ec5e0ad6784a.png?width=1574&height=789) 4. Выберите тип очистки: - Полная — удалит все файлы из CDN-кэша; - Частичная — удалит только файлы по указанным путям. 5. Если вы выбрали частичную очистку, укажите пути к файлам относительно корневой директории. 6. Нажмите «Очистить». # Лимит исходящего трафика Source: https://timeweb.cloud/docs/cdn/limit Для каждого CDN-ресурса вы можете установить ежемесячный лимит исходящего трафика, чтобы контролировать расходы и избежать непредвиденных затрат при резких всплесках трафика. При достижении лимита ресурс будет [приостановлен](https://timeweb.cloud/docs/cdn/limit#rabota-resursa-pri-dostijenii-limita). Минимальное значение лимита — 1 ГБ в месяц. Максимальный лимит не ограничен. Лимит действует в пределах календарного месяца. С началом нового месяца объем использованного трафика обнуляется, и снова становится доступен полный лимит. Использованный объем трафика за текущий месяц доступен Дашборде ресурса. ![Charming Grosbeak 05 29 2026 03 10 Pm](https://content.timeweb.com/assets/ef21baae-5646-42cd-854a-cc75809ef178.png?width=1565&height=829) Управлять лимитом можно в настройках CDN-ресурса. ## Включение лимита Чтобы включить лимит трафика: 1. Перейдите в раздел «Сети» → «CDN» и кликните на нужный ресурс. 2. На вкладке «Управление» кликните «Настроить» в блоке «Ограничение исходящего трафика». ![Charming Grosbeak 05 29 2026 02 59 Pm](https://content.timeweb.com/assets/23c77499-fb2f-42c9-9e07-ea5c24436080.png?width=1567&height=1295) 3. Включите опцию. 4. Укажите желаемый лимит. 5. Сохраните изменения. ![Charming Grosbeak 05 29 2026 03 01 Pm](https://content.timeweb.com/assets/41d7bd20-2fe8-4248-8f78-b36d27f26498.png?width=1733&height=868) ## Изменение лимита Чтобы изменить текущий лимит: 1. Перейдите в раздел «Сети» → «CDN» и кликните на нужный ресурс. 2. На вкладке «Управление» кликните «Настроить» в блоке с лимитом. ![Charming Grosbeak 05 29 2026 03 02 Pm](https://content.timeweb.com/assets/73864cc4-4e3b-45c1-afb5-28b1411ba0ac.png?width=1557&height=1276) 3. Укажите новое значение лимита. 4. Сохраните изменения. ![Charming Grosbeak 05 29 2026 03 03 Pm](https://content.timeweb.com/assets/5018a059-7c9c-4009-be99-147ee25c69bb.png?width=1738&height=869) ## Отключение лимита Чтобы отключить лимит трафика: 1. Перейдите в раздел «Сети» → «CDN» и кликните на нужный ресурс. 2. На вкладке «Управление» кликните «Настроить» в блоке с лимитом. ![Charming Grosbeak 05 29 2026 03 02 Pm](https://content.timeweb.com/assets/73864cc4-4e3b-45c1-afb5-28b1411ba0ac.png?width=1557&height=1276) 3. Отключите опцию. 4. Сохраните изменения. ## Работа ресурса при достижении лимита При достижении лимита CDN-ресурс автоматически приостанавливается. > [!NOTE] > Приостановка ресурса после превышения лимита может занимать до двух часов. В этот период трафик продолжит тарифицироваться. С началом нового календарного месяца лимит сбросится и ресурс запустится заново. Если необходимо возобновить работу ресурса в текущем месяце, [увеличьте](https://timeweb.cloud/docs/cdn/limit#izmenenie-limita) или [отключите](https://timeweb.cloud/docs/cdn/limit#otkluchenie-limita) лимит, как описано выше. ## Уведомления Если для ресурса установлен лимит трафика, мы отправим вам уведомления: - при достижении 80% лимита; - при полном исчерпании лимита. По умолчанию включены уведомления на емейл, в Telegram и Макс, если они привязаны. Дополнительно можно настроить [вебхук-уведомления](https://timeweb.cloud/docs/account-management/webhook-notification/configure-webhooks). Уведомления по SMS недоступны. Управлять уведомлениями можно в настройках аккаунта: 1. Кликните на логин аккаунта справа вверху и выберите «Настройки аккаунта». 2. Перейдите на вкладку «Уведомления». # Приостановка ресурса Source: https://timeweb.cloud/docs/cdn/deactivate Вы можете приостановить работу CDN-ресурса в панели управления. Стоимость приостановленного ресурса — 1 рубль в месяц. Трафик через ресурс не проходит и не тарифицируется. > [!NOTE] > Приостановка выполняется не мгновенно. Для применения изменений может потребоваться до двух часов. ## Как приостановить ресурс Чтобы приостановить ресурс: 1. Перейдите в раздел «Сети» → «CDN». 2. Кликните на три точки у нужного ресурса и выберите «Приостановить». 3. Подтвердите приостановку ресурса. ## Автоматическая приостановка Если ресурс неактивен в течение 7 дней, он автоматически приостанавливается. Все настройки сохраняются, и при необходимости ресурс можно возобновить. При автоматической приостановке отправляется уведомление на почту, в Телеграм или Макс. Неактивным считается ресурс, к которому в течение 7 дней не поступило ни одного HTTP-запроса. ## Возобновление работы ресурса Чтобы возобновить работу ресурса: 1. Перейдите в раздел «Сети» → «CDN». 2. Кликните на три точки у нужного ресурса и выберите «Возобновить». # Ограничение прямого доступа к серверу-источнику Source: https://timeweb.cloud/docs/cdn/protect-cdn-origin-with-http-header Для CDN-ресурса можно настроить пользовательский HTTP-заголовок, который будет автоматически добавляться ко всем запросам от CDN к серверу-источнику. На стороне сервера-источника можно проверять наличие и значение этого заголовка, отклоняя любые запросы без него. Такой подход позволяет защитить сервер-источник от прямого доступа без необходимости использовать список IP-адресов CDN. Сервер остается доступен по сети, однако прямые обращения к нему будут получать ответ `403 Forbidden`. > [!NOTE] > Этот механизм защищает только сервер-источник от обхода CDN. Он не ограничивает доступ пользователей к файлам через домен раздачи. Для ограничения доступа к контенту [используйте Secure token](https://timeweb.cloud/docs/cdn/settings/security#secure-token). ## Настройка HTTP-заголовка в CDN Чтобы добавить пользовательский заголовок: 1. Откройте нужный ресурс в разделе «Сети» → «CDN». 2. Перейдите во вкладку «Управление». 3. Нажмите кнопку «Настроить» напротив пункта «HTTP-заголовки». 4. Включите опцию «Заголовки запросов». 5. Укажите произвольное имя заголовка и его значение. В качестве значения рекомендуем использовать случайно сгенерированную строку — так ее невозможно будет подобрать стороннему пользователю. 6. Нажмите кнопку «Сохранить» и дождитесь применения настроек. ![Настройка HTTP-заголовка для CDN](https://content.timeweb.com/assets/1be3f1d4-eeb2-4346-a93e-4f889c2b1186.png?width=2806&height=1612) ## Пример настройки ограничения доступа В качестве примера настроим сервер-источник на базе Nginx, который будет отдавать статический файл только при наличии секретного заголовка. ### Настройка сервера-источника Установите Nginx: ```bash sudo apt update sudo apt install -y nginx ``` Создайте директорию для статических файлов: ```bash sudo mkdir -p /var/www/origin-static ``` Создайте html-страницу: ```bash echo 'Привет с сервера-источника' | sudo tee /var/www/origin-static/hello.txt ``` Создайте файл конфигурации `/etc/nginx/conf.d/cdn-origin.conf`: ```bash map $http_x_cdn_origin_secret $cdn_origin_secret_ok { default 0; "change-me-to-long-random-secret" 1; } server { listen 80; server_name origin.example.site; root /var/www/origin-static; location / { if ($cdn_origin_secret_ok = 0) { return 403; } try_files $uri =404; add_header Cache-Control "public, max-age=60"; } } ``` Замените значение `change-me-to-long-random-secret` на случайную строку. Сгенерировать ее можно командой: ```bash openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 30 echo ``` Также укажите собственный домен вместо `origin.example.site`. В блоке: ```bash map $http_x_cdn_origin_secret $cdn_origin_secret_ok { default 0; "change-me-to-long-random-secret" 1; } ``` Nginx проверяет значение заголовка `X-CDN-Origin-Secret`. Если значение совпадает с указанным в конфигурации, запрос будет обработан. В противном случае сервер вернет ошибку `403 Forbidden`. Если включен стандартный сайт Nginx, отключите его: ```bash sudo rm -f /etc/nginx/sites-enabled/default ``` Проверьте конфигурацию: ```bash sudo nginx -t ``` Примените изменения: ```bash sudo systemctl reload nginx ``` ### Проверка работы сервера-источника Выполните запрос без заголовка: ```bash curl -i "http://origin.example.site/hello.txt" ``` В ответ должен быть получен статус: ```shell 403 Forbidden ``` Теперь выполните запрос с корректным заголовком: ```shell curl -i -H "X-CDN-Origin-Secret: сгенерированная_случайная_строка" "http://origin.example.site/hello.txt" ``` Ожидаемый результат: ```shell 200 OK ``` ### Настройка сертификата Установите Certbot: ```bash sudo apt update sudo apt install -y certbot python3-certbot-nginx ``` Выпустите сертификат: ```bash sudo certbot --nginx -d origin.example.site ``` Certbot автоматически добавит SSL-настройки в конфигурацию Nginx и предложит настроить перенаправление с HTTP на HTTPS. ## Настройка CDN-ресурса [Создайте CDN-ресурс](https://timeweb.cloud/docs/cdn/create) и в качестве источника укажите домен, настроенный на предыдущем этапе. После создания ресурса: 1. Откройте его в панели управления. 2. Перейдите во вкладку «Управление». 3. Нажмите кнопку «Настроить» напротив пункта «HTTP-заголовки». 4. Включите опцию «Заголовки запросов». 5. Укажите: - имя заголовка — `X-CDN-Origin-Secret`; - значение — ту же случайную строку, которая указана в конфигурации Nginx. 7. Нажмите кнопку «Сохранить» и дождитесь обновления ресурса. ## Проверка Попробуйте обратиться к файлу напрямую на сервере-источнике: ```bash curl -i "https://origin.example.site/hello.txt" ``` Сервер должен вернуть ошибку `403 Forbidden`. Теперь выполните запрос через CDN-домен: ```bash curl -i "http://1cxiuba12bn.cdn.twcstorage.ru/hello.txt" ``` В ответ вы получите содержимое файла и статус `200 OK`. Обратите внимание, что заголовок `X-CDN-Origin-Secret` не передается конечному пользователю. Он используется только для взаимодействия между CDN и сервером-источником. # Удаление ресурса Source: https://timeweb.cloud/docs/cdn/delete Если вам нужно временно отключить ресурс, его можно [приостановить](https://timeweb.cloud/docs/cdn/deactivate). Чтобы безвозвратно удалить ресурс: 1. Перейдите в раздел «Сети» → «CDN». 2. Кликните на три точки у нужного ресурса и выберите «Удалить». 3. Подтвердите удаление. # Сетевые сервисы Source: https://timeweb.cloud/docs/network-services Поможем спроектировать и организовать сетевую инфраструктуру для ваших проектов на выделенных физических серверах — от объединения ресурсов в приватные сети до реализации сложных задач «под ключ». ## Объединение серверов в приватную сеть Если серверы размещены внутри одного дата-центра, их можно объединить в единую виртуальную инфраструктуру с помощью технологии VLAN. Это обеспечит: - изоляцию сетевого сегмента на канальном уровне, а значит — повышение уровня безопасности; - разграничение внешнего и внутреннего потока данных и уменьшение сетевого потока UpLink; - ускоренный обмен данными за счет уменьшения пути прохождения трафика; - максимальную пропускную способность, ограниченную только физическим интерфейсом (по умолчанию до 10 Гбит/с, по запросу возможно и выше). ![Image3](https://content.timeweb.com/assets/75d2e0fb-f0b1-4254-b0f2-b6292577b7c4?width=873&height=568) ## Объединение в приватную сеть георазнесенных серверов Если серверы размещены в разных дата-центрах (в том числе, в разных городах), их можно объединить в единую выделенную сеть посредством технологий L2VPN/L3VPN. - **L2VPN** — серверы взаимодействуют между собой, как если бы находились в одной приватной сети. ![Image1](https://content.timeweb.com/assets/289f4efc-3f75-4f75-b648-818ad4ba4b23?width=975&height=698) - **L3VPN** — серверы из разных сетей взаимодействуют между собой на L3-уровне для достижения эффективной маршрутизации и масштабируемости. ![Image2](https://content.timeweb.com/assets/996352ec-9763-4fc6-b316-bf9c7c5c1d70?width=975&height=710) Посредством технологий L2VPN/L3VPN можно организовать соединение со сторонними инфраструктурами, например, собственной сетью клиента (Direct Connect) или внешними облачными хранилищами (Cloud Interconnect). ## Перенос собственных IP-адресов (BYOIP) или BGP AS (BYOAS) **BYOIP** позволит перенести ресурсы на серверные мощности в наш дата-центр, сохранив относящиеся к ним сетевые доступы, а также избавит от необходимости вносить правки в публичные DNS. **BYOAS** позволит сохранить установившееся сетевое взаимодействие ваших ресурсов с текущими провайдерами и контрагентами по протоколу BGP. Выделенные публичные ресурсы можно разместить в нашем дата-центре полностью или частично. При необходимости мы можем помочь с получением внешних IP-адресов и BGP AS. ## BGP-пиринг с серверами клиента Возможности сетевой инфраструктуры позволяют подключить выделенные (физические) серверы с использованием протокола BGP. Протокол BGP служит для обмена маршрутной информацией между автономными системами в Интернете и позволяет: - осуществлять фильтрацию маршрутной информации; - гибко балансировать потоки данных между серверами и локациями непосредственно на хосте; - использовать собственный блок публичных IP-адресов и/или BGP AS. ## Нестандартные сетевые решения Если вам необходим более гибкий подход к организации сетевой инфраструктуры, наша команда сетевых специалистов, обладающая всеми необходимыми лицензиями и компетенциями, поможет реализовать проект любой сложности. # Облачные серверы Timeweb Cloud Source: https://timeweb.cloud/docs/cloud-servers **Облачные серверы** — это способ размещения данных, при котором вы получаете полный доступ (root-доступ) к виртуальному серверу и его настройкам. Вы можете гибко масштабировать параметры сервера, постепенно добавляя необходимые мощности (процессор, память, диск), когда растет нагрузка, и снижать их (процессор и память), когда нагрузка уменьшается. Соответствующим образом будет увеличиваться или уменьшаться стоимость сервера. Чтобы предоставить вам качественный сервис, мы используем современное оборудование, быстрые **NVMe-диски** и мощные процессоры, в том числе: - Intel i9-9900KF 5 ГГц - Intel i9-9900K 5 ГГц - AMD EPYC 7502 3.3 ГГц - AMD EPYC 7402 3.3 ГГц - AMD EPYC 7542 3.4 ГГц - Intel Xeon Gold 6230R 2.8 ГГц - Intel Xeon Gold 6230 2.8 ГГц - Intel Xeon Gold 6348 3.4 ГГц - Intel Xeon Gold 5220R 3.0 ГГц > [!NOTE] > Частота процессора, которую вы можете видеть при замерах в консоли сервера, не отображает реальные характеристики процессора — система виртуализации показывает базовую частоту, без учета использования Turboboost. > > При этом центральный процессор платформы всегда работает в режиме Turboboost, гарантируя частоту, заявленную в тарифе. # Управление серверами аккаунта Source: https://timeweb.cloud/docs/cloud-servers/manage-servers В разделе описана работа с серверами в панели [timeweb.cloud/my](https://timeweb.cloud/my). - [Создание нового сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/create-server) - [Список серверов](https://timeweb.cloud/docs/cloud-servers/manage-servers/server-list) - [Сценарии cloud-init](https://timeweb.cloud/docs/cloud-servers/manage-servers/cloud-init) - [Тариф и конфигурация](https://timeweb.cloud/docs/cloud-servers/manage-servers/server-configuration) - [Настройки сети](https://timeweb.cloud/docs/cloud-servers/manage-servers/network) - [Веб-консоль](https://timeweb.cloud/docs/cloud-servers/manage-servers/console) - [Сброс пароля root](https://timeweb.cloud/docs/cloud-servers/manage-servers/root-password-reset) - [SSH-ключи](https://timeweb.cloud/docs/cloud-servers/manage-servers/ssh-keys) - [Перезагрузка сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/reboot) - [Смена режима загрузки](https://timeweb.cloud/docs/cloud-servers/manage-servers/boot-mode) - [Переустановка ОС](https://timeweb.cloud/docs/cloud-servers/manage-servers/os-reinstall) - [Статистика использования ресурсов](https://timeweb.cloud/docs/cloud-servers/manage-servers/resource-stats) - [Резервное копирование](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup) - [Клонирование сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/cloning) - [Образы сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/server-images) - [Передача серверов между аккаунтами](https://timeweb.cloud/docs/cloud-servers/manage-servers/move-servers-between-accounts) - [Доступ для техподдержки](https://timeweb.cloud/docs/cloud-servers/manage-servers/tech-support-access) - [Журнал действий](https://timeweb.cloud/docs/cloud-servers/manage-servers/history) - [Защита от удаления](https://timeweb.cloud/docs/cloud-servers/manage-servers/deletion-protection) - [Удаление сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/delete-server) # Создание нового сервера Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/create-server В своей панели управления вы можете создавать серверы следующих тарифных линеек. | **Линейка** | **Описание** | **Конфигурация** | **Особенности** | | --- | --- | --- | --- | | **Premium NVMe** | Серверы с быстрыми NVMe-дисками и процессорами 3.3 ГГц | Фиксированная Произвольная | Доступна во всех регионах Есть приватные сети Возможно подключение сетевых дисков (только в СПб) | | **Ultra** | Серверы с быстрыми NVMe-дисками, процессорами AMD EPYC 9554 и DDR5-памятью с частотой 4800 МГц | Фиксированная Произвольная | Доступна в Москве Есть приватные сети | | **GPU** | Серверы с видеокартами, NVMe-дисками и процессорами 3.3 ГГц | Только произвольная | Доступна в Санкт-Петербурге и Москве Минимальная конфигурация зависит от количества видеокарт: на каждую видеокарту нужно 1 ядро CPU и 2 ГБ RAM. Помесячная оплата | | **Standard** | Серверы с SSD-дисками и процессорами 2.8 ГГц | Фиксированная Произвольная | Доступна в Санкт-Петербурге Нет приватных сетей Невозможно подключить сетевой диск | | **HighCPU** | Высокопроизводительные серверы с NVMe-дисками и процессорами 5 ГГц | Фиксированная Произвольная (только в Мск) | Доступна в Санкт-Петербурге и Москве В СПб нет приватных сетей Невозможно подключить сетевой диск | | **Dedicated CPU** | Серверы с выделенными процессорными ядрами, процессорами 3.3 ГГц и NVMe-дисками | Только произвольная | Доступна в Санкт-Петербурге и Москве Возможно подключение сетевых дисков (только в СПб) | | **Dedicated High CPU** | Высокопроизводительные серверы с выделенными процессорными ядрами, NVMe-дисками и процессорами 5 ГГц | Фиксированная Произвольная | Доступна в Москве | ## Создание сервера Для создания нового сервера нажмите «Добавить» или «Создать» в разделе «[Облачные серверы](https://timeweb.cloud/my/servers)». ![5ec969a5 4959 4115 96fb 79ec2159a326](https://content.timeweb.com/assets/36193f08-cbc3-4eb0-ae0f-dd8ec0928c7f?width=1509&height=739) Далее в несколько простых шагов вы сможете создать сервер с необходимыми параметрами. ### Шаг 1. Программное обеспечение На первом шаге выберите, какое ПО вы хотите развернуть на сервере. Это может быть: - «Чистая» операционная система; - Сборка ОС с определенным приложением или панелью управления. Они доступны на вкладке «Маркетплейс»; - Образ сервера, созданный в панели управления или загруженный вами. Образы доступны на вкладке «Мои образы». ![0d027dd0 5ee6 49c9 A187 D0c4daa4732d](https://content.timeweb.com/assets/b187f61c-cf94-4e40-9d0a-0071faa873b3?width=1515&height=964) ### Шаг 2. Регион и зона доступности Выберите, в какой локации вы хотите создать сервер. В разных регионах доступны разные линейки серверов. В регионе Санкт-Петербург у нас несколько [зон доступности](https://timeweb.cloud/docs/zony-dostupnosti), но выбор конкретной зоны доступен только клиентам, у которых уже созданы сервисы в разных зонах. Чтобы назначить серверу один из существующих публичных IP на аккаунте, регионы/зоны доступности сервера и IP-адреса должны совпадать. ![807ab27a 74e7 43c9 87e3 960372a639aa](https://content.timeweb.com/assets/b215b201-0e03-4395-b30a-c6a8bd95973d?width=763&height=475) ### Шаг 3. Конфигурация Выберите тарифный план. Набор тарифных линеек будет отличаться в зависимости от выбранного региона. Вы можете выбрать один из фиксированных тарифов или указать необходимые параметры самостоятельно, выбрав вариант «Произвольная». Стоимость фиксированных тарифов ниже, чем серверов с аналогичными параметрами, установленными вручную. Здесь же можно указать, какое количество серверов с выбранной конфигурацией вам требуется, чтобы создать их сразу. На балансе должно быть достаточно средств для оплаты всех создаваемых серверов на 30 дней. ![91fde906 E436 4014 B946 8680c9c0388c](https://content.timeweb.com/assets/12d3fa18-0a8d-47e0-a6c7-66221d90f649.png?width=745&height=693) ### Шаг 4. Сеть На этом шаге вы можете выбрать настройки сети: - **Публичный IPv4-адрес** Можно создать новый публичный IP, выбрать один из имеющихся на аккаунте или создать сервер без публичного IP. Добавить или удалить публичный адрес можно будет и в дальнейшем, после создания сервера. IPv4-адрес оплачивается дополнительно. Все IPv4-адреса «плавающие», что значит, что их можно переносить между разными сервисами на аккаунте. Публичный IP необходим, чтобы сервис мог выходить в Интернет или получать запросы из Интернета. Если планируется, что сервис будет работать только внутри приватной сети, публичный адрес ему не нужен. В этом случае убедитесь, что сервис создается в зоне с приватной сетью. Также сервисы, добавленные в приватную сеть, могут работать за NAT выходить в Интернет через общий публичный адрес приватной сети. В этом случае собственный публичный IP для сервиса также не потребуется, если ваш проект это позволяет. - **Публичный IPv6-адрес** В отдельных регионах доступен бесплатный публичный IPv6-адрес. Работа с ним не так универсальна, как с IPv4, и возможность [доступа к серверу по IPv6](https://timeweb.cloud/docs/public-ip/ipv6-adresa) будет зависеть, в том числе, от вашего интернет-провайдера. - **Приватная сеть** Вы можете выбрать одну из уже существующих приватных сетей или создать новую. Если выбрана приватная сеть, приватный IP можно указать вручную. Для части регионов и тарифных линеек приватные сети могут быть недоступны. - **Имя хоста** Хостнейм — это сетевое имя вашего сервера внутри системы, которое будет использоваться в командной строке и для доступа по локальной сети. Вы можете оставить хостнейм по умолчанию или задать свой собственный. Он может содержать латинские буквы, цифры и дефисы ### Шаг 5. Безопасность Здесь вы можете подключить [резервное копирование](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup) и [защиту от удаления](https://timeweb.cloud/docs/cloud-servers/manage-servers/deletion-protection), а для серверов в Санкт-Петербурге и Москве — также [защиту от DDoS](https://timeweb.cloud/docs/anti-ddos/anti-ddos-for-cloud-servers) или [аварийную копию](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup#avarijnaya-kopiya). ![713e640c 7694 4baa 99bf Ab670dd1d8d1](https://content.timeweb.com/assets/5cbf18d9-0fe0-46b0-9227-b4cded763089.png?width=760&height=361) > [!NOTE] > Обратите внимание, пожалуйста, что для серверов с ОС Windows настройку DDoS-защиты после подключения вам потребуется выполнить самостоятельно. ### Шаг 6. Авторизация На этом шаге вы можете добавить SSH-ключ на сервер, чтобы обеспечить безопасную авторизацию. SSH-ключ можно выбрать из списка (если у вас есть [сохраненные ключи](https://timeweb.cloud/docs/cloud-servers/manage-servers/ssh-keys)) или добавить новый. Вы также можете отключить авторизацию по паролю, выключив параметр «Доступ по SSH через root-пароль». В этом случае авторизоваться на сервере можно будет только по SSH-ключу. Отключить вход с паролем можно только в том случае, если у вас выбран SSH-ключ. Чтобы вернуть возможность входа с паролем, необходимо удалить или переименовать файл `/etc/ssh/sshd_config.d/50-cloud-init.conf`. ![Screenshot 01 22 25 18:30:56](https://content.timeweb.com/assets/14da7490-2f3f-430b-9ca5-34bcbba69980.png?width=514&height=347) ### Шаг 7. Сценарий cloud-init Вы можете указать [сценарий cloud-init](https://timeweb.cloud/docs/cloud-servers/manage-servers/cloud-init), который будет выполнен при установке сервера, либо загрузить файл сценария в формате `.sh`, `.txt`, `.yaml` или `.yml`. ![02f85c49 73dd 44f7 Bdd8 6aef1984e256](https://content.timeweb.com/assets/e35fbde5-0874-4880-b33f-2dff8ba12c84?width=759&height=608) ### Шаг 8. Информация о сервере Здесь вы можете: - изменить имя сервера, предложенное по умолчанию, - добавить комментарий к серверу, - добавить иконку сервера, - добавить сервер в определенный проект. Все эти настройки можно будет изменить в дальнейшем. ![3e49b0d4 4389 4f0d 8c5c 86820717edd2](https://content.timeweb.com/assets/cb2b6ab1-aea0-454a-a41f-283a90d99e73.png?width=745&height=470) Проверьте выбранные параметры в блоке справа. При необходимости вы можете вернуться к любому из предыдущих шагов и внести изменения. Если все верно, нажмите «Заказать». Если на балансе достаточно средств, начнется процесс установки сервера, который может занять несколько минут, после чего сервер будет запущен. Если средств недостаточно, вы будете перенаправлены в раздел «Баланс и платежи» для пополнения баланса. ## Реквизиты подключения Реквизиты подключения к серверу (IP-адрес, пользователь (root), пароль) можно будет найти на вкладке «Дашборд». Здесь же можно скопировать команду для подключения по SSH. ![97a0fec2 515e 44c9 B74a 8da611efbb4d](https://content.timeweb.com/assets/222a2467-2862-4d98-9a52-7179a0c04828.png?width=1540&height=1187) Если вы устанавливали сборку с предустановленными приложениями из вкладки «Маркетплейс», данные для подключения к приложению отобразятся рядом с данными для подключения к серверу. Обратите внимание: после изменения данных для авторизации в приложении мы не сможем их узнать, и информация из панели управления станет неактуальной. ![Selection 055](https://content.timeweb.com/assets/d6761384-dd2e-42d9-b9e4-a93a569fb2ee.png?width=887&height=900) ## Автоматизация создания серверов Создание серверов можно автоматизировать при помощи [Terraform](https://timeweb.cloud/docs/terraform), [Timeweb Cloud CLI](https://timeweb.cloud/docs/twc-cli) или [запросов к API](https://timeweb.cloud/api-docs). Для удобства вы можете воспользоваться генерацией команд для автоматизации. Для этого перейдите в раздел «[Облачные серверы](https://timeweb.cloud/my/servers)» и начните создание нового сервера. Выберите все необходимые параметры, после чего нажмите на кнопку генерации команд: ![A099fe00 F9a7 4f76 A28f Cd469e0c4b90](https://content.timeweb.com/assets/1e0b6fd0-fd35-42bc-a61f-5c5383e77d78.png?width=1536&height=959) ### Terraform Перейдите во вкладку «Terraform» и скопируйте манифест в файл с расширением `.tf`. ![Screenshot 04 02 25 15:30:22](https://content.timeweb.com/assets/b69b35ca-a19b-4cc0-a1bb-9a5375fc02d1.png?width=1006&height=784) Обратите внимание, что в манифесте предполагается указание токена. Выпустить токен вы можете с помощью [нашей инструкции](https://timeweb.cloud/docs/account-management/token). Если токен уже указан в другом файле, просто удалите его из текущего манифеста. В противном случае укажите токен прямо в этом файле. ### API Перейдите во вкладку «cURL», скопируйте команду и выполните её в терминале. ![Screenshot 04 02 25 15:33:23](https://content.timeweb.com/assets/9c98f4f4-1ef3-4d3f-8620-bd66ed977844.png?width=1018&height=762) Обратите внимание, что для выполнения команды необходимо [выпустить токен](https://timeweb.cloud/docs/account-management/token) и установить переменную окружения: ```shell export TIMEWEB_CLOUD_TOKEN=ваш_токен ``` Также в некоторых случаях может потребоваться установка утилиты `jq`. Установить её можно так: **Ubuntu/Debian** ```shell sudo apt install jq ``` **Centos** ```shell sudo yum install epel-release -y ``` ```shell sudo yum install jq -y ``` **MacOS** ```shell brew install jq ``` ### CLI Перейдите во вкладку «Timeweb Cloud CLI» и скопируйте команду для создания сервера. ![Screenshot 04 02 25 15:35:23](https://content.timeweb.com/assets/f287596a-7e11-4799-a5ca-3c4fceee6c97.png?width=1020&height=771) Обратите внимание, что в некоторых случаях для корректной работы команды потребуется утилита `awk`. Установить её можно так: **Ubuntu/Debian** ```shell sudo apt install gawk ``` **Centos** ```shell sudo yum install gawk ``` **MacOS** ```shell brew install awk ``` # Список серверов Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/server-list Раздел «[Облачные серверы](https://timeweb.cloud/my/servers)» выводит полный список созданных серверов с их именами, комментариями, конфигурацией, занятым объемом диска и IP-адресом сервера. По клику на IP его можно быстро скопировать. При наведении курсора на нужный сервер станут доступны быстрые действия: - Клонирование сервера - Включение / выключение сервера - Перезагрузка - Статус автобэкапов; по клику — быстрый переход в раздел «Бэкапы». ![Облачные Серверы 04 22 2026 11 17 Am](https://content.timeweb.com/assets/c760789e-8f92-4d93-9309-337930146d35.png?width=1577&height=833) По клику на три точки в блоке «Действия» откроются дополнительные опции: - Сброс пароля root-пользователя / администратора - Переход к консоли - Переход к переустановке ОС - Удаление сервера ![Облачные Серверы 04 22 2026 11 19 Am](https://content.timeweb.com/assets/90f40aeb-88b2-4b6c-a1f2-ddedd5a8e762.png?width=1565&height=834) # Сценарии cloud-init Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/cloud-init [Cloud-init](https://cloudinit.readthedocs.io/en/latest/index.html) — это инструмент для настройки облачного сервера, который позволяет передать пользовательские параметры (user-data) при запуске виртуальной машины и тем самым ускорить и автоматизировать процесс настройки серверов. С помощью `cloud-init` вы можете настроить конфигурацию сервера, установить нужное ПО, создать нужные директории и пользователей и назначить им права — и многое другое. Сценарии `cloud-init` также можно передавать через [Terraform](https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud), а в ближайшее время реализуем и передачу через CLI. ## Форматы Сценарии `cloud-init` можно передавать в виде текстовых файлов `#cloud-config` или shell-скриптов `#!/bin/sh`. > [!NOTE] > При использовании shell-скриптов необходимо учитывать следующее: > > - shell-скрипт будет автоматически преобразован в `cloud-config` с директивой `runcmd`; > - `runcmd` выполняется однократно, поэтому после изменения скрипта и перезагрузки VDS скрипт не будет выполнен. > > Если вам нужно, чтобы сценарий выполнялся при каждой загрузке сервера, необходимо использовать скрипты в формате `cloud-config` и директиву `bootcmd`. ## Особенности - Сценарии выполняются от `root`, поэтому в командах не требуется указывать `sudo`. - Все созданные файлы и директории будут принадлежать пользователю `root`, поэтому если необходимо, чтобы доступ к ним имел иной пользователь, задайте в сценарии соответствующие права для него. - Так как сценарий выполняется полностью автоматически, в нем не получится использоваться команды, запрашивающие действия от пользователя. Для команд, требующих подтверждения в процессе выполнения, используйте ключ `-y` (например, `apt upgrade -y`). - Лог выполнения сценария записывается в файл `/var/log/cloud-init-output.log`. - При использовании сторонних образов системы `cloud-init` может работать некорректно. - На Ubuntu `cloud-init` по умолчанию создаст пользователя `ubuntu`, если нет инструкции `users`. Если создание пользователей не требуется, рекомендуется указать запись вида: ```shell users: [] ``` ## Загрузка сценария Загрузить сценарий `cloud-init` можно: - На этапе создания сервера. Заданные параметры будут применены при установке. ![081449bf 55b6 44d0 Bd74 578830f3efef](https://content.timeweb.com/assets/853e691e-3c2c-400e-a86e-def8985a7901?width=773&height=440) - При переустановке сервера. Заданные параметры будут применены при установке. ![Без Названия (1)](https://content.timeweb.com/assets/36bc5af7-e9c3-469a-a238-80f497501f25?width=1473&height=1213) - После создания сервера, в разделе «Конфигурация». Чтобы заданные параметры были применены при следующей перезагрузке, необходимо перезагрузить систему командой: `cloud-init clean --reboot`. ![E5d9634a 23f5 491b B45f 60f3be14d878](https://content.timeweb.com/assets/ac04e434-64ff-4573-9bbc-6c01c58be1b1?width=1448&height=961) ## Редактирование сценария Вы можете изменять уже загруженный скрипт `cloud-init` в настройках сервера. > [!NOTE] > Чтобы заданные параметры были применены при следующей перезагрузке, необходимо перезагрузить систему командой: `cloud-init clean --reboot`. 1. Перейдите на вкладку «Конфигурация». 2. Кликните «Редактировать» в блоке «Cloud-init». 3. Внесите изменения и сохраните их. ![E5d9634a 23f5 491b B45f 60f3be14d878](https://content.timeweb.com/assets/fbffd610-49d9-4fae-aaa1-9f237cb1b0b1?width=1448&height=961) Сценарий будет применен при следующей перезагрузке сервера. ## Примеры shell-скриптов > [!NOTE] > Скрипт обязательно должен начинаться с `#!/bin/sh`. **Установка пакетов** С помощью скрипта ниже установим `fail2ban`: ```shell #!/bin/sh apt -y update apt -y install fail2ban ``` **Установка LAMP на CentOS** ```shell #!/bin/sh ##Ставим PHP 7.2 yum -y install epel-release yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-config-manager --enable remi-php72 yum update -y yum install -y php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-process php-ldap php-mbstring ##Ставим MariaDB 11.02 wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup chmod +x mariadb_repo_setup bash mariadb_repo_setup yum install -y httpd mariadb-server ##Запускаем автозагрузку сервисов systemctl start mariadb systemctl enable mariadb systemctl start httpd systemctl enable httpd ##Назначаем права chmod 2775 /var/www find /var/www -type d -exec chmod 2775 {} \; find /var/www -type f -exec chmod 0664 {} \; ## Вывод phpinfo echo "" > /var/www/html/phpinfo.php ## Открываем порт iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT ``` ## Примеры cloud-config > [!NOTE] > Файл обязательно должен начинаться с `#cloud-config`. **Установка пакетов** ```shell #cloud-config package_update: true packages: - apache2 - mariadb-server - mariadb-client ``` **Создание пользователей** ```shell #cloud-config users: - name: username - name: new_username ``` При создании пользователя через cloud-init пропадет возможность авторизации под пользователем root с использованием пароля. Это происходит из-за того, что ваш `user-data` перезаписывает настройки, заданные `vendor-data`. Если вам нужна авторизация под root с паролем, используйте директиву `chpasswd` и явно задайте пароль: ```bash #cloud-config users: - name: newuser shell: /bin/bash groups: [sudo] sudo: ["ALL=(ALL) NOPASSWD:ALL"] chpasswd: list: | root:rootpass newuser:newuserpass expire: false ``` > [!NOTE] > В этом случае пароль root, отображаемый в панели управления, больше не будет актуален. Однако при смене пароля через панель управления он обновится корректно. Если авторизация по паролю вам не нужна, используйте SSH-ключи. **Добавление SSH-ключей** ```shell #cloud-config ssh_authorized_keys: - ssh-rsa ПУБЛИЧНЫЙ_КЛЮЧ username@server ``` Можно добавить несколько ключей сразу: ```shell #cloud-config ssh_authorized_keys: - ssh-rsa ПУБЛИЧНЫЙ_КЛЮЧ username@server - ssh-rsa ПУБЛИЧНЫЙ_КЛЮЧ_2 username2@desktop ``` **Создание пользователя с правами sudo, добавление SSH-ключей и настройка оболочки bash** ```shell #cloud-config users: - name: username groups: sudo shell: /bin/bash sudo: ['ALL=(ALL) NOPASSWD:ALL'] ssh-authorized-keys: - ПУБЛИЧНЫЙ_КЛЮЧ username@server - ПУБЛИЧНЫЙ_КЛЮЧ_2 username2@desktop ``` **Установка LAMP на Ubuntu** ```shell #cloud-config package_update: true packages: - apache2 - php-mysql - mysql-server - libapache2-mod-php - php-gd - php-curl runcmd: - [ find, /var/www, -type, d, -exec, chmod, 2775, {}, \; ] - [ find, /var/www, -type, f, -exec, chmod, 0664, {}, \; ] write_files: - path: /var/www/html/phpinfo.php owner: www-data:www-data content: | "" ``` После завершения настройки при переходе по адресу `http://ip_адрес_сервера/phpinfo.php` отобразится страница с параметрами PHP. > [!NOTE] > Больше примеров можно найти в [документации cloud-init](https://cloudinit.readthedocs.io/en/latest/reference/examples.html#cloud-config-examples). # Тариф и конфигурация Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/server-configuration На вкладке «Конфигурация» вы можете менять тариф сервера и управлять его параметрами. ## Смена тарифа > [!NOTE] > Тариф можно изменить только в большую сторону. Это связано с тем, что размер диска облачного сервера можно увеличить, но уменьшить невозможно. Для изменения тарифа сервера перейдите на вкладку «Конфигурация» и кликните «Выбрать конфигурацию»: ![Cb899134 F375 45a6 8d35 E7751f1eb9ed](https://content.timeweb.com/assets/f3541cdf-113c-43b4-979a-2c2bf34dec4a.png?width=1540&height=1014) Выберите новый тариф. ![D995d3d4 A242 4579 Be3c 14d04eae2b99](https://content.timeweb.com/assets/3478103c-5398-4160-86f9-3485c0afda12.png?width=1533&height=1291) На вкладке «Произвольная» вы можете вместо готового тарифа настроить параметры сервера индивидуально. > [!NOTE] > Обратите внимание, что стоимость произвольной конфигурации будет выше, чем стоимость фиксированной конфигурации с такими же параметрами. После выбора нужного тарифа нажмите «Сохранить и перезагрузить», и в следующем окне подтвердите действие. ## Диски > [!NOTE] > К серверу можно добавлять **локальные** и **сетевые** диски. Ниже — инструкция для локальных дисков. Работа с сетевыми дисками [описана здесь](https://timeweb.cloud/docs/network-drives). Вы можете добавлять новые локальные диски, удалять старые (кроме основного), увеличивать их размер. К каждому виртуальному серверу вы можете подключить до 10 дополнительных локальных и сетевых дисков. Обратите внимание, что операции с дисками будут недоступны, если на сервере создана [точка восстановления](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup#snapshoty). ### Добавление нового диска Для добавления нового диска перейдите на вкладку «Конфигурация» и нажмите кнопку «Добавить диск»: ![Efdae0fe 5573 47df Becf 9dd6f04090e1](https://content.timeweb.com/assets/0e504520-0a27-4607-921d-ddd15ef705ba?width=1455&height=981) Выберите тип диска — локальный или [сетевой](https://timeweb.cloud/docs/network-drives), укажите размер нового накопителя и нажмите «Добавить». В следующем окне подтвердите действие. ![Scr 20251114 Oujv](https://content.timeweb.com/assets/7886c2db-8ebc-4a7f-90ba-4459e0753144.png?width=1994&height=1432) Добавленный диск отобразится в панели управления: ![Scr 20251114 Ouvz](https://content.timeweb.com/assets/721f24f2-bdc3-438e-9570-0f722abf266d.png?width=2022&height=1486) После необходимо выполнить ряд настроек внутри операционной системы, как описано в инструкции «[Добавление нового диска](https://timeweb.cloud/docs/unix-guides/adding-removing-disk)». ### Изменение размера диска **Важно:** перед выполнением любых операций с диском рекомендуем создать резервную копию всего сервера, чтобы в случае непредвиденной ситуации данные не были утеряны. Изменить размер диска можно **только в сторону увеличения**. Шаг увеличения диска — 5 ГБ. Уменьшение диска недоступно из-за крайне высокого риска повреждения файловой системы и всех данных на ней. Если вам нужен диск меньшего размера, потребуется создать новый сервер с таким диском и перенести данные на него. После изменения размера диска в панели в отдельных случаях потребуется пересоздать разделы на диске. Подробности в нашей инструкции: «[Изменение размера диска](https://timeweb.cloud/docs/unix-guides/disk-resizing)». #### **Для основного диска** Чтобы изменить размер основного диска, кликните «Выбрать конфигурацию» и выберите тариф с нужными размером диска или настройте размер диска вручную на вкладке «Произвольная конфигурация». ![D995d3d4 A242 4579 Be3c 14d04eae2b99](https://content.timeweb.com/assets/3478103c-5398-4160-86f9-3485c0afda12.png?width=1533&height=1291) Нажмите «Сохранить и перезагрузить». #### **Для дополнительного диска** Чтобы изменить размер дополнительного диска, на вкладке «Конфигурация» наведите курсор на нужный диск в панели и кликните на значок шестеренки. ![Scr 20251114 Ovhv](https://content.timeweb.com/assets/ac7a75d4-df0a-4b26-8baf-1832a6815639.png?width=2034&height=1432) Измените размер диска до желаемого и нажмите «Сохранить». ### Удаление диска Чтобы удалить дополнительный диск: 1. [Удалите диск из системы](https://timeweb.cloud/docs/unix-guides/adding-removing-disk#udalenie-diska). 2. На вкладке «Конфигурация» наведите курсор на нужный диск в панели и кликните на три точки, после чего нажмите на кнопку «Удалить». В следующем окне подтвердите действие. ![Scr 20251114 Ovqt](https://content.timeweb.com/assets/2121d999-2afb-4cba-887b-e396776ad414.png?width=1992&height=1438) ## Процессор и память Изменить количество ядер процессора или объем оперативной памяти можно путем смены тарифа или ручной настройкой параметров через конфигуратор. Для этого на вкладке «Конфигурация» кликните «Выбрать конфигурацию». ![Scr 20251114 Ovxo](https://content.timeweb.com/assets/7a582130-a3fe-43bd-b895-a9cdf1e5b96d.png?width=1994&height=1456) Выберите готовый тариф с нужными параметрами или перейдите на вкладку «Произвольная», чтобы настроить их вручную. Вы можете передвигать ползунок до нужного значения или ввести значение в поле. Нажмите «Сохранить и перезагрузить». # Настройки сети Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/network В панели управления вы можете заказывать дополнительные публичные IP-адреса для сервера, включать DDoS-защиту (для серверов в Петербурге и Москве) и добавлять серверы в приватную сеть. ## Дополнительные IP-адреса На сервер можно добавить дополнительные IP-адреса: - IPv4 — не более 10 штук в сутки; - IPv6 — не более 10 штук на сервер всего. Все IPv4-адреса «плавающие», что значит, что вы можете переносить их между разными сервисами на аккаунте. > [!NOTE] > **Важно:** > > - IPv4-адреса платные. > - IPv6-адреса предоставляются бесплатно. > - IPv6-адреса недоступны для серверов в Новосибирске. > - Добавить дополнительный IP-адрес невозможно, если сервер добавлен в приватную сеть OVN. В BGP-сетях такая возможность доступна. На балансе аккаунта должно быть достаточно средств для оплаты сервера с дополнительным IP-адресом на 30 дней. ## Добавление IP-адреса Добавить IP-адрес можно двумя способами: - в настройках сервера; - через раздел «Сети». ### Добавление в настройках сервера 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. На вкладке «Сеть» нажмите кнопку «Добавить». ![Scr 20260121 Qoxp](https://content.timeweb.com/assets/b3db0d4f-3ef3-44e6-9303-5b556b4a00a0.png?width=2192&height=1536) 3. Выберите адрес: - если у вас есть непривязанный публичный IP, выберите его в поле «Адрес»; - если IP-адреса нет, выберите «Публичный IP» и укажите версию IPv4 или IPv6. - Для серверов в Санкт-Петербурге и Москве можно сразу подключить защиту от DDoS. Стоимость защиты — 550 рублей в месяц, без учета стоимости самого IPv4. ![Scr 20260121 Qpfc](https://content.timeweb.com/assets/75fe3371-148a-4a64-b0dc-83fa9750df30.png?width=2144&height=1456) 4. Нажмите кнопку «Добавить». ### Добавление через раздел «Сети» Предварительно [создайте публичный IP](https://timeweb.cloud/docs/public-ip/create-public-ip). 1. Перейдите в раздел «Сети», во вкладку «Публичные IP». ![Scr 20260121 Qpkr](https://content.timeweb.com/assets/cdfe81bc-97be-4b74-81db-f9a57520c9f8.png?width=2126&height=1602) 2. Выберите непривязанный IP-адрес. 3. Нажмите кнопку «Привязать». 4. Перейдите во вкладку «Существующий». 5. Выберите сервис, к которому будет привязан IP-адрес. ![Scr 20260121 Qpwy](https://content.timeweb.com/assets/b48feee9-cfe2-403d-8ae3-ef1ab9e778e0.png?width=2106&height=1444) 6. Нажмите кнопку «Привязать». ## Отключение IP-адреса Отключить публичный IP-адрес можно двумя способами: - в настройках сервера; - через раздел «Сети». ### Отключение в настройках сервера 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. На вкладке «Сеть» наведите курсор на нужный IP-адрес. 3. Нажмите кнопку «Отвязать». ![Scr 20260121 Qmjk](https://content.timeweb.com/assets/28c74aa2-e122-4113-8b12-a5a6c80e27de.png?width=2162&height=1610) 4. В открывшемся окне при необходимости установите флаг «Удалить IP-адрес с аккаунта после отвязки». 5. Подтвердите действие, нажав кнопку «Да, отвязать». ### Отключение через раздел «Сети» 1. Перейдите в раздел «Сети», во вкладку «Публичные IP». 2. Наведите курсор на IP-адрес, который нужно отвязать, и нажмите кнопку «Отвязать». ![Scr 20260121 Qqqn](https://content.timeweb.com/assets/70efab0f-10d6-438f-89bc-c3afda2ff102.png?width=2164&height=1590) 3. В открывшемся окне при необходимости установите флаг «Удалить IP-адрес с аккаунта после отвязки». 4. Подтвердите действие, нажав кнопку «Да, отвязать». ## Приватные сети Серверы и облачные сервисы можно объединять в [приватные сети](https://timeweb.cloud/docs/vpc). Это позволяет обеспечить более безопасное и стабильное соединение между сервисами, а также минимизировать сетевые задержки. В приватной сети можно объединить неограниченное количество сервисов. Сервис предоставляется бесплатно. ### Подключение Для **нового** сервера подключение выполняется при [создании сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/create-server) — для этого в пункте «Сеть» выберите одну из существующих сетей или опцию «Добавить сеть». Далее вы сможете указать приватный IP. Чтобы добавить **существующий** сервер в локальную сеть: 1. На вкладке «Сеть» нажмите «Включить» в параметре «Приватная сеть». ![90c2b1b9 Bc63 47b1 9cd7 9799f72f8fda](https://content.timeweb.com/assets/48e1f456-6efa-436d-9fdc-126fd3d59620?width=1511&height=1043) 2. На следующей странице выберите одну из существующих приватных сетей или опцию «Добавить сеть». ![6ad7d769 42e5 42e2 B62c 6312cc06c3b9](https://content.timeweb.com/assets/a26b2e15-761d-41ce-818a-372226069050?width=1493&height=846) 3. Нажмите «Подключить». Процесс переноса сервера в приватную сеть займет некоторое время: в среднем, 10 ГБ переносится за 1 минуту. На протяжении всего этого процесса сервер **будет доступен**. После завершения переноса сервер будет перезагружен, его недоступность составит 5-10 минут. При переносе публичный IP-адрес сервера может быть изменен. ### Настройки маршрутизации Если для сервера подключена приватная сеть, вы сможете управлять [настройками маршрутизации](https://timeweb.cloud/docs/vpc/nat#pravila-marshrutizacii-trafika): ![29d54081 16e9 44ee 8c3e 0fd01ad99981](https://content.timeweb.com/assets/feb80105-3754-4089-9822-b7903993170a?width=1508&height=1197) Кликните на «Настроить», выберите нужный вариант и сохраните изменения: ![B91fc762 4053 4328 B775 E0f00540cc9b](https://content.timeweb.com/assets/321cac19-6f62-41ca-8918-84200615732e?width=1493&height=740) ### Ограничения Серверы с приватной сетью имеют определенные ограничения: - на сервере отсутствует IPv6; - на сервер невозможно добавить дополнительный IP. ## Настройка PTR-записи > [!NOTE] > Настройка PTR-записи недоступна для серверов, размещенных в Новосибирске. Чтобы настроить обратную зону для сервера: 1. Перейдите на вкладку «Сеть». 2. Наведите курсор на нужный IP-адрес и кликните на значок шестеренки. ![Ec74f0d1 A9f3 4567 Bb15 D97f2ba51499](https://content.timeweb.com/assets/8c0ab78a-073b-4d5c-9bf0-1edea143bdbd?width=1267&height=795) 3. Введите нужное значение и сохраните изменения. ![C0ff2c6e 8262 4ac3 93aa 332bcc0fc928](https://content.timeweb.com/assets/5a4f7699-1a3b-47c3-9707-111d74080ba2?width=1498&height=820) # Веб-консоль Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/console Управлять виртуальным сервером вы можете различными способами. - **Для Linux-систем** традиционным способом управления является терминал (консоль). Вы можете вводить команды, которые будут выполнены на сервере, и сразу же видеть результат выполнения. Таким образом работают все Linux-дистрибутивы, FreeBSD и многие другие. Программы для работы с протоколом SSH (SSH-клиенты) существуют для каждой операционной системы и зачастую уже встроены в нее. - **Для администрирования Windows-серверов** чаще всего используется [RDP-доступ](https://timeweb.cloud/docs/windows-guides/connecting-to-the-server-via-rdp). В этом случае вы обладаете полноценным графическим доступом к серверу и можете выполнять все те же действия, которые выполняете на обычном компьютере с установленной системой Windows. Программа для работы с RDP, как правило, также встроена в операционную систему, однако иногда ее необходимо устанавливать отдельно. Для этих типов доступа необходимо иметь интернет-подключение к серверу. Если же по каким-либо причинам доступ к сети Интернет на облачном сервере отсутствует, использовать эти протоколы доступа вы не сможете. В этом случае на помощь приходит веб-консоль, доступная в вашей панели управления сервером. ![68d49e88 297f 4f6a 8c25 B4cf20454766](https://content.timeweb.com/assets/91e9a354-dfab-4340-a37f-b98cce0aee3d.png?width=1552&height=1150) ## Серийная консоль Для Linux-серверов в панели доступны два типа консоли: серийная и VNC. ![B423f6c9 Af8f 469b B683 Cdea2449126b](https://content.timeweb.com/assets/2d6b3ecd-0b9f-45bd-8b0e-2cbeda3b3285.png?width=1560&height=801) Мы рекомендуем использовать серийную — в большинстве случаев работа с ней будет удобнее, чем с VNC. Серийная консоль по умолчанию доступна для всех серверов, установленных после 4 апреля 2024 года. Если ваш сервер создан раньше, в панели отображается подсказка с командой, которую надо выполнить на сервере, чтобы добавить поддержку серийной консоли. Серийная консоль, как и VNC, работает независимо публичной сети и настроек SSH и позволяет обращаться к серверу в том числе в аварийных ситуациях. Однако в отличие от VNC, серийная консоль имеет определенные преимущества: - Запускается мгновенно. - Потребляет меньше ресурсов, чем VNC. - Поддерживает сочетания клавиш `Ctrl Shift C` и `Ctrl Shift V` для удобной вставки и копирования команд. - Поддерживает работу с мышкой — можно выделять текст в терминале, а также копировать и вставлять текст через меню правой кнопки мыши. - Поддерживает скроллинг внутри терминала. - Позволяет увеличить или уменьшить шрифт внутри терминала с помощью `Ctrl +` и `Ctrl -`. - Позволяет включить подсветку синтаксиса одной командой, которую можно скопировать из подсказки в панели. ![8b30d2e8 5f78 40e9 9146 3ea36bd2d1d2](https://content.timeweb.com/assets/b77b099e-6b80-4728-bfd5-589d3b2bd85f.png?width=1548&height=814) ## Вход в систему на Linux-серверах 1. Скопируйте root-пароль на вкладке «Дашборд». 2. Перейдите на вкладку «Консоль». Если вы используете серийную консоль и видите приглашение «press enter», нажмите Enter. 3. Введите логин `root` и нажмите Enter. 4. Вставьте пароль комбинацией клавиш `Ctrl Shift V`, подождите пару секунд, после чего нажмите Enter. ## Вставка из буфера Консоль поддерживает вставку из буфера обмена. Вы можете копировать пароли или команды и вставлять их в консоль сочетанием клавиш `Ctrl Shift V`. При вставке из буфера может быть небольшая задержка — после вставки пароля подождите пару секунд, прежде чем подтверждать его ввод клавишей Enter. ## Полноэкранный режим Для удобства консоль можно развернуть на весь экран: ![4356df5a 82af 404b 9c72 A32d65471d0c](https://content.timeweb.com/assets/c69edc00-c629-4dea-93cf-a96abf5028b9?width=1105&height=495) ## Вход в систему на Windows-серверах 1. Скопируйте пароль администратора на вкладке «Дашборд». 2. На вкладке «Консоль» кликните на экран интерфейса и переключите раскладку на ENG. 3. Скопируйте пароль в форму ввода и нажмите Enter. ![4a626104 67e8 42e6 Ae01 0468c5961f63](https://content.timeweb.com/assets/3d883865-ae9d-4d37-83fa-4b50bae3243a?width=1106&height=1232) _Графический интерфейс [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ ## Вход в систему на Windows Server 2012 Для входа система запросит ввод CTRL+ALT+DEL, однако сочетание клавиш может не сработать, так как может быть перехвачено вашей локальной системой Windows. Для входа на сервер: 1. Скопируйте пароль администратора на вкладке «Дашборд». 2. На вкладке «Консоль» кликните на иконку дополнительных опций слева и выберите самый последний вариант (опция «Send Ctrl-Alt-Del»). ![Acabfe70 A2b4 4beb Ab3f Add2267f32ab](https://content.timeweb.com/assets/594b3df7-e8de-4e48-bb1f-8c0e7389478e?width=1119&height=1008) _Графический интерфейс [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 3. Переключитесь на английскую раскладку, вставьте скопированный пароль и нажмите Enter. ![0a27b8cf 3ebb 45c3 A1c7 A3ee99ead036](https://content.timeweb.com/assets/1401f88b-848e-493c-a4e7-9f8f81cb0cc3?width=1123&height=1010) _Графический интерфейс [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ # Сброс пароля root Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/root-password-reset Пароль root-пользователя для вашего сервера можно найти и скопировать в панели управления — на вкладке «Дашборд»: ![3d65a66c 8283 4d28 83c4 0015e3faab57](https://content.timeweb.com/assets/770c01d0-2fb7-4851-ae1d-9ac43765d7bb.png?width=1548&height=1527) Или «Доступ»: ![F0a54683 B014 4304 B7e8 1ec39bdf750f](https://content.timeweb.com/assets/1b4141e5-a613-4ba2-9d3d-d5d278a8d971.png?width=1537&height=860) Однако если вы меняли пароль внутри сервера, то отображаемый в панели пароль будет неактуален. Его можно сбросить через панель управления или внутри ОС. > [!NOTE] > Если в панели нет root-пароля, значит, он отправлялся вам на email при создании сервера. Чтобы не искать письмо об установке, вы можете сбросить пароль по инструкции ниже, после чего новый пароль будет отображаться в панели на Дашборде сервера. ## Сброс пароля Сменить root-пароль на новый можно средствами панели управления. - По клику на значок замка в верхнем меню сервера: ![1c40bd5b 49c7 48f1 Aa7d 0282521ec3ca](https://content.timeweb.com/assets/005aa775-0ee8-4fc6-b1d5-a4563a0ab935?width=1084&height=233) - На вкладке «Доступ», по клику на «Изменить»: ![961c7224 Fc00 498b Acb5 C90133c481c8](https://content.timeweb.com/assets/42dac30b-5fee-4036-9963-d518135e9c82?width=1461&height=816) На следующем шаге подтвердите действие. Пароль обновится и будет доступен на вкладках «Дашборд» и «Доступ». > [!NOTE] > Инструкция о том, как сменить утерянный пароль root средствами операционной системы, доступна в статье [Сброс или смена пароля root](https://timeweb.cloud/docs/unix-guides/root-password-reset). # SSH-ключи Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/ssh-keys Для безопасного подключения к серверам вы можете использовать SSH-ключи. Их удобно сохранять в панели управления в разделе «[SSH-ключи](https://timeweb.cloud/my/sshkeys)», чтобы использовать при создании новых серверов. > [!NOTE] > Использование SSH-ключей опционально: они повышают безопасность и дают дополнительное удобство при логине на сервер, однако пользоваться ими необязательно. Если вы не хотите использовать SSH-ключи, вы можете по-прежнему авторизовываться на сервере по логину и паролю. ## Создание SSH-ключей Создать SSH-ключи можно по [нашей инструкции](https://timeweb.cloud/docs/unix-guides/ssh-key-authentication). Она также приводится в панели управления в разделе «[SSH-ключи](https://timeweb.cloud/my/sshkeys)». В процессе генерации ключей создаются два ключа: приватный и публичный. Приватный хранится на вашем компьютере, а публичный необходимо добавить на сервер, к которому вы хотите подключаться. Добавить ключ на сервер и в панель Timeweb Cloud можно несколькими способами: - при создании нового сервера — ключ будет добавлен на сервер и сохранен в панели; - в настройках существующего сервера — ключ будет добавлен на сервер и сохранен в панели; - в разделе SSH-ключи — ключ будет сохранен в панели, и затем вы сможете добавлять его на серверы. ## Добавление ключа на новый сервер Добавить ключ на новый сервер можно при его создании, в пункте «Авторизация». Вы можете выбрать один из ключей, уже добавленных в панель, или загрузить новый ключ. ![Acb234de 0c9f 4583 Ba0e 4f864f4dcbc9](https://content.timeweb.com/assets/63f25669-8039-4248-843c-d9f91c46a3de?width=758&height=357) Завершите создание сервера, и указанный вами SSH-ключ добавится на сервер и автоматически. Вы сможете [заходить на сервер без пароля](https://timeweb.cloud/docs/cloud-servers/manage-servers/ssh-keys#vhod-na-server-po-kluchu). Если вы загрузили новый ключ, он также будет доступен в списке ключей в разделе «SSH-ключи». Если вы не добавили ключ при создании сервера, вы сможете зайти на него, как обычно, используя логин и пароль. ## Добавление ключа на существующий сервер Если сервер уже существует, вы можете добавить на него новый ключ на вкладке «Доступ» → «Изменить». ![83b12307 Bd6a 4fbf 9ca7 336a47a81898](https://content.timeweb.com/assets/8c921037-5f32-470a-9aee-4d25345919a9?width=1478&height=966) Выберите один из существующих ключей или загрузите новый. ![86761cbd A44e 4f35 Be67 673816803f22](https://content.timeweb.com/assets/6b3ecb17-73dc-4fe9-9735-c3aff13c3060?width=1473&height=698) Ключ будет автоматически добавлен на сервер в течение пару минут (без перезагрузки), и вы сможете [заходить на сервер без пароля](https://timeweb.cloud/docs/cloud-servers/manage-servers/ssh-keys#vhod-na-server-po-kluchu). Если вы загрузили новый ключ, он также отобразится в списке ключей в разделе «SSH-ключи». ## Добавление ключа в панель Вы можете добавить SSH-ключ в панель управления, пока не привязывая его ни к какому серверу. Для этого: 1. Перейдите в раздел «Облачные серверы», во вкладку «[SSH-ключи](https://timeweb.cloud/my/sshkeys)» и нажмите «Добавить». 2. Скопируйте ключ в форму и укажите удобное имя. 3. (Опционально) Отметьте пункт «Выбирать по умолчанию при создании нового сервера», чтобы автоматически добавлять этот ключ на новые серверы. 4. Нажмите «Добавить». ![Screenshot 01 15 25 15:29:37](https://content.timeweb.com/assets/bdc9405b-ef36-4c64-ab27-ae7e40676491.png?width=995&height=866) Ключ будет отображен в списке SSH-ключей. В дальнейшем вы сможете выбирать его при создании нового сервера, в настройках существующего или при переустановке ОС. ## Вход на сервер по ключу Если вы добавили на сервер SSH-ключ, то теперь вы можете заходить на него без пароля. Чтобы войти на сервер по SSH-ключу: 1. Откройте терминал или Windows Powershell на своем компьютере. 2. Выполните команду вида: ```shell ssh user@server ``` Например: ```shell ssh root@213.171.8.153 ``` Вы будете автоматически авторизованы на сервере. ## Ключ по умолчанию Чтобы определенный ключ предлагался при создании всех новых серверов, отметьте пункт «Выбирать по умолчанию при создании нового сервера». Это можно сделать при добавлении нового ключа в панель или в настройках уже существующего. ![Mykey Laptop 2026 08 20 13 22](https://content.timeweb.com/assets/041e3f64-974b-436f-afff-a7dbb609f115.png?width=1574&height=856) ## Удаление ключа В разделе «SSH-ключи» кликните на три точки в строке с нужным ключом и нажмите «Удалить ключ». # Перезагрузка сервера Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/reboot Вы можете перезагружать облачные серверы из панели управления. ## Как перезагрузить сервер 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. Кликните на иконку перезагрузки. ![73be4efc 5c09 4e73 B969 63bf48501518](https://content.timeweb.com/assets/92058bbf-d039-4ef4-8733-ce577d514baf.png?width=1576&height=785) 3. Выберите тип перезагрузки: «Перезагрузка ОС» или «Перезагрузка сервера». 4. Нажмите «Перезагрузить». ![Bc35676d 434f 44d2 B10a A4e1595e987d](https://content.timeweb.com/assets/acfa56b8-c48f-403b-98df-fadefe837c9f.png?width=1576&height=784) ## Soft reboot (перезагрузка ОС) Soft reboot — это перезагрузка, выполняемая самой операционной системой. Сервер получает команду на перезапуск и корректно завершает работу: - останавливаются службы и приложения; - закрываются файлы и сетевые соединения; - данные записываются на диск. После этого система запускается заново. Это аналог выполнения в терминале команд `reboot` или `shutdown -r now`. В большинстве случаев **рекомендуется именно этот тип перезагрузки** — например, при изменении конфигурации, обновлении системы или ядра или как первый шаг при устранении мелких неполадок в работе сервера. ## Hard reboot (перезагрузка сервера) Hard reboot — это принудительная перезагрузка на уровне инфраструктуры. Она выполняется без участия операционной системы и аналогична отключению и повторному включению питания сервера. При такой перезагрузке процессы завершаются принудительно, а данные в оперативной памяти могут быть потеряны. При следующем запуске система может выполнять проверку файловой системы. Используйте hard reboot, только если сервер не отвечает: - сервер завис; - отсутствует доступ по SSH или RDP; - soft reboot не помогает; - система перестала реагировать на команды. # Смена режима загрузки Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/boot-mode Отдельные действия с сервером, например, восстановление пароля `root` или пересоздание разделов на диске, требуют отличных от стандартного (многопользовательского) режимов загрузки ОС. Каждый режим предназначен для определенных задач и предоставляет разный уровень доступа к системе. ## Как изменить режим загрузки Чтобы сменить режим загрузки ОС: 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. Откройте вкладку «Доступ». 3. Нажмите «Изменить» в блоке «Режим загрузки ОС». ![Image1](https://content.timeweb.com/assets/c02f1f0d-eceb-49cf-98db-b6b85ebbba20.png?width=1562&height=853) 4. Выберите нужный режим загрузки. 5. Нажмите «Сохранить и перезагрузить». Сервер будет загружен в нужном режиме. ## Доступные режимы загрузки ### Стандартный режим Режим загрузки по умолчанию. Сервер запускается в штатном режиме: загружается полноценная операционная система со всеми настроенными сервисами, сетевыми интерфейсами и пользовательскими сессиями. Используйте стандартный режим, если: - Сервер работает в обычном режиме. - Необходим доступ по SSH или полноценное сетевое подключение. - Вы разворачиваете приложения, выполняете рабочие задачи или проводите обычное администрирование. ### Однопользовательский режим Однопользовательский режим загружает операционную систему с системного диска сервера, но пропускает обычную многопользовательскую инициализацию. Система запускается в минимальном окружении с корневой оболочкой и без большинства сервисов. Однопользовательский режим предоставляет неограниченный доступ root без дополнительной аутентификации. Используйте его только при необходимости и возвращайтесь в стандартный режим сразу после завершения задачи. Особенности режима: - ОС загружается с системного диска сервера, как и в стандартном режиме. - Доступ есть только у пользователя `root`; другие пользователи войти не могут. - Большинство сервисов остановлены, сетевые интерфейсы не активированы. - SSH недоступен, подключиться к серверу можно только через VNC-консоль в панели управления. Используйте однопользовательский режим, если: - Неверно настроенный сервис или ошибочная запись в `/etc/fstab` не дают серверу загрузиться в штатном режиме. - Нужно проверить или восстановить локальную файловую систему с помощью `fsck`. - Нужно отредактировать системные конфигурационные файлы до запуска сервисов. ### Загрузка с диска восстановления В этом режиме сервер загружается не с собственного системного диска, а с внешнего образа восстановления. Среда восстановления — это отдельная минимальная операционная система, которая загружается независимо от установленной на сервере. Особенности режима: - ОС загружается из образа восстановления, а не с системного диска сервера. - SSH-доступ к среде восстановления по умолчанию блокируется файрволом — без дополнительной настройки подключиться можно только через VNC-консоль в панели управления. - Диск сервера доступен как дополнительное блочное устройство, которое можно примонтировать. - Среда восстановления не затронута проблемами на диске сервера. Используйте загрузку с диска восстановления, если: - Нужно [сбросить пароль root](https://timeweb.cloud/docs/unix-guides/root-password-reset#esli-tekushchij-parol-neizvesten) из операционной системы. - Нужно [переразметить разделы диска](https://timeweb.cloud/docs/unix-guides/disk-resizing#rasshirenie-razdelov-na-diske) на сервере. - ОС сервера повреждена настолько, что не загружается даже в однопользовательском режиме. - Сервер не загружается и восстановить его работоспособность не удается, но нужно забрать файлы с диска — например, скопировать их на другой сервер перед переустановкой ОС. В режиме загрузки с диска восстановления системный диск сервера не является активной ОС — он отображается как дополнительное блочное устройство, которое нужно примонтировать вручную перед доступом к файлам (см. ниже). #### Подключение по SSH к среде восстановления Для простой операции, такой как сброс root-пароля, обычно достаточно VNC-консоли в панели управления. Но для более длительных операций — например, копирования файлов на другой сервер по сети или диагностики диска — удобнее подключиться по SSH. Чтобы подключиться к среде восстановления по SSH: 1. Откройте VNC-консоль в панели управления. 2. Задайте пароль `root` для среды восстановления. Выполните команду: ```shell passwd ``` 3. Введите пароль дважды. При вводе символы не отображаются на экране из соображений безопасности. 4. Отключите файрвол, который по умолчанию блокирует SSH: ```shell systemctl stop iptables ``` 5. Подключитесь по SSH, используя заданный пароль. > [!NOTE] > Вы попадаете в саму среду восстановления, а не в систему, установленную на диске сервера. Если вам нужно работать с диском сервера, примонтируйте его, как описано ниже. #### Монтирование системного диска Чтобы получить доступ к файлам на диске сервера, выполните следующее. Корневой раздел диска может называться `sda1` или `vda1`. Сначала попробуйте команду: ```shell mount -o rw /dev/sda1 /mnt ``` Если получите ошибку: ```shell mount: /mnt: fsconfig system call failed: /dev/sda1: Can't lookup blockdev. ``` — значит, раздел называется иначе. Попробуйте другое имя устройства: ```shell mount -o rw /dev/vda1 /mnt ``` Теперь диск доступен по пути `/mnt` — можно читать, копировать и редактировать файлы. Если нужно не просто получить доступ к файлам, а работать с системой сервера как с активной ОС (например, переустановить загрузчик), дополнительно выполните `chroot`: ```shell chroot /mnt /bin/bash ``` Чтобы выйти из `chroot`, нажмите Ctrl + D. #### Отмонтирование диска По завершении работы отмонтируйте диск: ```shell umount /mnt ``` Примонтируйте корневую файловую систему в режим только для чтения — это снижает риск повреждения данных при перезагрузке: ```shell mount -o ro /dev/sda1 /mnt ``` Используйте то же имя устройства, что и при монтировании. После этого можно перезагружать сервер в обычном режиме. # Переустановка ОС Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/os-reinstall > [!NOTE] > При переустановке все данные на диске будут удалены. > > Созданные резервные копии сохранятся. Переустановка ОС на сервере не повлияет на настройки приватной сети. Переустановка системы будет невозможна, если на сервере создана [точка восстановления](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup#snapshoty). Для того чтобы переустановить операционную систему: 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. Перейдите на вкладку «Конфигурация» и кликните «Переустановить». ![D3eeef29 0c9c 4357 Bd8f D0c606bd94bd](https://content.timeweb.com/assets/0455c09a-e18a-4fa3-9aa9-8842e9defc62.png?width=1531&height=868) 3. Выберите ПО для установки: чистую операционную систему, сборку с определенным приложением («Маркетплейс») или один из доступных образов сервера («Мои образы»). 4. (Опционально) Задайте новое имя хоста, если необходимо. 5. (Опционально) Выберите SSH-ключ из сохраненных в панели управления или добавьте новый. 6. (Опционально) Добавьте [сценарий](https://timeweb.cloud/docs/cloud-servers/manage-servers/cloud-init) Cloud-init. 7. Нажмите «Переустановить». 8. Подтвердите удаление всех данных диска, введя имя облачного сервера. 9. Снова нажмите «Переустановить». Cистема будет переустановлена. # Статистика использования ресурсов Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/resource-stats Для полного понимания работы системы и рационального управления ресурсами необходимо проводить мониторинг ключевых параметров. На вкладке **Дашборд** каждого сервера вы найдете графики использования процессора и сетевого подключения за последние сутки, а также данные о занятости диска. Данные статистики позволяют оперативно анализировать состояние сервера в случае возникновения проблем и дают представление о работе системы в целом — достаточно ли текущих параметров для корректной работы сервера или требуется принять меры (изменить число ядер, увеличить полосу пропускания или размер диска). > [!NOTE] > Если у сервера **нет публичного IPv4-адреса** и он работает только в приватной сети (или имеет только IPv6-адрес), не будут отображаться данные графиков по оперативной памяти и нагрузке на диск. ## Интернет-трафик Здесь вы можете видеть входящий и исходящий трафик. Для просмотра точного значения показателей в необходимый момент наведите курсор на желаемую точку на графике. ![Traffic](https://content.timeweb.com/assets/e7b74b24-1e55-4b1b-a95d-dcc5824b4325?width=779&height=490) ## Процессор В графике статистики по использованию процессора (CPU) вы можете увидеть использование всех процессорных ядер виртуального сервера в процентах. Для просмотра точного значения показателей в необходимый момент наведите курсор на желаемую точку на графике. ![График нагрузки CPU](https://content.timeweb.com/assets/b5c4e685-8a06-43de-aea7-fc015b5bf13c.png?width=1030&height=534) ## Память Для оперативной памяти отображаем два графика: на одном выводится объем памяти, используемой приложениями, на втором — общий график, который отображает общий объем используемой памяти, занятой и приложениями, и операционной системой для кэширования диска. При наведении курсора на точку графика можно увидеть точное значение. ![D5f31ae5 8884 4d61 9268 83c9645d19db](https://content.timeweb.com/assets/44dd22d1-2168-40ab-844d-46d5fa25220e?width=719&height=370) По клику на конкретный вид графика можно отключить и снова включить его отображение: ![3365ade2 8803 419d 9da6 4a6f7518ac55](https://content.timeweb.com/assets/9eaa1257-88ef-4ee8-a06d-c7640ccb7153?width=727&height=370) ## Диск Для диска мониторится наличие свободного места, а также нагрузка на диск. ### **Место на диске** Переполнение диска приводит к нестабильной работе сервера, поэтому важно отслеживать объем занятого дискового пространства. Соответствующий пункт дашборда выводит данные о текущем состоянии основного (системного) диска. Данные обновляются раз в час. ![Disk Usage](https://content.timeweb.com/assets/10ec6e0f-896a-401b-be56-74a46c147492?width=1190&height=826) При достижении лимита в 95% на контактный ящик аккаунта будет отправлено уведомление о необходимости принять меры (освободить место на диске или увеличить его размер). Уведомления на e-mail включены по умолчанию. Отключить их или заменить на аналогичные [уведомления по SMS](https://timeweb.cloud/docs/account-management/notifications) можно в разделе [Уведомления](https://timeweb.cloud/my/account/notifications). #### Почему нет данных о дисковом пространстве Если информация о дисковом пространстве не отображается, причиной может быть: - Ошибка инструмента сбора статистики. В панели будет выведено сообщение «Ошибка получения статистики». Это означает, что данные о занятости диска не были записаны или были записаны некорректно. Для исправления ошибки и получения актуальных данных вам необходимо обратиться в [службу поддержки](https://timeweb.cloud/my/support/help-problem/other). - Невозможность получения данных из-за настроек сервера. Например, это возможно, если на диске больше одного раздела или на нем используется LVM (Logical Volume Management / Управление логическими томами). В этом случаях мы не сможем выводить статистику по дисковому пространству, и вам необходимо проводить мониторинг состояния диска самостоятельно. Это можно сделать, например, с помощью утилиты `df -h`, описанной в статье [Данные о дисках](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-data-df-lsblk-parted-fdisk). ### Нагрузка на диск Позволяет отслеживать скорость записи и чтения данных на диске. ![Disk](https://content.timeweb.com/assets/aff7ed4b-b3dc-442c-9a81-5af3f14b27ce?width=778&height=485) ## Почему не отображается статистика Если на дашборде не отображаются графики использования ресурсов, это может быть вызвано следующими причинами. ### Блокирующие правила файрвола Zabbix-агент, который отвечает за сбор статистики по серверу, слушает порт 10050/TCP. Для корректного сбора и вывода статистики должны быть разрешены входящие и исходящие соединения по порту порт 10050/TCP для хостов: ```shell 92.53.116.12 92.53.116.111 92.53.116.119 ``` Если вы запретите эти соединения (с помощью файрвола на сервере или [облачного файрвола](https://timeweb.cloud/my/firewalls) в панели), статистика не будет отображаться. ### У сервера нет публичного IP Если сервер не имеет публичного IPv4-адреса и работает только в приватной сети или с IPv6, статистика по оперативной памяти и нагрузке на диск собираться не будет. # Резервное копирование Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/backup Резервное копирование является важной частью поддержания работоспособности виртуального сервера. Если данные окажутся случайно удалены, или работа нарушится после обновлений, изменений, вы всегда сможете восстановить содержимое диска с помощью созданных резервных копий. Резервные копии и возможность восстановления данных из них сохранится также при переустановке системы на сервере. При этом важно иметь в виду, что копии, создаваемые в панели управления, защищают не от всех возможных проблем — при программном или аппаратном сбое на сервере либо удалении сервера восстановить данные будет невозможно. Мы рекомендуем дополнительно создавать удаленные копии для полной сохранности ваших данных. В панели управления вам доступно создание как **резервных копий** (бэкапов), так и **снапшотов** (точки восстановления). ## Резервные копии Управлять резервным копированием вы можете на вкладке **Бэкапы**: создавать и удалять резервные копии, восстанавливать данные из них, а также управлять автоматическим резервным копированием. ### Стоимость опции Резервные копии — платная опция, стоимость которой зависит от объема диска. Стоимость бэкапа составляет 6 рублей за 1 ГБ диска. Оплачивается именно размещение копий на наших мощностях, а не их создание. Оплата списывается за каждый существующий бэкап, даже если новые бэкапы больше не создаются. ### **Создание резервных копий** Для создания новой копии нажмите на кнопку «Создать бэкап». ![Selection 097](https://content.timeweb.com/assets/c1a4d60d-4aa5-4f2c-b468-5856937cc6bd.png?width=778&height=466) Далее выберите диск, для которого будет создаваться бэкап, и при необходимости укажите комментарий. После этого нажмите на кнопку «Создать». ![Screenshot 11 26 24 18:17:12](https://content.timeweb.com/assets/7f3f7d50-192a-4937-a338-a94c5a0f5fd6.png?width=411&height=285) В зависимости от размера диска и загруженности системы бэкапов, процесс может занять от пары секунд до нескольких минут. Как только он завершится, копия отобразится в панели управления. Обратите внимание, что создать бэкап невозможно, если на сервере создан снапшот. ### **Автоматические бэкапы** Чтобы настроить автоматическое резервное копирование, нажмите на «Настройки» рядом с «Автоматические бэкапы». ![Selection 098](https://content.timeweb.com/assets/1fb74842-99e5-4ada-8bac-e1a829b64688.png?width=791&height=464) В поле «Автоматическое создание бэкапов» выберите «Включено», укажите периодичность, дату начала создания бэкапов и количество копий, которые будут доступны одновременно. Если в поле «Хранить копий» указано значение 1, копии будут перезаписываться при каждом создании новой. ![Screenshot 11 26 24 18:21:21](https://content.timeweb.com/assets/c9384579-a91b-4f5a-9ae3-54301fdda571.png?width=416&height=477) Здесь же вы сможете отключить автоматическое копирование или изменить настройки. ### **Восстановление данных из бэкапа** > [!NOTE] > Мы рекомендуем выключать сервер перед выполнением данной операции. Перейдите на вкладку «Бэкапы». Чтобы восстановить полную копию диска, нажмите на иконку восстановления возле нужной резервной копии. ![Selection 099](https://content.timeweb.com/assets/c22a7622-b751-4f6a-8974-3caff85112a5.png?width=779&height=505) Процесс займет некоторое время, в зависимости от размера копии. При восстановлении состояние сервера будет возвращено к моменту создания выбранной резервной копии. Все текущие данные и изменения, включая файлы и конфигурации, будут удалены. Обратите внимание, что после восстановления может не подойти текущий пароль — будет восстановлен тот, что использовался на момент создания бэкапа. Чтобы восстановить данные частично, кликните на иконку монтирования копии: ![Selection 100](https://content.timeweb.com/assets/26796ad9-fab5-42ad-a05b-8cef119a3984.png?width=773&height=496) После этого диск появится в системе, но будет доступен в режиме «только для чтения» (read only). Необходимо подключить ([примонтировать](https://timeweb.cloud/docs/unix-guides/mounting-backups)) этот диск внутри операционной системы. Обратите внимание, что: - подключение резервной копии занимает некоторое время, поэтому вы увидите диск не сразу после его подключения в панели управления; - перед отключением резервной копии в панели управления ее необходимо отключить внутри операционной системы. Для **Windows-серверов** опция монтирования недоступна; созданные резервные копии невозможно примонтировать в системе для извлечения отдельных файлов. ### **Скачивание резервной копии** > [!NOTE] > Скачивание бэкапов доступно только в локациях Санкт-Петербург и Москва. > > Бэкап будет сохранен в формате `.qcow2`. Чтобы скачать бэкап, созданный через панель управления, на компьютер, нажмите на кнопку «Скачать» рядом с необходимой копией. ![Selection 101](https://content.timeweb.com/assets/2892f2dd-9e6d-44fd-b613-a0dc207bc503.png?width=781&height=506) В открывшемся окне вы можете указать имя, с которым будет сохранена копия. Нажмите «Скачать», после чего начнется загрузка бэкапа. ![Screenshot 11 26 24 18:37:01](https://content.timeweb.com/assets/e093f504-882a-4c45-9fab-940d9f25eca1.png?width=535&height=265) Скачанный бэкап можно загрузить в раздел «Образы» и развернуть сервер на его основе. Инструкция по загрузке доступна [здесь](https://timeweb.cloud/docs/cloud-servers/manage-servers/server-images#zagruzka-svoego-obraza). ### **Удаление резервной копии** Для удаления бэкапа нажмите на три точки рядом с необходимой копией и выберите «Удалить бэкап». ![Selection 102](https://content.timeweb.com/assets/952cbfd1-5c5a-40c8-bce8-171bd498bd38.png?width=787&height=549) Удалить бэкап будет невозможно, если на сервере создан снапшот. ## Снапшоты Еще одним способом резервного копирования является создание снапшота (точки восстановления). Снапшот представляет из себя снимок текущего состояния сервера, к которому очень легко откатиться. В отличие от бэкапа, снапшот создается для всего сервера в целом, а не для отдельного диска, а также создается и восстанавливается мгновенно, в то время как создание и восстановление данных из резервной копии может занимать до 30 минут и более. Благодаря этому снапшоты удобно использовать, когда требуется что-то быстро и безопасно протестировать: создайте снапшот перед внесением изменений, а после при необходимости верните сервер к прежнему состоянию. Стоит учитывать, что бэкапы являются более надежным способом долговременного хранения данных, так как представляют из себя полную копию диска, которая размещается на отдельном сервере. Создание снапшотов — бесплатная опция. ### **Создание снапшота** Сервер должен быть включен. Перейдите в раздел «Бэкапы» и нажмите «Создать снапшот». ![Selection 103](https://content.timeweb.com/assets/09bfa865-50c7-49b4-ac2a-81c8c3976f19.png?width=789&height=475) В следующем окне подтвердите действие, и созданный снапшот сразу отобразится в панели управления. Для одного сервера можно создать только один снапшот. Он доступен в течение 7 дней, после чего автоматически удаляется. ### **Удаление снапшота** В разделе «Бэкапы» кликните на «Удалить», после подтвердите действие. Снимок будет удален, это может занять некоторое время. ![Selection 104](https://content.timeweb.com/assets/bff33a94-83c1-4b2d-9bc9-6221370f6e32.png?width=775&height=564) ### **Восстановление данных из снапшота** В разделе «Бэкапы» нажмите на кнопку «Восстановить» в строке «Снапшот системы». ![Selection 105](https://content.timeweb.com/assets/a9951adf-9bed-4e31-b03b-c93deadb0691.png?width=774&height=573) Сервер будет возвращен к состоянию на момент создания снапшота, а сам снапшот — удален. Любые изменения, которые были сделаны после создания точки восстановления, будут безвозвратно утеряны. ### **Особенности** Если создана точка восстановления, то для сервера будут недоступны следующие действия: - добавление, удаление или изменения размера диска; - создание или удаление резервных копий; - создание образа сервера; - переустановка операционной системы; - клонирование сервера. Для их выполнения потребуется сначала удалить снапшот. ## Аварийная копия Аварийная копия — это опция для дополнительной защиты данных на случай аварий. Она позволяет регулярно создавать дополнительные копии диска и может использоваться вместе с обычными бэкапами для повышения надежности. В отличие от бэкапов, стоимость аварийной копии фиксированная (200 рублей в месяц) и не зависит от размера диска. Аварийная копия может быть удобна, если у вас нет администратора и вы не хотите самостоятельно разбираться с настройкой расписания, восстановлением данных, монтированием копий и др. При использовании аварийной копии всё необходимое сделают наши инженеры. Опция доступна для серверов в Санкт-Петербурге и Москве. > [!NOTE] > **Важно**: Пользователь может управлять только включением и отключением опции. Никакие другие действия с аварийной копией через панель управления недоступны. Восстановление данных выполняется через поддержку. ### Включение аварийной копии Вы можете включить создание аварийных копий при создании нового сервера или в настройках существующего. #### Для нового сервера В процессе создания сервера на шаге «Безопасность» активируйте опцию «Аварийная копия». ![Bc1a46f7 1a86 4613 A6b3 44819bf67f3b](https://content.timeweb.com/assets/7a4a20a7-5074-4beb-a45d-4e4b19b1cdfa.png?width=756&height=372) #### Для существующего сервера 1. Перейдите в раздел «Облачные серверы». 2. Кликните на нужный сервер. 3. На вкладке «Бэкапы» включите опцию «Аварийная копия». ![59cd43f0 80c4 4b48 Ad35 5d87fe81d64e](https://content.timeweb.com/assets/d7f7ddad-7b5b-4829-9702-7df33f56fa10.png?width=1550&height=904) ### Периодичность создания копии Аварийная копия создается не реже одного раза в 5 дней. Узнать дату последнего обновления аварийной копии можно через [обращение в поддержку](https://timeweb.cloud/my/support/help-question). Созданная аварийная копия не будет отображаться в списке бэкапов в панели управления. ### Восстановление данных Чтобы восстановить данные из аварийной копии, отправьте [запрос в поддержку](https://timeweb.cloud/my/support/help-question). Специалисты сообщат дату создания последней копии и после подтверждения с вашей стороны выполнят восстановление данных. ### Отключение аварийной копии Вы можете в любой момент отключить создание аварийных копий: 1. Перейдите в раздел «Облачные серверы». 2. Кликните на нужный сервер. 3. На вкладке «Бэкапы» выключите опцию «Аварийная копия». ![72ba4996 Ac90 474a 9cc2 8da0cb562a6c](https://content.timeweb.com/assets/fe1941df-3488-48ff-9b4f-f47027c421f8.png?width=1563&height=915) ## Рекомендации по выполнению резервного копирования Для успешной работы с сервером мы рекомендуем придерживаться следующих правил при создании резервных копий и снапшотов: - Создавайте резервные копии регулярно в зависимости от скорости изменения информации на сервере. В случаях магазинов, порталов, интернет СМИ рекомендуется выполнять ежедневное копирование. В случае интернет-представительства компании в интернете (сайт-визитка) достаточно выполнять регулярную копию раз в месяц. - Выполняйте копирование каждый раз перед планируемыми серьезными изменениями в файлах, базах данных (в случае если изменения прошли без проблем, через некоторое время эту копию можно удалять). - Делайте резервную копию каждый раз после проведения масштабных изменений (это позволит вам иметь самую последнюю копию ваших данных). # Клонирование сервера Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/cloning С помощью опции клонирования вы сможете быстро создать копию существующего сервера. Будут скопированы параметры текущего сервера (процессор, память, размер диска), дополнительные диски (не сетевые), а также данные, размещенные на дисках. Стоимость нового сервера может отличаться от стоимости оригинального — она будет рассчитана по актуальным тарифам на момент клонирования. Исключение составляют только серверы с индивидуальными или архивными тарифами: в этом случае сервер-клон будет иметь такой же тариф, как и оригинальный сервер. > [!NOTE] > Для серверов с GPU клонирование возможно только через обращение в поддержку. Перед клонированием убедитесь, что: - Сервер включен. - На сервере отсутствует [точка восстановления](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup#snapshoty). При ее наличии клонирование сервера будет невозможно; сначала потребуется удалить точку восстановления. - На балансе достаточно средств для оплаты нового сервера. Если средств не хватает, при запуске клонирования будет выведено уведомление о необходимости оплаты. Чтобы запустить клонирование: 1. Нажмите на иконку копирования на главной панели управления сервером: ![F4d22e5b 8891 433e B5c0 817b37d6548d](https://content.timeweb.com/assets/db5767c0-e303-4f90-8538-579458f143d7?width=1523&height=784) 2. Задайте настройки для нового сервера: ![Fe26aa27 694b 4a63 9209 C1c094e65089](https://content.timeweb.com/assets/8146845b-599e-4ba0-aeeb-a14e7677e729?width=1507&height=1323) 1. - Выберите зону доступности (для серверов в Санкт-Петербурге). - Укажите, нужен ли серверу публичный IP. Можно создать новый IP, выбрать один из имеющихся на аккаунте или указать «Без публичного IP». - Укажите, добавлять ли сервер в приватную сеть (если доступно в этой зоне). Можно создать новую сеть, выбрать одну из существующих или указать «Без приватной сети». - При необходимости задайте свое имя сервера и комментарий. 3. Нажмите «Клонировать». Клонирование выполняется автоматически и займет всего несколько минут. При этом работа клонируемого сервера не будет прервана. После завершения процесса вы сможете сразу перейти к работе с новым сервером: IP-адрес будет указан в панели, данные для доступа (логин и пароль) к новому серверу совпадают с реквизитами оригинального сервера. Важно учитывать, что **новому серверу будет выдан новый IP-адрес**, в связи с чем: - Если вы используете панель управления ispmanager, для ее работы на новом сервере вам потребуется приобрести дополнительную лицензию (это можно сделать в разделе «[Лицензии](https://timeweb.cloud/my/licenses)»). - Внутренние настройки копируются без изменений. Например, после клонирования сервера может потребоваться повторная [настройка IP](https://timeweb.cloud/docs/unix-guides/adding-ip-addresses). # Образы сервера Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/server-images Образы — это опция в панели управления, с помощью которой вы можете загружать свои образы и разворачивать их на серверах, а также создать полную копию вашего облачного сервера, в виде образа в формате Qcow2, со всеми настройками операционной системы, программного обеспечения и всем содержимым сервера. Вы можете: - Создать из образа новый сервер в панели Timeweb Cloud. - Использовать образ при переустановке уже существующего сервера. - Скачать образ и развернуть копию вашего VDS у другого провайдера. - Загрузить свой образ в панель управления. - Использовать образы как способ резервного копирования данных. В отличие от бэкапов и снапшотов, создаваемых в панели, образы размещаются отдельно от VDS и не будут утеряны при удалении сервера. Получить к ним доступ после удаления сервера можно через раздел «Облачные серверы» → «[Образы](https://timeweb.cloud/my/images)». Стоимость образов рассчитывается из объема: 1 ГБ = 4 рубля/месяц. Например, если образ занимает 10 ГБ, его размещение в панели будет стоить 40 рублей в месяц. Списания почасовые. При исчерпании средств на балансе и блокировке аккаунта образы доступны в течение 7 дней, после чего, если оплата не поступила, автоматически удаляются. ## Создание образа > [!NOTE] > Невозможно добавить новый образ, если на сервере создан [снапшот](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup#snapshoty). На вкладке «Образы» у нужного сервера наведите курсор на строку с диском и нажмите на значок плюса. ![93c6fd93 B5ab 4a0b A994 A0e485fe5f61](https://content.timeweb.com/assets/6b9f5466-20a8-4bee-b564-8ff371d59aac.png?width=1529&height=808) При необходимости вы можете задать свое имя образа и комментарий, чтобы в дальнейшем было проще сориентироваться в списке образов. Нажмите «Создать». ![0bd2777e 8892 4639 Bab4 A648d33ac69d](https://content.timeweb.com/assets/348b1adc-2ef7-4c66-ac9a-7f6616ecd12a.png?width=1523&height=791) Процесс создания образа займет пару минут, после чего образ можно будет скачать. Все созданные в панели и загруженные на аккаунт образы можно найти в разделе «Облачные серверы» → «[Образы](https://timeweb.cloud/my/images)»: ![Screenshot 06 03 25 10:57:28](https://content.timeweb.com/assets/2c262e61-75e4-41c2-8e91-6a4f41ef0663.png?width=1008&height=700) ## Скачивание образа #### Из вкладки «Образы» Перейдите в раздел «Облачные серверы», во вкладку «[Образы](https://timeweb.cloud/my/images)». Наведите курсор на строку с нужным образом и нажмите «Скачать». Файл образа будет загружен на ваше устройство. ![Selection 321](https://content.timeweb.com/assets/c5ff50a2-cc0d-4fc0-ae25-9311102cbeb1.png?width=1021&height=706) #### Со страницы сервера На вкладке «Образы» у нужного сервера кликните на ссылку с количеством созданных образов. ![Selection 322](https://content.timeweb.com/assets/e5af05c6-8d7f-475a-b2d9-4321c1ef8a0f.png?width=1026&height=704) Наведите курсор на строку с нужным образом и кликните «Скачать». Начнется загрузка файла на ваше устройство. ![Selection 323](https://content.timeweb.com/assets/d7acd3f7-ea9a-42ec-9891-b129bd099fdf.png?width=1021&height=704) ## Загрузка своего образа Вы можете загрузить образ в панель: - В разделе «Облачные серверы» → «[Образы](https://timeweb.cloud/my/images)» по кнопке «Загрузить образ». - При создании нового сервера, выбрав на вкладке «Мои образы» опцию «Новый образ». - При переустановке ОС на сервере — также выбрав на вкладке «Мои образы» опцию «Новый образ». Загрузить образ можно как со своего компьютера, так и путем указания ссылки на образ. Поддерживаемые форматы: `iso`, `vmdk`, `vhd`, `vhdx`, `vdi`, `raw`, `img` и `qcow2`. При загрузке образа по ссылке учитывайте, что поддерживаются только схемы `http`, `https` и `ftp`. Если требуется указать порт, доступны следующие порты: `80`, `465`, `21`, `22`, `3000`, `8080`. Максимальный размер файла — 500 ГБ. ![303ad91b F4d9 4c1b A178 30c886796d69](https://content.timeweb.com/assets/18524016-1fe0-4e92-883b-a5b561b41249?width=508&height=631) В окне загрузки вы можете выбрать имя операционной системы — в этом случае в панели управления для сервера будет отображаться логотип нужной ОС. Перед загрузкой образа убедитесь, что вы выполнили все [необходимые проверки и настройки](https://timeweb.cloud/docs/unix-guides/podgotovka-obraza-dlya-sozdaniya-oblachnogo-servera?) для его подготовки. ## Перенос образа в другую локацию Вы можете изменить локацию образа. > [!NOTE] > Образы, размещенные в Новосибирске, можно переносить только в Санкт-Петербург или Москву. Для смены локации нажмите на три точки рядом с образом и выберите пункт «Изменить регион». ![Selection 096](https://content.timeweb.com/assets/d77c251f-5af6-49b8-b22a-e0b19a475a62.png?width=782&height=426) В открывшемся окне вы можете выбрать необходимую локацию. После этого нажмите «Сохранить». ![Screenshot 12 06 24 18:01:45](https://content.timeweb.com/assets/69f165ab-c84d-4c35-8aa7-20204b42f7fe.png?width=509&height=435) ## Создание сервера из образа #### Со страницы создания нового сервера 1. При создании нового сервера перейдите на вкладку «Мои образы». 2. Выберите нужный образ, кликнув на него. ![6058c455 E380 465f Ba5f 5a3f5ecd35cc](https://content.timeweb.com/assets/587d760f-9398-4ec7-a0d7-2ce09dd2cf43?width=1533&height=839) 3. Укажите остальные параметры (регион размещения, конфигурацию и пр.) и нажмите «Заказать». 4. Будет создан сервер с развернутым на нем образом. #### Из вкладки «Образы» 1. Наведите курсор на строку с нужным образом и нажмите на значок плюса. ![Selection 148](https://content.timeweb.com/assets/15cf16f2-c279-4cb1-a307-a81a3fa2affc.png?width=1000&height=721) 2. Вы будете перенаправлены на страницу создания сервера, и нужный образ уже будет выбран на вкладке «Мои образы». 3. Укажите остальные параметры (регион размещения, конфигурацию и пр.) и нажмите «Заказать». 4. Будет создан сервер с развернутым на нем образом. #### Со страницы сервера 1. Перейдите на вкладку «Образы» у нужного сервера и кликните на ссылку с количеством созданных образов. ![67add41d F654 447e 9e19 Ed503844961b](https://content.timeweb.com/assets/f4183e62-07a5-4aa3-ac92-f97876fdbb8b?width=1535&height=655) 2. Наведите курсор на строку с нужным образом и нажмите на значок плюса. ![C5872307 0637 4874 Bfd2 974117215376](https://content.timeweb.com/assets/a3f0f295-ff41-4c1e-8afd-6c36c7622bf2?width=1550&height=657) 3. Вы будете перенаправлены на страницу создания сервера, и нужный образ уже будет выбран на вкладке «Мои образы». 4. Укажите остальные параметры (регион размещения, конфигурацию и пр.) и нажмите «Заказать». 5. Будет создан сервер с развернутым на нем образом. ## Переустановка сервера из образа Вы можете переустановить какой-либо сервер на аккаунте, используя один из имеющихся на аккаунте образов (если регионы создания сервера и образа совпадают). Для этого перейдите на вкладку «Конфигурация» → «Переустановить» и выберите нужный образ на вкладке «Мои образы». ## Загрузка образа на Google Диск или Яндекс Диск Перед загрузкой образа убедитесь, что на целевом диске достаточно свободного пространства. Если места не хватит, загрузка прервется в процессе. Файл будет загружен в корневую директорию диска. #### Из вкладки «Образы» 1. Наведите курсор на строку с нужным образом и нажмите на значок облака (опция «Загрузить на внешний диск»). ![Selection 149](https://content.timeweb.com/assets/fe6d8017-f547-405f-8bc2-0bf4df6444cb.png?width=1008&height=695) 2. В следующем окне выберите, куда нужно загрузить образ: в Google или Яндекс. 3. При необходимости измените имя файла и нажмите «Загрузить». 4. Выберите нужный аккаунт диска и подтвердите загрузку. 5. При первом обращении потребуется разрешить доступ к диску — просто следуйте предложенным шагам. После загрузка запустится. #### Со страницы сервера Действие также можно выполнить со страницы конкретного сервера. 1. На вкладке «Образы» у нужного сервера кликните на ссылку с количеством созданных образов. ![67add41d F654 447e 9e19 Ed503844961b](https://content.timeweb.com/assets/f4183e62-07a5-4aa3-ac92-f97876fdbb8b?width=1535&height=655) 2. Наведите курсор на строку с нужным образом и кликните на значок облака («Загрузить на внешний диск»). ![24950b5d Efa4 4bd1 8892 39dbf1ba145b](https://content.timeweb.com/assets/716aa471-8923-43e5-ac43-66e296338687?width=1545&height=592) Остальные шаги будут такими же, как при загрузке из раздела «Образы». ### Ограничения При загрузке учитывайте ограничения Яндекса и Google: - Google Диск имеет ограничение по трафику за день, равное 750 ГБ. После исчерпания этого лимита вы не сможете ничего загрузить на Google Диск до конца дня. - Яндекс Диск имеет ограничение по трафику за месяц. Оно равно вашей квоте на Яндекс Диске, умноженной на два. После исчерпания этого лимита вы не сможете ничего загрузить на Яндекс Диск до конца месяца. - Размер файла для загрузки в Яндекс Диск [не должен превышать 50 ГБ](https://yandex.ru/support/yandex-360/customers/disk/web/ru/uploading.html). ## Загрузка образов в сторонние хранилища с помощью rclone Утилита rclone поддерживает около 50 различных протоколов и облачных хранилищ. С ее помощью можно выполнить загрузку образа напрямую из стораджа Timeweb Cloud в стороннее хранилище. Мы рассмотрим загрузку на примере S3-хранилища Timeweb Cloud. 1. На вкладке «Образы» у нужного сервера кликните на ссылку с количеством созданных образов. ![67add41d F654 447e 9e19 Ed503844961b](https://content.timeweb.com/assets/f4183e62-07a5-4aa3-ac92-f97876fdbb8b?width=1535&height=655) 2. Наведите курсор на строку с нужным образом и кликните на три точки справа. Выберите «Скопировать ссылку». Ссылка будет скопирована в буфер обмена. ![E53f3bbf 8473 4c30 8fb5 597bce9a514e](https://content.timeweb.com/assets/a6f877a4-eb7a-450d-82b7-20d6f75a937f?width=1531&height=620) Пример ссылки: ```shell https://kvmnfs-cs1.timeweb.com/62e11b3b-45d5-9f0e-8744-5578062911b9 ``` 3. Создайте файл конфигурации `~/.config/rclone/rclone.conf` со следующим содержимым: ```shell [tw-img] type = http url = https://kvmnfs-cs1.timeweb.com [tw-s3] type = s3 provider = Other env_auth = false access_key_id = S3_Access_Key secret_access_key = S3_Secret_Access_Key region = ru-1 endpoint = https://s3.twcstorage.ru ``` В блоке `[tw-img]` указываем URL стораджа, с которого скачиваем образ (берем из ссылки на образ). В блоке `[tw-s3]` указываем параметры хранилища, в которое загружаем образ. В нашем примере — S3-хранилище Timeweb Cloud, но вы можете указать любое из хранилищ, которое указано на [сайте rclone](https://rclone.org/#providers). Для настройки можно запустить `rclone config` и следовать инструкциям на экране. Значения для `S3_Access_Key` и `S3_Secret_Access_Key` вы можете получить в панели управления бакетом, во вкладке «Дашборд». ![Selection 258](https://content.timeweb.com/assets/204c2d73-5c8d-42d7-82af-641011046ec7.png?width=1012&height=951) 4. Так как объем файла может быть очень большим, рекомендуем запускать команду на сервере внутри сессии [screen](https://timeweb.cloud/tutorials/linux/utilita-screen-v-linux) или [tmux](https://ru.wikipedia.org/wiki/Tmux). Запустите сессию `screen` или `tmux` и выполните в ней команду `rclone`: ```shell rclone copy tw-img:/ИМЯ_ФАЙЛА tw-s3:ИМЯ_БАКЕТА/ --progress --log-file rclone.log --log-level INFO ``` - ИМЯ_ФАЙЛА — имя файла из ссылки на образ, в нашем случае это `62e11b3b-45d5-9f0e-8744-5578062911b9`. - ИМЯ_БАКЕТА — бакет, в который загружаем образ. ## Расчет размера образа Размер образа зависит от того, какой максимальный объем пространства был когда-либо занят на диске. Например: - Размер диска 15 ГБ - Сейчас занято 2,5 ГБ - Размер образа — 5 ГБ Размер образа составляет 5 ГБ, потому что в какой-то момент на сервере было занято 5 ГБ и под эти файлы было выделено пространство. Это происходит из-за особенностей выделения (аллокации) дискового пространства в QCOW2. Диск на ноде аллоцируется динамически — размер образа равен объему файлов в нем. Образ увеличивается по мере наполнения виртуального диска файлами, но обратно не сжимается. ## Удаление образа #### Из вкладки «Образы» Кликните на три точки справа от образа и нажмите «Удалить образ». ![Selection 150](https://content.timeweb.com/assets/29ad96b4-8de6-4880-86e3-b2600220cf5d.png?width=1009&height=689) В открывшемся окне подтвердите действие, нажав «Да, удалить образ». #### Со страницы сервера На вкладке «Образы» у нужного сервера кликните на ссылку с количеством созданных образов. ![67add41d F654 447e 9e19 Ed503844961b](https://content.timeweb.com/assets/f4183e62-07a5-4aa3-ac92-f97876fdbb8b?width=1535&height=655) Кликните на три точки в строке с нужным образом и нажмите «Удалить образ». ![E53f3bbf 8473 4c30 8fb5 597bce9a514e](https://content.timeweb.com/assets/a6f877a4-eb7a-450d-82b7-20d6f75a937f?width=1531&height=620) В открывшемся окне подтвердите действие, нажав «Да, удалить образ». # Передача серверов между аккаунтами Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/move-servers-between-accounts Вы можете самостоятельно переносить облачные серверы между аккаунтами через панель управления. Вместе с сервером будут перенесены IP-адреса, бэкапы и подключенные диски, включая сетевые. Если сервер включен, при переносе он будет работать как обычно. > [!NOTE] > Если сервер добавлен в приватную сеть, он будет исключен из этой сети и перезагружен. > > Публичный IP-сервера может быть изменен — в этом случае вы увидите соответствующее предупреждение перед переносом. Убедитесь, что на балансе принимающей стороны достаточно средств, в противном случае после переноса сервер будет автоматически заблокирован до поступления оплаты. ## Действия на передающем аккаунте Чтобы передать сервер на другой аккаунт Timeweb Cloud: 1. Перейдите в раздел «Облачные серверы» → кликните на нужный сервер → «Доступ». 2. Нажмите «Передать» в пункте «Передача сервера». ![3bccba8e 74a8 43ad B3a3 D342788f87c1](https://content.timeweb.com/assets/4a9ef873-580e-4423-b8e0-82d6d5225d06.png?width=1544&height=970) 3. Укажите логин принимающего аккаунта и нажмите «Продолжить». ![C4263c2c C3b0 430e Ab5c C6e50c1dcdce](https://content.timeweb.com/assets/bbd80440-5746-48ae-b504-d14879040dd0.png?width=1535&height=860) 4. Введите проверочный код, отправленный на контактную почту аккаунта, и нажмите «Передать сервер». ![9af590a0 F520 4e8a A1fb 4defcca6a4db](https://content.timeweb.com/assets/0e9350d1-271a-453f-b91f-0052e9f10ebc.png?width=1541&height=868) Перенос будет запущен, все действия с сервером в панели заблокированы. Вы можете отменить перенос, пока он не подтвержден принимающей стороной. ![67d260ad 7e7f 4033 94fd 8224b29b45e6](https://content.timeweb.com/assets/a1f47443-8a3f-4064-8d31-6b6b573a14d5.png?width=1537&height=728) Как только сервер будет принят, вы получите email-уведомление об этом. Если принимающая сторона отменит перенос, мы также сообщим вам на email. ## Действия на принимающем аккаунте На контактный ящик аккаунта поступит уведомление о передаче сервера. Новый сервер отобразится в разделе «Облачные серверы» панели управления. Нажмите «Подробнее», чтобы просмотреть детали. ![B15a22cd 48da 44d2 8e2e 3148a317b5f8](https://content.timeweb.com/assets/a75fa254-690b-4b4a-a4a5-a2cc164a973c.png?width=1539&height=839) Нажмите на «Подтвердить», чтобы подтвердить перенос и принять сервер. Вы можете сразу добавить сервер в нужный проект. ![C171adfd 815b 4fc9 B64b 1bbab3f1b1fe](https://content.timeweb.com/assets/5fbb64d0-c1bb-46a5-9846-73c40116726a.png?width=1518&height=947) Если на аккаунте недостаточно средств, система перенаправит вас на страницу оплаты. Чтобы отменить перенос сервера, нажмите «Отказаться от получения». # Доступ для техподдержки Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/tech-support-access Чтобы специалисты поддержки могли подключиться к серверу для диагностики, устранения проблем, установки ПО или других действий по вашему запросу, вы можете предоставить SSH-доступ к серверу через панель управления (только для Linux-серверов). 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. На вкладке «Доступ» включите опцию «Доступ для техподдержки». ![4d9c93f0 5577 495c B7a9 2369f7f60529](https://content.timeweb.com/assets/603371a3-3c99-468f-bb02-7742518bff29.png?width=1580&height=980) На сервер будет добавлен SSH-ключ, который позволит специалистам поддержки получить доступ к серверу без необходимости передавать пароли. Это действие обратимо, вы всегда можете запретить доступ снова. > [!NOTE] > Опция разрешает именно SSH-подключение к серверу. Если на сервере установлена панель управления, то в зависимости от решаемой задачи может потребоваться предоставить реквизиты root или другого пользователя для входа в панель. # Журнал действий (история) Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/history Для контроля работы сервера и изменений его статуса в панели управления ведется журнал действий, которые выполняются с сервером. Он доступен на вкладке «История». ![81476451 53d9 467e B33a Cc7e29967ba3](https://content.timeweb.com/assets/2af74d42-a822-457f-b0c8-a4afc6c589b2?width=1488&height=829) По клику на «Дата» можно отсортировать операции от старых к новым и наоборот. В журнале ведется запись таких операций, как включение/выключение сервера, его перезагрузки, переустановка ОС, изменение конфигурации (ядра процессора, RAM, накопители), добавление и удаление IP-адресов, действия с резервными копиями и пр. Также в журнале отражаются блокировки сервера по причине отсутствия средств на балансе или же в связи с нарушениями правил использования. Владелец аккаунта (основной пользователь) также может видеть, какой пользователь выполнил то или иное действие, а также сразу перейти к настройкам его прав, кликнув на имя нужного пользователя. # Защита от удаления Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/deletion-protection Защита от удаления — это дополнительная опция, которая позволяет восстановить сервер в течение 72 часов после его удаления. Сервер восстанавливается со всеми данными, включая резервные копии. При восстановлении серверу будет нужно назначить новый IP-адрес. Прежний IP можно восстановить, только если он доступен в разделе «Публичные IP». Стоимость защиты составляет 200 рублей в месяц за каждый сервер. Восстановление выполняется бесплатно. Списания за защиту начинаются через 48 часов после создания сервера. Если защита не подключена, можно воспользоваться разовым восстановлением сервера. Его стоимость составляет 2000 рублей. > [!NOTE] > Восстановление доступно только для серверов, которые существовали на аккаунте больше 48 часов. ## Подключение защиты Подключить защиту от удаления для нового сервера можно при его создании, а для существующего — в разделе «Бэкапы». ### При создании сервера Для нового сервера вы можете подключить защиту в блоке «Безопасность», выбрав опцию «Отмена удаления»: ![Создать Сервер 04 28 2026 12 01 Pm](https://content.timeweb.com/assets/86108d0e-fe30-4101-92c2-3de413175845.png?width=755&height=547) ### В разделе «Бэкапы» Для существующего сервера подключить защиту можно в настройках. 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. Перейдите на вкладку «Бэкапы». 3. Включите опцию «Отмена удаления». Если сервер создан менее двух дней назад, списания начнут выполняться через 48 часов существования сервера на аккаунте. ![Hestia 04 28 2026 12 03 Pm](https://content.timeweb.com/assets/c02289c4-cfb1-4837-8dd2-1fad5f14a7bf.png?width=1575&height=975) ## Просмотр удаленных серверов Вы можете просмотреть серверы, которые были удалены, но могут быть восстановлены, в разделе «Облачные серверы». Для этого выберите фильтр «Удаленные». ![Deleted](https://content.timeweb.com/assets/2e84a37d-592c-49c8-a689-87f4705edb19.png?width=1573&height=797) Если фильтра в панели нет, значит, в данный момент нет серверов, доступных для восстановления. ## Восстановление сервера с защитой Если для сервера подключена защита от удаления, вы можете бесплатно восстановить его в течение 72 часов после удаления. Для этого: 1. Перейдите в раздел «Облачные серверы». 2. Выберите фильтр «Удаленные». 3. Кликните на ссылку «Восстановить до ….» у нужного сервера. ![Da520ab1 7212 47f4 807c B97afd914735](https://content.timeweb.com/assets/fe784f85-f940-4241-b6ef-5a2380f36c7e.png?width=1573&height=797) 4. Назначьте публичный IP-адрес для сервера: выберите один из существующих IP на аккаунте, создайте новый или выберите вариант «Без публичного IP». 5. Нажмите «Восстановить». ![5ed70956 7dcf 46e3 9485 1087a6f75d61](https://content.timeweb.com/assets/9202827a-1ff2-4390-a164-c09591d9c857.png?width=1582&height=844) ## Восстановление сервера без защиты Если для сервера не подключена защита, в течение 72 часов после удаления можно воспользоваться разовым восстановлением сервера. Стоимость разового восстановления — 2000 рублей. 1. Перейдите в раздел «Облачные серверы». 2. Выберите фильтр «Удаленные». 3. Кликните на ссылку «Восстановить до ….» у нужного сервера. 4. Назначьте публичный IP-адрес для сервера: выберите один из существующих IP на аккаунте, создайте новый или выберите вариант «Без публичного IP». 5. Нажмите «Восстановить». Если на балансе достаточно средств, необходимая сумма будет списана с баланса. Если средств не хватает, вас переадресует на страницу оплаты. После поступления платежа сервер будет восстановлен. > [!NOTE] > Если на момент восстановления в регионе, где был создан сервер, нет свободных ресурсов, мы предложим развернуть его образ в другой локации, на сервере с похожей конфигурацией. Если подходящих локаций несколько, вы сможете выбрать нужную. > > Стоимость сервера при этом может измениться: вы увидите ее до подтверждения восстановления и сможете отказаться, если цена не устроит. # Удаление сервера Source: https://timeweb.cloud/docs/cloud-servers/manage-servers/delete-server Удалить облачный сервер можно: - В разделе «Облачные серверы», нажав на три точки в блоке «Действия» и выбрав опцию удаления. ![De860d03 755c 4dd6 8336 1d01187fd666](https://content.timeweb.com/assets/0af245d4-631d-4f38-8ee9-d38bdd640e13?width=1525&height=820) - Со страницы сервера, выбрав значок удаления справа вверху: ![Bbae6207 7c48 4386 B7a8 D93c54a89859](https://content.timeweb.com/assets/858a4125-4b76-4f51-a7d5-4eea3a0ee10f?width=1539&height=784) Выберите, нужно ли удалять публичный IP-адрес вместе с сервером. Публичный IP можно сохранить на аккаунте и в дальнейшем назначить его другому сервису. При необходимости вы сможете его удалить в разделе «Сети» → «[Публичные IP](https://timeweb.cloud/my/floating-ip?page=1)». Обратите внимание, что оплата за публичный IP будет списываться, пока он существует на аккаунте. ![71d63b56 143f 4a8a Badd 6e8fbbd84bc3](https://content.timeweb.com/assets/7d8279b6-5f5a-4c1f-a544-9033387659fa?width=546&height=560) Далее потребуется подтвердить удаление одним из способов ниже, в зависимости от ваших [настроек аккаунта](https://timeweb.cloud/docs/account-management/notifications#uvedomleniya-pri-udalenii-servera): - ввести код подтверждения, который был отправлен на ваш номер телефона или в Telegram; - ввести имя удаляемого сервера. Будьте внимательны: восстановить виртуальный сервер после его удаления невозможно. # Начало работы с сервером Source: https://timeweb.cloud/docs/cloud-servers/servers-start В этой статье мы собрали основные моменты, которые нужно учесть, когда вы начинаете работать с сервером. ## Управление сервером В первую очередь необходимо определиться, как вы хотите управлять сервером: через консоль или с помощью панели управления. - **Через консоль:** Для Linux-систем традиционным способом управления является консоль. Вы подключаетесь к серверу по SSH-протоколу и далее передаете на сервер необходимые команды, выполняя таким образом все необходимые действия с сервером: установку ПО, управление файлами и директориями, любые необходимые настройки и т.д. — На компьютерах MacOS или Linux для подключения используется встроенная утилита — **терминал**. — В новых версиях Windows (начиная с Windows 10 1809) можно подключаться по SSH с помощью **PowerShell**. — В Windows более ранних версий для подключения потребуется специальная программа, например, **PuTTY**. Подробная инструкция по подключению доступна в статье [Подключение к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh). - **Через панель управления:** Если у вас нет навыков администрирования, проще всего работать с сервером с помощью специальных панелей — например, ispmanager или Fastpanel. В этом случае все управление будет вестись через понятный и наглядный интерфейс, в котором можно разобраться, даже не имея навыков работы с серверами. Мы также подготовили [инструкции по работе с панелями](https://timeweb.cloud/docs/control-panels). Предварительно вы можете посмотреть на работу с панелями в их демо-версиях: [ispmanager](https://www.ispmanager.ru/try), [ISPConfig](https://www.ispconfig.org/ispconfig/online-demo/), [Fastpanel](https://fastpanel.direct/demo), [Hestia](https://demo.hestiacp.com:8083/login/). Также обратите внимание, что для использования ispmanager потребуется приобрести лицензию (это можно сделать в разделе «[Лицензии](https://timeweb.cloud/my/licenses)»); остальные перечисленные панели предоставляются бесплатно. Установить панель можно автоматически, при создании сервера или переустановке системы. Если изначально вы создали сервер без панели, но она вам все-таки нужна, можно выполнить переустановку ОС (обратите внимание, что **при переустановке системы все данные с сервера будут удалены**). Если этот вариант вам подходит, переустановить ОС можно в панели [timeweb.cloud/my](https://timeweb.cloud/my). Если сервер с одной из панелей уже создан, вы можете переходить к работе с ними. Реквизиты доступа к панели управления можно найти в письме, отправленном на ваш контактный ящик после установки сервера. ## Размещение сайта на сервере Вы можете перенести сайт на сервер самостоятельно, используя наши инструкции: - [перенос сайта в панели ispmanager](https://timeweb.cloud/docs/control-panels/ispmanager/adding-site-ispmanager); - [перенос сайта в панели Fastpanel](https://timeweb.cloud/docs/control-panels/fastpanel/site-hosting-in-fastpanel); - [перенос сайта в панели Hestia;](https://timeweb.cloud/docs/control-panels/hestia-cp/adding-site-hestia) - [перенос сайта в панели ISPConfig](https://timeweb.cloud/docs/control-panels/ispconfig/site-hosting-in-ispconfig); - [перенос сайта в панели BrainyCP](https://timeweb.cloud/docs/control-panels/brainycp); - [перенос сайта в панели Plesk](https://timeweb.cloud/docs/control-panels/plesk-cp); - [перенос сайта в панели aaPanel;](https://timeweb.cloud/docs/control-panels/aapanel-cp) - [перенос сайта в BitirxVM](https://timeweb.cloud/docs/control-panels/bitrixvm/site-hosting-in-bitrixvm); - [перенос сайта без использования панелей](https://timeweb.cloud/docs/cloud-servers/site-transfer). Также вы можете обратиться за помощью к специалистам службы поддержки. Мы переносим сайты, как правило, в течение 24 часов; для выполнения переноса нам потребуется получить от вас определенные данные. Подробности можно найти в статье [Перенос сайта на сервер](https://timeweb.cloud/docs/cloud-servers/site-transfer). Если вы планируете размещать сайт на CMS WordPress, рекомендуем воспользоваться [нашей инструкцией](https://timeweb.cloud/docs/unix-guides/wordpress-on-ubuntu). ## Почта Самый простой вариант для работы с почтой — это использовать почтовый сервис Timeweb, создав и настроив почтовые ящики в разделе «[Почта](https://timeweb.cloud/my/mailman)» в панели [timeweb.cloud/my](https://timeweb.cloud/my). В этом случае все необходимые DNS-записи, включая SPF и DKIM, повышающие доверие почтовых сервисов к вашим письмам, будут настроены автоматически. Перед созданием ящиков необходимо добавить ваш домен в раздел «Домены и SSL». Подробнее о работе с почтой — в [этом разделе](https://timeweb.cloud/docs/mail). Также вы можете настроить почту непосредственно на своем сервере. Мы подготовили инструкции о том, как это можно сделать в панелях управления: - [ispmanager](https://timeweb.cloud/docs/control-panels/ispmanager/mail-setup-ispmanager) - [Fastpanel](https://timeweb.cloud/docs/control-panels/fastpanel/mail-in-fastpanel) - [ISPConfig](https://timeweb.cloud/docs/control-panels/ispconfig/setting-up-mail) - [Hestia](https://timeweb.cloud/docs/control-panels/hestia-cp/setting-up-mail-hestia) ## Резервное копирование Для сохранности своих данных вы можете использовать инструменты резервного копирования в панели [timeweb.cloud/my](https://timeweb.cloud/my) или же функционал панели управления, установленной на сервере. Бэкапы, создаваемые в панели [timeweb.cloud/my](https://timeweb.cloud/my), позволяют сделать как полноценный бэкап, так и снапшот, то есть снимок диска, который зафиксирует его состояние на момент создания копии. После можно восстановить данные частично или целиком. Однако нужно учитывать, что при серьезном аппаратном сбое или при удалении сервера восстановить данные будет невозможно, поэтому имеет смысл создавать удаленные копии. Это можно реализовать с помощью панелей управления, настроив выгрузку бэкапов в сторонние хранилища. См. также статьи о резервном копировании в панелях управления: - [ispmanager;](https://timeweb.cloud/docs/control-panels/ispmanager/backup-setup) - [Fastpanel](https://timeweb.cloud/docs/control-panels/fastpanel/backup-fastpanel); - [Hestia](https://timeweb.cloud/docs/control-panels/hestia-cp/backup-hestia). ## Поддержка Если у вас возникнут вопросы, вы можете связаться с нами через раздел «[Служба поддержки](https://timeweb.cloud/my/support/help/)» в панели управления или по e-mail: [info@timeweb.cloud](mailto:info@timeweb.cloud). Мы предоставляем [бесплатную расширенную поддержку](https://timeweb.cloud/docs/admin) серверов 24/7 и всегда будем рады помочь вам в работе с сервером. # Перенос сайта на сервер Source: https://timeweb.cloud/docs/cloud-servers/site-transfer Вы можете перенести сайт на сервер самостоятельно или с помощью наших специалистов. При самостоятельном переносе вам также может помочь видеоинструкция (размещена внизу статьи), где мы рассматриваем перенос через панель управления и через подключение по SSH. ## Перенос силами технической поддержки Переносы выполняются: - с хостинга или сервера Timeweb; - со стороннего хостинга или сервера. В рамках переноса сайта мы выполняем: - установку панели управления (при необходимости); - копирование файлов сайта; - копирование базы данных; - подключение базы данных к сайту; - перенос задач cron — при условии, что они указаны явно в заявке. Мы выполняем перенос проектов, написанных на: - PHP - NodeJS - Python - Ruby Языки и фреймворки, перенос которых не поддерживается: - ASP.NET Типы проектов, которые не переносим: - сайты, созданные при помощи конструкторов сайтов; - почтовые серверы; - боты; - приложения в Docker-контейнерах. Если ваш проект использует другие технологии, пожалуйста, уточните возможность переноса [у технической поддержки](https://timeweb.cloud/my/support/help-question). Если для запуска проекта требуются правки в коде или изменение конфигурации системы, их необходимо внести самостоятельно или с помощью сторонних специалистов. Также возможен перенос всего образа сервера. Для этого необходимо выполнить одно из следующих условий: - предоставить образ сервера в одном из поддерживаемых форматов: `raw`, `qcow2`, `qed`, `qcow`, `luks`, `vdi`, `vmdk`, `vpc`, `vhdx`; - предоставить доступ в панель управления отдающего сервера, в которой есть возможность создания и монтирования бэкапов; - предоставить доступ в панель управления отдающего сервера, в которой есть возможность загрузиться с диском восстановления. В последнем случае при переносе будет простой переносимого сервера. Время простоя зависит от объема диска. Время переноса ваших проектов мы укажем в уведомлении о создании заявки; если возникнут сложности, время проведения работ может быть увеличено — об этом мы уведомим вас дополнительно. После переноса сайт будет соответствовать своему состоянию на момент приема заявки. > [!NOTE] > Если вы заметите какие-либо отличия в работе перенесенного сайта по сравнению с оригиналом, вы можете обратиться к нам в течение 14 дней. Мы готовы внести необходимые корректировки при наличии резервной копии на исходной платформе. Перенос на сервер может быть выполнен двумя способами: #### Способ 1. Размещение образа диска В этом случае вы можете перевести любой проект к нам. При этом сохранится настроенное ранее окружение для вашего проекта. Этапы переноса: 1. Копирование образа диска. 2. Размещение образа диска и размещение сайта на техническом домене. 3. Проверка клиентом корректной работы сайта на **техническом домене.** 4. Перенаправление домена на новый сервер. #### Способ 2. Размещение проекта Такой перенос выполняется только на сервер с установленной панелью (например, FastPanel или ispmanager). Для тонкой настройки сайта под окружение необходимо будет обратиться к сторонним специалистам. Этапы переноса: 1. Копирование файлов сайта и базы данных. 2. Размещение сайта на техническом домене. 3. Проверка клиентом корректной работы сайта на **техническом домене**. 4. Перенаправление домена на новый сервер. ### **Перенос с хостинга Timeweb** Для переноса сайта с хостинга Timeweb на облачный сервер [создайте заявку из панели управления](https://hosting.timeweb.ru/support/help/other-problem) отдающего аккаунта. В теле сообщения укажите: - Имя принимающего аккаунта. - Логин и пароль для принимающего сервера. - Имя директории, в которой расположен сайт. После этого мы самостоятельно создадим тикет для принимающего аккаунта, в котором будем ожидать подтверждения. **Дальнейшая переписка будет вестись в обращении на принимающем аккаунте.** После сообщения о размещении сайта необходимо проверить его работу и перенести домен по [инструкции](https://timeweb.cloud/docs/domains/domain-transfer-between-accounts). Если перед переносом домена вам необходима актуализация базы данных, то в рамках обращения необходимо согласовать время копирования БД. ### **Перенос с** **сервера** **Timeweb** Для переноса сайта с другого сервера в Timeweb создайте заявку с передающего аккаунта через [специальную форму](https://timeweb.cloud/my/support/help-transfer). В обращении укажите: - IP-адрес отдающего сервера. - Логин и пароль для доступа по SSH или FTP (в этом случае дополнительно укажите данные для доступа к базе данных, например, через phpMyAdmin). - Расположение файлов на отдающем сервере. - Логин и пароль для принимающего сервера (либо включите [доступ для техподдержки](https://timeweb.cloud/docs/cloud-servers/manage-servers/tech-support-access) на вкладке «Доступ» в панели управления). После этого мы самостоятельно создадим тикет для принимающего аккаунта, в котором будем ожидать подтверждения. **Дальнейшая переписка будет вестись в обращении на принимающем аккаунте.** После сообщения о размещении сайта необходимо проверить его работу и перенести домен по [инструкции](https://timeweb.cloud/docs/domains/domain-transfer-between-accounts). Если перед переносом домена вам необходима актуализация базы данных, то в рамках обращения необходимо согласовать время копирования БД. ### **Перенос со стороннего хостинга или сервера** Для переноса сайта в Timeweb Cloud необходимо: 1. Выбрать тариф и зарегистрировать аккаунт на [нашем сайте](https://timeweb.cloud/). 2. После регистрации создать обращение в службу поддержки через [специальную форму](https://timeweb.cloud/my/support/help-transfer), указав IP-адрес отдающего сервера, логин и пароль для доступа по SSH или FTP (в этом случае дополнительно укажите данные для доступа к базе данных, например, через phpMyAdmin), а также расположение файлов на отдающем сервере. Также нужно указать логин и пароль для принимающего сервера либо на вкладке «Доступ» включить [доступ для техподдержки](https://timeweb.cloud/docs/cloud-servers/manage-servers/tech-support-access). 3. После сообщения о размещении сайта необходимо проверить его работу и перенести домен по [инструкции](https://timeweb.cloud/docs/domains/domain-technical-transfer). Если перед переносом домена вам необходима актуализация базы данных, то в рамках обращения необходимо согласовать время копирования БД. После уведомления о завершении переноса настоятельно рекомендуем вам изменить пароль пользователя root ([инструкция](https://timeweb.cloud/docs/unix-guides/root-password-reset)). ## Самостоятельный перенос ### **С помощью панелей управления** Вы можете заказать облачный сервер с предустановкой одной из панелей управления и после перенести сайт с помощью наших инструкций: - [для BrainyCP](https://timeweb.cloud/docs/control-panels/brainycp) - [для Fastpanel](https://timeweb.cloud/docs/control-panels/fastpanel/site-hosting-in-fastpanel) - [для ISPConfig](https://timeweb.cloud/docs/control-panels/ispconfig/site-hosting-in-ispconfig) - [для ispmanager](https://timeweb.cloud/docs/control-panels/ispmanager/adding-site-ispmanager) - [для aaPanel](https://timeweb.cloud/docs/control-panels/aapanel-cp) - [для Plesk](https://timeweb.cloud/docs/control-panels/plesk-cp) ### **Перенос вручную** Для самостоятельного переноса сайта закажите сервер нужной конфигурации и перенесите сайт по инструкции ниже. #### **Необходимое ПО** Если вы не планируете использовать на сервере какую-либо панель управления, рекомендуем сразу при заказе / создании сервера выбрать автоматическую установку LAMP. LAMP — это набор программного обеспечения (Linux, Apache, MySQL, PHP), который необходим для работы и корректного отображения динамических веб-сайтов и веб-приложений. При желании вы также можете создать сервер с чистой системой и после установить LAMP вручную по нашей [инструкции](https://timeweb.cloud/docs/unix-guides/installing-lamp-on-ubuntu). #### **Домен** После того, как сервер создан, добавьте домен в панель управления в разделе «Домены и SSL». Вы можете [перенести существующий домен](https://timeweb.cloud/docs/domains/domain-technical-transfer), [зарегистрировать новый домен](https://timeweb.cloud/docs/domains/registration-and-renewal) или воспользоваться бесплатным техническим доменом, чтобы протестировать работу сайта на сервере. По ссылкам вы найдете необходимые инструкции для данных процедур. #### **Файлы сайта** Загрузить файлы сайта на сервер проще всего при [подключении по SFTP](https://timeweb.cloud/docs/unix-guides/sftp), с помощью приложения FileZilla. Укажите при подключении: - IP-адрес вашего сервера; - логин и пароль доступа к серверу; - порт — 22. Загрузите файлы в нужную директорию: - Если LAMP устанавливался автоматически при создании сервера, файлы сайта необходимо загрузить в каталог /var/www/html. - Если вы устанавливали LAMP вручную, каталог будет зависеть от указанных вами параметров. Например, при установке по нашей [инструкции](https://timeweb.cloud/docs/unix-guides/installing-lamp-on-ubuntu), необходимый путь — /var/www/site1/public_html. #### **База данных** 1. Создайте базу данных. Для этого подключитесь к серверу по SSH и выполните команду: ```shell mysql ``` 2. Выполните запросы ниже. В качестве имени базы данных, имени пользователя и пароля БД рекомендуем сразу указывать значения, прописанные в конфигурационном файле сайта. Создание базы: ```sql CREATE DATABASE 'имя_базы_данных'; ``` Создание пользователя базы данных: ```sql CREATE USER 'имя_пользователя'@'localhost' IDENTIFIED BY 'пароль'; ``` Предоставление всех привилегий пользователю на базу данных: ```sql GRANT ALL PRIVILEGES ON 'имя_базы_данных'.* TO 'имя_пользователя'@'localhost'; ``` Перезагрузка привилегий: ```sql FLUSH PRIVILEGES; ``` 3. Загрузите дамп базы данных на сервер (например, в директорию /var/www/, используя подключение по SFTP) и импортируйте его в базу: ```shell mysql -u"имя_пользователя" имя_базы_данных -p"пароль" < /var/www/имя_дампа.sql ``` Для работы с базами данных вы также можете установить на сервер [phpMyAdmin](https://timeweb.cloud/docs/unix-guides/installing-pma-on-ubuntu-with-lamp). ## Видеоинструкция В видео рассказываем, из каких этапов состоит перенос сайта и как его выполнить в панели управления (на примере Fastpanel) или через консоль. [YouTube video player](https://www.youtube.com/embed/peXSmoeLx0k) 11:32 — О чем вебинар 12:39 — Этапы переноса сайта 13:27 — Способы миграции — какие бывают? 19:55 — Способ 1. Перенос через панель управления (без консоли) 23:43 — Шаг 1. Ищем файлы сайта 25:01 — Шаг 2. Ищем реквизиты доступа к базе данных и скачиваем дамп 27:16 — Шаг 3. Скачиваем файлы сайта 29:37 — Шаг 4. Готовим панель на принимающем сервере 32:05 — Авторизовались в панели 33:55 — Шаг 5. Загружаем файлы сайта в панели на принимающем сервере 37:02 — Шаг 6. Загружаем дамп в новую базу данных 39:27 — Шаг 7. Настраиваем etc/hosts 42:55 — Шаг 8. Меняем данные о БД в конфигурационном файле 44:55 — Проверяем 45:57 — Способ 2. Перенос по SSH через консоль ## Рекомендации для подготовки к переносу Чтобы вам было проще подготовиться к переносу, а сам перенос прошел быстро и гладко, мы собрали несколько полезных советов в этой небольшой памятке. ### **1\. Сделайте бэкап** Для возможности восстановления данных, если что-то пойдет не так, предварительно сделайте резервную копию вашего проекта (или сервера) и сохраните ее *вне ресурсов прежнего хостера* — например, локально на своей машине или в удаленном хранилище. В этом случае вы всегда сможете получить доступ к бэкапу, даже если оплаченный период у прошлого провайдера уже закончится. ### **2\. Составьте техническое задание для переноса** Вы точно знаете свой проект лучше, чем мы. Для старта переноса мы просим реквизиты доступа и имена сайтов — но чем подробнее вы опишете особенности проекта, тем меньше доработок потребуется в дальнейшем. Поэтому в заявке на перенос: - Предоставьте root-доступ к серверу по SSH. - Перечислите сайты (домены), которые нужно перенести, и их алиасы. - Укажите пути до корневых директорий сайта и все папки, которые сайт использует. - Укажите, какой сайт с какой базой данных работает. - Опишите нюансы, которые могут повлиять на работу проекта после переноса. Может быть, используется внешняя база данных или особенное приложение, настроен «хитрый» импорт-экспорт данных или взаимодействие со сторонним ресурсом? - Добавьте иную информацию, которая поможет поддержке успешно все перенести. ### **3\. Спланируйте перенос заранее** Часто пользователи планируют перенос проекта на последний оплаченный день у прежнего провайдера. Мы настоятельно не рекомендуем так делать: если при переносе что-то пойдет не так, ваш проект может оказаться недоступен на несколько часов или даже дней. Запросите перенос заранее, хотя бы за 7-10 дней до истечения оплаты у прежнего хостера. Это позволит: - бережно скопировать все ваши файлы на наш сервер; - выполнить необходимые настройки; - тщательно проверить работу проекта на нашем сервере на тестовом домене (или с помощью настройки домена [в файле hosts](https://timeweb.cloud/docs/general/nastrojka-fajla-etc-hosts)); - «донести» недостающие файлы, если что-то оказалось не перенесено; - донастроить все необходимое. По возможности не вносите изменения в ваш проект во время переноса и тестирования. Если изменения в проекте сложно приостановить, согласуйте со службой поддержки время и дату финального обновления данных, в период минимальной активности на сайте, после чего вы сможете делегировать домен на наш сервер и работать с актуальной версией сайта сразу. Отметим, что финальную актуализацию данных мы сможем выполнить только в дневное время. > [!NOTE] > Не планируйте какие-либо активности на перенесенном сайте (например, запуск рекламы) до завершения переноса. К сожалению, невозможно предусмотреть всё, и перенос может занять больше времени, чем вы рассчитываете. ### **4\. Не торопитесь удалять данные у прежнего провайдера** После переноса, даже если все работает корректно, не спешите удалять данные у старого хостера. Иногда мелкие недочеты обнаруживаются спустя несколько дней — в таких случаях очень помогает иметь работающую копию проекта у прежнего провайдера, чтобы разобраться, что именно идет не так. ### **5\. Отключите старый сервер, не удаляя его, и снова проверьте работу проекта** Это поможет убедиться, что всё необходимое работает и подгружается уже с нашего сервера и обращения к ресурсам прежнего провайдера не требуются. ### **6\. Настройте DNS, чтобы направить домен к нам** Теперь, когда вы уверены, что проект перенесен полностью и все нюансы учтены, поменяйте настройки домена, чтобы он работал с сервером Timeweb Cloud. # Ограничения облачных серверов Source: https://timeweb.cloud/docs/cloud-servers/limitations Общие ограничения при использовании облачных серверов прописаны в правилах «Платформы ТАЙМВЭБ.КЛАУД» на [нашем сайте](https://timeweb.cloud/records). Технические ограничения зависят от выбранной вами операционной системы и конфигурации сервера. ### Использование ресурсов и трафик Мы никак не ограничиваем использование ресурсов, если нагрузка, оказываемая сервером пользователя, находится в пределах нормы и не оказывает негативного влияния на работу ноды (физической машины, на которой размещаются виртуальные серверы). В тех случаях, когда нагрузка вызывает нестабильную работу ноды, для сервера может быть установлен лимит на использование ресурсов. Если предоставленный интернет-канал используется в легитимных целях, а также не влечет негативных последствий для других пользователей, канал и трафик не ограничиваются. В противном случае, согласно [п. 1.18 Правил Платформы](https://timeweb.cloud/records), мы можем ограничить скорость интернет-канала конкретного сервиса в любой момент и на любое время. ### Ограничение портов на сервере По умолчанию при создании сервера блокируются порты `25`, `3389`, `389`, `465`, `587`, `53413`, `2525`, `5060`. Блокировка выполняется для предотвращения отправки спама. Рассылка спама может выполняться не только намеренно пользователем, но и, например, злоумышленниками, которые взломали сервер. Рассылка спама крайне негативно влияет на репутацию наших подсетей и может привести к добавлению целой подсети в черные списки. Если на вашем сервере заблокированы порты, хотя вы используете его в добросовестных целях, их можно разблокировать из панели управления или, если этот способ недоступен, через [поддержку](https://timeweb.cloud/my/support/help-question). > [!NOTE] > Разблокировка порта 5060 доступна только юридическим лицам через поддержку. > > Для серверов с ПО из категории «Сеть» маркетплейса разблокировка портов невозможна, в том числе через обращение в поддержу. ![Scr 20260807 Kuix](https://content.timeweb.com/assets/45183ee8-9950-4be3-9c67-a8c653fd6f29.png?width=2094&height=1968) ### Публичные IP-адреса На одном аккаунте можно заказать не более 10 публичных IP-адресов в сутки. Ограничение связано с тем, что возможность одновременного использования множества IP эксплуатируется недобросовестными пользователями и приводит к попаданию наших IP-адресов или подсетей в черные списки спам-сервисов. Если для работы вашего проекта требуется большее количество IP, свяжитесь со службой поддержки и опишите ситуацию. Мы рассмотрим возможность снятия ограничения в конкретном случае. ### Приватные сети На серверах с приватной сетью [OVN](https://timeweb.cloud/docs/vpc/managing-ovn-networks): - отсутствует IPv6-адрес; - невозможно заказать дополнительный IP. Приватные сети доступны для линеек облачных серверов Premium NVMe, Dedicated CPU и HighCPU. Серверы линейки Standard невозможно добавлять в приватные сети. ### Ограничения локаций - **Образы**, размещенные в Новосибирске, можно переносить только в Санкт-Петербург или Москву. - **Приватные сети** доступны для серверов во всех локациях, кроме Новосибирска и Алматы. - **Защита от DDoS** доступна только для серверов в Санкт-Петербурге и Москве. - **IPv6-адреса** недоступны для серверов, размещенных в Новосибирске и Франкфурте. - **Настройка PTR-записи** недоступна для серверов, размещенных в Новосибирске. # Отличие VDS от хостинга и выделенных серверов Source: https://timeweb.cloud/docs/cloud-servers/vds-webhosting-dedicated-difference Все три вида сервисов: облачные серверы, выделенные серверы и виртуальный хостинг — предназначены для размещения в сети различных проектов, от небольших сайтов и блогов до крупных порталов, интернет-магазинов и прочего. Однако между этими видами размещения есть определенные отличия. **Виртуальный хостинг** подойдет для небольших и средних проектов, которым не требуются значительные мощности и которые не предполагают постоянную высокую нагрузку. Среди всех трех видов размещения хостинг является самым недорогим и простым в управлении. Для более сложных проектов, которым также требуется тонкая специфическая настройка и больше мощностей, подойдут **облачные серверы** (VDS). Здесь вы сможете устанавливать любое необходимое ПО, нужное для работы. Однако администрированием сервера, в отличие от хостинга, вам потребуется заниматься самостоятельно. При этом наши специалисты могут помочь с решением определенных задач в рамках [бесплатного](https://timeweb.cloud/docs/admin) администрирования. Для размещения особенно крупных, сложных проектов, для которых важны мощности и изоляция ресурсов и поддержкой сервера для которых вы готовы заниматься самостоятельно, подойдут [выделенные серверы](https://timeweb.cloud/docs/dedicated/). Вы получаете полную свободу в настройке, можете устанавливать любые модули и любое ПО, необходимое для работы проекта. Как и в случае с VDS, вам доступна помощь наших специалистов для решения отдельных задач в рамках [администрирования](https://timeweb.cloud/docs/admin). # Удаление данных после блокировки Source: https://timeweb.cloud/docs/cloud-servers/data-storage-after-block Сервис может быть заблокирован по двум причинам: 1. **В связи с окончанием средств на балансе.** В день блокировки на вашу электронную почту будет отправлено уведомление. Серверы, облачные сервисы и все связанные с ними данные (включая, к примеру, образы сервера) будут доступны на аккаунте в течение **7 дней** после блокировки. После все ресурсы, размещенные на аккаунте, автоматически удаляются. > [!NOTE] > Если на момент блокировки на аккаунте были выключенные серверы, то при поступлении оплаты и разблокировке аккаунта они автоматически включатся. 2. **Из-за нарушений условий договора** (например, рассылки спама или размещения запрещенной информации). При блокировке на вашу электронную почту будет отправлено уведомление о ее причинах. Для возобновления работы необходимо устранить нарушения в сроки, указанные в уведомлении. > [!NOTE] > Серверы, заблокированные за нарушение договора, **не будут удалены автоматически**, и списания за них продолжатся. Если устранить нарушения невозможно, для прекращения списаний вам необходимо самостоятельно удалить сервер из панели управления. # Действия при DDoS-атаках Source: https://timeweb.cloud/docs/cloud-servers/actions-in-case-of-ddos DDoS (Distributed Denial of Service, распределенная атака типа «отказ в обслуживании») — это атака на сайт или сервер с целью вывести его из строя путем направления множества ложных запросов, из-за которых ресурс становится недоступен реальным пользователям. Мощные DDoS-атаки могут также негативно влиять на функционирование других серверов, нарушая стабильную работу сети передачи данных. В случае атаки на ваш сервер с нашей стороны будут приняты меры защиты. ## **При фиксировании атаки** Если атака на ваш сервер ставит под угрозу стабильность сервисов для других пользователей, мы заблокируем атакуемый IP — основной IP вашего сервера. Уведомление об атаке и блокировке придет в раздел «Поддержка» → [«Уведомления»](https://timeweb.cloud/my/support/notifications) вашей панели управления. Вы также можете подключить Telegram-уведомления о блокировке [в настройках аккаунта](https://timeweb.cloud/my/account) в разделе «Уведомления» → [«Мониторинг»](https://timeweb.cloud/my/account/notifications/monitoring) → пункт «Блокировка IP-адреса из-за DDoS-атак». ## **После прекращения атаки** Если атака больше не фиксируется, IP будет разблокирован. Об этом мы также сообщим вам уведомлением в панели. Для того, чтобы в случае атак не приходилось прибегать к блокировке IP, вы можете подключить сервис «[Защита от DDoS](https://timeweb.cloud/docs/anti-ddos)». Вы также можете воспользоваться аналогичным сервисом любой другой компании, предоставляющей подобные сервисы. Подробную информацию о них вы можете найти на тематических ресурсах сети Интернет. # Серверы HighCPU Source: https://timeweb.cloud/docs/cloud-servers/highcpu Для тяжелых, высоконагруженных проектов мы предлагаем мощные VDS-серверы **HighCPU****.** Серверы HighCPU доступны в локациях Москва и Санкт-Петербург. Технические характеристики в этих локациях различаются: | **Локация** | **Процессор** | **Канал** | | --- | --- | --- | | **Москва** | AMD Ryzen 9 7950X, 5.5 ГГц | 1 Гбит/с | | **Санкт-Петербург** | Intel Core i9-9900K, 5 ГГц | 200 Мбит/с | Частота процессора — один из важнейших параметров, на который необходимо обращать внимание при выборе сервера. Частота определяет скорость работы процессора: чем она выше, тем быстрее работает процессор и тем больше операций в секунду он выполняет. Проще говоря, чем выше тактовая частота, тем выше производительность сервера в целом. Если проекту недостаточно мощности обычных тарифных планов VDS (частота процессора на них достигает 2,8 ГГц), производительные серверы HighCPU — ваш выбор. HighCPU VDS отлично подойдут для проектов на 1C-Битрикс, интернет-магазинов, любых других высоконагруженных проектов, которые требовательны к производительности сервера. Заказать HighCPU-серверы вы можете на [нашем сайте](https://timeweb.cloud/services/vds-vps). Не нашли подходящий вариант? Напишите нам — мы подберем для вас индивидуальную конфигурацию. > [!NOTE] > Частота процессора, которую вы можете видеть при замерах в консоли сервера, не отображает реальные характеристики процессора — система виртуализации показывает базовую частоту, без учета использования Turboboost. > > При этом центральный процессор платформы всегда работает в режиме Turboboost, гарантируя частоту, заявленную в тарифе. # VDS в Европе Source: https://timeweb.cloud/docs/cloud-servers/euro-servers Расположение дата-центра напрямую влияет на скорость доступа к сайтам. Чем меньше дистанция между сервером и конечным пользователем сайта, тем ниже время ожидания: страницы будут открываться быстрее, а значит работа с сайтом будет удобнее для ваших клиентов. С Timeweb Cloud вы можете стать ближе к своим клиентам в Европе, заказав VDS-сервер с размещением в европейском дата-центре. Посмотреть доступные локации и конфигурации, а также заказать европейский сервер можно в вашей [панели управления](https://timeweb.cloud/my/servers/create) или на [сайте](https://timeweb.cloud/services/cloud-servers?location=nl). Не нашли подходящую конфигурацию? Свяжитесь с нами — подберем для вас индивидуальный вариант. > [!NOTE] > Различные сервисы в Сети, используемые для проверки IP-адресов, в данный момент могут сообщать, что сервер размещен на территории России. Это связано с тем, что для обновления баз требуется дополнительное время, и актуальные сведения пока не доступны. > > Вы можете получить фактическую информацию о расположении вашего сервера, например, с помощью трассировки. # Диски NVMe, SSD, HDD Source: https://timeweb.cloud/docs/cloud-servers/nvme-ssd-hdd На большинстве тарифов облачных серверов мы используем диски NVMe, но наверняка вам также встречались такие типы дисков, как SSD и HDD. Рассмотрим, чем отличаются эти диски друг от друга. ## HDD HDD — это «классический» тип диска, который содержит в себе вращающиеся диски и считывающие головки, которые перемещаются над диском и записывают или считывают данные. Если упрощать, то работу HDD-диска можно представить как проигрывание пластинки. HDD обладают достаточно невысокой скоростью записи и чтения (в сравнении с другими типами), при этом они недорогие и имеют большие объемы. Выбор HDD имеет смысл, когда для вас важно размещение большого объема данных, а скорость менее критична. Мы не используем HDD в качестве локальных дисков для облачных серверов, но они доступны как [сетевые диски](https://timeweb.cloud/docs/network-drives). Также для размещения больших объемов данных вы можете использовать сервис [S3-хранилища](https://timeweb.cloud/services/s3-storage) или [выделенные серверы](https://timeweb.cloud/services/dedicated-server) с HDD. ## SSD SSD — это иной тип дисков, который отличается от HDD и принципом работы, и скоростью чтения и записи. В отличие от HDD, у SDD нет подвижных частей (а значит, нет и затрат времени на обращение считывающей головки к нужному разделу вращающегося диска); вместо них SSD содержит набор микросхем — флеш-накопителей, на которых и размещается информация. SSD-диски обычно меньшего объема, чем HDD, выше по стоимости и в несколько раз быстрее по скорости. До перехода на NVMe мы использовали именно SSD-диски на всех наших тарифах; сейчас они доступны на линейке Standard. ## NVMe NVMe — современные диски со скоростью записи в 3 раза выше, чем у SSD. Можно сказать, что это новое поколение SSD-дисков, скорость работы которых теперь не ограничивается устаревшим протоколом подключения. Вместо него используется интерфейс подключения PCI Express, который позволяет снизить задержки в работе, выполнять больше операций единовременно и, в целом, эффективнее использовать возможности диска. Диски NVMe обеспечивают самую лучшую производительность в сравнении с другими типами дисков, и именно их мы используем на всех тарифах облачных серверов, кроме линейки Standard. # Выделенные физические серверы Source: https://timeweb.cloud/docs/dedicated Сервис «Выделенный сервер» — это аренда физического оборудования с полным доступом к его ресурсам. Вы самостоятельно управляете системой: устанавливаете необходимое ПО, настраиваете окружение и распределяете нагрузку без ограничений со стороны виртуализации. Сервис подходит для задач, где важен прямой доступ к аппаратным ресурсам и стабильная производительность — например, для высоконагруженных сайтов, корпоративных сервисов или 1С. Вы используете вычислительные мощности сервера без разделения с другими клиентами и можете самостоятельно определять структуру проектов, количество сайтов, баз данных и почтовых ящиков — в пределах характеристик выбранной конфигурации. Для управления сервером предоставляется доступ к интерфейсу удаленного управления ([IPMI](https://timeweb.cloud/docs/dedicated/using-ipmi)), который позволяет выполнять базовые операции администрирования и диагностики на уровне оборудования. Частичный мониторинг и обслуживание аппаратной части также осуществляется нашей поддержкой. Мы предоставляем [расширенную техническую поддержку](https://timeweb.cloud/docs/admin) для серверов, на которых используются панели управления ispmanager, Fastpanel или BitrixVM. Заказать выделенный сервер [можно на сайте Timeweb Cloud](https://timeweb.cloud/services/dedicated-server) или [через панель управления аккаунтом](https://timeweb.cloud/my/dedicated). Выберите: - Готовую сборку — сервер уже собран физически, нужно только дождаться его подготовки: настройки сетевых интерфейсов и установки ОС. - Мгновенную сборку — полностью готовые к использованию серверы, которые можно получить сразу после заказа. - Кастомную сборку — свяжитесь с менеджером для подбора конфигурации сервера под ваши задачи. Чтобы изменить конфигурацию сервера, [отправьте запрос в поддержку](https://timeweb.cloud/my/support/help-question) через панель управления аккаунтом. После проверки доступных вариантов специалисты сообщат, какие изменения можно выполнить для выбранного оборудования. # Запрос нестандартной конфигурации Source: https://timeweb.cloud/docs/dedicated/custom-server Если среди готовых конфигураций нет подходящего варианта, вы можете заказать сервер с индивидуальными параметрами. Мы подберем оборудование с учетом указанных технических требований и доступных компонентов. Для заказа сервера свяжитесь с нами удобным способом и укажите желаемые характеристики сервера: - Если у вас уже есть аккаунт — создайте запрос через панель управления. - Если вы новый клиент — напишите на [server@timeweb.cloud](mailto:server@timeweb.cloud) или [в Телеграме](https://t.me/twcloud_sales_bot). # Модернизация сервера Source: https://timeweb.cloud/docs/dedicated/server-modernization Для модернизации выделенного сервера [отправьте запрос](https://timeweb.cloud/my/support/help-question/other) из панели управления аккаунтом. Если модернизация связана с изменением количества RAM или накопителей и проводится в рамках текущего сервера, может понадобиться его отключение на 10-15 минут. Время отключения мы согласуем с вами заранее. Если изменить конфигурацию имеющегося сервера невозможно, мы предложим доступные альтернативы. В этом случае потребуется перенос данных на новый сервер. Вы можете его выполнить самостоятельно или [с помощью нашей техподдержки](https://timeweb.cloud/docs/dedicated/data-transfer). # Перенос данных на выделенный сервер Source: https://timeweb.cloud/docs/dedicated/data-transfer Перенос данных на сервер может быть выполнен как вами самостоятельно, так и нашими специалистами. ## Перенос силами технической поддержки Мы выполняем переносы при условии наличия на сервере панели управления (Fastpanel или ispmanager) или системы BitrixVM. Установить ОС с панелью управления или BitrixVM можно силами нашей технической поддержки при заказе сервера. Переносы выполняются как внутри экосистемы Timeweb / Timeweb Cloud, так и со сторонних хостингов. В услугу переноса входит копирование всех файлов указанных вами сайтов на сервер, импорт баз данных и внесение правок в конфигурационные файлы для правильного подключения ресурсов к MySQL. Также нашими силами может быть установлено и настроено ПО, необходимое для корректной работы сайта: веб-серверы Nginx и Apache, MySQL и PHP. Для выполнения переноса необходимо отправить запрос в службу поддержки. После уведомления о завершении переноса настоятельно рекомендуем вам изменить пароль пользователя root. ### Перенос образа диска Мы можем перенести образ диска с одного сервера без администрирования на другой — для этого потребуется запрос в техническую поддержку. ## Самостоятельный перенос Вы можете перенести сайт самостоятельно — вручную или с помощью установленной на сервере панели управления. Мы подготовили инструкции по переносу сайта для популярных панелей: - [ispmanager](https://timeweb.cloud/docs/control-panels/ispmanager/adding-site-ispmanager) - [Fastpanel](https://timeweb.cloud/docs/control-panels/fastpanel/site-hosting-in-fastpanel) - [ISPConfig](https://timeweb.cloud/docs/control-panels/ispconfig/site-hosting-in-ispconfig) - [Hestia](https://timeweb.cloud/docs/control-panels/hestia-cp/adding-site-hestia) - [aaPanel](https://timeweb.cloud/docs/control-panels/aapanel-cp) - [BrainyCP](https://timeweb.cloud/docs/control-panels/brainycp) - [Plesk](https://timeweb.cloud/docs/control-panels/plesk-cp) # Добавление IP-адресов Source: https://timeweb.cloud/docs/dedicated/adding-ip В панели управления аккаунтом вы можете добавить IPv4- и IPv6-адреса для выделенного сервера. ## Ограничения Перед добавлением IP-адресов учитывайте следующие ограничения: - Для каждого сервера можно добавить не более 9 IPv4- и 9 IPv6-адресов. - Удалить основной IPv4- или IPv6-адрес нельзя. - Дополнительные адреса не являются [публичными (плавающими) IP-адресами](https://timeweb.cloud/docs/public-ip), которые используются для других услуг. При удалении IP-адрес сразу удаляется с аккаунта, и перепривязать его к серверу нельзя. - IPv6-адресов не может быть больше, чем IPv4-адресов. На каждый IPv6-адрес должен приходиться IPv4-адрес. - Для IPv4-адресов выделенного сервера не действуют ограничения, распространяющиеся на весь аккаунт: 10 адресов в сутки или 250 адресов в сутки для прайм-клиентов. Стоимость: - IPv4-адрес — 200 ₽. - IPv6-адрес — бесплатно. ## Добавление IP-адреса Чтобы добавить IP-адрес: 1. Перейдите в раздел «Выделенные серверы» и выберите нужный сервер. 2. Откройте вкладку «Сеть». 3. В блоке «IP-адреса» нажмите «Добавить». ![Scr 20260629 Ojff](https://content.timeweb.com/assets/e8260d9b-d5e7-4a1e-b2d4-7f48582f9ac8.png?width=2218&height=1654) В открывшемся окне укажите: - версию IP-адреса — IPv4 или IPv6; - количество дополнительных адресов; - при необходимости — защиту от DDoS. Защита от DDoS доступна только при использовании интернет-канала с защитой от DDoS. ![Добавление IP](https://content.timeweb.com/assets/0f8d752c-f4af-4a32-8883-81b02a6a5d68.png?width=838&height=672) Нажмите «Добавить» и дождитесь обновления статуса сервера в панели управления. После добавления IP-адрес отобразится на вкладке «Сеть». После добавления IP-адреса в панели управления его необходимо настроить на сервере. Как это сделать, описано в инструкциях [для Unix-](https://timeweb.cloud/docs/unix-guides/adding-ip-addresses) и [Windows-серверов](https://timeweb.cloud/docs/windows-guides/adding-ip-addresses#dobavlenie-ipv4-adresov). ## Удаление IP-адреса Чтобы удалить IP-адрес: 1. Перейдите в раздел «Выделенные серверы» и выберите нужный сервер. 2. Откройте вкладку «Сеть». 3. Наведите курсор на нужный IP-адрес, нажмите на три точки напротив адреса и выберите «Удалить IP-адрес». 4. Дождитесь обновления статуса сервера в панели управления. # Увеличение полосы пропускания Source: https://timeweb.cloud/docs/dedicated/bandwidth Полоса пропускания **1 Гбит/с** предоставляется бесплатно для любого выделенного сервера. Если вам нужен более широкий канал, вы можете выбрать гарантированную полосу: - 2.5 Гбит/с - 5 Гбит/с - 10 Гбит/с - 40 Гбит/с Актуальная стоимость доступна в [панели управления](https://timeweb.cloud/my/dedicated/create). Вы также можете запросить нужную полосу и уточнить ее стоимость через вашего менеджера. # Использование IPMI Source: https://timeweb.cloud/docs/dedicated/using-ipmi **IPMI (Intelligent Platform Management Interface)** — это интерфейс управления сервером и мониторинга его физического состояния, который обслуживается специальной платой-модулем BMC (Baseboard Management Controller). Он предоставляется тем клиентам, которые арендуют сервер без администрирования. Интерфейс не зависит от сервера и может работать, даже когда сервер выключен. IPMI имеет свой собственный сетевой интерфейс и собственные сетевые настройки, а также обладает встроенным IPKVM на Java (IPKVM — технология, позволяющая получать доступ к серверу удаленно, путем запуска окна с консолью). Для удобства такие опции IPMI, как перезагрузка и выключение сервера, а также возможность перезапуска консоли выведены в панель управления аккаунтом. ## Доступ к IPMI По умолчанию мы предоставляем пользователям доступ к IPMI уровня Operator. Он позволяет выполнять все необходимые действия с сервером, однако ограничивает часть функционала в целях безопасности. При возникновении сложностей в работе IPMI, которые вы не можете решить самостоятельно, пожалуйста, свяжитесь с нашей службой поддержки. Войти в IPMI вы можете: - Из списка серверов в разделе «Выделенные серверы», кликнув на значок консоли у нужного сервера: ![A45845fd 4066 4026 935c 8f70ddb2d8bb](https://content.timeweb.com/assets/8d66b144-1ee4-4234-8da2-6757c0eb64a9?width=1444&height=676) - Со страницы конкретного сервера, кликнув «Открыть консоль» на вкладке «IPMI-консоль»: ![61b9c638 26f8 4468 9051 18fa47fd2227](https://content.timeweb.com/assets/c76771a5-8d3d-47cb-b3bd-f24ff3ca2948?width=1472&height=635) Консоль откроется в новой вкладке. Загрузка происходит до 15 секунд. ## Работа с консолью ### Перезапуск консоли При возникновении проблем в работе консоли в первую очередь попробуйте выполнить ее перезапуск. Это можно сделать из вашей панели управления аккаунтом по кнопке «Перезагрузить IKVM» на странице нужного сервера. ![8a510989 Ba24 4bc4 B4cf 68a92e7490cc](https://content.timeweb.com/assets/ee4e470d-2743-4a68-adfc-db6179a97acd?width=1419&height=858) Также перезапустить IKVM можно из списка серверов: ![6dd43f37 5215 41a8 A82f 0471ed5fad40](https://content.timeweb.com/assets/89880baa-cfc5-46b6-b1a8-8721ce59a74e?width=1447&height=672) Если проблема сохранится, свяжитесь с нами. ### Совместная работа В целях безопасности, подключение к IPMI производится только одной сессией. Это значит, что не получится работать с IPMI с двух разных устройств или даже с разных вкладок браузера. ### Подключение образа > [!NOTE] > Мы можем полностью выполнить подключение за вас. Для этого свяжитесь с поддержкой и сообщите, какая ОС вам требуется. При работе с консолью вы можете подключить нужный образ по инструкции ниже. Для этого перейдите в раздел **Virtual Media** -> **Virtual Storage**. ![Image2022 6 23 17 49 11](https://content.timeweb.com/assets/eab06634-a03d-48af-83bc-df0c60022873?width=1093&height=871) _Интерфейс [Java iKVM Viewer](https://www.supermicro.com/en/support/resources/downloadcenter/smsdownload?category=IPMI) (консоль сервера)_ Далее перейдите **CDROM&ISO** -> **ISO File** -> **Open ISO**. ![2022 06 23 17 49 40](https://content.timeweb.com/assets/33041a7a-5790-4c2c-9cfd-f7b8f67f6dbe?width=661&height=378) _Интерфейс [Java iKVM Viewer](https://www.supermicro.com/en/support/resources/downloadcenter/smsdownload?category=IPMI) (консоль сервера)_ Перейдите в директорию **iso**. ![2022 06 23 17 51 36](https://content.timeweb.com/assets/4efef138-9553-47bb-8ad9-096ca141fa63?width=629&height=451) _Интерфейс [Java iKVM Viewer](https://www.supermicro.com/en/support/resources/downloadcenter/smsdownload?category=IPMI) (консоль сервера)_ Выберите нужный образ. ![Image2022 6 23 17 52 9](https://content.timeweb.com/assets/035155ee-fcfc-44d6-87a0-4a1c606b3991?width=551&height=371) _Интерфейс [Java iKVM Viewer](https://www.supermicro.com/en/support/resources/downloadcenter/smsdownload?category=IPMI) (консоль сервера)_ Нажмите Plug In, чтобы подключить образ к серверу. В поле «Статус» должно отобразиться сообщение об успешном подключении образа, после чего окно Virtual Storage можно закрыть. Далее необходимо перезагрузить сервер. Иногда может потребоваться изменить порядок загрузки в BIOS сервера, чтобы загрузиться с ISO-образа. Это можно сделать так же, как при обычном физическом подключении к серверу. > [!NOTE] > Если нужного образа нет, свяжитесь с нами — мы его добавим. ### **Макросы** Для выполнения отдельных операций требуются определенные сочетания клавиш (например, Ctrl + Alt + Del для входа в ОС Windows). Эти сочетания могут перехватываться вашей локальной операционной системой и потому не работать в консоли. В этом случае можно использовать макросы в консоли раздел Macro, в котором собраны основные сочетания клавиш, необходимые для работы. Также в этих целях можно использовать виртуальную клавиатуру в консоли (Virtual Media Virtual Storage), но работа с ней достаточно неудобна. ![Macro](https://content.timeweb.com/assets/fec6828a-9971-4e7e-afb0-ecc9d87d5fbe?width=657&height=437) _Интерфейс [Java iKVM Viewer](https://www.supermicro.com/en/support/resources/downloadcenter/smsdownload?category=IPMI) (консоль сервера)_ # Ошибка IPMI Source: https://timeweb.cloud/docs/dedicated/ipmi-error На выделенных серверах без нашего администрирования встречается проблема с зависанием модуля IPMI на самом сервере. В этом случае при попытке подключения к IPMI будет возникать ошибка «Connection Refused». Проблему можно устранить несколькими способами: - перезапуском модуля IPMI на сервере; - перезапуском всего сервера; - обновлением IPMI на сервере. # Изменение пароля root на выделенном сервере Source: https://timeweb.cloud/docs/dedicated/change-root-password В этой инструкции разберем, как изменить пароль пользователя root на выделенном сервере под управлением Linux. Рассмотрим два случая: текущий пароль известен и текущий пароль утерян. ## Если текущий пароль известен Если вам известен текущий пароль пользователя `root`, измените его из консоли: 1. Подключитесь к серверу по SSH под пользователем `root`, используя текущий пароль. 2. Выполните команду: ```bash passwd ``` 3. Дважды введите новый пароль. Пароль будет изменен. Используйте новый пароль для авторизации под пользователем `root`. ## Если пароль утерян Если текущий пароль неизвестен, установите новый пароль после загрузки сервера с диска восстановления: 1. Подключитесь к серверу через [IPMI-консоль](https://timeweb.cloud/docs/dedicated/using-ipmi). 2. В консоли выберите «Virtual Media» → «Virtual Storage». ![Virtual Storage](https://content.timeweb.com/assets/1aaa6677-ebc3-4eeb-9474-1da40574ca8c.png?width=2104&height=1606) 3. В открывшемся окне перейдите на вкладку «CDROM&ISO». В поле «Logical Drive Type» выберите «ISO File», затем нажмите «Open ISO». 4. В окне выбора файла перейдите в директорию «iso» и выберите актуальный образ диска восстановления, например `systemrescue-11.02-amd64.iso`. ![Выбор диска восстановления](https://content.timeweb.com/assets/dac09d56-7966-4e54-b3a2-43249e17acd5.png?width=2354&height=1756) 5. Нажмите «Plug In». Убедитесь, что значение в поле «Статус» изменилось, и нажмите «OK». 6. Перезагрузите сервер: выберите «Power Control» → «Set Power Reset». Начнется перезагрузка. ![Перезагрузка сервера](https://content.timeweb.com/assets/9e652bbe-8a41-4e48-a8a9-019f19cb3b7f.png?width=2086&height=1586) 7. В меню GRUB выберите «UEFI Firmware Settings». Сервер снова перезагрузится, после чего откроется BIOS. ![Меню GRUB](https://content.timeweb.com/assets/f3cfcfde-e0ac-4955-834b-b99d5439210a.png?width=2250&height=1622) 8. В BIOS перейдите на вкладку «Boot». Выберите «Boot Option #1», а затем — виртуальный CD-ROM. В нашем примере он называется «UEFI: IPMI Virtual CDROM 3000». ![Выбор диска в BIOS](https://content.timeweb.com/assets/80071ed1-422e-4a43-9e8e-dd0967d8782e.png?width=2256&height=1680) 9. Перейдите на вкладку «Exit» и выберите «Save Changes and Reset». Подтвердите сохранение настроек и перезагрузку. 10. После перезагрузки в новом меню GRUB выберите «Boot SystemRescue using default options». ![Меню GRUB](https://content.timeweb.com/assets/d26b121f-d784-40f3-bf5f-346a509cad07.png?width=2122&height=1636) 11. Дождитесь загрузки SystemRescue. 12. Определите диск, на который установлена ОС: ```bash lsblk -f ``` ![Результат выполнения команды lsblk -f](https://content.timeweb.com/assets/1b57ff30-b13c-4756-ab76-bd4b1d675c23.png?width=2214&height=1686) В большинстве случаев для выделенных серверов настроен RAID, поэтому работать нужно с RAID-устройством, а не напрямую с дисками `sd*` и их разделами. В нашем примере есть два физических диска — `sda` и `sdb`, а имя RAID-устройства — `md127`. 13. Теперь нужно определить раздел, на который установлена ОС. В нашем примере можно сразу исключить раздел `md127p2`, так как он имеет тип файловой системы `swap`. Чтобы сравнить размеры разделов, выполните команду: ```bash lsblk ``` Вероятнее всего, ОС установлена на наиболее объемный раздел. В нашем случае это `md127p3`. ![Вывод команды lsblk](https://content.timeweb.com/assets/2b1049a5-4874-476d-adc1-56a6b5df14a9.png?width=1290&height=788) 14. Способ с определением раздела по размеру может сработать не всегда. Например, на диске может быть несколько достаточно крупных разделов. В этом случае примонтируйте раздел и проверьте его содержимое. Создайте директорию: ```bash mkdir -p /mnt/test ``` Примонтируйте раздел: ```bash mount /dev/md127p3 /mnt/test ``` Здесь `md127p3` — имя проверяемого раздела. Проверьте его содержимое: ```bash ls -la /mnt/test ``` Если в выводе есть каталоги `bin`, `boot`, `dev`, `etc`, `home`, `lib`, `root`, `usr` и `var`, вы нашли системный раздел. Отмонтируйте его: ```bash umount /mnt/test ``` Если этих каталогов нет, отмонтируйте раздел той же командой, примонтируйте другой раздел и повторите проверку. 15. Смонтируйте системный раздел в директорию `/mnt` в режиме чтения и записи: ```bash mount -o rw /dev/md127p3 /mnt ``` 16. Перейдите в смонтированную систему с помощью `chroot`: ```bash chroot /mnt /bin/bash ``` 17. Измените пароль пользователя `root`: ```bash passwd root ``` Дважды введите новый пароль. При вводе пароль не отображается. После успешной смены пароля появится соответствующее уведомление. 18. Нажмите Ctrl + D, чтобы выйти из `chroot`. 19. Отмонтируйте системный раздел: ```bash umount /mnt ``` Если вы не отмонтировали раздел после проверки в директории `/mnt/test`, отмонтируйте и его: ```bash umount /mnt/test ``` 20. Отключите виртуальный CD-ROM. Выберите «Virtual Media» → «Virtual Storage», перейдите на вкладку «CDROM&ISO», нажмите «Plug Out», а затем — «OK». ![Отключение виртуального дисковода ](https://content.timeweb.com/assets/8191fa7d-f71e-48e4-9547-dabbc81d2b45.png?width=2222&height=1706) 21. Перезагрузите сервер: выберите «Power Control» → «Set Power Reset». 22. Дождитесь загрузки системы в обычном режиме и авторизуйтесь под пользователем `root`, используя новый пароль. # Сетевой диск (iSCSI-хранилище) Source: https://timeweb.cloud/docs/dedicated/iscsi Для размещения больших объемов данных, например, резервных копий, предлагаем вам воспользоваться опцией «Сетевой диск». Сетевой диск — это ваше iSCSI-хранилище объемом от 250 ГБ до 30 ТБ, где вы можете размещать бэкапы и статические файлы. Используйте сетевой диск по своему усмотрению, например: - Настройте резервное копирование на сетевое хранилище, чтобы обезопасить себя от сбоев. - Размещайте на нем любые тяжелые файлы, сохранить которые важно, но обращение к которым происходит нечасто. ## Заказ диска Заказать сетевой диск можно через вашего персонального менеджера или из панели управления, на вкладке «Конфигурация». Оставьте заявку, после чего специалист свяжется с вами для уточнения деталей. ![1a1cd034 E854 46eb B75b 37caff1c17d9](https://content.timeweb.com/assets/fdbe08a7-173b-498c-8c17-ddfdb81906a6?width=1421&height=818) ## Подключение Мы предоставим IP-адрес хранилища, по которому вы сможете примонтировать диск самостоятельно по нашим инструкциям: - [Подключение iSCSI-диска (ОС Linux)](https://timeweb.cloud/docs/dedicated/iscsi/iscsi-linux) - [Подключение iSCSI-диска (ОС Windows)](https://timeweb.cloud/docs/dedicated/iscsi/iscsi-windows) При необходимости вы также можете обратиться за помощью к специалистам технической поддержки. # Подключение iSCSI-диска (ОС Linux) Source: https://timeweb.cloud/docs/dedicated/iscsi/iscsi-linux > [!NOTE] > Если вы добавляете запись о диске в `/etc/fstab`, то необходимо, чтобы: > > 1. Для записи с диском был указан параметр `_netdev`; > 2. IP диска и префикс были указаны в конфигурационном файле сети для соответствующего интерфейса. После подготовки сетевого диска мы сообщим вам IP-адрес диска, который нужно добавить на сервер, и IP-адрес стораджа, к которому необходимо будет осуществлять подключение. Далее для подключения диска вам необходимо выполнить следующие действия. 1. Установить на сервер необходимые пакеты: Для Ubuntu/Debian: ```shell apt install open-iscsi ``` Для CentOS: ```shell yum install -y iscsi-initiator-utils ``` 2. Добавить IP-адрес диска (*не стораджа*), выданный для вашего сервера, на сетевой интерфейс (будет работать до первой перезагрузки): ```shell ip a add 172.18.%.%/24 dev eth1 ``` Для того, чтобы после перезагрузки диск корректно инициировался в ОС, необходимо указать IP-адрес и /24 маску подсети на соответствующем интерфейсе. Для Ubuntu/Debian: ```shell vim /etc/netplan/*.yaml ``` ```shell network: version: 2 ethernets: eno1: # здесь настройки сети на первом интерфейсе для доступа в интернет eno2: # далее идут настройки для сетевого диска dhcp4: no addresses: [ 172.18.%.%/24 ] # gateway4: указывать не нужно ``` Для CentOS: ```shell vi /etc/sysconfig/network-scripts/ifcfg-enp1s0f1 ``` ```shell TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none NAME=enp1s0f1 UUID=21b81603-e485-4ff9-8394-19114b2983ad DEVICE=enp1s0f1 ONBOOT=yes IPADDR=172.18.%.% PREFIX=24 ``` где: - 172.18.%.% — IP-адрес диска (НЕ стораджа); - eno2/enp1s0f1 — отдельный сетевой интерфейс, отличный от того, на котором работает основной IP сервера. 3. Выполнить перезагрузку сетевого демона: Для Ubuntu/Debian: ``` sudo netplan --debug generate # проверка корректности синтаксиса в конфигурации сети ``` ``` sudo netplan try --timeout 15 # пробное применение новых сетевых настроек в течение 15 секунд ``` ``` sudo netplan apply # применение настроек ``` Для CentOS: `netplan` не используется для управления конфигурацией сети. Необходимо отредактировать конфигурационный файл интерфейса, *отличного от того, на котором работает интернет*. Обычно в `/etc/sysconfig/network-scripts` находятся 2 конфигурационных файла сети. Настройки интернета находятся в файле с меньшим номером, поэтому настройку сетевого диска необходимо проводить на другом интерфейсе. Например: ```shell # /etc/sysconfig/network-scripts # ifcfg-eno1 (ifcfg-enp1s0f0) — здесь настройки интернета # ifcfg-eno2 (ifcfg-enp1s0f1) — здесь настройки сетевого диска ``` ```shell sudo systemctl restart network ``` 4. Перезапустить iSCSI: ```shell systemctl restart iscsi ``` 5. Подключиться по предоставленному IP-адресу стораджа: ```shell iscsiadm -m discovery -t st -p IP_адрес;iscsiadm -m node -l ``` где IP_адрес — выданный вам IP-адрес *стораджа*. Пример успешного подключения к стораджу с IP-адресом 172.18.0.3: ![1](https://content.timeweb.com/assets/0a0cb23d-cbd6-47a6-9aa7-edd4025744ac?width=532&height=52) 6. Включить автологин в `/etc/iscsi/iscsid.conf`, заменив значение параметра `node.startup` на: ```shell node.startup = automatic ``` Это можно сделать командой: ```shell sed -i 's/node.startup = manual/node.startup = automatic/' /etc/iscsi/iscsid.conf ``` 7. Проверить что в файлах в `/etc/iscsi/nodes` также указано значение `automatic`, например: ```shell find /etc/iscsi/nodes/ -type f | xargs grep auto node.startup = automatic ``` Если директория `/etc/iscsi/nodes/` отсутствует, просто пропустите этот шаг. 8. Проверить наличие диска: ```shell fdisk -l ``` Или: ```shell parted -l ``` В выводе должен быть отображен новый диск с новой меткой. В нашем примере появился новый диск `/dev/sdd`: ![2](https://content.timeweb.com/assets/32cf5864-8e5d-4a17-b7ef-fe637ee7bcdb?width=465&height=604) 9. Убедившись в наличии диска, создать таблицу разделов: ```shell fdisk /dev/DISK ``` где `DISK` — метка нового бэкапного диска. Пример разметки с меткой диска sdd: ```shell # fdisk /dev/sdd Command (m for help): p Disk /dev/sdd: 944.9 GB, 944892805120 bytes 255 heads, 63 sectors/track, 114876 cylinders, total 1845493760 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xc4395aa1 Device Boot Start End Blocks Id System Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): Using default response p Partition number (1-4, default 1): Using default value 1 First sector (2048-1845493759, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-1845493759, default 1845493759): Using default value 1845493759 Command (m for help): p Disk /dev/sdd: 944.9 GB, 944892805120 bytes 255 heads, 63 sectors/track, 114876 cylinders, total 1845493760 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xc4395aa1 Device Boot Start End Blocks Id System /dev/sdd1 2048 1845493759 922745856 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. ``` 10. Создать файловую систему на разделе: ```shell mkfs.ext4 /dev/DISK_N ``` где `DISK_N` — созданный раздел бэкапного диска. 11. Создать директорию, куда будет смонтирован диск (например, `/mnt/backup`), и смонтировать раздел: ```shell mkdir /mnt/backup ``` ```shell mount /dev/DISK_N /mnt/backup ``` 12. Посмотреть UUID диска и указать его в соответствующей записи в `fstab` (п. 13): ```shell sudo blkid ``` В случае установленных в сервере накопителей SSD/HDD мы рекомендуем указывать запись о сетевом диске, ссылаясь на UUID раздела. В случае установленных только NVMe-дисков можно ссылаться на имя раздела (`/dev/sdb` и пр.) 13. Добавить запись в `fstab` (после создания раздела на диске из п. 12): ```shell echo "/dev/disk/by-uuid/<скопированный UUID> /mnt/backup ext4 defaults,_netdev 0 0" >> /etc/fstab ``` где: - `/``mnt/backup` — точка монтирования; - `_netdev` — параметр, позволяющий проверять блочное устройство после инициализации сетевой части при загрузке ОС. # Подключение iSCSI-диска (ОС Windows) Source: https://timeweb.cloud/docs/dedicated/iscsi/iscsi-windows После подготовки диска мы сообщим вам IP-адрес диска, который нужно добавить на сервер, и IP-адрес стораджа, к которому необходимо будет осуществлять подключение. Далее для подключения диска вам необходимо выполнить следующие действия. 1. Добавьте IP-адрес диска *(не стораджа)*, выданный для вашего сервера, на сетевой интерфейс (на отдельный сетевой интерфейс, отличный от того, на котором работает основной IP сервера). Добавление IP-адреса описано в нашей [инструкции](https://timeweb.cloud/docs/windows-guides/adding-ip-addresses). 2. Подключитесь к стораджу, выполнив следующие шаги: **2.1.** Запустите «Инициатор iSCSI», выполнив поиск по этому сочетанию или перейдя по пути «Панель управления» -> «Администрирование» -> «Инициатор iSCSI». **2.2.** В разделе «Свойства» перейдите на вкладку «Конечные объекты». В поле «Объект» введите выданный вам IP-адрес *стораджа* и нажмите «Быстрое подключение». ![1 (1)](https://content.timeweb.com/assets/64e56afb-aa4a-49b7-b3d7-40265951e0b0?width=481&height=661) _Настройка подключения к стораджу в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ **2.3.** Далее должно появиться окно об успешном подключении. Нажмите «Готово». ![2 (1)](https://content.timeweb.com/assets/f94c8c7a-3086-4b50-b910-f50c5adb7342?width=449&height=510) _Настройка подключения к стораджу в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ **2.4.** На вкладке «Тома и устройства» нажмите «Автонастройка». После этого ниже в «Списке томов» будут автоматически добавлены все доступные устройства. ![3](https://content.timeweb.com/assets/6d96bbca-4d19-48b3-935b-6b2b71961f1c?width=479&height=650) _Тома и устройства в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ При первом подключении название устройства будет отображено в следующем виде: ![4](https://content.timeweb.com/assets/4ca757bb-638e-409e-a305-6d8b0ea1267b?width=464&height=174) _Имя устройства в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 3. Инициализируйте диск iSCSI. **3.1.** Откройте раздел «Управление дисками», перейдя в меню «Администрирование» -> «Управление компьютером» -> «Управление дисками». **3.2.** Убедитесь, что ваш диск отображается, его состояние — «Вне сети», далее выберите из контекстного меню пункт «В сети». ![5](https://content.timeweb.com/assets/f338337e-61c9-4f3b-94c5-77f4c4b1ebaa?width=423&height=160) _Управление дисками в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ **3.3.** Выполните инициализацию диска. ![6](https://content.timeweb.com/assets/9796e8a9-150d-45c3-90e0-b95b85322128?width=425&height=525) _Управление дисками в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ **3.4.** Из контекстного меню на неразмеченном диске выберите «Создать простой том». ![7](https://content.timeweb.com/assets/53d34b4d-06b4-4cfa-9c41-0d21840f1331?width=580&height=201) _Управление дисками в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ **3.5.** После открытия «Мастера создания простого тома» нажмите кнопку «Далее». ![8](https://content.timeweb.com/assets/73819de2-d8b6-4c59-a583-873f5d3af95c?width=499&height=393) _Мастер создания простого тома в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ **3.6.** Укажите в соответствующем поле размер раздела или оставьте его без изменений, чтобы использовать весь диск под один раздел. ![9](https://content.timeweb.com/assets/b9644224-4e9a-4044-a9e5-a9b2fb6321ed?width=499&height=392) _Мастер создания простого тома в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ **3.7.** Назначьте букву диска для нового раздела. ![10](https://content.timeweb.com/assets/f44ef45e-91fe-408c-baf4-3cb2db2d9d95?width=498&height=393) ** _Мастер создания простого тома в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ ** **3.8.** Выберите тип файловой системы и метку тома. ![11](https://content.timeweb.com/assets/abfa45b1-ea95-4af7-8d75-aef3da2c0307?width=499&height=393) _Мастер создания простого тома в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ **3.9.** Нажмите кнопку «Готово» и убедитесь в завершении форматирования тома. ![12](https://content.timeweb.com/assets/08d8e7c2-81c0-45c7-9752-4fac99255a09?width=499&height=393) _Мастер создания простого тома в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ **3.10.** Проверьте, что новый том находится в состоянии «Исправен». ![13](https://content.timeweb.com/assets/ee4ec883-da83-448a-a22c-1647e0e0dbbd?width=592&height=108) _Просмотр нового тома в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ **3.11.** Убедитесь, что новый том отображается среди дисков в «Проводнике». ![14 (1)](https://content.timeweb.com/assets/6cbcb556-917c-4209-a46d-15cfc98dcc94?width=268&height=73) _Отображение нового тома в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ На этом процесс подключения к iSCSI-диску завершен. Диск готов к работе. # Инфраструктура 152-ФЗ Source: https://timeweb.cloud/docs/152-fz Согласно российскому законодательству, все компании, которые хранят, собирают или обрабатывают персональные данные своих клиентов, контрагентов или сотрудников, обязаны соблюдать Федеральный закон «О персональных данных» №152-ФЗ. Оборудование, системы и процессы обработки ПДн должны соответствовать требованиям закона, в противном случае компании могут грозить значительные штрафы или даже приостановка деятельности. Мы предлагаем сервис размещения персональных данных на серверах, соответствующих требованиям 152-ФЗ и имеющих уровень защищенности УЗ-1. **Соответствие закону 152-ФЗ** Вы можете быть уверены в полном соблюдении законодательства и не беспокоиться о прохождении проверок Роскомнадзора. **Экономия времени и средств** Вам не потребуется закупать дорогостоящее оборудование, выстраивать собственную защищенную инфраструктуру и проходить процесс аудита для нее. Наши серверы уже имеют необходимые акты соответствия и полностью готовы к работе. **Надежность и конфиденциальность** Размещенная на сервере инфраструктура полностью изолирована и доступна только вам. Все передаваемые данные надежно зашифрованы и защищены согласно всем требованиям регулятора. ## Миграция проекта на сервер 152-ФЗ Мы поможем подобрать для вашего проекта сервер оптимальной конфигурации и нужного уровня защищенности и выполнить перенос. 1. Подскажем, как определить необходимый уровень защищенности персональных данных для вашего проекта или бизнеса. 2. Подготовим инфраструктуру в соответствии с требованиями 152-ФЗ. 3. Поможем с миграцией и запуском вашего проекта на мощностях Timeweb Cloud. 4. Обеспечим полную поддержку инфраструктуры и обслуживание физического оборудования. ## Заказ сервера Серверы и инфраструктура Timeweb Cloud полностью соответствуют ФЗ-152. Заказать физический или виртуальный сервер вы можете на [нашем сайте](https://timeweb.cloud/). # Частые вопросы о серверах 152-ФЗ Source: https://timeweb.cloud/docs/152-fz/152-fz-faq В статье разбираем наиболее часто задаваемые вопросы о серверах 152-ФЗ. ### **Для чего нужны серверы, соответствующие 152-ФЗ?** Заказывая сервер 152-ФЗ в Timeweb Cloud, вы можете быть уверены, что инфраструктура, на которой размещаются ваши проекты, соответствует законодательству в отношении обработки персональных данных. Это упростит прохождение аттестации и сертификации для данных, которые вы разместите на сервере. Документы, подтверждающие соответствие нашей инфраструктуры требованиям закона, мы предоставим. ### **Кто считается оператором персональных данных?** Согласно законодательству, оператором ПДн считаются любые государственные органы, а также физические и юридические лица, которые собирают и обрабатывают персональные данные россиян. При этом не имеет значения, включены ли они в соответствующий реестр операторов ПДн Роскомнадзора. Другими словами, действие закона 152-ФЗ распространяется на любую организацию в РФ. ### **Наша компания только хранит данные клиентов, но никак их не обрабатывает. Нужно ли в данном случае исполнять 152-ФЗ?** Да, согласно 152-ФЗ, сбор персональных данных и их хранение тоже входят в понятие обработки данных. Даже если вы только собираете и храните персональные данные пользователей, не производя над ними никаких иных действий, ваши системы, процессы и инфраструктура должны соответствовать требованиям 152-ФЗ. ### **Для соблюдения 152-ФЗ достаточно просто размещать персональные данные на территории России?** Размещение на территории РФ — только одно из обязательных условий. Помимо этого, должны быть предприняты меры защиты в соответствии с требуемым уровнем защищенности, согласно приказа ФСТЭК №21. ### **Как определить нужный уровень защищенности?** Уровень защищенности зависит от того, какие данные вы обрабатываете и какие типы угроз могут быть для вас актуальны. Существует четыре типа персональных данных (общие, специальные, биометрические, иные) и три уровня угроз. Мы готовы помочь провести анализ и определить необходимый УЗ на основании общедоступной информации, а также предложим инфраструктурное решение, полностью подходящее вашей компании и отвечающее всем требованиям законодательств. ### **Обязательна ли аттестация на соответствие 152-ФЗ?** Аттестацию обязаны пройти государственные и муниципальные организации, а также частные компании в случае подключения к государственным системам. В остальных случаях аттестацию можно пройти добровольно, если это необходимо для вашей организации по каким-то причинам (например, для заключения договора). # Администрирование серверов Source: https://timeweb.cloud/docs/admin Мы предоставляем **бесплатное** администрирование серверов, на которых используются панели управления **ispmanager**, **Fastpanel** или система **BitrixVM**. Также постараемся помочь и с другими панелями управления. Для заказа администрирования необходимо создать тикет из панели управления с описанием проблемы или задачи. Время первоначального ответа на тикет составляет до 1 часа. Срок решения конкретной задачи может отличаться в зависимости от ее сложности. > [!NOTE] > Если вам нужно решить какую-либо другую задачу или вы столкнулись с неполадками в работе сервисов, [свяжитесь с поддержкой](https://timeweb.cloud/my/support/help-question). ## Настройка сервера - Все действия, выполняемые в панели timeweb.cloud/my - Добавление IP на интерфейс - Добавление и удаление диска, изменение размера диска - Восстановление пароля root - Создание swap, изменение его размера - Настройка CRON-задач при предоставлении готового скрипта - Добавление пользователей - Изменение параметров Nginx, Apache, MySQL и PHP при указании необходимых значений ## Установка ПО - Установка ПО из официальных репозиториев ОС - Установка дополнительных модулей PHP, доступных в репозиториях - Обновление ПО при наличии обновления в репозитории ## Диагностика - Диагностика недоступности сервера - Диагностика неработоспособности сайтов и сервисов на уровне проверки логов сервера или службы ## Перенос и восстановление информации - Полный перенос данных с одного облачного сервера на другой без сохранения IP-адреса - Восстановление сайтов из бэкапов, загруженных на облачный сервер - Перенос сайтов на сервер ## Поддержка панелей управления, установленных на сервере - Все действия, выполняемые в панелях Fastpanel, ispmanager и BitrixVM - Обновление панелей управления ## DDoS-защита - Подключение защищенного IP-адреса - Настройка защищенного IP-адреса в панели управления (Fastpanel, ispmanager и др.) - Настройка геоблокировки и черных и белых списков на стороне DDoS-Guard Мы **не выполняем**: - Настройку сети и нового IP-адреса внутри контейнеров Docker или статично настроенных фреймворках - Детальную настройку заголовков передачи от DDoS-Guard Сервис DDoS-защиты не включает WAF (Web Application Firewall) и не предоставляет функций, аналогичных WAF. ## С чем мы не сможем помочь Следующие задачи мы не сможем решить в рамках бесплатного администрирования: - Внесение правок в код, написание скриптов. - Настройка CMS. - Настройка, размещение и запуск Telegram- и других ботов. Рекомендуем обратиться к нашим [инструкциям](https://timeweb.cloud/tutorials/tag/%D0%B1%D0%BE%D1%82%D1%8B). - Построение архитектуры сетей и их сложная настройка. Для выделенных серверов мы предлагаем отдельные [сетевые сервисы](https://timeweb.cloud/docs/network-services). - Обновление ОС на облачном или выделенном сервере. - Лечение сайта или сервера от вирусов и проведение аудитов безопасности. - Оптимизация скорости работы сервера. - Оптимизация баз данных. - Настройка ВМ на выделенном сервере с гипервизором, кроме добавления дополнительных IP-адресов. - Диагностика работы проекта, запущенного в Docker-контейнерах. - Диагностика и настройка Windows-серверов, кроме сетей и дисков. - DevOps и построение инфраструктуры. Вы можете заказать [DevOps](https://timeweb.cloud/solutions/daas) или [построение инфраструктуры](https://timeweb.cloud/solutions/cloud-architecture-design) как отдельный сервис. # Защита от DDoS + CDN Source: https://timeweb.cloud/docs/anti-ddos Чтобы обезопасить свой проект от DDoS-атак и повысить стабильность его работы, предлагаем вам воспользоваться сервисом по защите от DDoS-атак. Сервис предоставляется нашим партнером DDoS-Guard. > [!NOTE] > Сервис доступен для серверов, размещенных в Санкт-Петербурге и Москве. ## Описание сервиса Благодаря инфраструктуре с фильтрующими узлами в разных точках мира и распределенной сети доставки контента (CDN), подключение защиты обеспечит: - L3-, L4- и L7-защиту для надежного отражения DDoS-атак. - Высокую скорость доставки контента до конечных пользователей. - Безопасность и бесперебойную работу ваших сайтов. Узлы фильтрации DDoS-Guard расположены в крупнейших дата-центрах в Нидерландах, России, Казахстане, Китае и США. Это позволяет использовать широкие каналы связи от ведущих провайдеров, а также подключаться к узлам обмена трафиком, что обеспечивает максимальную связность и оптимальную маршрутизацию трафика. Система фильтрации трафика DDoS-Guard способна обработать огромное количество трафика и отражать атаки беспрецедентной мощности. Это достигается за счет горячего и холодного резервирования всех критически важных узлов сети. Географическое распределение узлов фильтрации, дублирование и резервирование каналов связи позволяет обеспечить бесперебойную работу вашего сайта. **Сеть доставки контента (CDN)** представляет собой геораспределенные серверы, на которых кэшируется статический контент веб-ресурсов. Когда пользователь запрашивает эти данные, они загружаются именно с проксирующих серверов, что позволяет ускорить работу всего ресурса в целом. Наличие нескольких физических точек присутствия (Амстердам, Москва, Санкт-Петербург, Алматы, Гонконг, Лос-Анджелес) снижает время доставки контента посетителям из любых регионов. Подключить защиту можно как [для облачных,](https://timeweb.cloud/docs/anti-ddos/anti-ddos-for-cloud-servers) так и [для выделенных серверов](https://timeweb.cloud/docs/anti-ddos/anti-ddos-for-dedicated-servers). ## Дополнительные возможности ### Отключение или очистка кэша CDN-кэширование подключается по умолчанию при подключении DDoS-защиты. Если вы не хотите его использовать, сообщите нам — отключить кэш можно в любой момент. Мы также можем периодически сбрасывать кэш по запросу в поддержку. ### Геоблокировка Геоблокировка позволяет ограничить доступ к ресурсу из определенных стран. Она настраивается по принципу белого или черного списка: - Белый список — разрешены запросы только из стран в белом списке. Все остальные запросы отклоняются. - Черный список — разрешены запросы из любых стран, кроме тех, которые внесены в черный список. Можно включить либо белый, либо черный список и добавить в него до пяти стран. Чтобы подключить геоблокировку, отправьте запрос в поддержку и уточните детали настройки: какой режим нужно активировать: черный или белый список; какие страны в него нужно включить. Опция входит в услугу DDoS-защиты и не требует дополнительной оплаты. # DDoS-защита для облачных серверов Source: https://timeweb.cloud/docs/anti-ddos/anti-ddos-for-cloud-servers В панели управления вы можете заказать защиту от DDoS-атак для серверов на уровнях L3/L4 и L7. Подключение выполняется через панель управления или по запросу в поддержку. Услуга доступна для серверов, расположенных в Санкт-Петербурге и Москве. > [!NOTE] > Для серверов на Windows после подключения услуги потребуется самостоятельно выполнить дополнительную настройку. ## Подключение защиты для нового сервера При создании сервера в панели управления можно сразу включить DDoS-защиту. ![4fbf49d1 21fe 48ec 81c4 A11495fca5c6](https://content.timeweb.com/assets/d27dc269-ec81-46ef-8cf6-db950b916540.png?width=772&height=374) После создания сервера автоматически активируется защита L3/L4. Защиту уровня L7 можно подключить [через обращение в поддержку](https://timeweb.cloud/my/support/help-question). Она настраивается для каждого домена, поэтому в обращении укажите все домены, для которых требуется включить защиту. Если для доменов, для которых подключается защита, используется платный SSL-сертификат (не Let’s Encrypt), приложите файлы сертификата и приватного ключа (`.crt` и `.key`). При отсутствии сертификата будет установлен бесплатный Let’s Encrypt. ## Подключение защиты для существующего сервера Подключить DDoS-защиту для уже существующего сервера можно в панели управления. > [!NOTE] > Перед началом работ обязательно создайте [резервную копию](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup) сервера. Для этого: 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. Перейдите на вкладку «Сеть». 3. В блоке «Защита от DDoS» нажмите «Включить». ![Подключение защиты от DDoS](https://content.timeweb.com/assets/79e7da8a-33d0-4a1e-9d54-3e83843dc040.png?width=2254&height=1662) 4. Задайте параметры для подключения опции: - - **Конфигурация защиты**. Выберите полосу защищенного трафика: 1, 5 или 10 Мбит/с. - **Подключение защищенного IP**. Выберите один из существующих на аккаунте IP-адресов с DDoS-защитой или закажите новый, выбрав опцию «Публичный IP». - **Данные для техподдержки**. Чтобы защита заработала, новый IP необходимо настроить на сервере. Вы можете сделать это самостоятельно [по нашей инструкции](https://timeweb.cloud/docs/unix-guides/adding-ip-addresses) или разрешить доступ для поддержки — тогда настройку выполним мы. Для этого включите опцию «Предоставить доступ по SSH». Для настройки защиты на уровне L7 укажите в поле «Дополнительные сведения» все домены и поддомены, на которых она должна работать. Если на сервере установлена панель управления, нам потребуются реквизиты доступа к панели. Их можно безопасно передать в этом же поле по клику на скрепку → «Чувствительные данные». 5. Нажмите «Подключить». ![Подключение защиты от DDoS](https://content.timeweb.com/assets/1c9bdc75-f77e-44c6-b2e5-06e0f049e8e8.png?width=2202&height=1966) Будет создано автоматическое обращение в поддержку. Мы сообщим вам, как только настройка будет завершена. ## Обновление настроек После подключения защиты можно изменить полосу защищенного трафика или подключить к серверу другой защищенный IP-адрес. Для этого: 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. Перейдите на вкладку «Сеть». 3. В блоке «Защита от DDoS» нажмите «Добавить». 4. Выберите новую полосу защищенного трафика, а при необходимости укажите другой защищенный IP-адрес: выберите существующий IP с DDoS-защитой или закажите новый через опцию «Публичный IP». Затем нажмите «Обновить». После этого будет создано автоматическое обращение в поддержку. Мы сообщим вам, когда обновление защиты будет завершено. ## Особенности настройки - Подключение защиты занимает около часа; в течение этого времени сервер будет недоступен. - При подключении защиты изменится IP-адрес сервера. Для корректной работы сайтов новый IP нужно указать в A-записи доменов, которые ссылаются на ваш сервер. Это необходимо сделать на стороне держателя NS-серверов. Если домен делегирован к нам — [настройка](https://timeweb.cloud/docs/domains/dns-records-management#a-i-aaaa) выполняется в разделе «[Домены и SSL](https://timeweb.cloud/my/domains)». Обновление DNS может занять от 3 до 24 часов, поэтому сайты станут доступны не сразу. - Если для домена заказан платный SSL-сертификат, предоставьте нам файлы сертификата и закрытого ключа сертификата (.crt и .key). При отсутствии сертификата мы установим бесплатный SSL Let’s Encrypt. - Если в дальнейшем вам потребуется настроить защиту уровня L7 для других доменов или поддоменов, создайте обращение в поддержку. ## Расчет стоимости Стоимость защиты составляет 550 руб./мес. при условии, что средний входящий трафик за сутки не превышает 1 Мбит/сек. В случае превышения каждый 1 Мбит сверх этого лимита оплачивается также по стоимости 550 руб./мес. Нужно отметить, что у 95% клиентов входящий трафик не превышает 0.5 Мбит/сек. Вы можете просмотреть данные по трафику для вашего сервера [на графиках](https://timeweb.cloud/docs/cloud-servers/manage-servers/resource-stats) в панели управления. # DDoS-защита для выделенных серверов Source: https://timeweb.cloud/docs/anti-ddos/anti-ddos-for-dedicated-servers Подключить DDoS-защиту можно в любой момент использования сервера, даже если атака уже началась. ## Заказ сервиса Заказать защиту для нового сервера можно при его заказе, а для существующего — через обращение в поддержку. ### Для новых серверов При оформлении заказа выберите полосу с защитой от DDoS: ![38b2d4fc 551c 4ea8 Bdf0 53f5b95cc61f](https://content.timeweb.com/assets/91f54ae9-3f72-4ddb-9b33-a5670f411b0f.png?width=688&height=710) Для сервера будет настроена защита L3/L4. Защиту уровня L7 можно подключить [через обращение в поддержку](https://timeweb.cloud/my/support/help-question). Она настраивается для каждого домена, поэтому в обращении укажите все домены, для которых требуется включить защиту. Если для доменов, для которых подключается защита, используется платный SSL-сертификат (не Let’s Encrypt), приложите файлы сертификата и приватного ключа (.crt и .key). При отсутствии сертификата будет установлен бесплатный Let’s Encrypt. ### Для существующих серверов Чтобы подключить DDoS-защиту для уже существующего сервера, отправьте обращение в техническую поддержку. Сообщите реквизиты root-доступа к серверу и реквизиты от панели управления сервером, если они отличаются. Если у вас есть пожелания по времени проведения работ, также сообщите об этом. - Подключение защиты занимает около часа; в течение этого времени сервер будет недоступен. - При подключении защиты мы изменим IP-адрес сервера на новый IP из защищенного диапазона. Если вам удобнее изменить IP самостоятельно, сообщите нам об этом при оформлении заказа. Обратите внимание, что защита заработает только после фактической смены IP-адреса на сервере. - В связи со сменой IP будет необходимо изменить A-запись для доменов, которые ссылаются на ваш сервер. Если домены размещены на наших NS-серверах, мы можем изменить A-записи самостоятельно. После смены ресурсных записей для возобновления работы сайтов потребуется дождаться обновления записей на DNS-серверах, что может занимать от 3 до 24 часов. - Если для домена заказан платный SSL-сертификат (т.е. не Let’s Encrypt), предоставьте нам файлы сертификата и закрытого ключа сертификата (.crt и .key). При отсутствии сертификата будет установлен бесплатный SSL Let’s Encrypt. - Перед началом работ обязательно создайте резервную копию ваших данных. - Если вы добавите сайт на сервер после подключения DDoS-защиты, напишите нам в поддержку, чтобы подключить для него защиту на уровне L7. После того, как мы завершим работы, настоятельно рекомендуем изменить предоставленный root-пароль. ## Стоимость Стоимость DDoS-защиты зависит от выбранной полосы очищенного трафика: | **Полоса** | **Стоимость в месяц** | | --- | --- | | 10 Мбит/c | 2 750 руб. | | 50 Мбит/c | 11 000 руб. | | 100 Мбит/c | 22 000 руб. | В случае превышения указанного объема, мы свяжемся с вами, чтобы согласовать индивидуальные условия. # Почтовый сервис Timeweb Cloud Source: https://timeweb.cloud/docs/mail Для работы с почтой вы можете использовать почтовый кластер Timeweb Cloud — инфраструктуру готовых почтовых серверов ## Сервис «Корпоративная почта» Сервис корпоративной почты предоставляется по двум тарифам: **Стандартный** - До 500 ящиков - Максимальный размер ящика 100 ГБ - Стоимость ящика 120 руб./мес. **Корпоративный** - От 501 ящика - Размер ящика не ограничен - Стоимость ящика устанавливается индивидуально [Управлять почтовыми настройками](https://timeweb.cloud/docs/mail/mail-settings) можно в разделе «[Почта](https://timeweb.cloud/my/mailman)» вашей панели управления. Вся почта надежно защищена от спама системой [Rspamd](https://rspamd.com/). ## Опция «Почта» У части клиентов, которые подключили почту до 4 сентября 2024 года, сохраняется старое почтовое решение — опция «Почта». Она предоставляет 5 ГБ дискового пространства с неограниченным числом ящиков. Опция получает отдельные обновления, доступные корпоративной почте, но часть настроек, описанная в документации, может отсутствовать. Опция «Почта» закрыта для заказа и подключить ее нельзя. Клиенты опции «Почта» могут перейти на «Корпоративную почту» по запросу в службу поддержки. # Основные настройки почты Source: https://timeweb.cloud/docs/mail/mail-settings - [Подключение почты](https://timeweb.cloud/docs/mail/mail-settings/enable) - [Создание почтового ящика](https://timeweb.cloud/docs/mail/mail-settings/create-mailbox) - [Вход в почту](https://timeweb.cloud/docs/mail/mail-settings/login) - [Смена пароля к ящику](https://timeweb.cloud/docs/mail/mail-settings/change-password) - [Двухфакторная аутентификация](https://timeweb.cloud/docs/mail/mail-settings/2fa) - [Защита от спама](https://timeweb.cloud/docs/mail/mail-settings/antispam) - [Белый список](https://timeweb.cloud/docs/mail/mail-settings/whitelist) - [Алиасы для ящика](https://timeweb.cloud/docs/mail/mail-settings/alias) - [Сборщик писем](https://timeweb.cloud/docs/mail/mail-settings/catch-all) - [Пересылка входящих и исходящих](https://timeweb.cloud/docs/mail/mail-settings/mirroring) - [Комментарий к ящику](https://timeweb.cloud/docs/mail/mail-settings/comment) - [Автоответчик](https://timeweb.cloud/docs/mail/mail-settings/autoreply) - [Расширение почтовой квоты](https://timeweb.cloud/docs/mail/mail-settings/quota) - [Добавление ящиков в проекты](https://timeweb.cloud/docs/mail/mail-settings/add-to-project) - [Удаление ящика](https://timeweb.cloud/docs/mail/mail-settings/delete-mailbox) # Подключение почты Source: https://timeweb.cloud/docs/mail/mail-settings/enable Чтобы начать работу с «Корпоративной почтой», перейдите в раздел «Почта» своей панели управления и выберите тариф. ## Начало работы **Если сейчас вам нужно меньше 500 ящиков:** 1. Перейдите в раздел [«Почта»](https://timeweb.cloud/my/mailman). 2. Нажмите «Подключить». - Если на балансе недостаточно средств для оплаты хотя бы одного ящика (120 руб.), вас переадресует на страницу оплаты. Пополните баланс. - Если на аккаунте нет ни одного домена, вас переадресует на страницу добавления домена. Добавьте существующий домен или зарегистрируйте новый. > [!NOTE] > Если домен делегирован на сторонние NS-серверы, настройте его [по инструкции](https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-settings-for-timeweb-cloud). Теперь вы можете [создавать ящики](https://timeweb.cloud/docs/mail/mail-settings/create-mailbox) и работать с почтой. ![Корпоративная Почта 06 11 2026 01 42 Pm](https://content.timeweb.com/assets/2fef2e47-4034-4422-aef0-6e43bb1b8419.png?width=1571&height=717) **Если вам нужно больше 500 ящиков:** 1. Перейдите в раздел [«Почта»](https://timeweb.cloud/my/mailman). 2. Кликните «Узнать стоимость» в блоке «Корпоративный тариф». Мы свяжемся с вами и согласуем стоимость сервиса. ![Корпоративная Почта 06 11 2026 01 45 Pm](https://content.timeweb.com/assets/8c34a709-1824-4192-b73f-cdd11acbfdb8.png?width=1562&height=1263) Если вы подключили тариф «Стандартный», но со временем количество ящиков превысило 500 штук, напишите нам, чтобы перейти на тариф «Корпоративный». Если вы уже пользуетесь опцией «Почта», но хотите перейти на «Корпоративную почту» — напишите в поддержку, мы поможем перевести ваши ящики на новый сервис. ## Перенос данных Если вы пользуетесь почтой у другого провайдера, вы можете [автоматически перенести почту](https://timeweb.cloud/docs/mail/migration) в наш сервис. Если вам нужна помощь с переносом — вы можете запросить перенос из раздела «Почта» по клику на «Перенести почту». ![Корпоративная Почта 06 11 2026 01 46 Pm](https://content.timeweb.com/assets/10e83497-a548-415c-804d-9ad9c0327bfa.png?width=1229&height=727) ## Демо-доступ Если вы хотите протестировать сервис перед оплатой, кликните «Попробовать» в разделе «Почта» — мы свяжемся с вами и предоставим тестовый доступ, чтобы вы смогли поработать с «Корпоративной почтой» и оценить ее возможности. ![Без Названия (2)](https://content.timeweb.com/assets/c04deb5f-9a22-4a2a-8750-ebf1ff066263.png?width=1206&height=719) # Создание почтового ящика Source: https://timeweb.cloud/docs/mail/mail-settings/create-mailbox Вы можете создавать ящики, заполняя данные вручную в панели управления, или путем загрузки CSV-файла — это удобно для массового создания ящиков. Вручную 1. Перейдите в раздел «Почта» и нажмите «Создать ящик». - - Если на аккаунте еще нет ни одного ящика, кликните «Подключить» в разделе «Почта». 2. В открывшемся окне выберите домен или поддомен. 3. Выберите проект, в который нужно добавить ящики. Эту настройку всегда можно [изменить](https://timeweb.cloud/docs/mail/mail-settings/add-to-project) позднее. ![31c564b5 95c7 404f 8f4f 401c359a5c07](https://content.timeweb.com/assets/c7bf1b3a-7b88-4c7b-82fc-881e6ae83d31.png?width=1550&height=869) 4. Заполните данные почтовых ящиков: - «Название ящика» — часть до знака `@`. Обязательное поле. Разрешено использовать только латинские буквы (даже для кириллического домена), цифры и символы `.`, `-` и `_`. - «Пароль» — пароль к ящику. Обязательное поле. Можно задать свой пароль или сгенерировать его. Разрешено использовать цифры, латинские буквы в верхнем и нижнем регистре, а также специальные символы (кроме `&`). - «ФИО» — данные владельца ящика. Необязательное поле. Разрешено использовать буквы, цифры, а также символы `.`, `-` и `'`. Если какие-то поля заполнены некорректно, в панели отобразится сообщение об этом. 5. Нажмите кнопку «Создать x ящиков», чтобы завершить создание почтовых ящиков. Через CSV 1. Перейдите в раздел «Почта» и нажмите «Создать ящик». - - Если на аккаунте еще нет ни одного ящика, кликните «Подключить» в разделе «Почта». 2. В открывшемся окне выберите домен или поддомен. 3. Выберите проект, в который нужно добавить ящики. Эту настройку всегда можно [изменить](https://timeweb.cloud/docs/mail/mail-settings/add-to-project) позднее. ![00b2f03d 33f3 493d B119 D51de5ca26c7](https://content.timeweb.com/assets/f067d14a-2c5f-4f76-ae3a-36dcb49e49af.png?width=1565&height=868) 4. Скачайте шаблон CSV-файла, нажав на ссылку «Скачайте шаблон». ![71de9a11 1618 4e95 8706 9ade07a4b9c5](https://content.timeweb.com/assets/f69858c8-a07a-4d41-9df6-4c8912ff5388.png?width=1565&height=868) 5. Заполните шаблон, указав почтовые ящики, которые необходимо создать. > [!NOTE] > Не изменяйте первую строку в шаблоне. 6. Нажмите «Загрузить список ящиков» и загрузите итоговый CSV-файл в панель. ![655c2fd4 9ee7 447e 851b 576fd891fa3b](https://content.timeweb.com/assets/4be4cc18-52e1-4f77-95e8-3e450e6470ea.png?width=1553&height=868) После загрузки заполненные вами данные отобразятся в форме. Если где-то были использованы недопустимые символы, эти поля будут подсвечены красным. 7. Нажмите кнопку «Создать x ящиков», чтобы завершить создание почтовых ящиков. Ящики будут созданы мгновенно и отобразятся в разделе «Почта». # Вход в почту Source: https://timeweb.cloud/docs/mail/mail-settings/login Работать с почтой можно через [интерфейс Timeweb Mail](https://mail.timeweb.com/login) или любой почтовый клиент (предварительно его необходимо [настроить](https://timeweb.cloud/docs/mail/email-clients-configuration)). Для входа используйте имя ящика и его пароль. Чтобы перейти в Timeweb Mail из панели управления, наведите курсор на нужный ящик и кликните на иконку входа. ![Faacccac A371 4bbd 8cd4 21154f5c38bc](https://content.timeweb.com/assets/8c8cc8c6-907d-437f-ae90-d2c1c0457233.png?width=1558&height=744) # Смена пароля к ящику Source: https://timeweb.cloud/docs/mail/mail-settings/change-password Чтобы изменить пароль к любому из ящиков: 1. Перейдите в раздел «Почта». 2. Выберите из списка нужный домен или поддомен. 3. Наведите курсор на строку с нужным ящиком и кликните на значок шестеренки. ![371c7026 Ef19 4eaa 8cac Cf2d4f4cace8](https://content.timeweb.com/assets/eccd2bd8-84fa-45f9-8b8b-7fdc8dc7769a.png?width=1553&height=745) 4. На вкладке «Безопасность» нажмите «Изменить» в блоке «Смена пароля». ![B27f3684 6798 4349 94f9 501bc1bca9d2](https://content.timeweb.com/assets/2091d05e-a054-4c55-8766-a870aaf96836.png?width=1545&height=813) 5. Укажите новый пароль и нажмите «Сохранить». # Двухфакторная аутентификация Source: https://timeweb.cloud/docs/mail/mail-settings/2fa Для повышения безопасности почты вы можете включить обязательную двухфакторную аутентификацию (2FA) для всего почтового домена. В отличие от настройки 2FA в интерфейсе [Timeweb Mail](https://mail.timeweb.com/), которую владелец ящика может самостоятельно [включить или выключить](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/2fa), при подключении 2FA на уровне домена она становится обязательной для всех пользователей почтовых ящиков и отказаться от нее невозможно. > [!NOTE] > Обратите внимание, что настройка 2FA затронет только вход в интерфейс Timeweb Mail. Она не будет применяться при подключении к ящику через SMTP/IMAP — например, в сторонних почтовых клиентах. После включения 2FA, при первом логине в почту пользователь ящика увидит запрос на привязку номера телефона или Telegram-аккаунта (если ни то, ни другое, еще не привязано), после чего сможет войти в ящик по коду, полученному в смс или мессенджере. В дальнейшем код будет нужно вводить при каждом логине в почту. При необходимости вы можете в любой момент отключить 2FA для домена. ## Включение 2FA Чтобы включить обязательную двухфакторную аутентификацию: 1. Перейдите в раздел «Почта» и выберите нужный домен. 2. Нажмите «Настроить домен». ![F87441be 4bac 4950 9ac4 7de2597d3b96](https://content.timeweb.com/assets/dc5fba01-f463-45d7-a403-7ce68c0f8d8b.png?width=1566&height=802) 3. На вкладке «Безопасность» нажмите «Управлять» в блоке «Двухфакторная аутентификация». ![Fa5592a6 999e 47fe B904 E40d8fd0ad58](https://content.timeweb.com/assets/fad4e050-8762-4422-a1f7-c63fadddc448.png?width=1550&height=809) 4. Включите опцию «2FA для домена». ![9ee7f3c2 Dc3a 48d1 8883 C4de25a06a5a](https://content.timeweb.com/assets/102f779d-23db-41a7-873f-c8f17773c642.png?width=1533&height=678) Отключить двухфакторную аутентификацию можно здесь же. ## Просмотр настроек 2FA для ящика Ящики, для которых включена двухфакторная аутентификация, будут отмечены специальным значком в списке ящиков в разделе «Почта». При наведении курсора на значок вы увидите, включена ли 2FA администратором домена: ![4179c690 48dd 46d1 Be82 93b4d40986b0](https://content.timeweb.com/assets/0e25cd54-5840-4076-aae0-cb21c4ab63a9.png?width=1131&height=373) Или пользователем ящика: ![219d43de 18dd 41f2 A86d B4bd469f6233](https://content.timeweb.com/assets/0b2a2e90-397b-45bd-8a28-42667e73cbc6.png?width=1100&height=418) Также просмотреть настройки 2FA, включая привязанный номер телефон и/или аккаунт Telegram, можно в настройках ящика. 1. Перейдите в раздел «Почта» и выберите нужный домен. 2. Кликните на значок шестеренки у нужного ящика. ![7f79e8dc Da81 4bff Bebf 00ee1f8b8fb6](https://content.timeweb.com/assets/85b63725-3f48-48dd-9dc6-7e98809e557b.png?width=1556&height=803) 3. Перейдите на вкладку «Безопасность» и нажмите «Управлять» в блоке «Двухфакторная аутентификация». Здесь отобразится статус 2FA (включена пользователем или администратором для всего домена) и привязанные идентификаторы. ![7711bee5 84ae 46e7 A676 2c724b7ac49a](https://content.timeweb.com/assets/ce833437-389b-4b41-936e-8f4d88eb7d47.png?width=1540&height=802) В настройках Timeweb Mail пользователь может добавить [несколько телефонов или Телеграм-аккаунтов](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/2fa#neskolko-sposobov-podtverjdeniya) для получения кодов. Все они будут отображаться в панели управления. ## Сброс привязанного номера или аккаунта Вы можете отвязать номер телефона или Telegram-аккаунт, куда приходят коды для двухфакторной аутентификации. Действие доступно и в том случае, если пользователь сам включил 2FA в интерфейсе Timeweb Mail. Чтобы отвязать номер/аккаунт: 1. Перейдите в раздел «Почта» и выберите нужный домен. 2. Кликните на значок шестеренки у нужного ящика. ![7f79e8dc Da81 4bff Bebf 00ee1f8b8fb6](https://content.timeweb.com/assets/85b63725-3f48-48dd-9dc6-7e98809e557b.png?width=1556&height=803) 3. На вкладке «Безопасность» нажмите «Управлять» в блоке «Двухфакторная аутентификация». 4. Кликните на три точки у номера телефона и нажмите «Сбросить» или «Отвязать». ![31b08285 2279 4315 80eb A44b105a756d](https://content.timeweb.com/assets/62940b5d-812e-4ed2-8908-10c6c061724d.png?width=1540&height=802) 5. Подтвердите действие. При следующем логине в почту пользователь увидит запрос на привязку телефона или Телеграма и сможет указать актуальные данные. # Брендирование почты Source: https://timeweb.cloud/docs/mail/mail-settings/branding Брендирование позволяет настроить веб-интерфейс почты в корпоративном стиле вашей компании. Вы можете настроить собственный адрес для входа в почтовый сервис, загрузить свой логотип и фавикон и задать название страницы. Настройки будут применены для всех почтовых ящиков, созданных на этом домене. > [!NOTE] > Брендированные настройки применяются только в веб-интерфейсе при входе через настроенный вами адрес. > > В мобильном приложении Timeweb Mail или при входе через [mail.timeweb.com](http://mail.timeweb.com) они недоступны. ## Ссылка для входа в почту Для брендирования почты необходимо создать поддомен вида `mail.example.com`. Пользователи смогут использовать его для входа в почту. Адрес `mail.timeweb.com`, который используется для входа по умолчанию, останется доступен и после создания собственного поддомена. Чтобы создать поддомен: 1. Перейдите в раздел «Почта» и выберите в списке нужный домен. 2. Нажмите «Настроить домен». ![Настройка домена](https://content.timeweb.com/assets/f6dc1302-63ec-4990-8ea7-5b53c0417176.png?width=2164&height=1488) 3. Перейдите на вкладку «Брендирование». 4. В блоке «Вход в почту» нажмите «Создать поддомен». ![Создание поддомена](https://content.timeweb.com/assets/013830c7-db5e-4168-802b-dd2558740f34.png?width=2102&height=1514) Если домен на наших NS Если домен делегирован на наши NS-серверы, всю настройку мы выполним автоматически: - создадим поддомен `mail`, - укажем CNAME-запись, - выпустим SSL Let’s Encrypt. Если вы хотите использовать собственный SSL, нажмите «Загрузить свой сертификат» и загрузите файлы сертификата и ключа. Если домен на сторонних NS Если домен делегирован на сторонние NS, самостоятельно внесите следующие изменения у держателя NS-серверов: 1. Создайте поддомен `mail`. 2. Укажите для него CNAME-запись: ```shell brand-mail.timeweb.com ``` Обновление DNS-записей может занять от 15 минут до 24 часов, после чего мы автоматически выпустим SSL Let’s Encrypt для вашего поддомена. ## Визуальное оформление После того как ссылка для входа создана, вы можете настроить внешний вид почтового интерфейса, а именно: - Загрузить собственный логотип. - Загрузить фавикон. - Настроить заголовок страницы, который будет отображаться в имени вкладки. > [!NOTE] > Брендирование не дает возможности задать только светлую или только темную тему оформления. Пользователи всегда смогут переключаться между ними в интерфейсе почты. ### Логотип Позволяет отображать ваш логотип в интерфейсе почтового ящика вместо логотипа Timeweb Mail. > [!NOTE] > Можно установить отдельные логотипы для светлой и темной темы. Если вы планируете использовать один и тот же логотип в обеих темах, достаточно загрузить его в одной из них. Чтобы загрузить логотип: 1. В блоке «Настройки внешнего вида» перейдите на вкладку «Логотип». 2. Нажмите «Выбрать новый» и загрузите файл со своего устройства. 3. Переключитесь на вкладку с другой темой оформления и загрузите логотип для нее. Требования к изображениям: - Формат `.png`, `.jpg` или `.svg`. - Рекомендуемый размер: 164 x 24 пикселя. - Не больше 5 МБ. ### Favicon Позволяет настроить иконку, которая будет отображаться в заголовке браузерной вкладки. Чтобы загрузить фавикон: 1. В блоке «Настройки внешнего вида» перейдите на вкладку «Favicon и заголовок». 2. Нажмите «Выбрать новый» и загрузите файл со своего устройства. Требования к изображению: - Формат `.fav`, `.png`, `.jpg` или `.svg`. - Размер 40 x 40 пикселей. - Не больше 1 МБ. ### Заголовок Позволяет настроить заголовок страницы, который будет отображаться во вкладке браузера. Чтобы задать собственный заголовок: 1. В блоке «Настройки внешнего вида» перейдите на вкладку «Favicon и заголовок». 2. Введите нужное значение в поле «Заголовок вкладки». Заголовок может содержать: - Русские и английские буквы - Знаки препинания - Специальные символы Длина заголовка — не более 60 символов. ## Доступ к разделам и функциям Вы можете настроить, какие разделы интерфейса (например, «Есть идея» или «Сообщить о баге») и дополнительные функции (ИИ-помощники) должны быть доступны пользователям почты. Для этого: 1. В блоке «Настройки внешнего вида» перейдите на вкладку «Разделы и функции». 2. Включите или выключите необходимые опции. # Защита от спама Source: https://timeweb.cloud/docs/mail/mail-settings/antispam Для защиты от спама мы используем систему Rspamd. Спам-фильтр работает по следующему принципу: - Сообщения, которые наш фильтр явно определяет как спам, отбрасываются. - Сообщения, которые подозреваются как спам, будут обработаны согласно вашим настройкам для ящика: перемещены в папку «Спам» или помечены как спам. - Сообщения в папке «Спам» хранятся в течение 30 дней, после чего удаляются. По умолчанию защита от спама включена для любого создаваемого ящика. При необходимости вы можете включить или отключить эту опцию в дальнейшем. 1. Перейдите в раздел «Почта». 2. Выберите из списка нужный домен. 3. Наведите курсор на строку с нужным ящиком и кликните на значок шестеренки. ![F232f929 C3f8 4193 Be26 8fc7401527df](https://content.timeweb.com/assets/4a0230c6-e8c1-44c1-9a95-02b2b1cac867.png?width=1549&height=818) 4. Перейдите на вкладку «Безопасность» и нажмите «Настроить» в блоке «Защита от спама». ![9ae6739d 76f8 4701 860c 473499eac66f](https://content.timeweb.com/assets/b4dcdab5-71ab-4623-92ee-988104a9606f.png?width=1543&height=803) 5. Задайте нужные параметры спам-фильтра: - Включите или выключите защиту от спама. - Выберите, что делать с письмами, определенными как спам: перемещать в папку «Спам», удалять, пересылать в другой ящик и др. - Настройте белый список. ![Bfde6a78 C4a0 40e9 85c5 89912c89a75b](https://content.timeweb.com/assets/d7605d14-84b1-4cca-b78f-62676039dc9b.png?width=1538&height=802) # Белый список Source: https://timeweb.cloud/docs/mail/mail-settings/whitelist Вы можете добавить определенных адресатов в белый список — в этом случае письма от них не будут проверяться на спам и всегда будут доставляться в почтовый ящик. Чтобы добавить ящик в белый список: 1. Перейдите в раздел «Почта». 2. Выберите из списка нужный домен. 3. Наведите курсор на строку с нужным ящиком и кликните на значок шестеренки. 4. Перейдите на вкладку «Безопасность» и нажмите «Настроить» в блоке «Защита от спама». 5. Последовательно добавьте нужные ящики, нажимая после каждого «Enter» или значок плюса, и сохраните изменения. ![Bb447988 1310 48d4 94a6 C41e94bef72f](https://content.timeweb.com/assets/3b3289a6-f2c0-48ab-9dd8-968132bf6cb9.png?width=1553&height=869) # Алиасы для ящика Source: https://timeweb.cloud/docs/mail/mail-settings/alias Алиасы — это псевдонимы для существующего ящика, которые позволяют получать и отправлять почту, не используя реальное имя ящика. Они помогают сохранить приватность основного ящика, когда это необходимо, а также работать с разными кейсами, не создавая дополнительные ящики. Например, можно задать псевдонимы `sales@` и `support@` и использовать их для продаж и поддержки пользователей. При этом вся почта будет собираться на основной ящик, а отвечать на письма вы сможете от нужных псевдонимов. > [!NOTE] > Отправлять почту с алиасов можно только через веб-интерфейс Timeweb Mail. В сторонних почтовых клиентах эта опция в настоящий момент не поддерживается. Алиасы не имеют логина и пароля, и чтобы просмотреть почту, полученную на адрес алиаса, необходимо залогиниться в основной ящик. Для одного ящика можно создать до 10 алиасов. Опция предоставляется бесплатно. ## Создание алиасов Чтобы создать алиас: 1. Перейдите в раздел «Почта». 2. Кликните на значок шестеренки у нужного ящика, чтобы перейти к настройкам. ![F232f929 C3f8 4193 Be26 8fc7401527df](https://content.timeweb.com/assets/4a0230c6-e8c1-44c1-9a95-02b2b1cac867.png?width=1549&height=818) 3. Нажмите «Настроить» в блоке «Алиасы». ![3832c042 1bcc 4551 9583 5e558001f007](https://content.timeweb.com/assets/a6eb5759-93b1-43e1-bf04-32a36a402578.png?width=1550&height=820) 4. Укажите нужный алиас (часть до `@`) и нажмите Enter для его добавления. ![4d0fab1c De29 4eaf 8fe6 866cdca614b8](https://content.timeweb.com/assets/e59d184a-84fb-4962-8587-944b74d16543.png?width=1550&height=810) 5. Сохраните изменения. ## Отправка почты с алиасов Отправлять почту с алиасов можно только через Timeweb Mail. Для этого при создании письма выберите нужный ящик: ![88660cf0 6c5e 41d5 B0e1 183a46bb1f64](https://content.timeweb.com/assets/687fcbe5-0a79-4098-ab43-5a29b889262e.png?width=1302&height=869) # Сборщик писем Source: https://timeweb.cloud/docs/mail/mail-settings/catch-all Сборщик писем — это опция, которая позволит получать письма, отправленные на несуществующие адреса на конкретном домене. Например, если пользователь отправит письмо на `sales@mydomain.ru`, а ящика `sales@` не существует, такое письмо придет на выбранный вами ящик на этом же домене. Чтобы включить сборщик писем: 1. Перейдите в раздел «Почта». 2. Выберите нужный домен в выпадающем списке. 3. Кликните «Настроить домен». ![A46fb36b 8604 4af8 Abf1 A855a03ef662](https://content.timeweb.com/assets/0c418991-efa3-4646-b545-783548aeb5ea.png?width=1549&height=818) 4. Кликните «Настроить» в блоке «Сборщик писем». ![Cea0215d 1de2 4ee2 9371 8065781d9ea9](https://content.timeweb.com/assets/f94dbe1d-ae82-4dd0-8c39-a55603da22c6.png?width=1546&height=812) 5. В выпадающем списке выберите ящик, на который хотите собирать почту, и сохраните изменения. ![92d15cac 3a4b 4187 B9cd 54dd6962ebaf](https://content.timeweb.com/assets/1b1a8243-2d38-4e1e-afc3-dceac5900851.png?width=1549&height=810) # Пересылка входящих и исходящих Source: https://timeweb.cloud/docs/mail/mail-settings/mirroring Вы можете включить дублирование писем, поступающих на конкретный ящик и/или отправленных с него, на другую почту. 1. Перейдите в раздел «Почта» и выберите нужный домен в выпадающем списке. 2. Кликните на значок шестеренки у нужного ящика, чтобы перейти к настройкам. ![Cd787972 B274 4c93 B1e7 C4088dd6924c](https://content.timeweb.com/assets/d0916a51-8dc5-4af2-be63-296b42d1909a.png?width=1557&height=741) 3. Кликните «Настроить» в нужном блоке: «Пересылка входящих» или «Пересылка исходящих». ![D22fd3c0 7d2b 452b 85b3 465d2fbf3e67](https://content.timeweb.com/assets/f4c9cedc-0fad-41ad-8422-65f8130408f4.png?width=1556&height=813) 4. Включите опцию пересылки. 5. Укажите ящик или ящики, на которые нужно выполнять пересылку. 6. Для пересылки входящих также отметьте, нужно ли оставлять письма в оригинальном ящике либо удалять их. 7. Сохраните изменения. ![261fddcf F4a2 4943 8447 82d132c7b283](https://content.timeweb.com/assets/d8a03ad1-a2d5-4438-af40-ca1642b822ae.png?width=1551&height=812) # Комментарий к ящику Source: https://timeweb.cloud/docs/mail/mail-settings/comment Вы можете добавить, изменить или удалить комментарий к почтовому ящику, указав в нем нужную информацию, например, имя владельца ящика. Эти комментарии видны только в панели управления. ![5db7775d 40aa 48b7 93bc E0fa36bf34df](https://content.timeweb.com/assets/441054d6-2bef-46f4-8b22-e82fed85d991.png?width=1551&height=743) Чтобы настроить комментарий: 1. Перейдите в раздел «Почта». 2. Выберите из списка нужный домен. 3. Наведите курсор на нужный ящик и кликните на значок шестеренки. 4. Кликните «Изменить» в блоке «Общие настройки». ![2fcef3f0 Aa97 4ae5 Bed5 7e57abe2d8fd](https://content.timeweb.com/assets/abaa9205-947a-4f6d-a187-a45a7292382a.png?width=1556&height=813) 5. Укажите комментарий к почтовому ящику и сохраните изменения. # Автоответчик Source: https://timeweb.cloud/docs/mail/mail-settings/autoreply Вы можете включить автоответчик, чтобы все письма, поступающие на определенный ящик, получали автоматический ответ. > [!NOTE] > Владелец ящика может самостоятельно включить автоответчик [в настройках Timeweb Mail](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/emails#nastrojka-avtootvetchika), а также отключить его, даже если автоответчик был включен администратором через панель Timeweb Cloud. Чтобы настроить автоответчик: 1. Перейдите в раздел «Почта». 2. Выберите из списка нужный домен. 3. Наведите курсор на нужный ящик и кликните на значок шестеренки. 4. Кликните «Изменить» в блоке «Общие настройки». 5. Включите опцию автоответчика. 6. Задайте нужную тему сообщения и его текст. 7. Сохраните изменения. ![49d367fa 33f3 4ff4 Bb5d Ecfdaaadafba](https://content.timeweb.com/assets/8090e120-172d-4e1c-8d60-335983d616f6.png?width=1547&height=1162) # Расширение почтовой квоты Source: https://timeweb.cloud/docs/mail/mail-settings/quota Каждому почтовому ящику по умолчанию выделяется 100 ГБ квоты. Сейчас возможность увеличения квоты через панель управления недоступна. Если вам необходимо расширить лимит, [обратитесь в поддержку](https://timeweb.cloud/my/support/help-question). # Добавление ящиков в проекты Source: https://timeweb.cloud/docs/mail/mail-settings/add-to-project Вы можете добавлять почтовые ящики в [проекты](https://timeweb.cloud/docs/projects), чтобы логически связывать их с другими сервисами на аккаунте. Добавить ящик в нужный проект можно как [при создании ящика](https://timeweb.cloud/docs/mail/mail-settings/create-mailbox), так и в дальнейшем в его настройках: 1. Перейдите в раздел «Почта». 2. Выберите из списка нужный домен. 3. Наведите курсор на нужный ящик и кликните на значок шестеренки. 4. Кликните «Изменить» в блоке «Проекты». ![B5153cda F01d 48fd A191 0c3e2077be5d](https://content.timeweb.com/assets/a93aa1cf-1a2a-4dc0-bcb2-e799bacf4888.png?width=1555&height=921) 5. Выберите нужный проект и сохраните изменения. # Удаление ящика Source: https://timeweb.cloud/docs/mail/mail-settings/delete-mailbox Для удаления почтового ящика нажмите на три точки рядом с ящиком и выберите «Удалить ящик». Подтвердите действие. ![1fa2696d C48f 4d87 B280 7d4b12a67957](https://content.timeweb.com/assets/2ed0d692-b4fa-4d91-9481-63e10523fc42.png?width=1562&height=714) # Оплата, блокировка и удаление данных Source: https://timeweb.cloud/docs/mail/billing Оплата за почтовый сервис списывается, пока на аккаунте есть хотя бы один почтовый ящик. Списания почасовые. Если на балансе недостаточно средств, работа сервиса будет приостановлена до поступления необходимой суммы. Все данные доступны в течение 7 дней с момента блокировки. Чтобы остановить списания, необходимо удалить все ящики из раздела «Почта». При удалении почтового ящика удаляется всё его содержимое, без возможности восстановления. # Настройки SMTP/POP3/IMAP для почтовых клиентов Source: https://timeweb.cloud/docs/mail/email-clients-configuration Используйте следующие параметры для настройки почтового клиента (например, MS Outlook, Thunderbird, The Bat!) для работы с почтовым кластером Timeweb Cloud. > [!NOTE] > Подробные инструкции для конкретных почтовых клиентов можно найти в [этой статье](https://timeweb.cloud/docs/mail/configuring-email-clients). ### **Сервер** **отправки** **почты** Используется протокол SMTP. Адрес сервера — `smtp.timeweb.ru` Необходимо использовать SMTP-авторизацию: - Логин (имя пользователя) — адрес электронной почты; - Пароль — пароль от почтового ящика; - Порт без шифрования — 25 или 2525; - Порт STARTTLS — 587; - Порт SSL — 465. ### **Сервер приема** **почты** Можно использовать протокол POP3 или IMAP. > [!NOTE] > При использовании POP3 письма будут по умолчанию удаляться с почтового сервера после загрузки почтовым клиентом. > > При использовании IMAP удаление писем с почтового сервера не происходит — письма на сервере и почтовом клиенте синхронизируются. Для POP3: - Адрес сервера — `pop3.timeweb.ru` - Порт без шифрования (STARTTLS) — 110 - Порт SSL — 995 Для IMAP: - Адрес сервера — `imap.timeweb.ru` - Порт без шифрования (STARTTLS) —143 - Порт SSL — 993 # Ограничения почты Source: https://timeweb.cloud/docs/mail/mail-limitations При использовании почтового кластера Timeweb Cloud (то есть ящиков, созданных в разделе «Почта» вашей панели управления) действует ряд ограничений: на количество отправляемых писем, размер письма, число получателей и др. Эти ограничения касаются любого аккаунта Timeweb Cloud с подключенным почтовым сервисом, вне зависимости от того, какой основной сервис вы используете (облачные серверы, выделенные серверы, DBaaS и т.д.). Также существует ограничение на отправку писем с выделенных серверов с администрированием. ## Ограничения почтового кластера Timeweb - Запрещено использование несуществующих или поддельных обратных адресов электронной почты при отправке электронных писем. - Запрещена подмена отправителя: e-mail авторизации должен совпадать с e-mail отправителя. - Установлены ограничения переадресаций: - отключены перекрестные пересылки (такие как «А -> B, B -> A»); - отключены все пересылки после первой (в цикле «A -> B -> C» пересылка «B -> C» будет проигнорирована). - Максимальный размер почтового сообщения — 35 МБ. - При использовании [mail.timeweb.com](https://mail.timeweb.com/) размер [вложения может достигать 1 ГБ](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/emails#vlojeniya-v-pismah). - Максимальное количество получателей сообщения — не более 100. - Максимальное количество писем, отправляемых со всех почтовых ящиков, — не более 2000 в сутки и не более 5 в секунду. - При использовании веб-интерфейса [roundcube.timeweb.ru](https://roundcube.timeweb.ru/) максимальное количество получателей письма — 10. ## Ограничения на отправку писем с сервера - Максимальное количество писем, отправляемых с выделенного сервера с нашим администрированием — не более 10000 в час. > [!NOTE] > Отправка писем с облачного сервера или выделенного сервера без администрирования никак не ограничивается с нашей стороны. # Получение технических заголовков Source: https://timeweb.cloud/docs/mail/getting-email-headers Технические заголовки позволяют получить информацию о движении письма от отправителя к получателю (например, сведения о почтовых серверах, через которые проходило письмо, дате, времени отправки и пр.). Ниже приводим инструкции, как получить технические заголовки в разных почтовых сервисах или клиентах. ## Roundcube В интерфейсе Roundcube выделите нужное письмо, кликните на кнопку «Еще» (три точки) и выберите «Исходный текст». ![12fe3715 935d 4c73 96ec E6c265e16022](https://content.timeweb.com/assets/5d5e0187-e8c7-4171-b930-c7c4e32bbc7d?width=697&height=461) _Получение технических заголовков в интерфейсе [Roundcube](https://roundcube.net/)_ ## Timeweb MAIL Чтобы посмотреть заголовки письма в веб-интерфейсе mail.timeweb.com: 1. Выберите в списке нужное письмо. 2. Кликните на значок с тремя точками в правом верхнем углу. 3. Кликните «Оригинал письма». ![5a70d93b Cfc1 4ad2 8f0c 5a2045704f34](https://content.timeweb.com/assets/1119aedd-8826-48f1-9841-4485946e2731?width=933&height=662) _Получение технических заголовков в интерфейсе [Timeweb MAIL](https://mail.timeweb.com/)_ ## Gmail Откройте письмо и нажмите на три точки справа сверху. В меню выберите «Показать оригинал» / «Show original»: ![1ebc9b28 166e 4fc2 9a9a 53667bb19344](https://content.timeweb.com/assets/4ecdf06b-f12d-4f99-ba88-173bbcaa079c.png?width=470&height=692) _Получение технических заголовков в интерфейсе [Gmail](https://www.gmail.com/)_ ## Yandex В интерфейсе Яндекса откройте нужное письмо, кликните на три точки и выберите «Свойства письма»: ![99664fc1 185e 4172 8ba7 1d1c6e9c0b9a](https://content.timeweb.com/assets/9ed48eb8-579a-4ab0-a68c-12692814bd4b.png?width=313&height=544) _Получение технических заголовков в интерфейсе [Яндекс Почты](https://mail.yandex.ru/)_ ## Mail.ru Откройте нужное письмо, кликните на три точки справа вверху и выберите «Еще», а затем — «Служебные заголовки». ![D9738187 Ce25 4e48 B9fc B1a9955df53c](https://content.timeweb.com/assets/90598a54-c536-4daf-9b82-20e67d217064.png?width=310&height=719) _Получение технических заголовков в интерфейсе [Почты Mail.ru](https://mail.ru/)_ ## Thunderbird Выделите нужное письмо в списке и нажмите CRTL + U. Откроется новое окно с заголовками. Либо откройте письмо, кликните на «Больше» справа вверху и выберите «Показать исходник»: ![9d93cad2 58d3 4f2c 80ce Ab7d9482ebb6](https://content.timeweb.com/assets/59cfae68-7934-401c-b91d-e1863b677fc0.png?width=300&height=394) _Получение технических заголовков в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/)_ ## The Bat! Для получения заголовков в меню «Вид» кликните на «Показывать заголовки»: ![Thebat](https://content.timeweb.com/assets/890736ee-c8a5-49d1-be04-1c1251103f48?width=323&height=277) _Получение технических заголовков в интерфейсе [The Bat!](https://www.ritlabs.com/en/products/thebat/)_ ## Outlook Кликните дважды на нужное письмо, после чего перейдите в меню «Файл» и выберите «Свойства»: ![Outlook 1](https://content.timeweb.com/assets/4c2803da-3154-446d-9852-b2f406c3bedb?width=708&height=637) _Получение технических заголовков в интерфейсе [Microsoft Outlook](https://www.microsoft.com/ru-ru/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook)_ Заголовки будут доступны в разделе «Заголовки Интернета». ## Outlook Express Найдите в списке писем нужное письмо, кликните на нем правой кнопкой мыши и выберите «Свойства». Далее перейдите на вкладку «Параметры». ## Apple Mail В Apple Mail выделите в списке нужное письмо, далее в меню «Вид» выберите «Сообщение» — «Все заголовки»: ![Ap Mail](https://content.timeweb.com/assets/70aedbf3-8573-4baa-ace6-774dc07e0697?width=543&height=404) _Получение технических заголовков в интерфейсе [Apple Mail](https://www.apple.com/)_ # Автоматический перенос почты в Timeweb Cloud Source: https://timeweb.cloud/docs/mail/migration Если вы уже пользуетесь сервисом корпоративной почты другого провайдера (например, Yandex, Mail.ru, VK и др.), вы можете перенести к нам почтовые ящики со всем их содержимым. Перенос можно запустить как в случае, если ящиков еще нет в нашей панели, так и если они уже существуют в панели Timeweb Cloud. > [!NOTE] > Некоторые провайдеры, в том числе Mail.ru, могут ограничить доступ к почте, как только вы поменяете MX-серверы домена. Поэтому мы рекомендуем **сначала выполнить импорт**, а уже потом [настраивать](https://timeweb.cloud/docs/mail/migration#nastrojka-domena) почтовый домен. ## Импорт почты при создании ящиков > [!NOTE] > Для переноса почты необходимо, чтобы ваш почтовый домен был добавлен в раздел «Домены». Чтобы создать необходимые почтовые ящики и запустить перенос почты от другого провайдера: 1. Перейдите в раздел «Почта» и выберите нужный домен. 2. Нажмите «Создать ящик». 3. Укажите в таблице почтовые ящики и текущие пароли для них (для импорта из Яндекса, Mail.ru, VK Workspace или Gmail нужно указать [пароли приложений](https://timeweb.cloud/docs/mail/migration#sozdanie-parolej-prilojenij)), а при необходимости также ФИО владельцев. - Если ящиков много, можно создать их с помощью CSV-файла, скачав и заполнив шаблон. После загрузите файл по кнопке «Загрузить список ящиков». 4. Включите тумблер «Запустить импорт после создания» справа внизу. 5. Нажмите «Создать X ящиков». ![4328f57c C37c 4976 Bcd0 2e30e124dcb0](https://content.timeweb.com/assets/23f6faae-e423-4d1e-a6e0-5e429060ebc9.png?width=1081&height=715) 7. Выберите почтовый сервер, с которого будет выполняться перенос: Yandex, Mail.ru или «Другой сервер». - Если вы пользуетесь VK Workspace, выберите Mail.ru. - При выборе варианта «Другой сервер» укажите реквизиты подключения по протоколу IMAP: адрес сервера, порт, SSL-шифрование. Уточнить эти данные можно у текущего провайдера почты. 9. Нажмите «Импортировать X ящиков». ![967b9741 1f4f 4e72 82c6 0f5dafb140c1](https://content.timeweb.com/assets/4565ddc1-798d-46e2-85f1-c7c24fe04a9e.png?width=1083&height=715) Мы проверим возможность подключения к ящикам по указанным реквизитам. Если возникнут ошибки — отметим проблемные ящики в таблице. ![Ab8cb633 227b 4294 B769 904b257d9865](https://content.timeweb.com/assets/18b30fc9-3f9b-45dd-84f2-0692a0ae3090.png?width=1086&height=717) Скорректируйте данные либо удалите эти ящики из списка, после чего снова нажмите «Импортировать». Запустить импорт при наличии ошибок невозможно. Ход импорта будет отображаться в панели управления. Общее время импорта зависит от объема — 1 ГБ переносится примерно за 1 минуту. После завершения импорта не забудьте [настроить домен](https://timeweb.cloud/docs/mail/migration#nastrojka-domena). ## Импорт почты для уже существующих ящиков Если вам нужно импортировать почту от другого провайдера для ящиков, которые уже созданы в панели Timeweb Cloud: 1. Перейдите в раздел «Почта» и выберите нужный домен. 2. Отметьте в списке один или несколько ящиков, для которых нужно выполнить импорт. 3. Выберите «Импортировать». ![56eaf0ff E374 4917 8c77 3e0cdcfc413b](https://content.timeweb.com/assets/27f0f551-3701-408e-b637-5d529d0cf217.png?width=1109&height=797) 4. Выберите почтовый сервер, с которого будет выполняться перенос: Yandex, Mail.ru или «Другой сервер». - Если вы пользуетесь VK Workspace, выберите Mail.ru. - При выборе варианта «Другой сервер» укажите реквизиты подключения по протоколу IMAP: адрес сервера, порт, SSL-шифрование. Уточнить эти данные можно у текущего провайдера почты. 6. В таблице укажите пароли от ящиков на старом сервере (для импорта из Яндекса, Mail.ru, VK Workspace или Gmail нужно указать [специальные пароли приложений](https://timeweb.cloud/docs/mail/migration#sozdanie-parolej-prilojenij)). Текущие пароли созданных в панели ящиков не изменятся — мы будем использовать эти данные только для импорта. 7. Нажмите «Импортировать X ящиков». ![967b9741 1f4f 4e72 82c6 0f5dafb140c1](https://content.timeweb.com/assets/4565ddc1-798d-46e2-85f1-c7c24fe04a9e.png?width=1083&height=715) Мы проверим возможность подключения к ящикам по указанным реквизитам. Если возникнут ошибки — отметим проблемные ящики в таблице. ![Ab8cb633 227b 4294 B769 904b257d9865](https://content.timeweb.com/assets/18b30fc9-3f9b-45dd-84f2-0692a0ae3090.png?width=1086&height=717) Скорректируйте данные либо удалите эти ящики из списка, после чего снова нажмите «Импортировать». Запустить импорт при наличии ошибок невозможно. Ход импорта будет отображаться в панели управления. Общее время импорта зависит от объема — 1 ГБ переносится примерно за 1 минуту. ## Настройка домена Чтобы перенесенные ящики работали с почтовым сервисом Timeweb Cloud, у домена должны быть указаны наши MX-записи: | Приоритет | Значение записи | | --- | --- | | 10 | mx1.timeweb.ru. | | 20 | mx2.timeweb.ru. | Если домен на наших NS, [настроить MX](https://timeweb.cloud/docs/domains/dns-records-management#mx) можно в разделе [«Домены»](https://timeweb.cloud/my/domains). Если домен на сторонних NS, настройку нужно выполнить на стороне держателя NS-серверов, также прописав корректные SPF и DKIM по нашей [инструкции](https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-settings-for-timeweb-cloud). Обновление DNS-записей займет некоторое время: от 3 до 24 часов. В течение этого времени письма еще могут приходить на серверы старого провайдера. > [!NOTE] > **Важно**: чтобы прекратить получение писем на Mail.ru / VK Workspace, вам нужно удалить домен из их системы: [самостоятельно](https://workspace.vk.ru/docs/saas/faqs/domain/delete-domain/?solution429=aodTF_bqKil-PnwrYO4jq4pWZACMwAnuZjmhUByHfTv2oljk-LEn1PfGLJwkGGU9aX8jB06vy-MN2aevESjhMzN1BuWRgCa4_jPB5-QMWa7esoSZgbr7AoyX5qCamagh5DUccoipX0cVmS9y) или через поддержку Mail.ru ([mailsupport@corp.mail.ru](mailto:mailsupport@corp.mail.ru)). ## Создание паролей приложений Для миграции почты в Timeweb Cloud вам необходимо получить пароли приложений для почтовых ящиков Яндекс, Mail.ru, VK Workspace и Gmail. ### Яндекс Для каждого почтового ящика необходимо сгенерировать пароль приложения. Для этого выполните следующие шаги: 1. Перейдите на страницу «Безопасность» в панели управления аккаунтом Яндекс. Выберите пункт «Почта». ![Image10](https://content.timeweb.com/assets/1ab58185-e802-4ed2-b5a9-647b4286e626.png?width=594&height=729) _Раздел «Пароли приложений» в настройках [«Яндекс ID»](https://id.yandex.ru/)_ 2. Укажите имя для пароля приложений и нажмите кнопку «Далее». ![Image3](https://content.timeweb.com/assets/c3051560-acb3-42fe-b262-4ac66d390188.png?width=546&height=709) _Создание пароля приложения в настройках [«Яндекс ID»](https://id.yandex.ru/)_ 3. Скопируйте полученный пароль и используйте его для авторизации в ящике при миграции. ![Image9](https://content.timeweb.com/assets/8b76d6c8-da82-4ed8-89be-369557a921c7.png?width=549&height=801) _Создание пароля приложения в настройках [«Яндекс ID»](https://id.yandex.ru/)_ В Яндексе также необходимо разрешить доступ к почтовому ящику по IMAP: 1. В интерфейсе Яндекс Почты нажмите на значок шестеренки. 2. Выберите пункт «Все настройки». 3. Перейдите в раздел «Почтовые программы». 4. Установите галочки для пунктов «С сервера imap.yandex.ru по протоколу IMAP» и «Пароли приложений и OAuth-токены». ![Image5](https://content.timeweb.com/assets/dfb029de-48a7-4152-a577-c0ef436d652e.png?width=1915&height=623) _Раздел «Почтовые программы» в настройках [«Яндекс Почты»](https://mail.yandex.ru/)_ ### Mail.ru Для миграции почты Mail.ru также требуется создать пароль приложения. Если вы пользуетесь VK Workspace, перейдите в раздел «Почта», после чего следуйте инструкции ниже. 1. В интерфейсе почты Mail.ru нажмите на имя вашего аккаунта. 2. Выберите пункт «Пароль и безопасность». 3. Откройте раздел «Внешние сервисы» и включите опцию «Доступ к почте по IMAP, POP и SMTP». ![Group 1 2026 07 21 10 37](https://content.timeweb.com/assets/b6ee779d-eac6-4b03-afd6-8d7a9727b079.png?width=1858&height=702) _Раздел «Безопасность» в настройках [«Почты Mail»](https://id.mail.ru/)_ 4. Откройте раздел «Пароли для внешних приложений». ![Image11](https://content.timeweb.com/assets/5ba1537d-5ed1-4c95-b386-33f86d906f26.png?width=1907&height=735) _Раздел «Безопасность» в настройках [«Почты Mail»](https://id.mail.ru/)_ 5. Нажмите на кнопку «Создать» в открывшемся окне. ![Image12](https://content.timeweb.com/assets/fe17eebb-749c-4535-8803-08230117d64f.png?width=458&height=325) _Создание пароля приложения в настройках [«Почты Mail»](https://id.mail.ru/)_ 6. Задайте имя для пароля приложения. ![Image13](https://content.timeweb.com/assets/acaa396a-93f9-4a96-87d2-48cc94987687.png?width=465&height=320) _Создание пароля приложения в настройках [«Почты Mail»](https://id.mail.ru/)_ 7. В настройках доступа выберите «Полный доступ к Почте». Если опция недоступна, значит, она ограничена вашим тарифом почты — на отдельных тарифах это платный функционал. Для уточнения деталей свяжитесь с поддержкой Mail.ru ([mailsupport@corp.mail.ru](mailto:mailsupport@corp.mail.ru)). ![Image1](https://content.timeweb.com/assets/15198bb8-1e3b-4440-a1f4-dafb00d1ab22.png?width=441&height=722) _Создание пароля приложения в настройках [«Почты Mail»](https://id.mail.ru/)_ 8. Выполните авторизацию через VK ID. ![Image14](https://content.timeweb.com/assets/e661b0a4-f5ce-4915-a64f-b2170a570157.png?width=457&height=261) _Создание пароля приложения в настройках [«Почты Mail»](https://id.mail.ru/)_ 9. Скопируйте полученный пароль приложения и используйте его для авторизации в ящике при миграции почты. ![Image7](https://content.timeweb.com/assets/3ad073ff-9e1d-4d89-9584-711727204d73.png?width=444&height=342) _Создание пароля приложения в настройках [«Почты Mail»](https://id.mail.ru/)_ ### Gmail Для каждого почтового ящика Gmail с подключенной двухфакторной авторизацией необходимо сгенерировать пароль приложения. Для этого выполните следующие шаги: 1. Перейдите в панель управления [аккаунтом Google](https://myaccount.google.com/). 2. Перейдите в раздел «Безопасность». 3. Кликните на пункт «Двухэтапная аутентификация». ![Image4](https://content.timeweb.com/assets/5f3bec4a-f1b9-4fc0-abdc-20c8f3eae832.png?width=1906&height=954) _Раздел «Безопасность» в интерфейсе [аккаунта Google](https://myaccount.google.com/)_ 4. Пролистайте вниз до раздела «Пароли приложений». Кликните по строке «Пароли приложений» или перейдите на страницу создания пароля [по ссылке](https://myaccount.google.com/apppasswords). ![Image2](https://content.timeweb.com/assets/969a2a63-b46d-4713-bef4-d93f7a410560.png?width=1905&height=956) _Раздел «Безопасность» в интерфейсе [аккаунта Google](https://myaccount.google.com/)_ 5. Укажите имя для пароля приложения, например, «timeweb», и нажмите кнопку «Создать». ![Image6](https://content.timeweb.com/assets/6f2a2664-b86b-409c-bad7-407b798a4f65.png?width=714&height=731) _Создание пароля приложения в интерфейсе [аккаунта Google](https://myaccount.google.com/)_ 6. Скопируйте полученный пароль и нажмите кнопку «Готово». После закрытия окна пароль приложения больше не получится отобразить. Если вы потеряете его, потребуется создать новый. При использовании пароля приложения удалите пробелы в строке. ![Image8](https://content.timeweb.com/assets/181ee7da-2e39-426c-a821-691a626976ff.png?width=816&height=747) _Создание пароля приложения в интерфейсе [аккаунта Google](https://myaccount.google.com/)_ # Перенос почты вручную Source: https://timeweb.cloud/docs/mail/perenos-pochty-ot-drugogo-provajdera > [!NOTE] > Чтобы не переносить почту вручную, как описано в этой инструкции, можно воспользоваться [автоматическим переносом почты](https://timeweb.cloud/docs/mail/migration) в Timeweb Cloud. В статье мы рассмотрим, как перенести почту в Timeweb Cloud от другого провайдера с помощью почтового клиента **Thunderbird**. В целом, порядок действий будет похож вне зависимости от того, какой почтовый клиент вы используете. Для переноса вам будет нужно: 1. Подключиться при помощи почтового клиента (например, Outlook, Thunderbird, The Bat!) к ящику у прежнего провайдера и скачать всю корреспонденцию — по инструкции ниже. 2. [Создать почтовый ящик](https://timeweb.cloud/docs/mail/mail-settings/create-mailbox) в разделе «Почта» панели управления Timeweb Cloud. 3. Добавить созданный почтовый ящик в почтовом клиенте — по инструкции ниже. 4. Выделить необходимые письма или папки в старом ящике и скопировать их в нужную папку принимающего ящика — по инструкции ниже. ## Перенос почты с помощью Thunderbird Инструкция составлена для актуальной на момент написания версии Thunderbird: 153.0.1. В других версиях интерфейс может незначительно отличаться, но порядок действий остается прежним: вам нужно добавить учетные записи для старого и нового ящика и скопировать письма из старого ящика в новый. ### Добавление исходного ящика 1. Откройте Thunderbird, кликните на значок меню в правом верхнем углу и нажмите «Добавить учетную запись». ![Меню и интерфейс Thunderbird](https://content.timeweb.com/assets/0d85b3fa-a362-4612-a55e-ed970e042e2e.png?width=1339&height=1012) _Меню и интерфейс [Thunderbird](https://www.thunderbird.net/ru/)_ 2. Выберите «Эл. почта». ![Меню и интерфейс Thunderbird](https://content.timeweb.com/assets/b5351577-72c6-49b5-b16b-9a6468b660f2.png?width=1339&height=1012) _Меню и интерфейс [Thunderbird](https://www.thunderbird.net/ru/)_ 3. Введите любое удобное имя и почтовый ящик, с которого нужно перенести почту. 4. Нажмите «Настройка вручную». ![Создание новой учетной записи в интерфейсе Thunderbird](https://content.timeweb.com/assets/f53a3bd3-6aa5-4758-af2a-01ff1ce14b77.png?width=1339&height=1012) _Создание новой учетной записи в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/)_ 5. Заполните реквизиты подключения к ящику, с которого будете забирать почту. Уточнить эти данные можно у провайдера, у которого в данный момент размещается почта. В нашем примере ящик, с которого переносится почта, также располагается на серверах Timeweb, поэтому настройки следующие: **Параметры сервера входящей почты:** - Протокол: IMAP - Имя сервера: `imap.timeweb.ru` - Порт: 993 - Защита соединения: SSL/TLS - Метод аутентификации: Автоопределение - Имя пользователя: ваш почтовый ящик Нажмите «Продолжить». ![Параметры сервера входящей почты](https://content.timeweb.com/assets/0f7ebef8-9aab-4025-a57d-fe23586b58af.png?width=1339&height=1012) _Настройка подключения в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/)_ **Параметры сервера исходящей почты:** - Имя сервера: `smtp.timeweb.ru` - Порт: 465 - Защита соединения: SSL/TLS - Метод аутентификации: Автоопределение - Имя пользователя: ваш почтовый ящик ![Параметры сервера входящей почты](https://content.timeweb.com/assets/756070f9-7932-452a-bc9f-3d086892c7e4.png?width=1339&height=1012) _Настройка подключения в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/)_ Нажмите Тест. После завершения проверки нажмите «Готово». Теперь вы можете перейти во «Входящие» и убедиться, что содержимое ящика доступно в Thunderbird. ![Папка «Входящие» в интерфейсе Thunderbird](https://content.timeweb.com/assets/ae111501-facb-40b8-bba3-583e936d75d8.png?width=1339&height=1012) _Папка «Входящие» в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/)_ ### Добавление целевого ящика Далее нужно добавить ящик, на который вы будете переносить письма. Для этого выполните те же самые шаги, указав при этом реквизиты второго ящика: 1. Кликните «Добавить учетную запись» → «Эл. почта». 2. Укажите имя пользователя и имя ящика. 3. Кликните «Настройка вручную» и заполните реквизиты подключения. Для переноса почты в Timeweb используйте реквизиты, которые были указаны выше. 4. Нажмите «Тест», а затем «Готово». Второй ящик также доступен в Thunderbird: ![Папка «Входящие» в интерфейсе Thunderbird](https://content.timeweb.com/assets/f8b581b0-626b-4df7-8fbb-34bbdad84769.png?width=1339&height=1012) _Папка «Входящие» в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/)_ ### Перенос писем Теперь можно перенести письма с одного ящика на другой. 1. Кликните правой кнопкой мыши по ящику, в который нужно перенести письма, и выберите «Создать папку». ![Опция создания папки в интерфейсе Thunderbird](https://content.timeweb.com/assets/b6012764-9bcd-4809-ae01-99f81209a74a.png?width=1339&height=1012) _Опция создания папки в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/)_ 2. Задайте ей удобное имя и выберите расположение. ![Создание новой папки в интерфейсе Thunderbird](https://content.timeweb.com/assets/3af51318-6b0e-474f-94ae-d7a607e8228f.png?width=1339&height=1012) _Создание новой папки в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/)_ 3. Перейдите в первый ящик и выделите все письма, нажав Ctrl+A. 4. Кликните на выделенных письмах правой кнопкой и выберите: «Копировать в папку» → нужный почтовый ящик → созданная папка. ![Копирование писем в папку в интерфейсе Thinderbird](https://content.timeweb.com/assets/26464557-8e5a-43e1-9a09-199589d8c818.png?width=1339&height=1012) _Копирование писем в папку в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/)_ Письма будут скопированы в новый ящик. # Перенос почты из «Яндекс 360» на сервер Timeweb Cloud Source: https://timeweb.cloud/docs/mail/perenos-pochty-iz-yandeks-360 В инструкции рассмотрим, как выполнить перенос почтовых ящиков и их содержимого из сервиса «Яндекс 360» на облачный сервер Timeweb Cloud с панелью ispmanager. > [!NOTE] > Вместо размещения почты на облачном сервере можно воспользоваться сервисом «[Корпоративная почта](https://timeweb.cloud/docs/mail#servis-korporativnaya-pochta)» — и [перенести все ящики автоматически](https://timeweb.cloud/docs/mail/migration). ## Подготовка к импорту Для начала работы выполните следующие шаги: 1. В панели Timeweb Cloud создайте облачный сервер с панелью ispmanager. - Редакция ispmanager может быть любой, в качестве ОС рекомендуем выбирать Ubuntu 20.04. - Если планируете разместить на сервере не только почту, но и проекты — учитывайте [отличия редакций ispmanager](https://timeweb.cloud/docs/licenses/ispmanager-licenses). - Тариф сервера выбирайте из ваших потребностей и объема почты, которую будете переносить. Учитывайте, что система и панель займут около 5 ГБ диска. ![032dda0d F27a 4649 B58f Aae279b03141](https://content.timeweb.com/assets/f3d3ce1d-2596-4f8b-8ab6-f61d9c317204?width=1475&height=878) 2. В панели ispmanager создайте почтовый домен: *— Если в панели еще нет пользователя, который будет управлять почтой — создайте пользователя и почтовый домен:* - - Перейдите в раздел «Пользователи» — «Создать пользователя». - Задайте логин и пароль пользователя, нажмите «Далее». - Снимите галки у пунктов «Создать FTP-пользователя» и «Создать сайт». - Укажите почтовый домен. - В поле «IP-адрес» укажите адрес вашего сервера (ispmanager предложит его автоматически). - Нажмите «Далее» и «Завершить». ![Eda0c942 2359 4411 8e1c 408145cc3f7f](https://content.timeweb.com/assets/e2cf1d8f-9e96-4480-ac16-5d4be6769cb8?width=1358&height=845) _Настройки пользователя в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ *— Если в панели уже создан нужный пользователь — добавьте почтовый домен:* - - Перейдите в «Управление DNS» → «Создать домен». - Если работаете под root — выберите владельца (пользователя панели) из списка. - Укажите имя домена. - В поле «Локальные IP-адреса» выберите IPv4-адрес созданного сервера. - Отметьте чекбокс «Создать почтовый домен». - Нажмите «Создать». ![44803e80 5fcc 486b Bf34 1fa5fe848db3](https://content.timeweb.com/assets/53b3b73f-7145-42a0-93f8-ce31788922b8?width=1313&height=854) _Добавление нового домена в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 3. (Опционально) Узнайте, сколько места занимают письма в ящиках. Сделать это можно с помощью Outlook: - - Настройте программу по [инструкции от Яндекса](https://yandex.ru/support/mail/mail-clients/microsoft-outlook.html). - Откройте главную страницу программы и нажмите правой кнопкой мыши на название (адрес) ящика. - Откройте «Свойства файла данных» и выберите «Размер папки». 4. Проверьте, что у пользователя ispmanager есть свободное место под почтовые домены и ящики. Это можно сделать в ispmanager в разделе «Пользователи», обратив внимание на столбец «Диск (MB)». 5. Проверьте свободное место на самом сервере. Эти данные можно просмотреть на дашборде в панели Timeweb Cloud. ![73ea8acd E0ff 42fe B756 C2f4a8897694](https://content.timeweb.com/assets/dc437722-b9e1-46fe-834f-347960612677?width=1473&height=1226) Если места недостаточно, [увеличьте размер диска](https://timeweb.cloud/docs/cloud-servers/manage-servers/server-configuration#izmenenie-razmera-diska) — с помощью конфигуратора или путем смены тарифа. 6. Для импортируемого ящика включите IMAP и доступ по портальному паролю на стороне Яндекса: - - Авторизуйтесь в ящике на Яндексе. - Кликните на значок шестеренки справа вверху и выберите «Все настройки». - Перейдите в подраздел «Почтовые программы». - Отметьте чекбокс «С сервера imap.yandex.ru по протоколу IMAP». - Отметьте чекбокс «Портальный пароль». > [!NOTE] > Включить IMAP и доступ по портальному паролю массово для всех ящиков невозможно. Процесс нужно выполнить для каждого ящика по отдельности. ## **Импорт почты** 1. В панели ispmanager перейдите в раздел «Почта» — «Импорт». ![Ad875066 1cdc 4b49 8b06 A79c051edeb2](https://content.timeweb.com/assets/2982ba47-4135-4035-83d2-d8542ba707f8?width=1920&height=642) _Раздел «Почта» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 2. Настройте параметры импорта: - - **Владелец** — укажите пользователя ispmanager, у которого будут храниться импортируемые ящики. - **Источник** — выберите «Яндекс 360 для бизнеса». - Нажмите «**Получить токен**» и войдите в аккаунт администратора «Яндекс 360», после чего вас переадресует обратно в ispmanager. Продолжите заполнять данные для импорта. - **Организация** — выберите организацию, ящики которой хотите импортировать. - **Домены** — выберите домены. - **Ящики** — выберите почтовые ящики для импорта. - Отметьте опции: - «**Импортировать содержимое почтовых ящиков**». Если не отмечать этот пункт, то на стороне ispmanager будут созданы импортируемые ящики, но письма не будут перенесены. - «**Изменить пароли почтовых ящиков**». Это обязательное условие для импорта, без смены паролей перенести почту не получится. Пароли будут изменены у ящиков в Яндекс 360 и на стороне ispmanager. - «**Игнорировать существующие ящики**» (опционально) — опция поможет пропустить импорт уже существующих в панели ящиков. Если она не выбрана, перед импортом будет удалено содержимое ящиков и изменен пароль. ![Image 164](https://content.timeweb.com/assets/07a84e72-49cb-49b4-b2b6-063bea28199d?width=1296&height=920) _Запуск импорта почты в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 3. Нажмите «Импорт». ## Настройка DNS-записей 1. В панели ispmanager перейдите в раздел «Настройки» — «Конфигурация ПО». 2. Кликните дважды на «Почтовый сервер (SMTP/POP3/IMAP)». ![Без Названия](https://content.timeweb.com/assets/b21f99b5-485c-436d-a596-12d5f1666cac?width=1920&height=869) _Раздел «Конфигурация ПО» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 3. Включите опцию «OpenDKIM (exim)» и сохраните изменения. Необходимый модуль установится в течение пары минут. ![9815bc70 Fb96 4c26 886f 1608509d1d00](https://content.timeweb.com/assets/aed7370a-8a90-4d32-9276-90482e02bbee?width=1350&height=837) _Настройки почтового сервера в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 4. Перейдите в ispmanager в раздел «Почта» — «Почтовые домены». 5. Кликните дважды на почтовый домен, чтобы перейти к его настройкам. 6. Включите DKIM для домена и сохраните изменения. ![1dcacc99 671b 48b1 A4fd 7c0d366f1a7e](https://content.timeweb.com/assets/cb6e6253-fc83-4d3f-879a-ae209936b400?width=1296&height=847) _Включение DKIM для домена в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 7. Перейдите в раздел «Управление DNS» → три точки справа от почтового домена → «Управлять DNS-записями», чтобы просмотреть DNS домена. 8. На стороне держателя NS-серверов (узнать его можно [здесь](https://www.whatsmydns.net/#NS/)) выполните следующие действия: - создайте для домена поддомен `mail` и укажите в качестве его A-записи IPv4-адрес вашего сервера; - пропишите для домена DNS-записи MX, DKIM, SPF, указанные в ispmanager. ![Без Названия (3)](https://content.timeweb.com/assets/cd7a29cc-be8a-40ee-8879-3e3ebbd5f23b?width=1902&height=868) _Просмотр DNS-записей домена в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Например, если домен делегирован на наши NS-серверы, то эти настройки необходимо выполнить в панели Timeweb Cloud в разделе «Домены и SSL», кликнув на нужный домен. ![Dea04cac 76ca 4c93 B77c 76f83390bd98](https://content.timeweb.com/assets/44be6502-0527-440c-a46b-3decabca5234?width=1482&height=736) Пример DNS-записей в панели Timeweb Cloud: ![D3acbf8b 6071 49b9 A6ca 66bfe9f0e2ad](https://content.timeweb.com/assets/e8027168-6b5c-43b2-becb-c554561858db?width=1476&height=821) ## Настройка работы ящиков в почтовых программах Для работы с импортированными ящиками можно использовать встроенный в ispmanager сервис Roundcube или настроить работу через собственный почтовый клиент. Для перехода в Roundcube в разделе «Почта» выделите ящик и кликните «Почтовый клиент». ![Без Названия](https://content.timeweb.com/assets/f504ab3a-8b40-4f1f-b00f-72ee1421c96f?width=1445&height=864) _Раздел «Почта» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Параметры для настройки другого почтового клиента можно найти в разделе «Почта» → три точки справа от почтового ящика → «Настройки для почтовых клиентов». ![10d7a1c7 66d4 48f4 A9b0 Bed3845116c8](https://content.timeweb.com/assets/2f904001-becb-469b-a859-b5d9c148555a?width=1902&height=869) _Раздел «Почта» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ ## Возможные ошибки ### Ошибка в ispmanager после импорта Может возникнуть следующая ошибка: ```shell Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/roundcubemail/program/lib/Roundcube/session/db.php on line 110 ``` Она возникает из-за включенной переменной `date.timezone` в глобальных настройках PHP. ```shell [root@1445503-cd58536 ~]# cat -n /etc/php.ini | grep timezone 876 ; Defines the default timezone used by the date functions 877 ; http://php.net/date.timezone 878 date.timezone = ``` Для устранения проблемы необходимо указать для этой переменной нужное для вас значение. ### Импорт завершается с ошибкой Импорт может завершиться с ошибкой, если: - включен модуль DDoS Guard внутри ispmanager; - на аккаунте Яндекса у почтового ящика включена двухфакторная аутентификация. Проверьте эти параметры. ### Ошибка при импорте через CSV-файл При импорте через CSV-файл в логе импорта почтовых ящиков может возникать ошибка: ```shell dsync(1@teseawew.ru): Error: net_connect_ip(2a02:6b8::19d:993) failed: Network is unreachable ``` Ошибка означает, что данная сеть не доступна с сервера: ```shell root@2220537-cy71009:~# ping6 2a02:6b8::19d ping6: connect: Network is unreachable ``` Для устранения проблемы отключите использование адреса IPv6 в конфигурационном файле `/etc/exim4/exim4.conf.template`. Откройте файл: ```shell nano /etc/exim4/exim4.conf.template ``` Добавьте в него строку: ```shell disable_ipv6=true ``` Сохраните изменения. После внесения изменений перезапустите службу: ```shell systemctl restart exim ``` Затем повторите импорт почты. # Настройка DKIM для писем, отправляемых с сервера Source: https://timeweb.cloud/docs/mail/nastrojka-dkim-dlya-pisem-otpravlyaemyh-s-servera Для писем, отправляемых с сервера функцией `php mail()`, настроить DKIM-подпись можно с помощью библиотеки [PHPMailer](https://github.com/PHPMailer/PHPMailer) или специальных плагинов для отправки писем в CMS. Чтобы письма, отправляемые с сервера, проходили проверку DKIM, необходимо выполнить следующую настройку: 1. Подключиться к серверу [по SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. Сгенерировать закрытый ключ командой ниже, указав вместо domain.ru имя вашего домена: ```shell openssl genrsa -out domain.ru.private 1024 ``` 3. Сохранить путь к сгенерированному ключу — файлу `domain.ru.private` (путь потребуется ввести в процессе настройки далее). Файл будет создан в той же директории, откуда выполнялась команда. 4. Сгенерировать открытый ключ командой ниже, указав вместо domain.ru имя вашего домена: ```shell openssl rsa -in domain.ru.private -out domain.ru.public -pubout ``` Содержимое файла `domain.ru.public` после генерирования ключа будет следующим: ```shell -----BEGIN PUBLIC KEY----- ключ -----END PUBLIC KEY----- ``` 5. Создать DKIM-подпись для домена: - В разделе «Домены и SSL» кликнуть на значок шестеренки, чтобы перейти к настройкам DNS. - Кликнуть «Добавить запись» — «TXT». ![F175d6e5 044a 4bef 96dc 5b1576f2c49d](https://content.timeweb.com/assets/964d105a-86c4-46b0-97d0-36e753368f7a?width=1484&height=818) - - В поле «Хост» выбрать «Ввести вручную» и указать: ```shell mail._domainkey ``` - - В поле «Значение» указать: ```shell v=DKIM1; k=rsa; p=ключ_из_предыдущего_пункта ``` Ключ должен быть указан в одну строку, без `BEGIN` и `END`. ![0ee510cd 0a95 4086 A989 6ff1d432d127](https://content.timeweb.com/assets/f52619d8-2065-4871-a15b-5ea853dc287f?width=1485&height=840) 6. В настройках скрипта библиотеки [PHPMailer](https://github.com/PHPMailer/PHPMailer) или используемого для отправки писем плагина CMS указать полный путь к файлу `domain.ru.private`, который был сгенерирован в пункте 2 (например, `/home/mysite/domain.ru.private`). Если вы используете PHPMailer, то для того, чтобы письма, отправляемые скриптами с сервера, проходили проверку DKIM, необходимо указать путь в параметре `DKIM_private`; а в параметре `DKIM_selector` указать `mail`. # Рекомендации по настройке массовых рассылок Source: https://timeweb.cloud/docs/mail/mass-mailing-guidelines Почтовые сервисы, такие как Gmail, Яндекс, Mail.ru и др., автоматически анализируют входящий трафик и оценивают репутацию отправителей. Соблюдение технических требований и стандартов рассылок снижает риск попадания писем в спам и блокировки домена или IP-адреса. В статье рассмотрим базовые правила и рекомендации для того, чтобы алгоритмы почтовых систем определяли ваши рассылки как благонадежные. ## Корректный сбор базы подписчиков Единственный надежный способ сформировать базу — double opt-in (двойное подтверждение подписки): 1. Пользователь явно выражает согласие на получение рассылки, самостоятельно установив соответствующий флажок. Не рекомендуется проставлять эти галочки предварительно. 2. На указанный адрес отправляется письмо-подтверждение; пользователь переходит по ссылке и тем самым подтверждает владение ящиком. Этот подход гарантирует, что база содержит только актуальные адреса заинтересованных получателей, и исключает попадание в спам-ловушки. Покупка, скачивание или парсинг адресов с открытых источников недопустимы. Такие базы, как правило, содержат большое количество невалидных адресов, адреса пользователей, не давших согласия на рассылку, и спам-ловушки — специальные адреса, которые почтовые сервисы используют для выявления недобросовестных отправителей. Отправка писем на подобные адреса ухудшает репутацию домена и может привести к блокировке. ## Контроль качества базы Письма на удаленные или заблокированные адреса не доставляются и учитываются как ошибки доставки. Накопление таких адресов в базе ухудшает репутацию отправителя. Mail.ru, в частности, блокирует рассылку при доле невалидных адресов от 5%. Невалидные адреса необходимо своевременно исключать из базы. Для мониторинга доставляемости и статистики рассылок рекомендуем использовать инструменты постмастеров: [Postmaster Tools](https://support.google.com/mail/answer/6227174) от Google, [Postmaster](https://postmaster.mail.ru/) от Mail.ru и аналогичные сервисы других провайдеров. ## Простая отписка от рассылки Пользователь должен иметь возможность отказаться от рассылки без каких-либо дополнительных действий: регистрации, авторизации или заполнения форм. Достаточно перехода по ссылке с подтверждением отписки. Требования: - В каждом письме должна быть рабочая ссылка для отписки. - Письмо должно [содержать заголовок](https://tools.ietf.org/html/rfc2369#section-3.2) `list-unsubscribe`. Он отображает кнопку «Отписаться» непосредственно в интерфейсе почтового клиента, а переход по ссылке из этого заголовка должен немедленно отменять подписку. Если отписка неудобна или недоступна, пользователи, как правило, отмечают письма как спам — это напрямую влияет на репутацию отправителя. ## Технические требования к рассылкам До начала рассылок необходимо убедиться, что выполнены следующие условия: - Для домена отправителя настроены [DKIM](https://timeweb.cloud/docs/domains/dns-records-management#dkim) и [SPF](https://timeweb.cloud/docs/domains/dns-records-management#spf). Эти механизмы подтверждают подлинность писем и защищают от подделки. - Адрес отправителя реально существует и использует домен организации. Если входящие сообщения обрабатываются автоматически, автоответ должен содержать контактные данные службы поддержки. Mail.ru дополнительно требует указания в тексте письма физического адреса и телефона компании-отправителя. - Все сообщения содержат заголовок `Precedence: bulk` — стандартный маркер массовой рассылки. - Письма соответствуют стандартам [RFC 5321](https://tools.ietf.org/html/rfc5321) (SMTP), [RFC 5322](https://tools.ietf.org/html/rfc5322) и [MIME](https://tools.ietf.org/html/rfc2045) и содержат [корректный заголовок](https://tools.ietf.org/html/rfc5322#section-3.6.4) `Message-ID`. - Для рассылок используются отдельные IP-адреса, не пересекающиеся с адресами деловой корреспонденции и служебных уведомлений. Если выделить отдельный IP невозможно, рекомендуется разделять потоки на уровне доменов: например, `news.example.com` для информационных рассылок и `billing.example.com` для финансовых уведомлений. ## Категорически не рекомендуется - Скрывать или подделывать данные отправителя или источника рассылки. - Маскировать целевые адреса ссылок в письмах. Использование сокращателей ссылок и редиректов, скрывающих реальный адрес назначения, также не рекомендуется. - Формировать базу из купленных, скачанных или собранных без согласия пользователей адресов. # Веб-интерфейс Timeweb Mail Source: https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail Timeweb Mail — веб-интерфейс для работы с почтой, доступный по адресу: [mail.timeweb.com](https://mail.timeweb.com/). С Timeweb Mail вы можете получить доступ к своему ящику из любого браузера. Для входа в почту введите имя ящика, созданного в панели Timeweb, и его пароль. - [Частые вопросы по работе с Timeweb Mail](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/faq-tw-mail) - [Работа с письмами](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/emails) - [Просмотр технических заголовков](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/email-headers) - [Управление фильтрами](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/filters) - [Управление контактами](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/contacts) - [Смена пароля от ящика](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/password-change) - [Настройка двухфакторной аутентификации](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/2fa) - [Привязка дополнительных ящиков](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/link-mailboxes) # Частые вопросы по работе с Timeweb Mail Source: https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/faq-tw-mail В этом разделе собрали самые популярные вопросы пользователей по работе с интерфейсом Timeweb Mail. ## Как настроить автоматическую пересылку писем в Telegram? Необходимо привязать к ящику Telegram-аккаунт (раздел «Настройки» → «Безопасность») и настроить фильтр (раздел «Настройки» → «Фильтры» → «Создать фильтр»). Подробная инструкция: [Пересылка писем в Telegram](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/emails#peresylka-pisem-v-telegram). ## Как настроить автоответчик на время отпуска? Это можно сделать в разделе «Настройки» → «Автоответчик». Подробная инструкция: [Настройка автоответчика](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/emails#nastrojka-avtootvetchika). ## Как настроить двухфакторную аутентификацию? Необходимо привязать к ящику телефон и/или Telegram-аккаунт. Это можно сделать в разделе «Настройки» → «Безопасность» → «Двухфакторная аутентификация». Подробная инструкция: [Настройка двухфакторной аутентификации](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/2fa). ## Как объединить контакты в группу? Это можно сделать с помощью меток. Подробная инструкция: [Группы (метки) контактов](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/contacts#gruppy-metki-kontaktov). ## Как отправить письмо группе контактов? При создании письма введите в поле «Кому» название метки — тогда письмо получат все контакты в этой группе. Либо перейдите в «Контакты» → «Все контакты», кликните на нужную метку и отметьте только нужных получателей. Подробная инструкция: [Отправка письма группе контактов](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/emails#otpravka-pisma-gruppe-kontaktov). ## Как добавить ящик в белый список? Это можно сделать в разделе «Настройки» → «Белый список». Подробная инструкция: [Добавление в белый список](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/contacts#dobavlenie-v-belyj-spisok). ## Как добавить отправителя в черный список? Это можно сделать: - Прямо из письма, кликнув «Заблокировать» в верхнем меню. - Через раздел «Настройки» → «Черный список». Подробная инструкция: [Добавление в черный список](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/contacts#dobavlenie-v-chernyj-spisok). ## Почему в моем ящике отображаются другие емейлы? Скорее всего, вы или администратор почты привязали к ящику дополнительные ящики. Если необходимо, их можно отвязать. Подробная инструкция: [Привязка дополнительных ящиков](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/link-mailboxes). ## Я использую сторонний почтовый клиент, а в Timeweb Mail письма пропали Если в почтовом клиенте письма отображаются, а в Timeweb Mail их нет, вероятно, вы подключились к ящику по протоколу POP3. Если вы не уверены, что используется протокол POP3, можно проверить настройки ящика в почтовом клиенте или обратится в поддержку. Если вы хотите, чтобы письма были доступны и в почтовом клиенте, и в Timeweb Mail, измените параметры сервера приема почты в почтовом клиенте с POP3 на IMAP: - Сервер для приема IMAP — imap.timeweb.ru. - Порт без шифрования, STARTTLS — 143 - Порт SSL — 993 При использовании протокола IMAP письма с почтового сервера не удаляются, а синхронизируются. ## Не настроена SPF-запись, как исправить? Если SPF-запись не настроена, отправленные письма будут попадать в спам или не доходить до получателя. Чтобы это исправить, необходимо добавить для домена следующую SPF-запись: ```shell v=spf1 include:_spf.timeweb.ru ~all ``` Эту настройку необходимо выполнить на стороне держателя NS-серверов домена. Узнать NS-серверы можно через любой whois-сервис, например, на [сайте Timeweb](https://timeweb.com/ru/services/domains/whois/). Если у домена указаны наши NS-серверы, настроить SPF необходимо в панели Timeweb Cloud [по инструкции](https://timeweb.cloud/docs/domains/dns-records-management#spf). Если указаны иные NS-серверы, необходимо настроить SPF через панель соответствующего провайдера. При настройке укажите: - Тип: `TXT` - Хост: `@` - Значение: `v=spf1 include:_spf.timeweb.ru ~all` После добавления и обновления записи уведомление «Не настроена SPF» пропадет в течение 12 часов. Важно: не указывайте больше одной SPF-записи для домена, так как это может нарушить работу почту. Если SPF-запись уже существует, необходимо отредактировать ее вместо создания новой. Например, если создана запись: ```shell v=spf1 include=_spf.mail.ru ~all ``` То для добавления SPF-записи Timeweb Cloud необходимо привести запись к виду: ```shell v=spf1 include=_spf.mail.ru include:_spf.timeweb.ru ~all ``` ## Не настроена DKIM, как исправить? DKIM (DomainKeys Identified Mail) — это метод email-аутентификации, который дает возможность получателю проверить, было ли письмо отправлено с заявленного домена. Если DKIM не настроена, отправленные письма будут попадать в спам или отклонятся серверов получателя. Настройка DKIM выполняется на стороне держателя NS-серверов домена. Узнать NS-серверы можно через любой whois-сервис, например, на [сайте Timeweb](https://timeweb.com/ru/services/domains/whois/). В Timeweb Cloud DKIM-запись для домена создается автоматически после создания первого ящика на домене в разделе «Почта». Если домен делегирован к нам, можно просто убедиться в ее наличии. Если домен делегирован к другому провайдеру, потребуется создать аналогичную запись в панели провайдера. #### Домен делегирован наши NS Проверить наличие DKIM можно в разделе «Домены», кликнув на значок шестеренки у нужного домена. В списке найдите запись типа TXT со значением `dkim._domainkey` в поле «Хост». ![974c3cde 7ee4 487d Be7c 7cbc7641e55f](https://content.timeweb.com/assets/5d85a79c-4fa4-464f-86dc-0190fda58eb2.png?width=1530&height=799) - Если запись добавлена, сообщение «Не настроена DKIM» пропадет в течение 12 часов. - Если запись отсутствует, [напишите в поддержку](https://timeweb.cloud/my/support/help-question). #### Домен делегирован на сторонние NS Если домен делегирован на иные NS-серверы, необходимо настроить DKIM через панель соответствующего провайдера. Предварительно скопируйте значение DKIM из панели Timeweb Cloud: 1. Перейдите в раздел «Домены» и кликните на значок шестеренки у нужного домена. 2. Найдите запись типа TXT со значением `dkim._domainkey` в поле «Хост». 3. Кликните на нее, чтобы открыть форму редактирования. 4. Скопируйте значение записи. ![Bdd0b010 F7a7 4c02 A406 B9dcbeee311c](https://content.timeweb.com/assets/1f392a44-2ec0-4881-baa8-82ebd99f5922.png?width=597&height=675) При настройке в панели держателя NS-серверов укажите: - Тип: `TXT` - Хост: `dkim._domainkey` - Значение: `Скопированное значение DKIM` После добавления записи сообщение «Не настроена DKIM» пропадет в течение 12 часов. #### Проверка корректности DKIM Проверить корректность добавленной DKIM-записи можно через сервис [mail-tester.com](https://www.mail-tester.com/). 1. Перейдите на страницу сервиса. 2. Скопируйте предложенный адрес и отправьте на него письмо с вашего ящика. 3. Нажмите «Затем проверьте оценку». Как только письмо поступит, сервис отобразит результат проверки. Пример успешно пройденной проверки: ![Nqlimage](https://content.timeweb.com/assets/8770b078-d271-44e3-8a7f-68f77935a38e.png?width=1133&height=389) _Результат проверки в сервисе [mail-tester.com](https://www.mail-tester.com/)_ Пример непройденной проверки: ![P1 Yimage](https://content.timeweb.com/assets/a78e8a5c-81bc-493e-b4fa-1c744dee797e.png?width=1127&height=453) _Результат проверки в сервисе [mail-tester.com](https://www.mail-tester.com/)_ Если проверка не пройдена, [напишите в поддержку](https://timeweb.cloud/my/support/help-question). Мы поможем настроить запись корректно. ## MX-записи не обнаружены, как исправить? MX-записи отвечают за прием писем. Если MX-записи Timeweb Cloud не добавлены, то письма приходить не будут. Прописать MX-серверы необходимо на стороне держателя NS-серверов домена. Узнать NS-серверы можно через любой whois-сервис, например, на [сайте Timeweb](https://timeweb.com/ru/services/domains/whois/). > [!NOTE] > Для корректной работы почты следует указывать MX-записи только одного сервиса. Если вы планируете пользоваться почтой Timeweb Cloud, иные MX-записи необходимо удалить. #### Если домен делегирован на наши NS Создайте одну MX-запись [по этой инструкции](https://timeweb.cloud/docs/domains/dns-records-management#mx), выбрав **Timeweb** в поле «Служба». Запись обновится в течении 3-24 часов. Новые письма начнут поступать после обновления. Сообщение «MX-записи не обнаружены» в пропадет в течение 12 часов. #### Если домен делегирован на сторонние NS В панели держателя NS-серверов создайте следующие DNS-записи: Запись 1: - Тип: `MX` - Хост: `@` - Значение: `mx1.timeweb.ru` - Приоритет: `10` Запись 2: - Тип: `MX` - Хост: `@` - Значение: `mx2.timeweb.ru` - Приоритет: `20` После создания и обновления записи письма начнут приходить в ваш ящик. Сообщение «MX-записи не обнаружены» в пропадет в течение 12 часов. # Работа с письмами Source: https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/emails В статье рассматриваем операции над письмами, доступные в интерфейсе Timeweb Mail. ## Создание письма Чтобы создать новое письмо, нажмите «Написать» в правом верхнем углу. Откроется форма создания нового сообщения. ![5b33cb96 00f9 4fd6 B763 753de9e90154](https://content.timeweb.com/assets/ab56bde1-41cb-4e8f-b07b-e87a9df57b70.png?width=912&height=869) ### AI-помощник Опция «AI-помощник» позволяет быстро сгенерировать текст и тему письма в соответствии с вашим запросом. Предложенный помощником вариант можно отредактировать вручную или снова через ИИ. Чтобы запустить AI-помощника, нажмите на иконку внизу формы создания письма: ![5200a9bf 2958 4e74 A932 0315231ba595](https://content.timeweb.com/assets/0216f4d3-e6ed-41c8-844c-927c399e7815.png?width=586&height=684) Выберите один из предложенных запросов или создайте свой — опишите основные идеи и ключевые пункты, которые нужно отразить в письме. ![25e8ccd8 9a50 4337 A59d 311c4c345516](https://content.timeweb.com/assets/60316c99-289f-4e18-b9c2-9a57d9c599b0.png?width=581&height=688) Просмотрите сгенерированный текст и внесите необходимые корректировки. ![D0958180 7d42 47af 9cd7 E4c24e6adff1](https://content.timeweb.com/assets/0e57d755-d486-4787-89d0-8f851650b366.png?width=580&height=680) ### Редактировать как новое Чтобы создать новое письмо на базе существующего, можно воспользоваться опцией «Редактировать как новое». Опция может быть полезна в случаях, когда нужно отправить несколько почти одинаковых писем с небольшими корректировками, например, с персонализацией под конкретного контрагента. 1. Откройте любое письмо в ящике и нажмите на три точки справа вверху. 2. Выберите «Редактировать как новое». ![5fc4a814 Aea8 4746 A6cd Dbb2786e4843](https://content.timeweb.com/assets/ee16ea85-7247-485e-9b83-e78a9fec9754.png?width=1040&height=698) Откроется форма создания нового сообщения с готовым черновиком: с темой, текстом, вложениями и получателями из выбранного вами письма. Вам останется только внести необходимые корректировки. ## Настройка подписи Вы можете настроить подпись, которая будет автоматически добавляться к каждому отправляемому письму. Можно создать несколько подписей и выбирать нужную перед отправкой письма. 1. Кликните на значок аккаунта справа вверху и выберите «Настройки». ![4bcb86d1 E1fa 48ba 8b37 78993c59b566](https://content.timeweb.com/assets/c80f825e-d55b-4784-9771-02a1bade8a57.png?width=1649&height=737) 2. Перейдите на вкладку «Подпись» и нажмите «Добавить подпись». 3. Создайте подпись: ![0884b70e D549 461a Ab65 Ca8c430c93ff](https://content.timeweb.com/assets/bb919985-a82c-4a47-a22d-e322d623023b.png?width=1166&height=748) 2. - **Название**: Удобное название, которое будет отображаться при выборе подписи для письма. - **Имя отправителя**: Можно задать нужное либо оставить поле пустым, чтобы использовать значение по умолчанию (ваше емейл либо данные из «Личных данных» в настройках, если заполнены). - **Текст подписи**: Задайте нужный текст; можно отформатировать его с помощью редактора. - **Подпись до цитаты**: Выберите, где вы хотите размещать подпись в письме: до процитированного сообщения или в самом конце письма. - **Установить по умолчанию**: Отметьте, если нужно, чтобы эта подпись подставлялась в письма автоматически. Даже если параметр выбран, вы сможете переключиться на другую подпись перед отправкой. 4. Нажмите «Сохранить». Если для одной из подписей выбран параметр «Установить по умолчанию», она будет подставлена в тело письма автоматически. Если подписи по умолчанию нет или вам нужно заменить подпись на другую, кликните на значок карандаша справа внизу. ![1604f3f2 3ae6 4c14 Af1b Efcfea9ff7f6](https://content.timeweb.com/assets/69a0877d-0c87-4562-aed1-815b8ffdc0d4.png?width=598&height=698) ## Настройка автоответчика Вы можете включить автоответчик, чтобы автоматически отправлять ответы на все входящие письма заданным сообщением. Например, можно настроить автоответчик на время отпуска и указать в сообщении контакты коллег, к которым можно обратиться во время вашего отсутствия. > [!NOTE] > Администратор почтового домена также может [включить или выключить автоответчик](https://timeweb.cloud/docs/mail/mail-settings/autoreply) для ящика через панель Timeweb Cloud. Для этого: 1. Кликните на иконку профиля справа вверху и выберите «Настройки». ![4bcb86d1 E1fa 48ba 8b37 78993c59b566](https://content.timeweb.com/assets/c80f825e-d55b-4784-9771-02a1bade8a57.png?width=1649&height=737) 2. Перейдите на вкладку «Автоответчик» и включите опцию. ![9bd94de4 Bb3a 4679 A6e5 Ac6441095e13](https://content.timeweb.com/assets/57399897-3975-4e99-9a43-947f846476a8.png?width=1288&height=710) 3. Введите необходимый текст сообщения, включая желаемую подпись. > [!NOTE] > **Обратите внимание**: автоответчик не будет использовать подпись, указанную в настройках ящика. Задайте текст автоответа сразу с нужной подписью и всеми необходимыми контактами. 4. Нажмите «Сохранить». **Отключить автоответчик** можно в любой момент в этом же разделе. ## Пересылка писем в Telegram Вы можете настроить пересылку писем (всех либо конкретных, в зависимости от заданных параметров), в свой Telegram-аккаунт. Для этого нужно выполнить следующее. ### Шаг 1. Привязка Telegram-аккаунта 1. Кликните на иконку профиля справа вверху. 2. Выберите «Настройки». ![4bcb86d1 E1fa 48ba 8b37 78993c59b566](https://content.timeweb.com/assets/c80f825e-d55b-4784-9771-02a1bade8a57.png?width=1649&height=737) 3. Перейдите на вкладку «Безопасность» и нажмите «Настроить». ![Eb2daf36 21b4 477a 801a 44ec6ea5c986](https://content.timeweb.com/assets/63881703-e8df-4d9b-af21-ee850b714a5f.png?width=1202&height=671) 4. Отсканируйте QR-код или перейдите по предложенной ссылке. Telegram-бот `@MailTimeweb_bot` сообщит, что ваш ящик успешно привязан. ### Шаг 2. Настройка фильтров 1. В разделе «Настройки» перейдите на вкладку «Фильтры» и нажмите «Создать фильтр». ![C2eeb8a1 662d 42e6 8f90 76ce5ddc22ff](https://content.timeweb.com/assets/39a5c635-db7f-4b5c-82fe-22d5743f583c.png?width=1196&height=698) 2. Укажите необходимые условия в блоке «Если». Они задают, какие письма нужно дублировать в Телеграм (например, письма от конкретного отправителя или с определенной темой). Можно добавить несколько условий для точной настройки фильтра. 3. В блоке «Тогда» включите действие «Отправить в Telegram». 4. Кликните в поле ниже и выберите нужный аккаунт. 5. Нажмите «Создать фильтр». ![F81001b6 Ac1b 443d 937e 1a31acd8e7c4](https://content.timeweb.com/assets/cc9f6db6-64e2-4245-91c2-6e7bd4e2089c.png?width=1848&height=1199) Если потребуется прекратить пересылку писем в Telegram, вы можете [выключить](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/filters#vkluchenie-i-vykluchenie-filtrov) созданный фильтр, [удалить](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/filters#udalenie-filtrov) его или отвязать аккаунт по инструкции ниже. ### Отвязка Telegram-аккаунта Вы можете в любой момент отвязать свой Telegram-аккаунт. Для этого: 1. Кликните на значок профиля справа вверху и выберите «Настройки». 2. Перейдите на вкладку «Безопасность» и в пункте «Отправка писем в Telegram» кликните «Настроить». ![6adc4c0f 830d 43b3 814e Fdc239860c50](https://content.timeweb.com/assets/3b419097-f8ad-4e44-b161-2d96720631be.png?width=1210&height=718) 3. Наведите курсор на аккаунт и нажмите «Отвязать». ![F1cc4f1e B5ed 4e28 Af08 Cacb8d16ccfa](https://content.timeweb.com/assets/9bff9ead-523e-4eb1-a23b-facc62ae43ac.png?width=1338&height=689) ## Отправка письма группе контактов Вы можете массово отправлять письма контактам, которым присвоена [одна и та же метка](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/contacts#gruppy-metki-kontaktov). Чтобы отправить письмо **всем контактам из группы**: 1. Нажмите «Написать» в правом верхнем углу. 2. В поле «Кому» введите название нужной метки и выберите ее в выпадающем списке. ![B4a10732 50cc 4c62 Bf35 7bb6d78b2490](https://content.timeweb.com/assets/8c6dad45-5817-41b2-bd57-8f3f610b056a.png?width=637&height=869) Чтобы отправить письмо **отдельным контактам** **из группы**: 1. Перейдите в раздел «Контакты» → «Все контакты». ![83507fdc 5c26 4336 9a42 Ff39181b20a5](https://content.timeweb.com/assets/e663ab80-4d73-4ff5-99d6-b599ac78fb19.png?width=1648&height=159) 2. Кликните на нужную метку в меню слева. 3. Отметьте контакты, которым вы хотите отправить письмо. ![B1ab130e C9d0 4cbc A778 A4ca15ea952c](https://content.timeweb.com/assets/794367cf-f77c-4e23-a6bc-bef5b9c2e739.png?width=1428&height=845) 4. Нажмите «Написать письмо выбранным». ![371237f3 1d86 418d B919 0ed26cd0a6fa](https://content.timeweb.com/assets/413c4712-58f6-4cd1-a74d-774dd6236d72.png?width=1428&height=845) ## Перевод писем В интерфейсе доступен автоматический перевод писем между любыми языками. Опция становится доступна, когда язык письма отличается от языка интерфейса. ![F09fab03 0714 484f 9150 F6ee55772f0a](https://content.timeweb.com/assets/decbd2c4-80c7-4d50-8335-c1a5abacf636.png?width=1047&height=666) По клику письмо будет переведено на указанный язык. Вы также можете перевести письмо и на любой другой язык — для этого после перевода нажмите на иконку с шестеренкой и выберите нужный: ![Bee12474 D321 4d58 982b A170b1f38074](https://content.timeweb.com/assets/08f7a0cf-113f-40e9-8ff6-fcd278e5464c.png?width=1040&height=695) ## Цепочки писем Письма в рамках переписки с одним и тем же адресатом внутри одной темы автоматически собираются в цепочки. При этом в списке писем будет отображаться значок с количеством писем в цепочке. ![99869525 9ea3 44b7 Ab85 Fd248aea53c7](https://content.timeweb.com/assets/e04fdd7c-25d3-4a6a-a958-10140c940aa2?width=1023&height=456) Когда вы открываете такое письмо, вы также увидите список остальных писем из этой цепочки. Письма, отправленные или полученные *до* текущего письма, будут отображаться сверху над ним; письма, отправленные или полученные *после* текущего письма — под ним. Чтобы развернуть конкретное письмо из цепочки, кликните на него. ### Отключение цепочек При необходимости цепочки можно отключить. Для этого: 1. Кликните на значок аккаунта справа вверху и выберите «Настройки». 2. Прокрутите вниз до пункта «Цепочки писем» и отключите опцию «Группировать письма в цепочки». ![De369bc7 8b3d 4ffc Afd9 89b11072692c](https://content.timeweb.com/assets/5040e769-f796-42ba-9e6b-924b704f1c0a.png?width=1243&height=772) ## Боковая панель На широких дисплеях (от 1640 px) при открытии письма в правой части экрана отображается боковая панель с информацией обо всех собеседниках в этом письме или цепочке писем. ![A29b60f9 C4ca 4998 829a 6ae8be353006](https://content.timeweb.com/assets/38d0d764-e0c3-4b3b-8163-845aaf6aafe9.png?width=1700&height=691) - Если собеседник один — боковая панель отображает карточку контакта и историю переписки. - Если участников несколько — панель отображает список всех собеседников, а по клику на имя открывает карточку контакта и историю общения. ## Вложения в письмах Максимальный размер вложения при работе с [mail.timeweb.com](https://mail.timeweb.com/) — 1 ГБ. Небольшие файлы будут прикреплены к письму как обычно. Файлы размером больше 25 МБ будут загружены в облако, и получателю будет доступна ссылка для скачивания, действительная 30 дней. К каждому письму можно приложить до 10 вложений по ссылке. Количество обычных вложений не ограничено. Общий размер письма не должен превышать 35 МБ. ![49438594 0c27 41af 9c28 Ebbf5274c4af](https://content.timeweb.com/assets/e0087cfb-3845-4474-9ee4-8b097e69ee9e.png?width=592&height=690) ## Скачивание писем Вы можете скачать письмо в формате .eml на свое устройство. Для этого откройте нужное письмо, кликните на три точки справа вверху и выберите «Скачать письмо». ![C4caaf37 1a03 4705 9eff 3ffdf16c6357](https://content.timeweb.com/assets/5a6c5ed6-4b84-4449-be48-61b92b10fb33.png?width=1180&height=776) ## Печать писем Чтобы распечатать письмо, откройте нужное письмо и кликните на значок принтера справа вверху. ![B727088e 5529 4b09 9ced 148beddda231](https://content.timeweb.com/assets/f069a8b9-5683-4e61-a175-49e7e2ffea45.png?width=1172&height=770) ## Пометить непрочитанным Откройте нужное письмо и кликните на иконку «Сделать непрочитанным» над письмом. ![E6e4b247 Ce2c 409e A21b F14c179fe883](https://content.timeweb.com/assets/a001254d-7468-45b3-a7fd-ed5987709659.png?width=1172&height=770) ## Пометить важным Вы можете помечать письма как важные, чтобы удобно их находить в дальнейшем. Чтобы отметить письмо, кликните на значок закладки. Это можно сделать в любом удобном месте: в общем списке писем, в меню над письмом или внутри конкретного письма. ![1a66d020 60af 4aac A523 B7f589cc24c0](https://content.timeweb.com/assets/9b5c7124-f1c0-4edd-be4d-3161a430ceed.png?width=1231&height=780) Отмеченное письмо будет подсвечено красным флажком в общем списке писем, а также станет доступно в папке «Важные» в левом меню. ## Групповые операции над письмами Вы можете выделить несколько писем в папке, чтобы выполнить над ними определенную операцию. 1. В списке писем отметьте нужные письма, поставив галочку слева. 2. В меню сверху выберите нужное действие. ![8bbd074d 43c4 4ea6 9267 04f3247df44a](https://content.timeweb.com/assets/fbd1e580-ab18-450d-8257-1e2cf43aa40d.png?width=1230&height=773) ## Сортировка писем по папкам По умолчанию созданы семь основных папок: Входящие, Архив, Черновики, Отправленные, Спам, Корзина, Важные. Эти папки невозможно удалить или переименовать. Вы можете создавать собственные папки и управлять ими. ### Создание папок 1. Кликните на значок плюса под списком основных папок. 2. Укажите имя папки и ее расположение, выбрав, в какую из существующих папок она должна быть вложена. 3. Нажмите «Создать папку». ![124a1502 271a 48de B024 4abd39e2bf5c](https://content.timeweb.com/assets/c035e417-c183-4799-bdc0-09c9275aaa9a?width=1920&height=884) ### Перемещение писем в папку Письма можно добавлять в папки [а](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail#upravlenie-filtrami)[втоматически с помощью фильтров](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/filters) либо вручную: 1. Откройте нужное письмо и кликните на иконку с папкой в верхнем меню. 2. В выпадающем списке кликните на папку, в которую нужно переместить письмо. ![1435f41d 8e3a 4b52 9381 Fbb8dd6341ab](https://content.timeweb.com/assets/c6c69d91-66b3-472d-b599-d40c9f3b07b5.png?width=1232&height=740) ### Изменение папок 1. Чтобы переименовать созданную папку или изменить ее расположение, кликните на три точки и выберите «Редактировать». 2. В открывшемся окне укажите нужные параметры. 3. Нажмите «Сохранить изменения». ### Удаление папок 1. Чтобы удалить папку, кликните на три точки и выберите «Удалить». 2. На следующем шаге подтвердите удаление, нажав «Удалить». > [!NOTE] > Будьте внимательны! Все письма, размещенные в удаляемой папке, будут безвозвратно удалены, минуя «Корзину». ## Указание имени отправителя Вы можете указать свое имя в настройках ящика — тогда получатели письма будут видеть ваше имя, а не почтовый адрес, в графе «Отправитель». Для этого: 1. Кликните на значок аккаунта в правом верхнем углу и выберите «Настройки». 2. Перейдите на вкладку «Личные данные». 3. Заполните нужные поля и сохраните изменения. ![4471b200 F35a 4b47 B3cf 532a71dca01c](https://content.timeweb.com/assets/d0adf995-ee63-48c8-a5de-5be6fe7d3bdf.png?width=1167&height=710) ## Удаление писем Удалить письмо можно следующими способами: - В списке писем кликните на нужном письме правой кнопкой мыши и нажмите «Удалить». ![2ca705bf 7f49 45fa Bd0b 94fc16750df9](https://content.timeweb.com/assets/0d573c55-5440-433d-a80e-aaa39951fb4d.png?width=1229&height=780) - Откройте нужное письмо и кликните «Удалить» в верхнем меню. ![7d730348 6e87 4acc 8b21 Ba8cfc5a88a7](https://content.timeweb.com/assets/5007cb3a-f14b-4787-9498-99b9390b09a7.png?width=1229&height=723) Письмо будет перемещено в «Корзину». # Просмотр технических заголовков Source: https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/email-headers Чтобы просмотреть технические заголовки письма: 1. Откройте нужное письмо. 2. Кликните на три точки справа вверху. 3. Выберите «Оригинал письма». ![9d784c68 F1df 4aae 9edf 83d929254075](https://content.timeweb.com/assets/2dedf88e-a326-45a3-887e-41d6d3677781.png?width=1230&height=779) Техническая информация о письме откроется в новой вкладке. # Управление фильтрами Source: https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/filters Вы можете создавать фильтры, чтобы обрабатывать входящие письма в соответствии с заданными вами параметрами. Например, письма от конкретного отправителя можно пересылать на другой ящик, письма с определенной темой — загружать в конкретную папку и так далее, в зависимости от ваших потребностей. ## Создание фильтра из письма Перейти к созданию фильтра можно из любого письма: 1. Откройте письмо, для которого нужно создать фильтр. 2. Кликните на значок с тремя точками справа вверху. 3. Выберите «Настроить фильтр». ![F98c7a3f 37fc 4173 B35b 5e074f070899](https://content.timeweb.com/assets/13704ebe-fdec-4d2c-9616-b8d3798bb604.png?width=1230&height=779) 4. Система предложит два условия по умолчанию. Проверьте, подходят ли они вам, при необходимости скорректируйте или добавьте новые. Например: - «Если поле «От кого» содержит определенного отправителя» (укажите в условии его ящик). - «Если тело письма содержит определенное слово или фразу» (укажите в условии это слово/фразу). ![6b46d671 E9ed 44f5 B0f7 C702d68ad2da](https://content.timeweb.com/assets/e0d226cf-204a-45a2-b639-55c94a37983f.png?width=1573&height=809) 5. Выберите, какое действие (или действия) необходимо выполнить с письмом, которое подходит под заданные условия, и включите нужную опцию. 6. Если вы хотите применить правило не только к новым письмам, но и ко всем, которые уже получены, включите опцию «Применить к существующим письмам». 7. Укажите, должно ли выполняться только одно условие или все заданные, чтобы фильтр был применен. 8. Нажмите «Создать фильтр». ## Создание фильтра в настройках Вы также можете начать создание фильтра из настроек ящика. Для этого: 1. Кликните на значок аккаунта в правом верхнем углу и выберите «Настройки». 2. Перейдите на вкладку «Фильтры» и нажмите «Создать фильтр». 3. Задайте необходимые параметры так же, как описано выше. ## Включение и выключение фильтров Сразу после создания фильтр будет включен. Если в дальнейшем потребуется приостановить его работу, вы можете сделать его неактивным. Для этого: 1. Кликните на значок аккаунта в правом верхнем углу и выберите «Настройки». 2. Перейдите на вкладку «Фильтры». 3. Найдите нужный фильтр и переведите тумблер в положение «Выключено». ![017170ae E6c2 4380 Be56 Ec11b9ce0c6b](https://content.timeweb.com/assets/22d7dcab-e52a-4145-9e7d-43c1c5994129.png?width=1108&height=661) После вы в любой момент сможете включить фильтр снова, и он продолжит применяться к письмам. ## Изменение фильтров Чтобы изменить созданный фильтр: 1. Кликните на значок аккаунта в правом верхнем углу и выберите «Настройки». 2. Перейдите на вкладку «Фильтры». 3. Найдите нужный фильтр в списке и кликните на три точки справа. 4. Выберите «Редактировать». 5. Внесите необходимые правки и сохраните изменения. ## Удаление фильтров Чтобы временно остановить работу фильтра, его можно [выключить](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/filters#vkluchenie-i-vykluchenie-filtrov). Если же фильтр больше не нужен, вы можете удалить его. 1. Кликните на значок аккаунта в правом верхнем углу и выберите «Настройки». 2. Перейдите на вкладку «Фильтры». 3. Найдите нужный фильтр в списке и кликните на три точки справа. 4. Выберите «Удалить». > [!NOTE] > Фильтр будет удален сразу, без дополнительного подтверждения. # Управление контактами Source: https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/contacts В разделе «Контакты» вы можете добавлять новые контакты в адресную книгу, редактировать существующие и удалять их, а также добавлять контакты в группы. ## Создание контакта Контакты ваших корреспондентов — тех, кому вы хоть раз отправляли письмо или от кого получали письма — добавляются в «Контакты» автоматически. Помимо этого вы можете добавлять контакты вручную. 1. Нажмите на «Контакты» в верхнем меню, а затем на значок плюса. ![7c41381e 004d 4df8 808b 1d31736dc732](https://content.timeweb.com/assets/63062d1c-498a-4e7a-a195-8604dbbbe066.png?width=1452&height=755) 2. Заполните данные контакта — как минимум, «Email». 3. При необходимости присвойте контакту одну или несколько меток в поле «Метка». 4. Нажмите «Сохранить». ## Редактирование контакта Вы всегда можете внести изменения в созданные контакты, в том числе в те, которые были добавлены автоматически. 1. Перейдите в раздел «Контакты» → «Все контакты» 2. Найдите нужный контакт в списке и кликните на иконку редактирования. ![325e0479 B803 489e B976 7194d7dbf16f](https://content.timeweb.com/assets/9b671760-3d9b-476a-8916-c2e18867e3ab.png?width=1495&height=755) 3. Внесите необходимые изменения и нажмите «Сохранить». ## Удаление контакта 1. Перейдите в раздел «Контакты» → «Все контакты». 2. Наведите курсор на контакт и кликните на значок удаления. 3. Подтвердите действие. Контакт будет удален из вашей адресной книги. Если вы получите новое письмо от этого контакта или напишите ему сами, контакт снова будет добавлен. ## Группы (метки) контактов Для удобства вы можете распределять контакты по группам (например, «Работа», «Личные» и так далее, в зависимости от ваших потребностей), присваивая им соответствующие метки. ### Создание метки 1. Перейдите в раздел «Контакты» → «Все контакты». ![83507fdc 5c26 4336 9a42 Ff39181b20a5](https://content.timeweb.com/assets/e663ab80-4d73-4ff5-99d6-b599ac78fb19.png?width=1648&height=159) 2. В меню слева нажмите на значок плюса у пункта «Мои метки». ![A6fa373d 0595 4d92 8047 64419707c1ce](https://content.timeweb.com/assets/d5d8d850-3c04-4763-af8f-147533805304.png?width=1465&height=719) 3. Укажите название метки и нажмите «Создать метку». ### Присвоение метки контакту Вы можете добавить метку контакту при его создании или редактировании: 1. Перейдите в раздел «Контакты» → «Все контакты». ![83507fdc 5c26 4336 9a42 Ff39181b20a5](https://content.timeweb.com/assets/e663ab80-4d73-4ff5-99d6-b599ac78fb19.png?width=1648&height=159) 2. Наведите курсор на нужный контакт и нажмите на иконку редактирования. ![325e0479 B803 489e B976 7194d7dbf16f](https://content.timeweb.com/assets/88aa1be4-2a98-432b-b2c7-5a20c2ee7695.png?width=1495&height=755) 3. В поле «Метка» выберите нужную метку из списка (можно выбрать несколько) и сохраните изменения. ![Без Названия](https://content.timeweb.com/assets/88abe1e3-657e-4f61-acca-293471ef4d35.png?width=1465&height=755) ### Изменение метки Вы можете скорректировать название метки. Для этого: 1. Перейдите в раздел «Контакты» → «Все контакты». 2. В меню слева кликните правой кнопкой мыши по нужной метке и выберите «Редактировать». 3. Внесите правки и нажмите «Сохранить изменения». ### Удаление метки Чтобы удалить одну из созданных групп контактов: 1. Перейдите в раздел «Контакты» → «Все контакты». 2. В меню слева кликните правой кнопкой мыши по нужной метке и выберите «Удалить». 3. Подтвердите удаление в новом окне. Контакты, добавленные в эту группу, удалены не будут — они по-прежнему будут доступны в разделе «Все контакты» и в других группах, в которые они добавлялись. ## Добавление в белый список Чтобы письма от определенного получателя или всех ящиков определенного домена никогда не попадали в спам, вы можете добавить ящик или домен в белый список. Для этого: 1. Кликните на иконку профиля справа вверху и выберите «Настройки». 2. Перейдите на вкладку «Белый список». 3. Введите нужный ящик и нажмите «Добавить». - Если нужно добавить в белый список все ящики на конкретном домене, просто укажите этот домен. Например: `timeweb.cloud`. ![4c7a0efa B914 452b Ade7 Cb3977e1c399](https://content.timeweb.com/assets/4fdf177b-1501-4ad1-a614-07f6bbf6c924.png?width=1230&height=691) Чтобы удалить адрес из белого списка, кликните на значок удаления справа: ![C9a895ac 7bf8 4cd2 Ac57 39f4271053c9](https://content.timeweb.com/assets/712dc0ea-dbd7-496b-84bc-c9af12b17a25.png?width=1230&height=691) ## Добавление в черный список Вы можете заблокировать любого отправителя, добавив его в черный список. В этом случае почта, отправленная от его имени, больше не будет приходить, а уже полученные письма будут удалены из папки «Входящие». Также можно заблокировать целый домен, чтобы никакие ящики с этого домена не могли вам писать. Заблокировать отправителя можно двумя способами. **Из конкретного письма:** 1. Кликните на письмо от этого отправителя и нажмите «Заблокировать» в верхнем меню. ![Dba1509a D8e6 46e3 A7f3 Bf2003ed7356](https://content.timeweb.com/assets/0f26040b-faba-4e72-bc99-e67a4bc36eb7.png?width=1538&height=755) 2. В следующем окне подтвердите блокировку. **Из настроек ящика:** 1. Кликните на значок аккаунта справа вверху и выберите «Настройки». 2. Перейдите на вкладку «Черный список». 3. Введите email и нажмите «Заблокировать». Вы также можете выбрать ящик из списка недавних отправителей и кликнуть «В блок». - Если нужно добавить в черный список все ящики на конкретном домене, просто укажите этот домен. ![2c415e56 Aeaf 4e35 8d32 1bf9920ddd4e](https://content.timeweb.com/assets/84d2fdc3-e423-4d30-9acc-da8b73085c33.png?width=1654&height=824) ### Удаление из черного списка 1. Кликните на значок аккаунта справа вверху и выберите «Настройки». 2. Перейдите на вкладку «Черный список». 3. Кликните на три точки у нужного пользователя и нажмите «Разблокировать». ![97789ff6 B07e 45a6 9bfa 476fd62b9627](https://content.timeweb.com/assets/a80fb4cd-0eeb-47fd-a1be-036a6bf2c89e.png?width=1653&height=869) # Смена пароля Source: https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/password-change Чтобы изменить пароль от ящика: 1. Кликните на значок аккаунта в правом верхнем углу и выберите «Настройки». ![4bcb86d1 E1fa 48ba 8b37 78993c59b566](https://content.timeweb.com/assets/c80f825e-d55b-4784-9771-02a1bade8a57.png?width=1649&height=737) 2. Перейдите на вкладку «Безопасность» и нажмите «Изменить пароль». ![Безопасность — Timeweb Mail 2026 08 03 11 18](https://content.timeweb.com/assets/97e66391-22c2-4eba-b166-b0aece479787.png?width=1158&height=843) 3. Введите текущий пароль, затем дважды — новый пароль. 4. Нажмите «Сменить пароль». > [!NOTE] > Если вы не знаете текущий пароль, можно [пересоздать пароль для ящика](https://timeweb.cloud/docs/mail/mail-settings/change-password) через панель управления Timeweb Cloud. # Настройка двухфакторной аутентификации Source: https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/2fa При включении двухфакторной аутентификации (2FA) при каждом логине в почтовый ящик потребуется вводить проверочный код, который можно получать в Telegram или по смс. > [!NOTE] > Получать смс с кодами можно только на российские номера. Если у вас номер другой страны, используйте 2FA через Telegram. ## 2FA через Telegram Чтобы подключить 2FA: 1. Кликните на значок аккаунта в правом верхнем углу и выберите «Настройки». ![4bcb86d1 E1fa 48ba 8b37 78993c59b566](https://content.timeweb.com/assets/c80f825e-d55b-4784-9771-02a1bade8a57.png?width=1649&height=737) 2. Перейдите на вкладку «Безопасность» и включите опцию «Двухфакторная аутентификация». ![17e7c95c E0ff 4f4f 9f0b 07c85436587e](https://content.timeweb.com/assets/2c944484-99cb-47d9-99c8-d6b7dbefa4a6.png?width=1285&height=703) 3. Выберите способ получения кода — через Telegram. ![B303e7d3 538f 4f8a Bd5a 37cb83634470](https://content.timeweb.com/assets/0629355b-b910-43d7-9387-b3577bd48d2a.png?width=1321&height=658) 4. Выберите аккаунт: - Если нужный аккаунт уже привязан, наведите курсор на него и нажмите «Выбрать». ![C016681a 451e 4bba B729 3611036d7152](https://content.timeweb.com/assets/d73212f7-d30e-47e8-87cf-b1b80661e878.png?width=1293&height=666) 1. - Если аккаунт еще не привязан — нажмите «Подключить новый аккаунт» и отсканируйте QR-код либо перейдите по ссылке. Бот подтвердит, что аккаунт успешно привязан. 5. В Telegram придет код подтверждения. Введите его в форму и нажмите «Подтвердить». ![865a0c1e Ce05 4985 90e1 5d7062abe6a1](https://content.timeweb.com/assets/9252aa6c-2427-41e0-aaf4-ae1a7860c122.png?width=1313&height=679) ## 2FA через смс Чтобы подключить 2FA: 1. Кликните на значок аккаунта в правом верхнем углу и выберите «Настройки». ![4bcb86d1 E1fa 48ba 8b37 78993c59b566](https://content.timeweb.com/assets/c80f825e-d55b-4784-9771-02a1bade8a57.png?width=1649&height=737) 2. Перейдите на вкладку «Безопасность» и включите опцию «Двухфакторная аутентификация». ![17e7c95c E0ff 4f4f 9f0b 07c85436587e](https://content.timeweb.com/assets/2c944484-99cb-47d9-99c8-d6b7dbefa4a6.png?width=1285&height=703) 3. Выберите способ получения кода — по номеру телефона ![B303e7d3 538f 4f8a Bd5a 37cb83634470](https://content.timeweb.com/assets/0629355b-b910-43d7-9387-b3577bd48d2a.png?width=1321&height=658) 4. Введите номер телефона и нажмите «Получить код подтверждения». ![Cfb3726f 28b2 4bf6 A6f2 A153811bda2c](https://content.timeweb.com/assets/f889daa2-277d-4a6f-bbee-1c4c792d8d90.png?width=1298&height=678) 5. Введите код из смс. ## Несколько способов подтверждения Вы можете настроить несколько способов получения кода (несколько номеров или ТГ-аккаунтов) и при входе выбирать нужный. Для этого нажмите «Добавить еще», а затем выполните настройку по инструкциям выше. ![41c74840 5e60 44cb 991d F9944b2b940b](https://content.timeweb.com/assets/a3eeec97-a163-406a-a525-9281144e0413.png?width=1202&height=743) ## Отключение 2FA Вы можете: - Полностью отключить двухфакторную аутентификацию для ящика, переключив тумблер. В этом случае все настроенные способы получения кодов сохранятся, и при повторном включении 2FA продолжат работать. ![Fa60371a 6e6f 4c54 B9ca Dddc00fa7a6d](https://content.timeweb.com/assets/10710345-16d2-4dc9-bd41-21cc732844b8.png?width=1200&height=742) - Удалить тот или иной способ получения кодов, кликнув на значок удаления. Если он потребуется снова, его будет нужно настроить заново. ![2e0f7987 6464 42db 9952 35c9dff2b6ee](https://content.timeweb.com/assets/d43dbbf6-e03b-4606-b799-438b6db3bace.png?width=1200&height=742) В обоих случаях для подтверждения действия потребуется ввести пароль для почтового ящика. # Привязка дополнительных ящиков Source: https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/link-mailboxes Вы можете привязать дополнительные ящики к своему основному ящику, чтобы легко переключаться между ними в одном веб-интерфейсе. ![Без Названия (1)](https://content.timeweb.com/assets/54eb1207-d22a-42be-bc71-5787ac38b851.png?width=1465&height=755) Привязка никак не влияет на движение почты и не подключает никакие пересылки писем. ## Привязка ящика 1. Кликните на иконку профиля справа вверху и выберите «Добавить аккаунт». ![146c736d Ce99 4467 A735 B84c7a51ae32](https://content.timeweb.com/assets/d4cbcd76-a2a1-41c2-a0ac-ef3aa4278ab2.png?width=1465&height=755) 2. Введите имя ящика и его пароль и нажмите «Добавить аккаунт». ## Отвязка ящика Чтобы отвязать ящик: 1. Кликните на иконку профиля справа вверху и нажмите «Настроить». ![4d5e93d6 B97c 4086 B9d3 672f524405d3](https://content.timeweb.com/assets/2951b9ce-f28e-4ecb-bdce-2501d885041f.png?width=1465&height=755) 2. Наведите курсор на ящик и нажмите «Отвязать». ![6d81a577 76b8 4858 9c94 B2d770ec5aeb](https://content.timeweb.com/assets/e3278ea1-1068-4bec-90b2-76f81529ed9d.png?width=442&height=237) # Работа с календарем Source: https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/calendar Календарь — встроенный инструмент Timeweb Mail для планирования встреч, задач и событий. Вы можете создавать события, приглашать участников, настраивать напоминания и делиться доступом к календарям. Календарь поддерживает несколько уровней совместной работы: от приглашения отдельных пользователей на конкретное событие до создания общих календарей, которые видят и редактируют сразу несколько человек. Календарь интегрирован с почтой: приглашения приходят как письма, из письма можно сразу создать событие, а уведомления приходят прямо в интерфейс почты. Календарь доступен: - Из интерфейса Timeweb Mail: кликните «Календарь» справа вверху → откроется боковая панель с календарем для быстрого просмотра → нажмите «В календарь». - По прямой ссылке: [https://mail.timeweb.com/calendar](https://mail.timeweb.com/calendar) ## Режимы отображения На верхней панели вы можете переключаться между режимами отображения календаря: ![Календарь Режимы](https://content.timeweb.com/assets/d8129a06-19fc-4a32-ae68-97ae3639ba72.png?width=1920&height=869) | **Вид** | **Когда удобно использовать** | | --- | --- | | **Неделя** | Планирование на ближайшие 7 дней | | **Месяц** | Общий обзор загруженности | | **Год** | Планирование на длительный период | | **Расписание** | Просмотр всех предстоящих событий в виде списка | ## События ### Создание события Чтобы создать событие: 1. Перейдите [в календарь](https://mail.timeweb.com/calendar). 2. Нажмите «Добавить событие» слева вверху либо кликните на нужную ячейку календаря. 3. Заполните основные поля: - Название события. - Дата и время начала и окончания. - (Опционально) Задайте регулярность повторения события. - (Опционально) Добавьте участников, описание, место проведения или ссылку на видеовстречу. 4. Нажмите «Сохранить». Событие сразу появится в календаре. Если вы указали участников, им автоматически придут приглашения на почту. Пользователи имеют следующие права доступа к событию: - **Организатор** может [редактировать](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/calendar#izmenenie-sobytiya) и [удалять](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/calendar#udalenie-sobytiya) событие, [управлять участниками](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/calendar#upravlenie-uchastnikami). - **Участники** могут просматривать событие и менять свой [статус участия](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/calendar#statusy-uchastnikov). ### Изменение события Чтобы изменить событие: 1. Перейдите [в календарь](https://mail.timeweb.com/calendar). 2. Кликните по нужному событию. 3. Измените необходимые параметры: дату, время, список участников, уведомления и др. 4. Нажмите «Сохранить». Если событие повторяющееся, система предложит выбрать: - Изменить только это событие - Изменить это и все последующие события - Изменить все события #### **Быстрое изменение** Если нужно изменить только время, вы можете просто перетащить событие в нужную ячейку: 1. В своем почтовом ящике кликните «Календарь» справа вверху. 2. Справа откроется панель календаря — перетащите событие на нужное время. ![Time Change](https://content.timeweb.com/assets/79e16244-ffc1-42f6-9167-b7a4341a10d2.png?width=1920&height=869) Участникам придут уведомления об изменении события. ### Удаление события 1. Перейдите [в календарь](https://mail.timeweb.com/calendar). 2. Кликните по нужному событию. 3. Нажмите на значок корзины справа. ![Удаление события](https://content.timeweb.com/assets/99af0bd0-7ae4-4f0a-a0d2-87112d84c053.png?width=545&height=786) 4. Если событие повторяющееся, выберите: - Удалить только это событие - Удалить это и все последующие повторения - Удалить все повторения события 5. Нажмите «Удалить» для подтверждения. ### Повторяющиеся события При [создании](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/calendar#sozdanie-sobytiya) или [редактировании](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/calendar#izmenenie-sobytiya) события можно настроить его повторение: - Каждый день - Каждую неделю - С понедельника по пятницу - Каждое выбранное число - Каждое выбранное число месяца - Свое правило (например, каждый второй вторник месяца) ### Напоминания Для каждого события при его [создании](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/calendar#sozdanie-sobytiya) или [редактировании](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/calendar#izmenenie-sobytiya) можно добавить одно или несколько напоминаний: за 5, 10, 15, 30 минут или 1 час. Напоминание придет на почту всем участникам события. ![Напоминания о событии](https://content.timeweb.com/assets/ac7de5e4-c527-4e93-8733-e20f4ffd080f.png?width=546&height=765) ## Участники событий ### Приглашение участников При [создании](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/calendar#sozdanie-sobytiya) или [редактировании](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/calendar#izmenenie-sobytiya) события вы можете добавить участников: 1. В поле «Выберите участников» / «Добавить участника» начните вводить имя или email. 2. Выберите нужный контакт из списка или введите адрес вручную. 3. Добавьте столько участников, сколько нужно. 4. Сохраните изменения. Всем указанным участникам автоматически отправится приглашение на почту. ### Статусы участников Участники могут ответить на приглашение одним из вариантов: - Приду - Возможно - Не приду В карточке события отображается статус всех участников. ![Статусы участников](https://content.timeweb.com/assets/3ba6f9ca-5884-48ad-ac79-31eefa3323a8.png?width=547&height=784) ### Управление участниками Организатор может управлять участниками события: - Добавлять новых участников ![Добавление участника](https://content.timeweb.com/assets/73cc26a7-8809-49e9-b106-357f6e80b4af.png?width=544&height=783) - Удалять участников ![Удаление участников](https://content.timeweb.com/assets/3b947e4e-1904-4136-93a1-268904225778.png?width=538&height=780) Уведомления об изменениях автоматически отправляются всем затронутым участникам. ## Календари Вы можете предоставлять доступ к календарю другим пользователям, а также создавать дополнительные календари, например, для отдельного проекта или команды. ### Создание календаря Чтобы создать новый календарь: 1. Перейдите [в календарь](https://mail.timeweb.com/calendar). 2. В меню слева нажмите «Добавить календарь». 3. Выберите «Создать календарь». ![Создать Календарь](https://content.timeweb.com/assets/6fa0f195-f765-4fa0-91e6-4b704bbaf677.png?width=1920&height=869) 4. Укажите название и выберите цвет, которым будут отмечаться события этого календаря в сетке. 5. Сохраните изменения. После создания календарь появится в списке слева. Его название, цвет и другие настройки можно изменить в любой момент. ### Общие календари Общий календарь — это календарь, который одновременно доступен нескольким пользователям, каждому из которых можно назначить свой уровень прав: от просмотра занятости до полного редактирования. В отличие от приглашения на отдельные события, общий доступ открывается сразу ко всему календарю. 1. Перейдите [в календарь](https://mail.timeweb.com/calendar). 2. В меню слева нажмите на три точки рядом с нужным календарем. 3. Выберите «Настройки и общий доступ». ![Настройки Доступа](https://content.timeweb.com/assets/429fd3c2-38f5-4c2c-bde4-9c545de8137a.png?width=1920&height=869) 4. В блоке «Имеют доступ к календарю» нажмите «Добавить пользователя». 5. Введите e-mail пользователя. 6. Выберите уровень прав: - **Только занятость** — пользователь видит блоки «Занято» и время события, без остальной информации. - **Просмотр** — пользователь видит события, но не может их изменять. - **Редактирование** — пользователь может создавать и изменять события. 8. Нажмите «Добавить». 9. Повторите для всех необходимых пользователей. 10. Нажмите «Сохранить настройки». При необходимости можно дать доступ для всех ящиков в рамках вашего домена. Для этого в блоке «Разрешения на доступ к событиям» поставьте галочку. Уровень разрешения выбирается из выпадающего списка рядом: - **Только занятость** — пользователь видит блоки «Занято» и время события, без остальной информации - **Все детали** — пользователь видит все детали о событиях без возможности их редактирования. После нажмите «Сохранить настройки». ### Подписка на календари Вы можете подписаться на календарь другого пользователя, если он открыл к нему доступ. 1. Перейдите [в календарь](https://mail.timeweb.com/calendar). 2. В меню слева нажмите «Добавить календарь». 3. Выберите «Подписаться на календарь». ![Подписаться На Календарь](https://content.timeweb.com/assets/26602065-ee2e-41e3-bb10-546a8c002e4b.png?width=1920&height=869) 4. Введите имя или email контакта. 5. Подтвердите подписку. Календарь появится в левой панели. Вы сможете включать и отключать его отображение с помощью галочки рядом с названием. ### Удаление календаря Чтобы удалить календарь: 1. Перейдите [в календарь](https://mail.timeweb.com/calendar). 2. В меню слева нажмите на три точки рядом с нужным календарем. 3. Выберите «Удалить». 4. Подтвердите действие. Удаление календаря необратимо удаляет все события в нем. ## Интеграции Календарь поддерживает работу с внешними сервисами с помощью следующих методов: - **CalDAV** — двусторонняя синхронизация с внешним приложением: события, измененные в календаре Timeweb или в приложении, отражаются в обе стороны. - **Экспорт по ссылке (ICS)** — одностороннее подключение: события календаря Timeweb можно посмотреть в другом приложении, но изменить их там нельзя. - **Импорт по ссылке (ICS)** — обратный сценарий: события из внешнего календаря отображаются в календаре Timeweb. ### CalDAV: подключение календаря к другим приложениям CalDAV подходит для двусторонней синхронизации с приложениями: - Google Календарь - Apple Календарь - Outlook - Mozilla Thunderbird - Другие приложения, поддерживающие CalDAV Чтобы добавить календарь Timeweb в другие сервисы и приложения: 1. Перейдите [в календарь](https://mail.timeweb.com/calendar). 2. Слева внизу нажмите «Подключить в приложении». 3. Создайте пароль приложения: укажите его имя и нажмите «Создать пароль». 4. Скопируйте созданный пароль — он больше не будет отображаться. 5. На открывшейся странице выберите инструкцию: - Mac - iPhone / iPad - Другое #### **Параметры подключения** Используйте эти параметры в любом приложении, которое поддерживает CalDAV: | **Параметр** | **Значение** | | --- | --- | | Адрес сервера | `calendar.timeweb.com` | | Логин | Ваш email | | Пароль | Скопированный пароль приложения | ### Экспорт календаря по ссылке Экспорт — это одностороннее подключение: события из календаря Timeweb можно посмотреть в другом приложении, но изменить их там нельзя. Изменения в календаре подтягиваются в подключенное приложение автоматически, но не мгновенно — обновление может занять некоторое время. Если нужна возможность создавать и редактировать события прямо из другого приложения, используйте [CalDAV](https://timeweb.cloud/docs/mail/veb-interfejs-timeweb-mail/calendar#caldav--podkluchenie-kalendarya-k-drugim-prilojeniyam). Чтобы экспортировать календарь: 1. Перейдите [в календарь](https://mail.timeweb.com/calendar). 2. В меню слева нажмите на три точки рядом с нужным календарем. 3. Выберите «Экспорт». 4. Скопируйте ссылку и добавьте ее в вашем приложении календаря (Google Calendar, Apple Calendar, Outlook и др.). ### Импорт календаря по ссылке Вы можете добавить сторонний календарь по ссылке — так же, как экспорт, это одностороннее подключение: события из внешнего календаря появляются в вашем календаре Timeweb, но изменить их отсюда нельзя. 1. Перейдите [в календарь](https://mail.timeweb.com/calendar). 2. В меню слева нажмите «Добавить календарь». 3. Выберите «Создать календарь». 4. Поставьте галочку «Импортировать из внешнего календаря». 5. Укажите ссылку на нужный календарь. 6. Сохраните изменения. События из внешнего календаря появятся в левой панели. Вы сможете включать и отключать их отображение галочкой. # Настройка почты для домена Source: https://timeweb.cloud/docs/mail/setting-up-domain-mail Настройка DNS домена для работы с почтовыми сервисами. - [Настройка DNS-записей для Yandex](https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-setting-for-yandex) - [Настройка DNS-записей для Mail.Ru](https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-settings-for-mail-ru) - [Настройка DNS-записей для Google](https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-settings-for-google) - [Настройка DNS-записей для Timeweb Cloud](https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-settings-for-timeweb-cloud) # Настройка DNS-записей для Yandex Source: https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-setting-for-yandex Для использования почты на домене в сервисе [Яндекс 360](https://yandex.ru/support/business/index.html) необходимо произвести следующие настройки. ## Подключение домена 1. В интерфейсе [admin.yandex.ru](https://admin.yandex.ru/) перейдите в раздел «Общие настройки» → «[Домены](https://connect.yandex.ru/portal/admin/domains)» и выберите (либо добавьте, если это еще не сделано) нужный домен. 2. Выберите способ подтверждения домена. Наиболее простым способом является подтверждение через DNS-запись. Скопируйте предложенное значение TXT-записи. 3. В панели управления Timeweb Cloud перейдите в раздел «[Домены и SSL](https://timeweb.cloud/my/domains/)». 4. Кликните на строку с доменом и перейдите на вкладку «DNS». 5. Нажмите на «Добавить запись», выберите «TXT» и в «Значении» укажите запись, полученную в Яндексе. ![731391ba Fe7d 4a8b 8f20 Efa24750e598](https://content.timeweb.com/assets/18d3b497-d65e-4dec-a7cc-ef59384c2931.png?width=489&height=733) 6. Сохраните изменения с помощью кнопки «Добавить». Как правило, требуется 10-15 минут, чтобы изменения вступили в силу. 7. После того, как изменения будут применены, нажмите «Запустить проверку» в Яндексе. Дождитесь подтверждения домена (как правило, выполняется очень быстро). 8. Настройте для домена DNS-записи по инструкциям ниже. ## MX-запись 1. Перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains/). 2. Кликните на строку с доменом и перейдите на вкладку «DNS». 3. Удалите имеющиеся MX-записи. 4. Нажмите на «Добавить запись», выберите «MX» и службу «Yandex»: ![De1376ae E27b 4f83 83d2 85b3e9cbbb70](https://content.timeweb.com/assets/69478f05-7e02-448a-91f6-d6938038cd5b.png?width=480&height=741) 5. Сохраните изменения с помощью кнопки «Добавить». 6. Подождите, пока изменения в DNS вступят в силу. Этот процесс может занимать до 72 часов. ## SPF-запись 1. Перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains). 2. Кликните на строку с доменом и перейдите на вкладку «DNS». 3. Удалите существующие SPF-записи (начинаются с `v=spf1`). Предварительно скопируйте их значения, если планируете отправлять почту также и с указанных в них серверов. 4. Нажмите на «Добавить запись», выберите «TXT» и разместите следующее значение: ```shell v=spf1 redirect=_spf.yandex.net ``` ![Fb1cea44 60d2 40eb A494 Ffae6aee2fbd](https://content.timeweb.com/assets/dcf2d6b5-766b-4a50-b9ad-eaf19c242e36.png?width=484&height=733) Если вы хотите отправлять письма не только с серверов Яндекса, укажите дополнительные серверы в таком формате: ```shell v=spf1 ip4:IP1 ip4:IP2 ip4:IP3 include:_spf.yandex.net ~all ``` где `IP1`, `IP2`, `IP3` — IP-адреса дополнительных серверов. 5. Сохраните изменения с помощью кнопки «Добавить». 6. Подождите, пока изменения в DNS вступят в силу. Этот процесс может занимать до 72 часов. ## DKIM-подпись 1. Получите TXT-запись с публичным ключом в интерфейсе Яндекса: - - Откройте раздел «[Домены](https://admin.yandex.ru/domains)». - Рядом с нужным доменом нажмите «Настроить DKIM». - Скопируйте значение DKIM в блоке «Настройка DKIM-подписи». 2. Перейдите в раздел «Домены и SSL» в панели управления Timeweb Cloud. 3. Кликните на строку с доменом и перейдите на вкладку «DNS». 4. Нажмите на «Добавить запись» и выберите «TXT». 5. Задайте параметры: - - в поле «Хост» выберите «Ввести вручную» и укажите `mail._domainkey`; - в поле «Значение» внесите параметры DKIM, полученные в Яндексе. ![A9d8d260 3fd7 4a17 A398 78ecfc77dced](https://content.timeweb.com/assets/ea429e1c-a071-43ce-a142-3df63ef98bf1.png?width=481&height=799) 6. Сохраните изменения с помощью кнопки «Добавить». 7. Подождите, пока изменения в DNS вступят в силу. Этот процесс может занимать до 24 часов. # Настройка DNS-записей для VK Workspace (Mail.ru) Source: https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-settings-for-mail-ru Для работы почты в сервисе VK Workspace (Mail.Ru) необходимо выполнить следующие настройки DNS для домена. ## MX-запись 1. Перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains/). 2. Кликните на нужный домен и перейдите на вкладку «DNS». 3. Удалите имеющиеся MX-записи. 4. Нажмите на «Добавить запись», в открывшемся окне выберите «MX» и службу «Mail.ru»: ![Mail Mx](https://content.timeweb.com/assets/817181b7-1e98-44da-97e1-8f2e8912c044.png?width=485&height=746) 5. Сохраните изменения с помощью кнопки «Добавить». 6. Подождите, пока изменения в DNS вступят в силу. Этот процесс может занимать до 72 часов. ## SPF-запись 1. Перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains/). 2. Кликните на нужный домен и перейдите на вкладку «DNS». 3. Удалите имеющиеся TXT-записи, начинающиеся с `v=spf1` (предварительно скопируйте их значения, если вы планируете отправлять почту также и с указанных в них серверов). 4. Нажмите на «Добавить запись», выберите «TXT» и укажите значение: ```shell v=spf1 redirect=_spf.mail.ru ``` ![Без Названия](https://content.timeweb.com/assets/fc33b74f-dc5e-4296-ac48-7cac920e4305.png?width=482&height=734) Если вы хотите отправлять письма не только с серверов Mail.ru, укажите дополнительные серверы в таком формате: ```shell v=spf1 ip4:IP1 ip4:IP2 ip4:IP3 include:_spf.mail.ru ~all ``` где `IP1`, `IP2`, `IP3` — IP-адреса дополнительных серверов. 5. Сохраните изменения с помощью кнопки «Добавить». 6. Подождите, пока изменения в DNS вступят в силу. Этот процесс может занимать до 72 часов. ## DKIM-подпись 1. В личном кабинете VK Workspace скопируйте значение DKIM в разделе «Состояние сервера». 2. В панели Timeweb Cloud перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains/). 3. Кликните на нужный домен и перейдите на вкладку «DNS». 4. Нажмите на «Добавить DNS-запись» и выберите «TXT». 5. Задайте параметры: - в поле «Хост» выберите «Ввести вручную» и укажите `mailru._domainkey`; - в поле «Значение» внесите параметры DKIM, скопированные из VK Workspace. ![A129baa1 F853 47ba 92c7 81b19d076e84](https://content.timeweb.com/assets/0dfb7d2b-ea52-4af0-b56f-811d6a7e3ef7.png?width=483&height=798) 6. Сохраните изменения с помощью кнопки «Добавить». 7. Подождите, пока изменения в DNS вступят в силу. Этот процесс может занимать до 72 часов. # Настройка DNS-записей для Google Source: https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-settings-for-google Чтобы настроить работу доменной почты в Google, выполните следующие настройки DNS. ## MX-запись 1. Перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains/). 2. Кликните на нужный домен и перейдите на вкладку «DNS». 3. Удалите имеющиеся MX-записи. 4. Нажмите на «Добавить запись», в открывшемся окне выберите «MX» и службу «Gmail»: ![Google Mx](https://content.timeweb.com/assets/b3326ffa-01ed-4cc3-881e-136b6bc1c583.png?width=482&height=840) 5. Сохраните изменения с помощью кнопки «Добавить». 6. Подождите, пока изменения в DNS вступят в силу. Этот процесс может занимать до 72 часов. ## SPF-запись 1. Перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains/). 2. Кликните на нужный домен и перейдите на вкладку «DNS». 3. Удалите имеющиеся TXT-записи, начинающиеся с `v=spf1` (предварительно скопируйте их значения, если вы планируете отправлять почту также и с указанных в них серверов). 4. Нажмите на «Добавить запись», в открывшемся окне выберите «TXT» и разместите следующее значение: ```shell v=spf1 include:_spf.google.com ~all ``` ![592bd181 Eb5b 4e0d B38e Ed887843e6c3](https://content.timeweb.com/assets/9116524f-4cf2-4164-b35a-2bc8c49040e2.png?width=483&height=732) Если вы хотите отправлять письма также и с других серверов, укажите их в таком формате: ```shell v=spf1 ip4:IP1 ip4:IP2 ip4:IP3 include:_spf.google.com ~all ``` где `IP1`, `IP2`, `IP3` — IP-адреса дополнительных серверов. 5. Сохраните изменения с помощью кнопки «Добавить». 6. Подождите, пока изменения в DNS вступят в силу. Этот процесс может занимать до 72 часов. ## DKIM-подпись 1. Создайте DKIM-ключ в консоли администратора Google Workspace по [инструкции от Google (Шаг 1)](https://support.google.com/a/answer/174124?visit_id=638882411043804066-594447073&rd=1#dkim-create-key). 2. Скопируйте значение DKIM из окна «Аутентификация электронной почты». 3. В панели управления Timeweb Cloud перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains). 4. Кликните на нужный домен и перейдите на вкладку «DNS». 5. Нажмите на «Добавить DNS-запись» и выберите «TXT». 6. Укажите параметры: - В поле «Хост» выберите «Ввести вручную» и укажите `google._domainkey`. Если при создании ключа вы использовали другой префикс, укажите его вместо `google`. - Если вы настраиваете DKIM для поддомена, то в поле «Хост» нужно внести значение вида `google._domainkey.поддомен`. Например, для поддомена `example.mydomain.ru` потребуется указать `google._domainkey.example`. - В поле «Значение» внесите параметры DKIM-ключа, скопированного из Google Workspace. ![266ff7bd 3490 4d89 Be2a D53f1aac9588](https://content.timeweb.com/assets/9cfa158a-62eb-4b36-bc60-6db718d0f7e1.png?width=485&height=798) 7. Сохраните изменения с помощью кнопки «Добавить». 8. Включите подпись сообщений электронной почты по [инструкции от Google](https://support.google.com/a/answer/174124?visit_id=638882411043804066-594447073&rd=1#dkim-turn-on-verify). # Настройка DNS для Timeweb Cloud Source: https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-settings-for-timeweb-cloud > [!NOTE] > Эта инструкция необходима в случае, если вы хотите использовать почтовый сервис Timeweb Cloud, а ваш домен делегирован на сторонние NS-серверы. > > Если домен делегирован на NS-серверы Timeweb Cloud, достаточно убедиться, что для него указаны [наши MX-записи](https://timeweb.cloud/docs/domains/dns-records-management#mx), после чего можно работать с почтой. **Шаг 1.** На стороне держателя NS-серверов пропишите для домена MX-записи Timeweb: | Приоритет | Значение записи | | --- | --- | | 10 | mx1.timeweb.ru. | | 20 | mx2.timeweb.ru. | **Шаг 2.** Добавьте домен в панель управления Timeweb Cloud в разделе «Домены и SSL» → «[Добавить домен](https://timeweb.cloud/my/domains/move)». **Шаг 3.** Дождитесь обновления DNS-записей домена, после чего [создайте почтовый ящик](https://timeweb.cloud/docs/mail/mail-settings/create-mailbox) на этом домене в разделе «[Почта](https://timeweb.cloud/my/mailman)». ![Domain](https://content.timeweb.com/assets/395ab9bb-c3dd-4ef7-bf2f-790ed2fbf0ab.png?width=1569&height=715) **Шаг 4.** При создании почтового ящика для домена будут автоматически указаны SPF и DKIM. Скопируйте значения SPF и DKIM домена в панели Timeweb Cloud. - Перейдите в раздел «Домены и SSL» и кликните на значок шестеренки у домена, чтобы открыть DNS-редактор: ![8c7a0e4e 5b88 4249 Baea 4c92807034df](https://content.timeweb.com/assets/14507a2a-057a-4fee-8986-cad86bb64d1b.png?width=1570&height=842) - Скопируйте значения SPF и DKIM: ![8c7a0e4e 5b88 4249 Baea 4c92807035df](https://content.timeweb.com/assets/455914f0-aceb-4fff-8586-ae1dfb08eadc.png?width=1559&height=791) **Шаг 5.** На стороне держателя NS-серверов создайте записи SPF и DKIM и укажите для них скопированные значения. # Настройка почтовых клиентов Source: https://timeweb.cloud/docs/mail/configuring-email-clients Вы можете работать с почтовыми ящиками, созданными в разделе «Почта», в веб-интерфейсе [mail.timeweb.com](https://mail.timeweb.com/) или с помощью почтового клиента или стороннего веб-интерфейса, настроив их по следующим инструкциям. - [Thunderbird](https://timeweb.cloud/docs/mail/configuring-email-clients/thunderbird) - [The Bat!](https://timeweb.cloud/docs/mail/configuring-email-clients/the-bat) - [Microsoft Outlook](https://timeweb.cloud/docs/mail/configuring-email-clients/microsoft-outlook) - [Apple Почта](https://timeweb.cloud/docs/mail/configuring-email-clients/apple-mail) - [Яндекс Почта](https://timeweb.cloud/docs/mail/configuring-email-clients/yandex-pochta) - [Почта Mail](https://timeweb.cloud/docs/mail/configuring-email-clients/mail-ru) - [Gmail](https://timeweb.cloud/docs/mail/configuring-email-clients/gmail) - [VK Почта](https://timeweb.cloud/docs/mail/configuring-email-clients/vk-pochta) - [Рамблер/почта](https://timeweb.cloud/docs/mail/configuring-email-clients/rambler-pochta) Если домен делегирован на сторонние NS-серверы, его дополнительно нужно [настроить](https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-settings-for-timeweb-cloud). # Thunderbird Source: https://timeweb.cloud/docs/mail/configuring-email-clients/thunderbird В инструкции рассмотрим, как настроить почтовый клиент Mozilla Thunderbird на Windows и macOS. ## Настройка Thunderbird в Windows 1. Откройте Thunderbird, кликните на значок меню в правом верхнем углу и нажмите «Создать учетную запись». ![Image3](https://content.timeweb.com/assets/aa284158-ab59-4bf3-9b13-9ad7a7b36f83.png?width=1052&height=804) _Переход к созданию учетной записи в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/) в ОС [Windows](https://www.microsoft.com/en-us/windows/?r=1)_ 2. Кликните на «Эл.Почта (У)». ![Image2](https://content.timeweb.com/assets/0cd02bfc-b572-42c2-807e-d6c25f95f2ae.png?width=1052&height=804) _Меню «Создать учетную запись» в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/) в ОС [Windows](https://www.microsoft.com/en-us/windows/?r=1)_ 3. Укажите данные почтового ящика, который вы хотите подключить: - - имя владельца ящика (будет отображаться в поле «От»); - почтовый ящик; - пароль от почтового ящика. 4. Нажмите «Настроить вручную». ![Image1](https://content.timeweb.com/assets/f6ddfb1d-dd92-4f8c-96f7-58d3ecb361d3.png?width=1052&height=804) _Настройка учетной записи в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/) в ОС [Windows](https://www.microsoft.com/en-us/windows/?r=1)_ 5. Заполните реквизиты подключения к ящику: **Сервер входящей почты:** - - Протокол: IMAP или POP3 - Имя сервера: `imap.timeweb.ru` (IMAP) или `pop3.timeweb.ru` (POP3) - Порт: 993 (IMAP) или 995 (POP3) - Защита соединения: SSL/TLS - Метод аутентификации: Обычный пароль - Имя пользователя: ваш почтовый ящик > [!NOTE] > При использовании IMAP письма не удаляются с почтового сервера, а синхронизируются с почтовым клиентом. > > При использовании POP3 письма будут удалены с почтового сервера после их загрузки в Thunderbird. Вы можете включить сохранение писем на сервере в настройках почтового клиента. **Сервер исходящей почты:** - - Имя сервера: `smtp.timeweb.ru` - Порт: 465 - Защита соединения: SSL/TLS - Метод аутентификации: Обычный пароль - Имя пользователя: ваш почтовый ящик ![Selection 229](https://content.timeweb.com/assets/55c185f8-3341-4939-a8b5-d010a60d28d7.png?width=1276&height=1006) _Настройка учетной записи в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/) в ОС [Windows](https://www.microsoft.com/en-us/windows/?r=1)_ 6. Нажмите «Перетестировать». 7. После завершения проверки нажмите «Готово», на следующей странице — «Завершить». Теперь вы можете перейти во «Входящие» и убедиться, что содержимое ящика доступно в Thunderbird. ## Настройка Thunderbird на macOS 1. Откройте Thunderbird, кликните на значок меню в правом верхнем углу и нажмите «Создать учетную запись». ![97e373fc 163c 4521 81b5 767ef4c31905](https://content.timeweb.com/assets/ca9255bb-df78-46cd-86a4-4383bc30d9ac.png?width=1618&height=1175) _Переход к созданию учетной записи в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/) в ОС [MacOS](https://www.apple.com/os/macos/)_ 2. Нажмите «Эл. почта». 3. Укажите данные почтового ящика, который вы хотите подключить: - - имя владельца ящика; - почтовый ящик; - пароль от почтового ящика. 4. Нажмите «Настроить вручную». ![D0a225f7 671e 4fff Beef 8c839c7b4f2f](https://content.timeweb.com/assets/49320ce1-66ad-4284-b031-ae2a8431d295.png?width=1610&height=1590) _Настройка учетной записи в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/) в ОС [MacOS](https://www.apple.com/os/macos/)_ 5. Заполните реквизиты подключения к ящику: **Сервер входящей почты:** - - Протокол: IMAP или POP3 - Имя сервера: `imap.timeweb.ru` (IMAP) или `pop3.timeweb.ru` (POP3) - Порт: 993 (IMAP) или 995 (POP3) - Защита соединения: SSL/TLS - Метод аутентификации: Обычный пароль - Имя пользователя: ваш почтовый ящик > [!NOTE] > При использовании IMAP письма не удаляются с почтового сервера, а синхронизируются с почтовым клиентом. > > При использовании POP3 письма будут удалены с почтового сервера после их загрузки в Thunderbird. Вы можете включить сохранение писем на сервере в настройках почтового клиента. **Сервер исходящей почты:** - - Имя сервера: `smtp.timeweb.ru` - Порт: 465 - Защита соединения: SSL/TLS - Метод аутентификации: Обычный пароль - Имя пользователя: ваш почтовый ящик 6. Нажмите «Перетестировать». ![C305ea69 Ecdd 4cc9 Bdec 64e055027a06](https://content.timeweb.com/assets/65b516a1-307b-40f2-ad5d-f5c1b798c59b.png?width=940&height=1264) _Настройка учетной записи в интерфейсе [Thunderbird](https://www.thunderbird.net/ru/) в ОС [MacOS](https://www.apple.com/os/macos/)_ 7. После завершения проверки нажмите «Готово». Теперь вы можете перейти во «Входящие» и убедиться, что содержимое ящика доступно в Thunderbird. # The Bat! Source: https://timeweb.cloud/docs/mail/configuring-email-clients/the-bat В инструкции рассмотрим, как работать с почтовым ящиком, созданным в Timeweb Cloud, в почтовом клиенте The Bat!. 1. Откройте The Bat!, в верхнем меню кликните на «Ящик» и выберите «Новый почтовый ящик». ![Image1](https://content.timeweb.com/assets/7e98cd55-cf11-4cf9-83ad-6dd366df737b.png?width=1204&height=750) _Переход к созданию нового ящика в интерфейсе [The Bat!](https://www.ritlabs.com/en/products/thebat/)_ 2. Укажите данные почтового ящика, который вы хотите подключить: - - имя владельца ящика (будет отображаться в поле «От»); - почтовый ящик, - пароль от ящика. 3. В пункте «Протокол» выберите «IMAP или POP», после чего нажмите «Далее». ![Image2](https://content.timeweb.com/assets/e8efa2ec-b114-4641-a598-8f36cb2680e2.png?width=786&height=579) _Создание нового ящика в интерфейсе [The Bat!](https://www.ritlabs.com/en/products/thebat/)_ 4. Заполните реквизиты подключения к ящику для входящей почты: - - Протокол: IMAP или POP - Адрес сервера: `imap.timeweb.ru` (IMAP) или `pop3.timeweb.ru` (POP3) - Соединение: Безопасное на спец. порт (TLS) - Порт: 993 (IMAP) или 995 (POP3) - Имя пользователя и пароль: ваш почтовый ящик > [!NOTE] > При использовании IMAP письма не удаляются с почтового сервера, а синхронизируются с почтовым клиентом. > > При использовании POP3 письма будут удалены с почтового сервера после их загрузки в почтовый клиент. Вы можете включить сохранение писем на сервере в настройках почтового клиента. 5. Нажмите «Далее». ![Image4](https://content.timeweb.com/assets/9ef8561e-ac91-4bfb-8c01-0616410fe796.png?width=786&height=579) _Создание нового ящика в интерфейсе [The Bat!](https://www.ritlabs.com/en/products/thebat/)_ 6. Заполните реквизиты подключения к ящику для исходящей почты: - - Адрес сервера: `smtp.timeweb.ru` - Соединение: Безопасное на спец. порт (TLS) - Порт: 465 - Отметьте галку «Мой сервер SMTP требует авторизации» 7. Нажмите «Далее». ![Image6](https://content.timeweb.com/assets/60a0d94e-e4b2-4c2e-8cd5-ff35e69581d1.png?width=786&height=579) _Создание нового ящика в интерфейсе [The Bat!](https://www.ritlabs.com/en/products/thebat/)_ 8. В сведениях об учетной записи укажите ваше имя, ящик и при необходимости домашний каталог. 9. Кликните «Готово». ![Image5](https://content.timeweb.com/assets/75ea06b7-a363-4e62-aa9c-cc5b54a2f3d9.png?width=786&height=579) _Создание нового ящика в интерфейсе [The Bat!](https://www.ritlabs.com/en/products/thebat/)_ Теперь вы можете перейти во «Входящие» и убедиться, что содержимое ящика доступно в The Bat!. # Microsoft Outlook Source: https://timeweb.cloud/docs/mail/configuring-email-clients/microsoft-outlook В инструкции рассмотрим, как настроить почтовый клиент Microsoft Outlook на работу с ящиком, созданным в панели Timeweb Cloud. ## Настройка Microsoft Outlook на Windows Если вы впервые запускаете Outlook, он сразу предложит добавить учетную запись. Если же Outlook уже используется и вы хотите настроить еще один ящик, обычно это можно сделать по кнопке «Добавить учетную запись» на главной странице или в меню «Файл» → «Добавить учетную запись». Новый Outlook 1. Откройте Outlook и нажмите «Добавить учетную запись» в меню слева. ![Image5](https://content.timeweb.com/assets/6b0533a2-9361-42a4-b0cd-d55750b162c4.png?width=1205&height=933) _Переход к добавлению новой учетной записи в интерфейсе [Microsoft Outlook](https://www.microsoft.com/ru-ru/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook)_ 2. Укажите почтовый ящик, который вы хотите подключить, и нажмите «Продолжить». ![Image2](https://content.timeweb.com/assets/aa016e71-4477-465c-9205-e9001c935a13.png?width=1205&height=933) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook](https://www.microsoft.com/ru-ru/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook)_ 3. Выберите протокол IMAP или POP. ![Image3](https://content.timeweb.com/assets/9a70cdb7-895a-4b53-8aa4-b72015d0de0e.png?width=1205&height=933) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook](https://www.microsoft.com/ru-ru/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook)_ > [!NOTE] > При использовании IMAP письма не удаляются с почтового сервера, а синхронизируются с почтовым клиентом. > > При использовании POP3 письма будут удалены с почтового сервера после их загрузки в почтовый клиент. Вы можете включить сохранение писем на сервере в настройках почтового клиента. 4. Введите пароль от ящика и укажите настройки для входящей и исходящей почты. **Сервер входящей почты:** - - Сервер входящей почты IMAP: `imap.timeweb.ru` (IMAP) или `pop3.timeweb.ru` (POP3) - Порт: 993 (IMAP) или 995 (POP3) - Безопасный тип соединения: SSL/TLS ![Image7](https://content.timeweb.com/assets/5a78253b-cdf0-4b3e-b8fd-86fcb6b89e07.png?width=1205&height=933) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook](https://www.microsoft.com/ru-ru/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook)_ **Сервер исходящей почты:** - - Имя пользователя SMTP: ваш почтовый ящик - Пароль: оставьте пустым - Имя сервера: `smtp.timeweb.ru` - Порт: 465 - Безопасный тип соединения: SSL/TLS ![Image8](https://content.timeweb.com/assets/2b668979-dfac-43e1-a47d-736d539936e9.png?width=1205&height=933) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook](https://www.microsoft.com/ru-ru/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook)_ 5. После заполнения данных нажмите «Продолжить». 6. На следующем экране снова кликните «Продолжить». ![Image6](https://content.timeweb.com/assets/be47cef6-3047-48f3-b748-b5e0f5bfb00e.png?width=1205&height=933) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook](https://www.microsoft.com/ru-ru/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook)_ 7. Программе потребуется время для настройки ящика — вы увидите окно «Ожидание поставщика электронной почты». 8. После завершения настройки нажмите «Готово» ![Image1](https://content.timeweb.com/assets/d1e53391-6bcc-470e-8ac3-44ac15e5da6f.png?width=1205&height=933) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook](https://www.microsoft.com/ru-ru/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook)_ Теперь вы можете перейти во «Входящие» и убедиться, что содержимое ящика доступно в Outlook. Outlook 2021, 2019 1. Запустите Outlook. 2. Введите адрес электронной почты, который хотите добавить. 3. Нажмите на «Дополнительные параметры» и отметьте пункт «Настроить учетную запись вручную». Нажмите «Далее». 4. Выберите протокол IMAP или POP. > [!NOTE] > При использовании IMAP письма не удаляются с почтового сервера, а синхронизируются с почтовым клиентом. > > При использовании POP3 письма будут удалены с почтового сервера после их загрузки в почтовый клиент. Вы можете включить сохранение писем на сервере в настройках почтового клиента. 5. Укажите настройки для входящей и исходящей почты. **Входящая почта:** - - Сервер: `imap.timeweb.ru` (IMAP) или `pop3.timeweb.ru` (POP3) - Порт: 993 (IMAP) или 995 (POP3) - Метод шифрования: SSL **Исходящая почта:** - - Сервер: `smtp.timeweb.ru` - Порт: 465 - Метод шифрования: SSL 6. Нажмите «Далее», а затем нажмите «Готово». Outlook 2016, 2013 1. Запустите Outlook. 2. Если Outlook уже настроен и используется, перейдите в меню «Файл» → «Добавить учетную запись». Если это первый запуск Outlook, в приветственном окне нажмите «Далее», на следующем экране выберите «Да» и снова нажмите «Далее» 3. Выберите опцию «Ручная настройка или дополнительные типы серверов» и нажмите «Далее». 4. Выберите «Протокол POP или IMAP». 5. Укажите настройки почты в следующих полях: - «Введите имя» — укажите имя пользователя, которое будут видеть получатели писем. - «Адрес электронной почты» — укажите ящик, который настраиваете. - «Тип учетной записи» — выберите POP3 или IMAP. > [!NOTE] > При использовании IMAP письма не удаляются с почтового сервера, а синхронизируются с почтовым клиентом. > > При использовании POP3 письма будут удалены с почтового сервера после их загрузки в почтовый клиент. Вы можете включить сохранение писем на сервере в настройках почтового клиента. - - «Сервер входящей почты» — укажите `imap.timeweb.ru` или `pop3.timeweb.ru`, в зависимости от того, какой протокол выбрали на предыдущем шаге. - «Сервер исходящей почты (SMTP)» — укажите `smtp.timeweb.ru`. - «Пользователь» — укажите почтовый ящик (как в пункте «Адрес электронной почты»). - «Пароль» — укажите пароль от ящика. 5. Нажмите кнопку «Другие настройки». 6. В открывшемся окне перейдите на вкладку «Сервер исходящей почты». 7. Отметьте галочкой пункт «SMTP-серверу требуется проверка подлинности» и выберите «Аналогично серверу для входящей почты». 8. Перейдите на вкладку «Дополнительно» и укажите номера портов и шифрование: - IMAP-сервер — порт 993, шифрование SSL - POP3-сервер — порт 995, шифрование SSL - SMTP-сервер — порт 465, шифрование SSL 10. Нажмите «ОК», а затем нажмите «Готово». ## Настройка Microsoft Outlook на Android 1. Откройте приложение Outlook и в левом верхнем углу тапните на аватар профиля. ![Image2](https://content.timeweb.com/assets/83569e21-6622-4443-a56b-d03984ddd6e7.png?width=347&height=701) _Интерфейс [Microsoft Outlook для Android](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ 2. Нажмите на значок плюса. ![Image1](https://content.timeweb.com/assets/4fcccb3c-b8b7-409e-8bc6-531804127d1b.png?width=346&height=701) _Основное меню в интерфейсе [Microsoft Outlook для Android](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ 3. Укажите почтовый ящик, который вы хотите подключить, и нажмите «Продолжить». ![Image3 (2)](https://content.timeweb.com/assets/4f283129-eb77-4462-89b3-ac99a942754d.png?width=348&height=700) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook для Android](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ 4. Выберите протокол IMAP или POP3. > [!NOTE] > При использовании IMAP письма не удаляются с почтового сервера, а синхронизируются с почтовым клиентом. > > При использовании POP3 письма будут удалены с почтового сервера после их загрузки в почтовый клиент, если в его настройках не включена опция сохранения писем на сервере. ![Image2 (1) (1)](https://content.timeweb.com/assets/1eaab0a6-0208-44db-9241-9f8646f78daf.png?width=348&height=700) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook для Android](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ 5. Укажите пароль от ящика, имя, описание почты и нажмите «Дополнительные параметры». **Сервер входящей почты:** - - Имя узла: `imap.timeweb.ru` (IMAP) или `pop3.timeweb.ru` (POP3) - Порт: 993 (IMAP) или 995 (POP3) - Тип безопасности: SSL/TLS - Метод аутентификации: Автоопределение - Имя пользователя и пароль: по умолчанию **Сервер исходящей почты:** - - Имя узла: `smtp.timeweb.ru` - Порт: 465 - Защита соединения: SSL/TLS - Имя пользователя и пароль: по умолчанию 6. После заполнения данных в правом нижнем углу тапните иконку галочки. ![Image4 (2)](https://content.timeweb.com/assets/fe9d48ec-6bbb-4788-a23f-dcd0f570771c.png?width=345&height=700) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook для Android](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ Почтовый ящик подключен, теперь вы сможете им пользоваться в приложении Outlook. С дополнительными настройками почты можно подробнее ознакомиться в [инструкции Outlook](https://support.microsoft.com/ru-ru/office/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9-%D0%BF%D0%BE%D1%87%D1%82%D1%8B-%D0%B2-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B8-outlook-%D0%B4%D0%BB%D1%8F-android-886db551-8dfa-4fd5-b835-f8e532091872?ui=ru-ru&rs=ru-ru&ad=ru). ## Настройка Microsoft Outlook на iOS 1. Откройте приложение Outlook и в левом верхнем углу нажмите на профиль. ![A8994b4d 9589 41ee B771 15be8a24a163 1](https://content.timeweb.com/assets/8fb4a8a9-f497-4201-8023-68c8b2061339.png?width=350&height=700) _Интерфейс [Microsoft Outlook для iOS](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ 2. Нажмите на значок шестеренки слева внизу для перехода к настройкам. ![1fc88131 8905 4ba4 9aea 244f80b14031](https://content.timeweb.com/assets/addd9eb0-6eb7-4464-a895-617f72f8e4be.png?width=348&height=700) _Основное меню в интерфейсе [Microsoft Outlook для iOS](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ 3. Нажмите «Добавить учетную запись почты». ![4a6b57ce 19fb 4039 A421 13b7e380b041](https://content.timeweb.com/assets/9f0738d0-c90c-4e37-a481-f7af821a86bd.png?width=493&height=701) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook для iOS](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ 4. Выберите «Добавить учетную запись электронной почты». ![Image3](https://content.timeweb.com/assets/2f142231-d77d-482b-a3ca-db38e7d8d963.png?width=349&height=701) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook для iOS](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ 5. Выберите «IMAP». ![4d924e47 88cb 413f 997f 3564cc465870](https://content.timeweb.com/assets/182d98de-1de9-4d58-b330-3c675832be98.png?width=437&height=701) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook для iOS](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ 6. Укажите почтовый ящик, который нужно настроить, и нажмите «Добавить учетную запись». ![Image6](https://content.timeweb.com/assets/d1b55694-816f-41df-acf5-12db79c0d501.png?width=359&height=701) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook для iOS](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ 7. Укажите настройки для входящей почты и исходящей почты. **IMAP-сервер для входящей почты:** - - Имя узла IMAP: `imap.timeweb.ru` - Порт IMAP: 993 - Протокол: IMAP - Безопасность порта: SSL - Имя пользователя IMAP: ваш почтовый ящик - Пароль IMAP: пароль от почтового ящика ![Image4 (1)](https://content.timeweb.com/assets/06bfb6e4-80d0-49d3-8a48-069f4aa093a5.png?width=408&height=701) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook для iOS](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ **SMTP-сервер для исходящей почты:** - - Имя узла SMTP: `smtp.timeweb.ru` - Порт SMTP: 465 - Безопасность порта: SSL - Имя пользователя SMTP: ваш почтовый ящик - Пароль SMTP: оставьте пустым ![Image7](https://content.timeweb.com/assets/9eedac0f-5552-421f-a3f7-4cebbef555a0.png?width=407&height=701) _Настройка новой учетной записи в интерфейсе [Microsoft Outlook для iOS](https://www.microsoft.com/ru-ru/microsoft-365/outlook-mobile-for-android-and-ios)_ 8. Нажмите «Вход». Почтовый ящик подключен, теперь вы сможете им пользоваться в приложении Outlook. # Apple Почта (Apple Mail) Source: https://timeweb.cloud/docs/mail/configuring-email-clients/apple-mail В инструкции рассказываем, как добавить ящик, созданный в Timeweb Cloud, в приложение «Apple Почта» (Apple Mail) — почтовый клиент по умолчанию на устройствах Apple. ## Настройка Apple Mail на macOS 1. Откройте приложение «Почта» на своем компьютере. 2. В меню сверху выберите «Почта» → «Добавить учетную запись». ![Aa0194ae C063 4ded 8dbe B295047fc941](https://content.timeweb.com/assets/ba3a3bff-d9da-4e7d-b7ac-b33f28e0f3f2.png?width=602&height=586) _Меню «Почта» в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ 3. Выберите «Другая учетная запись Почты». ![5daa2d81 Ed0a 4fad 8539 5898164ddc42](https://content.timeweb.com/assets/d0eb37d3-c907-4212-bef4-5cc5bfbef6b6.png?width=828&height=664) _Выбор провайдера почты в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ 4. Заполните поля: - - Имя: ваш почтовый ящик - Адрес электронной почты: ваш почтовый ящик - Пароль: пароль от ящика В поле «Имя» также можно указать имя владельца ящика, однако для корректной работы программы рекомендуем указывать сам почтовый ящик. ![Image3](https://content.timeweb.com/assets/fd5c8a34-2fe4-4018-ac59-ca1195240410.png?width=820&height=510) _Добавление учетной записи почты в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ 5. Нажмите «Войти». Появится сообщение об ошибке, после чего откроется меню дополнительных настроек. 6. Укажите реквизиты для подключения к почтовым серверам: - - Адрес электронной почты: ваш почтовый ящик - Имя пользователя: ваш почтовый ящик - Пароль: пароль от ящика - Тип учетной записи: IMAP или POP3 - Сервер входящей почты: `imap.timeweb.ru` (IMAP) или `pop3.timeweb.ru` (POP3) - Сервер исходящей почты: `smtp.timeweb.ru` > [!NOTE] > При использовании IMAP письма не удаляются с почтового сервера, а синхронизируются с почтовым клиентом. > > При использовании POP3 письма будут удалены с почтового сервера после их загрузки в почтовый клиент. Вы можете включить сохранение писем на сервере в настройках почтового клиента. ![Image4](https://content.timeweb.com/assets/09363ad9-651b-41ae-9357-853d9e45c821.png?width=792&height=598) _Добавление учетной записи почты в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ 7. Нажмите «Войти». 8. Выберите нужные приложения для этой учетной записи («Почта» должно быть отмечено) и нажмите «Готово». ![Image2](https://content.timeweb.com/assets/7b93f2f7-c143-4ce8-bac6-a04a1c776b52.png?width=820&height=436) _Добавление учетной записи почты в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ Ящик добавлен, и теперь вы можете работать с ним в приложении «Apple Почта». ## Настройка Apple Mail на iOS 1. Перейдите в настройки вашего устройства и кликните на опцию «Почта». ![44ed9be4 82d2 48f9 96fc A0ff2008367e](https://content.timeweb.com/assets/968cf10d-303f-44e7-9bc0-1f2281f5030b.png?width=350&height=700) _Раздел «Настройки» в интерфейсе ОС [iOS](https://www.apple.com/ios/)_ 2. Кликните на «Учетные записи»: ![B5d15d12 1dc9 48f3 8e62 Ebaf65600e8a](https://content.timeweb.com/assets/b417e10c-9018-487c-8d60-9c6dc34928ec.png?width=350&height=596) _Раздел «Почта» в интерфейсе ОС [iOS](https://www.apple.com/ios/)_ 3. На следующем экране снова выберите «Учетные записи». ![2bbac9d2 Dcb2 440f 9c47 42c3f9d6d212](https://content.timeweb.com/assets/f4a63cb4-5e03-416e-82e8-0ea8866fcdcd.png?width=353&height=700) _Раздел «Почта» в настройках в интерфейсе ОС [iOS](https://www.apple.com/ios/)_ 4. Выберите «Другое». ![Cacfcb71 Cac3 46fc B6fb 35f3b20704b8](https://content.timeweb.com/assets/aa80cf89-a675-4d33-8714-5537503dc46c.png?width=351&height=700) _Выбор почтового провайдера в интерфейсе ОС [iOS](https://www.apple.com/ios/)_ 5. Выберите «Новая учетная запись». ![D78779b4 0991 4abf B772 3ba3b8c602ef](https://content.timeweb.com/assets/6d107a27-df2d-44da-bdc5-7f72e267f5e6.png?width=356&height=700) _Переход к добавлению учетной записи почты в интерфейсе ОС [iOS](https://www.apple.com/ios/)_ 6. Заполните поля: - - Имя: имя владельца ящика - E-mail: ваш почтовый ящик - Пароль: пароль от ящика Дополнительно можно указать описание (комментарий к ящику). ![1059dd06 5262 4aa1 86c8 Ec2175dc96b0](https://content.timeweb.com/assets/ec85f7c8-03b6-4881-9932-d0e654b07b3e.png?width=400&height=413) _Создание учетной записи почты в интерфейсе ОС [iOS](https://www.apple.com/ios/)_ 7. Укажите реквизиты подключения к ящику: **Ящик:** - - Имя: имя владельца ящика (будет отображаться в поле «От») - E-mail: ваш почтовый ящик - Описание: комментарий к почтовому ящику **Сервер входящей почты:** - - Протокол: IMAP или POP3 - Имя узла: `imap.timeweb.ru` (IMAP) или `pop3.timeweb.ru` (POP3) - Порт: 993 (IMAP) или 995 (POP3) - Защита соединения: SSL/TLS - Метод аутентификации: Автоопределение - Имя пользователя: ваш почтовый ящик - Пароль: пароль от почтового ящика > [!NOTE] > При использовании IMAP письма не удаляются с почтового сервера, а синхронизируются с почтовым клиентом. > > При использовании POP3 письма будут удалены с почтового сервера после их загрузки в почтовый клиент. Вы можете включить сохранение писем на сервере в настройках почтового клиента. **Сервер исходящей почты:** - - Имя узла: `smtp.timeweb.ru` - Порт: 465 - Защита соединения: SSL/TLS - Метод аутентификации: Автоопределение - Имя пользователя: ваш почтовый ящик - Пароль: пароль от почтового ящика ![Image5](https://content.timeweb.com/assets/e3715d38-6703-4877-9251-7813cbbcd05a.png?width=355&height=700) _Создание учетной записи почты в интерфейсе ОС [iOS](https://www.apple.com/ios/)_ 8. Нажмите «Далее», чтобы завершить настройку почтового клиента. # Яндекс Почта Source: https://timeweb.cloud/docs/mail/configuring-email-clients/yandex-pochta > [!NOTE] > Эта инструкция подойдет для бесплатного сервиса «Яндекс Почты» ([mail.yandex.ru](https://mail.yandex.ru/)). Для настройки домена для работы с «Яндекс Почтой для бизнеса» воспользуйтесь [этой статьей](https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-setting-for-yandex). ## Настройка сборщика в «Яндекс Почте» Чтобы получать письма с ящика Timeweb Cloud в веб-интерфейс «Яндекс Почты», нужно настроить сборщик писем. 1. Перейдите в [«Яндекс Почту»](https://mail.yandex.ru/), кликните на значок шестеренки справа вверху и нажмите «Все настройки». ![Image5](https://content.timeweb.com/assets/4b677d28-3667-4813-834f-551474f7fb46.png?width=1253&height=670) _Переход к настройкам в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/)_ 2. Кликните на «Сборщик почты». ![Image6](https://content.timeweb.com/assets/d3d721f8-5df7-4ed3-a73a-ec485d0785f4.png?width=1253&height=636) _Раздел «Настройки» в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/)_ 3. Выберите «Другая почта». ![Image1](https://content.timeweb.com/assets/63bbb1ec-8f6e-4961-9ddc-63435af9a955.png?width=1253&height=636) _Настройка сборщика почты в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/)_ 4. Укажите реквизиты ящика, с которого нужно собирать почту. - - Адрес почтового ящика: ваш почтовый ящик - Пароль: пароль от почтового ящика - Логин: ваш почтовый ящик - Протокол: IMAP или POP3 - Порт: 993 (IMAP) или 995 (POP3) - Адрес сервера: `imap.timeweb.ru` (IMAP) или `pop3.timeweb.ru` (POP3) - Отметьте галочку «Использовать протокол SSL-шифрования» - (Опционально) Отметьте галочку «Сохранять оригиналы писем в исходящем ящике» ![Image4](https://content.timeweb.com/assets/1ad7e5ed-acbf-4574-9397-e9cbf419f53d.png?width=1253&height=636) _Настройка сборщика почты в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/)_ 5. Нажмите «Подключить». ![Image2](https://content.timeweb.com/assets/6c1cc62a-1107-48fd-8407-d478de3bc11b.png?width=1253&height=636) _Настройка сборщика почты в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/)_ Сборщик подключен. Теперь письма, поступившие на ваш почтовый ящик, будут доступны в веб-интерфейсе Яндекс Почты. ![Image3](https://content.timeweb.com/assets/78fdbc6d-0eb2-48e2-a3c2-590a86349348.png?width=1253&height=636) _Раздел «Входящие» в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/)_ С дополнительными настройками почты можно ознакомиться в [документации «Яндекс Почты»](https://yandex.ru/support/yandex-360/customers/mail/ru/web/preferences/collector). ## Настройка «Яндекс Почты» на Android 1. Откройте приложение «Яндекс Почты» и тапните на иконку меню слева вверху. ![Image1](https://content.timeweb.com/assets/6d58e91d-763f-4ab6-b161-4c821fe6604c.png?width=350&height=719) _Интерфейс [«Яндекс Почты»](https://mail.yandex.ru/) на Android_ 2. Нажмите на значок плюса. ![Image7](https://content.timeweb.com/assets/9e8bd7a9-9a99-4cb9-9065-4b7f65756d28.png?width=350&height=706) _Основное меню в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на Android_ 3. Выберите «Другая почта». ![Image6](https://content.timeweb.com/assets/7685706f-d6a6-407d-a87d-be23a70b4077.png?width=350&height=707) _Добавление учетной записи в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на Android_ 4. Введите почтовый ящик, который вы хотите подключить, и пароль от него и нажмите «Настроить вручную». ![Image4](https://content.timeweb.com/assets/175f32dc-9133-40f3-b3a6-7dabb631ee1f.png?width=350&height=708) _Настройка учетной записи в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на Android_ 5. Укажите настройки для входящей почты: - - Сервер: `imap.timeweb.ru` - Порт: 993 - SSL-шифрование: включено - Ваш почтовый ящик - Пароль от ящика ![Image2](https://content.timeweb.com/assets/9204798a-9a42-43fa-9fd7-cecd7f1c2068.png?width=350&height=700) _Настройка учетной записи в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на Android_ 6. Нажмите «Далее». 7. Укажите настройки для исходящей почты: - - Сервер: `smtp.timeweb.ru` - Порт: 465 - SSL-шифрование: включено - Ваш почтовый ящик - Пароль от почтового ящика - Адрес почты: ваш почтовый ящик ![Image3](https://content.timeweb.com/assets/1a0ca177-af6f-43cf-bbbb-b3fdf590325c.png?width=350&height=701) _Настройка учетной записи в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на Android_ 8. Нажмите «Войти». Почтовый ящик подключен, теперь вы сможете им пользоваться в приложении Яндекс Почты. ## Настройка «Яндекс Почты» на iOS 1. Откройте приложение «Яндекс Почты» и нажмите на иконку меню слева вверху. 2. Нажмите на значок плюса. ![87d47834 5075 40bc B62a 6243e041e9d9](https://content.timeweb.com/assets/6241e5bb-c48e-41c6-8309-ba3b330b01bd.png?width=350&height=722) _Основное меню в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на iOS_ 3. Нажмите «Добавить аккаунт». ![1aa304d4 Bd95 4e10 Aaba B08a7ddfa86b](https://content.timeweb.com/assets/8bbd786c-3de4-424c-9ca0-55f2c363f663.png?width=400&height=376) _Добавление учетной записи в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на iOS_ 4. Выберите «Другая почта». ![47783eff 4159 43e0 92bb 81bd220e1eb5](https://content.timeweb.com/assets/56b25bd7-5b9a-44a0-8c26-967095281e66.png?width=350&height=729) _Добавление учетной записи в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на iOS_ 5. Укажите почтовый ящик, который вы хотите добавить, и нажмите «Далее». ![F3d5d333 05d8 4cc7 88aa 615692ade230](https://content.timeweb.com/assets/a6dd75b2-92a6-4701-b1ed-c89faaf4ea7f.png?width=400&height=496) _Настройка учетной записи в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на iOS_ 6. Укажите пароль от почтового ящика и нажмите «Войти». ![85c924d3 0f88 4bbe 947e D35ec0460f01](https://content.timeweb.com/assets/253e90f6-5ebb-45df-8835-659d10d17c18.png?width=400&height=459) _Настройка учетной записи в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на iOS_ 7. Нажмите «Настроить вручную». ![Image3 (1)](https://content.timeweb.com/assets/e1770256-e35a-43a4-9125-79f3b1f24928.png?width=350&height=721) _Настройка учетной записи в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на iOS_ 8. Укажите настройки для сервера входящей почты: - - Сервер IMAP: `imap.timeweb.ru` - Порт: 993 - SSL-шифрование: включено - Логин: ваш почтовый ящик - Пароль: пароль от ящика ![6dd8f372 Cc8a 41c9 8819 Ddd56ce9700d](https://content.timeweb.com/assets/f4c2ecda-c6e2-4636-9154-6b7d7b51235a.png?width=400&height=341) _Настройка учетной записи в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на iOS_ 9. Нажмите «Далее». 10. Укажите настройки для сервера исходящей почты: - - Сервер SMTP: `smtp.timeweb.ru` - Порт: 465 - SSL-шифрование: включено - Логин: ваш почтовый ящик - Пароль: пароль от ящика ![6e927b69 E48b 41cf 9d4d 5817fe51eb02](https://content.timeweb.com/assets/6280abf4-1ae7-4084-a683-a72673ec5f21.png?width=400&height=335) _Настройка учетной записи в интерфейсе [«Яндекс Почты»](https://mail.yandex.ru/) на iOS_ 11. Нажмите «Далее». Ящик добавлен, теперь вы можете работать с ним в приложении Яндекс Почты. # Почта Mail (Mail.ru) Source: https://timeweb.cloud/docs/mail/configuring-email-clients/mail-ru В инструкции рассмотрим, как добавить почтовый ящик Timeweb Cloud в веб-интерфейс и приложение Почты Mail (Mail.ru), а также настроить сборщик почты. ## Настройка Почты Mail в веб-интерфейсе 1. Перейдите на [страницу авторизации](https://e.mail.ru/). ![Selection 178](https://content.timeweb.com/assets/9bd25abb-fd3d-4e2a-bc5f-85b40dddc3b6.png?width=1897&height=924) _Страница авторизации в [Почте Mail](https://e.mail.ru/)_ 2. Выберите вариант «**Другой**». 3. Укажите email. 4. Нажмите кнопку «**Войти**». 5. Введите пароль от почтового ящика и повторно нажмите «**Войти**». ![Selection 179](https://content.timeweb.com/assets/19a15c92-5340-4a6a-b0a4-bfb59afaa092.png?width=1916&height=929) _Страница авторизации в [Почте Mail](https://e.mail.ru/)_ 6. Укажите имя и фамилию — эти данные будут отображаться у получателя. 7. Заполните капчу и нажмите «**Войти в почту**». ![Screenshot 02 10 25 17:37:49](https://content.timeweb.com/assets/1096453f-28d7-45ce-b0d1-0456194c7787.png?width=397&height=603) _Страница авторизации в [Почте Mail](https://e.mail.ru/)_ Теперь вы можете отправлять и получать письма с почтовых серверов Timeweb в веб-интерфейсе Почты Mail. ## Настройка Почты Mail на Android 1. Откройте приложение Mail и нажмите на «Аккаунт» справа внизу. ![Image8](https://content.timeweb.com/assets/c5da4278-5cec-447c-8112-99e8e37ab7ef.png?width=350&height=705) _Интерфейс [Почты Mail на Android](https://promo.mail.ru/mail-app/)_ 2. Нажмите на значок плюса. ![Image6](https://content.timeweb.com/assets/71e78a02-0f53-4a8c-b5c5-32b72e3ccfbb.png?width=350&height=705) _Добавление учетной записи в интерфейсе [Почты Mail на Android](https://promo.mail.ru/mail-app/)_ 3. Выберите «Другая почта», укажите почтовый ящик, который вы хотите подключить, и нажмите «Продолжить». ![Image3](https://content.timeweb.com/assets/7914a195-7a3b-4c93-b1ea-a0c1c182013b.png?width=350&height=709) _Добавление учетной записи в интерфейсе [Почты Mail на Android](https://promo.mail.ru/mail-app/)_ 4. Укажите пароль от почтового ящика и нажмите «Войти». ![Image1](https://content.timeweb.com/assets/66a9dd97-b4ce-4593-8f7b-e060ccdb2822.png?width=350&height=704) _Добавление учетной записи в интерфейсе [Почты Mail на Android](https://promo.mail.ru/mail-app/)_ 5. Нажмите «В почту». ![E3ea6826 8f09 491c A266 47ab0ab3666e](https://content.timeweb.com/assets/a5136b3b-c574-4f99-a483-360e2be6f06f.png?width=400&height=427) _Добавление учетной записи в интерфейсе [Почты Mail на Android](https://promo.mail.ru/mail-app/)_ Почтовый ящик подключен, теперь вы можете им пользоваться в приложении Почта Mail. С дополнительными настройками почты можно ознакомиться в [документации Mail.ru](https://help.mail.ru/app_android/signin/multiauth/). ## Настройка Почты Mail на iOS 1. Откройте приложение и кликните на «Аккаунт» справа внизу. ![E4f443b4 B659 4435 90a4 1d9503788cc3](https://content.timeweb.com/assets/0478e9de-4d04-482d-a3f8-38f0c1881bc8.png?width=350&height=720) _Интерфейс [Почты Mail на iOS](https://promo.mail.ru/mail-app/)_ 2. Прокрутите экран вниз и нажмите «Добавить еще один аккаунт». ![21ed2644 33e7 431a Bdea 9207a5c0ddda](https://content.timeweb.com/assets/7fb88117-7d5b-423f-bd2f-1ecac6c1e607.png?width=350&height=700) _Добавление учетной записи в интерфейсе [Почты Mail на iOS](https://promo.mail.ru/mail-app/)_ 3. Нажмите «Войти в другую почту». ![Ea1e304c 4938 47c9 8fcf 7168bd41ed77](https://content.timeweb.com/assets/9957f91d-8f0a-4685-a958-d62eb2fece07.png?width=350&height=718) _Добавление учетной записи в интерфейсе [Почты Mail на iOS](https://promo.mail.ru/mail-app/)_ 4. Выберите «Другая почта» и укажите почтовый ящик, который вы хотите добавить. ![D056af04 Faac 414b 9188 F9bea6e79eba](https://content.timeweb.com/assets/b01bf7e0-9a89-46b9-a12c-be9b67480230.png?width=400&height=532) _Добавление учетной записи в интерфейсе [Почты Mail на iOS](https://promo.mail.ru/mail-app/)_ 5. Нажмите «Продолжить». 6. Введите пароль от почтового ящика и нажмите «Войти». ![Ac055414 Bae9 4fbd 9c8f 52f691cd835c](https://content.timeweb.com/assets/43e1f4ba-9a0d-441c-b9f0-cdd86a7acd60.png?width=400&height=495) _Добавление учетной записи в интерфейсе [Почты Mail на iOS](https://promo.mail.ru/mail-app/)_ Почтовый ящик добавлен. Теперь вы можете работать с ним в приложении Почты Mail. ## Настройка сборщика Вы можете настроить сборщик почты, чтобы получать письма с почтового ящика Timeweb в свой существующий ящик в Почте Mail. 1. Перейдите в [Почту Mail](https://e.mail.ru/inbox/) и кликните на «Настройки» слева внизу. ![Image5](https://content.timeweb.com/assets/75f6422d-a708-4f6a-8b29-c6004530e56e.png?width=1254&height=637) _Переход к настройкам в интерфейсе [Почты Mail](https://e.mail.ru/)_ 2. Нажмите «Все настройки». ![Image4](https://content.timeweb.com/assets/caa01a30-425f-4414-8103-52ba3e6c2553.png?width=1254&height=637) _Раздел «Все настройки» в интерфейсе [Почты Mail](https://e.mail.ru/)_ 3. На открывшейся странице пролистайте вниз и нажмите «Почта с других ящиков». ![Image3](https://content.timeweb.com/assets/30bfc042-b40c-4736-8b54-108f7d25de0e.png?width=1254&height=637) _Раздел «Все настройки» в интерфейсе [Почты Mail](https://e.mail.ru/)_ 4. Выберите «Другая почта» и укажите данные почтового ящика, который вы хотите подключить. ![Image2](https://content.timeweb.com/assets/f9643c47-c967-4f94-acde-7668725d54d6.png?width=1254&height=637) _Настройка сборщика почты в интерфейсе [Почты Mail](https://e.mail.ru/)_ 5. Нажмите «Добавить ящик». 6. Выберите, в какой папке сохранять письма из добавленного ящика применять ли фильтры. Нажмите «Применить». ![Image6](https://content.timeweb.com/assets/30fe0e39-cfd2-4966-b300-5631912cfe9f.png?width=1254&height=637) _Настройка сборщика почты в интерфейсе [Почты Mail](https://e.mail.ru/)_ Сборщик настроен. Теперь письма, отправленные на ваш ящик в Timeweb, будут поступать в Почту Mail. ![Image1](https://content.timeweb.com/assets/9489fe38-001d-44ef-ae74-5cf55b954a77.png?width=1254&height=637) _Интерфейс [Почты Mail](https://e.mail.ru/)_ С дополнительными настройками почты можно подробнее ознакомиться в [документации Mail.ru](https://help.mail.ru/mail/faq/collector/). # Gmail Source: https://timeweb.cloud/docs/mail/configuring-email-clients/gmail > [!NOTE] > Это инструкция для бесплатного почтового сервиса Gmail. Для настройки домена для корпоративной почты от Google (Google Workspace) воспользуйтесь [этой статьей](https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-settings-for-google). Работа со сторонними ящиками [больше не поддерживается](https://support.google.com/mail/answer/16604719?hl=ru) в веб-версии Gmail ([mail.google.com](https://mail.google.com/mail/u/0/#inbox)), но вы по-прежнему можете добавлять сторонние аккаунты в приложениях Gmail на мобильных устройствах. ## Настройка Gmail на Android 1. Откройте приложение Gmail и кликните на иконку профиля справа вверху. ![Image1](https://content.timeweb.com/assets/3dab9d5e-c1f2-4042-9bcb-98121a443f25.png?width=350&height=710) _Интерфейс [Gmail](https://workspace.google.com/products/gmail/) на Android_ 2. Нажмите «Добавить аккаунт». ![Image4](https://content.timeweb.com/assets/77dcef51-b15d-4f01-82cd-b1ad0531b94b.png?width=350&height=669) _Интерфейс [Gmail](https://workspace.google.com/products/gmail/) на Android_ 3. Выберите «Другой» почтовый сервис. ![Без Названия (1)](https://content.timeweb.com/assets/1d110f09-ff50-4c82-b18a-2a6387c73ba8.png?width=350&height=536) _Добавление почтового аккаунта в интерфейсе [Gmail](https://workspace.google.com/products/gmail/) на Android_ 4. Укажите почтовый ящик, который вы хотите подключить, и нажмите «Настроить вручную». ![Image9](https://content.timeweb.com/assets/1d6888a7-a0fc-4e58-9216-5cacc49939a1.png?width=350&height=708) _Добавление почтового аккаунта в интерфейсе [Gmail](https://workspace.google.com/products/gmail/) на Android_ 5. Выберите протокол IMAP или POP3. ![64887dec 5a52 44cc B053 70281abaf529](https://content.timeweb.com/assets/c4f3ae1f-d869-424b-bba5-a45b6cb81be8.png?width=400&height=431) _Добавление почтового аккаунта в интерфейсе [Gmail](https://workspace.google.com/products/gmail/) на Android_ 6. Укажите пароль от вашего ящика и нажмите «Далее». 7. Укажите настройки для входящей почты: - - Имя пользователя: ваш почтовый ящик - Пароль: пароль от почтового ящика - Сервер: `imap.timeweb.ru` (IMAP) или `pop3.timeweb.ru` (POP3) ![3f8cde66 07ad 44c6 91e0 6012eb32c307](https://content.timeweb.com/assets/23de1ba9-5f02-402c-84f4-7278921b6bea.png?width=400&height=489) _Добавление почтового аккаунта в интерфейсе [Gmail](https://workspace.google.com/products/gmail/) на Android_ 8. Нажмите «Далее». 9. Укажите настройки для исходящей почты: - - Имя пользователя: ваш почтовый ящик - Пароль: пароль от почтового ящика - Сервер: `smtp.timeweb.ru` ![6bd5599f 6c89 47bf A95a 148062634f9a](https://content.timeweb.com/assets/d1046117-9e2f-4dcd-99ef-8da5afbbc149.png?width=400&height=493) _Добавление почтового аккаунта в интерфейсе [Gmail](https://workspace.google.com/products/gmail/) на Android_ 10. Нажмите «Далее». 11. Настройте параметры для нового ящика по своему усмотрению. ![71c01bd9 6949 4eaa 9f46 2bf7b1a82445](https://content.timeweb.com/assets/c1a9e2c8-ef14-479c-9c8c-40842f1447e0.png?width=400&height=419) _Добавление почтового аккаунта в интерфейсе [Gmail](https://workspace.google.com/products/gmail/) на Android_ 12. Укажите имя отправителя (будет отображаться в поле «От») и нажмите «Далее». ![E455aee3 E304 45a7 A6c1 Aaddb908f070](https://content.timeweb.com/assets/53a010c5-f11a-4236-ae15-d7d625c8d835.png?width=400&height=351) _Добавление почтового аккаунта в интерфейсе [Gmail](https://workspace.google.com/products/gmail/) на Android_ Почтовый ящик подключен. Теперь вы можете работать с ним в приложении Gmail. ![Image11](https://content.timeweb.com/assets/ee60ca1b-34b6-415d-889d-de56e354697d.png?width=350&height=706) _Интерфейс [Gmail](https://workspace.google.com/products/gmail/) на Android_ С дополнительными настройками почты можно ознакомиться в [инструкции Gmail](https://support.google.com/mail/answer/6562?hl=ru-GB&co=GENIE.Platform%3DAndroid#zippy=%2C%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8-%D0%BE%D1%82%D0%B4%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-%D0%B0%D0%BA%D0%BA%D0%B0%D1%83%D0%BD%D1%82%D0%BE%D0%B2-gmail%2C%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8-%D0%B4%D0%BB%D1%8F-%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D0%B8%D1%85-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BE%D0%B2-%D0%BD%D0%B5-gmail). ## Настройка Gmail на iOS 1. В приложении Gmail кликните на иконку профиля и выберите «Добавить аккаунт». 2. Выберите «Другой (IMAP)». ![4e0b67e9 Fa1b 43b9 Bed0 2381db7d7d5e](https://content.timeweb.com/assets/1d6ef036-7e43-4434-9d1f-9ae3ecff2537.png?width=400&height=562) _Интерфейс [Gmail](https://workspace.google.com/products/gmail/) на iOS_ 3. Укажите ящик, который нужно добавить, и нажмите «Далее». ![E5d7ff1e 7539 4c36 883b 94467d15608e](https://content.timeweb.com/assets/32415213-694f-4fd5-ac7b-87b4bee3b11b.png?width=400&height=343) _Добавление почтового аккаунта в интерфейсе [Gmail](https://workspace.google.com/products/gmail/) на iOS_ 4. Укажите реквизиты для входящей почты: - - Имя пользователя: ваш почтовый ящик - Пароль: пароль от ящика - Сервер IMAP: `imap.timeweb.ru` - Порт: 993 - Тип безопасности: SSL/TLS ![43a4428a 9aa4 4848 A8f2 22f8f7d2a7bb](https://content.timeweb.com/assets/9843862a-cf5e-453f-a3ea-931c805e4947.png?width=400&height=516) _Добавление почтового аккаунта в интерфейсе [Gmail](https://workspace.google.com/products/gmail/) на iOS_ 5. Нажмите «Далее». 6. Укажите реквизиты для исходящей почты: - - Имя пользователя: ваш почтовый ящик - Пароль: пароль от ящика - Сервер IMAP: `smtp.timeweb.ru` - Порт: 465 - Тип безопасности: SSL/TLS ![96a0e56d 05ae 4823 Acad Bdfc2b9d33d4](https://content.timeweb.com/assets/87859417-ba47-4f12-b873-3f98b649bd31.png?width=400&height=513) _Добавление почтового аккаунта в интерфейсе [Gmail](https://workspace.google.com/products/gmail/) на iOS_ 7. Нажмите «Далее». 8. Укажите имя, которое будет отображаться в поле «От», и нажмите «Далее». ![2ec40b7b C252 4cc1 A1cc 6846546a834f](https://content.timeweb.com/assets/2bd898c3-58d6-4246-bc63-ec81f9d048d0.png?width=400&height=268) _Добавление почтового аккаунта в интерфейсе [Gmail](https://workspace.google.com/products/gmail/) на iOS_ Ящик добавлен. Теперь вы можете работать с ним в приложении Gmail. ![76ab34e0 8e48 4d49 B9f9 1ad8c14d7c17](https://content.timeweb.com/assets/3f05c93a-1dbb-4d2d-a896-c936f39fc8d3.png?width=400&height=462) _Интерфейс [Gmail](https://workspace.google.com/products/gmail/) на iOS_ # VK Почта Source: https://timeweb.cloud/docs/mail/configuring-email-clients/vk-pochta > [!NOTE] > Это инструкция для бесплатного сервиса VK Почта. Если вы настраиваете домен для работы с корпоративной почтой VK WorkSpace, воспользуйтесь [этой статьей](https://timeweb.cloud/docs/mail/setting-up-domain-mail/dns-settings-for-mail-ru). ## Настройка сборщика в VK Почте Чтобы получать письма с почтового ящика Timeweb Cloud на VK Почту, нужно настроить сборщик почты. 1. Перейдите в VK Почту и кликните «Настройки» слева внизу. ![Image4](https://content.timeweb.com/assets/af4d4963-88f8-4587-bb55-738e566fa853.png?width=1254&height=637) _Интерфейс [«VK Почты»](https://vk.mail.ru/)_ 2. Нажмите «Все настройки». ![Image9](https://content.timeweb.com/assets/95ed996d-36e5-4537-8e42-a84b331a0bca.png?width=1254&height=637) _Раздел «Все настройки» в интерфейсе [«VK Почты»](https://vk.mail.ru/)_ 3. Пролистайте вниз и нажмите «Почта с других ящиков». ![Image11](https://content.timeweb.com/assets/87249074-adaa-4c1a-b923-3a03f045df02.png?width=1254&height=637) _Раздел «Все настройки» в интерфейсе [«VK Почты»](https://vk.mail.ru/)_ 4. Выберите «Другая почта» и укажите данные почтового ящика, который вы хотите подключить. 5. Нажмите «Добавить ящик». ![Image3](https://content.timeweb.com/assets/e1dad329-da23-4bb2-bb1a-33c601db7c35.png?width=1254&height=637) _Добавление почтового ящика в интерфейсе [«VK Почты»](https://vk.mail.ru/)_ 6. Выберите, в какую папку сохранять письма из нового ящика, и применять ли к ним фильтры. 7. Нажмите «Применить». ![Image1](https://content.timeweb.com/assets/5c34033b-5455-435b-948a-fb8363903471.png?width=1310&height=655) _Добавление почтового ящика в интерфейсе [«VK Почты»](https://vk.mail.ru/)_ Почтовый ящик подключен. Теперь вы можете получать письма, отправленные на этот ящик, в интерфейсе VK Почты. ![Image7](https://content.timeweb.com/assets/3047620c-7bfc-4dce-a0dd-4a8422de1532.png?width=1254&height=637) _Папка «Входящие» в интерфейсе [«VK Почты»](https://vk.mail.ru/)_ С дополнительными настройками почты можно ознакомиться в [документации VK Почты](https://help.mail.ru/vkmail/settings/collector). ## Настройка VK Почты на Android 1. Откройте приложение VK Почта и кликните на «Аккаунт» справа внизу. ![Image2 1 (1)](https://content.timeweb.com/assets/3bac200d-aba7-459f-9f08-887122fe247e.png?width=297&height=600) _Интерфейс [«VK Почты»](https://vk.mail.ru/) на Android_ 2. Нажмите на значок плюса. ![Image5 4](https://content.timeweb.com/assets/38aa9bbb-f77f-4da7-b512-15976ff060e1.png?width=299&height=600) _Добавление почтового ящика в интерфейсе [«VK Почты»](https://vk.mail.ru/) на Android_ 3. Выберите «Другая почта» и укажите почтовый ящик, который вы хотите подключить. ![Image6](https://content.timeweb.com/assets/c408b3bd-98ec-451b-908d-7bb3583cf6bd.png?width=350&height=705) _Добавление почтового ящика в интерфейсе [«VK Почты»](https://vk.mail.ru/) на Android_ 4. Нажмите «Продолжить». 5. Введите пароль от почтового ящика и нажмите «Войти». ![Image9 (1)](https://content.timeweb.com/assets/eb67bb18-00ba-4007-9648-9e483218f249.png?width=350&height=715) _Добавление почтового ящика в интерфейсе [«VK Почты»](https://vk.mail.ru/) на Android_ Почтовый ящик подключен, теперь вы можете им пользоваться в приложении VK Почта. ![Image4 (1)](https://content.timeweb.com/assets/afe654a2-0c9f-4567-a476-297b5795598d.png?width=350&height=710) _Интерфейс [«VK Почты»](https://vk.mail.ru/) на Android_ С дополнительными настройками почты можно ознакомиться в [инструкции VK Почты](https://help.mail.ru/vkmail/app_android/account/multiauth). ## Настройка VK Почты на iOS 1. Откройте приложение VK Почты и нажмите на «Аккаунт» справа внизу. ![E9b4297e 2b53 41df Bea2 41e9282945d0](https://content.timeweb.com/assets/45181d82-23aa-4c05-b74c-73ecdd807ddc.png?width=350&height=694) _Интерфейс [«VK Почты»](https://vk.mail.ru/) на iOS_ 2. Прокрутите экран в самый низ и нажмите «Добавить еще один аккаунт». ![Fbefc217 B641 45ea 826d E4e216293aea](https://content.timeweb.com/assets/7905e5c5-7aef-4005-92d8-f4c603c04ad5.png?width=350&height=698) _Добавление почтового аккаунта в интерфейсе [«VK Почты»](https://vk.mail.ru/) на iOS_ 3. Нажмите «Войти в другую почту». ![Ea1e304c 4938 47c9 8fcf 7168bd41ed77](https://content.timeweb.com/assets/c58e1a6f-1ef5-48db-b6b6-a3100fe157f4.png?width=350&height=718) _Добавление почтового аккаунта в интерфейсе [«VK Почты»](https://vk.mail.ru/) на iOS_ 4. Выберите «Войти другой почтой». ![Без Названия](https://content.timeweb.com/assets/d73c33f2-e8b7-4c0e-9f45-64c1a8642404.png?width=350&height=707) _Добавление почтового аккаунта в интерфейсе [«VK Почты»](https://vk.mail.ru/) на iOS_ 5. Выберите «Другая почта» и введите ваш почтовый ящик. ![F41baf01 B440 489e A4d5 343973dd0d34](https://content.timeweb.com/assets/94b8777c-2fa0-42f3-9307-f3766ab81f81.png?width=400&height=495) _Добавление почтового аккаунта в интерфейсе [«VK Почты»](https://vk.mail.ru/) на iOS_ 6. Нажмите «Продолжить». 7. Введите пароль от ящика и нажмите «Войти». ![309a86ac 43ff 409e A9e1 1316a531b905](https://content.timeweb.com/assets/86962238-8767-4a6f-91fa-449c50e72d0f.png?width=400&height=506) _Добавление почтового аккаунта в интерфейсе [«VK Почты»](https://vk.mail.ru/) на iOS_ Ящик добавлен. Теперь вы можете работать с ним в приложении VK почта. # Рамблер Почта Source: https://timeweb.cloud/docs/mail/configuring-email-clients/rambler-pochta Чтобы получать письма с почтового ящика Timeweb Cloud в веб-интерфейс «Рамблер/почты», нужно настроить сборщик почты. 1. Перейдите в интерфейс «Рамблер/почты» и кликните на «Настройки» справа вверху. ![Image5](https://content.timeweb.com/assets/06e6f925-925c-446c-a254-1b152794d780.png?width=1281&height=642) _Папка «Входящие» в интерфейсе [«Рамблер/почты»](https://mail.rambler.ru/)_ 2. Перейдите на вкладку «Сбор почты». ![Image8](https://content.timeweb.com/assets/0122fedf-e13c-4794-a9c5-0619edb12c6a.png?width=1282&height=642) _Раздел «Настройки» в интерфейсе [«Рамблер/почты»](https://mail.rambler.ru/)_ 3. Выберите «Подключить другой ящик». ![Image2](https://content.timeweb.com/assets/89069348-4bec-47ce-97f2-98606c2649ac.png?width=1282&height=641) _Папка «Сбор почты» в интерфейсе [«Рамблер/почты»](https://mail.rambler.ru/)_ 4. Укажите почтовый ящик, который вы хотите подключить, и пароль от него. 5. При необходимости отметьте галочку «Скачать старые письма». 6. Нажмите «Подключить». ![Image10](https://content.timeweb.com/assets/3fb4b198-12f6-4850-8f16-13ef769c306f.png?width=1224&height=640) _Подключение ящика к сбору почты в интерфейсе [«Рамблер/почты»](https://mail.rambler.ru/)_ Почтовый ящик подключен. Теперь письма, отправленные на ваш почтовый ящик Timeweb Cloud, можно получать в интерфейсе «Рамблер/почты». ![Image6](https://content.timeweb.com/assets/9c4b6fc4-422f-40c0-85d1-f361958d49a6.png?width=1227&height=642) _Папка «Входящие» в интерфейсе [«Рамблер/почты»](https://mail.rambler.ru/)_ С дополнительными настройками почты можно подробнее ознакомиться [документации «Рамблер»](https://help.rambler.ru/mail/mail-podklyuchenie-drugih-yashikov-v/1285#3). # Возможные ошибки при работе с почтой Source: https://timeweb.cloud/docs/mail/vozmozhnye-oshibki-pri-rabote-s-pochtoj - [Не отправляются письма](https://timeweb.cloud/docs/mail/vozmozhnye-oshibki-pri-rabote-s-pochtoj/ne-otpravlyayutsya-pisma) - [Не приходят письма](https://timeweb.cloud/docs/mail/vozmozhnye-oshibki-pri-rabote-s-pochtoj/ne-prihodyat-pisma) - [Не отображаются папки в интерфейсе Roundcube](https://timeweb.cloud/docs/mail/vozmozhnye-oshibki-pri-rabote-s-pochtoj/ne-otobrazhayutsya-papki-v-interfejse-roundcube) # Не отправляются письма Source: https://timeweb.cloud/docs/mail/vozmozhnye-oshibki-pri-rabote-s-pochtoj/ne-otpravlyayutsya-pisma Чаще всего ошибка с отправкой писем возникает в следующих случаях: 1. Неверно указан адрес получателя. 2. Превышены показатели [ограничений](https://timeweb.cloud/docs/mail/mail-limitations) на отправку. 3. На аккаунт наложены санкции за нарушение правил Платформ, например, из-за отправки спама. С правилами Платформы вы можете ознакомиться на нашем [сайте](https://timeweb.cloud/records). 4. Ошибки в настройке почтовых клиентов. Проблема устраняется исправлением ошибок — выполнить проверку и настройку вам необходимо самостоятельно. Общие рекомендации по настройке вы можете найти [здесь](https://timeweb.cloud/docs/mail/email-clients-configuration). 5. Сбои в работе или ограничения почтового сервера-получателя. Для решения вопроса вам необходимо обратиться к владельцам сервера. 6. Некорректная работа CMS. Решить проблему вам будет необходимо самостоятельно или с помощью сторонних специалистов. 7. Ошибки в скриптах. Проблема решается самостоятельным исправлением ошибок в коде скриптов. 8. Сбои в работе почтовых серверов Timeweb Cloud или веб-интерфейса Timeweb Mail. Проблема решается на нашей стороне. Если ваш случай нельзя решить самостоятельно, или вы не можете определить, чем вызвана проблема, отправьте обращение в службу поддержки и укажите в нем следующие данные: - время отправки одного из сообщений; - адрес отправителя или адрес сайта, с которого отправляется сообщение; - электронный ящик получателя. # Не приходят письма Source: https://timeweb.cloud/docs/mail/vozmozhnye-oshibki-pri-rabote-s-pochtoj/ne-prihodyat-pisma Существует несколько основных причин, по которым на ваши ящики, расположенные на почтовых серверах Timeweb Cloud, могут не доставляться письма: 1. Окончание почтовой квоты. Проверить состояние почтовой квоты и увеличить ее при необходимости вы можете в панели управления в разделе «Почта». 2. Ошибки в настройке почтового клиента. Обнаружить проблему вы можете, повторив попытку получения почты с помощью другого почтового клиента или в веб-интерфейсе [mail.timeweb.com](https://mail.timeweb.com/). Основные настройки почтовых клиентов можно посмотреть в нашей [инструкции](https://timeweb.cloud/docs/mail/email-clients-configuration). 3. Доменное имя не продлено. Для решения проблемы оплатите продление. 4. Проблемы на сервере-отправителе. Вопрос решается с владельцами сервера. 5. Блокировка или ограничения вашего аккаунта. Уточнить детали и условия восстановления работы можно уточнить у службы поддержки. 6. Сбои на наших серверах. Вопрос решается нашими администраторами. Если вам нужна дополнительная консультация, отправьте обращение в службу поддержки. В нем укажите: - время отправки одного из сообщений, - адрес отправителя (или адрес сайта), - почтовый ящик получателя. При наличии приложите к запросу полный лог отправки сообщения с сервера-отправителя или информацию об ошибке — это ускорит процесс решения проблемы. # Не отображаются папки в интерфейсе Roundcube Source: https://timeweb.cloud/docs/mail/vozmozhnye-oshibki-pri-rabote-s-pochtoj/ne-otobrazhayutsya-papki-v-interfejse-roundcube Речь идет о ситуациях, когда в общем списке отсутствуют какие-либо папки, кроме основных, например: ![Rc1](https://content.timeweb.com/assets/27b8d953-b386-43ed-9b20-c062b962fa54?width=839&height=211) _Раздел «Почта» в интерфейсе [Roundcube](https://roundcube.net/)_ В этом случае необходимо «подписаться» на нужные папки. Для этого перейдите в раздел «Настройки» — «Папки» и отметьте галочками те папки, которые должны отображаться в общем списке. Изменения будут применены сразу же. ![Rc2](https://content.timeweb.com/assets/a65ce6d1-15c5-44c1-8550-2e83a191ca7c?width=839&height=364) _Раздел «Настройки» → «Папки» в интерфейсе [Roundcube](https://roundcube.net/)_ Вернитесь в раздел «Почта» и проверьте, что список папок обновился. ![Rc3](https://content.timeweb.com/assets/71113428-76dc-4c76-97e7-bc651e81c501?width=839&height=299) _Раздел «Почта» в интерфейсе [Roundcube](https://roundcube.net/)_ # Домены Source: https://timeweb.cloud/docs/domains В разделе собраны инструкции по работе с доменами в панели Timeweb Cloud. - [Регистрация и продление](https://timeweb.cloud/docs/domains/registration-and-renewal) - [Тарифы продления доменов](https://timeweb.cloud/docs/domains/domain-renewal-plans) - [Особенности премиум-доменов](https://timeweb.cloud/docs/domains/premium-domains) - [Управление поддоменами](https://timeweb.cloud/docs/domains/subdomains) - [Настройка DNS-записей](https://timeweb.cloud/docs/domains/dns-records-management) - [Настройка DNS у других регистраторов](https://timeweb.cloud/docs/domains/dns-records-management-other-registrars) - [Технический перенос домена](https://timeweb.cloud/docs/domains/domain-technical-transfer) - [Перенос домена между аккаунтами](https://timeweb.cloud/docs/domains/domain-transfer-between-accounts) - [Технический домен](https://timeweb.cloud/docs/domains/technical-domain) - [Доступ в панель управления регистратора](https://timeweb.cloud/docs/domains/dostup-v-panel-upravleniya-registratora) - [Документы для подтверждения прав на домен](https://timeweb.cloud/docs/domains/dokumenty-dlya-podtverzhdeniya-prav-na-domen) - [Изменение данных администратора домена](https://timeweb.cloud/docs/domains/change-admin-data) - [Идентификация через ЕСИА](https://timeweb.cloud/docs/domains/esia-identification) - [Смена регистратора доменов](https://timeweb.cloud/docs/domains/changing-domain-registrar) - [Смена администратора домена](https://timeweb.cloud/docs/domains/changing-domain-owner) # Регистрация и продление Source: https://timeweb.cloud/docs/domains/registration-and-renewal Через панель управления Timeweb Cloud вы можете регистрировать и продлевать домены более чем в 350 зонах. В зависимости от выбранной зоны, домен может быть зарегистрирован через регистратора [Таймвэб.Домены](https://timeweb.name/) или через одного из наших партнеров. Мы сотрудничаем с крупнейшими регистраторами: [R01](https://timeweb.cloud/docs/domains/dostup-v-panel-upravleniya-registratora#registrator-r01), [Ru-Center](https://timeweb.cloud/docs/domains/dostup-v-panel-upravleniya-registratora#ru-center), [PDR](https://timeweb.cloud/docs/domains/dostup-v-panel-upravleniya-registratora#pdr), [Webnames](https://timeweb.cloud/docs/domains/dostup-v-panel-upravleniya-registratora#webnames), чтобы предоставить вам большой выбор доменных зон и выгодные цены на домены. Узнать, какую зону мы обслуживаем через того или иного партнера, вы можете, обратившись в [поддержку](https://timeweb.cloud/my/support/help-question). > [!NOTE] > Регистрация и продление домена — услуги, которые оказываются единовременно, сразу после поступления средств. После того, как услуга оказана, отменить регистрацию или продление и вернуть средства невозможно. Информация о статусе домена и сроке его действия уже отправлена в реестр доменной зоны, и это действие не может быть отменено. ## Регистрация домена В панели управления аккаунтом перейдите в раздел «Домены и SSL» и нажмите «Купить домен». На следующей странице укажите желаемое доменное имя. Система автоматически проверит, свободен ли домен для заказа. Если домен свободен, нажмите кнопку «В корзину». Далее нажмите «Корзина» справа сверху или «Оплатить» у выбранного домена. На следующем экране: - Выберите или создайте администратора регистрируемых доменов. Обязательно указывайте корректные данные администратора. - Привяжите домен к нужному сервису. - Выберите проект для домена. - При необходимости подключите дополнительные услуги. Выберите способ оплаты (оплатить отдельно либо списать с баланса аккаунта) и нажмите «Оплатить». Домен станет доступен через 3-24 часа после регистрации, как только обновятся DNS-серверы. ### Верификация администратора домена После регистрации домена в международной зоне (.COM, .SITE, .ONLINE и др.) через нашего партнера — регистратора PublicDomainRegistry, вам придет запрос на верификацию емейл-адреса администратора. Если не подтвердить емейл в течение двух недель, домен будет заблокирован. #### Как пройти верификацию? На электронный ящик администратора придет письмо от [domains@timeweb.net](mailto:domains@timeweb.net) с просьбой подтвердить контактную информацию для вашего домена. В письме будет ссылка на панель регистратора (timeweb.myorderbox.com) — перейдите по ней. #### Что делать, если домен уже заблокирован? Если на домен уже установлена блокировка из-за непройденной верификации, [создайте тикет](https://timeweb.cloud/my/support/help-question) в нашу службу поддержки. Мы выполним повторную отправку письма. ## Продление домена Продлить домен вы можете в панели управления аккаунтом в разделе «Домены и SSL». Для этого нажмите на кнопку «Продлить» рядом с нужным доменом. Она появляется, когда продление домена становится возможным, т.е. ориентировочно за 60 дней до даты истечения. В случае с международными доменами кнопка доступна, если домен не был продлен на максимальный срок (10 лет). Оплатить продление можно с баланса аккаунта или отдельным счетом, выбрав удобный способ оплаты. Если домен уже отключен, то есть вы продлеваете его после окончания срока регистрации (в период преимущественного продления), работа домена восстановится в течение 3-24 часов после поступления оплаты. Рекомендуем заблаговременно продлевать домены, так как после истечения срока регистрации сайт и почта перестанут работать, сайт потеряет позиции в выдаче, а спустя определенный период (в зависимости от зоны) домен может быть занят любым другим пользователем. ## Автопродление домена При включенной услуге автопродления домен будет автоматически продлеваться за 5 дней до окончания срока регистрации. Списание средств за продление производится с баланса аккаунта (при наличии достаточной суммы; подробнее см. правила предоставления услуги ниже) либо с привязанной к аккаунту банковской карты. За 3 дня до автоматического продления вам будет направлено соответствующее уведомление на e-mail, и вы сможете отменить продление при необходимости. Если для домена подключен тариф продления — домен будет продлен по соответствующему тарифу. **Включить** автопродление для того или иного домена вы можете в его настройках. Для этого: 1. Перейдите в раздел «[Домены и поддомены](https://timeweb.cloud/my/domains)». 2. Кликните на строку с нужным доменом. 3. На вкладке «Управление» включите опцию автопродления. ![9fe493fa Cef1 4a37 A550 De61a4d5b1e1](https://content.timeweb.com/assets/19a83c8b-d70f-4895-9d7f-b1d5569949d7.png?width=1545&height=865) Вы всегда сможете отключить автопродление в этом же разделе. Автопродление может быть подключено для доменов, зарегистрированных в Timeweb Cloud или перенесенных на наш договор. Включение автопродления для перенесенных доменов возможно только на следующий день после переноса. ### **Правила автопродления доменов** 1. Включить или отключить автопродление можно в настройках домена в панели управления аккаунтом. 2. При подключении автопродления доменов списание денежных средств за продление регистрации доменов будет производиться в автоматическом режиме с баланса аккаунта пользователя или с привязанной банковской карты. 3. Продление домена и списание средств будет выполняться за 5 календарных дней до окончания регистрации домена. Сумма списания равна стоимости продления домена на 1 год с учетом подключенных услуг (скрытия данных, тарифа продления). 4. После списания с баланса аккаунта средств за автопродление домена на тарифе с оплатой по месяцам должна оставаться сумма, достаточная для оплаты услуг хостинга не менее, чем на 5 календарных дней. На годовом тарифе после автопродления домена должна оставаться сумма, достаточная для оплаты услуг хостинга на период, оставшийся до окончания оплаченного ранее года пользования услугами. 5. Если на балансе аккаунта недостаточно средств для продления домена и оплаты хостинга (п. 4), то сумма для продления будет полностью списана с привязанной банковской карты. Производится не более трех попыток списания с привязанной карты. 6. В случае, если автоматическое списание средств для продления домена не удалось, повторное списание будет произведено через 24 часа. 7. Предварительное уведомление о скором списании средств за услугу производится по e-mail за 3 календарных дня до первой попытки списания. Списание можно отменить в настройках домена путем отключения опции автопродления. 8. Уведомление о неуспешных списаниях отправляются по e-mail за 3 и 1 календарный день до окончания срока регистрации домена. Уведомление об успешном списании средств за автопродление домена направляется на e-mail в момент успешного списания. 9. Включить уведомления о списаниях по СМС возможно в панели управления аккаунтом. Уведомления о неуспешных списаниях по СМС направляются только за 10 дней до окончания срока регистрации домена. Уведомление об успешном списании средств направляется в момент списания. 10. Автопродление доменов возможно только для доменных имен партнеров-регистраторов Timeweb, зарегистрированных в Timeweb или перенесенных в любой момент в Timeweb. Включение автопродления для перенесенных доменов возможно на следующий день после переноса. 11. Автопродление на заблокированном аккаунте не производится. После разблокирования аккаунта услуга автопродления доменов будет активирована. 12. Если для домена подключен какой-либо [тариф продления](https://timeweb.cloud/docs/domains/domain-renewal-plans), то домен будет продлен с тем набором преимуществ (Экстра или Премиум), который для него выбран. Если вы хотите изменить набор преимуществ при продлении на следующий год, необходимо при приближении срока окончания домена выбрать другой тариф продления. Переход между тарифами бесплатный. ## Восстановление международных доменов Если международный домен (.COM, .SITE, .ONLINE и др.) не был оплачен в течение 30 дней после истечения (в период преимущественного продления), Реестр запускает процедуру удаления домена. Домен переходит в Redepmtion Period, в течение которого администратор может восстановить свои права на доменное имя. Redepmtion Period длится, как правило, 30 дней. Если не восстановить домен за этот срок, он перейдет в статус PendingDelete или PendingDelete Restorable и будет удален из Реестра через 5 дней после окончания срока RedemptionPeriod. В течение этих пяти дней восстановить, продлить или зарегистрировать домен невозможно. После удаления домена из Реестра его может зарегистрировать любое лицо. ### Как восстановить домен? Отправьте [обращение в службу поддержки](https://timeweb.cloud/my/support/help-question) и укажите в нем имя домена, который хотите восстановить. Стоимость восстановления рассчитывается индивидуально для каждого домена, исходя из стоимости, которую устанавливает партнер-регистратор и расходов на сопровождение процедуры восстановления. # Тарифы продления доменов Source: https://timeweb.cloud/docs/domains/domain-renewal-plans При продлении доменов через Timeweb Cloud вы можете выбрать **тариф продления**. В зависимости от тарифа вам будет доступен определенный набор преимуществ, которые упростят работу, откроют доступ к дополнительным сервисам и позволят сэкономить при заказе других услуг. Из нескольких доступных тарифов вы можете выбрать вариант именно с теми опциями, которые будут вам полезны. ## Тарифы для доменов .RU и .РФ ### Тариф «Стандарт» для .RU / .РФ Стоимость стандартного тарифа составляет **399 рублей в год**. Тариф включает в себя базовые опции, которые по умолчанию доступны всем клиентам Timeweb при продлении доменов .RU и .РФ: 1. **Автопродление домена**Вы можете включить для домена автоматическое продление и быть уверены, что он всегда будет продлен в срок. 2. **Бесплатный трансфер доменов .RU и .РФ без ограничений**Вы можете совершенно бесплатно перенести домены .RU и .РФ от других регистраторов в Timeweb, чтобы удобно продлевать их в одной панели с хостингом. 3. **Доменная почта**Вы можете создавать почтовые ящики на своем домене и получаете [инструмент](https://timeweb.cloud/docs/mail/mail-settings/catch-all) для сбора почты, чтобы ни одно письмо не пропало. 4. **Мониторинг состояния домена**Мы отслеживаем статусы домена и уведомляем вас о любых изменениях и событиях: смена данных администратора, приближение или наступление срока окончания регистрации, смена DNS-серверов, изменение IP-адресов домена (предоставляется по запросу). ### Тариф «Экстра» для .RU / .РФ Стоимость тарифа — **499 рублей в год**. Содержит все преимущества тарифа «**Стандарт**», а также: 1. **Отсрочка платежа за продление домена**При возникновении финансовых затруднений или других обстоятельств, препятствующих своевременному продлению домена через год, по вашему запросу мы предоставим отсрочку платежа на 10 дней. 2. **Персональная скидка на домены в международных зонах или один бесплатный домен в зоне .site или .online**Стоимость каждой зоны согласуем с вами отдельно. Для получения скидки или для регистрации домена .site или .online напишите в поддержку. 3. **Персональная приоритетная юридическая консультация** по вопросам, связанным с доменными именами: — Посредничество и предоставление консультаций при обращении третьих лиц, заявляющих права на доменное имя; — Разбор ситуаций, связанных с товарными знаками; — Участие в реализации преимущественного права регистрации домена (в случае вынесения судебного решения); — Информационная помощь при возникновении споров о доменных именах; — Предоставление справок, выписок, сертификатов, подтверждающих ваши права на доменное имя и/или связанную с ним информацию. 4. **Опция «Антиспам»**Защита от спама всей почты на домене за 0 руб. вместо 99 руб. В услугу входит защита от спама, фишинговых ссылок, вредоносных вложений, а также фильтрация контента. 5. **Безбумажная передача прав на домен**Достаточно одного заявления, после чего вы сможете переоформлять домены на других администраторов по заявке на e-mail. Опция доступна для доменов, зарегистрированных или [перенесенных](https://timeweb.cloud/docs/domains/changing-domain-registrar/ru-rf-inbound) в Таймвэб.Домены. ### Тариф «Премиум» для .RU / .РФ Стоимость тарифа — **899 рублей в год**. Содержит все преимущества тарифов «**Стандарт**» и «**Экстра**», а также: 1. **Сертификат о владении доменом**Официальный документ, подтверждающий ваше право владения доменом в зоне .RU и .РФ. Стоимость свидетельства составит для вас 0 рублей вместо 300 рублей, отправка также за наш счет. (Опция доступна для доменов, зарегистрированных или перенесенных в Таймвэб.Домены.) 2. **Фиксированная стоимость продления домена в течение 5 лет**Вне зависимости от курсов валют, инфляции и скачков цен, стоимость продления данного домена останется для вас неизменной. 3. **Индивидуальные консультации менеджеров**Поможем при подборе новых доменов для защиты бренда; при выставлении домена на продажу и формировании цены; проконсультируем и поможем выполнить индивидуальные настройки DNS. 4. **Доступ к пакетной регистрации доменов: 20 доменов за 990 руб.**Возможность зарегистрировать набор из 10 доменов RU + 10 доменов SITE или ONLINE за 990 рублей. ## Тарифы для других доменных зон Стоимость тарифа зависит от доменной зоны. > [!NOTE] > Актуальную стоимость для конкретного домена вы можете увидеть в панели управления перед продлением. Если домен еще не перенесен к нам — напишите в поддержку на info@timeweb.cloud, мы подскажем, сколько будет стоить продление той или иной зоны. ### Тариф «Стандарт» Тариф включает в себя базовые опции, которые по умолчанию доступны всем клиентам Timeweb при продлении доменов через нашу компанию: 1. **Автопродление домена**Вы можете включить для домена автоматическое продление и быть уверены, что он всегда будет продлен в срок. 2. **Возможность продления домена на срок до 10 лет**Вы можете продлить домен сразу на несколько лет и не переживать об изменении стоимости и необходимости ежегодного своевременного продления. 3. **Доменная почта**Вам предоставляется возможность создания почтовых ящиков на вашем домене и [инструмент](https://timeweb.cloud/docs/mail/mail-settings/catch-all) для сбора почты, чтобы ни одно письмо не пропало. 4. **Мониторинг состояния домена**Мы отслеживаем статусы домена и уведомляем вас о любых изменениях и событиях: смена данных администратора, приближение или наступление срока окончания регистрации, смена DNS-серверов, изменение IP-адресов домена (предоставляется по запросу). ### Тариф «Экстра» Содержит все преимущества тарифа «**Стандарт**», а также: 1. **Отсрочка платежа за продление домена**При возникновении финансовых затруднений или других обстоятельств, препятствующих своевременному продлению домена через год, по вашему запросу мы предоставим отсрочку платежа на 10 дней. 2. **Персональная скидка на домены в международных зонах или один бесплатный домен в зоне .site или .online**Стоимость каждой зоны согласуем с вами отдельно. Для получения скидки или для регистрации домена .site или .online напишите в поддержку. 3. **Персональная приоритетная юридическая консультация** по вопросам, связанным с доменными именами: — Посредничество и предоставление консультаций при обращении третьих лиц, заявляющих права на доменное имя; — Разбор ситуаций, связанных с товарными знаками; — Участие в реализации преимущественного права регистрации домена (в случае вынесения судебного решения); — Информационная помощь при возникновении споров о доменных именах; — Предоставление справок, выписок, сертификатов, подтверждающих ваши права на доменное имя и/или связанную с ним информацию. 4. **Опция «Антиспам»**Защита от спама всей почты на домене за 0 руб. вместо 99 руб. В услугу входит защита от спама, фишинговых ссылок, вредоносных вложений, а также фильтрация контента. ### Тариф «Премиум» Содержит все преимущества тарифов «**Стандарт**» и «**Экстра**», а также: 1. **Выписка из реестра администраторов доменов**Официальный документ, подтверждающий информацию о домене и его владельце на момент предоставления документа. 2. **Фиксированная стоимость продления домена в течение 5 лет**Вне зависимости от курсов валют, инфляции и скачков цен, стоимость продления данного домена останется для вас неизменной. 3. **Индивидуальные консультации менеджеров**Поможем при подборе новых доменов для защиты бренда; при выставлении домена на продажу и формировании цены; проконсультируем и поможем выполнить индивидуальные настройки DNS. 4. **Доступ к пакетной регистрации доменов: 20 доменов за 990 руб.**Возможность зарегистрировать набор из 10 доменов RU + 10 доменов .SITE или .ONLINE за 990 рублей. ## Как выбрать тариф? При выборе тарифа опирайтесь на то, как и для чего вы используете домен. Для доменов, которые используются для временных или тестовых проектов, или доменов, с назначением которых вы пока не определились, выбирайте тариф «Стандарт». Для доменов, которые являются основным именем сайта или названием вашего бренда, выбирайте тарифы «Экстра» или «Премиум» — в зависимости от нужных вам опций. С их помощью вы не только обеспечите безопасность домена, но и сможете получить дополнительные преимущества с максимальной выгодой. ## Как подключить тариф? Подключить желаемый тариф можно **при продлении домена**. 1. В разделе «Баланс и платежи» кликните на ссылку со стоимостью домена. 2. В открывшемся окне найдите нужный тариф и кликните «Выбрать». 3. Оплатите продление домена по выбранному тарифу. Если вы продлили домен по тарифу «Стандарт», а через какое-то время поняли, что вам нужен «Экстра» или «Премиум» — напишите в поддержку, мы поможем подключить желаемый тариф. Если для домена включено [автопродление](https://timeweb.cloud/docs/domains/registration-and-renewal#avtoprodlenie-domena), то домен будет автоматически продлеваться по выбранному для него тарифу. Если вы хотите изменить тариф при продлении на следующий год, необходимо при приближении срока окончания домена выбрать другой тариф продления. Переход между тарифами бесплатный. # Особенности отдельных доменных зон Source: https://timeweb.cloud/docs/domains/tld-requirements В статье приводим особенности и ограничения регистрации доменов в отдельных доменных зонах. ## Домены .AE Национальная доменная зона Объединенных Арабских Эмиратов. Согласно правилам зоны .AE, регистрация доступна только резидентам ОАЭ. ## Домены .AI Национальная доменная зона британской территории Ангилья. Доступна всем желающим и часто используется для проектов, связанных с искусственным интеллектом. Регистрация и продление доменов .AI выполняется минимум на 2 года. ## Домены .BY и .БЕЛ Национальные доменные зоны Республики Беларусь. Регистрация выполняется через нашего партнера — российского регистратора Webnames и доступна только нерезидентам Республики Беларусь. Резиденты могут зарегистрировать домен через аккредитованных регистраторов на территории Беларуси. ## Домены .EU Доменная зона стран Евросоюза. Согласно правилам зоны .EU, регистрация доступна только для: - физических лиц — резидентов стран Евросоюза; - юридических лиц, зарегистрированных на территории Евросоюза либо имеющих на этой же территории свое представительство или контактное лицо. ## Домены .KZ Национальная доменная зона Республики Казахстан. Согласно правилам зоны .KZ, сервер, на который направлен домен, должен располагаться на территории Казахстана. ## Домены .NYC Доменная зона города Нью-Йорк. Согласно правилам зоны .NYC, регистрация доступна только резидентам Нью-Йорка. # Особенности премиум-доменов Source: https://timeweb.cloud/docs/domains/premium-domains Премиум-домены — это лаконичные и запоминающиеся доменные имена, которые реестр считает наиболее интересными для пользователей. Это могут быть короткие имена, состоящие всего из нескольких символов, имена, содержащие популярные ключевые слова или названия брендов, и так далее. При этом одно и то же доменное имя может быть премиальным в одной зоне (например, .ru) и обычным в другой (например, .com), потому что для русскоязычного пользователя оно несет определенный смысл, а для англоязычного — нет. Сайты с такими доменами обычно расположены выше в поисковой выдаче, так как домены содержат ключевые слова. Посещаемость этих сайтов тоже больше, потому что пользователи запоминают имя домена и чаще возвращаются на сайт. ## Стоимость премиум-доменов Стоимость премиальных доменов будет выше стандартной цены домена в этой доменной зоне. Стоимость каждого премиум-домена определяет владелец доменной зоны — реестр. Списки премиальных доменов в конкретных зонах не находятся в общем доступе, поэтому цена их регистрации заранее неизвестна. По этой причине стоимость регистрации домена может не совпадать с той, которая указана в панели управления. ## Регистрация премиум-доменов Регистрация премиум-доменов может иметь определенные нюансы в отличие от обычных доменов. В тех случаях, когда премиальность домена можно определить заранее (это зависит от доменной зоны и от того, передаст ли регистратор необходимые сведения при проверке занятости домена), при вводе названия домена в разделе «[Домены и SSL](https://timeweb.cloud/my/domains/registration)» в панели управления вы увидите сообщение, что он является премиальным. В этом случае напишите в нашу [службу поддержки](https://timeweb.cloud/my/support/help-question), чтобы уточнить цену. Если такое предупреждение не отобразилось, заявка на регистрацию домена будет сформирована с обычной стоимостью. Если при обработке заявки регистратором окажется, что домен является премиальным, его будет невозможно зарегистрировать по стандартной цене, и в разделе «Домены и SSL» появится ошибка. В этом случае обратитесь в нашу [службу поддержки](https://timeweb.cloud/my/support/help-question) — мы уточним актуальную цену у регистратора и сообщим ее вам. Если вы будете готовы приобрести домен, мы зарегистрируем его для вас. Если же цена вас не устроит, то средства, оплаченные за регистрацию домена, можно будет вернуть или использовать для оплаты других сервисов на аккаунте. # Управление поддоменами Source: https://timeweb.cloud/docs/domains/subdomains Вы можете создать поддомен для любого зарегистрированного домена, добавленного в панель управления. ## Особенности поддоменов - Чтобы указать для поддомена запись TXT, в том числе SPF и DKIM, ее необходимо прописать в настройках основного домена. - Для поддоменов автоматически указываются те же NS-серверы, что и для основного домена. > [!NOTE] > В настоящий момент изменить NS-серверы поддомена невозможно. Функционал для настройки собственных NS-серверов для поддоменов находится в разработке и скоро появится в панели управления. ## Создание поддомена Чтобы создать поддомен: 1. В разделе «Домены и SSL» кликните на нужный домен и перейдите на вкладку «Поддомены». ![7b161b16 0f7f 4f8c B2b5 B5a837a1ab4b](https://content.timeweb.com/assets/62a934a1-c2fc-4878-80a9-3c7c4dfd1600.png?width=1526&height=734) 2. Нажмите «Создать» или «Добавить». 3. Укажите поддомен и IP-адрес, который должен быть указан в качестве A-записи поддомена. Вы можете: - Выбрать один из сервисов на аккаунте. - Указать IP-адрес вручную. - Не указывать IP-адрес — в этом случае A-запись для поддомена не будет создана. ![2a5191eb 9d32 4ac7 B3dd 90379629ee2c](https://content.timeweb.com/assets/eb6eeb0b-ffec-4a10-93df-403156c8182f.png?width=611&height=533) 4. Нажмите «Добавить». ## Настройка DNS для поддомена Настройка DNS для поддомена выполняется точно так же, как для основного домена. Подробную инструкцию можно найти в статье [«Настройка DNS-записей»](https://timeweb.cloud/docs/domains/dns-records-management). > [!NOTE] > NS-серверы поддомена изменить невозможно. Для поддомена будут прописаны NS, указанные для основного домена. Чтобы перейти к настройкам DNS поддомена: 1. В разделе «Домены и SSL» кликните на строку с основным доменом. 2. Перейдите на вкладку «DNS». 3. Выберите в выпадающем списке нужный поддомен. ![Dda3261a 38d2 46a6 8868 8aad80be967d](https://content.timeweb.com/assets/fe968043-bfb6-44ab-9efe-7f44f3031cac.png?width=1532&height=723) ## Изменение привязки поддомена Вы можете изменить, к какому сервису привязан поддомен. Фактически это означает смену A-записи поддомена. Это можно сделать: - В настройках DNS (см.выше), указав в A-записи нужный сервис или IP-адрес. - Через опцию «Изменить сервер». Для этого: 1. 1. На вкладке «Поддомены» кликните на три точки у нужного поддомена и выберите «Изменить сервер». ![4af26dda 6464 4b50 A1c6 29cb950c9616](https://content.timeweb.com/assets/ef9367b2-db1c-4bb3-be1b-b94a76b54971.png?width=1532&height=861) 1. 2. Выберите нужный сервис из списка или укажите IP-адрес вручную. 1. 3. Сохраните изменения. ## Удаление поддомена Чтобы удалить любой поддомен: 1. В разделе «Домены и SSL» кликните на нужный домен. 2. На вкладке «Поддомены» кликните на три точки у нужного поддомена и выберите «Удалить поддомен». ![44328f7d 4840 4be2 9aec 99a65cbaaa5d](https://content.timeweb.com/assets/57acc5de-4609-4b0b-b824-c9be3387beab.png?width=1532&height=861) 3. В следующем окне подтвердите удаление. # Настройка DNS-записей Source: https://timeweb.cloud/docs/domains/dns-records-management В панели управления аккаунтом вы можете настроить следующие записи для доменов и поддоменов: - NS-серверы - А и АААА - MX - SRV - TXT - SPF - DKIM - CNAME (для поддоменов) Для настройки почты для домена (Яндекс.Почта, Mail.ru, Google) воспользуйтесь нашими [инструкциями](https://timeweb.cloud/docs/mail/setting-up-domain-mail). ## Управление DNS Чтобы перейти к настройкам DNS, в разделе «Домены и SSL» наведите курсор на нужный домен и нажмите на значок шестеренки. ![E829cbe3 B6b1 472a A101 86569bd8b80c](https://content.timeweb.com/assets/c86f983f-a810-487c-af4d-1f50f1ddfb25.png?width=1533&height=845) Либо: 1. В разделе «Домены и SSL» кликните на строку с нужным доменом. 2. Перейдите на вкладку «DNS». ![6baf83c7 8cf8 468c 955b C800020bf01b](https://content.timeweb.com/assets/c2013f2c-b325-4220-b652-db7cc65ff239.png?width=1920&height=869) ## Создание DNS-записи Если нужно добавить новую запись: 1. На вкладке «DNS» кликните «Добавить запись» справа вверху. 2. В открывшейся форме выберите тип записи из выпадающего списка. ![Ffeeba46 3c41 4d95 91d5 289d76d1122b](https://content.timeweb.com/assets/73e573ba-e8cc-4226-858e-192dddfe300f.png?width=1532&height=841) 3. Введите параметры записи и нажмите «Добавить». ![C60072c2 Fb64 40b7 B58f D3a1e15fe55b](https://content.timeweb.com/assets/fa66eb1b-7be7-4658-9710-2a9794599281.png?width=1538&height=844) Подробнее о настройке каждого типа записи — ниже в этой статье. ## Изменение DNS-записи Если запись нужного типа уже создана, вы можете отредактировать ее вместо создания новой. Для этого: 1. На вкладке «DNS» кликните на строку с нужной записью. Для удобства вы можете переключаться по вкладкам, чтобы отобразить только записи нужного типа. 2. Укажите новые значения и нажмите «Сохранить». ![037d875d 93c2 4c7a Bd8b 2aab6c7718c7](https://content.timeweb.com/assets/30b4607d-8bf9-4e85-80e2-2980253c0037?width=600&height=319) ## Удаление DNS-записи Чтобы удалить запись: 1. На вкладке «DNS» кликните на три точки у нужной записи. 2. Кликните «Удалить». 3. В следующем окне подтвердите действие. ![B166a017 7424 477b 93cf 807a82ae73ae](https://content.timeweb.com/assets/4047fec2-2320-4077-a7e9-00ca25081853.png?width=1537&height=840) Можно удалить сразу несколько записей. Для этого отметьте их галочками и кликните кнопку «Удалить» справа вверху. ![0ebbce59 F84e 42e9 8203 D91f1ea0dbd8](https://content.timeweb.com/assets/0937f878-284e-470b-926f-ea65c9307e38.png?width=1538&height=826) ## NS-серверы Редактирование NS-серверов в панели Timeweb Cloud доступно только для доменов, зарегистрированных через [Таймвэб.Домены](https://timeweb.name/). Это большинство доменов .RU и .РФ. Если регистратором домена является один из наших партнеров (R01, Ru-Center, PDR), в панели будет запись «Управление NS-серверами недоступно». В этом случае управлять NS необходимо [в панели конкретного регистратора](https://timeweb.cloud/docs/domains/dostup-v-panel-upravleniya-registratora). Если вы не знаете, кто ваш регистратор — свяжитесь с нашей поддержкой, мы поможем. > [!NOTE] > Для поддоменов автоматически указываются те же NS-серверы, что и для основного домена, изменить их невозможно. > > Вскоре в панели управления появится функционал для настройки собственных NS-серверов для поддоменов. Наши NS-серверы: ```shell ns1.timeweb.ru ns2.timeweb.ru ns3.timeweb.org ns4.timeweb.org ``` Для изменения NS: 1. В разделе «Домены и SSL» кликните на нужный домен. 2. На вкладке «Управление» нажмите «Настроить» в строке «NS-серверы». ![Group 1321314240](https://content.timeweb.com/assets/1131833e-2cf2-4eaa-9a70-466c6ec3a3da.png?width=1920&height=870) Для успешного делегирования домена необходимо указать не менее двух NS-серверов. Чтобы указать наши NS-серверы, достаточно кликнуть на «Установить NS-серверы Timeweb». Процедура делегирования домена на новые NS может занимать от 3 до 24 часов; после ее завершения на административный e-mail домена будет отправлено уведомление об успешном делегировании. ## А и АААА А и АААА — адресные записи, связывающие имя домена с его IP-адресом. 1. В разделе «Домены и SSL» нажмите на значок шестеренки у нужного домена. ![Dns1](https://content.timeweb.com/assets/6392b985-f0c6-4433-b59e-8f9914c02e23?width=1065&height=141) 2. Если нужно изменить существующую запись, кликните на строку с ней. Если нужно добавить новую запись, кликните «Добавить запись» справа вверху. 3. Выберите нужный тип записи и укажите необходимый IP-адрес или сервис аккаунта. ## MX 1. В разделе «Домены и SSL» нажмите на значок шестеренки у нужного домена. ![Dns1](https://content.timeweb.com/assets/6392b985-f0c6-4433-b59e-8f9914c02e23?width=1065&height=141) 2. Если нужно изменить существующую запись, кликните на строку с ней. Если нужно добавить новую запись, кликните «Добавить запись» справа вверху. 3. Выберите тип записи MX, затем — нужный почтовый сервис в пункте «Служба». Чтобы указать значения вручную, выберите «Другое». ![Df47da01 1a4e 47d2 A35c Bc5f6f6d0024](https://content.timeweb.com/assets/838359e3-4266-4cb6-beb0-be4adda381fb.png?width=1542&height=847) Если для домена были созданы другие MX-записи, их нужно удалить. ## SRV Настройка SRV требуется при использовании протоколов SIP и XMPP (Jabber). Необходимые для настройки необходимо получить у вашего провайдера Jabber-сервиса. 1. В разделе «Домены и SSL» нажмите на значок шестеренки у нужного домена. ![Dns1](https://content.timeweb.com/assets/6392b985-f0c6-4433-b59e-8f9914c02e23?width=1065&height=141) 2. Если нужно изменить существующую запись, кликните на строку с ней. Если нужно добавить новую запись, кликните «Добавить запись» справа вверху. 3. Выберите тип записи SRV и заполните параметры: ![E77daed9 9682 4796 8eba E42c370aa5d3](https://content.timeweb.com/assets/2bceea93-3c26-4fe3-9fc9-735d91cb1964.png?width=1139&height=815) SRV-записи имеют формат: ```shell _service._proto.name IN SRV priority weight port hostname ``` Где: - service — имя сервиса; - proto — имя протокола, обычно это \_tcp или \_udp; - priority — приоритет записи; - weight — вес записи; - port — порт на сервере; - hostname — хост. К примеру, для указания SRV-записи: ```shell _xmpp-server._tcp.domain.com. IN SRV 5 0 5269 xmpp-server.l.google.com. ``` в настройках нужно прописать: - Служба: \_xmpp-server - Протокол: TCP - Приоритет: 5 - Порт: 5269 - Хост: xmpp-server.l.google.com ## TXT > [!NOTE] > Чтобы настроить TXT-запись для поддомена, ее необходимо прописывать в настройках основного домена. TXT-запись содержит вспомогательную информацию о домене. TXT-записи используются, например, для настройки SPF и DKIM, а также для подтверждения права собственности на домен. 1. В разделе «Домены и SSL» нажмите на значок шестеренки у нужного домена. ![Dns1](https://content.timeweb.com/assets/6392b985-f0c6-4433-b59e-8f9914c02e23?width=1065&height=141) 2. Если нужно изменить существующую запись, кликните на строку с ней. Если нужно добавить новую запись, кликните «Добавить запись» справа вверху 3. Выберите тип записи TXT и введите нужные значения. Например, для выпуска SSL-сертификата может потребоваться указать TXT-записи вида: ```shell _acme-challenge.domain.com. TXT KoZ26MJmum64Wevjg-xh23pqymt5W7sN-xGF0BXdo4g ``` Чтобы задать такую запись, в настройках DNS домена кликните «Добавить запись» и далее укажите: - Тип — TXT. - Хост — выберите «Ввести вручную» и укажите `_acme-challenge`. - Значение — введите значение записи из консоли (в нашем примере — `KoZ26MJmum64Wevjg-xh23pqymt5W7sN-xGF0BXdo4g`). ![Esrd](https://content.timeweb.com/assets/0bcad61b-7a32-4f3c-9756-be85b50ed0e7.png?width=1537&height=841) ## SPF > [!NOTE] > Чтобы настроить SPF-запись для поддомена, ее необходимо прописывать в настройках основного домена. Для доменов, делегированных на наши NS-серверы, SPF-запись указывается автоматически. По умолчанию она имеет вид: ```shell v=spf1 include:_spf.timeweb.ru ~all ``` Вы можете редактировать SPF в настройках домена. 1. В разделе «Домены и SSL» нажмите на значок шестеренки у нужного домена. ![Dns1](https://content.timeweb.com/assets/6392b985-f0c6-4433-b59e-8f9914c02e23?width=1065&height=141) 2. Если нужно изменить существующую запись, кликните на строку с ней. Если нужно добавить новую запись, кликните «Добавить запись» справа вверху. 3. Выберите тип записи TXT и введите нужные значения. Не рекомендуется указывать больше одной SPF-записи для домена. Если запись уже существует и является актуальной, необходимо отредактировать ее вместо создания еще одной. Например, если создана запись: ```shell v=spf1 include=_spf.mail.ru ~all ``` То для добавления SPF-записи Timeweb Cloud необходимо привести ее к виду: ```shell v=spf1 include=_spf.mail.ru include:_spf.timeweb.ru ~all ``` ## DKIM > [!NOTE] > Чтобы настроить DKIM для поддомена, ее необходимо прописывать в настройках основного домена. При использовании почты Timeweb Cloud DKIM-подпись для домена будет создана автоматически — после того, как вы создадите почтовый ящик на нужном домене в разделе «Почта» и выполните отправку первого сообщения. Если вы используете другой почтовый сервис, получить реквизиты для настройки DKIM необходимо у вашего провайдера почты и прописать их в настройках домена. 1. В разделе «Домены и SSL» нажмите на значок шестеренки у нужного домена. ![Dns1](https://content.timeweb.com/assets/6392b985-f0c6-4433-b59e-8f9914c02e23?width=1065&height=141) 2. Если нужно изменить существующую запись, кликните на строку с ней. Если нужно добавить новую запись, кликните «Добавить запись» справа вверху. 3. Выберите тип записи TXT. 4. Укажите нужное значение в поле «Хост» и полученное от провайдера значение TXT-записи. ## CNAME Запись CNAME (каноническое имя) используется для наследования доменом всех ресурсных записей указанного домена, за исключением NS. CNAME можно настроить **только для поддоменов** основного домена, в том числе для технических поддоменов с нижним подчеркиванием, например, `_dmarc`. Последнее обычно требуется, если нужно привязать домен, делегированный на NS-серверы Timeweb Cloud, к стороннему почтовому сервису или использовать DNS-записи этого сервиса для проверки и отправки почты. 1. В разделе «Домены и SSL» кликните на строку с нужным доменом. 2. На вкладке «DNS» выберите нужный поддомен и перейдите на вкладку «CNAME». ![892036c7 Ac61 456e 8ff1 41056efecedf](https://content.timeweb.com/assets/e4efd53a-7680-41bc-959d-836f43263feb.png?width=1523&height=755) 3. Если нужно изменить существующую запись, кликните на строку с ней. Если нужно добавить новую запись, кликните «Добавить запись» справа вверху. 4. Убедитесь, что выбран тип записи CNAME и нужный поддомен и введите необходимое значение. Допустим, чтобы для `www.mydomain.ru` были применены те же настройки DNS, что и для `mydomain.ru`, необходимо указать `mydomain.ru` в качестве CNAME-записи. При настройке кириллических доменов указывайте их в punycode (`xn--d1acufc.xn--p1ai` вместо `домен.рф`). > [!NOTE] > Не указывайте точку в конце значения CNAME. Наша система добавит ее автоматически. ![F6fe7d56 38df 4be3 8542 150893d214d7](https://content.timeweb.com/assets/227760e1-ac3a-49ca-bd62-3275a9d0d389.png?width=1531&height=869) ## Настройка TTL для DNS-записей TTL (time to live, «время жизни») — это период в секундах, в течение которого информация о DNS-записи будет храниться в памяти кэширующих DNS-серверов. После истечения указанного времени сервер запрашивает у NS-серверов значение записи заново. Этот параметр позволяет оценить, сколько времени займет обновление существующей DNS-записи при ее редактировании. TTL не влияет на скорость применения новых DNS-записей или обновления NS-серверов домена. Для доменов на наших NS для всех DNS-записей по умолчанию устанавливается значение TTL, равное 600 секундам. Вы также можете самостоятельно управлять этим параметром. > [!NOTE] > Не меняйте значение TTL, если не уверены в необходимости этой настройки. Чтобы настроить TTL для записи: 1. В разделе «Домены и SSL» нажмите на значок шестеренки у нужного домена. 2. Найдите нужную запись в списке и кликните на строку с ней. 3. Укажите требуемое значение TTL и сохраните изменения. ![2d8d743a 3311 4f5b Aae0 4ac6d11f50fd](https://content.timeweb.com/assets/a905f41f-4c52-4bcc-b7b2-adbf43e84c8c.png?width=607&height=640) # Импорт DNS-записей Source: https://timeweb.cloud/docs/domains/importing-dns-records Если у вас уже есть готовый файл зоны в формате `.zone`, вы можете быстро импортировать все DNS-записи для домена — это удобно при переносе с другого хостинга или массовом редактировании. `.zone` — это обычный текстовый файл, который описывает DNS-записи для домена. Формат `.zone` позволяет задать все нужные записи в одном месте и загрузить их разом, а не вводить по одной вручную. Поддерживаются следующие типы записей: - A - AAAA - CNAME - MX - TXT - SRV Если в файле есть другие типы, они будут проигнорированы — такие записи не появятся в списке при импорте и не вызовут ошибку. Из директив в `.zone`\-файле поддерживаются только: - `$ORIGIN` — задает базовый домен; - `$TTL` — задает TTL по умолчанию. Другие директивы будут проигнорированы при импорте. ## Импорт записей Чтобы загрузить `.zone`\-файл, перейдите во вкладку управления DNS-записями домена и нажмите кнопку «Импортировать записи». ![Image 20250919182203321](https://content.timeweb.com/assets/3ba7888a-6f9b-4272-9ba1-8df5382b4eac.png?width=2020&height=1392) В открывшемся окне выберите файл с расширением `.zone` со своего компьютера. После загрузки вы увидите предварительный список всех записей, которые будут созданы. - Записи, которые содержат ошибки, будут подсвечены. - Ненужные записи можно удалить, нажав на крестик рядом. ![Image 20250919182626676](https://content.timeweb.com/assets/92e55c3a-886d-42ff-a302-399870ce2f36.png?width=2364&height=1592) Когда все готово, нажмите «Добавить X записей», чтобы сохранить изменения. # Настройка DNS у других регистраторов Source: https://timeweb.cloud/docs/domains/dns-records-management-other-registrars Для того чтобы ваш сайт открывался по определенному домену, в качестве A-записи домена должен быть указан IP-адрес сервера, на котором хранятся файлы сайта. Настроить A-запись необходимо на стороне держателя NS-серверов. Проверить, кто является держателем NS, можно через любой whois-сервис. Если у вашего домена указаны наши NS-серверы: - `ns1.timeweb.ru` - `ns2.timeweb.ru` - `ns3.timeweb.org` - `ns4.timeweb.org` — то менять A-запись и другие настройки вы можете через панель Timeweb Cloud в разделе «Домены и SSL». Инструкцию можно найти [здесь](https://timeweb.cloud/docs/domains/dns-records-management). Если же у домена другие NS, например, `ns1.reg.ru` или `ns1.r01.ru` и др., вам нужно зайти в панель соответствующего регистратора и поменять настройки там. Если вы затрудняетесь определить, кто ваш регистратор, свяжитесь с нами — мы поможем. Чтобы в дальнейшем редактировать DNS-записи через панель Timeweb Cloud, вы можете делегировать домен к нам — для этого в панели регистратора укажите NS-серверы Timeweb Cloud, которые указаны выше. В этой инструкции мы рассмотрим, как настроить A-запись и NS-серверы в панелях крупнейших регистраторов. ## PDR Домены в международных зонах, таких как `.com`, `.net`, `.online` и т.д., мы регистрируем через нашего партнера — регистратора PDR. По инструкциям ниже вы можете изменить настройки DNS в панели PDR. ### Смена NS-серверов в PDR 1. Авторизуйтесь в [панели регистратора](https://timeweb.myorderbox.com/). При логине убедитесь, что выбран тип пользователя «Customer». Получить доступ можно по нашей [инструкции](https://timeweb.cloud/docs/domains/dostup-v-panel-upravleniya-registratora#pdr). 2. Перейдите в раздел **Manage Orders** → **List/Search Orders**. ![C2e204b0 4b8b 4a97 8c35 910378467de0](https://content.timeweb.com/assets/e0cb0424-a597-422b-b1ad-bd436ee3b924?width=1275&height=775) _Меню «Manage Orders» в личном кабинете [PDR](https://publicdomainregistry.com/)_ 3. В списке найдите нужный домен и кликните на него. ![47dedfc9 Db1e 4a8d 9e0c E1b11c656762](https://content.timeweb.com/assets/f020bd25-786e-4c19-8f67-758880fd51e8?width=1340&height=786) _Раздел «List of Orders» в личном кабинете [PDR](https://publicdomainregistry.com/)_ 4. Кликните на **Name Servers**. ![5e32e4e0 27fa 4d16 B6bb 42a7b765c8da](https://content.timeweb.com/assets/f7639455-7b51-497b-8472-772cb4d70abc?width=1335&height=687) _Страница домена в личном кабинете [PDR](https://publicdomainregistry.com/)_ 5. Укажите нужные NS-серверы и нажмите **Update Name Servers**. ![54b5591e E426 4c85 9d38 8c95ea460be7](https://content.timeweb.com/assets/a6e92a32-d663-49a3-b0a8-8249bf829973?width=1092&height=674) _Окно настройки NS-серверов в личном кабинете [PDR](https://publicdomainregistry.com/)_ Делегирование домена на новые NS-серверы займет от 3 до 24 часов. ### Смена A-записи в PDR 1. Авторизуйтесь в [панели регистратора](https://timeweb.myorderbox.com/). Получить доступ можно по нашей [инструкции](https://timeweb.cloud/docs/domains/dostup-v-panel-upravleniya-registratora#pdr). 2. Перейдите в раздел **Manage Orders** → **List/Search Orders**. ![C2e204b0 4b8b 4a97 8c35 910378467de0](https://content.timeweb.com/assets/e0cb0424-a597-422b-b1ad-bd436ee3b924?width=1275&height=775) _Меню «Manage Orders» в личном кабинете [PDR](https://publicdomainregistry.com/)_ 3. В списке найдите нужный домен и кликните на него. ![47dedfc9 Db1e 4a8d 9e0c E1b11c656762](https://content.timeweb.com/assets/f020bd25-786e-4c19-8f67-758880fd51e8?width=1340&height=786) _Раздел «List of Orders» в личном кабинете [PDR](https://publicdomainregistry.com/)_ 4. Кликните на **DNS Management** справа или просто прокрутите страницу в самый низ и кликните на **Manage DNS**. ![14fd6b1d D20e 42d5 A31b Be819256b016](https://content.timeweb.com/assets/4425fddf-4a03-45f2-b92b-dceb2649053a?width=1308&height=570) _Опция «Manage DNS» на странице домена в личном кабинете [PDR](https://publicdomainregistry.com/)_ 5. Кликните на имя домена, чтобы изменить существующую A-запись. ![5ed97938 9fc1 43b9 Aed7 F3a2de513669](https://content.timeweb.com/assets/3f4cbd6c-fdc5-4af0-b5fb-77dc23545d87?width=1005&height=641) _Раздел настройки DNS-записей домена в личном кабинете [PDR](https://publicdomainregistry.com/)_ 6. Нажмите **Modify Record**. ![2c2e7b33 E8e2 4024 90d5 4bbffb90789d](https://content.timeweb.com/assets/7b8d5231-44a0-4075-9a33-e00641d751c5?width=1003&height=569) _Раздел настройки DNS-записей домена в личном кабинете [PDR](https://publicdomainregistry.com/)_ 7. Укажите новый IP-адрес и нажмите **Modify Record** внизу. ![Без Названия (1)](https://content.timeweb.com/assets/8ac057b2-fc64-43ed-9426-42406ef36a89?width=1006&height=619) _Указание новой A-записи домена в личном кабинете [PDR](https://publicdomainregistry.com/)_ Смена A-записи у домена займет некоторое время: обычно до 3 часов, в отдельных случаях до 24 часов. ## R01 Домены в зонах .kz и .su, а также часть доменов .ru и рф зарегистрированы через нашего партнера Регистратора R01. По инструкции ниже вы сможете настроить NS-серверы и A-запись домена в панели R01. ### Смена NS-серверов в R01 1. Авторизуйтесь в [панели регистратора](https://partner.r01.ru/). Получить доступ можно по нашей [инструкции](https://timeweb.cloud/docs/domains/dostup-v-panel-upravleniya-registratora#registrator-r01). 2. Перейдите в раздел «Домены» и кликните на значок карандаша у нужного домена. ![7e736ba0 D2cd 4af1 9df0 A544f8958ce6](https://content.timeweb.com/assets/1e6d6a0a-20ac-4b47-8dcb-4c09e7b2b7c1?width=1920&height=869) _Раздел «Домены» в личном кабинете [R01](https://r01.ru)_ 3. Задайте нужные NS-серверы. ![Ec5065be Ff52 45cc 9f91 72c0f47ec908](https://content.timeweb.com/assets/dffff1ec-e8f2-4c31-a99b-c66b7f653507?width=1898&height=868) _Указание новых NS-серверов в личном кабинете [R01](https://r01.ru)_ 4. Нажмите «Далее» внизу страницы, затем снова «Далее» для применения изменений. Делегирование домена на новые NS-серверы может занять от 3 до 24 часов. ### Смена A-записи в R01 1. Авторизуйтесь в [панели регистратора](https://partner.r01.ru/) и перейдите в раздел «Домены». 2. В строке с нужным доменом кликните на значок управления зоной: ![R01 A 1](https://content.timeweb.com/assets/c8d29441-a9a3-4274-b6de-72a9a95fa6e3?width=972&height=154) _Опция управления зоной в личном кабинете [R01](https://r01.ru)_ 3. Найдите строку с A-записью и кликните на значок карандаша: ![R01 A 2](https://content.timeweb.com/assets/17697455-47ab-40bc-b0df-b6119cda3834?width=876&height=341) _Опция редактирования A-записи в личном кабинете [R01](https://r01.ru)_ 4. В поле «Значение» укажите нужный IP-адрес. Поле «Хост» оставьте пустым. ![R01 A 3](https://content.timeweb.com/assets/9430bf63-c640-4083-8bb9-8af864c79787?width=978&height=401) _Указание новой A-записи в личном кабинете [R01](https://r01.ru)_ 5. Нажмите «Обновить запись». Смена A-записи займет некоторое время: обычно до 3 часов, в редких случаях до 24 часов. ## Ru-Center По инструкциям ниже вы сможете сменить NS-серверы или A-запись домена в панели регистратора Ru-Center. ### Смена NS-серверов в RU-CENTER 1. Авторизуйтесь в [панели регистратора](https://www.nic.ru/auth/login/). Получить доступ можно по нашей [инструкции](https://timeweb.cloud/docs/domains/dostup-v-panel-upravleniya-registratora#ru-center). 2. Кликните на логин справа вверху и нажмите «Перейти в личный кабинет». ![5b92d484 F8cd 4fe5 Ad53 414693b71f47](https://content.timeweb.com/assets/be979d15-67cd-4dcc-abeb-437ca4ee4fbe.png?width=1893&height=753) _Вход в личный кабинет на сайте [Руцентра](https://www.nic.ru/)_ 3. Кликните на «Домены». 4. Найдите нужный домен 5. Найдите в списке нужный домен и кликните «Изменить» в столбце «DNS». ![A1095ed4 1689 4f81 B22d 33000b05bc48](https://content.timeweb.com/assets/3736933d-2a8e-4159-a804-fa1689ffb0de.png?width=1901&height=849) _Раздел «Домены» в личном кабинете [Руцентра](https://www.nic.ru/)_ 6. Укажите новые NS-серверы и нажмите «Сохранить изменения». ![E72f45b0 8f00 466f 957c 4bf73dab2f1a](https://content.timeweb.com/assets/40cd7a49-0b4f-4a08-8f3f-06aa1ee28fa5.png?width=1885&height=1305) _Указание новых NS-серверов в личном кабинете [Руцентра](https://www.nic.ru/)_ Делегирование домена на новые NS-серверы может занять от 3 до 24 часов. ### Смена A-записи в RU-CENTER > [!NOTE] > Менять настройки DNS в Ru-Center возможно только при условии, что у вас [подключены](https://www.nic.ru/help/kak-zakazat6-uslugi-dns-hosting-dns-premium_11685.html) услуги «[DNS-хостинг](https://www.nic.ru/catalog/for-domain-use/dns-hosting/)» или «DNS-премиум». > > Другой вариант — указать у домена NS-серверы Timeweb Cloud по инструкции выше (эта настройка доступна бесплатно) и в дальнейшем редактировать DNS через нашу панель. #### Настройка для услуги «DNS-хостинг» 1. Авторизуйтесь в [панели регистратора](https://www.nic.ru/auth/login/). 2. Кликните на логин справа вверху и нажмите «Перейти в личный кабинет». ![5b92d484 F8cd 4fe5 Ad53 414693b71f47](https://content.timeweb.com/assets/be979d15-67cd-4dcc-abeb-437ca4ee4fbe.png?width=1893&height=753) _Вход в личный кабинет на сайте [Руцентра](https://www.nic.ru/)_ 3. Перейдите в раздел «DNS-хостинг». ![Dn Shst](https://content.timeweb.com/assets/9d59822e-82c7-43cf-970e-cdf9232ee7bd.jpg?width=1329&height=613) _Раздел «DNS-хостинг» в личном кабинете [Руцентра](https://www.nic.ru/)_ 4. Нажмите кнопку «Управление DNS-зонами». ![Dn Shst 2](https://content.timeweb.com/assets/e978df08-d9e2-4474-9890-e50b349e0f0e.jpg?width=949&height=583) _Опция «Управление DNS-зонами» в личном кабинете [Руцентра](https://www.nic.ru/)_ 5. Кликните на нужный домен, чтобы открыть настройки. ![Nic A 2](https://content.timeweb.com/assets/e69b2d4b-04fc-44bb-8e3a-a0bf52de8e43?width=1490&height=312) _Раздел «Управление DNS-зонами» в личном кабинете [Руцентра](https://www.nic.ru/)_ 6. Найдите строку с A-записью и кликните на значок карандаша. ![Nic A 3](https://content.timeweb.com/assets/fa954da0-023d-41ab-af71-6365ed86fb34?width=1491&height=527) _Опция редактирования A-записи в личном кабинете [Руцентра](https://www.nic.ru/)_ 7. В поле «IP address» введите нужный IP-адрес и нажмите «Применить». ![Nic A 4](https://content.timeweb.com/assets/1ab6f81a-1021-469f-8e36-1d289e46cf6e?width=1483&height=540) _Изменение A-записи в личном кабинете [Руцентра](https://www.nic.ru/)_ 8. Нажмите кнопку «Выгрузить зону». ![Nic A 5](https://content.timeweb.com/assets/26e322ab-b181-4e65-8051-a8874507f3a6?width=1470&height=662) _Опция «Выгрузить зону» в личном кабинете [Руцентра](https://www.nic.ru/)_ Смена A-записи займет некоторое время: обычно до 3 часов, в редких случаях до 24 часов. #### Настройка для услуги «DNS-премиум» *Инструкция на сайте «Ру-Центра»: [nic.ru](https://www.nic.ru/help/nastrojka-uslug-dns-hosting-dns-premium_3491.html#10)* 1. Авторизуйтесь в [панели регистратора](https://www.nic.ru/auth/login/). 2. Кликните на логин справа вверху и нажмите «Перейти в личный кабинет». ![5b92d484 F8cd 4fe5 Ad53 414693b71f47](https://content.timeweb.com/assets/be979d15-67cd-4dcc-abeb-437ca4ee4fbe.png?width=1893&height=753) _Вход в личный кабинет на сайте [Руцентра](https://www.nic.ru/)_ 3. Кликните на «Домены». 4. Кликните на нужный домен в списке. 5. Перейдите на вкладку «Безопасность» и кликните «Панель управления» в блоке «DNS-премиум». ![9fff5be6 E3a9 4736 B9c1 5a8ab462d4e6](https://content.timeweb.com/assets/f552a331-bede-4f1b-b7e9-4b0fc48ac0b7.png?width=1877&height=867) _Раздел «Безопасность» в настройках домена в личном кабинете [Руцентра](https://www.nic.ru/)_ 6. Найдите строку с A-записью и кликните на значок карандаша. ![Nic A 3](https://content.timeweb.com/assets/fa954da0-023d-41ab-af71-6365ed86fb34?width=1491&height=527) _Опция редактирования A-записи в личном кабинете [Руцентра](https://www.nic.ru/)_ 7. В поле «IP address» введите нужный IP-адрес и нажмите «Применить». ![Nic A 4](https://content.timeweb.com/assets/1ab6f81a-1021-469f-8e36-1d289e46cf6e?width=1483&height=540) _Изменение A-записи в личном кабинете [Руцентра](https://www.nic.ru/)_ 8. Нажмите кнопку «Выгрузить зону». ![Nic A 5](https://content.timeweb.com/assets/26e322ab-b181-4e65-8051-a8874507f3a6?width=1470&height=662) _Опция «Выгрузить зону» в личном кабинете [Руцентра](https://www.nic.ru/)_ Смена A-записи займет некоторое время: обычно до 3 часов, в редких случаях до 24 часов. ## Смена A-записи в панели Reg.Ru 1. Авторизуйтесь на [сайте регистратора](https://www.reg.ru/) и перейдите в раздел «Мои домены». 2. Кликните по строке с нужным доменом. 3. Кликните на блок «DNS-серверы и управление зоной». ![Ccd10f85 5e12 451d 881c 74a1e411b5e9](https://content.timeweb.com/assets/8a5a763f-b8ef-4e0b-9576-db7c3a24ad53?width=1600&height=772) _Страница домена в личном кабинете [Рег.ру](https://www.reg.ru/)_ 4. Найдите строку с A-записью для основного домена (отмечается как `@`) и кликните на нее: ![Ae55a7ef 223c 48a5 B8ad 925510a2e199](https://content.timeweb.com/assets/effee7f5-06d5-4d24-837b-3e3852c1882d?width=1625&height=934) _Раздел «DNS-серверы и управление зоной» в личном кабинете [Рег.ру](https://www.reg.ru/)_ 5. В открывшемся окне заполните поля: - - Поле «Subdomain» оставьте без изменений. - В поле «IP Address» укажите нужный IP-адрес. ![Без Названия (1)](https://content.timeweb.com/assets/3eb15825-dd90-4709-8552-a144785b0493?width=1920&height=869) _Указание новой A-записи в личном кабинете [Рег.ру](https://www.reg.ru/)_ 6. Нажмите «Готово». Если также создана A-запись для поддомена `www`, как на нашем скриншоте выше, выполните ту же самую настройку для нее: оставьте Subdomain без изменений и укажите нужный IP. Смена A-записи займет некоторое время: обычно до 3 часов, в редких случаях до 24 часов. ## Смена A-записи в панели Beget 1. Авторизуйтесь в [панели регистратора](https://cp.beget.com/login) и перейдите в раздел «DNS». 2. Выберите из выпадающего списка нужный домен и кликните на значок карандаша: ![Beget A 1](https://content.timeweb.com/assets/2f1ed0a5-1921-496b-84e8-13502a1ffe97?width=1021&height=635) _Опция редактирования домена в личном кабинете [Beget](https://beget.com/ru)_ 3. В строке с A-записью укажите нужный IP-адрес: ![Beget A 2](https://content.timeweb.com/assets/4f3af184-3408-414a-ac51-f7f497bfc2ab?width=1034&height=405) _Указание новой A-записи в личном кабинете [Beget](https://beget.com/ru)_ 4. Нажмите «Сохранить». Смена A-записи займет некоторое время: обычно до 3 часов, в редких случаях до 24 часов. # Технический перенос домена Source: https://timeweb.cloud/docs/domains/domain-technical-transfer Если вы планируете перенести сайты на наш хостинг или сервер от другого провайдера, также нужно выполнить технический перенос домена, который привязан к этим сайтам. Технический перенос подразумевает, что домен начнет работать с нашим хостингом, но при этом административное управление доменом (оплата продления, смена администратора, изменение контактных данных и пр.) по-прежнему будет выполняться через текущего регистратора или хостинг-провайдера. Если же вы хотите продлевать домен через Timeweb Cloud, вы также можете выполнить смену регистратора. Перенести домен можно по инструкции ниже. ## Способ 1: A-запись 1. Добавьте домен в панель управления в разделе «Домены и SSL», выбрав пункт «Добавить домен». 2. Привяжите домен к нужному серверу. 3. На стороне держателя NS-серверов, указанных для домена, внесите в качестве А-записи IP-адрес вашего сервера. Применение изменений займет некоторое время, **от 15 минут до 3 часов**. > [!NOTE] > При добавлении домена в панель, в настройках домена будут автоматически указаны ресурсные записи Timeweb Cloud (MX, А, TXT), однако они не имеют силы, пока домен ссылается на сторонние NS-серверы. Управлять ресурсными записями домена вам по-прежнему нужно на стороне держателя NS-серверов. ## Способ 2: NS-серверы > [!NOTE] > Для безопасности вашего домена и его защиты от действий третьих лиц меняйте NS-серверы **после** добавления домена в панель Timeweb Cloud. 1. Добавьте домен в панель управления аккаунтом в разделе «Домены и SSL», выбрав пункт «Добавить домен». 2. Привяжите домен к нужному серверу или сервису. 3. Укажите для домена все необходимые DNS-записи, которые он использует сейчас. Это можно сделать в разделе «Домены и SSL» → кликнуть на домен → «DNS». Найти актуальные записи и их значения можно в панели текущего регистратора или хостинг-провайдера. 4. На стороне текущего регистратора или хостинг-провайдера укажите для доменного имени NS-серверы Timeweb Cloud (если регистратором домена является Таймвэб.Домены, [сменить NS-записи](https://timeweb.cloud/docs/domains/dns-records-management) можно в разделе «Домены и SSL» вашей панели управления): ```shell ns1.timeweb.ru ns2.timeweb.ru ns3.timeweb.org ns4.timeweb.org ``` Для применения изменений потребуется **от 3 до 24 часов**, и в течение этого времени домен будет недоступен. # Перенос домена между аккаунтами Source: https://timeweb.cloud/docs/domains/domain-transfer-between-accounts Вы можете самостоятельно переносить домены между аккаунтами Timeweb / Timeweb Cloud по инструкции ниже. 1. Перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains). 2. Кликните на три точки у нужного домена и выберите пункт «Передать домен». ![9fef6129 1752 4450 Ba3a 0a52b07ab041](https://content.timeweb.com/assets/f0029aa5-ed13-4809-8d8b-b7bc9b6315bc.png?width=1377&height=867) 3. Введите логин аккаунта, на который нужно перенести домен, и нажмите «Передать». Если домен зарегистрирован через другого провайдера, он будет передан сразу. Если домен зарегистрирован через нас, на контактный ящик администратора поступит письмо с кодом для подтверждения операции. [Идентификация через ЕСИА](https://timeweb.cloud/docs/domains/esia-identification) при этом не требуется. **При переносе домена:** - Поддомены, почтовые ящики и SSL-сертификаты также будут перенесены. - Сайты, привязанные к этому домену и поддоменам и размещенные на серверах текущего аккаунта, перенесены не будут. Для переноса сайтов воспользуйтесь инструкцией «[Перенос сайта на сервер](https://timeweb.cloud/docs/cloud-servers/site-transfer)». # Технический домен Source: https://timeweb.cloud/docs/domains/technical-domain Технический домен — это бесплатный тестовый домен, который позволит вам работать с сервером без регистрации нового домена или технического переноса уже существующего. С помощью технического домена вы сможете: - протестировать наши сервисы, если вы только что создали аккаунт; - проверить работу перенесенного на наш сервер сайта, не перенаправляя свой домен; - разместить какой-либо внутренний проект, для которого не требуется персональное доменное имя в сети Интернет. Вы можете самостоятельно добавлять технические домены в своей панели управления. Для этого: 1. Перейдите в раздел «Домены и SSL». 2. Кликните «Добавить домен». ![Bddc6963 3350 4d16 8838 94ebf44d819d](https://content.timeweb.com/assets/41b4d407-8bfc-4724-a8b6-2d9c0f8a0efc.png?width=1569&height=822) 3. Укажите домен в одной из бесплатных технических зон: - `.tw1.su` - `.tw1.ru` - `.webtm.ru` - `.twc1.net` 4. Выберите сервис, к которому нужно привязать домен. 5. При необходимости выберите проект, к которому относится домен. 6. Нажмите «Добавить». ![7c2ff1ed 2401 4b90 974e 0b6cc0395472](https://content.timeweb.com/assets/2334ab25-21e5-4909-9c85-6f23d6e82104.png?width=1525&height=869) > [!NOTE] > Для технического домена невозможно: > > - Изменить настройки DNS, в том числе указать стороннюю A-запись и перенаправить его на другой хостинг. > - Создать почтовый ящик. > - Заказать SSL-сертификат. # Доступ в панель управления регистратора Source: https://timeweb.cloud/docs/domains/dostup-v-panel-upravleniya-registratora При работе с доменами вам может потребоваться выполнить те или иные действия напрямую в панели управления регистратора. Ниже рассмотрим, как вы можете получить доступ в панели управления наших партнеров. ## Регистратор R01 1. Перейдите по адресу: [https://partner.r01.ru/forgot.khtml](https://partner.r01.ru/forgot.khtml). 2. Введите в форму ваш домен или ник-хэндл и нажмите «Сделать запрос». Пароль придет на контактный ящик администратора домена. > [!NOTE] > См. также: [Как поменять NS-серверы или A-запись в панели R01](https://timeweb.cloud/docs/domains/dns-records-management-other-registrars#r01). ## Ru-Center 1. Перейдите по адресу: [https://www.nic.ru/auth/recovery/](https://www.nic.ru/auth/recovery/). 2. Введите в форму ваш домен или номер анкеты (договора). Пароль придет на контактный ящик администратора домена > [!NOTE] > См. также: [Как поменять NS-серверы или A-запись в панели Ru-Center](https://timeweb.cloud/docs/domains/dns-records-management-other-registrars#ru-center). ## PDR 1. Перейдите по адресу: [https://timeweb.myorderbox.com/](https://timeweb.myorderbox.com/). 2. Нажмите на ссылку «Forgot password». 3. Убедитесь, что выбран тип пользователя «Customer». 4. Введите email, который был указан при регистрации домена. После на контактный ящик администратора придет инструкция по восстановлению доступа. > [!NOTE] > См. также: [Как поменять NS-серверы или A-запись в панели PDR](https://timeweb.cloud/docs/domains/dns-records-management-other-registrars#pdr). ## Webnames Получить доступ в панель регистратора Webnames невозможно. Если вам нужно выполнить какие-либо действия с доменом, свяжитесь с нашей поддержкой: [info@timeweb.cloud](mailto:info@timeweb.cloud). # Документы для подтверждения прав на домен Source: https://timeweb.cloud/docs/domains/dokumenty-dlya-podtverzhdeniya-prav-na-domen В зависимости от того, кто является регистратором вашего домена, мы можем предоставить разные виды документов, подтверждающих права на домен: свидетельство о владении доменом, выписку из реестра администраторов доменов или сертификат. ## Свидетельство о владении доменов Для доменов .RU и .РФ, зарегистрированных через [ТаймВэб.Домены](https://timeweb.name/), вы можете заказать Свидетельство о владении доменом ([скачать образец](https://content.timeweb.com/assets/1aa4361b-f7cd-4921-bceb-d0dbacaf2579?download)). Свидетельство является **официальным документом**, удостоверяющим ваше право владения доменным именем. Оно может быть предоставлено для подтверждения этого права, в том числе, в государственные органы. Свидетельство содержит дату регистрации домена, срок ее окончания и полные сведения об администраторе. Документ заверяется подписью руководителя и печатью регистратора ТаймВэб.Домены. ## Выписки и сертификаты Если домен зарегистрирован через Timeweb Cloud, но регистратор — не Таймвэб.Домены, мы можем предоставить выписку из реестра администраторов доменов или сертификат. Тип предоставляемого документа зависит от доменной зоны. ## Как получить документ Вы можете скачать документ о владении доменом в своей панели управления. Предварительно проверьте, что все контактные данные администратора верны. 1. Перейдите в раздел «[Домены и SSL](https://timeweb.cloud/my/domains)» и кликните на нужный домен. 2. Кликните «Редактировать» рядом с именем администратора домена, чтобы проверить контактные данные и обновить их при необходимости. ![04c94f10 4cb3 4645 B025 C0c767a47a4d](https://content.timeweb.com/assets/6defe854-698d-4290-932a-a9fab98cd84e.png?width=1562&height=1468) 3. Нажмите «Скачать» в блоке «Документ о принадлежности домена». ![15ec639f 37ec 420b 9fda Ff9c79ad134a](https://content.timeweb.com/assets/94c988a6-6b3e-4e5c-bbb4-a7f80818bf9b.png?width=1562&height=1468) Документ в формате .PDF будет загружен на ваше устройство. # Создание администратора домена Source: https://timeweb.cloud/docs/domains/create-admin При [регистрации](https://timeweb.cloud/docs/domains/registration-and-renewal) домена, смене [администратора](https://timeweb.cloud/docs/domains/changing-domain-owner) или [регистратора](https://timeweb.cloud/docs/domains/changing-domain-registrar) вам потребуется создать персону администратора в панели управления. ## Через Госуслуги Создание администратора через Госуслуги **обязательно**, если вы планируете регистрировать домены .RU и .РФ — так вы сможете пройти [идентификацию через ЕСИА](https://timeweb.cloud/docs/domains/esia-identification). Однако вы также можете использовать этого администратора для доменов в любых других зонах. > [!NOTE] > Для администраторов-юрлиц и ИП интеграция с Госуслугами станет доступна в ближайшее время. Сейчас вы можете создать этих администраторов [вручную](https://timeweb.cloud/docs/domains/create-admin#vruchnuu). Чтобы создать администратора через Госуслуги: 1. Перейдите в раздел «Домены и SSL» → [«Администраторы»](https://timeweb.cloud/my/domains/persons). 2. Кликните «Добавить». 3. Выберите вариант «Для доменов в зоне .ru и .рф». 4. Выберите «Добавить через Госуслуги». 5. **Если администратор — вы**: - Отметьте чекбокс согласия на обработку персональных данных и кликните на блок «Я — администратор». - Авторизуйтесь в Госуслугах. - Нажмите «Выдать разрешение». Администратор с вашими данными из Госуслуг будет создан автоматически. 6. **Если администратор — другое лицо**: - В блоке «Другой человек» скопируйте ссылку — она ведет на личный кабинет «Таймвэб.Домены». - Отправьте ссылку лицу, на чьи данные создается администратор. - Далее администратору нужно: - Перейти по ссылке. - Авторизоваться в Госуслугах и нажать «Выдать разрешение». - Нажать «Сгенерировать код» в личном кабинете. - Скопировать код и прислать его вам. Код действует 30 минут. - Введите полученный код в панели Timeweb Cloud и нажмите «Продолжить». Администратор с данными из профиля Госуслуг будет создан автоматически. ## Вручную Администраторы, созданные вручную, могут регистрировать домены в любых доменных зонах, кроме .RU и .РФ. Исключение составляют юрлица и ИП — пока интеграция с Госуслугами для них не реализована, такие администраторы могут работать в том числе с доменами .RU и .РФ. Чтобы создать администратора вручную: 1. Перейдите в раздел «Домены и SSL» → [«Администраторы»](https://hosting.timeweb.ru/persons). 2. Кликните «Добавить». 3. Выберите «Для других доменных зон». 4. Выберите тип администратора: физлицо, юрлицо или ИП. 5. Заполните открывшуюся форму. 6. Нажмите «Добавить». # Изменение данных администратора домена Source: https://timeweb.cloud/docs/domains/change-admin-data Если у администратора домена изменились какие-либо данные, их необходимо актуализировать на стороне регистратора. Процедура зависит от того, кто является регистратором домена и какие данные меняются — контактные или идентификационные. ## Контактные данные К контактным данным относятся: - емейл, - номер телефона, - номер факса, - почтовый адрес. ### Регистратор Таймвэб.Домены Для доменов .RU и .РФ, зарегистрированных через ТаймВэб.Домены, изменения можно внести в вашей панели управления Timeweb Cloud. 1. Перейдите в раздел «Домены и SSL» → [«Администраторы»](https://timeweb.cloud/my/domains/persons). 2. Кликните на нужного администратора и внесите изменения. 3. Нажмите «Сохранить». Изменения будут применены для всех доменов, зарегистрированных на этого администратора через ТаймВэб.Домены. ### Регистратор PDR Чтобы изменить контактные данные администратора: 1. Отправьте запрос с административного емейла домена на [info@timeweb.cloud](mailto:info@timeweb.cloud). 2. Укажите, какие данные нужно изменить. Если у вас нет доступа к административному емейлу, вы можете написать из панели управления или любой другой почты, приложив к обращению документ администратора домена: - для физического лица — скан-копию паспорта (главный разворот и страница регистрации); - для юридического лица — скан-копию свидетельства ИНН. ### Другие регистраторы Если домен зарегистрирован через любого другого регистратора, изменить данные можно по запросу в нашу поддержку. 1. Отправьте запрос [из панели управления](https://timeweb.cloud/my/support/help-question) или напишите на емейл [info@timeweb.cloud](mailto:info@timeweb.cloud) с административного ящика домена или аккаунта. 2. Укажите домен или администратора, о котором идет речь, и сообщите новые данные. 3. Приложите к обращению документ администратора домена: - - для физического лица — скан-копию паспорта (главный разворот и страница регистрации); - для юридического лица — скан-копию свидетельства ИНН. Как только данные будут обновлены, регистратор отправит уведомление на контактный ящик администратора домена. ## Идентификационные данные К идентификационным данным относятся: - **Для физических лиц**: ФИО, дата рождения, паспортные данные. - **Для юридических лиц**: полное и краткое наименование, ИНН, КПП, ОГРН, ОГРНИП, юридический адрес. Для смены идентификационных данных потребуется обратиться к регистратору домена. Если вы не уверены, кто ваш регистратор, — [напишите в поддержку](https://timeweb.cloud/my/support/help-question), мы поможем. ### Таймвэб.Домены Для доменов .RU и .РФ, зарегистрированных через ТаймВэб.Домены, изменить идентификационные данные можно по запросу в поддержку, приложив к нему заявление и подтверждающие документы. Набор документов будет отличаться в зависимости от того, кто является администратором: физическое или юридическое лицо. Физлицо или ИП 1. Отправьте запрос [из панели управления](https://timeweb.cloud/my/support/help-question) или напишите на емейл [info@timeweb.cloud](mailto:info@timeweb.cloud) с административного ящика домена или аккаунта. 2. Укажите домен или администратора, о котором идет речь, и сообщите, какие данные нужно изменить. 3. Приложите к обращению файлы: - [Заявление](https://content.timeweb.com/assets/d234c8aa-dcb1-417c-b6b1-cc830f3bf0ef?download). - Скан-копию документа, на основании которого вносятся изменения. Например: - Если вы поменяли паспорт, приложите скан-копию паспорта: разворот с ФИО, страницу с регистрацией и страницу с данными о ранее выданных документах. - Если у вас изменилось ФИО, приложите скан-копию свидетельства о перемене имени или решения из ЗАГС. - Если нужно исправить ошибку в данных администратора, приложите скан-копию паспорта: разворот с ФИО, страницу с регистрацией и страницу с данными о ранее выданных документах. - Если у ИП поменялся ИНН, приложите скан-копии старого и нового свидетельства ИНН. Юрлицо 1. Отправьте запрос [из панели управления](https://timeweb.cloud/my/support/help-question) или на емейл [info@timeweb.cloud](mailto:info@timeweb.cloud) с административного ящика домена или аккаунта. 2. Укажите домен или администратора, о котором идет речь, и сообщите, какие данные нужно изменить. 3. Приложите к обращению файлы: - [Заявление](https://content.timeweb.com/assets/b6ff24c2-4c55-4ce6-81a1-92a38985ab2f?download) на бланке организации, заверенное печатью и подписью уполномоченного лица. - Скан-копию документа, на основании которого вносятся изменения. В зависимости от того, какие данные меняются, подтверждающими документами могут быть, например, скан-копии ИНН и ОГРН, Приказ, Устав, Лист записей, выписка ЕГРЮЛ и других документы. Копия документа должна быть заверена печатью организации и подписью руководителя или уполномоченного лица Если изменилось название организации, необходимо предоставить официальное письмо, заверенное печатью и подписью уполномоченного лица. Заявка будет обработана в течение 1-2 рабочих дней, и вы получите уведомление на административный e-mail домена. ### PDR Чтобы изменить идентификационные данные администратора: 1. Отправьте запрос с административного емейла домена на [info@timeweb.cloud](mailto:info@timeweb.cloud). 2. Укажите, какие данные нужно изменить. Если у вас нет доступа к административному емейлу, вы можете написать нам из панели управления или с любой другой почты, приложив к обращению документ администратора домена: - для физического лица — скан-копию паспорта (главный разворот и страница регистрации); - для юридического лица — скан-копию свидетельства ИНН. ### R01 Чтобы изменить идентификационные данные администратора: 1. Отправьте обращение с административного ящика домена на почту [info@r01.ru](mailto:info@r01.ru). 2. Укажите в нем название домена и какие данные нужно изменить. 3. К письму приложите скан-копии заявления и документов, на основании которых вносятся изменения. Подробную инструкцию, шаблоны заявлений и список документов можно найти [в документации R01](https://help.r01.ru/documents/change_adm_data.html) (раздел «Изменение идентификационных данных»). > [!NOTE] > После уведомления от регистратора, что изменения внесены, сообщите об этом нам. Мы актуализируем данные администратора в панели управления Timeweb Cloud. ### Ru-Center Чтобы изменить идентификационные данные администратора: 1. Отправьте обращение с административного ящика домена на почту [ru-ncc@nic.ru](mailto:ru-ncc@nic.ru). 2. Укажите в нем название домена и какие данные нужно изменить. 3. К письму приложите скан-копии заявления и документов, на основании которых вносятся изменения. Подробную инструкцию, шаблоны заявлений и список документов можно найти в документации Ru-Center: - [Для физических лиц и ИП](https://www.nic.ru/help/izmenenie-dannyh-v-dogovore-fizicheskogo-lica-ili-ip_8215.html) - [Для юридических лиц](https://www.nic.ru/help/izmenenie-dannyh-v-dogovore-yuridicheskogo-lica_8214.html) > [!NOTE] > После уведомления от регистратора, что изменения внесены, сообщите об этом нам. Мы актуализируем данные администратора в панели управления Timeweb Cloud. ### Webnames Чтобы изменить идентификационные данные администратора: 1. Отправьте обращение с административного ящика домена на почту [support@webnames.ru](mailto:support@webnames.ru). 2. Укажите в нем название домена и какие данные нужно изменить. 3. К письму приложите скан-копии документов, на основании которых вносятся изменения. Подробную инструкцию и список документов можно найти [в документации Webnames](https://www.webnames.ru/faq/izmenenie_anketnyh_dannyh). > [!NOTE] > После уведомления от регистратора, что изменения внесены, сообщите об этом нам. Мы актуализируем данные администратора в панели управления Timeweb Cloud. # Идентификация через ЕСИА Source: https://timeweb.cloud/docs/domains/esia-identification С 1 сентября 2026 года для управления доменами .RU, .РФ и .SU потребуется пройти идентификацию через Единую Систему Идентификации и Аутентификации (ЕСИА). Для этого необходим подтвержденный аккаунт Госуслуг. Эта норма закреплена в [Федеральном законе от 29.12.2025 № 569-ФЗ](http://publication.pravo.gov.ru/Document/View/0001202512290057). ## Особенности - Через нашу панель вы сможете пройти идентификацию для доменов .RU и .РФ, зарегистрированных через «Таймвэб.Домены». Для доменов .SU и доменов .RU и .РФ, зарегистрированных через R01 или Руцентр, идентификацию нужно проходить через Руцентр. Когда идентификация потребуется, регистратор пришлет ссылку для ее прохождения на контактный ящик домена. - Сейчас идентификация доступна только для администраторов — физических лиц. Для администраторов-юрлиц и ИП идентификация появится в ближайшее время. Пока этого не произойдет, вы можете управлять доменами, как раньше. - **Для юрлиц и ИП**: Проверьте заранее, на кого оформлен домен и актуальны ли [данные администратора](https://timeweb.cloud/my/domains/persons). Если контактные данные устарели или домен зарегистрирован на бывшего сотрудника, обновите информацию или поменяйте владельца домена: - [Изменение данных администратора домена](https://timeweb.cloud/docs/domains/change-admin-data) - [Смена администратора домена (Таймвэб.Домены)](https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-ru-rf) - [Смена администратора домена (R01)](https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-ru-rf-su-kz) Как только идентификация через ЕСИА станет доступна, вы не сможете выполнить эти действия без подтверждения через Госуслуги. ## Как пройти идентификацию Сейчас идентификацию могут пройти администраторы — физические лица. ### Если домен принадлежит вам 1. Перейдите в раздел «Домены и SSL» → [«Администраторы»](https://timeweb.cloud/my/domains/persons). 2. Кликните «Подтвердить данные» у нужного администратора. 3. В открывшемся окне нажмите «Я — администратор». 4. Авторизуйтесь в Госуслугах. Дальнейшая проверка пройдет автоматически. Если данные на Госуслугах совпадают с данными в анкете администратора, вы увидите отметку «Данные подтверждены». Если проверку пройти не удалось, появится отметка «Ошибка». Мы свяжемся с вами, если будет нужно уточнить или изменить какие-либо данные в анкете. ### Если домен принадлежит другому лицу 1. Перейдите в раздел «Домены и SSL» → [«Администраторы»](https://timeweb.cloud/my/domains/persons). 2. Кликните «Подтвердить данные» у нужного администратора. 3. В открывшемся окне скопируйте ссылку в блоке «Другой человек» — она ведет на личный кабинет «Таймвэб.Домены». 4. Отправьте ссылку владельцу домена удобным способом. 5. Далее владельцу нужно: - Перейти по ссылке. - Авторизоваться в Госуслугах. - Нажать «Сгенерировать код» в личном кабинете. - Скопировать код и прислать его вам. Код действителен 30 минут. 6. Введите полученный код в панели Timeweb Cloud и нажмите «Продолжить». Дальнейшая проверка пройдет автоматически. Если данные на Госуслугах совпадают с данными в анкете администратора, вы увидите отметку «Данные подтверждены». Если проверку пройти не удалось, появится отметка «Ошибка». Мы свяжемся с вами, если будет нужно уточнить или изменить какие-либо данные в анкете. ## Когда потребуется идентификация Начиная с 1 сентября 2026 года проходить идентификацию будет нужно при совершении любых действий с доменами .RU, .РФ и .SU: - Регистрация и продление - Смена регистратора (трансфер домена) - Смена администратора - Смена контактных данных администратора - Делегирование домена (смена NS-серверов) ## Что нужно для идентификации **Физическим лицам и ИП** Вам потребуется подтвержденная учетная запись на Госуслугах. Убедитесь, что у вас есть доступ к [личному кабинету Госуслуг](https://esia.gosuslugi.ru/) и что ваша учетная запись на Госуслугах подтверждена. Подтвердить ее можно [через банк](https://www.gosuslugi.ru/help/faq/login/2), [МФЦ](https://www.gosuslugi.ru/help/faq/login/70000002) или [Почту России](https://www.gosuslugi.ru/help/faq/login/2752). **Юридическим лицам** Вам необходимо [зарегистрировать организацию в ЕСИА](https://info.gosuslugi.ru/articles/%D0%9A%D0%B0%D0%BA_%D0%B7%D0%B0%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8E_%D0%B2_%D0%95%D0%A1%D0%98%D0%90%3F/) и выполнить вход через учетную запись компании. Убедитесь, что к организации [привязана](https://www.gosuslugi.ru/help/faq/company_profile/sotrudnik_k_uz) учетная запись сотрудника, ответственного за домены. **Нерезидентам** Физическим лицам — нерезидентам РФ нужно [зарегистрироваться на Госуслугах](https://www.gosuslugi.ru/help/faq/login/0006). Для нерезидентов-юрлиц процедура идентификации еще не утверждена. Со своей стороны мы также прорабатываем возможные альтернативные решения для пользователей-нерезидентов. # Смена регистратора домена Source: https://timeweb.cloud/docs/domains/changing-domain-registrar Инструкции по административному переносу доменов в / из Timeweb Cloud. - [Перенос доменов .RU и .РФ в Timeweb Cloud](https://timeweb.cloud/docs/domains/changing-domain-registrar/ru-rf-inbound) - [Перенос доменов .RU и .РФ из Timeweb Cloud к другому регистратору](https://timeweb.cloud/docs/domains/changing-domain-registrar/ru-rf-outbound) - [Смена регистратора доменов .SU](https://timeweb.cloud/docs/domains/changing-domain-registrar/transfering-su-domains) - [Смена регистратора доменов .COM, .ORG, .NET и др.](https://timeweb.cloud/docs/domains/changing-domain-registrar/transfering-com-org-net) - [Смена регистратора доменов SPB.RU, MSK.RU, .TEL, .PRO, .TRAVEL, .AERO и др.](https://timeweb.cloud/docs/domains/changing-domain-registrar/transfering-spbru-mskru) - [Смена регистратора доменов .PP.RU, .ORG.RU, .NET.RU](https://timeweb.cloud/docs/domains/changing-domain-registrar/transfering-ppru-netru-orgru) - [Смена регистратора доменов .KZ](https://timeweb.cloud/docs/domains/changing-domain-registrar/transfering-kz) # Перенос доменов .RU и .РФ в Timeweb Cloud Source: https://timeweb.cloud/docs/domains/changing-domain-registrar/ru-rf-inbound Перенос полностью бесплатный. Во время переноса сайт будет работать как обычно, приостановка его работы не требуется. Никакие ресурсные записи домена не изменятся. ## Перенос домена самостоятельно Чтобы перенести домен в Timeweb Cloud (к регистратору ТаймВэб.Домены) выполните описанные ниже шаги. ### Шаг 1. Проверка отсутствия ограничений Перед переносом убедитесь, что домен можно перенести. Он должен соответствовать следующим требованиям: - У домена нет статусов `serverTransferProhibited`, `clientTransferProhibited` или `changeProhibited` — они запрещают перенос. Проверить можно через whois-сервис. - Домен истекает не ранее, чем через 7 дней. Если до конца срока действия домена осталось меньше недели, трансфер невозможен. - С момента последней смены администратора или регистратора прошло больше 30 дней. ### Шаг 2. Получение кода переноса Получите код AuthInfo (код переноса) у текущего регистратора домена. Код действителен 20 календарных дней. Рег.ру > [!NOTE] > **Важно!** Если домен делегирован на бесплатные серверы Reg.ru: > > ns1.reg.ru > ns2.reg.ru > > — то после завершения переноса домен будет снят с делегирования и перестанет работать. Чтобы этого избежать, рекомендуем сначала [делегировать домен на наши NS-серверы](https://timeweb.cloud/docs/domains/domain-technical-transfer#sposob-2--ns-servery), после чего менять регистратора. 1. Войдите в личный кабинет Reg.ru. 2. Перейдите на страницу [получения AuthInfo-кода](https://www.reg.ru/domain/service/get_secret_key/). Через пару секунд появится кнопка «Далее» — нажмите на нее. ![Image3](https://content.timeweb.com/assets/ed34dd5a-0412-4fba-b257-be8b13ec9484.png?width=1206&height=754) _Страница получения AuthInfo-кода в личном кабинете [Рег.ру](https://www.reg.ru/)_ 3. В окне заявки: - - **Введите домены**, которые хотите перенести. Обратите внимание, что можно передать только домены, которые были зарегистрированы на текущем аккаунте. - **Выберите способ получения кода**: e-mail или SMS. - **Укажите контактный e-mail или телефон**. Контакты должны совпадать с контактными данными, указанными для домена. - Отметьте чек-бокс «Я не робот» и нажмите «Продолжить». ![Regru](https://content.timeweb.com/assets/1d4f9efd-4d1a-472a-bb44-2bab17580f6a?width=951&height=712) _Форма заявки на получение AuthInfo-кода в личном кабинете [Рег.ру](https://www.reg.ru/)_ 4. Проверьте контактную почту. На нее придет письмо от Рег.ру с дальнейшими шагами для получения Authinfo-кода — проследуйте им. В течение 3 рабочих дней Reg.ru обработает вашу заявку и вышлет код переноса на указанный e-mail или телефон. Руцентр 1. Авторизуйтесь в [личном кабинете](https://www.nic.ru/auth/login/) на сайте регистратора. 2. Перейдите раздел «Операции» → «Перенос доменов» и выберите вкладку «К другому регистратору». 3. Проверьте, предлагается ли вам пройти [идентификацию договора](https://www.nic.ru/help/kakie-dokumenty-neobhodimo-predostavit6-dlya-identifikacii-i-kakim-sposobom_3750.html), как на скриншоте ниже. Если да — нажмите «Подробнее». Если нет — можно переходить к пункту 6. ![Image3](https://content.timeweb.com/assets/b52d3e3e-830e-4513-bd54-5eb092ec7521.png?width=553&height=197) _Раздел «Перенос доменов» в личном кабинете [«Руцентра»](https://www.nic.ru/)_ 4. Нажмите «Пройти идентификацию». ![Image6](https://content.timeweb.com/assets/df6d08b2-f7e5-4565-a776-85ca3eb2aae3.png?width=1215&height=715) _Раздел «Перенос доменов» в личном кабинете [«Руцентра»](https://www.nic.ru/)_ 5. Выберите способ прохождения идентификации — через Госуслуги или по документам. ![Image7](https://content.timeweb.com/assets/e0666134-ab28-451b-a191-4c75df8a8b89.png?width=1218&height=749) _Раздел «Идентификация» в личном кабинете [«Руцентра»](https://www.nic.ru/)_ - Если вы выбрали идентификацию через Госуслуги, войдите в свой аккаунт Госуслуг. - Если вы выбрали вариант «Идентификация по документам», загрузите запрашиваемый документ и нажмите «Отправить». ![Image5](https://content.timeweb.com/assets/b4d97694-e29b-4ab5-a5c9-c18d62268ec6.png?width=1216&height=749) _Раздел «Идентификация» в личном кабинете [«Руцентра»](https://www.nic.ru/)_ По результату идентификации вы получите уведомление на контактный email. Теперь можно выполнить перенос домена. 6. Заполните форму: - Выберите email и укажите номер телефона. - Введите домен или домены для переноса - Выберите способ получения кода. ![Image1](https://content.timeweb.com/assets/0d30bc87-fe16-4a28-916d-895ee19882f2.png?width=1214&height=951) _Форма переноса доменов в личном кабинете [«Руцентра»](https://www.nic.ru/)_ 7. Нажмите «Продолжить». На контактный email администратора домена поступит письмо с инструкцией и ссылкой для подтверждения. Проследуйте инструкции и перейдите по ссылке, чтобы получить Authinfo-код. R01 > [!NOTE] > Эта инструкция подойдет: > > - для доменов на прямом договоре с R01; > - для доменов на нашем партнерском договоре RDP/01/45. 1. Авторизуйтесь в панели регистратора. 2. Убедитесь, что у вас проверены данные администратора, — без этого не получить Authinfo-код. Это можно сделать по [инструкции R01](https://help.r01.ru/documents/vouch.html). 3. Перейдите в раздел «Домены» → кликнуть по нужному домену → «Код переноса». ![R01 1](https://content.timeweb.com/assets/d5f4a2e2-764f-48e0-9ba2-6b84f02454b7?width=986&height=571) _Раздел «Домены» в личном кабинете [R01](https://www.r01.ru/)_ 4. В форме заявки: - - Выберите способ получения ключа: e-mail или SMS. - Проверьте корректность адреса e-mail и вашего телефона или измените их при необходимости. 5. На почту или указанный номер телефона придет сообщение с **ключом подтверждения заявки**. 6. В течение **3 рабочих дней** после получения ключа перейдите в раздел «Домены» → «Заявки на выдачу кода переноса для .RU, .РФ доменов» → найдите нужную заявку и введите полученный ключ. 7. После подтверждения заявки будет автоматически сгенерирован код переноса. Найти его будет можно в разделе «Домены» → кликнуть по нужному домену → «Код переноса». Beget 1. Войдите в личный кабинет Beget и перейдите на [страницу получения AuthInfo-кода](https://beget.com/ru/authcode). 2. Укажите домен и выберите способ получения кода: по email или смс (будет использоваться e-mail или телефон администратора домена). Нажмите «Получить код». ![Image2](https://content.timeweb.com/assets/e2b7964d-f5c7-400a-8b63-e9bdefd8f461.png?width=1315&height=590) _Форма получения AuthInfo-кода в интерфейсе [Beget](https://beget.com/ru)_ 3. На email или телефон будет отправлен проверочный код; его необходимо ввести в форме на странице запроса AuthInfo-кода. Если код указан верно, то в течение нескольких минут на тот же email или телефон придет AuthInfo-код для переноса домена. ![Image1](https://content.timeweb.com/assets/9ca7ce99-e1af-4b0d-a4a9-34377a82c0c6.png?width=1337&height=538) _Форма получения AuthInfo-кода в интерфейсе [Beget](https://beget.com/ru)_ В случае подозрения со стороны Beget, что заявка была отправлена не администратором домена, в течение трех рабочих дней регистратор отправит вам запрос на предоставление сведений об администраторе доменного имени. Webnames 1. Войдите в [личный кабинет](https://www.webnames.ru/scripts/auth.pl?auth=1) Webnames. 2. Откройте [форму обратной связи](https://www.webnames.ru/help/feedback) и оставьте заявку на получение Authinfo-кода, указав домен или домены для переноса. Нажмите «Отправить». ![Image2](https://content.timeweb.com/assets/2294753e-e157-48df-b678-099dc518ba53.png?width=999&height=894) _Форма обратной связи в интерфейсе [Webnames](https://www.webnames.ru/)_ 3. Дождитесь ответа Webnames, который поступит вам на контактный email, и проследуйте их инструкциям для получения Authinfo-кода. Nethouse > [!NOTE] > Первый шаг можно пропустить, если ранее вы уже подтверждали email или номер телефона для получения Authinfo-кода. 1. Сообщите регистратору email или телефон для получения Authinfo-кода. Для этого необходимо предоставить регистратору заявление от администратора домена: - - [для физических лиц](https://domains.nethouse.ru/bundles/app/doc/letter_registrar_individuals.doc); - [для юридических лиц](https://domains.nethouse.ru/bundles/app/doc/letter_registrar_companies.doc). Физическим лицам и ИП необходимо предоставить заявление в офис регистратора лично, с предъявлением паспорта. Также заявление можно отправить почтой или курьерской службой; в этом случае подпись администратора на заявлении должна быть заверена нотариально. Юридическим лицам необходимо предоставить письмо, подписанное уполномоченным лицом, с печатью организации. К письму необходимо приложить копию документа, подтверждающего полномочия. После получения документов регистратор внесет указанные контактные данные в Реестр в течение 3 рабочих дней и сообщит вам. 2. Получите подтверждение от регистратора, что контактные данные внесены в Реестр. 3. В своем [личном кабинете](https://domains.nethouse.ru/login) на сайте Nethouse перейдите в раздел «Домены» → «Управление» и кликните на нужный домен. 4. Нажмите кнопку «Получить» в строке «AuthInfo». ![Nethouse3](https://content.timeweb.com/assets/3fb333a9-d3ad-4fd2-ba72-87ec49ae1bab?width=909&height=327) _Настройки домена в личном кабинете [Nethouse](https://nethouse.ru/)_ 5. Во всплывающем окне нажмите «Получить». ![Nethouse2](https://content.timeweb.com/assets/86b7519d-d3ed-4e34-90c7-f3a5160d865a?width=773&height=207) _Подтверждение получение кода в личном кабинете [Nethouse](https://nethouse.ru/)_ 6. Выберите способ получения кода: по email или SMS (5 руб/sms). Код будет отправлен на указанный email / телефон. Также доступна возможность получения кода в письменном виде в офисе регистратора, подробнее можно уточнить у [регистратора](https://domains.nethouse.ru/contact). ### Шаг 3. Запуск переноса Запустите перенос в панели Timeweb Cloud. Для этого перейдите в раздел «Домены и SSL» и кликните «Перенести домен». ![4e8032da E9ba 42d7 A514 2cc859eefb76](https://content.timeweb.com/assets/bcd37b98-64f1-4ede-b022-3b477432fef6?width=1085&height=405) В открывшейся форме: 1. Введите домен, который нужно перенести; 2. Введите код трансфера, который вы получили от регистратора домена; 3. (Опционально) Выберите проект, в который нужно добавить домен; 4. Нажмите «Перенести». ![78963573 A176 4ea1 Adb4 B39ee977fc24](https://content.timeweb.com/assets/5823ca39-2f44-48ad-af19-9a9f8a5c21da.png?width=611&height=767) Трансфер занимает 5-7 дней. Как только он будет завершен, на email администратора домена придет уведомление. ## Перенос через поддержку Вы можете доверить весь процесс переноса нашим специалистам. Мы возьмем на себя все необходимые процедуры. Услуга бесплатна. Чтобы выполнить перенос через поддержку, в разделе «Домены и SSL» кликните «Перенести домен» и выберите вкладку «Через поддержку». ![7c52cd38 5ea6 49f9 92a3 752e3682b893](https://content.timeweb.com/assets/2bdb11b4-e201-4d71-afa5-9bd66a8039ab?width=609&height=692) В форме укажите: - домены, которые нужно перенести; - логин и пароль от панели текущего регистратора. Мы получим необходимые коды переноса и запустим трансферы для указанных доменов. > [!NOTE] > Доступ в панель регистратора необходим для запуска переноса. Мы гарантируем полную сохранность предоставленных вами данных. # Перенос доменов .RU и .РФ из Timeweb Cloud Source: https://timeweb.cloud/docs/domains/changing-domain-registrar/ru-rf-outbound Пошаговая инструкция по переносу доменов .RU и .РФ из Timeweb Cloud к другому регистратору. ## Перенос доменов, зарегистрированных в ТаймВэб.Домены 1. Убедитесь, что для домена указаны актуальные e-mail и номер телефона администратора. 2. Отправьте заявку на ящик domains@timeweb.name с ящика администратора домена, сообщив в ней в свободной форме о своем желании перенести домен. 3. Прикрепите к заявке копию паспорта (для физических лиц и ИП; нужна основная страница с фото и страница с регистрацией) или копию свидетельства ОГРН (для юр.лиц). 4. Передайте полученный код новому Регистратору. ## Перенос доменов, зарегистрированных в R01 ### **Перенос из R01 к другому регистратору** Для переноса домена необходимо выполнить следующие действия: 1. Зайдите в [панель управления](https://partner.r01.ru/forgot.khtml) регистратора. Для этого: - перейдите по ссылке [https://partner.r01.ru/forgot.khtml](https://partner.r01.ru/forgot.khtml); - введите домен или ник-хэндл. Пароль придет на ящик администратора домена. 2. Проверьте, что для администратора домена указаны актуальные e-mail и телефон. 3. В настройках домена в разделе «Код трансфера» выберите, как вы хотите получить код подтверждения заявки: - - «**В письменном виде**» — в этом случае потребуется приехать [в офис R01](https://r01.ru/about/contacts/) в течение 3 рабочих дней с момента оформления заявки и получить код. С собой нужно иметь паспорт, а для представителей юридического лица — паспорт и доверенность. - «**Подтверждение по e-mail или по sms**» — ключ придет на e-mail администратора или в sms на указанный контактный номер администратора. 4. Введите полученный ключ в панели управления регистратора в разделе «Заявки на выдачу кода». 5. После этого на email будет отправлена ссылка для подтверждения. Перейдите по ней в течение 3 дней. 6. В настройках домена в панели управления регистратора получите ключ переноса. 7. Сообщите ключ новому Регистратору для запуска трансфера. ### **Перенос с нашего договора на договор другого партнера внутри R01** В первую очередь уточните у принимающей стороны, возможна ли **прямая передача**. Если это возможно, провайдер сообщит вам свой мэйнтейнер (идентификатор договора). Отправьте мэйнтейнер нашей службе поддержки и приложите к обращению копию паспорта владельца домена (копию свидетельства ИНН — для юр.лиц). Если прямая передача невозможна, отправьте письмо с запросом регистратору R01. Инструкции и шаблоны можно найти на [сайте регистратора](https://help.r01.ru/domain/ru/trans_contract/to_partner.html). ### **Перенос с нашего договора на прямой договор с R01** Если у вас есть прямой [договор с R01](https://partner.r01.ru/OFFERTA/offerta_add_select_type.khtml), домен можно перенести на него. Для этого потребуется отправить письмо регистратору. Шаблоны и инструкции можно найти [здесь](https://help.r01.ru/domain/ru/trans_contract/to_registrar.html). # Смена регистратора доменов .SU Source: https://timeweb.cloud/docs/domains/changing-domain-registrar/transfering-su-domains Во время переноса сайт будет работать. Никакие ресурсные записи домена не изменятся. ## Перенос домена от другого регистратора на наш договор в R01 Сообщите текущему регистратору, что вы хотите перенести домен в R01 и сообщите его идентификатор: R01-SU. Регистратор сориентирует вас, какие действия от вас требуются. После отправьте письмо в R01, в котором сообщите о своем желании перенести домен к ним. Форму письма и инструкции можно найти на [сайте регистратора](https://help.r01.ru/domain/ru/transfer/inbound_su.html). В письме обязательно укажите номер договора ООО «ТаймВэб» RDP/01/45 от 20.07.2006. К письму приложите копию паспорта (основной разворот и страницу с регистрацией), а для юридических лиц — копию свидетельства ОГРН. Когда трансфер будет завершен, на контактный ящик администратора поступит уведомление. ## Перенос домена с нашего договора в R01 к другому регистратору 1. Уточните у нового регистратора, что требуется для переноса. 2. Сообщите R01 о своем желании перенести домен. Форму письма можно найти на [сайте регистратора](https://help.r01.ru/domain/ru/transfer/outbound_su.html). К письму приложите копию паспорта (основной разворот и страницу с регистрацией), а для юридических лиц — копию свидетельства ОГРН. Письмо от физического лица или ИП необходимо заверить нотариально (не требуется, если вы будете подписывать письмо лично в офисе регистратора). Оригиналы документов нужно отправить на почтовый адрес регистратора, их копии также можно выслать на e-mail [info@r01.ru](mailto:info@r01.ru). ## Перенос домена от другого партнера на наш договор внутри R01 Уточните у текущего провайдера, возможна ли прямая передача на мэйнтейнер: TIMEWEB-MNT-GPT. Если это невозможно, потребуется сообщить о трансфере домена регистратору R01, отправив письмо. Инструкции и форму письма можно найти на [сайте регистратора](https://help.r01.ru/domain/ru/trans_contract/to_partner.html). К письму приложите копию паспорта (основной разворот и страницу с регистрацией), а для юридических лиц — копию свидетельства ОГРН. В письме обязательно укажите номер договора ООО «ТаймВэб» RDP/01/45 от 20.07.2006, а также наш идентификатор договора (мэйнтейнер): TIMEWEB-MNT-GPT. ## Перенос домена с нашего договора к другому партнеру внутри R01 Уточните у принимающей стороны возможность прямой передачи домена. Если это возможно, провайдер сообщит вам свой мэйнтейнер. Отправьте его в обращении в нашу [службу поддержки](https://timeweb.cloud/my/support/help-question), к обращению прикрепите копии документов (паспорт — для физических лиц, свидетельство ИНН — для юридических). Если прямая передача невозможна, сообщите о своем желании перенести домен регистратора R01, отправив письмо по определенной [форме](https://help.r01.ru/domain/ru/trans_contract/to_partner.html). К письму приложите копию паспорта (основной разворот и страницу с регистрацией), а для юридических лиц — копию свидетельства ОГРН. В письме будет нужно указать идентификатор и номер договора партнера, к которому вы переносите домен. # Смена регистратора доменов .COM, .ORG, .NET и др. Source: https://timeweb.cloud/docs/domains/changing-domain-registrar/transfering-com-org-net > [!NOTE] > Эта инструкция подойдет для доменов в международных зонах: com, .org, .info, .net, .biz, .name, .us, .ws, .eu, .asia, .in, cc, .mobi, .tv, .bz, .me, .mn Во время переноса сайт будет работать. Никакие ресурсные записи домена не изменятся. ## Перенос домена от другого регистратора в Timeweb Сloud Домен будет перенесен на наш договор с регистратором PDR. 1. Обратитесь к текущему регистратору и запросите: - снятие статуса «clientTransferProhibited» у домена (этот статус запрещает трансфер); - код авторизации реестра (secret key) для переноса домена. 3. В своей панели управления Timeweb Cloud создайте администратора для этого домена. 4. При переносе домен будет продлен на 1 год, поэтому внесите на баланс аккаунта стоимость продление домена на 1 год. Уточнить стоимость при необходимости можно в службе поддержки. 5. Напишите в нашу службу поддержки на [info@timeweb.cloud](mailto:info@timeweb.cloud) и предоставьте secret key, полученный у текущего регистратора. Мы создадим анкету для созданного вами администратора в PDR и запустим трансфер. 6. Перейдите по ссылке, которая придет на email администратора домена, чтобы подтвердить перенос. Трансфер будет выполнен в течение 5-7 дней, после чего вы получите уведомление на email. ## Перенос домена с договора Timeweb в PDR к другому регистратору 1. Сообщите нам о своем желании перенести домен, отправив письмо с email администратора домена на ящик [info@timeweb.cloud](mailto:info@timeweb.cloud). Мы откроем домен для трансфера и предоставим вам код авторизации реестра (secret key). 2. Сообщите код новому регистратору, далее они запустят трансфер со своей стороны и сообщат, какие действия требуются от вас. ## Перенос домена с другого договора на договор Timeweb в PDR Чтобы перенести домены между договорами внутри PDR, выполните следующее. 1. В панели управления Timeweb Cloud создайте администратора для домена, который вы планируете перенести. 2. Напишите в нашу службу поддержки на [info@timeweb.cloud](mailto:info@timeweb.cloud) и сообщите, что для этого администратора нужно создать анкету на нашем договоре в PDR. Мы сделаем все необходимое и сообщим вам ID анкеты. 3. Авторизуйтесь [в панели управления PDR](https://timeweb.cloud/docs/domains/dostup-v-panel-upravleniya-registratora#pdr). 4. В блоке «Jump to Domain» введите нужный домен и нажмите на кнопку перехода. ![6023d53c 270f 4b3d A4d3 C33e25a197d1](https://content.timeweb.com/assets/dfff5424-aa9c-474f-aea9-175b49d4f381.png?width=1215&height=591) _Интерфейс личного кабинета [PDR](https://publicdomainregistry.com/)_ 5. Кликните на «Move services» и укажите: - в поле «Customer's ID» — ID анкеты, - в поле «Customer's username» — контактный e-mail администратора домена. ![0a438003 2f04 4a66 B529 C8696f855aaf](https://content.timeweb.com/assets/bf4791af-b1f1-4132-9bac-60acdccde9bc.png?width=1326&height=477) _Страница домена в личном кабинете [PDR](https://publicdomainregistry.com/)_ ## Перенос домена с договора Timeweb на другой договор в PDR Отправьте заявку на перенос на e-mail [info@timeweb.cloud](mailto:info@timeweb.cloud) с административного e-mail вашего домена. Пример: *Прошу перенести домен \[имя домена\] на Customer's ID \[номер анкеты\] с Customer's username \[административный e-mail, указанный для Customer's ID\].* # Смена регистратора доменов SPB.RU, MSK.RU и др. Source: https://timeweb.cloud/docs/domains/changing-domain-registrar/transfering-spbru-mskru > [!NOTE] > Эта инструкциия по смене регистратора подойдет: > > - для доменов третьего уровня в зонах com.ru, .spb.ru, .spb.su, .msk.ru, .msk.su, .nov.ru, .sochi.su и аналогичных; > - для доменов в зонах **.tel, .pro, .travel, .aero**. Во время переноса сайт будет работать. Никакие ресурсные записи домена не изменятся. ## Перенос домена от другого регистратора на наш договор в Ru-Center 1. Свяжитесь с текущим регистратором и запросите: - снять у домена статус «clientTransferProhibited» - предоставить вам код авторизации реестра (secret key). 2. В своей панели управления Timeweb Cloud создайте администратора — домен будет перенесен на его данные. 3. Пополните баланс аккаунта Timeweb Cloud на необходимую сумму: - для доменов третьего уровня — на сумму в размере 690 рублей, так как перенос доменов в этих зонах платный; - для доменов .tel, .pro, .travel, .aero — на сумму, равную стоимости продления домена на 1 год (при трансфере домен будет автоматически продлен на год. Сам трансфер бесплатный. 4. Свяжитесь с нашей службой поддержки ([info@timeweb.cloud](mailto:info@timeweb.cloud)) и сообщите домен, который нужно перенести, и имя администратора, которого вы создали в панели управления. 5. Перейдите по ссылке, которая придет на административный e-mail домена, и введите секретный ключ (secret key). Ссылка действительна 5 дней. Трансфер будет выполнен в течение 5-7 дней, после чего вы получите уведомление на email. ## Перенос домена с нашего договора в Ru-Center к другому регистратору 1. Напишите нам на ящик [info@timeweb.cloud](mailto:info@timeweb.cloud) с административного e-mail домена с просьбой снять запрет на смену регистратора. 2. Свяжитесь с Ru-Center, отправив сообщение на [tld-ncc@nic.ru](mailto:tld-ncc@nic.ru). Укажите домен и номер договора и запросите код авторизации реестра (secret key). 3. Регистратор отправит вам ссылку для подтверждения трансфера. Перейдите по ней, после чего вам будет выслан код авторизации реестра. 4. Свяжитесь с новым регистратором и сообщите им код авторизации реестра. Регистратор запустит трансфер со своей стороны. ## Перенос домена с одного договора в Ru-Center на другой договор 1. Войдите в [панель управления регистратора Ru-Center.](https://www.nic.ru/auth/login/) Для этого: - - перейдите по ссылке [https://www.nic.ru/auth/login/](https://www.nic.ru/auth/login/) - введите домен или номер анкеты. Пароль придет на e-mail администратора домена. 2. В панели выберите «Анкета» → «Сменить партнера» → «Передать». Домен будет передан в течение часа, и вы получите уведомление на e-mail администратора. > [!NOTE] > Номер договора Timeweb в Ru-Center: 6471/NIC-REG. # Смена регистратора доменов .PP.RU, .ORG.RU, .NET.RU Source: https://timeweb.cloud/docs/domains/changing-domain-registrar/transfering-ppru-netru-orgru Во время переноса сайт будет работать. Никакие ресурсные записи домена не изменятся. ## Перенос домена от другого регистратора в Timeweb Cloud Домен будет перенесен на наш договор в Ru-Center. 1. Свяжитесь с текущим регистратором и сообщите ему о своем желании перенести домен в Ru-Center (АО «РСИЦ»). Регистратор проконсультирует вас по своей процедуре. Также сообщите регистратору идентификатор Ру-Центра: RU-CENTER-3LVL. 2. В своей панели управления Timeweb Cloud создайте администратора для переносимого домена. 3. Свяжитесь с нашей поддержкой и сообщите домен, который вы хотите перенести, и имя созданного администратора. Когда перенос завершится, на контактный ящик администратора придет уведомление. ## Перенос домена из Timeweb Cloud к другому регистратору Домен переносится с нашего договора в Ru-Center. 1. Свяжитесь с новым регистратором и сообщите о своем желании перенести домен к ним. Регистратор проконсультирует вас по своей процедуре. 2. Уведомите Ру-Центр о переносе домена. Для этого потребуется предоставить заявление по определенной форме. Шаблон и инструкции доступны на [сайте регистратора](https://www.nic.ru/help/perenos-domena-iz-ru-center-k-drugomu-registratoru_7949.html#su_third). Документы будет нужно отправить почтой или привезти в офис Ру-Центр. ## Перенос домена с договора на договор внутри Ru-Center Самый простой способ перенести домен внутри Ru-Center — через личный кабинет на сайте регистратора. 1. Авторизуйтесь в личном кабинете. Для этого: - - перейдите по ссылке [https://www.nic.ru/auth/login/](https://www.nic.ru/auth/login/); - введите домен или номер анкеты. Пароль придет на ящик владельца домена. 2. В личном кабинете перейдите в раздел «Анкета» → «Сменить партнера» → «Передать». Перенос домена будет выполнен в течение часа. Когда процесс завершится, вы получите уведомление. Другой способ передачи домена — по заявлению, которое нужно предоставить регистратору. Шаблон и инструкции можно найти на [сайте регистратора](https://www.nic.ru/help/peredacha-upravleniya-anketoj_7953.html#from_part_to_part). Регистратор выполнит передачу домен в течение 2 рабочих дней после получения письма. > [!NOTE] > Наш номер договора в Ru-Center: 6471/NIC-REG. # Смена регистратора доменов .KZ Source: https://timeweb.cloud/docs/domains/changing-domain-registrar/transfering-kz Во время переноса сайт будет работать. Никакие ресурсные записи домена не изменятся. ## Перенос домена в Timeweb от другого регистратора Домен будет перенесен на наш договор с регистратором R01. 1. Свяжитесь с текущим регистратором и запросите: - Снятие статуса блокировки с домена (этот статус препятствует трансферу). - Код переноса (он же — AuthInfo-код или код авторизации реестра). 2. Внесите на баланс аккаунта Timeweb сумму, равную стоимость продления домена на 1 год. Это необходимо, так как при трансфере домен будет продлен. Уточнить сумму можно в службе поддержки или на нашем сайта. 3. В панели управления создайте [администратора](https://timeweb.cloud/my/domains/persons), на данные которого будет перенесен домен. 4. Сообщите в нашу [службу поддержки](https://timeweb.cloud/my/support/help-question), что администратор создан, и запросите номер анкеты для него. 5. После получения номера анкеты предоставьте регистратору R01 заявление (шаблон и инструкции можно найти на [сайте регистратора](https://help.r01.ru/domain/gtld/kz_inbound.html)). В заявлении нужно указать: - код переноса, полученный от текущего регистратора, - номер (идентификатор) анкеты администратора, полученный от нашей поддержки, - номер договора ООО «ТаймВэб» RDP/01/45 от 20.07.2006. 6. Отправьте заявление регистратору R01. К документу приложите копию паспорта (для физического лица) или ИНН и ОГРН (для юридического лица). Адрес отправки можно найти [здесь](https://help.r01.ru/domain/gtld/kz_inbound.html). ## Перенос домена в Timeweb внутри R01 Речь идет о переносе домена с договора другого партнера внутри R01 на наш договор с регистратором. 1. В панели управления создайте [администратора](https://timeweb.cloud/my/domains/persons), на данные которого будет перенесен домен. 2. Сообщите в нашу [службу поддержки](https://timeweb.cloud/my/support/help-question), что администратор создан, и запросите номер анкеты для него. 3. После получения номера анкеты предоставьте регистратору R01 заявление (шаблон и инструкции можно найти на [сайте регистратора](https://help.r01.ru/domain/gtld/kz_inbound.html)). В заявлении потребуется указать: - номер (идентификатор) анкеты администратора, полученный от нашей поддержки, - номер договора ООО «ТаймВэб» RDP/01/45 от 20.07.2006. 4. Отправьте заявление регистратору R01. К документу приложите копию паспорта (для физического лица) или ИНН и ОГРН (для юридического лица). Адрес отправки можно найти [здесь](https://help.r01.ru/domain/gtld/kz_inbound.html). ## Перенос домена к другому регистратору 1. Напишите в нашу [службу поддержки](https://timeweb.cloud/my/support/help-question) и запросите код переноса для домена. Обращение необходимо отправить с административного ящика домена на email info@timeweb.cloud. 2. Обратитесь к принимающему регистратору и передайте ему полученный код. Дальнейшие шаги необходимо уточнить у нового регистратора. ## Перенос домена внутри R01 на другой партнерский договор Свяжитесь с партнером, которому хотите передать домен. Необходимо, чтобы они создали анкету администратора на стороне R01. Далее [свяжитесь с R01](https://r01.ru/about/contacts/) и запросите перенос домена к новому партнеру. По процедуре они вас проконсультируют. # Смена администратора домена Source: https://timeweb.cloud/docs/domains/changing-domain-owner Инструкции по смене владельца домена. Процедуры отличаются для разных доменных зон и регистраторов. - [Смена администратора доменов .RU и .РФ (ТаймВэб.Домены)](https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-ru-rf) - [Смена администратора доменов .RU, .РФ, .SU, .KZ (Регистратор R01)](https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-ru-rf-su-kz) - [Смена администратора доменов .COM, .NET, .ORG и др.](https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-com-net-org) - [Смена администратора доменов .SPB.RU, MSK.RU, .TEL, .PRO, .TRAVEL, .AERO и др.](https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-spbru-mskru) # Смена администратора доменов .RU и .РФ Source: https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-ru-rf > [!NOTE] > Эта инструкция по передаче прав на домены .RU и .РФ, зарегистрированных через ТаймВэб.Домены. Если домен зарегистрирован через R01, воспользуйтесь [этой статьей](https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-ru-rf-su-kz). Процесс состоит из трех шагов: верификация, заявления от каждой стороны и подтверждение через секретный ключ. ## Шаг 1. Оба администратора проходят верификацию Верификация домена обязательна — без нее передача не состоится. Ее проходят и тот, кто отдает домен, и тот, кто принимает. Оба администратора пишут письмо на [clients@timeweb.name](mailto:clients@timeweb.name) с просьбой пройти верификацию и прикладывают документы: - **Физлица или ИП** — цветную копию паспорта: главный разворот с фото (стр. 2-3) и страница с пропиской (стр. 9). Если вы меняли паспортные данные, приложите страницу со сведениями о выданных ранее паспортах (стр. 19). - **Юрлица** — цветные копии ОГРН (или Лист записи) и ИНН. > [!NOTE] > **Важно**: письмо нужно отправлять с адреса, указанного [в анкете соответствующего администратора](https://timeweb.cloud/my/domains/persons). Мы ответим в течение двух рабочих дней. Если домен уже верифицирован, повторно делать это не нужно — проверьте статус домена через любой Whois-сервис. Если вы видите статус «verified» или «проверен», верификация уже пройдена. ## Шаг 2. Текущий администратор подает заявление Скачайте и заполните заявление на передачу домена: - [Для физлица или ИП](https://content.timeweb.com/assets/75674c67-9ee6-4f21-9377-98d4e1c0cf4f?download) - [Для юрлица](https://content.timeweb.com/assets/2ad39c44-0e99-4b3f-a558-9a6010d80947?download) Затем напишите на [domains@timeweb.name](mailto:domains@timeweb.name). В письме укажите название домена, email нового администратора и приложите заполненные заявления. В ответ вы получите секретный ключ — передайте его новому администратору любым удобным способом. > [!NOTE] > **Важно**: Мы принимаем только только цветную скан-копию заявления — фото или файл из Word не подойдут. > > От юрлиц понадобится подпись руководителя или уполномоченного представителя, заверенная печатью. Если печати нет — приложите копию Устава. Если документы подписывает представитель по доверенности, также понадобится доверенность. ## Шаг 3. Новый администратор подтверждает прием Этот шаг выполняет тот, кто принимает домен. Скачайте и заполните заявление на прием домена: - [Для физлица или ИП](https://content.timeweb.com/assets/c1741bc0-88fd-48f6-a4a5-9f6ff6915ba6?download) - [Для юрлица](https://content.timeweb.com/assets/392043a5-e373-47e4-b5fb-d4c82f6f52aa?download) Затем напишите письмо на [domains@timeweb.name](mailto:domains@timeweb.name). Укажите название домена, секретный ключ от текущего администратора и приложите заявление. Готово — домен будет передан. ## Нужен ли новому администратору аккаунт в Timeweb Cloud Это зависит от того, как вы планируете дальше управлять доменом: 1. **Домен остается на том же аккаунте, меняется только администратор**. В таком случае добавьте нового администратора на существующем аккаунте; еще один создавать не нужно. 2. **Новый владелец хочет управлять доменом из своего аккаунта**. Создайте администратора на нужном аккаунте, а мы переоформим домен и передадим его новому владельцу. ## Когда передать домен не получится Есть несколько ситуаций, когда передать домен новому администратору нельзя: - С последней смены администратора прошло меньше 30 дней. - Закончилась регистрация домена. - На домене есть ограничения (судебный процесс, блокировка компетентными организациями и т. д.). - Домен оформлен на ликвидированную компанию. Менять администратора сразу после регистрации или смены регистратора можно. # Смена администратора доменов .RU, .РФ, .SU, .KZ (Регистратор R01) Source: https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-ru-rf-su-kz > [!NOTE] > Это инструкция по смене владельца доменов в зонах .RU, .РФ, .SU, .KZ , зарегистрированных через Регистратора R01. Если ваш домен .RU / .РФ зарегистрирован через ТаймВэб.Домены, воспользуйтесь [этой инструкцией](https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-ru-rf). Уточнить, кто является регистратором, можно в нашей службе поддержки. ## Домены .RU, .SU, .РФ Сменить владельца можно через личный кабинет на сайте регистратора или по заявлению. ### Передача прав через личный кабинет > [!NOTE] > Для доменов, находящихся на нашем партнерском договоре в R01, процедура смены владельца бесплатна. Для смены владельца в первую очередь нужно выполнить следующие условия. - У текущего владельца домена должна быть пройдена [идентификация данных](https://help.r01.ru/documents/vouch.html) в R01. Сделать это можно по указанной ссылке. - У будущего владельца домена должен быть свой ник-хэндл (идентификатор). Чтобы получить ник-хэндл, создайте в панели Timeweb Cloud нового администратора, после чего напишите в поддержку, чтобы этому администратору присвоили ник-хэндл. Если условия выполнены, текущий владелец должен сделать следующее: 1. Зайти в личный кабинет R01. Для этого: - - перейдите по ссылке [https://partner.r01.ru/forgot.khtml](https://partner.r01.ru/forgot.khtml); - введите домен или ник-хэндл. Пароль придет на ящик администратора домена. 2. Перейти в раздел «Домены» → «Инструменты» → «Смена Администратора» → «Новая заявка». 3. Для нужного домена ввести ник-хэндл нового владельца, указать плательщика и создать заявку. Процедура бесплатна, но указание плательщика необходимо, чтобы заполнить форму. Никаких списаний не будет. 4. Принять условия заявления на передачу прав. 5. Далее регистратор отправит подтверждения на контактные ящики прежнего и нового владельца. Обеим сторонам необходимо следовать инструкциям в письмах и подтвердить смену владельца. 6. Сообщить о смене администратора в нашу Службу поддержки. 7. Регистратор обработает заявку, и домен будет доступен в личном кабинете принимающего Администратора. ### Передача прав по письму Чтобы изменить администратора по заявлениям, выполните следующее: 1. Предоставьте в R01 заявления от старого и нового владельца. Шаблоны можно найти на [сайте регистратора](https://help.r01.ru/domain/ru/change_adm/#n2). В заявлении укажите номер договора TimeWeb: RDP/01/45 от 20.07.2006. - К заявлению приложите копию паспорта (для физ.лиц и ИП) или копию ИНН (для юр.лиц). - Заявление от физ.лица или ИП нужно заверить нотариально. Заявление от юр.лица должно быть заверено печатью организации. 2. Если у нового владельца нет анкеты на стороне регистратора, необходимо ее создать. Для этого создайте в панели Timeweb Cloud нового администратора, после чего напишите в поддержку, чтобы этому администратору присвоили ник-хэндл. - Если новый владелец хочет иметь прямой договор с R01, необходимо зарегистрироваться на сайте R01, после чего указать идентификатор в заявлении. Документы необходимо отправить на почтовый адрес регистратора R01. ## Домены .KZ > [!NOTE] > Для доменов, находящихся на нашем партнерском договоре в R01, процедура смены владельца бесплатна. Текущему владельцу нужно: 1. Пройти [идентификацию данных.](https://help.r01.ru/documents/vouch.html) 2. Авторизоваться в личном кабинете R01. Для этого: - - перейдите по ссылке [https://partner.r01.ru/forgot.khtml](https://partner.r01.ru/forgot.khtml); - введите домен или ник-хэндл. Пароль придет на ящик администратора домена. 3. В разделе «Международные домены» → «Инструменты» → выбрать «Смена Администратора» → «Новая заявка». 4. Выбрать домены, ввести nic-hdl нового администратора и создать заявку. 5. Принять условия заявления на передачу прав. Новому владельцу нужно: 1. Зарегистрировать личный кабинет в R01, чтобы получить ник-хэндл. 2. Создать контакт для международного домена. Для этого нужно перейти в раздел «Администраторы доменов», кликнуть на ник-хэндл, затем в панели «Инструменты» выбрать «Контакты для доменов в международных зонах» → «Добавление контакта». Далее регистратор отправит подтверждения прежнему и новому владельцу на их контактные email. Необходимо следовать инструкциям в письмах. Регистратор обработает заявку, и домен будет доступен в личном кабинете принимающего Администратора. # Смена администратора доменов .COM, .NET, .ORG и др. Source: https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-com-net-org > [!NOTE] > Эта инструкция подойдет для доменов в международных зонах: .com, .org, .info, .net, .biz, .name, .us, .ws, .eu, .asia, .in, cc, .mobi, .tv, .bz, .me, .mn. > > Для доменов в зонах **.tel, .pro, .travel, .aero** воспользуйтесь [этой статьей](https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-spbru-mskru). Порядок действий: 1. В панели управления Timeweb Cloud создайте нового администратора. 2. Сообщите об этом в нашу службу поддержки, отправив обращение с административного ящика домена на email [info@timeweb.cloud](mailto:info@timeweb.cloud). 3. После нашего ответа авторизуйтесь в личном кабинете PDR. Для этого: - Перейдите по ссылке [https://timeweb.myorderbox.com/](https://timeweb.myorderbox.com/). - Введите e-mail, указанный при регистрации домена. На контактный ящик администратора придет инструкция по получению доступа. 4. В личном кабинете введите домен в блок **Jump to Domain** и перейдите к нему. ![Pdr1](https://content.timeweb.com/assets/db35b454-784d-4ec8-87a5-f23763c7d970?width=996&height=537) _Блок «Jump to Domain» в личном кабинете [PDR](https://publicdomainregistry.com/)_ 5. Кликните **Move services** вверху страницы. ![Pdr2](https://content.timeweb.com/assets/edef9e8a-bfb6-4af6-bddd-1375864aee40?width=1030&height=477) _Страница домена в личном кабинете [PDR](https://publicdomainregistry.com/)_ 6. В поле **Customer's ID** укажите ID созданной анкеты, в поле **Customer's username** — e-mail созданной анкеты (e-mail администратора домена). Чтобы в whois выводились контактные данные нового администратора, также отредактируйте информацию в разделе **Contact Details** на странице домена. # Смена администратора доменов .SPB.RU, MSK.RU и др. Source: https://timeweb.cloud/docs/domains/changing-domain-owner/changing-domain-owner-spbru-mskru > [!NOTE] > Эта инструкция подойдет для доменов третьего уровня в зонах .com.ru, .net.ru, .org.ru, .spb.ru, .spb.su, .msk.ru, .msk.su, .nov.ru, .sochi.su и аналогичных, а также для доменов в зонах .tel, .pro, .travel и .aero. Для смены владельца домена у нового администратора должен быть договор с Ru-Center. Заключить его можно: - напрямую на [сайте регистратора](https://www.nic.ru/manager/new_contract.cgi); - через Timeweb Cloud, создав в панели управления нового администратора. После уведомите об этом нашу службу поддержки — мы сообщим вам номер анкеты. Далее текущему владельцу необходимо предоставить заявление регистратору о смене владельца домена. - Шаблон и инструкции можно найти на [сайте регистратора](https://www.nic.ru/help/peredacha-prav-na-domen-po-zayavleniyu_9106.html). - В заявлении будет нужно указать идентификатор — номер анкеты нового владельца. - В поле «Оплата услуги «Смена Администратора»» необходимо указать номер договора: 6471/NIC-REG. Документы можно отправить на [почтовый адрес](https://www.nic.ru/about/#requisite), привезти в [офис регистратора](https://www.nic.ru/about/#offices) или в офис одного из [региональных представителей](https://www.nic.ru/about/#regions). Регистратор обработает заявку в течение 3 рабочих дней после получения документов. На контактную почту обеих сторон будут отправлены уведомления о том, что процесс передачи домена запущен. Новый администратор сможет принять домен на свою анкету в личном кабинете Ru-Center в разделе «Для клиентов» -> «Заказать услугу» -> «Смена администратора». > [!NOTE] > Смена администратора для доменов в зонах .TEL, .PRO, .TRAVEL является платной. # Лицензии Source: https://timeweb.cloud/docs/licenses Вы можете заказать лицензии **ispmanager** и **1C-Битрикс** из своей панели управления в разделе «[Лицензии](https://timeweb.cloud/my/licenses)». - [Лицензии ispmanager](https://timeweb.cloud/docs/licenses/ispmanager-licenses) - [Лицензии 1С-Битрикс](https://timeweb.cloud/docs/licenses/1s-bitrix-licenses) # Лицензии ispmanager Source: https://timeweb.cloud/docs/licenses/ispmanager-licenses **Ispmanager** — это одна из самых популярных панелей управления сервером с простым и понятным веб-интерфейсом. Все основные операции с сервером, такие как создание пользователей, сайтов, доменов, выполняются парой кликов мыши. Панель идеально подойдет пользователям, которые не обладают навыками управления серверами на базе операционной системы Linux. Для вас могут быть активированы лицензии следующих версий: | **Наименование лицензии** | **Количество доменов (сайтов)** | **Стоимость в месяц** | | --- | --- | --- | | ispmanager 6 lite | 10 | 390 рублей | | ispmanager 6 pro | 50 | 750 рублей | | ispmanager 6 host | Неограниченное количество | 1250 рублей | Версии **lite**, **pro** и **host** обладают базовым набором возможностей, достаточным для управления собственным сервером или VDS. В него входит управление всем поддерживаемым программным обеспечением (WEB-, DNS-, почтовым сервером и многим другим), поддержка указанного числа доменов. Версия **host**, помимо возможностей остальных версий получит возможности семейства **business**, после [прекращения поддержки ispmanager 6 business](https://www.ispmanager.ru/news/prekrashchaem-razvitie-ispmanager-6-business). Среди них: - Управление IP-адресами. - Функции реселлинга. - Учет трафика пользователя и реселлера. - Политика префиксов. - Настройка групп доступа к функциям панели для пользователей. - Другие возможности ispmanager 6 business. Все версии ispmanager могут быть установлены на следующие ОС: - Ubuntu 20.04 и 22.04 (рекомендуем) - AlmaLinux 8 и 9 - Debian 11, 12 - МСВСфера Сервер 9 - Rocky Linux 8 ## Заказ лицензии При заказе ispmanager привязывается к конкретному IP-адресу, поэтому для заказа лицензии у вас уже должен быть создан сервер. > [!NOTE] > Если вы установили сервер Timeweb Cloud сразу с лицензией, выбрав ее на вкладке «Маркетплейс», она уже будет заказана в разделе «Облачные серверы» → «Лицензии» — вам останется ее оплатить. Перейдите в раздел «Облачные серверы» → «Лицензии» и выберите нужную вам редакцию ispmanager: ![58216909 B747 495f B1e8 Dd41e0fb8687](https://content.timeweb.com/assets/9630cf81-e9fb-441b-8c8a-3ad3fe58ab3e.png?width=1553&height=819) Нажмите «Заказать». Далее ознакомьтесь с правилами предоставления услуги и отметьте соответствующий чекбокс, а также укажите, к какому серверу должна быть привязана лицензия. В дальнейшем в настройках лицензии в этом же разделе можно будет перепривязать лицензию к другому серверу и IP-адресу. Нажмите «Заказать». Если на балансе достаточно средств для оплаты лицензии, услуга будет активирована сразу, и на указанный вами IP-адрес сервера будет выпущена лицензия. Уведомление о выпуске лицензии, с ключом активации, придет на ваш e-mail. При недостатке средств для оплаты вы будете направлены в раздел «Баланс и платежи» для пополнения баланса аккаунта. После того, как счет будет успешно оплачен, лицензия будет активирована. **Продление** заказанных лицензий при наличии средств на балансе будет осуществляться автоматически. За 7 дней до даты продления вы получите соответствующее уведомление на e-mail. Если вы приобрели лицензию для сервера, на котором уже используется триальная ispmanager, вы можете активировать коммерческую версию лицензии в панели управления isp, по ссылке «Активировать лицензию» в правом верхнем углу. ## Продление лицензии Лицензии, имеющие привязку к серверу, будут продлеваться автоматически при наличии достаточной суммы на балансе аккаунта. За 7 дней до истечения лицензии мы направим вам уведомлении о скором продлении лицензии и необходимости проверить и пополнить баланс, если это требуется. Лицензии, не имеющие привязки к серверу (например, если сервер был удален до истечения срока действия лицензии), продлеваться не будут. Если лицензия не была продлена вовремя, но она вам нужна, вы можете заказать лицензию заново на тот же IP-адрес. Предварительно необходимо будет удалить истекшую лицензию из раздела «Облачные серверы» → «Лицензии». ## Перенос лицензии на другой сервер Если в разделе «Облачные серверы» → «Лицензии» есть свободная лицензия (т.е. не привязанная ни к одному из серверов), то при создании нового сервера с ПО «ispmanager», лицензия будет привязана к новому серверу автоматически, и IP-адрес изменится на адрес сервера. Для перепривязки лицензии к другому серверу вручную необходимо в разделе «Облачные серверы» → «[Лицензии](https://timeweb.cloud/my/licenses)» нажать на значок шестеренки у нужной лицензии, после чего выбрать в выпадающем списке нужный IP-адрес. ## Удаление лицензии В разделе «Облачные серверы» → «Лицензии» вы можете удалить лицензию в любой момент. Обратите внимание, что возврат денежных средств при этом не осуществляется. При удалении VDS, к которому была привязана лицензия, сама лицензия не удаляется. До истечения срока действия лицензии она может быть привязана к другому серверу. ## **Инструкции по работе с ispmanager** Вы можете найти инструкции по работе с панелью управления в разделе [Работа с ispmanager](https://timeweb.cloud/docs/control-panels/ispmanager). # Лицензии 1С-Битрикс Source: https://timeweb.cloud/docs/licenses/1s-bitrix-licenses Через Timeweb Cloud вы можете заказать следующие редакции 1С-Битрикс. ## Старт Простой сайт с новостями, меню и навигацией. Редакция «Старт» позволяет с наименьшими затратами времени и средств открыть представительство компании в Интернете или перевести существующий сайт на новую систему управления. Удобный и понятный интерфейс продукта позволяет даже без глубоких знаний веб-технологий быстро освоить систему и за несколько часов научиться управлять сайтом. ## Стандарт Популярная редакция продукта 1С-Битрикс, включающая все необходимые инструменты для управления интерактивным веб-проектом и при этом обладающая удобным и понятным интерфейсом для управления сайтом. ## Малый бизнес Небольшой интернет-магазин с базовым функционалом. Специальное решение для небольших и средних компаний. «Малый бизнес» позволяет с минимальными затратами создать собственный интернет-магазин, поддерживать работу дилерских сетей и управлять контентом сайта. ## Бизнес Крупный интернет-магазин или корпоративный сайт. Предоставляет широкие возможности для организации коллективной работы над сайтом, для управления партнерскими сетями и развития электронной торговли. Редакция «Бизнес» предназначена для разработки бизнес-портала, корпоративного сайта крупной организации или предприятия, информационно-справочной системы, интернет-магазина и других масштабных веб-проектов. ## Сравнение редакций При покупке лицензии вы получаете: - **Количество сайтов** - Редакция «Старт»: лицензия на создание двух сайтов. - Редакции «Стандарт», «Малый бизнес» и «Бизнес»: количество сайтов не ограничено. - **Один год обновлений** - **Один год технической поддержки** - **Программный продукт с открытыми исходными текстами PHP** - **Поддержка баз данных MySQL** | Модуль | **Старт** | **Стандарт** | **Малый бизнес** | **Бизнес** | | --- | --- | --- | --- | --- | | Главный модуль | ✓ | ✓ | ✓ | ✓ | | Управление структурой | ✓ | ✓ | ✓ | ✓ | | Информационные блоки | ✓ | ✓ | ✓ | ✓ | | Highload-блоки | ✓ | ✓ | ✓ | ✓ | | SEO-модуль | ✓ | ✓ | ✓ | ✓ | | Поиск (Модуль поиска) | ✓ | ✓ | ✓ | ✓ | | Проактивная защита | ✓ | ✓ | ✓ | ✓ | | Монитор производительности | ✓ | ✓ | ✓ | ✓ | | Облачные хранилища | ✓ | ✓ | ✓ | ✓ | | Облачные сервисы | ✓ | ✓ | ✓ | ✓ | | Компрессия | ✓ | ✓ | ✓ | ✓ | | Интеграция с Битрикс24 | ✓ | ✓ | ✓ | ✓ | | Социальные сервисы | ✓ | ✓ | ✓ | ✓ | | Перевод | ✓ | ✓ | ✓ | ✓ | | Масштабирование | | ✓ | ✓ | ✓ | | Мобильная платформа | | ✓ | ✓ | ✓ | | Фотогалерея 2.0 | | ✓ | ✓ | ✓ | | Форумы | | ✓ | ✓ | ✓ | | Блоги | | ✓ | ✓ | ✓ | | Опросы | | ✓ | ✓ | ✓ | | Веб-формы | | ✓ | ✓ | ✓ | | Подписка, рассылки | | ✓ | ✓ | ✓ | | A/B тестирование | | | ✓ | ✓ | | Конверсия | | | ✓ | ✓ | | Торговый каталог | | | ✓ | ✓ | | Интернет-магазин | | | ✓ | ✓ | | Мастер управления магазином | | | ✓ | ✓ | | Валюты | | | ✓ | ✓ | | Мобильное приложение | | | ✓ | ✓ | | E-mail маркетинг | | | ✓ | ✓ | | Технология Push & Pull | | | ✓ | ✓ | | Бизнес-процессы | | | | ✓ | | Конструктор отчетов | | | | ✓ | | Документооборот | | | | ✓ | | AD/LDAP интеграция | | | | ✓ | | Универсальные списки | | | | ✓ | | Реклама | | | | ✓ | | Веб-кластер | | | | ✓ | | Техподдержка | | | | ✓ | | Веб-сервисы | | | | ✓ | | Веб-аналитика | | | | ✓ | | Социальная сеть | | | | ✓ | | Сервис «Есть идея» | | | | ✓ | | Веб-мессенджер | | | | ✓ | | Календарь | | | | ✓ | | База знаний (Wiki) | | | | ✓ | | Почта | | | | ✓ | | Обучение, тестирование | | | | ✓ | ## Заказ лицензии Для заказа перейдите в раздел «Облачные серверы», во вкладку «[Лицензии](https://timeweb.cloud/my/licenses)», выберите нужную вам версию лицензии в выпадающем списке и нажмите «Заказать». ![E7e514be 921c 4fa4 86e6 36a1584a0c2f](https://content.timeweb.com/assets/86c31d8c-82df-4730-af16-8df50f5aea58.png?width=1560&height=809) На следующем шаге вы сможете подтвердить заказ и перейти к оплате. В течение 3 рабочих дней после поступления платежа вы получите лицензионный ключ на контактный e-mail аккаунта. # SSL-сертификаты Source: https://timeweb.cloud/docs/ssl Secure Sockets Layer (SSL) — это протокол безопасности, который используется веб-браузерами и веб-серверами для защиты данных пользователей при их передаче в сети Интернет. Он гарантирует безопасное соединение между сервером и браузером пользователя. Основные функции SSL-сертификата: - Защита данных пользователя во время их передачи (операции по банковской карте, передача авторизационных данных для входа и др.). - Связь ключа шифрования с данными организации. - Проверка подлинности организации и/или домена. Сертификаты SSL представляют собой небольшие файлы данных, которые связывают ключ шифрования с данными организации (или физического лица, в случае, если сертификат SSL выпускается на данные физического лица). При просмотре сайтов в веб-браузере SSL-сертификат обеспечивает безопасное соединение между веб-сервером и браузером, о чем свидетельствует наличие значка закрытого замка в адресной строке и префикса «https», с которого начинается адрес страницы. В первую очередь SSL-сертификат необходим интернет-магазинам, банкам, платежным системам и другим организациям, работающим с персональными данными, для защиты транзакций и предотвращения несанкционированного доступа к информации. Кроме того, сайты с SSL-сертификатами имеют преимущество в поисковой выдаче. ## Информация, которую может содержать и подтверждать SSL-сертификат SSL-сертификат содержит следующую информацию: - доменное имя, на которое оформлен SSL-сертификат; - данные лица, на имя которого выпущен сертификат; - физическое местонахождение владельца сертификата (город, страна); - срок действия сертификата; - реквизиты компании-поставщика SSL-сертификатa. ## Проверка сертификата Проверить SSL-сертификат (установлен или не установлен, какие данные были указаны при его заказе) можно с помощью различных инструментов, например, на сайте [GlobalSign](https://globalsign.ssllabs.com/) или [SSL Shopper](https://www.sslshopper.com/ssl-checker.html). Также можно проверить соответствие сертификата и ключа. # Виды SSL-сертификатов Source: https://timeweb.cloud/docs/ssl/ssl-types Через Timeweb Cloud можно заказать сертификаты, выпускаемые центром сертификации GlobalSign. Все эти сертификаты являются сертификатами с проверкой домена (DV), которые подтверждают подлинность доменного имени. Они не содержат информации о компании и могут быть оформлены на физическое лицо. ## GlobalSign **AlphaSSL** — сертификат, выпуск которого занимает минимум времени, служит для обеспечения защищенного с помощью шифрования соединения. Работает только с одним именем и устанавливается только на домен или поддомен. **DomainSSL Wildcard** — этот вид сертификата будет работать на домене и всех поддоменах одного домена. Имеет упрощенную процедуру проверки при выпуске. Срок выпуска сертификата составляет несколько часов. **SSL Timeweb Pro** — сертификат от центра сертификации GlobalSign, обеспечивающий защиту для одного домена. При заказе этого сертификата мы обеспечим полную установку и настройку SSL, настроим работу сайта по https, устраним возможные ошибки, включая Mixed Content. Обратите внимание, пожалуйста, что мы можем гарантировать успешную установку и настройку SSL Timeweb Pro только при наличии на сервере панели управления ISPManager, Fastpanel, ISPConfig или HestiaCP или системы BitrixVM. Особенности данных сертификатов: - Совместимость практически со всеми браузерами. - Обеспечивают 128 или 256-битное шифрование. - Поддержка национальных доменов (IDN). - Поддержка стандартов TLS 1.2 и X.509v3. - Длина ключа 2048 бит. - После окончания срока действия сертификат можно продлить в течение 30 дней. ## Let's Encrypt **Let's Encrypt** — бесплатный сертификат, выпускаемый на срок 90 дней. Сертификат работает только с одним именем и устанавливается только на домен или поддомен. В неделю можно выпустить [не более 50 сертификатов](https://letsencrypt.org/docs/rate-limits/) на определенный домен (в это число входят все сертификаты, выпущенные для этого домена и его поддоменов). Если сертификат Let's Encrypt заказывается через панель управления, вы будете перенаправлены на страницу создания балансировщика нагрузки. Если балансировщик нужен только для выпуска сертификата, воспользуйтесь [нашей инструкцией по настройке](https://timeweb.cloud/docs/ssl/installing-ssl#ustanovka-ssl-sertifikata-pri-pomoshchi-balansirovshchika). В этом случае перевыпуск сертификата будет происходить автоматически — контролировать продление не потребуется. Также сертификат можно бесплатно выпустить и установить вручную. Способ установки зависит от используемой панели управления или CMS. Мы подготовили [список инструкций](https://timeweb.cloud/docs/ssl/installing-ssl#ustanovka-ssl-sertifikata-vruchnuu) для разных вариантов окружения. # Заказ и продление SSL Source: https://timeweb.cloud/docs/ssl/ssl-order-and-renewal Вы можете заказывать SSL в разделе панели управления «[SSL-сертификаты](https://timeweb.cloud/my/ssl)». > [!NOTE] > При заказе сертификата Let's Encrypt вы будете перенаправлены на страницу создания балансировщика нагрузки. Процесс заказа [подробно описан](https://timeweb.cloud/docs/ssl/installing-ssl#ustanovka-ssl-sertifikata-pri-pomoshchi-balansirovshchika) в нашей инструкции. ## **Заказ сертификата** В панели управления вы можете заказать [сертификаты GlobalSign](https://timeweb.cloud/docs/ssl/ssl-types#globalsign), в том числе SSL Timeweb Pro. 1. Перейдите в раздел «Домены и SSL» → «[SSL-сертификаты](https://timeweb.cloud/my/ssl)». 2. Нажмите «Купить сертификат». 3. Выберите нужный тип SSL. 4. Выберите домен, для которого выпускается сертификат. 5. Выберите контактный ящик администратора. Чтобы подтвердить выпуск SSL, у вас должен быть создан почтовый ящик с именем `admin`, `administrator`, `hostmaster`, `webmaster` или `postmaster`. 6. Выберите администратора или кликните «Добавить», чтобы создать нового. 7. Выберите способ оплаты сертификата: с баланса или отдельно. 8. Если вы хотите [продлевать сертификат автоматически](https://timeweb.cloud/docs/ssl/ssl-order-and-renewal#usloviya-avtoprodleniya-sertifikatov), оставьте опцию автопродления включенной. 9. Нажмите «Заказать». После поступления оплаты сертификат будет отображен в списке сертификатов в разделе «[SSL-сертификаты](https://timeweb.cloud/my/ssl)» со статусом «Обрабатывается». После того, как вы подтвердите выпуск SSL, перейдя по ссылке в письме, сертификат будет выпущен в течение 1-2 часов Вы сможете скопировать сертификат (CRT) и ключ (Private Key) во вкладке «[SSL-сертификаты](https://timeweb.cloud/my/ssl)» и установить SSL на сервер. Также файлы будут отправлены на контактный емейл аккаунта. Если вы заказываете **SSL Timeweb Pro**, сообщите службе поддержки реквизиты подключения к серверу, чтобы мы смогли выполнить установку и настройку сертификата. Если при выпуске сертификата произошла ошибка, вы увидите отметку об этом в списке сертификатов. Свяжитесь со [службой поддержки](https://timeweb.cloud/my/support/help-question) для уточнения информации и повторного выпуска сертификата. ## **Продление сертификата** Чтобы ваши сертификаты всегда продлевались в срок, мы рекомендуем пользоваться автопродлением — тогда не придется отслеживать сроки истечения и предпринимать дополнительные действия. Управлять автопродлением можно в разделе «[SSL-сертификаты](https://timeweb.cloud/my/ssl)». Кликните на нужный SSL и включите опцию «Автопродление». ![Selection 154](https://content.timeweb.com/assets/dd7f7256-0448-4241-87fb-8411b20de643.png?width=1002&height=689) Если же вы хотите продлить сертификат лишь однократно, то за некоторое время до его истечения включите опцию автопродления, а после продления сертификата — снова выключите. ## Условия автопродления сертификатов - При автоматическом продлении денежные средства списываются с вашего баланса автоматически. - При автоматическом продлении и списании применяется [соглашение о новации](https://st.timeweb.com/cloud-static/legal-info/innovation-agreement.pdf). - Если вы не выразили несогласие или не отключили автоматическое продление какой-либо услуги, то это означает, что вы согласны с условиями соглашения о новации. # Установка SSL-сертификата Source: https://timeweb.cloud/docs/ssl/installing-ssl Здесь мы собрали мануалы по установке SSL-сертификатов — как платных, приобретенных через нас или другого провайдера, так и бесплатных сертификатов Let's Encrypt. Для [доменов, привязанных к Apps](https://timeweb.cloud/docs/apps/upravlenie-apps-v-paneli#sobstvennyj-domen), сертификаты Let's Encrypt выпускаются и устанавливаются автоматически. ## **Установка SSL-сертификата через балансировщик** При заказе сертификата Let's Encrypt вас перенаправит на страницу создания балансировщика. Полную информацию о настройке балансировщика вы можете найти в [нашей документации](https://timeweb.cloud/docs/load-balancer/manage-balancer). Если вам нужен балансировщик только для выпуска и автоматического обновления сертификата, выполните следующие шаги: 1. Выберите подходящую локацию. 2. Выберите тариф. 3. В разделе «Сеть» оставьте настройки по умолчанию. 4. В разделе «Настройки» включите опцию «SSL-сертификат» и укажите нужный домен. 5. Если у домена указаны наши NS-серверы: `ns1.timeweb.ru` `ns2.timeweb.ru` `ns3.timeweb.org` `ns4.timeweb.org` — то А-запись изменится автоматически. Если домен использует сторонние NS-серверы, укажите для него А-запись с IP-адресом балансировщика. Это требуется для корректной работы SSL-сертификата. 6. В пункте «Серверы в балансировке» выберите сервер, на котором размещен ваш сайт. ![Scr 20250707 Ocpu](https://content.timeweb.com/assets/27ac63f2-4af5-4903-a167-dd87d0b6ca7c.png?width=1080&height=1412) 7. Оставьте правила балансировки без изменений. 8. Дождитесь завершения создания балансировщика. После этого убедитесь, что: - Сайт доступен по привязанному домену. - Сертификат установлен корректно. > [!NOTE] > Обновление A-записи может занять до нескольких часов. Обычно домен начинает работать уже через несколько минут. ## Установка SSL-сертификата вручную Если SSL устанавливается на сервер вручную или через панель управления, воспользуйтесь одной из инструкций ниже. Для серверов с панелью управления: - [Установка SSL в ispmanager](https://timeweb.cloud/docs/control-panels/ispmanager/installing-ssl-certificates) - [Установка SSL в Fastpanel](https://timeweb.cloud/docs/control-panels/fastpanel/installing-ssl) - [Установка SSL в Hestia](https://timeweb.cloud/docs/control-panels/hestia-cp/installing-ssl-hestia) - [Установка SSL в VestaCP](https://timeweb.cloud/docs/control-panels/vestacp/installing-ssl-vestacp) - [Установка SSL в ISPConfig](https://timeweb.cloud/docs/control-panels/ispconfig/installing-ssl) Для окружения Bitrix у нас есть инструкции: - [Выпуск сертификата Let's Encrypt](https://timeweb.cloud/docs/control-panels/bitrixvm/ssl-lets-encrypt) - [Установка SSL](https://timeweb.cloud/docs/control-panels/bitrixvm/ssl-install) Если на сервер установлен трекер Keitaro, воспользуйтесь инструкцией: - [Установка SSL на сервер с Keitaro](https://timeweb.cloud/docs/unix-guides/installing-ssl-on-server-with-keitaro) Для серверов без панели: - [Установка SSL-сертификата на Nginx](https://timeweb.cloud/docs/unix-guides/ustanovka-ssl-na-nginx) # Инструкции для UNIX-систем Source: https://timeweb.cloud/docs/unix-guides В разделе собраны инструкции по настройке облачных и физических серверов с установленными Unix-подобными системами. - [Подключение к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) - [Подключение к серверу по SFTP](https://timeweb.cloud/docs/unix-guides/sftp) - [Авторизация по SSH-ключу](https://timeweb.cloud/docs/unix-guides/ssh-key-authentication) - [Смена или сброс пароля root](https://timeweb.cloud/docs/unix-guides/root-password-reset) - [Смена пароля root для MySQL](https://timeweb.cloud/docs/unix-guides/mysql-root-password-reset) - [Добавление пользователей](https://timeweb.cloud/docs/unix-guides/adding-users) - [Управление правами доступа](https://timeweb.cloud/docs/unix-guides/permissions-management) - [Изменение стандартного порта SSH](https://timeweb.cloud/docs/unix-guides/changing-default-ssh-port) - [Защита SSH от подбора пароля. Fail2ban](https://timeweb.cloud/docs/unix-guides/block-ssh-brute-force-attacks-fail2ban) - [Настройка подключения через SSH в VSCode](https://timeweb.cloud/docs/unix-guides/configuring-ssh-connection-in-vscode) - [Создание дампа базы и восстановление данных](https://timeweb.cloud/docs/unix-guides/database-dump-and-restore) - [Установка LAMP на Ubuntu](https://timeweb.cloud/docs/unix-guides/installing-lamp-on-ubuntu) - [Установка phpMyAdmin на Ubuntu с LAMP](https://timeweb.cloud/docs/unix-guides/installing-pma-on-ubuntu-with-lamp) - [Установка SSL на Nginx](https://timeweb.cloud/docs/unix-guides/ustanovka-ssl-na-nginx) - [Установка модулей PHP (CentOS)](https://timeweb.cloud/docs/unix-guides/installing-php-modules-centos) - [Установка модулей PHP (Debian / Ubuntu)](https://timeweb.cloud/docs/unix-guides/installing-php-modules-debian-ubuntu) - [Настройка параметров PHP (CentOS)](https://timeweb.cloud/docs/unix-guides/setting-php-options-centos) - [Настройка параметров PHP (Debian / Ubuntu)](https://timeweb.cloud/docs/unix-guides/setting-php-options-debian-ubuntu) - [Настройка перенаправлений](https://timeweb.cloud/docs/unix-guides/setting-up-redirects) - [Настройка перенаправлений (Nginx)](https://timeweb.cloud/docs/unix-guides/setting-up-redirects-nginx) - [Настройка FTP в Ubuntu](https://timeweb.cloud/docs/unix-guides/ftp-setup-in-ubuntu-20-04) - [Оптимизация MySQL с помощью MySQLTuner](https://timeweb.cloud/docs/unix-guides/optimizing-mysql-with-mysqltuner) - [Сканирование с помощью ClamAV](https://timeweb.cloud/docs/unix-guides/scanning-with-clamav) - [Управление службами в systemd](https://timeweb.cloud/docs/unix-guides/service-management-in-systemd) - [Логирование в systemd](https://timeweb.cloud/docs/unix-guides/logging-systemd) - [Аудит системных событий](https://timeweb.cloud/docs/unix-guides/auditing-system-events) - [Добавление дополнительного IP](https://timeweb.cloud/docs/unix-guides/adding-ip-addresses) - [Добавление и удаление диска](https://timeweb.cloud/docs/unix-guides/adding-removing-disk) - [Изменение размера диска](https://timeweb.cloud/docs/unix-guides/disk-resizing) - [Монтирование резервных копий](https://timeweb.cloud/docs/unix-guides/mounting-backups) - [Создание swap, изменение его размера](https://timeweb.cloud/docs/unix-guides/creating-and-resizing-swap) - [Установка и удаление программ. Менеджеры пакетов](https://timeweb.cloud/docs/unix-guides/package-management) - [Установка графической оболочки XFCE на Ubuntu](https://timeweb.cloud/docs/unix-guides/install-xfce-gui-ubuntu) - [Настройка iptables](https://timeweb.cloud/docs/unix-guides/iptables-setup) - [Удаленный доступ к MySQL](https://timeweb.cloud/docs/unix-guides/remote-access-to-mysql) - [Установка произвольной ОС на сервер](https://timeweb.cloud/docs/unix-guides/ustanovka-proizvolnoj-os-na-server) - [Установка QEMU-агента](https://timeweb.cloud/docs/unix-guides/installing-qemu-agent) - [Установка Zabbix-агента](https://timeweb.cloud/docs/unix-guides/installing-zabbix-agent) - [Установка и работа с PostgreSQL](https://timeweb.cloud/docs/unix-guides/installing-and-using-postgresql) - [Установка почтового сервера iRedMail](https://timeweb.cloud/docs/unix-guides/installing-iredmail) - [Настройка почтового сервера iRedMail](https://timeweb.cloud/docs/unix-guides/configuring-iredmail) - [Установка SSL на сервер с Keitaro](https://timeweb.cloud/docs/unix-guides/installing-ssl-on-server-with-keitaro) - [Запуск WordPress на сервере c Ubuntu](https://timeweb.cloud/docs/unix-guides/wordpress-on-ubuntu) - [Запуск бота в фоновом режиме](https://timeweb.cloud/docs/unix-guides/zapusk-bota-v-fonovom-rezhime) - [Установка сертификатов Минцифры](https://timeweb.cloud/docs/unix-guides/ustanovka-sertifikatov-mincifry) - [Создание образа виртуальной машины для облачного сервера](https://timeweb.cloud/docs/unix-guides/sozdanie-obraza-virtualnoj-mashiny-dlya-oblachnogo-servera) - [Подготовка образа для создания облачного сервера](https://timeweb.cloud/docs/unix-guides/podgotovka-obraza-dlya-sozdaniya-oblachnogo-servera) - [Создание и развертывание образа диска с помощью утилиты dd](https://timeweb.cloud/docs/unix-guides/creating-images-with-dd) - [Установка Minecraft на Ubuntu](https://timeweb.cloud/docs/unix-guides/ustanovka-minecraft-na-ubuntu) - [Установка Bareos](https://timeweb.cloud/docs/unix-guides/bareos-install) - [Настройка bastion-хоста](https://timeweb.cloud/docs/unix-guides/configuring-bastion-host) - [Запуск сервера Minecraft](https://timeweb.cloud/docs/unix-guides/zapusk-servera-minecraft) - [Настройка сети Outline](https://timeweb.cloud/docs/unix-guides/nastrojka-outline) - [Изменение настроек DNS-серверов](https://timeweb.cloud/docs/unix-guides/izmenenie-nastroek-dns-serverov) - [Перенос сервера с большим диском на меньший с помощью rsync](https://timeweb.cloud/docs/unix-guides/perenos-servera-s-bolsim-diskom-na-mensii-s-pomoshhiu-rsync) - [Установка n8n](https://timeweb.cloud/docs/unix-guides/installing-n8n) - [Установка OpenClaw](https://timeweb.cloud/docs/unix-guides/openclaw) - [Установка Paperclip](https://timeweb.cloud/docs/unix-guides/paperclip) - [Установка Hermes Agent](https://timeweb.cloud/docs/unix-guides/hermes) - [Установка Cloud Hosted Router](https://timeweb.cloud/docs/unix-guides/chr-install) Диагностика и решение проблем - [Базовая диагностика при проблемах в работе сайта](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/basic-diagnostics) - [Проблемы с базой данных](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/database-issues) - [Анализ дискового пространства: ncdu, du](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-space-analysis-ncdu-du) - [Данные о дисках: df, lsblk, parted, fdisk](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-data-df-lsblk-parted-fdisk) - [Контроль нагрузки и процессов: top, htop, atop](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/load-and-process-control-top-htop-atop) - [Завершение процессов OOM Killer](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/ending-processes-oom-killer) - [Переполнение inodes](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/inodes-overflow) - [Проверка файловой системы](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/file-system-check) - [Другие возможные проблемы](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/other-issues) - [Ускорение работы сайта: перенос MySQL в tmpfs](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/improving-site-performance-mysql-to-tmpfs) # Подключение к серверу по SSH Source: https://timeweb.cloud/docs/unix-guides/ssh Реквизиты для доступа к серверу под пользователем root (IP-адрес и пароль) можно найти на Дашборде сервера. ![B906317a C89c 4ec6 B219 C262c3c3c56b](https://content.timeweb.com/assets/1b0e76da-5509-4174-84de-af89558d0516.png?width=1533&height=1185) Работать с сервером по SSH можно через [веб-консоль в панели управления](https://timeweb.cloud/docs/cloud-servers/manage-servers/console), но это не всегда удобно. Лучше всего подключиться к серверу по SSH с помощью специального ПО — в зависимости от используемой на вашем компьютере операционной системы оно может быть либо встроенным в систему, либо его потребуется установить дополнительно. ## Linux, MacOS, Windows 10 При работе с **Linux** или **MacOS** вы можете использовать встроенную в систему утилиту — **терминал**. В **Windows**, начиная с Windows 10 1809, имеется встроенный SSH-клиент, и вы можете использовать для работы по SSH **Windows PowerShell**. Для установки соединения с сервером: 1. На странице «Дашборд» вашего сервера скопируйте команду для подключения по SSH. ![Aaa24ffa C04e 4f66 896b Ca3f52a15db8](https://content.timeweb.com/assets/3095350e-928a-40f7-8c4c-fafb4f5acb27.png?width=1533&height=1185) 2. Запустите терминал / PowerShell и вставьте скопированную команду щелчком правой кнопки мыши. Вы также можете ввести команду вручную, в формате: ```shell ssh root@IP_адрес_сервера ``` 3. При первом подключении вы увидите уведомление для подтверждения соединения. Введите **yes** и нажмите Enter. 4. Далее появится запрос пароля. Скопируйте root-пароль со страницы «Дашборд» и вставьте его щелчком правой кнопки мыши. Нажмите Enter. Вы также можете вводить пароль вручную. Будьте внимательны, так как символы не будут отражены на экране. Если все данные указаны правильно, соединение будет установлено. ## Windows без OpenSSH Пользователям старых версий **Windows** для подключения по SSH потребуется дополнительная программа — SSH-клиент, например, PuTTY. Ее можно скачать с [официального сайта](https://www.chiark.greenend.org.uk/~sgtatham/putty/) (также доступна неофициальная [сборка](https://putty.org.ru/download) на русском языке). После установки PuTTY на своем компьютере запустите ее и укажите необходимые настройки для соединения с сервером: - **Host Name** — IP-адрес сервера; - **Port** — 22 (по умолчанию). Вы также можете сохранить параметры данной сессии, задав любое удобное имя (например, vds1) в поле Saved Sessions и нажав Save. После нажмите на кнопку **Open**. При первом подключении вы увидите дополнительное окно для подтверждения соединения. Нажмите **Yes / Да** . Далее откроется консоль, где вам будет необходимо ввести логин и пароль доступа: - **login as** — укажите root; - **password** — введите пароль (будьте внимательны, так как символы пароля не будут отражены на экране; можно скопировать пароль из полученного письма и вставить его щелчком правой кнопки мыши). После нажмите Enter. Если все данные указаны правильно, соединение будет установлено. Далее все команды для сервера вы будете вводить в окне консоли. # Подключение к серверу по SFTP Source: https://timeweb.cloud/docs/unix-guides/sftp SFTP (SSH File Transfer Protocol) — безопасный протокол для работы с файлами на удаленном сервере. Позволяет передавать файлы, создавать каталоги, управлять правами и многое другое. Для пользователя работа по SFTP выглядит аналогично работе по FTP, при этом соединение осуществляется на базе защищенного протокола SSH. Для подключения по SFTP можно воспользоваться FTP-клиентом, например, FileZilla. ## Реквизиты подключения Стандартно для подключения используются следующие реквизиты: - **Хост**: IP-адрес вашего сервера (можно найти на главной странице сервера в панели управления) - **Имя пользователя**: имя пользователя, созданного на сервере - **Пароль**: пароль данного пользователя - **Порт**: 22 Если для подключения используется IPv6-адрес, то в интерфейсе FileZilla его необходимо указать в квадратных скобках, например: `[295f:e05b:3dc5:bed2:2350:9648:ef5f:c304]`. Если у вас настроена [авторизация по RSA-ключу](https://timeweb.cloud/docs/unix-guides/ssh-key-authentication), то также потребуется указать кодовую фразу (если она была задана при создании RSA-ключа) и загрузить содержимое публичного ключа. **Не рекомендуется подключаться по SFTP от имени root-пользователя**. Помимо того, что это небезопасно, это также менее удобно. После подключения под root вы по умолчанию окажетесь в домашней директории root (то есть `/root`), и для перехода к директории с вашими проектами потребуется перемещаться по файловой структуре. Кроме того, если вы загрузите файлы от имени root, для них будут выставлены пользователь и группа root:root, и веб-сервер не сможет прочитать их. Как следствие, на сайте появятся ошибки доступа к новым файлам. ## Fastpanel При установки панели будет создан пользователь `fastuser`. Для подключения под данным пользователем необходимо использовать реквизиты: - Хост: IP-адрес сервера - Имя пользователя: `fastuser` - Пароль: пароль пользователя `fastuser` (обратите внимание, что он отличается от пароля `root`) - Порт: 22 После подключения вы окажетесь в директории `/var/www/fastuser/data`. Директории сайтов размещаются по адресу: `/var/www/fastuser/data/www/имя_домена`. Если вы создали дополнительного пользователя (например, `user`), для подключения используйте его реквизиты: - Хост: IP-адрес сервера - Имя пользователя: `user` - Пароль: пароль пользователя `user` - Порт: 22 После подключения вы окажетесь в директории `/var/www/user/data`. Директории сайтов размещаются по адресу: `/var/www/user/data/www/имя_домена`. ## VestaCP По умолчанию в VestaCP создан пользователь `admin`. Для подключения под данным пользователем необходимо использовать реквизиты: - Хост: IP-адрес сервера - Имя пользователя: `admin` - Пароль: пароль пользователя `admin` (по умолчанию совпадает с паролем `root`) - Порт: 22 После подключения вы окажетесь в директории `/home/admin/`. Директории сайтов размещаются по адресу: `/home/admin/web/имя_домена`. Если вы создали в VestaCP дополнительного пользователя (например, `user`) и добавили сайт в разделе WEB от его имени, подключиться по SFTP нужно с его реквизитами: - Хост: IP-адрес сервера - Имя пользователя: `user` - Пароль: пароль пользователя `user` - Порт: 22 После подключения вы окажетесь в директории `/home/user/`. Директории сайтов размещаются по адресу: `/home/user/web/имя_домена`. ## Ispmanager Перед подключением по SFTP убедитесь, что у нужного пользователя есть shell-доступ. Это можно проверить в ispmanager в разделе «Учетные записи» — «Пользователи» — выделить нужного пользователя — «Изменить». Необходимо, чтобы был отмечен пункт «Доступ к shell». По умолчанию в ispmanager создан пользователь `www-root`. Если вы размещали сайты в разделе «WWW-домены» от имени данного пользователя, то подключиться по SFTP можно с реквизитами: - Хост: IP-адрес сервера - Имя пользователя: `www-root` (по умолчанию совпадает с паролем `root`) - Пароль: пароль пользователя `www-root` - Порт: 22 После подключения вы окажетесь в директории `/var/www/www-root/data/`. Директории сайтов размещаются по адресу `/var/www/www-root/data/www/имя_домена`. Если вы создали дополнительного пользователя (например, `user`) и добавляли сайты от его имени, для подключения используйте его реквизиты: - Хост: IP-адрес сервера - Имя пользователя: `user` - Пароль: пароль пользователя `user` - Порт: 22 После подключения вы окажетесь в директории `/var/www/user/data`. Директории сайтов размещаются по адресу `/var/www/user/data/www/имя_домена`. ## BitrixVM По умолчанию в системе BitrixVM создан пользователь `bitrix`. При подключении по SFTP необходимо использовать реквизиты: - Хост: IP-адрес сервера - Имя пользователя: `bitrix` - Пароль: пароль пользователя `bitrix` (по умолчанию совпадает с паролем `root`) - Порт: 22 После подключения вы окажетесь в директории `/home/bitrix/`. Директории сайтов размещаются по адресам `/home/bitrix/www/` (для основного сайта) и `/home/bitrix/ext_www/имя_домена` (для дополнительных сайтов, [созданных средствами BitrixVM](https://timeweb.cloud/docs/control-panels/bitrixvm/create-site)). ## LAMP По умолчанию в такой сборке для работы веб-серверов используется пользователь `www-data`. Для того чтобы работать от другого пользователя, в том числе подключаться по SFTP, необходимо выполнить настройку по инструкции ниже. [Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и выполните следующие действия: 1. Создайте нового SFTP-пользователя (в примере — `sftpuser`) с домашней директорией `/var/www/`: ```shell useradd -d /var/www/ sftpuser ``` 2. Установите пароль для нового пользователя: ```shell passwd sftpuser ``` Появится запрос на ввод пароля — введите его. Обратите внимание, что символы не будут отражены на экране во время ввода. 3. Добавьте пользователя к группе `www-data`: ```shell usermod -aG www-data sftpuser ``` Сделайте группу `www-data` основной: ```shell usermod -g www-data sftpuser ``` 4. Откройте конфигурационный файл Nginx: ```shell nano /etc/nginx/nginx.conf ``` В нем замените строку: ```shell user www-data; ``` На: ```shell user sftpuser; ``` И перезапустите Nginx: ```shell service nginx restart ``` Проверьте, от какого пользователя запускается веб-сервер Nginx. Это можно сделать командой: ```shell ps auxwwww | grep nginx ``` В выводе команды видим, что запуск выполняется от `sftpuser`. 6. Для веб-сервера Apache2 пользователь может быть задан в одном из следующих файлов: В Ubuntu / Debian: ```shell /etc/apache2/apache2.conf ``` Или: ```shell /etc/apache2/envvars ``` В CentOS: ```shell /etc/httpd/httpd.conf ``` Или: ```shell /etc/httpd/envvars ``` В нашей сборке LAMP задавать переменные необходимо в файле `/etc/apache2/envvars`. В целом же, чтобы проверить, в каком файле необходимо задавать переменные, необходимо его просмотреть — в том из них, который будет содержать `www-data`, необходимо заменить этот значение на `sftpuser`. Откройте конфигурационный файл с переменными сервера Apache2: В Ubuntu / Debian: ```shell nano /etc/apache2/envvars ``` В CentOS: ```shell nano /etc/httpd/envvars ``` Замените строку: ```shell export APACHE_RUN_USER=www-data ``` На: ```shell export APACHE_RUN_USER=sftpuser ``` Далее перезапустите веб-сервер. Команда для Debian/Ubuntu: ```shell service apache2 restart ``` Для CentOS: ``` service httpd restart ``` И проверьте, от какого пользователя запускается Apache2, с помощью команды: ```shell ps auxwwww | grep apache ``` 7. Установите корректные права, владельца и группу для директории, где будут храниться сайты (домашней директории пользователя), поочередно выполнив команды: ```shell find /var/www -type d -exec chmod 755 {} \; find /var/www -type f -exec chmod 644 {} \; chown -R sftpuser:www-data /var/www/ ``` На этом настройка завершена. Теперь необходимо проверить подключение по SFTP, используя следующие реквизиты для авторизации: - Хост: IP-адрес сервера - Имя пользователя: `sftpuser` - Пароль: пароль пользователя `sftpuser` (заданный на шаге 2) - Порт: 22 # Авторизация по SSH-ключу Source: https://timeweb.cloud/docs/unix-guides/ssh-key-authentication Использование SSH-ключа для подключения к серверу позволяет сделать работу более безопасной (снизится вероятность взлома учетной записи) и более удобной (не будет необходимости при каждом соединении вводить пароль). Настройка авторизации по ключу состоит из создания ключа на локальном компьютере и копирования его на сервер. > [!NOTE] > Скопировать ключ на облачный сервер также можно с помощью панели управления — при [создании нового VDS](https://timeweb.cloud/docs/cloud-servers/manage-servers/create-server) или [переустановке системы](https://timeweb.cloud/docs/cloud-servers/manage-servers/os-reinstall). Кроме того, вы можете [добавить ключ для уже существующего сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/ssh-keys#dobavlenie-klucha-na-sushchestvuushchij-server). ## Linux, MacOS, Windows 10 ### **Создание SSH-ключей** Эта инструкция подойдет для ОС Linux, MacOS, а также для версий Windows 10 начиная с 1809 — в них доступен встроенный SSH-клиент. Если у вас более ранняя версия Windows, воспользуйтесь инструкцией из пункта [Старые версии Windows (без OpenSSH)](https://timeweb.cloud/docs/unix-guides/ssh-key-authentication#starye-versii-windows-bez-openssh). Запустите терминал или Windows PowerShell на вашем компьютере и выполните команду: ```shell ssh-keygen ``` Вы увидите примерно следующее сообщение: ```shell Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): ``` Нажмите **Enter** — ключ будет сохранен в указанную директорию по умолчанию. Далее вам будет предложено задать пароль (кодовую фразу) для ключа. Вы можете задать ее или оставить пустой, просто нажав Enter. Обратите внимание, что если вы зададите кодовую фразу, ее потребуется вводить при каждой авторизации по ключу. ![Group 1321314118](https://content.timeweb.com/assets/af7e836d-13f1-45fb-9f7a-87bd23de4184?width=869&height=444) Процедура создания ключей завершена, ключи сохранены в директории `~/.ssh/` в файлах `id_rsa` и `id_rsa.pub`. Можно скопировать значение публичного ключа прямо в терминале. Чтобы вывести его в терминал, выполните: ```shell cat ~/.ssh/id_rsa.pub ``` Теперь публичный ключ необходимо скопировать на сервер. ### **Копирование ключа на сервер** Выполните в терминале следующую команду, указав вместо user имя пользователя, созданного на сервере, а вместо server — IP-адрес вашего сервера. **Для Linux и MacOS:** ```shell ssh-copy-id user@server ``` Например: ```shell ssh-copy-id root@2.59.43.145 ``` **Для Windows:** ```shell type $env:USERPROFILE\.ssh\id_rsa.pub | ssh user@server "cat >> .ssh/authorized_keys" ``` Например: ```shell type $env:USERPROFILE\.ssh\id_rsa.pub | ssh root@213.171.8.153 "cat >> .ssh/authorized_keys" ``` В результате содержимое файла с публичным ключом `id_rsa.pub` будет скопировано в файл `~/.ssh/authorized_keys` на сервере, и в дальнейшем вы сможете устанавливать соединение с сервером, используя команду: ```shell ssh user@server ``` Например: ```shell ssh root@213.171.8.153 ``` ![Image 127](https://content.timeweb.com/assets/445a5a6b-15ed-4bdb-ad86-e75d7549b4cc?width=1072&height=643) Если вам не удается подключиться с использованием ключа, проверьте логи SSH на сервере: ```shell sudo journalctl -u ssh ``` Если в логах наблюдается строка: ```shell userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth] ``` Значит, на вашем сервере отключена поддержка ssh-rsa (RSA с SHA‑1). В качестве решения, вы можете разрешить авторизацию с таким ключом, добавив в файл `/etc/ssh/sshd_config.d/enable_rsa_keys.conf` следующую строку ```shell HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa ``` После чего перезапустите службу: ```shell sudo systemctl restart sshd ``` Или, что более правильно, создайте другой ключ с более стойким шифрованием. Например, для создания сильного RSA-ключа используйте: ``` ssh-keygen -t rsa -b 4096 -o -a 100 ``` Или для использования `ed25519`: ```shell ssh-keygen -t ed25519 ``` И загрузите новый ключ повторно на сервер. ## Старые версии Windows (без OpenSSH) Если вы используете версию Windows без OpenSSH, вам потребуется специальная программа — PuTTYgen. Вы можете скачать дистрибутив `puttygen.exe` с [официального сайта PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html). ### Создание SSH-ключей с помощью PuTTYgen 1. Запустите программу, в открывшемся окне выберите RSA в блоке «Type of key to generate» и нажмите «Generate». 2. Пока создается ключ, водите мышью в хаотичном порядке в пространстве под строкой загрузки для генерации случайных значений. 3. После того, как ключ будет создан, в окне программы вы сможете задать «Key passphrase» (кодовую фразу) для ключа. Это необязательно, вы можете оставить строку пустой. Если вы решите задать кодовую фразу, обратите внимание, что ее потребуется вводить при каждой авторизации по ключу. 4. Далее сохраните созданные ключи, нажав на кнопки «Save public key» и «Save private key», например, под именами `id_rsa.pub` и `mykey.ppk`. 5. Также скопируйте и сохраните в любом текстовом файле содержимое окна «Public key for pasting…» — оно потребуется при копировании созданного ключа на сервер. На этом процедура создания ключей завершена. ### **Копирование ключа на сервер с помощью pageant** В процессе копирования ключей вам потребуется утилита `pageant`. Вы можете скачать дистрибутив pageant.exe с [официального сайта PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html). 1. Подключитесь к серверу по SSH и выполните команду для создания на сервере файла для хранения ключей: ```shell chmod 0700 ~/.ssh touch ~/.ssh/authorized_keys chmod 0644 ~/.ssh/authorized_keys ``` 2. Откройте созданный файл с помощью текстового редактора: ```shell nano ~/.ssh/authorized_keys ``` 3. Вставьте в него текст public key, ранее скопированный из окна PuTTYgen, и сохраните файл. 4. Запустите `pageant` — его иконка появится в трее. Щелкните по ней правой кнопкой мыши и выберите «Add Key». 5. В открывшемся окне укажите путь к приватному ключу `mykey.ppk`, сохраненному ранее, и нажмите «Open». Если при создании ключа вы указывали кодовую фразу, `pageant` запросит ее на данном этапе. 6. Для проверки работы авторизации по ключу снова запустите утилиту PuTTY, подключитесь к вашему серверу и введите свой логин. Если все настроено корректно, вы увидите подобный вывод в окне консоли: ```shell Authenticating with public key "rsa-key-20151220" from agent ``` ## Отключение доступа по паролю Для того, чтобы доступ к серверу мог осуществляться только по ключу, необходимо запретить авторизацию по паролю. Для этого требуется внести правки в файл `/etc/ssh/sshd_config`. 1. Откройте файл командой: ```shell sudo nano /etc/ssh/sshd_config ``` 2. Найдите в нем строку `PasswordAuthentication` и замените ее значение на: `PasswordAuthentication no`. 3. Сохраните изменения, после чего перезапустите службу SSH: ```shell sudo systemctl restart sshd ``` > [!NOTE] > Если после выполненных действий у вас по-прежнему запрашивается пароль, проверьте, нет ли в директории `/etc/ssh/sshd_config.d/` файла `50-cloud-init.conf` с директивой `PasswordAuthentication yes`. > > Если файл присутствует — удалите его, после чего перезапустите службу SSH. # Смена или сброс пароля root Source: https://timeweb.cloud/docs/unix-guides/root-password-reset В инструкции приводим несколько способов сброса или смены root-пароля. ## Средствами панели управления Проще всего сбросить пароль пользователя `root` [через панель управления](https://timeweb.cloud/docs/cloud-servers/manage-servers/root-password-reset), на вкладкe «Дашборд». Способ подойдет, даже если старый пароль утерян, так как вводить его не потребуется. ## При подключении по SSH ### **Если текущий пароль известен** Если вам известен текущий пароль пользователя `root`, но вы хотите изменить его на другой, выполните следующие шаги. 1. [Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) под пользователем `root` с текущим паролем. 2. Выполните команду: ```shell passwd ``` 3. Система дважды запросит новый пароль. Введите его. Готово, пароль изменен. Теперь вы можете авторизоваться под `root`, используя новый пароль. ### **Если текущий пароль неизвестен** Сбросить пароль пользователя `root` и установить новый вы можете, загрузив сервер с диска восстановления. Данный способ подходит любым ОС на базе Linux. 1. Загрузите систему [в режиме восстановления](https://timeweb.cloud/docs/cloud-servers/manage-servers/boot-mode). 2. Откройте консоль в панели управления. 3. Смонтируйте корневой раздел. Он может называться по-разному — `sda1` или `vda1`. Сначала попробуйте: ```shell mount -o rw /dev/sda1 /mnt ``` Если получите ошибку: ```shell mount: /mnt: fsconfig system call failed: /dev/sda1: Can't lookup blockdev. ``` Выполните: ```shell mount -o rw /dev/vda1 /mnt ``` После этого выполните команды: ```shell chroot /mnt /bin/bash passwd root ``` 3. На данном этапе система дважды запросит новый пароль `root`\-пользователя, введите его. При удачной смене пароля вы увидите уведомление об этом (например, `passwd: all authentication tokens updated successfully` или `password updated successfully`, в зависимости от операционной системы). 4. Нажмите сочетание клавиш **Ctrl** **+ D** для выхода из `chroot`. 5. Отмонтируйте диск командой: ```shell umount /mnt ``` 6. Для корректной перезагрузки перемонтируйте корневую файловую систему в режим read-only, используя корректное имя диска из шага 3: ```shell mount -o ro /dev/sda1 /mnt ``` 7. Перезагрузите сервер [в обычном режиме](https://timeweb.cloud/docs/cloud-servers/manage-servers/boot-mode). Теперь вы можете подключиться к серверу под пользователем `root` с новым паролем. # Смена пароля root для MySQL Source: https://timeweb.cloud/docs/unix-guides/mysql-root-password-reset В случае, если необходимо изменить пароль root-пользователя базы данных, в том числе при его утере, воспользуйтесь следующей инструкцией. ## Смена пароля, если текущий пароль утерян 1. Подключитесь к серверу [по SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. Остановите службу MySQL: ```shell /etc/init.d/mysql stop ``` 3. Отредактируйте файл `mysqld.cnf`, чтобы запустить службу без проверки прав доступа. Для этого: **3.1.** Откройте файл в редакторе: ```shell nano /etc/mysql/mysql.conf.d/mysqld.cnf ``` **3.2.** В секцию `[mysqld]` добавьте следующую строку: ```shell skip-grant-tables ``` Должно получиться примерно так: ![Mysqld](https://content.timeweb.com/assets/a9532fa4-464a-49f4-bcd8-f1efe1d346db?width=439&height=238) **3.3.** Сохраните изменения (в `nano` это выполняется комбинацией Ctrl O -> Enter -> Ctrl X, либо Ctrl X -> Y -> Enter). 4. Перезапустите mysql: ```shell service mysql restart ``` 5. Снова откройте файл `mysqld.cnf`: ```shell nano /etc/mysql/mysql.conf.d/mysqld.cnf ``` И **удалите** добавленную строку. Сохраните изменения. 6. Подключитесь к MySQL как root без пароля: ```shell mysql ``` 7. Выберите активную БД: ```shell use mysql; ``` MySQL 5 8. Обновите пароль: ```shell UPDATE user SET authentication_string = PASSWORD('ВАШ_НОВЫЙ_ПАРОЛЬ') WHERE User = 'root'; ``` 9. Примените изменения: ```shell FLUSH PRIVILEGES; ``` 10. Выйдите из mysql командой **\\q**. 11. Перезапустите службу в обычном режиме: ```shell /etc/init.d/mysql start ``` 12. Теперь проверьте, что пароль успешно изменен, подключившись под root с новым паролем. Для этого выполните: ```shell mysql -u root -p ``` После чего введите ваш новый пароль. MySQL 8 8. Перезагрузите таблицы привилегий: ```shell FLUSH PRIVILEGES; ``` 9. Обновите пароль: ```shell ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ваш_новый_пароль'; ``` 10. Примените изменения: ```shell FLUSH PRIVILEGES; ``` 11. Выйдите из mysql командой **\\q**. 12. Перезапустите службу в обычном режиме: ```shell /etc/init.d/mysql start ``` 13. Теперь проверьте, что пароль успешно изменен, подключившись под root с новым паролем. Для этого выполните: ```shell mysql -u root -p ``` После чего введите ваш новый пароль. ## Смена пароля, если текущий пароль известен или не был установлен ранее Если требуется изменить существующий root-пароль для MySQL либо установить его в случае, когда он не был задан в принципе (это актуально, например, при автоматической установке LAMP при создании сервера — root-пароль MySQL при этом не задается), это можно сделать следующим образом: 1. Подключитесь к серверу [по SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. Перейдите к управлению MySQL: Если пароль root не задан, используйте команду: ```shell mysql ``` Если пароль существует, используйте команду: ```shell mysql -u root -p ``` После чего введите текущий пароль. MySQL 5 3. Выполните запрос ниже, заменив «пароль» на нужное вам значение: ```shell SET PASSWORD FOR 'root'@'localhost' = PASSWORD('пароль'); ``` 4. Выйдите из консоли MySQL командой `\q`. 5. Проверьте изменения, подключившись с новым паролем. Выполните команду: ```shell mysql -u root -p ``` После чего введите ваш новый пароль. MySQL 8 3. Выполните запрос ниже, заменив «пароль» на нужное вам значение: ``` ALTER USER 'root'@'localhost' IDENTIFIED BY 'пароль'; ``` 4. Примените изменения: ```sql FLUSH PRIVILEGES; ``` 5. Выйдите из консоли MySQL командой `\q`. 6. Проверьте изменения, подключившись с новым паролем. Выполните команду: ```shell mysql -u root -p ``` После чего введите ваш новый пароль. # Добавление пользователей Source: https://timeweb.cloud/docs/unix-guides/adding-users Из соображений безопасности работа от пользователя root в системе Linux не рекомендуется. Оптимальным решением является создание дополнительного пользователя VDS с привилегиями `sudo`. Механизм `sudo` позволит пользователю при необходимости выполнять операции с правами администратора (`root`). По этой же инструкции создаются и обычные пользователи системы (без привилегий `sudo`) — достаточно выполнить первые три шага. ## Создание пользователя с привилегиями sudo 1\. Создайте нового пользователя (в примере — `username`) командой ниже: ```shell sudo adduser username ``` По умолчанию создаваемый пользователь будет добавлен в группу с таким же именем, а также для него будет создан домашний каталог. 2\. В **Ubuntu / Debian** далее будет запрошен пароль пользователя. Его будет необходимо ввести дважды. Помните, что символы пароля не отображаются в консоли Linux при вводе. ![Adduser1](https://content.timeweb.com/assets/a6fc6b5c-4baa-45d6-aded-ee0f94642684?width=492&height=128) В **CentOS** для установки пароля выполните команду: ```shell sudo passwd username ``` После введите пароль и повторите его. 3\. Далее в **Ubuntu / Debian** будет запрошен ввод дополнительной информации о пользователе (имя, номер телефона и пр.). Вы можете указать данные или нажимать Enter, чтобы оставить значения по умолчанию (т.е. пустые). После нажмите Y для подтверждения. ![Adduser2](https://content.timeweb.com/assets/c640b5e2-3bd8-4d7b-9994-7cf7f3de8d6d?width=413&height=129) В **CentOS**, если вы хотите указать дополнительную информацию, выполните команду: ```shell sudo chfn username ``` На этом этапе создание обычного пользователя (без привилегий `sudo`) завершено 4\. Теперь для того, чтобы предоставить пользователю `sudo`\-привилегии, его нужно добавить в группу `sudo`. Это делается следующими командами. В Ubuntu / Debian: ```shell sudo usermod -aG sudo username ``` В CentOS: ```shell sudo usermod -aG wheel username ``` 5\. Проверьте работу пользователя. Для этого переключитесь на сеанс работы от его имени: ```shell su - username ``` Система запросит пароль пользователя (при первом запуске `sudo`). Введите его, после чего попробуйте выполнить любую команду с привилегиями `sudo`. Например, можно просмотреть содержимое каталога `/root`, которое недоступно пользователю с обычными правами: ```shell sudo ls -la /root ``` Если содержимое каталога отобразится, значит, созданный пользователь работает корректно. ### **Если для root используется аутентификация по SSH-ключу** Если вы подключились под `root` без ввода пароля, значит используется аутентификация по SSH-ключу. Чтобы новый пользователь мог входить в систему, добавьте копию вашего открытого ключа в файл `~/.ssh/authorized_keys` этого пользователя. Поскольку ваш открытый ключ уже находится в файле `~/.ssh/authorized_keys` учетной записи root, можно скопировать этот файл в каталог нового пользователя с помощью команды `cp` и настроить права на файлы с помощью команды `chown`. Скопируем весь каталог в домашний каталог нового пользователя: ```shell cp -r ~/.ssh /home/username ``` Установим `username` владельцем этого каталога (также будет создана группа с тем же именем): ```shell chown -R username:username /home/username/.ssh ``` Теперь можно залогиниться на сервер под новым пользователем без использования пароля: ```shell ssh username@your_server_ip ``` Если нужно запустить команду с правами администратора, введите `sudo` перед ней: ```shell sudo команда ``` Вам будет предложено ввести пароль обычного пользователя при первом использовании `sudo` (и периодически после этого). 6\. Этот шаг не является обязательным, но для повышения безопасности можно отключить дистанционный доступ для суперпользователя `root`. В этом случае пользователям всегда будет необходимо подключаться под собственными учетными записями, что позволит отслеживать действия на сервере, видеть, кем были внесены те или иные изменения и т.д. Для отключения доступа root откройте файл `/etc/ssh/sshd_config`: ```shell sudo nano /etc/ssh/sshd_config ``` Найдите строку `PermitRootLogin` и замените ее текущее значение на: ```shell PermitRootLogin no ``` Выйдите из редактора с сохранением изменений (комбинация Ctrl X -> Y -> Enter). После выполненных действий перезапустите службу SSH командами ниже. В Ubuntu / Debian: ```shell sudo service ssh restart ``` В CentOS: ```shell sudo service sshd restart ``` ## Другие команды для управления пользователями Если вам необходимо добавить пользователя в другую группу, она должна быть предварительно создана: ```shell sudo groupadd имя_группы ``` В Ubuntu и Debian для создания группы также можно использовать команду: ```shell sudo addgroup имя_группы ``` После чего можно создать пользователя следующим образом: ```shell sudo useradd -g имя_группы username ``` Если пользователь уже существует, вы можете добавить его в нужную группу командой `usermod`: ```shell sudo usermod -G имя_группы username ``` Для того, чтобы изменить первичную группу пользователя, используется ключ `-g`: ```shell sudo usermod -g имя_группы username ``` Для смены домашнего каталога пользователя используется команда: ```shell sudo usermod -d путь/к/новому/каталогу username ``` Получить информацию о пользователе можно командой: ```shell id username ``` Вывод будет содержать примерно следующие сведения: ```shell uid=1000(username) gid=1000(username) groups=1000(username),27(sudo) ``` Сменить пароль можно командой: ```shell sudo passwd username ``` Просмотреть список всех созданных пользователей можно командой: ```shell cat /etc/passwd ``` Чтобы получить только список имен, без дополнительной информации, можно использовать: ```shell sed 's/:.*//' /etc/passwd ``` Вывести список пользователей, которые сейчас в системе, можно простой командой `w`. Удалить пользователя можно командой: ```shell sudo deluser username ``` Для удаления группы используется команда: ```shell sudo delgroup имя_группы ``` # Управление правами доступа Source: https://timeweb.cloud/docs/unix-guides/permissions-management Рассказываем, как настроить права доступа к файлам на сервере через SSH или с помощью FileZilla. ## Общая информация о правах доступа Система прав доступа в Linux позволяет разграничивать и гибко настраивать доступ пользователей к файлам и каталогам, повышая тем самым безопасность системы. Полные права ко всему имеет только суперпользователь root (именно поэтому работать от root может быть небезопасно); остальные пользователи по умолчанию имеют доступ только к своему домашнему каталогу, а значит не могут выполнить каких-либо нежелательных изменений в системных файлах. Права доступа включают в себя право на **чтение** (**r**), **запись** (**w**) и **исполнение** (**x**). Права назначаются как файлам, так и каталогам, и дают пользователям с этими правами следующие возможности: | **Права** | **Для файлов** | **Для каталогов** | | --- | --- | --- | | r, чтение | Просмотр содержимого | Просмотр содержимого, то есть списка объектов в каталоге (например, командами cat, ls) | | w, запись | Изменение содержимого | Изменение содержимого каталога, то есть можно добавлять и удалять файлы (даже принадлежащие другим пользователям), переименовывать их | | x, исполнение | Запуск файла на исполнение | Вход в каталог (например, командой сd), просмотр атрибутов файлов, находящихся в каталоге | Существует **три категории пользователей** для каждого файла: - **Владелец** файла — пользователь, который создал файл (или который сейчас [указан](https://timeweb.cloud/docs/unix-guides/permissions-management#izmenenie-vladelca-ili-gruppy-fajla) в качестве владельца). По умолчанию владелец имеет полные права. - **Группа** — созданная в системе группа пользователей, которой выдан определенный набор прав к файлу. Может состоять из одного пользователя (владельца) или из нескольких. Если группа состоит из нескольких пользователей, то все они имеют права к файлу, выданные группе. - **Остальные** — все прочие пользователи, которые не являются владельцем файла и не входят в группу, назначенную для файла. Для каждой категории может быть установлен свой набор прав к конкретному файлу. Права могут обозначаться двумя способами: буквами или цифрами: | **Цифровая запись** | **Буквенная запись** | **Права** | | --- | --- | --- | | 0 | \--- | Отсутствие прав | | 1 | \--x | Исполнение | | 2 | \-w- | Запись | | 3 | \-wx | Запись и исполнение | | 4 | r-- | Чтение | | 5 | r-x | Чтение и исполнение | | 6 | rw- | Чтение и запись | | 7 | rwx | Чтение, запись и исполнение | Права записываются последовательно: сначала для владельца, затем для группы, затем для остальных пользователей. Например, запись 755 (или rwx r-x r-x) означает, что владельцу даны права на чтение, запись и исполнение (7 / rwx), всем остальным — на чтение и исполнение (5 / r-x). Примеры наиболее распространенных комбинаций для прав доступа: | **Цифры** | **Буквы** | **Права** | | --- | --- | --- | | 600 | rw------ | Владелец может просматривать и изменять содержимое, у остальных нет доступа к объекту | | 644 | rw-r--r-- | Владелец может просматривать и изменять содержимое, остальные могут только просматривать | | 700 | rwx-- -- | Владелец может просматривать, изменять содержимое, запускать исполнение объекта, у остальных нет доступа к объекту | | 755 | rwxr-xr-x | У владельца полный набор прав, остальным доступны просмотр и исполнение | Предоставляя доступ к каталогам, необходимо учитывать, что для полноценной работы с ними нужны, как минимум, права на чтение и исполнение (5 / r-x). Право на чтение (4 / r) будет означать только возможность просмотра имен файлов, без их атрибутов (размер, владелец и пр.). ## Просмотр установленных прав Просмотреть назначенные права для файлов в текущем каталоге можно командой `ls -l`. Права для файлов в выводе будут отмечены флагом `-`, для директории — флагом `d` в начале строки, например: ```shell username@server:~/new_directory$ ls -l total 4 drwx------ 2 username customers 4096 Mar 10 14:39 dir1 -rw-r--r-- 1 username customers 128 Mar 10 14:39 test.php ``` Параметры в выводе: ```shell Права Владелец Группа Размер файла Последнее изменение Имя файла rw-r--r-- username customers 0 Mar 10 14:39 test.php ``` Если нужно просмотреть права только на конкретный файл или каталог в текущей директории, необходимо указать его имя. Например: ```shell ls -l test.php ls -l dir5 ``` Чтобы просмотреть права на файлы во всех вложенных подкаталогах в текущей директории, можно использовать флаг `-R`: ```shell ls -Rl ``` Либо можно указать имя директории, права на файлы и подкаталоги в которой нужно просмотреть: ```shell ls -Rl dir1 ``` ## Настройка прав доступа Изменять права доступа для файла может только его владелец или администратор системы (т.е. root или пользователь с привилегиями sudo). Настройку прав доступа можно выполнять: - при SSH-подключении; - через FTP-клиент. ### **По SSH** Настраивать права доступа можно командой `chmod`. Существует два способа ее использования. **Способ 1**, наиболее простой. При каждом изменении прав указывается весь набор прав для всех категорий пользователей. Права указываются в числовом формате. Синтаксис команды: ```shell chmod xxx имя_файла ``` Например, следующей командой можно установить для файла `test.php` права 755, т.е. полные права для владельца, права на чтение и исполнение для всех остальных. ```shell chmod 755 test.php ``` Чтобы установить права 644 файлу `test.php`, необходимо выполнить: ```shell chmod 644 test.php ``` Установить права 755 на каталог `dir`: ```shell chmod 755 dir ``` В отдельных случаях может быть полезна опция `-R`, она позволяет назначать права рекурсивно. Будьте внимательны при ее использовании, так как она изменит права доступа для всех файлов во всех подкаталогах в текущем каталоге. Указать права 755 всем объектам в текущем каталоге (включая подкаталоги): ```shell chmod -R 755 * ``` **Способ 2** позволяет указывать только конкретное изменение в правах для конкретной категории пользователей. Используется символьная запись прав. Синтаксис команды: ```shell chmod Категория Действие Права имя_файла ``` **Категории пользователей** имеют следующие обозначения: - **u** — владелец (от user) - **g** — группа (от group) - **o** — остальные (от other) - **a** — все категории (от all) **Действия с правами** включают в себя: - **+** — добавить указанные права - **\-** — удалить указанные права - **\=** — заменить права на указанные **Права** указываются как **r**, **w** и **x**. При указании комбинаций (например, чтение и исполнение) здесь не нужно использовать дефис, т.е. указываем **rx**, а не r-x. Например, следующей командой можно добавить права на чтение и исполнение для группы. Другие ранее установленные права никак не изменяются. ```shell chmod g+rx test.php ``` Удалить для группы права на запись в файл `test.php`: ```shell chmod g-w test.php ``` Удалить права на чтение и запись для остальных пользователей: ```shell chmod o-rw test.php ``` Дать группе и остальным пользователям доступ к каталогу `dir1` (права на чтение и исполнение): ```shell chmod go+rx dir1 ``` Дать группе и остальным пользователям право на чтение всех файлов и каталогов в директории `new_directory` (используется ключ `-R`): ```shell chmod -R go+r new_directory ``` ### **По FTP/SFTP (FileZilla)** Задавать и изменять права в FTP-клиенте очень просто. 1. Подключитесь к серверу с помощью FileZilla. 2. Найдите нужный файл или каталог. 3. Кликните по нему правой кнопкой мыши и выберите «Права доступа к файлу». 4. Задайте нужные права. При редактировании прав на каталог также есть возможность применить настройки к вложенным каталогам. 5. Сохраните изменения. ![Rwxfz2](https://content.timeweb.com/assets/13debfd4-d78c-4df6-ba9b-e7fbf0cd355c?width=345&height=489) _Настройка атрибутов файла в интерфейсе в [FileZilla](https://filezilla-project.org)_ ## Изменение владельца или группы файла Чтобы изменить для файла или каталога группу или владельца, используется команда `chown`. Синтаксис команды: ```shell chown владелец:группа имя_файла ``` Например, чтобы установить `user1` владельцем файла `test.php`, необходимо выполнить: ```shell chown user1 test.php ``` Если одновременно надо изменить группу на `customers`, используем: ```shell chown user1:customers test.php ``` Чтобы изменить только группу: ```shell chown :customers test.php ``` # Изменение стандартного порта SSH Source: https://timeweb.cloud/docs/unix-guides/changing-default-ssh-port Изменение порта SSH помогает усилить защиту вашего сервера, усложняя обнаружение SSH-службы для потенциальных злоумышленников. Рассмотрим, как заменить стандартный порт (`22`) для SSH на другой. ## Проверка доступности нового порта Перед тем как изменить порт, убедитесь, что выбранный вами порт не занят другими сервисами. Для проверки выполните следующую команду: ```shell ss -tnlp | grep '<порт>' ``` Если порт свободен, команда не выдаст никаких результатов. Это означает, что порт можно использовать для SSH-подключений. ## Изменение конфигурации SSH Для изменения порта SSH откройте конфигурационный файл: ```shell sudo nano /etc/ssh/sshd_config ``` Найдите строку: ```shell #Port 22 ``` Удалите символ `#` в начале строки, чтобы раскомментировать ее, и замените номер порта `22` на желаемый порт. ## Перезапуск службы SSH После изменения конфигурации нужно перезапустить службу SSH, чтобы изменения вступили в силу. Выполните одну из команд: Для **Debian-based-**дистрибутивов: ```shell sudo systemctl restart ssh ``` Для **Ubuntu 24.04**: ```shell sudo systemctl daemon-reload sudo systemctl restart ssh.socket ``` Для **CentOS** и подобных дистрибутивов: ```shell sudo systemctl restart sshd ``` ## Проверка успешного применения изменений Для проверки, что SSH теперь прослушивает новый порт, выполните следующую команду: ```shell ss -tnlp | grep '<порт>' ``` Если конфигурация выполнена верно, вы увидите, что служба SSH теперь работает на указанном вами порту. ## Обновление правил файрвола Если на сервере используется файрвол, например, UFW, необходимо разрешить новый порт для SSH. Выполните следующую команду для открытия нового порта: ```shell sudo ufw allow <порт>/tcp ``` Замените `<порт>` на номер порта, который вы указали в конфигурации SSH. После этого не забудьте перезагрузить UFW для применения изменений: ```shell sudo ufw reload ``` ## Подключение с новым портом Теперь, при подключении к серверу необходимо явно указать новый порт. Используйте следующую команду: ```shell ssh -p <порт> username@ip_address ``` Где `<порт>` — это номер нового порта, который вы указали в конфигурации, `username` — имя пользователя, а `ip_address` — IP-адрес вашего сервера. # Защита SSH от подбора пароля. Fail2ban Source: https://timeweb.cloud/docs/unix-guides/block-ssh-brute-force-attacks-fail2ban Для защиты вашего сервера от брутфорс-атак (взломов путем перебора паролей) лучше всего настроить и использовать [авторизацию по ключу](https://timeweb.cloud/docs/unix-guides/ssh-key-authentication) вместо авторизации по паролю. Другим способом защиты может быть использование утилиты **Fail2ban**. Fail2ban анализирует логи служб, работающих на сервере, и при обнаружении подозрительной активности блокирует IP-адреса возможных злоумышленников. Fail2ban может использоваться для защиты Apache, FTP, dovecot и многих других сервисов. В рамках этой статьи мы рассмотрим базовую настройку Fail2ban для защиты службы SSH от подбора пароля. Для установки Fail2ban на Ubuntu/Debian выполните: ```shell sudo apt update ``` ```shell sudo apt install fail2ban -y ``` Если у вас не установлен файрвол, установите `iptables`: ```shell sudo apt install iptables ``` Для установки на CentOS: ```shell sudo yum update && yum install epel-release ``` ```shell sudo yum install fail2ban ``` Если у вас не установлен файрвол, установите `iptables`: ```shell sudo yum install iptables-services ``` Добавьте Fail2ban в автозагрузку: ```shell sudo systemctl enable fail2ban ``` На Ubuntu защита для SSH начнет работать сразу после установки. По умолчанию Fail2ban будет на 10 минут блокировать IP-адреса, с которых в течение 10 минут было выполнено 5 неудачных попыток авторизации. Эти и другие параметры работы утилиты можно изменить в ее настройках. ## Конфигурационный файл Fail2ban Настройки Fail2ban хранятся в конфигурационном файле `/etc/fail2ban/jail.conf`. Настройки разделены по секциям. В `[DEFAULT]` указываются общие параметры, которые определяют работу Fail2ban в целом и применяются для большинства служб. Специфические настройки для той или иной службы прописываются внутри соответствующей секции (например, `[sshd]`, `[apache-auth]`, `[vsftpd]`). Менять какие-либо параметры напрямую в файле `jail.conf` не рекомендуется. Вместо этого необходимо создать новый файл `jail.local`, разместив его в той же директории: ```shell sudo touch /etc/fail2ban/jail.local ``` В новом файле будет достаточно указать только те настройки, значения которых вы хотите изменить: для всех параметров, которые вы не пропишете отдельно, Fail2ban будет применять значения по умолчанию. ## Настройка защиты SSH Откройте файл `jail.local` для редактирования: ```shell sudo nano /etc/fail2ban/jail.local ``` Пример настроек, которые можно добавить в файл: ```shell [DEFAULT] ignoreip = 95.111.123.21 [sshd] enabled = true findtime = 120 maxretry = 3 bantime = 43200 ``` Такая настройка означает, что если с какого-либо IP-адреса, за исключением указанного в `ignoreip`, в течение 2 минут будут выполнены 3 неудачные попытки авторизоваться, Fail2ban заблокирует этот адрес на 12 часов. В секции `DEFAULT` могут быть указаны такие параметры, как период блокировки (`bantime`), количество попыток (`maxretry`) и пр., но в рамках данной инструкции мы пропишем большинство настроек в отдельной секции для SSH, а в раздел `DEFAULT` включим только параметр `ignoreip`: - `ignoreip` — это «белый список» IP-адресов, то есть те адреса, которые не будут заблокированы при неудачных попытках подключения. Здесь можно прописать ваш собственный IP (если он статический, а не динамический), с которого вы подключаетесь к серверу. Можно указать несколько адресов через пробел или маску подсети. Если вам не требуется белый список, строку можно просто закомментировать, указав перед ней `#`. В секции `[sshd]` указываются настройки для работы Fail2ban с конкретной службой — SSH. В зависимости от системы, секция может называться `[sshd]`, `[ssh]` или `[ssh-iptables]` (можно проверить в файле `jail.conf`). Как упоминалось выше, при отсутствии того или иного параметра в этом файле, Fail2ban будет использовать значения по умолчанию. Соответственно, указать требуется только те настройки, значения которых нужно изменить. Здесь мы прописали параметры: - `enabled` — обязательный параметр, определяющий включение или отключение секции. Для включения должно быть установлено значение true, оно указано по умолчанию. Обратите внимание, что в CentOS этот параметр по умолчанию закомментирован. Если вы работаете с копией основного файла `jail.conf`, не забудьте раскомментировать эту строку (убрать `#`), чтобы активировать секцию; - `bantime` — продолжительность бана в секундах, то есть период, на который подозрительный IP-адрес будет заблокирован; - `maxretry` — количество неудачных попыток в течение периода `findtime`, после которых будет выполнена блокировка; - `findtime` — период в секундах, в течение которого действие (в данном случае — неудачная попытка подключения) должно повториться определенное количество раз (`maxretry`), после чего будет выполнена блокировка. Дополнительно могут быть настроены и другие параметры, например: - `port` — порт, используемый службой, в данном случае SSH. Если SSH у вас работает на нестандартном порту (то есть не 22), пропишите его здесь. Если порт стандартный, указывать эту настройку необязательно. - `logpath` — путь к файлу лога, который анализирует Fail2ban. По умолчанию это стандартный путь к логу `sshd`. - `action` — выполняемое действие при блокировке IP. По умолчанию выполняется блок подозрительного IP путем изменения правил `iptables`. Чтобы заблокировать все порты для этого IP, можно использовать: `action = iptables-allports`. Если на сервере настроен `firewalld` или `ufw`, то для фильтрации с их помощью нужно указать соответствующее значение для `action:` `firewallcmd-ipset` и `ufw`, соответственно. Полный список действий доступен в `/etc/fail2ban/action.d`. После сохранения изменений перезапустите Fail2ban: ```shell sudo systemctl restart fail2ban.service ``` ## Проверка После настройки Fail2ban имеет смысл проверить его работу. Лучше делать это не сразу, а спустя пару часов после сохранения настроек, тогда результат будет более наглядным. Просмотреть заблокированные IP-адреса можно в `iptables`: ```shell sudo iptables -L ``` ![Ipt](https://content.timeweb.com/assets/1a364790-7564-4e2a-ab28-39223309eb57?width=774&height=302) Также, можно вывести логи работы Fail2ban: ```shell sudo tail /var/log/fail2ban.log ``` ![Fb Log](https://content.timeweb.com/assets/145f66fa-6960-432e-b356-321d9c5da7f2?width=931&height=176) Информацию можно получить и из интерфейса Fail2ban: ```shell sudo fail2ban-client status sshd ``` ![Fb Status](https://content.timeweb.com/assets/a54dcccf-e07e-4944-9f2c-baafb7931613?width=1025&height=161) # Настройка подключения через SSH в VSCode Source: https://timeweb.cloud/docs/unix-guides/configuring-ssh-connection-in-vscode Remote SSH — это мощная функция в Visual Studio Code, позволяющая работать с удаленными серверами так, как будто они находятся на вашем локальном компьютере. Эта возможность полезна для разработки и отладки кода на сервере, поскольку она предоставляет доступ к файловой системе и инструментам разработки без необходимости копировать файлы локально. ## Предварительная подготовка Для работы с Remote SSH в VSCode необходимо сгенерировать SSH-ключи и добавить их на сервер, к которому будет выполняться подключение. Вы можете создать SSH-ключи, следуя [этой инструкции](https://timeweb.cloud/docs/unix-guides/ssh-key-authentication). Затем добавьте ключи на сервер с помощью [этой инструкции](https://timeweb.cloud/docs/cloud-servers/manage-servers/ssh-keys). ## Установка расширения Первым шагом для подключения через SSH является установка расширения «Remote - SSH». Для этого выполните следующие действия: 1. Откройте VSCode и перейдите в раздел расширений, нажав на значок в левой боковой панели или используя сочетание клавиш `Ctrl+Shift+X`. 2. Введите в поиске «Remote - SSH» и установите расширение от Microsoft. ![Screenshot 12 03 24 12:12:46](https://content.timeweb.com/assets/d9b64fd8-8e67-4bc8-b877-b49b20ef2fec.png?width=1373&height=718) _Расширение «Remote - SSH» в интерфейсе [VS Code](https://code.visualstudio.com/)_ ## Настройка подключения к удаленному серверу После установки расширения, перейдем к настройке подключения. 1. Нажмите на иконку «Open a Remote Window» в левом нижнем углу. 2. В открывшемся меню выберите пункт «Connect to Host». ![Selection 121](https://content.timeweb.com/assets/1f171702-c0bd-4a0a-8314-40e202abfa49.png?width=1382&height=723) _Опция «Connect to Host...» в интерфейсе [VS Code](https://code.visualstudio.com/)_ 3. Нажмите на «Add New SSH Host» и введите команду для подключения к SSH, вида: ```shell ssh user@ip ``` Если вы используете нестандартный порт, укажите его так же, как при обычном подключении по SSH: ```shell ssh user@ip -p <порт> ``` 4. Выберите путь к конфигурации SSH. Обычно это файл `/home/user/.ssh/config`. 5. По завершении настройки повторно нажмите на «Open a Remote Window» → «Connect to Host». Теперь в списке доступных подключений будет виден добавленный сервер. Для подключения просто нажмите на него. Чтобы изменить параметры хоста, нажмите на «Configure SSH Hosts», и откроется файл конфигурации. Пример конфигурации: ```shell Host 185.178.45.58 HostName 185.178.45.58 User root Port 2299 IdentityFile ~/.ssh/id_rsa ``` - `Host` — имя, отображаемое в списке SSH-хостов. - `HostName` — IP-адрес сервера. - `User` — имя пользователя для подключения. - `Port` — необязательный параметр, используемый, если для подключения используется нестандартный порт (не 22). - `IdentityFile` — необязательный параметр, используемый, если SSH-ключ расположен не по пути `~/.ssh/id_rsa`. ## Работа с удаленной средой При первом подключении на сервере будет установлен VSCode Server. После успешного подключения вы получите доступ к удаленной файловой системе и сможете работать с файлами так же, как с локальными. VSCode автоматически установит на сервер необходимые компоненты для интеграции с инструментами, установленными на удаленной машине. Вы можете устанавливать расширения, как обычно, и они будут установлены на удаленном сервере, обеспечивая полноценную работу с редактором. Все изменения, которые вы вносите в файлы, сразу сохраняются на удаленной машине, что делает процесс разработки удобным и бесшовным. # Создание дампа базы и восстановление данных Source: https://timeweb.cloud/docs/unix-guides/database-dump-and-restore Для создания дампа (резервной копии базы данных) и восстановления данных вы можете воспользоваться phpMyAdmin либо консольными командами при [подключении по SSH](https://timeweb.cloud/docs/unix-guides/ssh). ## Создание дампа базы через PMA Экспортирование базы данных — это создание резервной копии базы данных и ее загрузка на локальный компьютер. Чтобы осуществить быстрый экспорт базы данных, выполните следующее: 1. В области слева выберите необходимую базу данных (должен раскрыться список таблиц базы данных). 2. Перейдите на вкладку «Экспорт» в меню PMA. 3. Нажмите кнопку «Вперед», и файл дампа базы данных сохранится на локальный компьютер. ![179](https://content.timeweb.com/assets/e76f2cc3-752f-4f99-afba-03cdc646c57d?width=617&height=356) _Опция «Экспорт» в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ ### Экспорт отдельных таблиц Если требуется выполнить экспорт только отдельных таблиц, войдите в phpMyAdmin и выполните следующее. 1. В области слева выберите необходимую базу данных (должен раскрыться список таблиц базы данных). 2. Отметьте галочками нужные таблицы для экспорта. 3. Внизу страницы в выпадающем списке «С отмеченными:» выберите пункт «Экспорт». 4. На следующей странице убедитесь, что выбран формат SQL, и нажмите на кнопку «Вперед». Дамп будет сохранен на ваш компьютер. ## Создание дампа базы через консоль Подключитесь к серверу по SSH и выполните команду, указав корректные данные: ```shell mysqldump -u'имя_пользователя' база_данных -p'пароль_базы_данных' > имя_дампа.sql ``` ## Восстановление данных через PMA Импортирование базы данных — это загрузка сохраненной на локальном компьютере базы данных на сервер. Чтобы осуществить импорт базы данных, необходимо выполнить следующие действия: 1. В области слева выберите необходимую базу данных (должен раскрыться список таблиц базы данных). 2. Перейдите на закладку «Импорт» в меню PMA. 3. Загрузите импортируемый файл (дамп базы данных), нажав на кнопку «Выберите файл» и указав файл на локальном компьютере. 4. Выберите кодировку, формат и проверьте другие настройки импорта (можно оставить по умолчанию). 5. Нажмите кнопку «Вперед», и дамп будет импортирован в базу данных. ![180](https://content.timeweb.com/assets/5983ad5a-d382-42be-879a-4ef5d16b4a84?width=746&height=626) _Опция «Импорт» в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ При загрузке дампов баз данных размером более 1 ГБ могут наблюдаться проблемы. В случае, если ваш дамп имеет больший размер, вы можете выполнить импорт через командную строку с помощью подключения по SSH. ## Восстановление данных через консоль Импортировать дамп в созданную базу данных можно с помощью команды: ```shell mysql -u'имя_пользователя' база_данных -p'пароль_базы_данных' < имя_дампа.sql ``` # Установка LAMP на Ubuntu Source: https://timeweb.cloud/docs/unix-guides/installing-lamp-on-ubuntu LAMP — набор программного обеспечения (Linux, Apache, MySQL, PHP) с открытым исходным кодом, который обычно устанавливается на сервер для отображения динамических веб-сайтов и веб-приложений. В статье описан процесс установки LAMP на сервер с операционной системой Ubuntu 24.04. > [!NOTE] > LAMP также можно установить автоматически: при [создании нового сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/create-server) или [переустановке ОС](https://timeweb.cloud/docs/cloud-servers/manage-servers/os-reinstall). ## Установка Apache Для установки веб-сервера выполните команды ниже: ```shell sudo apt update sudo apt install apache2 ``` Далее добавьте Apache в автозагрузку: ```shell sudo systemctl enable apache2 ``` И запустите веб-сервер: ```shell sudo systemctl start apache2 ``` Чтобы проверить, что все работает корректно, введите в адресной строке браузера IP-адрес вашего сервера. Если установка прошла успешно, вы увидите стандартное приветственное окно Apache: ![Apache](https://content.timeweb.com/assets/bc117f53-357c-464c-b43d-7b16a040cf5b?width=599&height=507) _Стандартное приветственное окно веб-сервера [Apache](https://httpd.apache.org/)_ ### **Настройка виртуальных хостов** Важной особенностью Apache является возможность создания виртуальных хостов, настраиваемых независимо друг от друга, что позволяет размещать на VDS-сервере сразу несколько сайтов. За конфигурацию каждого сайта будет отвечать конкретный виртуальный хост. Даже если на начальном этапе вы планируете размещать только один сайт на сервере, мы рекомендуем в любом случае использовать виртуальные хосты. Это обеспечит вам удобство администрирования и обслуживания вашего проекта, а в дальнейшем и легкость расширения при необходимости. Перед настройкой виртуального хоста добавьте домен сайта в раздел «[Домены и SSL](https://timeweb.cloud/my/domains)». Вы можете [перенести существующий домен](https://timeweb.cloud/docs/domains/domain-technical-transfer), [зарегистрировать новый](https://timeweb.cloud/docs/domains/registration-and-renewal) или воспользоваться бесплатным техническим доменом, чтобы протестировать работу сайта на сервере. По ссылкам вы найдете необходимые инструкции для данных процедур. Создайте директорию сайта (в примере используется `site1`, укажите вместо него удобное вам имя сайта / директории): ```shell sudo mkdir /var/www/site1 sudo mkdir /var/www/site1/public_html ``` Установите права доступа: ```shell sudo chmod -R 755 /var/www/site1 ``` По умолчанию Apache содержит стандартный файл конфигурации `000-default.conf`, который хранится в директории `/etc/apache2/sites-available`. Файлы новых виртуальных хостов будут храниться здесь же. Сначала отключите стандартный файл конфигурации командой: ```shell sudo a2dissite 000-default ``` После чего создайте конфигурационный файл нового хоста: ```shell sudo nano /etc/apache2/sites-available/site1.conf ``` Приведите его содержимое к следующему виду: ```bash ServerName site1.com ServerAlias www.site1.com ServerAdmin admin@localhost DocumentRoot /var/www/site1/public_html AllowOverride All Require all granted ErrorLog /var/www/site1/error.log CustomLog /var/www/site1/access.log combined ``` Сохраните файл. Поясним приведенные выше параметры. - Блок `` включает в себя набор директив, задающих настройки для конкретного виртуального хоста. - `ServerName` — имя созданного хоста, полное доменное имя вашего сайта. - `ServerAlias` — альтернативное имя, по которому сайт тоже должен быть доступен. - `ServerAdmin` — e-mail администратора сервера. - `DocumentRoot` — путь до корневой директории, в которой хранятся файлы сайта `site1`. - Блок `` задает настройки, которые будут применены для конкретной папки (`/var/www/site1/public_html`). В данном случае это: `AllowOverride All` — разрешение допускать настройки, заданные в `.htaccess`; и `Require all granted` — доступ к каталогу разрешен всем. - `ErrorLog` — расположение файла с логами ошибок (по умолчанию логи размещаются в директории `/var/log/apache2/error.log`, доступ к которой имеет только root-пользователь; поэтому для удобства обращения к логам можно задать для них другой путь). - `CustomLog` — расположение файла с логами доступа. Этого набора директив достаточно для функционирования виртуального хоста, хотя список не является исчерпывающим. Со списком всех возможных директив и их описанием можно ознакомиться на сайте [Apache](https://httpd.apache.org/docs/2.4/mod/core.html). Далее включите сайт следующей командой: ```shell sudo a2ensite site1.conf ``` И перезапустите Apache: ```shell sudo systemctl reload apache2 ``` На этом этапе настройка виртуального хоста завершена. Для того, чтобы проверить корректность его работы, создайте индексный файл сайта: ```shell nano /var/www/site1/public_html/index.html ``` Внесите в него любой HTML-код для проверки и сохраните документ. Например: ```html Удалось!

Виртуальный хост работает!

``` Теперь введите в браузере адрес сайта, для которого вы настраивали виртуальный хост. Если все настройки были выполнены корректно, на экране будет выведено содержимое созданного выше индексного файла. ## Установка MySQL Следующий этап — установка СУБД, то есть системы управления базами данных. Для установки MySQL выполните команду: ```bash sudo apt install mysql-server ``` После установки служба будет запущена автоматически. Для подключения к СУБД выполните команду: ```bash sudo mysql ``` При таком способе входа пароль не требуется. Чтобы выйти из консоли MySQL, выполните команду: ```shell \q ``` Чтобы выполнить базовую настройку безопасности, используйте команду: ```bash sudo mysql_secure_installation ``` Далее последовательно ответьте на запросы системы: - `Would you like to setup VALIDATE PASSWORD component` — при необходимости включите проверку сложности паролей (нажмите `y`) или пропустите этот шаг. - `Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG` — выберите уровень сложности паролей. - `Remove anonymous users` — нажмите `y`, чтобы удалить анонимных пользователей. - `Disallow root login remotely` — введите `y`, чтобы запретить удаленный доступ для `root`. - `Remove test database and access to it` — введите `y`, чтобы удалить тестовую базу. - `Reload privilege tables now` — введите `y`, чтобы применить изменения. Для подключения к MySQL используйте команду: ```bash sudo mysql ``` Если для пользователя `root` настроен вход по паролю, подключение можно выполнить командой: ```bash mysql -u root -p ``` Для удобства работы с базами данных вы также можете установить phpMyAdmin [по нашей инструкции](https://timeweb.cloud/docs/unix-guides/installing-pma-on-ubuntu-with-lamp). ## Установка PHP Установить PHP c несколькими основными модулями можно командой ниже: ```shell sudo apt install php libapache2-mod-php php-mysql ``` Можно добавить необходимые модули в команду выше или установить их по отдельности, также командой `apt install имя_модуля`. Получить дополнительную информацию по каждому модулю можно с помощью команды: ```shell sudo apt show имя_модуля ``` После того, как необходимые модули будут установлены, проверьте работу PHP. Для этого создайте php-файл в директории сайта: ```shell nano /var/www/site1/public_html/test.php ``` Внесите в него следующее содержимое и сохраните файл: ```shell ``` Теперь перейдите по адресу `http://IP-адрес-сервера/test.php` (либо `http://вашдомен/test.php`) — если все в порядке, будет отображена страница с параметрами PHP. ![Scr 20260413 Lvfk](https://content.timeweb.com/assets/629cb36b-4aae-4a51-99b6-6e72b1eef5ca.png?width=2138&height=1668) _Страница с параметрами [PHP](https://www.php.net/)_ При необходимости тестовый файл можно удалить командой ниже: ```shell rm /var/www/site1/public_html/test.php ``` На этом установка LAMP на ваш сервер завершена. # Установка phpMyAdmin на Ubuntu с LAMP Source: https://timeweb.cloud/docs/unix-guides/installing-pma-on-ubuntu-with-lamp Для удобства работы с базами данных можно установить на сервер phpMyAdmin. В статье описан процесс установки PMA на сервер с ОС Ubuntu с уже установленным [LAMP](https://timeweb.cloud/docs/unix-guides/installing-lamp-on-ubuntu). 1\. Выполните команду: ```shell sudo apt install phpmyadmin ``` 2\. В процессе установки потребуется ответить на запросы системы: - Нажмите пробел, чтобы выбрать `apache2` (после чего он будет отмечен звездочкой), и нажмите Enter: ![PHP](https://content.timeweb.com/assets/d86186f4-4214-4a5f-84ef-6ab16165c4ad?width=732&height=438) _Окно выбора веб-сервера при настройке PMA в интерфейсе [Ubuntu](https://ubuntu.com/)_ - Нажмите Enter, чтобы выбрать `Yes`: ![Pma2](https://content.timeweb.com/assets/75e290c8-4f2d-41ba-a139-8e3d8a9fa3e4?width=732&height=438) _Подтверждение автоматической конфигурации PMA в интерфейсе [Ubuntu](https://ubuntu.com/)_ - Задайте пароль для регистрации PMA на сервере баз данных и нажмите Enter; после повторите ввод пароля: ![Pma3](https://content.timeweb.com/assets/6eb6dea9-cc71-4711-8355-519577dc86aa?width=732&height=438) _Окно указания пароля при настройке PMA в интерфейсе [Ubuntu](https://ubuntu.com/)_ 3\. После того, как установка будет завершена, включите модуль PHP `mbstring` командой: ```shell sudo phpenmod mbstring ``` 4\. Перезапустите веб-сервер: ```shell sudo systemctl restart apache2 ``` Вход в PMA осуществляется по адресу `http://IP-адрес-сервера/phpmyadmin` с логином root и паролем root-пользователя MySQL. **Обратите внимание!** При автоматической установке LAMP вместе с сервером пароль root-пользователя MySQL не задается, поэтому если вы не устанавливали его дополнительно, это необходимо сделать сейчас. Для этого перейдите к управлению MySQL: ```shell mysql ``` И выполните запрос ниже, заменив «пароль» на нужное вам значение: ```shell ALTER USER 'root'@'localhost' IDENTIFIED BY 'пароль'; ``` Для выхода из консоли MySQL введите `\q`. Далее вы сможете войти в phpMyAdmin по адресу `http://IP-адрес-сервера/phpmyadmin` с логином root и только что заданным паролем. # Установка SSL-сертификата на Nginx Source: https://timeweb.cloud/docs/unix-guides/ustanovka-ssl-na-nginx Рассмотрим, как установить SSL-сертификат от Let's Encrypt для веб-сервера Nginx на операционных системах Ubuntu и CentOS. ## **Выпуск и установка Let's Encrypt** ### **Установка Certbot** Для выпуска сертификата воспользуемся утилитой Certbot. Ubuntu Установим Certbot и плагин для Nginx: ```shell sudo apt install certbot python3-certbot-nginx ``` CentOS Для установки Certbot на CentOS требуется включить репозиторий EPEL (Extra Packages for Enterprise Linux), который содержит дополнительные пакеты, не входящие в стандартные репозитории CentOS. Репозиторий EPEL добавляется с помощью пакета `epel-release`, который можно установить так: ```shell sudo dnf install epel-release ``` После этого, установим Certbot и плагин для Nginx: ```shell sudo dnf install certbot python3-certbot-nginx ``` Теперь Certbot готов к использованию для выпуска и настройки SSL-сертификата. ### Проверка конфигурации Nginx Certbot настроит сертификат для виртуального хоста, ориентируясь на домен, указанный в директиве `server_name`. Убедитесь, что в конфигурации Nginx указан правильный домен вашего сайта. Для этого откройте файл конфигурации: Ubuntu ```shell sudo nano /etc/nginx/sites-available/имя_сайта ``` CentOS ```shell sudo vi /etc/nginx/conf.d/имя_сайта ``` Проверьте, что в директиве `server_name` указан правильный домен. Если нужно внести изменения, сделайте это, а затем сохраните файл. После этого, проверьте конфигурацию Nginx на наличие ошибок: ```shell sudo nginx -t ``` Если вы вносили изменения в конфигурацию, перезапустите веб-сервер: ```shell sudo systemctl reload nginx ``` ### Получение SSL Запустите Certbot с плагином Nginx, чтобы получить и настроить SSL-сертификат: ```shell sudo certbot --nginx -d example.com -d www.example.com ``` Где `example.com` и `www.example.com` — это домены, которые должны быть указаны в конфигурации Nginx. При первом запуске Certbot запросит ваш контактный email, а также предложит принять условия лицензионного соглашения. После успешного завершения процедуры, Certbot покажет путь к сохранённым сертификатам: ```shell Saving debug log to /var/log/letsencrypt/letsencrypt.log Requesting a certificate for example.com and www.example.com Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/example.com/fullchain.pem Key is saved at: /etc/letsencrypt/live/example.com/privkey.pem This certificate expires on 2025-01-14. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for example.com to /etc/nginx/conf.d/example.com.conf Successfully deployed certificate for www.example.com to /etc/nginx/conf.d/example.com.conf Congratulations! You have successfully enabled HTTPS on https://example.com and https://www.example.com ``` ### Автоматическое обновление SSL-сертификатов Сертификаты Let's Encrypt действуют 90 дней, поэтому их необходимо своевременно обновлять. Это можно сделать вручную с помощью команды: ```shell certbot renew ``` Однако рекомендуется настроить автоматическое обновление с помощью cron-задачи. Откройте редактор cron: ```shell crontab -e ``` Добавьте следующую строку: ```shell 30 3 * * 2 /usr/bin/certbot renew >> /var/log/renew-ssl.log --post-hook "systemctl reload nginx" ``` Эта задача настроит автоматическое обновление сертификатов каждый вторник в 03:30 утра. Certbot будет проверять срок действия сертификатов и, если до их истечения останется менее 30 дней, выполнит автоматическое обновление. После успешного обновления Nginx будет перезагружен, чтобы начать использовать новый сертификат. Все действия Certbot будут записываться в файл `renew-ssl.log`. ## Установка существующего сертификата Если у вас уже приобретен SSL-сертификат, установить его можно по инструкции ниже. ### Загрузка файлов сертификата на сервер 1. Как правило, после покупки сертификата у вас будут следующие файлы: сам сертификат (`.crt`) и цепочка сертификатов (`.ca-bundle`), которая содержит промежуточный и корневой сертификат. Вам нужно скопировать их содержимое в единый файл `ваш_домен.crt`, друг под другом, без пробелов. Файл `ваш_домен.crt` можно создать с помощью Блокнота или любого другого текстового редактора. У вас получится следующее: ```shell -----BEGIN CERTIFICATE----- #Сертификат# -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- #Промежуточный сертификат# -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- #Корневой сертификат# -----END CERTIFICATE----- ``` > [!NOTE] > Если вы покупали SSL в Timeweb Cloud, у вас будет один файл CRT, который уже содержит все необходимые данные. Просто полностью скопируйте его содержимое — это можно сделать в разделе «SSL-сертификаты». ![Cc46ef08 C38e 4cab B644 28d04b7982a1](https://content.timeweb.com/assets/d12a772d-e525-42d6-8e19-c2631789c396?width=1418&height=862) Если вы покупали SSL у другого провайдера и у вас нет файла цепочки, запросить ее можно через поддержку провайдера или сгенерировать с помощью сервиса [https://whatsmychaincert.com/](https://whatsmychaincert.com/). 2. Также после покупки SSL у вас будет файл приватного (секретного) ключа. В Timeweb Cloud файл `Private KEY` можно найти в разделе «SSL-сертификаты». Если вы покупали SSL через другого провайдера и у вас нет этого файла, запросите его через поддержку провайдера. Создайте новый файл с именем `ваш_домен.key` и скопируйте в него содержимое приватного ключа. 3. Подключитесь к серверу по [FTP / SFTP](https://timeweb.cloud/docs/unix-guides/sftp) и загрузите файлы в директорию `/etc/ssl`. Другой вариант — [подключиться по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и создать нужные файлы в директории `/etc/ssl`, например: ```shell sudo nano /etc/ssl/mydomain.ru.crt ``` В созданный файл вставьте содержимое сертификата и цепочки. Сохраните изменения (Ctrl+X, затем Y и Enter). Создайте файл ключа: ```shell sudo nano /etc/ssl/mydomain.ru.key ``` Вставьте в него содержимое файла ключа и сохраните изменения. ### Настройка конфигурационного файла Nginx В зависимости от ваших настроек, потребуется изменить либо основной конфиг-файл Nginx (`/etc/nginx/nginx.conf`), либо конфиг виртуального хоста, если вы его создавали. Для Ubuntu файл конфигурации виртуального хоста находится по пути `/etc/nginx/sites-available/ваш_домен.conf`. Для CentOS конфигурационный файл виртуального хоста располагается в директории `/etc/nginx/conf.d/ваш_домен.conf`. Ubuntu Откройте его: ```shell sudo nano /etc/nginx/sites-available/ваш_домен.conf ``` CentOS Откройте его: ```shell sudo vi /etc/nginx/conf.d/ваш_домен.conf ``` В блок `server{}` добавьте следующие данные: Вместо: ```shell listen 80; listen [::]:80; ``` Укажите: ```shell listen 443 ssl; ``` Под строкой: ```shell server_name ваш_домен www.ваш_домен; ``` Укажите пути к файлам сертификата и ключа: ```shell ssl_certificate /etc/ssl/ваш_домен.crt; ssl_certificate_key /etc/ssl/ваш_домен.key; ``` Чтобы перенаправлять клиентов, обратившихся к сайту по HTTP, на безопасное подключение, добавьте новый блок `server{}` под существующим со следующим содержимым: ```shell server { listen 80; listen [::]:80; server_name ваш_домен www.ваш_домен; return 302 https://$server_name$request_uri; } ``` Здесь мы указываем временный 302 редирект. После того, как вы проверите работу и убедитесь, что все в порядке, замените его на 301. В итоге у вас должно получиться что-то подобное: ```shell server { listen 443 ssl; server_name mydomain.ru www.mydomain.ru; ssl_certificate /etc/ssl/mydomain.ru.crt; ssl_certificate_key /etc/ssl/mydomain.ru.key; root /var/www/mydomain.ru/html; index index.html index.xml; } server { listen 80; listen [::]:80; server_name mydomain.ru www.mydomain.ru; return 302 https://$server_name$request_uri; } ``` Этих настроек достаточно для работы сертификата. Вы можете сохранить изменения и сразу перейти к шагу 4. Либо можно настроить дополнительные параметры — их рассмотрим на следующем шаге. ### Дополнительные настройки (опционально) 1. Чтобы оптимизировать работу Nginx при использовании SSL, можно задействовать кэш SSL-сессий. - - Укажем, что будем использовать shared-кэш, который делится между всеми рабочими процессами, и его размер — 10 МБ: ```shell ssl_session_cache shared:SSL:10m; ``` Эту и следующие строки также вставьте в блок `server{}` — под строки с путями до сертификатов. - - Зададим таймаут кэша в 10 минут: ```shell ssl_session_timeout 10m; ``` Таймаут — это период, в течение которого параметры SSL-сессии используются повторно. По умолчанию таймаут равен 5 минутам, если вам подходит это значение, директиву `ssl_session_timeout` можно не указывать. А можно, напротив, значительно увеличить таймаут, чтобы повысить производительность веб-сервера — например, до одного дня (`1d`). - - Зададим время работы одного соединения: ```shell keepalive_timeout 70; ``` 2. Чтобы ускорить загрузку страниц сайта у его посетителей, можно включить опцию SSL stapling — это разрешит серверу прикреплять OCSP-ответы для валидации сертификата. Для этого вам понадобится создать файл `ca.crt`, который будет содержать корневой сертификат, полученный вами при покупке SSL (в файле цепочки он идет последним). Созданный файл нужно разместить на сервере в директории с сертификатами `/etc/ssl`. Включаем SSL stapling, добавляя директиву: ```shell ssl_stapling on; ``` Указываем путь к корневому сертификату: ```shell ssl_trusted_certificate /etc/ssl/ca.crt; ``` Указываем DNS: ```shell resolver 8.8.8.8; ``` Сохраните изменения. В итоге вас получится конфигурация примерно следующего вида: ```shell server { listen 443 ssl; server_name mydomain.ru www.mydomain.ru; ssl_certificate /etc/ssl/mydomain.ru.crt; ssl_certificate_key /etc/ssl/mydomain.ru.key; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; keepalive_timeout 70; ssl_stapling on; ssl_trusted_certificate /etc/ssl/ca.crt; resolver 8.8.8.8; root /var/www/mydomain.ru/html; index index.html index.xml; } server { listen 80; listen [::]:80; server_name mydomain.ru www.mydomain.ru; return 302 https://$server_name$request_uri; } ``` ### Применение настроек Проверьте конфигурацию Nginx: ```shell sudo nginx -t ``` Перезапустите Nginx, чтобы изменения вступили в силу: ```shell sudo systemctl restart nginx ``` Проверьте работу сайта — теперь он должен быть доступен по HTTPS. # Использование proxy_pass в Nginx Source: https://timeweb.cloud/docs/unix-guides/nginx-proxy-pass `proxy_pass` — это директива Nginx, при помощи которой можно передавать входящие HTTP-запросы другому сервису. Nginx в принимает запрос от клиента, отправляет его на указанный адрес и возвращает ответ обратно. Один из самых распространенных примеров применения — сервис, запущенный на сервере и доступный только локально по адресу вида `localhost:порт`. Технически можно открыть этот порт наружу и обращаться к сервису напрямую, но такой подход может быть неудобным и небезопасным. Обращаться к сервису по домену проще, а сам сервис при этом может не поддерживать SSL, авторизацию или ограничение доступа по IP. В такой схеме Nginx принимает запросы по домену и проксирует их на локальный порт сервиса. Другой сценарий — использование вебхуков. Например, при работе Telegram-бота вебхуки требуют публичный HTTPS-адрес. Сам бот при этом может работать локально или в контейнере и принимать HTTP-запросы. Nginx в этом случае используется для приема HTTPS-запросов, обработки сертификатов и проксирования запросов к сервису бота через `proxy_pass`. `proxy_pass` также часто применяют, когда инфраструктура разнесена на несколько серверов. Например, сайт работает на одном сервере, а форум — на другом. С помощью Nginx можно настроить проксирование так, чтобы при обращении к `/forum` запросы отправлялись на отдельный сервер с форумом. Для пользователя все выглядит как единый сайт, хотя фактически сервисы физически разделены. Перечисленные примеры — лишь часть ситуаций, в которых применим `proxy_pass`. ## Предварительная подготовка Если Nginx еще не установлен — установите его при помощи команд: deb-based ```bash sudo apt update && sudo apt install nginx -y ``` rpm-based ```bash sudo dnf update && sudo dnf install nginx -y ``` После установки запустите сервис и добавьте его в автозагрузку: ```bash sudo systemctl start nginx && sudo systemctl enable nginx ``` Проверьте статус сервиса — он должен быть в состоянии `active`: ```bash sudo systemctl status nginx ``` Для удобства управления конфигурациями рекомендуется создавать отдельный конфиг для каждого сервиса. В rpm-based дистрибутивах конфигурационные файлы обычно располагаются в каталоге `/etc/nginx/conf.d/`. В deb-based дистрибутивах используется другая схема: конфиги размещаются в `/etc/nginx/sites-available/`, а для их активации создаются симлинки в `/etc/nginx/sites-enabled/`. Далее в примерах будет использоваться deb-based дистрибутив. По умолчанию Nginx создает конфигурацию `default`. Если обратиться в браузере к адресу `http://IP_сервера`, вы увидите стандартную заглушку Nginx — за нее как раз отвечает этот конфиг. Его можно удалить: ```bash rm /etc/nginx/sites-enabled/default /etc/nginx/sites-available/default ``` Создайте новый конфигурационный файл для сервиса: ```bash touch /etc/nginx/sites-available/my-service.conf ``` И сразу создайте симлинк: ```bash sudo ln -s /etc/nginx/sites-available/my-service.conf /etc/nginx/sites-enabled/ ``` Далее, после любого изменения конфигурации проверьте ее корректность: ```bash nginx -t ``` Если ошибок нет, примените изменения: ```bash systemctl reload nginx ``` ## Пример использования В первом примере представим, что сервис запущен на `localhost:6789`. Это может быть, например, сайт на Python или Telegram-бот на Node.js, запущенный через `gunicorn` или `pm2`. Мы хотим, чтобы сервис был доступен из интернета по домену `service.example.com`. Откройте конфигурационный файл для редактирования: ```bash nano /etc/nginx/sites-available/my-service.conf ``` Минимальная конфигурация будет выглядеть следующим образом: ```shell server { listen 80; server_name _; location / { proxy_pass http://127.0.0.1:6789; } } ``` При такой конфигурации все обращения к серверу, включая обращения по его IP-адресу, будут проксироваться на внутренний сервис `127.0.0.1:6789`. Вместо IP-адреса можно указать домен, URI или путь к UNIX-сокету. Чтобы сервис был доступен по конкретному домену, укажите его вместо `_` в директиве `server_name`. В текущей конфигурации внутреннему сервису не передаются заголовки, которые отправляет клиент. Это может привести к проблемам с логированием, редиректами и определением реального IP клиента. Для передачи заголовков используются директивы `proxy_set_header`. Также имеет смысл отключить буферизацию ответов с помощью `proxy_buffering`, особенно если сервис отдает данные потоково или используется для вебхуков. Итоговая конфигурация может выглядеть так: ```shell server { listen 80; server_name service.example.com; location / { proxy_pass http://127.0.0.1:6789; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_buffering off; } } ``` Проверьте конфигурацию: ```bash nginx -t ``` И перезагрузите Nginx, чтобы применить изменения: ```bash systemctl reload nginx ``` ## Проксирование части запроса Предположим, что у сервиса есть API, который расположен на другом сервере и должен быть доступен по адресу `service.example.com/api`. В этом случае также можно использовать `proxy_pass`. Добавьте новый блок `location` в конфигурационный файл: ```bash server { listen 80; server_name service.example.com; location / { proxy_pass http://127.0.0.1:6789; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_buffering off; } location /api/ { proxy_pass http://ip_стороннего_сервера:8000; } } ``` В этом случае все запросы к `/api` будут проксироваться на отдельный сервер, а остальные — обрабатываться основным сервисом. ## Настройка авторизации Чтобы ограничить доступ к сервису с помощью базовой HTTP-аутентификации, сначала сгенерируйте хэш пароля. Например, с помощью `openssl`: ```bash openssl passwd -apr1 ``` Дважды укажите желаемый пароль. В результате команда вернет строку с хэшем, например: ```bash $apr1$9o.mJgYk$43kvlHx0DSqezaAL3yMHe1 ``` Создайте файл для размещения логинов и хэшей паролей. Его можно разместить в любой удобной директории, например в каталоге Nginx: ```bash nano /etc/nginx/.htpasswd ``` Укажите в файле данные в формате `имя_пользователя:хэш_пароля`: ```bash admin:$apr1$9o.mJgYk$43kvlHx0DSqezaAL3yMHe1 ``` Сохраните файл и установите для него права доступа: ```bash sudo chmod 640 /etc/nginx/.htpasswd ``` Задайте владельца и группу: ```bash sudo chown root:www-data /etc/nginx/.htpasswd ``` В rpm-based дистрибутивах группу `www-data` нужно заменить на `nginx`. После этого добавьте директивы `auth_basic` в конфигурацию Nginx: ```bash server { listen 80; server_name service.example.com; location / { proxy_pass http://127.0.0.1:6789; auth_basic "Restricted Content"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_buffering off; } } ``` Проверьте конфигурацию и примените изменения: ```bash sudo nginx -t sudo systemctl reload nginx ``` ## Ограничение по IP Чтобы ограничить доступ к сервису по IP-адресам, используйте директивы `allow` и `deny`. Пример конфигурации: ```bash server { listen 80; server_name service.example.com; location / { allow IP1; allow IP2.0/24; deny all; proxy_pass http://127.0.0.1:6789; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_buffering off; } } ``` В этом случае доступ к сервису будет разрешен только с IP-адреса `IP1` и из подсети `IP2.0/24`. ## Настройка SSL Чтобы настроить SSL-сертификат для уже существующего конфига, можно [воспользоваться certbot или установить сертификат вручную](https://timeweb.cloud/docs/unix-guides/ustanovka-ssl-na-nginx). # Установка модулей PHP (CentOS) Source: https://timeweb.cloud/docs/unix-guides/installing-php-modules-centos Ниже мы рассмотрим установку модулей PHP на сервер с операционной системой CentOS. ### **Создание phpinfo-скрипта** В процессе установки модулей нам потребуется получать информацию о параметрах PHP на сервере, поэтому в первую очередь разместим скрипт `phpinfo.php` в директории сайта. Для этого [подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и выполните следующие шаги: 1\. Перейдите в директорию сайта: ```shell cd путь/к/директории/сайта ``` Например, если на сервере установлен LAMP (автоматически при создании сервера): ```shell cd /var/www/html ``` Если на сервере установлена панель VestaCP: ```shell cd /home/имя_пользователя/web/имя_домена/public_html ``` 2\. Создайте файл `phpinfo.php`: ```shell nano phpinfo.php ``` 3\. Добавьте в него следующее содержимое: ```shell ``` 4\. Сохраните изменения (нажмите Ctrl+X для выхода из nano, далее Y для сохранения изменений и Enter). После перейдите по адресу `http://вашдомен/phpinfo.php`, и в браузере будет отображена информация о настройках PHP. ### **Установка модулей на примере imagick** Рассмотрим установку модулей php на примере модуля `imagick`. 1\. Уточните имя пакета. Если вы не уверены в точном названии пакета, можно воспользоваться командой ниже, указав часть названия пакета. ```shell yum search ima ``` После определения точного имени модуля, можно перейти к установке. 2\. Обновите информацию из репозиториев: ```shell yum update ``` 3\. Установите библиотеку: ```shell yum install ImageMagick ImageMagick-devel ``` 4\. Большинство расширений можно установить из репозитория PECL (чтобы убедиться, что этот способ подходит для нужного расширения, проверьте его наличие здесь: [https://pecl.php.net/packages.php](https://pecl.php.net/packages.php)). Установите пакет `php-pear`: ```shell yum install php-pear gcc make php-devel ``` 5\. Выполните команду: ```shell pecl install imagick ``` 6\. В процессе установки будет выведен запрос: ```shell Please provide the prefix of Imagemagick installation ``` В ответ на запрос системы введите `all` и нажмите Enter. 7\. Проверьте, какая директория задана для расширений. Для этого нужно на странице `http://вашдомен/phpinfo.php` найти параметр `extension_dir`: ![Centos1](https://content.timeweb.com/assets/d7b15a4c-a6f3-4133-b703-c1408e862396?width=937&height=31) _Страница phpinfo() с информацией о конфигурации [PHP](https://www.php.net/) на сервере_ Перейдите в указанную директорию: ```shell cd /usr/lib64/php/modules ``` Проверьте, есть ли в ней установленная библиотека: ```shell ls ``` Можно указать часть имени пакета в названии, чтобы упростить вывод, например: ```shell ls ima* ``` Если библиотека присутствует, она будет выведена в консоли: ![Centos2](https://content.timeweb.com/assets/3704f259-7f4a-48ca-8e09-ca67b9848cba?width=293&height=37) 8\. Выполните команду ниже, чтобы создать файл конфигурации `imagick.ini` и добавить в него директиву `extension=imagick.so`: ```shell echo "extension=imagick.so" > /etc/php.d/imagick.ini ``` 9\. Перезапустите веб-сервер Apache: ```shell systemctl restart httpd ``` 10\. Обновите страницу `http://вашдомен/phpinfo.php` и найдите установленный модуль, чтобы убедиться, что все в порядке: ![Centos3](https://content.timeweb.com/assets/79ed78e5-8811-4282-97c7-15774f033d37?width=936&height=341) _Страница phpinfo() с информацией о конфигурации [PHP](https://www.php.net/) на сервере_ ### **Подключение внешних библиотек** Если вам требуется подключить библиотеку, скачанную не из репозитория, необходимо: 1\. Загрузить файл с расширением `.so` в директорию с остальными библиотеками (см. значение параметра `extension_dir` на странице `http://вашдомен/phpinfo.php`; в нашем примере это директория `/usr/lib64/php/modules/`). ![Centos1](https://content.timeweb.com/assets/a7f28231-78c0-4fa0-ad67-a6977385f803?width=937&height=31) _Страница phpinfo() с информацией о конфигурации [PHP](https://www.php.net/) на сервере_ 2\. Перейти в директорию `/etc/php.d`: ```shell cd /etc/php.d ``` 3\. Создать конфигурационный файл: ```shell nano имя_библиотеки.ini ``` Например: ```shell nano curl.ini ``` 4\. Указать в данном файле директиву и сохранить изменения: ```shell extension=имя_библиотеки.so ``` Например: ```shell extension=curl.so ``` 5\. Перезагрузить Apache: ```shell systemctl restart httpd ``` 6\. Обновить страницу `http://вашдомен/phpinfo.ph`p и убедиться, что библиотека установлена. Если файл библиотеки был размещен в другой директории, то на шаге 4 необходимо в директиве `extension` указать соответствующий путь, например: ```shell extension=/usr/local/lib/php/extensions/curl.so ``` # Установка модулей PHP (Debian / Ubuntu) Source: https://timeweb.cloud/docs/unix-guides/installing-php-modules-debian-ubuntu Ниже мы рассмотрим установку модулей PHP на сервер с операционной системой Ubuntu или Debian. ### **Создание phpinfo-скрипта** В процессе установки модулей нам потребуется получать информацию о параметрах PHP на сервере, поэтому в первую очередь разместим скрипт `phpinfo.php` в директории сайта. Для этого [подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и выполните следующие шаги: 1\. Перейдите в директорию сайта: ```shell cd путь/к/директории/сайта ``` Например, если на сервере установлен LAMP (автоматически при создании сервера): ```shell cd /var/www/html ``` Если на сервере установлена панель VestaCP: ```shell cd /home/имя_пользователя/web/имя_домена/public_html ``` 2\. Создайте файл `phpinfo.php`: ```shell nano phpinfo.php ``` 3\. Добавьте в него следующее содержимое: ```shell ``` 4\. Сохраните изменения (нажмите Ctrl+X для выхода из nano, далее Y для сохранения изменений и Enter). После перейдите по адресу `http://вашдомен/phpinfo.php`, и в браузере будет отображена информация о настройках PHP. ### **Установка модулей на примере imagick** Рассмотрим установку модулей php на примере модуля `imagick`. 1\. Уточните имя пакета. Если вы не уверены в точном названии пакета, можно воспользоваться командой ниже, указав часть названия пакета. Для PHP названия большинства библиотек будут начинаться с «php». ```shell apt-cache search что_ищем ``` Например: ```shell apt-cache search php-ima ``` Вывод команды выглядит примерно следующим образом: ![11](https://content.timeweb.com/assets/447e8596-a0ec-4bb7-8f35-4214d0c032db?width=655&height=87) В данном случае нам будет нужен пакет `php-imagick`. 2\. Обновите информацию из репозиториев: ```shell apt update ``` 3\. Установите библиотеку: ```shell apt install имя_пакета ``` Например: ```shell apt install php-imagick ``` 4\. Проверьте, какая директория задана для расширений. Для этого нужно на странице `http://вашдомен/phpinfo.php` найти параметр «extension_dir»: ![22](https://content.timeweb.com/assets/1bcc55bc-534b-4646-a9ca-0620d6ad4314?width=940&height=51) _Страница phpinfo() с информацией о конфигурации [PHP](https://www.php.net/) на сервере_ Перейдите в указанную директорию: ```shell cd /нужная/директория ``` В нашем случае: ```shell cd /usr/lib/php/20170718 ``` Проверьте, есть ли в ней установленная библиотека: ```shell ls ``` Можно указать часть имени библиотеки, чтобы упростить вывод, например: ```shell ls ima* ``` Если библиотека присутствует, она будет выведена в консоли: ![33](https://content.timeweb.com/assets/ac3386a9-8890-4ac3-bdd4-6a4f92d68f64?width=403&height=33) 5\. Проверьте, какая директория используется для дополнительных конфигурационных файлов. Для этого нужно на странице `http://вашдомен/phpinfo.php` найти параметр «Scan this dir for additional .ini files»: ![44](https://content.timeweb.com/assets/aae4b9d1-4391-41a7-880e-cb2e6c5a138a?width=941&height=29) _Страница phpinfo() с информацией о конфигурации [PHP](https://www.php.net/) на сервере_ Перейдите в указанную директорию и просмотрите ее содержимое: ```shell cd /нужная/директория ls ``` В нашем случае: ```shell cd /etc/php/7.2/apache2/conf.d ``` ```shell ls ``` Можно указать часть имени библиотеки, чтобы упростить вывод, например: ```shell ls *imag* ``` Если конфигурационный файл с директивой, подключающей библиотеку, успешно создан, он будет выведен в консоли: ![55](https://content.timeweb.com/assets/76e9952c-5e7c-433c-b802-381c519dffe0?width=458&height=36) Если файл отсутствует, воспользуйтесь командой ниже, чтобы его создать: ```shell echo "extension=imagick.so" > /директория/из/пункта/5/imagick.ini ``` В нашем случае: ```shell echo "extension=imagick.so" > /etc/php/7.2/apache2/conf.d/imagick.ini ``` Она создаст файл конфигурации `imagick.ini` в нужной директории и добавит в него директиву `extension=imagick.so`. 6\. Перезагрузите веб-сервер Apache: ```shell service apache2 restart ``` 7\. Обновите страницу `http://вашдомен/phpinfo.php` и найдите установленный модуль, чтобы убедиться, что все в порядке: ![66](https://content.timeweb.com/assets/ff7e1dd2-0a97-44b5-a8f5-01ae812eb0f7?width=941&height=434) ** _Страница phpinfo() с информацией о конфигурации [PHP](https://www.php.net/) на сервере_ ** ### **Подключение внешних библиотек** Если вам требуется подключить библиотеку, скачанную не из репозитория, необходимо: 1\. Загрузить файл с расширением `.so` в директорию с остальными библиотеками (см. значение параметра `extension_dir` на странице `http://вашдомен/phpinfo.php`; в нашем примере это директория `/usr/lib/php/20170718`). ![22](https://content.timeweb.com/assets/105949a3-37c5-4a23-bda8-6140e736691d?width=940&height=51) _Страница phpinfo() с информацией о конфигурации [PHP](https://www.php.net/) на сервере_ 2\. Перейти в директорию с дополнительными конфигурационными файлами (см. значение параметра «Scan this dir for additional .ini files» на странице `phpinfo.php`; в нашем примере это `/etc/php/7.2/apache2/conf.d`): ```shell cd /etc/php/7.2/apache2/conf.d ``` 3\. Создать конфигурационный файл: ```shell nano имя_библиотеки.ini ``` Например: ```shell nano curl.ini ``` 4\. Указать в данном файле директиву и сохранить изменения: ```shell extension=имя_библиотеки.so ``` Например: ```shell extension=curl.so ``` 5\. Перезапустить Apache: ```shell service apache2 restart ``` 6\. Обновить страницу `http://вашдомен/phpinfo.php` и убедиться, что библиотека установлена. Если файл библиотеки был размещен в другой директории, то на шаге 4 необходимо в директиве `extension` указать соответствующий путь, например: ```shell extension=/usr/local/lib/php/extensions/curl.so ``` # Настройка параметров PHP (CentOS) Source: https://timeweb.cloud/docs/unix-guides/setting-php-options-centos Ниже мы рассмотрим настройку параметров PHP на сервере с операционной системой Centos или Bitrix. ## Создание phpinfo-скрипта В процессе настройки потребуется получать информацию о параметрах PHP на сервере, поэтому в первую очередь необходимо разместить скрипт `phpinfo.php` в директории сайта. [Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и выполните следующие действия: 1\. Перейдите в директорию сайта: ```shell cd путь/к/директории/сайта ``` Например, если на сервере установлен LAMP (автоматически при создании сервера): ```shell cd /var/www/html ``` Если на сервере установлена панель VestaCP: ```shell cd /home/имя_пользователя/web/имя_домена/public_html ``` 2\. Создайте файл `phpinfo.php`: ```shell nano phpinfo.php ``` 3\. Добавьте в него следующее содержимое: ```shell ``` 4\. Сохраните изменения (нажать Ctrl+X для выхода из `nano`, далее Y для сохранения изменений и Enter). После перейдите по адресу `http://вашдомен/phpinfo.php`, и в браузере будет отображена информация о настройках PHP. Путь к конфигурационному файлу `php.ini` можно найти в строке `Loaded Configuration File`: ![111](https://content.timeweb.com/assets/8ff03b66-91b1-40cc-b8c8-b43273db8ba3?width=911&height=182) _Страница phpinfo() с информацией о конфигурации [PHP](https://www.php.net/) на сервере_ В нашем случае это `/etc/php.ini` (стандартное размещение для CentOS). ## Настройка параметров Рассмотрим настройку параметров на примере `mbstring.func_overload`. 1\. Найдите нужный параметр в `php.ini` при помощи команды: ```shell grep -ni 'имя_параметра' /путь/до/php.ini ``` Например: ```shell grep -ni 'mbstring.func_overload' /etc/php.ini ``` Ключ `-n` покажет, в какой строке расположена директива, чтобы можно было перейти сразу к ней. ![222](https://content.timeweb.com/assets/30c5a46c-65c7-427e-a264-b2325a720fe8?width=619&height=59) В данном случае номер строки — 1714. 2\. Откройте файл в текстовом редакторе, указав номер нужной строки: ```shell nano +номер_строки путь/до/php.ini ``` Например: ```shell nano +1714 /etc/php.ini ``` 3\. Отредактируйте строку: уберите знак комментария (`;`) и измените значение параметра на нужное вам: ![333](https://content.timeweb.com/assets/fab3a5fe-4c90-46e9-9960-97d04376a748?width=597&height=189) В данном случае мы указываем 2. ![444](https://content.timeweb.com/assets/c92e6343-39a8-4b3c-aed6-c3ecd1c5c9e4?width=269&height=23) 4\. Сохраните изменения (нажмите Ctrl+x для выхода из `nano`, далее Y для сохранения изменений и Enter). 5\. Перезагрузите веб-сервер Apache: ```shell service apache2 restart ``` 6\. Для проверки обновите страницу `http://вашдомен/phpinfo.php` и найдите текущее значение нужной директивы: ![555](https://content.timeweb.com/assets/0259532b-bea6-4f9e-a1cd-0fe80284f39b?width=936&height=31) _Страница phpinfo() с информацией о конфигурации [PHP](https://www.php.net/) на сервере_ # Настройка параметров PHP (Debian / Ubuntu) Source: https://timeweb.cloud/docs/unix-guides/setting-php-options-debian-ubuntu В статье описана настройка параметров PHP на сервере с операционными системами Ubuntu или Debian. Настройка параметров производится в конфигурационном файле `php.ini`. В зависимости от того, как используется PHP на сервере, эти файлы обычно размещаются по следующим путям: ```shell # Если PHP работает как модуль Apache: /etc/php/x.x/apache2/php.ini # Если PHP работает в режиме FastCGI: /etc/php/x.x/cgi/php.ini # Настройки PHP в командной строке: /etc/php/x.x/cli/php.ini # где x.x — соответствующая версия обработчика php ``` Определить точное расположение файла `php.ini` можно с помощью скрипта `phpinfo.php`. ### **Создание phpinfo-скрипта** [Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и выполните следующие действия: 1\. Перейдите в директорию сайта: ```shell cd путь/к/директории/сайта ``` Например, если на сервере установлен LAMP (автоматически при создании сервера): ```shell cd /var/www/html ``` Если на сервере установлена панель VestaCP: ```shell cd /home/имя_пользователя/web/имя_домена/public_html ``` 2\. Создайте файл `phpinfo.php`: ```shell nano phpinfo.php ``` 3\. Добавьте в него следующее содержимое: ```shell ``` 4\. Сохраните изменения (нажать Ctrl+X для выхода из `nano`, далее Y для сохранения изменений и Enter). После перейдите по адресу `http://вашдомен/phpinfo.php`, и в браузере будет отображена информация о настройках PHP. Путь к конфигурационному файлу `php.ini` можно найти в строке `Loaded Configuration File`: ![1](https://content.timeweb.com/assets/e168aad3-f787-4eb9-8b07-091e94b4f0c7?width=935&height=578) _Страница phpinfo() с информацией о конфигурации [PHP](https://www.php.net/) на сервере_ ### **Настройка параметров** Рассмотрим настройку на примере параметра `mbstring.func_overload`. 1\. Найдите нужный параметр в `php.ini` при помощи команды: ```shell grep -ni 'имя_параметра' /путь/до/php.ini ``` Например: ```shell grep -ni 'mbstring.func_overload' /etc/php/7.2/apache2/php.ini ``` Ключ `-n` покажет, в какой строке расположена директива, чтобы можно было перейти сразу к ней. ![2](https://content.timeweb.com/assets/0e7cac47-7437-4105-ad5f-78e07c2e9130?width=874&height=39) В данном случае номер строки — 1704. 2\. Откройте файл в текстовом редакторе, указав номер нужной строки: ```shell nano +номер_строки путь/до/php.ini ``` Например: ```shell nano +1704 /etc/php/7.2/apache2/php.ini ``` 3\. Отредактируйте строку: уберите знак комментария (`;`) и измените значение на нужное вам: ![4](https://content.timeweb.com/assets/88d3f044-0e4a-4762-a5fe-adc046d5b8a8?width=621&height=182) В данном случае мы указываем 2: ![5](https://content.timeweb.com/assets/f76f297a-2717-48ce-b495-42cb09b35ac4?width=251&height=21) 4\. Сохраните изменения: нажмите Ctrl+x для выхода из `nano`, далее Y для сохранения изменений и Enter. 5\. Перезапустите веб-сервер Apache командой: ```shell service apache2 restart ``` 6\. Для проверки обновите страницу `http://вашдомен/phpinfo.php` и найдите текущее значение нужной директивы: ![6](https://content.timeweb.com/assets/26d07de7-8d1c-4667-8308-e97149bf22d5?width=939&height=262) _Страница phpinfo() с информацией о конфигурации [PHP](https://www.php.net/) на сервере_ # Настройка перенаправлений Source: https://timeweb.cloud/docs/unix-guides/setting-up-redirects В статье приведены примеры стандартных перенаправлений, которые могут быть настроены с помощью файла `.htaccess` вашего сайта. Указанные перенаправления будут работать: - для большинства конфигураций VDS, где используется веб-сервер **Apache** (необходимо, чтобы был [включен модуль mod_rewrite](https://timeweb.cloud/docs/unix-guides/setting-up-redirects#kak-proverit-chto-mod-rewrite-vkluchen)); - для серверов с VestaCP или ispmanager, установленными через панель управления аккаунтом. В ispmanager простые перенаправления могут также быть настроены [средствами панели](https://timeweb.cloud/docs/control-panels/ispmanager/setting-up-redirects). Обратите внимание, что данные редиректы **не подойдут** для OS Bitrix7. ## Что такое .htaccess? Файл `.htaccess` позволяет вам настраивать конфигурацию веб-сервера Apache для конкретного сайта, не затрагивая настройки основных конфигурационных файлов Apache (`httpd.conf` в CentOS и `apache2.conf` в Ubuntu/Debian) и не рискуя что-то необратимо сломать на сервере. Директивы, указанные в `.htaccess` будут действовать только для каталога, в котором размещается этот файл, и его подкаталогов. Для подкаталогов также можно создавать дополнительные `.htaccess`\-файлы; при этом они переопределят настройки, назначенные в `.htaccess` на уровне выше. В `.htaccess` можно: - Настраивать перенаправления с одного адреса на другой; - Управлять настройками PHP; - Задавать собственные страницы ошибок; - Устанавливать права доступа к файлам; - — и многое другое. ## Как создать .htaccess? Файл необходимо создать в каталоге сайта (обычно это `/var/www/html`, но у вас путь может отличаться — в этом случае замените его в командах) с помощью подключения по SSH или FTP. При подключении по SSH это можно сделать так: ```shell touch /var/www/html/.htaccess ``` ## Как «включить» .htaccess? Чтобы веб-сервер Apache читал и применял настройки из файла `.htaccess`, в главном конфигурационном сайте Apache — `httpd.conf` или `apache2.conf` — должна быть прописана директива `Allow Override All` для нужной нам директории. Рассмотрим на примере сервера с LAMP с системой Ubuntu 20.04. Откроем файл конфигурации `apache2.conf`: ```shell nano /etc/apache2/apache2.conf ``` Стандартно сайт размещается в директории `/var/www/html/`. Видим, что `Allow Override` для нее имеет значение `None` — значит, `.htaccess` не будет работать. ![5cf7458e 8ad6 47e4 9236 B4792686e8f0](https://content.timeweb.com/assets/1a58399c-76ca-4c6c-9917-a7f607a0a237?width=1100&height=745) Если ваш сайт размещен по другому пути (не `/var/www/.../`), исправьте путь на верный или добавьте еще один блок `` с нужным путем. Меняем значение на `Allow Override All`: ![A7f3c1e5 394e 42e7 Aafc E8df8cd7a6a3](https://content.timeweb.com/assets/63e7ec92-b72a-4662-9e93-280d03d584a2?width=1102&height=745) Сохраняем изменения (Ctrl + X, затем Y, затем Enter). И перезагружаем веб-сервер: ```shell systemctl restart apache2 ``` Теперь мы можем прописывать директивы для сайта в файле `.htaccess`. ## Как проверить, что mod_rewrite включен? Во-первых, убедитесь, что у вас включен модуль `mod_rewrite`. Для этого выполните команду: ```shell apache2ctl -M | grep rewrite ``` В выводе должно быть `rewrite_module (shared)`: ![Powershell Gt D Ja T Xgn B](https://content.timeweb.com/assets/c5eff03c-8a8a-4af1-8eb8-5de48d22b15d?width=522&height=69) Если вывод отличается — включите mod_rewrite командой: ```shell sudo a2enmod rewrite ``` ## Как прописывать редиректы? Директивы перенаправлений необходимо указывать в блоке `` со следующим содержимым: ```shell Options +FollowSymLinks RewriteEngine on #Ваши правила ``` В качестве правил указываются директивы `RewriteCond` и `RewriteRule` с необходимыми значениями — `RewriteCond` задает условие, при котором происходит выполнение правила, указанного в `RewriteRule`. Например, так мы настроим перенаправление с HTTP на HTTPS для сайта mydomain.com: ```shell Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteCond %{HTTPS} !on RewriteCond %{HTTP_HOST} ^mydomain.com$ RewriteRule ^(.*)$ https://mydomain.com/$1 [R=301,L] ``` ![Powershell J5 Vf Uji Bjw](https://content.timeweb.com/assets/29d68a8e-11aa-4368-9ad1-242aad520f56?width=1086&height=748) ## Настройка перенаправлений ### Перенаправление на другой домен В примере ниже выполняется редирект с www.old-domain.ru на www.new-domain.ru: ```shell RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.ru$ RewriteRule ^(.*)$ http://www.new-domain.ru/$1 [R=301,L] ``` ### Перенаправление c http на https 1\. Перенаправление с **http**://example.ru на **https**://example.ru. ```shell RewriteBase / RewriteCond %{HTTPS} !on RewriteCond %{HTTP_HOST} ^example.ru$ RewriteRule ^(.*)$ https://example.ru/$1 [R=301,L] ``` 1a. Для серверов **с панелью VestaCP**: ```shell RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] ``` 1b. Для серверов **с панелью ispmanager** при использовании Nginx: ```shell RewriteBase / RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ``` 2\. Перенаправление с **http**://example.ru на **https**://**www**.example.ru. ```shell RewriteBase / RewriteCond %{HTTPS} !on RewriteCond %{HTTP_HOST} ^example.ru$ RewriteRule ^(.*)$ https://www.example.ru/$1 [R=301,L] ``` 3\. Перенаправление с **http**://**www**.forum.example.ru на **https**://forum.example.ru. ```shell RewriteCond %{HTTP_HOST} ^www\.forum\.example\.ru$ [NC] RewriteRule ^(.*)$ https://forum.example.ru/$1 [R=301,L] RewriteBase / RewriteCond %{HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] ``` 4\. Перенаправление с **http**://forum.example.ru на **https**://**www**.forum.example.ru. ```shell RewriteCond %{HTTP_HOST} ^forum\.example\.ru$ [NC] RewriteRule ^(.*)$ https://www.forum.example.ru/$1 [R=301,L] RewriteBase / RewriteCond %{HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] ``` ### Перенаправление с https на http ```shell RewriteBase / RewriteCond %{HTTPS} on [NC] RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L] ``` ### Перенаправление на http для одной страницы Вариант 1: ```shell RewriteBase / RewriteCond %{HTTPS} on [NC] RewriteCond %{REQUEST_URI} ^/Необходимая директория_страница$ RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L] ``` Вариант 2: ```shell RewriteBase / RewriteCond %{HTTPS} !on RewriteCond %{REQUEST_URI} !^/Необходимая директория_страница$ RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] RewriteCond %{HTTPS} on [NC] RewriteCond %{REQUEST_URI} ^/Необходимая директория_страница$ RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L] ``` **Пример**: отключение перенаправления на https для страницы `bitrix/admin/1c_exchange.php` для корректной работы обмена данных с 1C: ```shell RewriteBase / RewriteCond %{HTTPS} !on RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] RewriteCond %{HTTPS} on [NC] RewriteCond %{REQUEST_URI} ^/bitrix/admin/1c_exchange\.php$ RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L] ``` Оно же **для панели VestaCP**: ```shell RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] RewriteCond %{SERVER_PORT} ^443$ RewriteCond %{REQUEST_URI} ^/bitrix/admin/1c_exchange\.php$ RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] ``` ### Перенаправление на https для одной страницы ```shell RewriteBase / RewriteCond %{HTTPS} !on RewriteCond %{REQUEST_URI} ^/Необходимая директория_страница$ RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] ``` ### Перенаправление домена без www на домен с www В примерах осуществляется редирект с forum.example.ru на www.forum.example.ru. Способ 1: ```shell RewriteCond %{HTTP_HOST} ^forum\.example\.ru$ [NC] RewriteRule ^(.*)$ http://www.forum.example.ru/$1 [R=301,L] ``` Способ 2, без указания домена: ```shell RewriteCond %{HTTP_HOST} !^www\.(.*) [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] ``` ### Перенаправление домена с www на домен без www В примерах осуществляется перенаправление с www.forum.example.ru на forum.example.ru. Способ 1: ```shell RewriteCond %{HTTP_HOST} ^www\.forum\.example\.ru$ [NC] RewriteRule ^(.*)$ http://forum.example.ru/$1 [R=301,L] ``` Способ 2. ```shell RewriteCond %{HTTP_HOST} !^forum\.example\.ru$ [NC] RewriteRule ^(.*)$ http://forum.example.ru/$1 [R=301,L] ``` ### Перенаправление в подкаталог Перенаправление поддомена forum.example.ru в подкаталог forum: ```shell RewriteBase / RewriteCond %{HTTP_HOST} ^forum\.example\.ru$ RewriteCond %{REQUEST_URI} !/forum/ RewriteRule ^(.*)$ /forum/$1 [L] ``` # Настройка перенаправлений (Nginx) Source: https://timeweb.cloud/docs/unix-guides/setting-up-redirects-nginx В статье приведены примеры стандартных перенаправлений для веб-сервера **Nginx** (настройка редиректов для Apache описана в [отдельной статье](https://timeweb.cloud/docs/unix-guides/setting-up-redirects)). Для настройки перенаправлений директивы нужно прописывать в файле конфигурации `nginx.conf` или, если у вас настроены виртуальные хосты, — в конфигурационном файле соответствующего виртуального хоста. Директиву с редиректом необходимо добавлять в блок `server` конфигурационного файла. ## Перенаправление на другой домен В примере ниже выполняется редирект на www.new-domain.ru: ```shell server { #... rewrite ^ $scheme://www.new-domain.ru; #... } ``` ## Перенаправление c http на https ```shell server { #... return 301 https://$host$request_uri; #... } ``` ## Перенаправление с https на http ```shell server { #... server_name example.ru www.example.ru; return 301 http://$server_name$request_uri; #... } ``` ## Перенаправление домена без www на домен с www ```shell server { #... return 301 $scheme://www.example.ru$request_uri; #... } ``` ## Перенаправление домена с www на домен без www ```shell server { #... return 301 $scheme://example.ru$request_uri; #... } ``` ## Перенаправление для одной страницы ```shell server { #... location = /example_old.html { return 301 /example_new.html; } #... } ``` ## Перенаправление на страницу со слэшем в конце ```shell server { #... rewrite ^(.*[^/])$ $1/ permanent; #... } ``` ## Перенаправление на страницу без слэша в конце ```shell server { #... rewrite ^/(.*)/$ /$1 permanent; #... } ``` # Настройка FTP в Ubuntu Source: https://timeweb.cloud/docs/unix-guides/ftp-setup-in-ubuntu-20-04 В инструкции мы рассмотрим, как установить и настроить работу FTP-сервера `vsftpd` на VDS с **Ubuntu 24.04**. Описанный алгоритм также подойдет для более ранних версий ОС. ## Установка vsftpd Обновите пакеты и запустите установку: ```shell sudo apt update && sudo apt install vsftpd ``` После завершения установки FTP-сервер будет запущен. Убедиться в этом можно, проверив статус сервиса: ```shell sudo systemctl status vsftpd ``` ![Status](https://content.timeweb.com/assets/c9088a66-0bc7-46c4-8ccc-485b6d41255b?width=749&height=149) Далее добавьте `vsftpd` в автозагрузку: ```shell sudo systemctl enable vsftpd ``` ## Настройка конфигурации Далее нужно внести изменения в конфигурационный файл `vsftpd`. Cоздайте копию файла, чтобы при необходимости вернуть настройки по умолчанию. Cоздайте копию файла, чтобы при необходимости вернуть настройки по умолчанию: ```shell sudo mv /etc/vsftpd.conf /etc/vsftpd.confbak ``` Откройте конфигурационный файл: ```shell sudo nano /etc/vsftpd.conf ``` Скопируйте в него следующий блок директив: ```shell listen=YES listen_ipv6=NO anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=NO pasv_min_port=40000 pasv_max_port=50000 ``` Сохраните изменения и закройте файл (Ctrl+X для выхода из `nano`, далее Y и Enter). Перезапустите службу FTP: ```shell sudo systemctl restart vsftpd ``` ## Создание FTP-пользователей Создайте пользователя для работы по FTP: ``` sudo useradd -m -s /bin/bash имя_пользователя ``` Задайте пароль для него: ```shell sudo passwd имя_пользователя ``` ## Настройка файрвола Чтобы подключения по FTP не блокировались файрволом, необходимо добавить правила, которые разрешают FTP-трафик. Рассмотрим настройку на примере UFW. Откройте порты 20, 21, 22, 990 и зарезервируйте диапазон портов 40000-50000: ```shell sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow OpenSSH sudo ufw allow 990/tcp sudo ufw allow 40000:50000/tcp ``` Перезагрузите UFW: ```KDcb0c sudo ufw reload ``` Проверьте статус сервиса UFW: ```shell sudo ufw status ``` На этом установка и настройка FTP-сервера `vsftpd` завершена. Проверьте работу FTP, подключившись к серверу через FileZilla. # Оптимизация MySQL с помощью MySQLTuner Source: https://timeweb.cloud/docs/unix-guides/optimizing-mysql-with-mysqltuner MySQLTuner — это скрипт, который анализирует работу MySQL и выводит рекомендации по его оптимизации. Скачать скрипт можно командой: ```shell wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl ``` > [!NOTE] > Перед запуском скрипта сервер MySQL должен **проработать около суток** без перезагрузок и смены конфигурации, чтобы MySQLTuner мог получить достаточно данных для полноценного анализа. В противном случае результаты работы скрипта будут бесполезны. Запустите скрипт: ```shell perl mysqltuner.pl ``` MySQLTuner выведет результат, который будет состоять из нескольких секций и выглядеть примерно следующим образом (реальный вывод будет подробнее и длиннее): ```shell root@server:~# perl mysqltuner.pl >> MySQLTuner 1.7.19 - Major Hayden >> Bug reports, feature requests, and downloads at http://mysqltuner.pl/ >> Run with '--help' for additional options and output filtering [--] Skipped version check for MySQLTuner script [OK] Logged in using credentials from Debian maintenance account. -------- Log file Recommendations --------------------------------------------- [OK] Log file /var/log/mysql/error.log exists [--] Log file: /var/log/mysql/error.log(0B) [OK] Log file /var/log/mysql/error.log is readable. [!!] Log file /var/log/mysql/error.log is empty -------- Security Recommendations --------------------------------------------- [OK] There are no anonymous accounts for any database users [!!] User 'root@localhost' has no password set. [!!] User 'user1@%' does not specify hostname restrictions. [!!] User 'user@%' does not specify hostname restrictions. -------- Performance Metrics -------------------------------------------------- [--] Galera GCache Max memory usage: 0B [OK] Maximum reached memory usage: 243.2M (12.20% of installed RAM) [!!] Maximum possible memory usage: 2.7G (138.90% of installed RAM) [!!] Overall possible memory usage with other process exceeded memory -------- InnoDB Metrics ------------------------------------------------------- [--] InnoDB is enabled. [--] InnoDB Thread Concurrency: 0 [OK] InnoDB File per table is activated [OK] InnoDB buffer pool / data size: 128.0M/416.0K -------- Recommendations ------------------------------------------------------ General recommendations: Set up a Secure Password for root@localhost user: SET PASSWORD FOR 'root'@'SpecificDNSorIp' = PASSWORD('secure_password'); Restrict Host for 'user1'@% to user1@SpecificDNSorIp UPDATE mysql.user SET host ='SpecificDNSorIp' WHERE user='user1' AND host ='%'; FLUSH PRIVILEGES; Dedicate this server to your database for highest performance. Reduce or eliminate unclosed connections and network issues Configure your accounts with ip or subnets only, then update your configuration with skip-name-resolve=1 Before changing innodb_log_file_size and/or innodb_log_files_in_group read this: https://bit.ly/2TcGgtU Variables to adjust: *** MySQL's maximum memory usage is dangerously high *** *** Add RAM before increasing MySQL buffer variables *** query_cache_size (=0) query_cache_type (=0) query_cache_limit (> 1M, or use smaller result sets) innodb_log_file_size should be (=16M) if possible, so InnoDB total log files size equals to 25% of buffer pool size. ``` Внимательно изучите строки, отмеченные знаком `[!!]`, и итоговую сводку рекомендуемых изменений в последнем блоке `Recommendations`. Параметры, приведенные в пункте `Variables to adjust`, необходимо изменять в конфигурационном файле MySQL. Если в файле такой параметр отсутствует, его необходимо вписать. Конфигурационный файл MySQL может размещаться по различным путям. В Debian/Ubuntu это могут быть: ```shell /etc/mysql/my.cnf /etc/mysql/mysql.conf.d/mysqld.cnf ``` В CentOS: ```shell /etc/my.cnf /etc/mysql/my.cnf ``` После каждого изменения конфигурационного файла необходимо перезапускать MySQL: ```shell systemctl restart mysql ``` ### **Дополнительные рекомендации** 1\. Перед изменением конфигурационного файла сделайте его бэкап (в команде необходимо указать актуальный для вас путь): ```shell cp /etc/mysql/my.cnf ~/my.cnf.backup ``` 2\. После внесения правок подождите, чтобы сервер проработал около суток, после чего можно снова запустить MySQLTuner. Так вы сможете проанализировать работу MySQL уже с новыми настройками и продолжить оптимизацию. 3\. Правки по рекомендациям MySQLTuner имеет смысл вносить постепенно и после каждого изменения наблюдать за работой сервера. В этом случае, если возникнут какие-либо проблемы, вы сможете быстро определить их причину и откатить нежелательные изменения. Не забывайте после каждого изменения настроек перезапускать службу MySQL. # Сканирование с помощью ClamAV Source: https://timeweb.cloud/docs/unix-guides/scanning-with-clamav ClamAV — это утилита с открытым исходным кодом для сканирования файлов на вредоносный код. ClamAV позволяет обнаруживать трояны, вирусы, вредоносные программы и другие угрозы. ## Установка Установить ClamAV можно с помощью команды: Ubuntu / Debian: ``` apt update && apt install -y clamav clamav-daemon ``` CentOS / Fedora: ```shell dnf install -y clamav clamav-update ``` ## Обновление баз > [!NOTE] > ClamAV ограничивает доступ для пользователей из России, поэтому обновить базы получится только с IP-адреса из другой страны. Перед сканированием необходимо обновить сигнатуры ClamAV. Для этого используйте команду: ```shell systemctl stop clamav-freshclam.service ; freshclam ; systemctl start clamav-freshclam.service ``` Она позволит остановить сервис Freshclam (в противном случае он не даст обновить базы из-за блокировки), провести обновление сигнатур, а после снова запустить сервис. ## Сканирование Сканер использует большое количество оперативной памяти, поэтому рекомендуется запускать его на системах с как минимум 1-1.5 ГБ доступной ОЗУ. Также, при отсутствии swap на сервере рекомендуем настроить его по [инструкции](https://timeweb.cloud/docs/unix-guides/creating-and-resizing-swap). #### **Примеры использования** Просканировать конкретный файл: ```shell clamscan имя_файла ``` Выполнить сканирование директории и вывести только зараженные файлы: ```shell clamscan -r -i /директория ``` Переместить зараженные файлы в определенную директорию: ```shell clamscan -r -i --move=/папка_куда_переносим /папка_для_сканирования ``` Автоматически удалять зараженные файлы при обнаружении (**используйте с осторожностью!**): ```shell clamscan -r --remove /папка_для_сканирования ``` # Управление службами в systemd Source: https://timeweb.cloud/docs/unix-guides/service-management-in-systemd В современных дистрибутивах Linux (начиная с Debian 8, Ubuntu 16.04, CentOS 7) в качестве системы инициализации используется `Systemd`. Systemd запускается при старте сервера (после загрузки ядра) и инициализирует службы, необходимые для работы сервера и системы. Systemd содержит инструмент `systemctl`, который позволяет пользователю управлять работой служб в фоне: запускать и останавливать их, проверять состояние, обновлять конфигурацию и т.д. Ниже мы рассмотрим основные варианты применения `systemctl`. Синтаксис при использовании `systemctl` следующий: ```shell systemctl команда служба ``` ## Просмотр списка служб Вывести список всех запущенных служб: ```bash systemctl list-units ``` Вывести список только программ (сервисов), без дополнительных системных компонентов: ```shell systemctl list-units -t service ``` Вывести список всех сервисов (не только запущенных): ```shell systemctl list-units -t service --all ``` Вывести список только выполняющихся сервисов: ```shell systemctl list-units -t service --state running ``` ## Управление состоянием службы Рассмотрим основные команды `systemctl` на примере службы Nginx. Посмотреть состояние службы: ```shell systemctl status nginx ``` Запустить службу: ```shell systemctl start nginx ``` Остановить службу: ```shell systemctl stop nginx ``` Обновить конфигурацию без перезапуска службы (отработает только в случае, если сама служба поддерживает такую возможность): ```shell systemctl reload nginx ``` Перезапустить службу (если служба не была запущена, она запустится этой командой): ```shell systemctl restart nginx ``` Обновить конфигурацию без перезапуска, если есть такая возможность; в противном случае перезапустить службу: ```shell systemctl reload-or-restart nginx ``` Перезапустить службу, только если она уже запущена: ```shell systemctl try-restart nginx ``` Проверить, запущена ли служба: ```shell systemctl is-active nginx ``` Проверить, не завершилась ли работа службы с ошибкой: ```shell systemctl is-failed nginx ``` ## Управление автозагрузкой Добавить службу в автозагрузку: ```shell systemctl enable nginx ``` Удалить из автозагрузки: ```shell systemctl disable nginx ``` Проверить, добавлена ли служба в автозагрузку: ```shell systemctl is-enabled nginx ``` Удалить из автозагрузки и снова добавить: ```shell systemctl reenable nginx ``` Восстановить параметры автозагрузки по умолчанию: ```shell systemctl preset nginx ``` # Логирование в systemd Source: https://timeweb.cloud/docs/unix-guides/logging-systemd Системный менеджер `systemd` присутствует в большинстве современных Linux-дистрибутивов, в том числе, в Ubuntu, Debian и CentOS. С помощью `systemd` выполняется управление сервером и службами (например, их запуск и остановка), а также — ведение логов. В журнал `systemd` (компонент `journal`) собираются все системные сообщения — от ядра, служб и приложений. Логирование `systemd` может использоваться параллельно с `syslog` либо заменить его. Для работы с логами используется утилита `journalctl`. ## Просмотр и фильтрация логов ### Отображение времени в логах Просматривать записи логов можно как с указанием местного времени, так и с указанием UTC — достаточно внести в команду опцию `--utc`. По умолчанию в выводе будет указано местное время. Чтобы убедиться, что часовой пояс задан верно, можно выполнить: ```shell timedatectl status ``` Корректное местное время должно быть выведено в строке `Local time`. Если требуются изменения, можно просмотреть весь список часовых поясов: ```shell timedatectl list-timezones ``` После чего установить нужный: ```shell timedatectl set-timezone часовой_пояс ``` Далее можно еще раз выполнить проверку с помощью `timedatectl status`. ### Фильтр по определенной загрузке Вывод событий из последней (то есть текущей) загрузки выполняется с помощью опции `-b`: ```shell journalctl -b ``` Если нужно указать UTC вместо местного времени: ```shell journalctl -b --utc ``` Вывод списка доступных загрузок: ```shell journalctl --list-boots ``` Пример вывода: ``` -2 b94zf405f9424a1d39b667ce0bdbcff7 Wed 2020-07-08 08:34:12 MSK—Wed 2020-07-08 08:41:22 MSK -1 t80dc883d180dc04z5db0abcb0dc5fa2 Wed 2020-07-08 09:01:46 MSK—Wed 2020-07-08 09:28:08 MSK 0 8cabc9420ea34a8d868e3014895269d8 Wed 2020-07-08 11:56:57 MSK—Wed 2020-07-08 13:51:27 MSK ``` Чтобы просмотреть данные конкретной загрузки из списка, необходимо указать ее порядковый номер (первая колонка в выводе) или ID (вторая колонка): ```shell journalctl -b -1 # Или: journalctl -b t80dc883d180dc04z5db0abcb0dc5fa2 ``` Если по умолчанию данные предыдущих загрузок не сохраняются, необходимо внести изменения в конфигурационный файл: ```shell sudo nano /etc/systemd/journald.conf ``` И заменить значение для `Storage` на `persistent`: ```shell [Journal] Storage=persistent ``` ### Фильтр по временному промежутку Если интересующий нас период не совпадает с той или иной загрузкой, можно указывать конкретное время. Для этого используются: - опции `--since` (начиная с) и `--until` (до) - время в формате: `"ГГГГ-ММ-ДД ЧЧ:ММ:СС"` - ключи `yesterday`, `today`, `now` (вчера, сегодня, сейчас) Например, вывод событий с указанного времени по текущий момент: ```shell journalctl --since "2020-07-06 07:00:00" ``` Вывод событий за конкретный период: ```shell journalctl --since "2020-07-06 07:00:00" --until "2020-07-06 08:00:00" ``` Вывод событий со вчерашнего дня: ```shell journalctl --since yesterday ``` ### Фильтр по службе (юниту) Если нас интересуют только события конкретной службы, можно использовать: ```shell journalctl -u имя_службы ``` Дополнительно могут быть внесены временные параметры. Например, чтобы просмотреть события Nginx за определенные часы, выполним: ```shell journalctl -u nginx.service --since 10:00 --until 16:00 ``` Можно указывать более одного юнита: ```shell journalctl -u nginx.service -u php-fpm.service --since today ``` ### Фильтр событий ядра Можно отдельно вывести только события ядра. Для этого используется `-k`. Например, чтобы просмотреть такие события в одной из предыдущих загрузок, выполним: ```shell journalctl -k -2 ``` ### Фильтр по пользователю, группе или процессу Есть возможность просматривать данные для конкретного PID, UID, GID: ```shell journalctl _PID=id_процесса journalctl _UID=id_пользователя journalctl _GID=id_группы ``` Например, чтобы вывести только сегодняшние события, связанные с определенным процессом, выполним: ```shell journalctl _PID=544 --since today ``` Получить список всех ID, записи о которых есть в логах, можно с помощью: ```shell journalctl -F _UID # Аналогично для GID: journalctl -F _GID ``` ### Фильтр по приоритету С помощью опции `-p` можно вывести только события, начиная с определенного уровня приоритета. Уровни следующие: - 0: emerg (авария, неработоспособность системы) - 1: alert (тревога, требует немедленного внимания) - 2: crit (критическое состояние) - 3: err (ошибка) - 4: warning (предупреждение) - 5: notice (уведомление) - 6: info (информация) - 7: debug (отладка) В команде можно указывать как название уровня, так и его числовое обозначение. Например, следующей командой мы можем вести все события в текущей загрузке, имеющие уровень 3 (ошибка) и выше: ```shell journalctl -p err -b # Или: journalctl -p 3 -b ``` ## Настройка отображения ### Базовые настройки Сокращение строк по ширине окна терминала: ```shell journalctl --no-full ``` Запись в стандартный вывод (чтобы сделать возможной обработку другими утилитами, например, `grep`, или сохранение в текстовый файл): ```shell journalctl --no-pager ``` ### Форматы вывода Специфический формат вывода можно указать с помощью `-o`: ```shell journalctl -o формат ``` Доступные форматы: - `cat` — только само сообщение из лога, без служебной информации; - `export` — бинарный формат, подходящий для экспорта или бэкапов логов; - `json` — стандартный `.json`, с одной записью на строку; - `json-pretty` или `json-sse` — удобный для чтения `.json`; - `short` — формат вывода `syslog`; - `short-iso` — формат вывода `syslog` с метками времени по стандарту ISO8601; - `short-monotonic` — формат вывода `syslog` с монотонными временными метками; - `short-precise` — формат вывода `syslog` с указанием времени с точностью до микросекунд; - `verbose` — максимально подробный вывод, со скрытыми полями. Пример использования: ```shell journalctl -b -u nginx.service -o json-pretty ``` ### Отображение недавних событий По умолчанию будут выведены последние 10 событий: ```shell journalctl -n ``` Их количество можно уточнить, например: ```shell journalctl -n 20 ``` Вывод на экран событий в режиме реального времени: ```shell journalctl -f ``` ## Управление журналом ### Занимаемый объем Узнать, сколько места на диске занимает журнал на текущий момент, можно с помощью: ```shell journalctl --disk-usage ``` ### Ограничение объема Вы можете настроить лимиты для журнала, отредактировав его конфигурационный файл: ```shell sudo nano /etc/systemd/journald.conf ``` Можно настроить следующие параметры: - `SystemMaxUse` — максимальный объем на диске, который может занимать журнал. - `SystemKeepFree` — объем, который должен оставаться свободным на диске после сохранения логов. - `SystemMaxFileSize` — максимальный объем файла лога, при достижении которого он должен быть удален. - `RuntimeMaxUse` — максимальный объем, который могут занимать логи в файловой системе `/run`. - `RuntimeKeepFree` — объем, который должен оставаться свободным в файловой системе `/run` после сохранения логов. - `RuntimeMaxFileSize` — максимальный объем файла лога, при достижении которого он должен быть удален из файловой системы `/run`. ### Удаление старых записей Для удаления старых логов и уменьшения объема журнала можно использовать два способа. Способ 1. Можно указать объем, к которому нужно привести журнал. Это запустит удаление старых записей до тех пор, пока журнал не будет уменьшен до указанного объема. Например: ```shell sudo journalctl --vacuum-size=1G ``` Способ 2. Можно указать период, данные за которые должны быть сохранены. В этом случае все записи, которые будут старше указанного периода, удалятся. Например: ```shell sudo journalctl --vacuum-time=1years ``` В этом случае будут удаляться все записи, кроме тех, что были созданы за последний год. # Аудит системных событий Source: https://timeweb.cloud/docs/unix-guides/auditing-system-events Для поддержания безопасности и стабильности системы важно следить за ее состоянием. В основном это достигается с помощью мониторинга, анализа логов, а также — аудита системных событий. Хотя аудит сам по себе не является средством защиты от нежелательных действий, он полезен для обнаружения нарушений в безопасности и их дальнейшего устранения. Специальная утилита — `auditd` — позволяет вести мониторинг системных действий и анализировать их. Система аудита устанавливает триггеры на функции, ответственные за обработку системных вызовов (обращений к функциям ядра, без которых не может быть произведена ни одна операция в системе), после чего эти триггеры срабатывают согласно пользовательским правилам. Информация об всех действиях записывается в журнал и после может быть проанализирована администратором. С помощью `auditd` можно отслеживать, например, такие события, как запуск и завершение работы системы; запуск и остановка приложений; доступ к файлам и изменение прав на них; изменение информации о пользователе или группе; установка сетевого соединения, изменение настроек сети и многое другое. ## Установка В системе CentOS пакет `audit`, как правило, установлен по умолчанию. Для установки на Debian / Ubuntu выполните: ```shell sudo apt install auditd ``` В пакет входит несколько утилит: - `auditctl` — управление системой аудита, получение информации о состоянии системы, добавление и удаление правил; - `autrace` — аудит событий, вызываемых процессами (аналогично `strace`); - `ausearch` — поиск событий в журналах; - `aureport` — создание отчетов о работе аудита. Основные настройки демона `auditd` (формат логов, частота обновления, максимальный размер и др.) находятся в конфигурационном файле `/etc/audit/auditd.conf`. Как правило, стандартной конфигурации достаточно для эффективной работы с аудитом, но вы можете дополнительно изменить настройки по своему усмотрению. Подробную информацию о каждом параметре можно получить, например, [здесь](https://www.opennet.ru/man.shtml?topic=auditd.conf&category=5&russian=0), либо выполнив `man auditd.conf`. ## Создание правил Настройка правил выполняется с помощью утилиты `auditctl` и следующих опций: - `-l` — вывести список созданных правил (если выполнить команду сразу после установки `auditd`, список правил будет пустым); - `-а` — добавить новое правило; - `-d` — удалить правило из списка; - `-D` — удалить все правила. Для создания нового правила используется команда: ```shell sudo auditctl -a список,действие -S имя_системного_вызова -F фильтр ``` **Список** — это список событий, в который нужно добавить правило. Для упрощения можно воспринимать список как фильтр, позволяющий сделать правило точнее. Существует пять списков: - `task` — события, связанные с созданием процессов; - `entry` — события, происходящие при входе в системный вызов; - `exit` — события, происходящие во время выхода из системного вызова; - `user` — события, использующие параметры пользовательского пространства (`uid`, `pid` и `gid`); - `exclude` — используется для исключения событий. На практике в основном используются `entry` и `exit`. **Действие** — определяет, что нужно выполнить после события: записать его в журнал (`always`) или не записывать (`never`). **Имя системного вызова** — при обращении к какому вызову должен срабатывать триггер и перехватываться событие (например, `open`, `close`, `exit`, и т.д.) **Фильтр** — необязательная опция, которая используется для указания дополнительных параметров. Например, если нужно отслеживать обращения к файлам из каталога `/etc`, можно указать его в данном параметре: ```shell sudo auditctl -a exit,always -S open -F path =/etc/ ``` Можно использовать более одного фильтра, например, дополнительно уточнить, что нас интересуют только события, связанные с изменением файлов: `w` (write) и `a` (attribute change): ```shell sudo auditctl -a exit,always -S open -F path=/etc/ -F perm=wa ``` При создании правил слежения за файлами можно не указывать имя системного вызова (опцию `-S`): ```shell sudo auditctl -a exit,always -F path=/etc/ -F perm=wa ``` Чтобы следить за конкретным файлом, можно использовать еще более сокращенный вариант (опция `-p` здесь заменяет `perm`): ```shell sudo auditctl -w /etc/passwd -p wa ``` ## Файл audit.rules Задавать правила возможно как через консоль, так и путем сохранения их в файле `/etc/audit/audit.rules`, в этом случае они будут действовать постоянно. Синтаксис правил точно такой же, нужно только опустить саму команду `auditctl`, например: ```shell -w /etc/passwd -p wa ``` В начале файла обычно задаются метаправила, определяющие базовые настройки: ```shell # Удалить все ранее созданные правила -D # Задать количество буферов, в которых будут храниться сообщения -b 320 # Действие при переполнении буферов: 0 — ничего не делать; 1 — отправить сообщение в dmesg, 2 — отправить ядро в панику -f 1 ``` Далее указываются пользовательские правила. Ниже приведены примеры правил для отслеживания различных событий. ```shell # Наблюдение за конфигурационными файлами системы аудита -w /etc/audit/auditd.conf -p wa -w /etc/audit/audit.rules -p wa # Наблюдение за журнальными файлами -w /var/log/audit/ -w /var/log/audit/audit.log # Настройки и задания at -w /var/spool/at -w /etc/at.allow -w /etc/at.deny # Файлы паролей и групп -w /etc/group -p wa -w /etc/passwd -p wa -w /etc/shadow # Конфигурационные и журнальные файлы входа в систему -w /etc/login.defs -p wa -w /etc/securetty -w /var/log/faillog -w /var/log/lastlog # Список и имена хостов -w /etc/hosts -p wa # Стартовые скрипты демонов -w /etc/init.d/ -w /etc/init.d/auditd -p wa # Настройки сервера SSH -w /etc/ssh/sshd_config # Изменение прав доступа к файлам -a entry,always -S chmod -S fchmod -S chown -S chown32 -S fchown -S fchown32 -S lchown -S lchown32 # Создание, открытие или изменение размеров файлов -a entry,always -S creat -S open -S truncate -S truncate64 -S ftruncate -S ftruncate64 # Создание и удаление каталогов -a entry,always -S mkdir -S rmdir # Удаление или создание ссылок -a entry,always -S unlink -S rename -S link -S symlink # Монтирование файловых систем -a entry,always -S mount -S umount -S umount2 ``` После внесения изменений в конфигурационный файл необходимо перезапустить `auditd`, чтобы они вступили в силу: ```shell sudo service auditd restart ``` ## Анализ журналов аудита Журнальные файлы системы аудита хранятся по пути `/var/log/audit`. Для работы с ними используются утилиты `aureport` и `ausearch`, которые, обладая очень большим количеством опций, позволяют получать информативные отчеты из файлов журнала согласно заданным параметрам. Полный список опций можно просмотреть с помощью `man aureport` (и `man ausearch` для второй утилиты) либо в различных источниках в сети, например, [здесь](https://www.opennet.ru/man.shtml?topic=aureport&category=8&russian=0). Например, для получения отчета о файлах необходимо использовать `aureport` с опцией `-f`: ```shell sudo aureport -f ``` Отчет можно ограничить только определенным промежутком времени: ```shell sudo aureport --start месяц/день/год часы:минуты:секунды --end месяц/день/год часы:минуты:секунды # Например: sudo aureport -f --start 08/20/20 12:00 --end 08/20/20 13:00 ``` Время можно указывать также с помощью параметров: - `now` (сейчас), - `recent` (десять минут назад), - `today` (сегодня, начиная с полуночи), - `yesterday` (вчерашний день), - `this-week` (неделя), - `this-month` (месяц), - `this-year` (год). Вывод команды содержит очень много информации, поэтому его можно сократить с помощью опции `--summary`, чтобы получить сводку обращений к каждому файлу. ```shell sudo aureport -f -i --start recent --summary ``` При обнаружении подозрительной попытки доступа, можно найти процесс, который ее произвел: ```shell sudo aureport -f -i --start today | grep /etc/passwd ``` Далее с помощью `ausearch` можно проанализировать каждое событие отдельно: ```shell sudo auserch -a номер_события ``` С помощью `ausearch` можно находить события и по другим параметрам, например: По идентификатору пользователя (опция `-ui`): ```shell sudo ausearch -ui 1111 --interpret ``` (Опция `--interpret` или `-i` позволяет выводить данные в удобном для чтения формате.) По имени исполняемого файла (опция `-x`): ```shell sudo ausearch -x /путь/к/файлу ``` По имени демона (опция `-tm`): ```shell sudo ausearch -tm cron ``` По системному вызову (опция `-sc`): ```shell sudo ausearch -sc ptrace ``` Для ограничения вывода определенным промежутком времени можно использовать тот же синтаксис, что для `aureport`. Полный список опций `ausearch` можно просмотреть с помощью `man ausearch` или в различных источниках в сети, например, [здесь](https://www.opennet.ru/man.shtml?topic=ausearch&category=8&russian=0). # Добавление дополнительного IP Source: https://timeweb.cloud/docs/unix-guides/adding-ip-addresses > [!NOTE] > Это инструкция для серверов с операционными системами Linux. Если вы используете сервер с ОС Windows, воспользуйтесь [этой статьей](https://timeweb.cloud/docs/windows-guides/adding-ip-addresses). Чтобы добавить на сервер дополнительный IP-адрес, сначала добавьте его в панели управления: - [для VDS](https://timeweb.cloud/docs/cloud-servers/manage-servers/network#dopolnitelnye-ip-adresa); - [для выделенных серверов](https://timeweb.cloud/docs/dedicated/adding-ip). После этого настройте IP-адрес внутри сервера — по инструкции ниже. По этой же инструкции вы можете настроить **статический адрес** для сервера; в этом случае при настройке вместо дополнительного IP указывайте основной IP-адрес сервера. В качестве примера в этой инструкции мы будем использовать адреса: - `192.0.2.70` - `198.51.100.12` - `2001:db8:a:a::a` - `2001:db8:b:b::b` Кроме самих адресов также потребуется указать маску сети, шлюз и название интерфейса. - **Маска сети**. Для IPv4-адресов указывайте `/24`, а для IPv6 — `/128` (или `/64`). В статье мы будем использовать `192.0.2.70/24` и `2001:db8:a:a::a/128`. - **Шлюз**. Для IPv4 используйте первый адрес в сети: например, для `192.0.2.70/24` шлюзом будет `192.0.2.1`. Для IPv6 используйте первый адрес в сети `/64`: возьмите первые четыре хекстета адреса и добавьте `::1`. Например, для `2001:db8:a:a::a` шлюзом будет `2001:db8:a:a::1`. Не заменяйте только последний хекстет IPv6-адреса. Например, для `2a03:6f00:a::2:866` шлюз — `2a03:6f00:a::1`, а не `2a03:6f00:a::2:1`. - **Интерфейс**. В зависимости от дистрибутива название интерфейса будет отличаться. Например, это могут быть `eth0` или `ens3`. Проверить имя интерфейса на своем сервере можно командой `ip addr`. Чтобы настроить IP-адрес на сервере, [подключитесь к нему по SSH](https://timeweb.cloud/docs/unix-guides/ssh). В статье будут указаны команды, которые нужно выполнить в консоли. Если во время настройки что-то пойдет не так и на сервере пропадет интернет, вы не сможете подключиться к нему удаленно по SSH. В этом случае вы можете использовать консоль в панели управления: для VDS — [консоль сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/console), для выделенного сервера — [IPMI](https://timeweb.cloud/docs/dedicated/using-ipmi). В консоли можно продолжить настройку или временно настроить интернет утилитой ip. ## Временная настройка Если вам нужно настроить сеть временно, вы можете использовать утилиту `ip`. Все изменения пропадут после перезагрузки сервера. Проверьте, какие адреса уже добавлены на интерфейс: ```shell ip addr ``` Добавьте нужные адреса командой ниже, указав верное значение IP. Для IPv4: ```shell ip addr add 192.0.2.70/24 dev eth0 ``` Для IPv6: ```shell ip addr add 2001:db8:a:a::a/128 dev eth0 ``` Проверьте, какой IPv4-адрес указан в качестве шлюза по умолчанию: ```shell ip route show default ``` Посмотреть шлюз для IPv6 можно так: ```shell ip -6 route show default ``` Если шлюза нет, добавьте его этой командой: ```shell ip route add default via 192.0.2.1 dev eth0 ``` Для IPv6: ```shell ip route add default via 2001:db8:a:a::1 dev eth0 onlink ``` ## Постоянная настройка Чтобы изменения сохранились в конфигурации сервера и не сбросились при перезагрузке, используйте инструкции ниже. > [!NOTE] > При добавлении дополнительного IP-адреса основной IP-адрес должен остаться в конфигурации сетевого интерфейса. Укажите все адреса, которые должны быть назначены серверу: основной и дополнительные. Ubuntu Ubuntu использует [netplan](https://netplan.readthedocs.io/en/stable/) для сетевых настроек, все конфигурационные файлы находятся в `/etc/netplan/` и называются произвольно. Своим файлам вы тоже можете выбрать произвольные названия, но они должны иметь расширение `.yaml`. В файлах формата YAML важно выставлять одинаковые отступы пробелами, табуляция не допускается. С помощью отступов вы указываете вложенность конфигурации, например, что настройка маршрутов `routes` вложена в настройки интерфейса `eth0`. После выполнения этой инструкции у вас будет два файла: для IPv4 и IPv6. Вы можете держать их вместе одновременно без конфликтов, потому что `netplan` объединит их в одну конфигурацию. Посмотреть на объединенную конфигурацию можно этой командой: ```shell netplan get ``` Вот пример вывода команды, который получится, если следовать каждому пункту в этой инструкции: ```yml network: version: 2 renderer: networkd ethernets: eth0: addresses: - "192.0.2.70/24" - "198.51.100.12/24" - "2001:db8:a:a::a/128" - "2001:db8:b:b::b/128" nameservers: addresses: - "1.1.1.1" - "1.0.0.1" - "2606:4700:4700::1111" - "2606:4700:4700::1001" dhcp4: false dhcp6: false accept-ra: false routes: - to: "0.0.0.0/0" via: "192.0.2.1" - to: "::/0" via: "2001:db8:a:a::1" on-link: true ``` В этой конфигурации название интерфейса `eth0` на некоторых версиях Ubuntu придется поменять. Проверьте имя интерфейса на своем сервере этой командой: ```shell ip addr ``` ### Настройка IPv4 в Ubuntu Создайте файл `/etc/netplan/99-ipv4.yaml`: ```shell nano /etc/netplan/99-ipv4.yaml ``` Скопируйте эти строки, заменив адреса (`addresses`) и шлюз (`via`) на нужные значения: ```yml network: version: 2 renderer: networkd ethernets: eth0: dhcp4: false addresses: - "192.0.2.70/24" - "198.51.100.12/24" routes: - to: "0.0.0.0/0" via: "192.0.2.1" nameservers: addresses: - "1.1.1.1" - "1.0.0.1" ``` Закройте права на чтение этого файла всем, кроме `root`: ```shell chmod 600 /etc/netplan/99-ipv4.yaml ``` ### Настройка IPv6 в Ubuntu Создайте файл `/etc/netplan/99-ipv6.yaml`: ```shell nano /etc/netplan/99-ipv6.yaml ``` Скопируйте эти строки, заменив адреса (`addresses`) и шлюз (`via`) на нужные значения: ``` network: version: 2 renderer: networkd ethernets: eth0: accept-ra: false dhcp6: false addresses: - "2001:db8:a:a::a/128" - "2001:db8:b:b::b/128" routes: - to: "::/0" via: "2001:db8:a:a::1" on-link: true nameservers: addresses: - "2606:4700:4700::1111" - "2606:4700:4700::1001" ``` Закройте права на чтение этого файла всем, кроме `root`: ```shell chmod 600 /etc/netplan/99-ipv6.yaml ``` Отключите `dhclient6` из автозагрузки. В Ubuntu 22.04 и более ранних версиях выполните: ```shell systemctl disable dhclient6.service ``` В Ubuntu 24.04 и 26.04: ```bash systemctl disable dhcpcd6.service ``` Примените конфигурацию `systemd`: ```shell systemctl daemon-reload ``` ### Отключение прошлых настроек в Ubuntu Проверьте директорию `/etc/netplan/`, в ней могут быть другие настройки интерфейсов, которые будут конфликтовать с вашими. На чистой установке будет файл `50-cloud-init.yaml`, остальные можно проверить этой командой: ```shell ls -a /etc/netplan/ ``` Переименуйте файл `/etc/netplan/50-cloud-init.yaml`, главное — чтобы он не заканчивался на `.yaml`: ```shell mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml-backup-$(date +"%Y%m%d") ``` Повторите это со всеми файлами, кроме `99-ipv4.yaml` и `99-ipv6.yaml`, если они есть. В старых версиях Ubuntu также могут быть файлы `01-netcfg.yaml` или `00-installer-config.yaml`, их тоже нужно переименовать: ```shell mv /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml-backup-$(date +"%Y%m%d") mv /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml-backup-$(date +"%Y%m%d") ``` Чтобы `cloud-init` больше не создавал свой файл после перезагрузки сервера, создайте файл `/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg`: ```shell nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg ``` И пропишите в нем эту строку: ```shell network: {config: disabled} ``` ### Прослушивание адреса в Ubuntu После перезагрузки сервера адрес может не успеть добавиться, когда другие службы захотят его прослушивать. Поэтому разрешаем `bind` на адреса, которых нет на интерфейсе. Откройте файл `/etc/sysctl.conf`: ```shell nano /etc/sysctl.conf ``` Допишите в него эти строки: ```shell net.ipv4.ip_nonlocal_bind = 1 net.ipv6.ip_nonlocal_bind = 1 ``` Перезагрузите конфигурацию `sysctl`: ```shell sysctl -p /etc/sysctl.conf ``` ### Применение настроек в Ubuntu Примените конфиг `netplan`: ```shell netplan --debug apply ``` Проверьте, что адреса добавились на интерфейс: ```shell ip addr ``` После этого рекомендуем перезагрузить сервер и проверить, что адреса работают верно. Debian/Astra > [!NOTE] > Начиная с Debian 12, для настройки сети используется Netplan. Если вы работаете с этой версией, воспользуйтесь инструкцией для Ubuntu. Debian и Astra Linux используют файл [/etc/network/interfaces](https://wiki.debian.org/NetworkConfiguration) для сетевых настроек. Вот пример итоговой конфигурации, если следовать каждому пункту в этой инструкции: ```shell auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.0.2.70/24 gateway 192.0.2.1 post-up ip addr add 198.51.100.12/24 dev eth0 pre-down ip addr del 198.51.100.12/24 dev eth0 auto eth0 allow-hotplug eth0 iface eth0 inet6 static address 2001:db8:a:a::a/128 gateway 2001:db8:a:a::1 post-up ip addr add 2001:db8:b:b::b/128 dev eth0 pre-down ip addr del 2001:db8:b:b::b/128 dev eth0 ``` ### Настройка IPv4 Откройте файл `/etc/network/interfaces`: ```shell nano /etc/network/interfaces ``` Закомментируйте или удалите текущие настройки интерфейса `eth0`: ```shell #allow-hotplug eth0 #iface eth0 inet dhcp ``` Добавьте следующие строки, заменив адреса и шлюз (`gateway`) на нужные значения: ```shell auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.0.2.70/24 gateway 192.0.2.1 post-up ip addr add 198.51.100.12/24 dev eth0 pre-down ip addr del 198.51.100.12/24 dev eth0 ``` ### Настройка IPv6 Откройте файл `/etc/network/interfaces`: ```shell nano /etc/network/interfaces ``` Добавьте в него следующие строки, заменив адреса и шлюз (`gateway`) на нужные значения: ```bash auto eth0 allow-hotplug eth0 iface eth0 inet6 static address 2001:db8:a:a::a/128 post-up ip addr add 2001:db8:b:b::b/128 dev eth0 post-up ip -6 route replace default via 2001:db8:a:a::1 dev eth0 onlink pre-down ip addr del 2001:db8:b:b::b/128 dev eth0 pre-down ip -6 route del default via 2001:db8:a:a::1 dev eth0 onlink ``` Отключите `dhclient6` из автозагрузки: ```shell systemctl disable dhclient6.service ``` В некоторых образах служба DHCPv6 может называться `dhcpcd6.service`. Если `dhclient6.service` не найдена, проверьте наличие `dhcpcd6.service` и отключите ее. Примените конфигурацию `systemd`: ```shell systemctl daemon-reload ``` ### Отключение прошлых настроек Проверьте директорию `/etc/network/interfaces.d/`, в ней могут быть другие настройки интерфейсов, которые будут конфликтовать с вашими. На чистой установке будет файл `50-cloud-init`, остальные можно проверить этой командой: ```shell ls -a /etc/network/interfaces.d/ ``` Переместите `/etc/network/interfaces.d/50-cloud-init` в другую директорию, например, в `/root/`: ```shell mv /etc/network/interfaces.d/50-cloud-init /root/50-cloud-init-backup-$(date +"%Y%m%d") ``` Чтобы `cloud-init` больше не создавал свой файл после перезагрузки сервера, создайте файл `/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg`: ```shell nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg ``` И добавьте в него эту строку: ```shell network: {config: disabled} ``` ### Прослушивание адреса После перезагрузки сервера адрес может не успеть добавиться, когда другие службы захотят его прослушивать. Поэтому разрешаем `bind` на адреса, которых нет на интерфейсе. Откройте файл `/etc/sysctl.conf`: ```shell nano /etc/sysctl.conf ``` Допишите в него эти строки: ```shell net.ipv4.ip_nonlocal_bind = 1 net.ipv6.ip_nonlocal_bind = 1 ``` Перезагрузите конфигурацию `sysctl`: ```shell sysctl -p /etc/sysctl.conf ``` ### Применение настроек Перезапустите службу `networking`: ```shell systemctl restart networking.service ``` Проверьте, что адреса добавились на интерфейс: ```shell ip addr ``` После этого рекомендуем перезагрузить сервер и проверить, что адреса работают верно. CentOS/AlmaLinux CentOS и AlmaLinux используют [NetworkManager](https://networkmanager.dev/) для сетевых настроек. Вместо редактирования конфигурационных файлов можно использовать утилиту `nmcli` или `nmtui`. Перед выполнением команд из инструкции проверьте имя соединения: ```shell nmcli connection show ``` Отсюда вам нужно значение `NAME` — в нашем случае это `ens3`, в следующих командах будет использоваться это имя: ```shell NAME UUID TYPE DEVICE ens3 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ethernet ens3 ``` Чтобы не исправлять каждую команду в инструкции, вы можете временно переименовать соединение на `ens3`, а потом вернуть удобное имя. Например, если соединение называется `eth0`, команда будет выглядеть так: ```shell nmcli connection modify eth0 connection.id ens3 ``` В последних версиях CentOS `NetworkManager` сохраняет настройки в директорию `/etc/NetworkManager/system-connections/`. Раньше использовались [ifcfg](https://networkmanager.dev/docs/api/latest/nm-settings-ifcfg-rh.html)\-файлы в `/etc/sysconfig/network-scripts/`, но они [устарели](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/9.0_release_notes/deprecated_functionality#BZ-1894877) и скоро будут удалены. Вот пример содержания итоговой конфигурации в `/etc/NetworkManager/system-connections/`, который получится, если следовать каждому пункту в этой инструкции: ```shell [connection] id=ens3 uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx type=ethernet interface-name=ens3 timestamp=1719197216 [ethernet] [ipv4] address1=192.0.2.70/24,192.0.2.1 address2=198.51.100.12/24 dns=1.1.1.1;1.0.0.1; method=manual [ipv6] addr-gen-mode=eui64 address1=2001:db8:a:a::a/128,2001:db8:a:a::1 address2=2001:db8:b:b::b/128 dns=2606:4700:4700::1111;2606:4700:4700::1001; method=manual [proxy] ``` ### Настройка IPv4 Добавьте первый адрес к соединению: ```shell nmcli connection modify ens3 ipv4.addresses 192.0.2.70/24 ``` С помощью `+` перед `ipv4.addresses` можно добавить второй адрес: ```shell nmcli connection modify ens3 +ipv4.addresses 198.51.100.12/24 ``` Аналогично с помощью `-` перед `ipv4.addresses` можно удалить адрес, если вы ошиблись. Проверить все добавленные адреса можно этой командой: ```shell nmcli connection show ens3 | grep addresses ``` Добавьте шлюз: ```shell nmcli connection modify ens3 ipv4.gateway 192.0.2.1 ``` Остальные команды можно просто скопировать. В них прописаны настройки DNS и указывается ручной способ конфигурации. ```shell nmcli connection modify ens3 ipv4.dns 1.1.1.1 nmcli connection modify ens3 +ipv4.dns 1.0.0.1 nmcli connection modify ens3 ipv4.method manual ``` ### Настройка IPv6 Конфигурация IPv6 выполняется по такому же принципу, как IPv4, только названия настроек теперь начинаются с `ipv6`. Добавьте ваши адреса и шлюз: ```shell nmcli connection modify ens3 ipv6.addresses 2001:db8:a:a::a/128 nmcli connection modify ens3 +ipv6.addresses 2001:db8:b:b::b/128 nmcli connection modify ens3 ipv6.gateway 2001:db8:a:a::1 ``` После этого скопируйте эти команды: ```shell nmcli connection modify ens3 ipv6.dns 2606:4700:4700::1111 nmcli connection modify ens3 +ipv6.dns 2606:4700:4700::1001 nmcli connection modify ens3 ipv6.method manual ``` ### Отключение прошлых настроек Проверьте директорию `/etc/sysconfig/network-scripts/`, в ней могут быть другие настройки интерфейсов, которые будут конфликтовать с вашими. На чистой установке будет файл `ifcfg-ens3`, созданный `cloud-init`. Остальные можно проверить этой командой: ```shell ls -a /etc/sysconfig/network-scripts/ ``` Проверьте, что `ifcfg-ens3` действительно создан `cloud-init`. Он должен начинаться со слов «Created by cloud-init on instance boot automatically»: ```shell head /etc/sysconfig/network-scripts/ifcfg-ens3 ``` Переместите `/etc/sysconfig/network-scripts/ifcfg-ens3` в другую директорию, например, в `/root/`: ```shell mv /etc/sysconfig/network-scripts/ifcfg-ens3 /root/ifcfg-ens3-backup-$(date +"%Y%m%d") ``` Чтобы изменения сохранились после перезагрузки сервера, создайте файл `/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg`: ```shell nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg ``` И пропишите в нем эту строку: ```shell network: {config: disabled} ``` ### Прослушивание адреса После перезагрузки сервера адрес может не успеть добавиться, когда другие службы захотят его прослушивать. Поэтому разрешаем `bind` на адреса, которых нет на интерфейсе. Откройте файл `/etc/sysctl.conf`: ```shell nano /etc/sysctl.conf ``` Допишите в него эти строки: ```shell net.ipv4.ip_nonlocal_bind = 1 net.ipv6.ip_nonlocal_bind = 1 ``` Перезагрузите конфигурацию `sysctl`: ```shell sysctl -p /etc/sysctl.conf ``` ### Применение настроек Перезапустите службу `NetworkManager`: ```shell systemctl restart NetworkManager.service ``` Проверьте, что адреса добавились на интерфейс: ```shell ip addr ``` После этого рекомендуем перезагрузить сервер и проверить, что адреса работают верно. BitrixVM 1. В меню Битрикса выберите: *2\. Configure localhost settings - 3. Configure network interface manually*. 2. Укажите следующие параметры: - **Выберите сетевой интерфейс:** например, `ens3`. - **Enter IP address:** новый IP-адрес сервера (можно указать несколько через запятую, без пробелов). Например: `192.0.2.70`. - **Enter default gateway address:** шлюз по умолчанию. Например: `192.0.2.1`. - **Would you like to configure DNS server**: `y`. - **Enter DNS server address:** адрес DNS-сервера. Если указывается несколько серверов, разделяйте их пробелами. Например: `1.1.1.1 1.0.0.1`. 3. Проверить введенные данные и дать согласие на изменение параметров сети сервера (Please confirm changes). 4. Проверьте, что адреса добавились на интерфейс в меню BitrixVM или при помощи команды: ```shell ip addr ``` После этого рекомендуем перезагрузить сервер и проверить, что адреса работают верно. Arch Linux В Arch Linux для настройки сети используется `systemd-networkd`. Все конфигурационные файлы располагаются в директории `/etc/systemd/network/` и должны иметь расширение `.network`. Перед началом убедитесь, что службы `systemd-networkd` и `systemd-resolved` запущены и добавлены в автозагрузку: ```shell sudo systemctl enable --now systemd-networkd.service ``` ```shell sudo systemctl enable --now systemd-resolved.service ``` ### Определение имени сетевого интерфейса Узнайте имя интерфейса с помощью команды: ```shell ip a ``` Пример вывода: ```shell 2: eth0: mtu 1500 ... inet 198.51.100.12/24 ... ``` В нашем примере интерфейс называется `eth0`. ### Настройка IPv4 Создайте файл `/etc/systemd/network/10-static-ipv4.network`: ```shell sudo nano /etc/systemd/network/10-static-ipv4.network ``` Скопируйте в него следующий шаблон, заменив IP-адреса и шлюз на свои значения: ```shell [Match] Name=eth0 [Network] Address=198.51.100.12/24 Address=198.51.100.12/24 Gateway=192.0.2.1 DNS=1.1.1.1 DNS=1.0.0.1 DHCP=no ``` ### Настройка IPv6 Создайте файл `/etc/systemd/network/20-static-ipv6.network`: ```shell sudo nano /etc/systemd/network/20-static-ipv6.network ``` Вставьте настройки, заменив адреса и шлюз: ```bash [Match] Name=eth0 [Network] Address=2001:db8:a:a::a/128 DNS=2606:4700:4700::1111 DNS=2606:4700:4700::1001 DHCP=no IPv6AcceptRA=no [Route] Destination=::/0 Gateway=2001:db8:a:a::1 GatewayOnLink=yes ``` ### Отключение старых конфигураций Убедитесь, что в директории `/etc/systemd/network/` нет других активных конфигураций, которые могут конфликтовать с вашими. Например, файл `10-cloud-init-eth0.network`. Его можно переименовать: ```shell sudo mv /etc/systemd/network/10-cloud-init-eth0.network /etc/systemd/network/10-cloud-init-eth0.network_old ``` ### Настройте прослушивание адреса После перезагрузки IP-адрес может не успеть привязаться к интерфейсу до запуска других служб. Чтобы разрешить `bind` на ещё не добавленные IP, создайте или отредактируйте файл `/etc/sysctl.d/99-nonlocal-bind.conf`: ```shell sudo nano /etc/sysctl.d/99-nonlocal-bind.conf ``` Добавьте строки: ```shell net.ipv4.ip_nonlocal_bind = 1 net.ipv6.ip_nonlocal_bind = 1 ``` Примените конфигурацию: ```shell sudo sysctl --system ``` ### Применение настроек Перезапустите `systemd-networkd`, чтобы применить конфигурацию: ```shell sudo systemctl restart systemd-networkd ``` Проверьте, что адреса добавились: ```shell ip a ``` После этого рекомендуем перезагрузить сервер и проверить, что адреса работают верно. Теперь интерфейс должен быть настроен, и IP-адреса — как IPv4, так и IPv6 — привязаны к нему. Рекомендуется перезагрузить сервер и убедиться, что конфигурация работает корректно после старта. # Добавление и удаление диска Source: https://timeweb.cloud/docs/unix-guides/adding-removing-disk > [!NOTE] > Это инструкция для серверов с операционными системами Linux. Если вы используете сервер с **ОС Windows**, воспользуйтесь [этой статьей](https://timeweb.cloud/docs/windows-guides/add-disk). После подключения диска в панели управления его необходимо настроить на сервере. Подготовка диска в системе Linux разделяется на несколько этапов: 1. Создание раздела на диске. 2. Создание файловой системы. 3. Монтирование диска для работы (при необходимости). 4. Создание записи в файле `/etc/fstab`. > [!NOTE] > Если ваш сервер был создан до мая 2025 года, диски будут иметь имена вида `vd*`. На серверах, созданных позже, диски будут называться `sd*`. Учитывайте это при выполнении действий из инструкции. Ниже мы рассмотрим подготовку диска `sdb` (`sda` — основной диск сервера, `vda` по умолчанию зарезервирован для [cloud-init](https://timeweb.cloud/docs/cloud-servers/manage-servers/cloud-init)). Замените это значение в приводимых командах на реальное имя диска в вашей системе. Проверить имена дисков можно с помощью одной из команд, описанных в статье «[Данные о дисках](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-data-df-lsblk-parted-fdisk)», например: ```shell lsblk ``` Вы получите примерно такой вывод: ```shell NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop1 7:1 0 63.9M 1 loop /snap/core20/2318 loop2 7:2 0 87M 1 loop /snap/lxd/29351 loop3 7:3 0 50.9M 1 loop /snap/snapd/24505 loop4 7:4 0 63.8M 1 loop /snap/core20/2599 loop5 7:5 0 89.4M 1 loop /snap/lxd/31333 loop6 7:6 0 50.9M 1 loop /snap/snapd/24718 sda 8:0 0 15G 0 disk └─sda1 8:1 0 15G 0 part / sdb 8:16 0 10G 0 disk vda 252:0 0 1M 1 disk ``` Где `sdb` — наш подключенный диск. ## Создание раздела на диске Создать раздел на диске можно утилитой `fdisk`. Для этого запустите консоль и введите команду: ```shell fdisk /dev/sdb ``` 1. Создайте новый раздел командой `n`. 2. Выберите тип раздела: для этого введите команду `p`. 3. Остальные параметры оставьте без изменений, просто нажав `Enter`. 4. Для сохранения изменений введите команду `w`. ![Scr 20250619 Pult](https://content.timeweb.com/assets/29f60c65-51a8-4924-926b-ad026c3771dd.png?width=1400&height=810) Повторно выполните команду, чтобы убедиться, что раздел был создан: ```shell lsblk ``` В нашем примере — `sdb1`. ## Создание файловой системы Следующий этап добавления диска — это создание в новом разделе файловой системы. В качестве примера возьмем систему `EXT4`. Для ее создания введите команду: ```shell mkfs.ext4 /dev/sdb1 ``` Файловая система создана. ## Монтирование диска Если вы хотите сразу начать работать с диском, его необходимо примонтировать к определенной директории. Разные диски необходимо монтировать к разным директориям. Допустим, если в дальнейшем вы будете добавлять еще один диск — `sdc`, для его монтирования будет нужно создать отдельную директорию. 1. Создайте директорию, к которой будет примонтирован диск, командой: ```shell mkdir /mnt/disk2 ``` 2. Примонтируйте диск к директории: ```shell mount -o barrier=0 /dev/sdb1 /mnt/disk2 ``` Теперь вы можете сохранять файлы в директории `/mnt/disk2`, и они будут записаны на новый диск. ## Создание записи в файле /etc/fstab Чтобы привязка диска к директории сохранилась после перезагрузки, необходимо добавить запись в `/etc/fstab`. Можно указать буквенный идентификатор устройства (например, `sdb1`), но при переподключении диска или удалении другого диска этот идентификатор может измениться. Поэтому лучше использовать `UUID`, который уникален для каждого диска. Получить `UUID` можно при помощи команды: ```shell lsblk -o NAME,UUID ``` Пример вывода: ```shell sda └─sda1 fcafbb78-fd6c-4083-82d8-3c06bd6ad4b1 sdb └─sdb1 534c6694-d2b0-4867-843b-b8a934bf0e5d vda 041E-4E90 ``` В нашем случае `534c6694-d2b0-4867-843b-b8a934bf0e5d` — это UUID, который нужно использовать в файле `/etc/fstab`. 1. Добавьте запись в `/etc/fstab`, указав `UUID` добавленного диска. Откройте файл для редактирования: ```shell nano /etc/fstab ``` 2. Добавьте строку с `UUID` вашего диска: ```shell UUID= /mnt/disk2 ext4 defaults 0 2 ``` ## Удаление диска > [!NOTE] > Удаление локального диска будет недоступно, пока на сервере создана [точка восстановления](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup#snapshoty). #### Если на сервере был только один дополнительный диск 1. Откройте файл: ```bash nano /etc/fstab ``` 2. Удалите или закомментируйте строку с этим диском. 3. Сохраните изменения: нажмите `Ctrl + X`, затем `Y` и Enter. 4. Отмонтируйте диск, указав корректную точку монтирования вместо `/mnt/disk2`: ```shell umount -l /mnt/disk2 ``` 5. Удалите диск в [панели управления](https://timeweb.cloud/my/) в разделе «Конфигурация». #### Если на сервере несколько дополнительных дисков После удаления одного из дисков их имена в системе могут измениться — например, `sdd` может стать `sdc`. В этом случае потребуется обновить конфигурацию. 1. Откройте файл: ```bash nano /etc/fstab ``` 2. Удалите или закомментируйте запись о диске, который был удален. 3. Проверьте текущие имена дисков: ```bash lsblk ``` Например, если ранее были диски `sdc` и `sdd`, после удаления `sdc` диск `sdd` может получить имя `sdc`. 4. Примонтируйте оставшийся диск, указав его новое имя устройства: ```bash mount -o barrier=0 /dev/sdc1 /mnt/disk3 ``` В данном примере `/mnt/disk3` — прежняя точка монтирования третьего диска. 5. Обновите запись в `/etc/fstab`, указав новое имя устройства: ```bash nano /etc/fstab ``` 6. Перезагрузите сервер, чтобы применить изменения. 7. Удалите диск в [панели управления](https://timeweb.cloud/my/) в разделе «Конфигурация». # Изменение размера диска Source: https://timeweb.cloud/docs/unix-guides/disk-resizing > [!NOTE] > Это инструкция для серверов с операционными системами **Linux**. Если вы используете сервер с **ОС Windows**, воспользуйтесь [этой статьей](https://timeweb.cloud/docs/windows-guides/disk-resizing). ## Изменение размера системного диска Перед увеличением размера диска на VDS убедитесь, что на сервере отсутствует [точка восстановления](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup#snapshoty). При ее наличии изменить размер диска будет невозможно. ### Изменение размера диска в панели управления 1. Создайте [резервную копию диска](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup), чтобы в случае непредвиденной ситуации данные не были утеряны. 2. Измените размер диска в панели [timeweb.cloud/my](https://timeweb.cloud/my/): - Выберите нужный сервер из списка, перейдите в раздел «Конфигурация». - Выберите подходящую конфигурацию либо настройте размер диска вручную. - Нажмите «Сохранить и перезагрузить». Более подробная информация доступна [здесь](https://timeweb.cloud/docs/cloud-servers/manage-servers/server-configuration). ### Расширение разделов на диске > [!NOTE] > Данную процедуру необходимо выполнять **только в случае**, если вы ранее самостоятельно меняли разметку диска и в результате на нем создано **два логических раздела и больше**. > > > В остальных случаях (если на диске 1 раздел; если на диске 2 раздела, один из которых — swap) — диск будет переразмечен автоматически, и с вашей стороны никакие действия не требуются. > > > Процесс пересоздания / расширения разделов не приводит к удалению данных на диске. **1**. Загрузите сервер [с диска восстановления](https://timeweb.cloud/docs/cloud-servers/manage-servers/boot-mode). **2**. Определите имя системного диска: ```bash lsblk ``` Пример вывода: ```bash NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 30G 0 disk ├─sda1 8:1 0 10G 0 part / ├─sda2 8:2 0 4G 0 part ├─sda14 8:14 0 4M 0 part ├─sda15 8:15 0 106M 0 part /boot/efi └─sda16 259:0 0 913M 0 part /boot vda 253:0 0 1M 1 disk ``` В данном примере системный диск — `sda`. На старых серверах он может именоваться `vda`. **3**. Запустите утилиту `parted`, указав имя системного диска: ```bash parted /dev/sda ``` Выполните команду: ```bash print ``` При первом запуске после увеличения размера диска может появиться предупреждение: ```shell Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 31457280 blocks) or continue with the current setting? Fix/Ignore? ``` Введите: ```shell Fix ``` Это обновит таблицу GPT и позволит использовать все доступное пространство диска. В выводе команды `print` вы увидите список разделов: ![Scr 20260219 Plxo](https://content.timeweb.com/assets/7ed673b6-a2a5-4f0b-a475-087f9c353782.png?width=1018&height=366) Если вы хотите расширить последний раздел на всю свободную область диска — переходите к пункту **4a**. Если вы хотите создать новый раздел в свободной области диска — переходите к пункту **4b**. При необходимости удалить раздел используйте команду: ```bash rm <номер_раздела> ``` **4**. Выполните переразметку диска. **4a**. Расширение существующего раздела Чтобы расширить последний раздел, выполните: ```bash resizepart <номер_раздела> 100% ``` Параметр 100% означает, что раздел будет расширен до конца диска. Далее: - выполните `print`, чтобы проверить результат; - если все корректно — введите `q`, чтобы выйти из `parted`; - переходите к пункту 5. **4b**. Создание нового раздела Чтобы создать новый раздел в свободной области диска, выполните: ```bash mkpart primary <номер_раздела> 100% ``` Введите `yes`, когда система запросит подтверждение. После этого: - выполните `print`, чтобы проверить результат; - введите `q`, чтобы выйти из программы разметки. Создайте файловую систему в новом разделе: ```bash mkfs.ext4 /dev/sda3 ``` После этого переходите к следующему шагу. **5**. Теперь необходимо проверить файловую систему раздела, который был изменен: ```bash e2fsck -yf /dev/sda2 ``` Вывод команды: ![Scr 20260219 Pmay](https://content.timeweb.com/assets/8911ee46-9e12-4eb7-93c5-244c770e98c7.png?width=1138&height=242) **6**. После проверки выполните изменение размера файловой системы: ```bash resize2fs /dev/sda2 ``` ![Scr 20260219 Pmej](https://content.timeweb.com/assets/c23460ae-8147-4d94-a083-3ae7ccbecfd3.png?width=998&height=134) ### Проверка файловой системы после расширения Теперь необходимо примонтировать раздел, в который вносились изменения (`/dev/sda2`, `/dev/sda3` и т.д.): ```bash mount /dev/sda2 /mnt ``` И проверить, что размер был успешно изменен: ```bash df -h ``` ![Scr 20260219 Pmgo](https://content.timeweb.com/assets/00a7e938-2874-48cc-b717-6393bb5cea6c.png?width=924&height=322) Если вы видите, что размер диска остался прежним, рекомендуем вернуться к первому шагу и повторить процедуру пересоздания разделов, уделив внимание каждому этапу. Если же размер диска изменился, отмонтируйте системный диск командой ниже, после чего вернитесь в стандартный режим загрузки. ```bash umount /mnt ``` ## Изменение размера дополнительного диска > [!NOTE] > Если вы выполняете увеличение размера локального диска, обязательно создайте [резервную копию](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup) перед выполнением процедуры. Это поможет избежать потери данных в случае непредвиденных ситуаций. Измените размер [локального](https://timeweb.cloud/docs/cloud-servers/manage-servers/server-configuration#izmenenie-razmera-diska) или [сетевого диска](https://timeweb.cloud/docs/network-drives/resize-drives) в панели управления. После изменения размера диска в панели управления выполните команду, чтобы проверить новый размер устройства: ```shell lsblk ``` Пример вывода: ```shell NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 87M 1 loop /snap/lxd/29351 loop1 7:1 0 63.7M 1 loop /snap/core20/2434 loop2 7:2 0 63.9M 1 loop /snap/core20/2318 loop3 7:3 0 44.3M 1 loop /snap/snapd/23258 loop4 7:4 0 38.8M 1 loop /snap/snapd/21759 loop5 7:5 0 89.4M 1 loop /snap/lxd/31333 vda 252:0 0 15G 0 disk └─vda1 252:1 0 15G 0 part / vdb 252:16 0 1M 1 disk vdc 252:32 0 20G 0 disk └─vdc1 252:33 0 10G 0 part /mnt/disk2 ``` Обратите внимание, что сетевые диски будут иметь обозначение `sdX`, тогда как локальные — `vdX`. В данном примере видно, что устройство `vdc` имеет увеличенный размер `20G`, но раздел `vdc1` всё ещё `10G`. Следовательно, потребуется переразметить раздел и увеличить файловую систему. Если вы увеличиваете локальный диск, создайте резервную копию, чтобы в случае непредвиденной ситуации данные не были утеряны. ### Перед переразметкой 1. Закомментируйте запись в `/etc/fstab` (если диск добавлен). Откройте файл /etc/fstab: ```shell nano /etc/fstab ``` Найдите строку, соответствующую `/dev/vdc1` (или его `UUID`), и добавьте `#` в начало строки, чтобы закомментировать ее. Это предотвратит автоматическое монтирование. 2. Перед размонтированием проверьте, какие процессы используют диск, выполнив: ```shell lsof /mnt/disk2 ``` Если вывод команды пустой, диск безопасен для размонтирования. Если процессы есть, завершите их или остановите соответствующее приложение. 3. Отмонтируйте диск: ```shell sudo umount -l /mnt/disk2 ``` ### Разметка диска 1. Запустите `fdisk` для редактирования диска: ```shell fdisk /dev/vdc ``` 2. Удалите старый раздел (не затрагивая данные). Введите команду `d` для удаления раздела. Если у диска один раздел, как в нашем примере, он будет выбран автоматически. 3. Создайте новый раздел: - - Введите команду `n` для создания нового раздела. - Выберите тот же тип раздела (например, `p` для основного). - Установите начальный сектор таким же, как был ранее (по умолчанию будет предложен верный вариант). - В качестве конечного сектора выберите максимальный доступный размер (по умолчанию). - При появлении вопроса: ```shell Partition #1 contains a ext4 signature. Do you want to remove the signature? [Y]es/[N]o: ``` Ответьте `N`, если вы хотите сохранить данные на диске. 4. Введите команду `w` для сохранения изменений. 5. После завершения работы с `fdisk` выполните команду для обновления таблицы разделов в системе: ```shell partprobe /dev/vdc ``` Эта команда обновит таблицу разделов в ядре, чтобы система учла изменения без необходимости перезагрузки. Если всё прошло успешно, то вы не увидите никакого сообщения. 6. Повторно выполните команду: ```shell lsblk ``` Убедитесь, что раздел обновился и занимает весь доступный размер. ### Увеличение файловой системы После обновления раздела нужно расширить файловую систему на новый размер. Для файловой системы EXT4 выполните: 1. Проверьте файловую систему: ```shell e2fsck -f /dev/vdc1 ``` 2. Увеличьте файловую систему: ```shell resize2fs /dev/vdc1 ``` 3. После этого можно примонтировать диск обратно и раскомментировать запись в `/etc/fstab`: ```shell mount -o barrier=0 /dev/vdc1 /mnt/disk2 ``` 4. Убедитесь, что новый размер доступен: ```shell df -h ``` Пример вывода: ```shell Filesystem Size Used Avail Use% Mounted on tmpfs 96M 1.0M 95M 2% /run /dev/vda1 15G 2.3G 13G 16% / tmpfs 479M 0 479M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 96M 4.0K 96M 1% /run/user/0 /dev/vdc1 20G 28K 19G 1% /mnt/disk2 ``` Теперь диск полностью готов к использованию. # Монтирование резервных копий Source: https://timeweb.cloud/docs/unix-guides/mounting-backups > [!NOTE] > Ниже в примерах используется имя диска `vdc`; замените это значение на реальное имя диска в вашей системе. Проверить имена дисков можно, например, командой [lsblk](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-data-df-lsblk-parted-fdisk#lsblk). Монтирование резервной копии подразумевает подключение диска внутри операционной системы. ## Смонтировать бэкап 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. На вкладке «Бэкапы» наведите курсор на нужный бэкап и нажмите на кнопку «Смонтировать». 3. Подтвердите действие. ![8f70c017 2983 4196 946b F323feaaa8d4](https://content.timeweb.com/assets/0efdc680-f6bb-432a-94c6-d544ec168e51.png?width=1386&height=869) 3. Примонтируйте бэкап внутри ОС. Сделать это можно в консоли при помощи команды `mount`. Пример использования команды: ```shell mount /dev/vdc1 /mnt ``` ## Отмонтировать бэкап Для отключения диска сначала отмонтируйте его внутри операционной системы командой `umount`: ```shell umount /dev/vdc1 ``` После нажмите «Отмонтировать» в панели управления сервером. ![B64ee95a 363a 44da 938e 349371fcf225](https://content.timeweb.com/assets/0615923e-a0e9-4927-b1c4-38b968ae76be.png?width=1391&height=869) > [!NOTE] > Отмонтировать резервную копию в панели невозможно до тех пор, пока она используется внутри операционной системы. # Создание swap, изменение его размера Source: https://timeweb.cloud/docs/unix-guides/creating-and-resizing-swap Swap — механизм виртуальной памяти, при котором отдельные фрагменты памяти (обычно неактивные) перемещаются из ОЗУ во вторичное хранилище, освобождая ОЗУ для загрузки активных фрагментов памяти. ## Просмотр текущих сведений о swap Перед осуществлением каких-либо действий со swap выполните следующую команду, чтобы узнать его текущие тип и расположение: ``` swapon -s ``` Если команда не выводит никакой информации совсем либо выводит только заголовки таблицы, без данных в ней, например: ``` Filename Type Size Used Priority ``` — это означает, что swap в системе отсутствует. Выполнение шагов, описанных в данной инструкции, позволит вам его создать. Также вывод может содержать данные, подобные этим: ``` Filename Type Size Used Priority /dev/vda5 partition 1046524 4568 -1 ``` Это означает, что для swap используется раздел `vda5` вашего диска. Если вы хотите увеличить размер swap, с помощью данной инструкции вы сможете создать swap-файл, и общий размер swap в системе будет суммироваться с текущим разделом. Еще один вариант вывода команды: ``` Filename Type Size Used Priority /swap file 1048572 0 -1 ``` Такой вывод означает, что для swap используется файл /swap. Вы можете изменить его размер с помощью данной инструкции (при этом можно не выполнять пункт 6, т.к. запись о swap в файле `/etc/fstab` уже существует). ## Создание и изменение swap Для изменения размера swap или для создания swap-файла при его отсутствии выполните следующие действия. 1. В первую очередь отключите swap: ``` swapoff -a ``` 2. Далее измените размер swap-файла. Если файл отсутствует в системе, эта же команда позволит его создать: ``` sudo dd if=/dev/zero of=/swap bs=1M count=1024 ``` Укажите в качестве `count` необходимый размер swap, например, 512 или 1024 или 4096. 3. Подготовьте swap-файл: ``` chmod 600 /swap && mkswap /swap ``` 4. Включите swap: ``` swapon /swap ``` 5. Проверьте результат: ```shell swapon -s ``` Пример вывода команды: ``` Filename Type Size Used Priority /swap file 1048572 0 -1 ``` 6. Чтобы внесенные изменения были применены при следующей загрузке сервера, нужно добавить информацию о swap в файл `/etc/fstab`. Для этого выполните команду: ```shell echo "/swap none swap sw 0 0"| sudo tee -a /etc/fstab ``` # Установка и удаление программ. Менеджеры пакетов Source: https://timeweb.cloud/docs/unix-guides/package-management Программное обеспечение в Linux распространяется, как правило, в виде пакетов, которые хранятся в репозиториях. Для управления пакетами используются специальные утилиты — менеджеры пакетов. В системах Debian и Ubuntu 24.04 используется инструмент `apt`. Он применяется для установки, обновления, удаления пакетов, а также для поиска и получения информации о них. В CentOS Stream 9 и BitrixVM (а также в других современных RHEL-совместимых системах) для управления пакетами используется `dnf`, пришедший на смену `yum`. > [!NOTE] > Если при вызове утилиты `apt` вы получаете ошибку `Could not get lock /var/lib/dpkg/lock` или схожую, вам поможет [наша статья](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/ustranenie-oshibki-could-not-get-lock-var-lib-dpkg-lock). ## Обновление базы пакетов Перед выполнением каких-либо операций с `apt` или `dnf` имеет смысл актуализировать локальный кэш пакетов до текущего состояния репозитория: **Debian / Ubuntu** ```shell sudo apt update ``` **CentOS / Bitrix** ``` sudo dnf check-update ``` ## Поиск пакетов Если вы не уверены в названии конкретного пакета, вы можете выполнить его поиск по репозиторию. Поиск осуществляются по названию и описанию пакетов. **Debian / Ubuntu** ``` apt search что_ищем ``` **CentOS / Bitrix** ``` dnf search что_ищем ``` ## Получение информации о пакете Если перед установкой вы хотите уточнить дополнительные детали (версию программы, размер пакета, сведения о необходимых зависимостях и пр.), можно вывести информацию о пакете: **Debian / Ubuntu** ``` apt show имя_пакета ``` **CentOS / Bitrix** ``` dnf info имя_пакета ``` ## Установка пакетов Установить пакет можно одной простой командой: **Debian / Ubuntu** ``` sudo apt install имя_пакета ``` **CentOS / Bitrix** ``` sudo dnf install имя_пакета ``` Так же можно установить сразу несколько пакетов, просто перечислив их друг за другом: **Debian / Ubuntu** ``` sudo apt install имя_пакета1 имя_пакета2 имя_пакета3 ``` **CentOS / Bitrix** ``` sudo dnf install имя_пакета1 имя_пакета2 имя_пакета3 ``` Если вам необходимо установить определенную версию, укажите ее после имени пакета: **Debian / Ubuntu** ``` sudo apt install имя_пакета=версия ``` **CentOS / Bitrix** ``` sudo dnf install имя_пакета-версия ``` Для того, чтобы в процессе установки автоматически отвечать «Yes» на все запросы системы, можно добавить ключ `-y`: **Debian / Ubuntu** ``` sudo apt install -y имя_пакета ``` **CentOS / Bitrix** ``` sudo dnf install -y имя_пакета ``` ## Обновление установленных пакетов Обновить уже установленные пакеты до актуальных версий можно следующим образом: **Debian / Ubuntu** ``` sudo apt upgrade ``` **CentOS / Bitrix** ``` sudo dnf upgrade ``` ## Удаление пакетов Для удаления приложений используйте: **Debian / Ubuntu** ``` sudo apt remove имя_пакета ``` **CentOS / Bitrix** ``` sudo dnf remove имя_пакета ``` В **Debian / Ubuntu** можно также запустить автоматическое удаление ненужных пакетов для очистки системы. Ненужным система посчитает пакет, установленный не самостоятельно, а как зависимость для другого пакета, который на данный момент уже удален. ``` sudo apt autoremove ``` В **CentOS / Bitrix** аналогичная очистка выполняется командой: ```bash sudo dnf autoremove ``` # Установка графической оболочки XFCE на Ubuntu Source: https://timeweb.cloud/docs/unix-guides/install-xfce-gui-ubuntu Для удобства управления сервером на него можно установить какую-либо графическую оболочку. В этом случае вы сможете выполнять необходимые задачи (переключаться между директориями, работать с файлами и др.) не только из консоли, но и с помощью привычного интерфейса рабочего стола. Ниже мы рассмотрим установку интерфейса [XFCE](https://xfce.org/), достаточно легкого и не требовательного к ресурсам сервера. > [!NOTE] > Хотя XFCE запустится на сервере минимальной конфигурации, для корректной работы интерфейса и дополнительного ПО на сервере (например, браузера) мы рекомендуем устанавливать XFCE на серверы с объемом RAM от 2 ГБ и выше. В процессе мы установим саму оболочку XFCE в русской локализации, а также установим и настроим апплет клавиатуры, чтобы на сервере можно было использовать кириллическую раскладку. Данная инструкция подойдет для серверов с **ОС Ubuntu**, начиная с версии 16.04. ## Установка XFCE 1. [Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. Последовательно выполните указанные ниже команды. Установите необходимые пакеты: для работы графического окружения (`xfce4`), менеджера входа (`xdm`), апплет раскладки клавиатуры (`xfce4-xkb-plugin`) и пакет локализации. ```shell apt update && apt install xfce4 xdm xfce4-xkb-plugin language-pack-ru -y ``` Разрешите всем пользователям (`anybody`) запускать X-сервер, а также укажите, что `xfce4-session` будет использоваться в качестве диспетчера сеансов при графическом запросе входа в систему: ``` sed -i 's/allowed_users=console/allowed_users=anybody/' /etc/X11/Xwrapper.config ``` ``` echo "xfce4-session" | tee ~/.xsession ``` Включите менеджер входа в автозагрузку системы, чтобы он отображался при запуске сервера: ```shell systemctl enable xdm.service ``` Установите русскую локализацию для системы по умолчанию: ```shell update-locale LANG=ru_RU.UTF-8 ``` ```shell echo 'FRAMEBUFFER=Y' >> /etc/initramfs-tools/initramfs.conf ``` ```shell update-initramfs -u -k `uname -r` ``` Добавьте русскую раскладку клавиатуры для апплета: ```shell xkbO='grp:alt_shift_toggle' && sed -i 's/XKBOPTIONS=\"\w*"/XKBOPTIONS=\"'$xkbO'\"/g' /etc/default/keyboard ``` ```shell xkbL='us,ru' && sed -i 's/XKBLAYOUT=\"\w*"/XKBLAYOUT=\"'$xkbL'\"/g' /etc/default/keyboard ``` Переустановите пакет `locales` для пересоздания конфигурационных файлов: ```shell apt install --reinstall locales -y ``` 3. Перезагрузите сервер. 4. Перейдите на вкладку «Консоль» в панели управления. В ней отобразится менеджер входа. 5. Введите логин и пароль (символы пароля не будут отображаться при вводе) и нажмите Enter. ![1](https://content.timeweb.com/assets/83eb105c-7c99-4b19-941a-4cefccac2bcf?width=872&height=610) _Окно логина в интерфейс [XFCE](https://xfce.org/)_ 6. После ввода реквизитов отобразится графический интерфейс и диалоговое окно, в котором необходимо выбрать стандартную настройку панели. ![2](https://content.timeweb.com/assets/b4fd3328-a73d-41c5-87c2-d030cb435a9b?width=1222&height=854) _Интерфейс [XFCE](https://xfce.org/)_ Готово, интерфейс установлен и вы уже можете с ним работать. Теперь необходимо добавить возможность использования русской раскладки на сервере. 7. Добавьте апплет клавиатуры на панель инструментов, чтобы переключаться между раскладками. Для этого кликните правой кнопкой на «Приложения» в левом верхнем углу и выберите «Панель» — «Добавить новые элементы»: ![3](https://content.timeweb.com/assets/16d77947-7965-4e88-9bbc-414fc492e6cd?width=1224&height=852) _Меню «Приложения» в интерфейсе [XFCE](https://xfce.org/)_ 8. В открывшемся окне выберите «Раскладки клавиатуры» и нажмите «Add»: ![4](https://content.timeweb.com/assets/4625a427-b86d-48a3-a2d0-9fab3b07e8f4?width=1221&height=848) _Добавление раскладки клавиатуры в интерфейсе [XFCE](https://xfce.org/)_ 9. В правом верхнем углу появится значок флага. Кликните на него правой кнопкой и выберите «Настройки клавиатуры»: ![5](https://content.timeweb.com/assets/14469bb6-89e2-4f24-80b2-36dc392bf046?width=1222&height=845) _Языковое меню в интерфейсе [XFCE](https://xfce.org/)_ 10. В новом окне перейдите на вкладку «Раскладка», растяните окно, чтобы стал виден переключатель, выключите «Использовать системные настройки по умолчанию» и нажмите «Добавить»: ![Selection 082](https://content.timeweb.com/assets/2e7ecff8-a85f-4e28-9ac2-5fecac139cb8.png?width=744&height=674) _Окно «Клавиатура» в интерфейсе [XFCE](https://xfce.org/)_ 11. В открывшемся списке выберите русскую раскладку и нажмите «ОК». Окно «Клавиатура» можно закрыть. Теперь вы сможете переключаться между английской и русской раскладкой, кликнув на значок флага. ![7](https://content.timeweb.com/assets/76507020-f76b-4be2-8e10-ff0efa80c3ea?width=1222&height=850) _Переключение между раскладками в интерфейсе [XFCE](https://xfce.org/)_ ## Установка браузера Иногда могут возникать проблемы с использованием браузера по умолчанию в XFCE. Мы рекомендуем дополнительно установить популярные браузеры (Chromium и/или Firefox) и пользоваться ими. Для установки откройте SSH-консоль и выполните команду: ```shell apt install firefox chromium-browser ``` ## Управление сервером по RDP После установки оболочки вы можете управлять сервером из консоли в панели управления либо же воспользоваться удаленным подключением по протоколу RDP. Для того, чтобы такое подключение было возможно, на ваш VDS необходимо установить сервер xRDP: ```shell apt-get install xrdp ``` И добавить его в автозагрузку: ```shell systemctl enable xrdp ``` После установки вы сможете подключаться к серверу и работать с ним по RDP — аналогично [удаленному управлению Windows-серверами](https://timeweb.cloud/docs/windows-guides/connecting-to-the-server-via-rdp). Для работы у вас должен быть открыт порт 3389 (на наших облачных серверах он открыт по умолчанию). ## Устранение проблем ### Отключение после успешной авторизации В Ubuntu новых версий (20.04 и далее) может возникать проблема с подключением по RDP, а именно отключение спустя 2-3 секунды после успешной авторизации. В этом случае необходимо в файл `/etc/xrdp/startwm.sh` добавить строки: ```shell unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR ``` Их необходимо указать перед строкой, начинающейся с `test -x`: ```shell if test -r /etc/profile; then . /etc/profile fi unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR test -x /etc/X11/Xsession && exec /etc/X11/Xsession exec /bin/sh /etc/X11/Xsession ``` После перезагрузите службу XRDP: ```shell systemctl restart xrdp ``` ### Пустой экран Еще одна возможная проблема — когда при подключении по RDP вы получаете пустой экран. Мы зафиксировали на Ubuntu 18.04, но, возможно, может наблюдаться и в других версиях. Для решения воспользуйтесь способом, описанном [в предыдущем пункте](https://timeweb.cloud/docs/unix-guides/install-xfce-gui-ubuntu#otkluchenie-posle-uspeshnoj-avtorizacii). ### Отсутствие дисплея Также может возникать проблема XRDP-сервера с отсутствием дисплея (может открываться и сразу же закрываться без вывода каких-либо ошибок). Для решения нужно внести правки в файл `/etc/xrdp/startwm.sh`. Найдите и удалите в файле следующие строки: ```shell test -x /etc/X11/Xsession && exec /etc/X11/Xsession exec /bin/sh /etc/X11/Xsession ``` Вместо них добавьте строку: ```shell startxfce4 ``` После перезагрузите службу XRDP: ```shell systemctl restart xrdp ``` # Настройка iptables Source: https://timeweb.cloud/docs/unix-guides/iptables-setup Iptables — это межсетевой экран для операционных систем Linux, который позволяет управлять прохождением трафика. При попытке установке соединения с сервером (или при отправке запроса с сервера) Iptables проверяет цепочку правил для конкретного соединения и выполняет заданную настройку. Iptables предустановлен во всех современных дистрибутивах Linux. ## Типы цепочек Существует три типа цепочек iptables — input, forward и output. - **INPUT** — эта цепочка используется для обработки входящих соединений. - **OUTPUT** — используется для исходящих соединений. - **FORWARD** — используется для обработки транзитного трафика, например, в случае маршрутизатора. Если вы не занимаетесь настройкой маршрутизации, то правила этого типа вам не потребуются. Цепочка — это упорядоченная последовательность правил. Правило содержит в себе критерий (например, IP-адрес источника пакета) и действие, которое нужно применить к пакету с этим критерием (например, «заблокировать»). Если критерий отсутствует, правило применяется ко всем пакетам. При определении, что нужно сделать с пакетом, iptables просматривает соответствующую цепочку с начала списка, перебирая правила, пока не найдет совпадение. Если совпадение не найдено (соединение не попадает ни под одно созданное правило), применяется правило по умолчанию. При настройке правил iptables помните, что для многих портов при передаче данных требуется не только отправить запрос, но и получить на него ответ. Также будьте внимательны, чтобы случайно не запретить доступ для себя — удаленное подключение к серверу по SSH тоже является входящим соединением. ## Действия с соединениями Есть три типа действий, выполняемых с соединениями: **Accept** — разрешить соединение. **Drop** — игнорировать (блокировать) соединение без сообщения источнику об отказе. Это рекомендуемый вариант для обработки трафика на портах, подключенных к интернету, так как в этом случае злоумышленники получают минимум информации при сканировании портов. **Reject** — отказать в соединении, сообщив источнику запроса об отказе. По умолчанию отправляется ответный пакет «icmp-port-unreachable», но также возможна дополнительная настройка сообщения (например, «icmp-host-unreachable», «icmp-net-prohibited», «icmp-host-prohibited» и др.). ## Настройка правил В рамках данной статьи общий формат для настройки правил будет следующим: ```shell iptables действие цепочка правило ``` В нем пропущено указание *таблицы* (она должна следовать сразу после *iptables*), так как мы рассматриваем настройки для основной таблицы фильтрации **filter**, которая подразумевается в командах iptables по умолчанию. Указывать ее дополнительно необязательно. *Действие* в данном случае — это действие, которое необходимо выполнить с правилом (например, добавить его или удалить). Примеры доступных действий в iptables: - \-A — добавить правило в цепочку; - \-I — добавить правило в цепочку, указав номер; - \-D — удалить правило; - \-F — удалить все правила; - \-L — вывести все правила в текущей цепочке; - \-P — установить действие по умолчанию. Дополнительные опции: - \-p — указать протокол пакета; - \-s — указать IP-адрес / источник пакета; - \-j — указать, что нужно сделать с пакетом (разрешить / заблокировать и пр.). ### **Просмотр существующих правил** Вывести все правила можно командой: ```shell iptables -L ``` Либо: ```shell iptables -L -n -v ``` Также можно вывести правила для конкретной цепочки, например: ```shell iptables -L INPUT ``` ### **Правила по умолчанию** В случае, если ни одно из созданных правил не подходит для определенного пакета, к нему будет применено правило по умолчанию. Просмотреть правила по умолчанию можно командой: ```shell iptables -L | grep policy ``` Если вы не вносили изменений в policy, то изначально для всех цепочек будут установлены разрешающие правила по умолчанию. ![Putty Q Ckhask2v Q](https://content.timeweb.com/assets/d91f7faf-f820-4187-b003-bbb96b2926d7?width=402&height=64) Установить правило по умолчанию можно с помощью опции -P, например: ```shell iptables -P FORWARD DROP ``` ### **Примеры настроек** Добавить правило к существующей цепочке можно командой: ```shell iptables -A ``` Если правило нужно поместить не в конец списка, можно использовать следующий формат команды и указать номер правила в списке: ```shell iptables -I цепочка номер правило ``` Например, это правило будет указано первым в цепочке INPUT: ```shell iptables -I INPUT 1 --dport 80 -j ACCEPT ``` Запретить все входящие соединения с конкретного IP: ```shell iptables -A INPUT -s 1.2.3.4 -j DROP ``` Запретить соединения из подсети: ```shell iptables -A INPUT -s 1.2.3.4/24 -j DROP ``` В качестве источника может быть указан как IP-адрес, и хост. Например, так можно запретить все соединения с test.domain.ru: ```shell iptables -A INPUT -s test.domain.ru -j DROP ``` Запретить все соединения с хостов, отличных от test.domain.ru: ```shell iptables -A INPUT ! -s test.domain.ru -j DROP ``` Открыть доступ к порту 25 (SMTP) для всех: ```shell iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT ``` Закрыть для всех (требуется просто заменить ACCEPT на DROP): ```shell iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j DROP ``` Открыть доступ к портам Apache для всех: ```shell iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT ``` Открыть доступ к порту 3306 для конкретного IP: ```shell iptables -A INPUT -s 1.2.3.4 -p tcp -m tcp --dport 3306 -j ACCEPT ``` Настройка логирования: ```shell iptables -A INPUT -p tcp -m multiport --dports 22,53,8080,139,445 -j LOG --log-level INFO --log-prefix "New connection from 1.2.3.4/24:" iptables -A INPUT -s 1.2.3.4/24 -m multiport --dports 22,8080,139,445 -j ACCEPT ``` При такой настройке при каждом новом соединении к серверу из подсети 1.2.3.4/24 в журнал будет добавляться соответствующая запись. Для защиты от распространенных атак можно добавить такие настройки: Запретить все «неопознанные» пакеты: ```shell iptables -A INPUT -m state --state INVALID -j DROP ``` Запретить нулевые пакеты: ```shell iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP ``` Защититься от атак типа syn-flood: ```shell iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP ``` Запретить фрагментированные пакеты для защиты от ping flood: ```shell iptables -A INPUT -p icmp --fragment -j LOG --log-prefix "ping flooding" iptables -A INPUT -p icmp --fragment -j DROP ``` Запретить ping: ```shell iptables -A INPUT -p icmp --icmp-type echo-request -j DROP iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -j DROP ``` Разрешить ping с определенных адресов: ```shell iptables -A INPUT -s 1.2.3.4 -p icmp --icmp-type echo-request -j ACCEPT iptables -A INPUT -s 1.22.33.44 -p icmp --icmp-type echo-request -j ACCEPT ``` Установить лимит подключений (connlimit), равный 5, для 80 порта: ```shell iptables -A INPUT -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 5 --connlimit-mask 32 -j DROP ``` ### **Сохранение изменений** Для того, чтобы созданные правила были применялись в том числе после перезагрузки системы, их нужно сохранить. CentOS: ```shell /sbin/service iptables save ``` Для сохранения правил в Debian / Ubuntu можно использовать утилиту `iptables-persistent`. Установить ее можно командой: ``` apt install iptables-persistent ``` В процессе установки система запросит, необходимо ли сохранить существующие правила — нажмите «Да». В дальнейшем, если вы внесете изменения в правила iptables, их можно будет сохранить командой: ```shell netfilter-persistent save ``` ### **Удаление правил** Удалить конкретное правило можно с помощью опции -D, например: ```shell iptables -D INPUT -s 1.2.3.4 -j DROP ``` Удаление **всех** правил выполняется командой: ```shell iptables -F ``` Удаление правил для определенной цепочки: ```shell iptables -F INPUT ``` # Установка произвольной ОС на сервер Source: https://timeweb.cloud/docs/unix-guides/ustanovka-proizvolnoj-os-na-server Большинство популярных ОС можно установить на сервер Timeweb Cloud автоматически, выбрав нужный вариант при создании сервера. Если же вам нужна операционная система, которой нет в готовых образах, ее можно установить на сервер вручную. В инструкции рассмотрим несколько примеров, как это можно сделать. Варианты установки могут быть следующими: - Установка ОС из ISO-образа установочного диска. Сейчас это также можно сделать через [Образы сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/server-images) в панели управления. - Установка из сырого (raw) образа диска, обычно файл имеет расширение .img. - Установка через подключение образа ядра ОС. > [!NOTE] > Прежде чем начинать установку, внимательно изучите сайт разработчика/поставщика ОС. Вероятно, у него уже есть инструкции по ручной установке системы. ## Перед началом работы Что важно знать: - Виртуализация аппаратная — QEMU/KVM. - Все серверы работают с Legacy BIOS, поэтому не пытайтесь ставить UEFI. - Со стороны клиента нет доступа к BIOS, пользователь ограничен функционалом панели управления. Основная задача — запустить установщик ОС, для чего потребуется эмулировать загрузку с LiveCD. Так как нет способа инициализировать «пустой» сервер, то первоначально потребуется установить сервер с любой доступной к установке операционной системой. В этой статье в качестве примера «базовой системы» будет использован Debian 11. Запуск установщика будем выполнять через **GRUB**, он есть в большинстве ОС. На установочных дисках обычно содержится собственный загрузчик для инициализации с диска программы установки. Если ваш сервер был создан до мая 2025 года, диски будут иметь имена вида `vd*`. На серверах, созданных позже, диски будут называться `sd*`. Учитывайте это при выполнении действий из инструкции. ## Постнастройка В Timeweb Cloud для многих операций с сервером через панель управления используется `qemu-guest-agent`. После установки операционной системы желательно установить и при необходимости сконфигурировать его. Обычно это несложно, и будет достаточно настроек по умолчанию. ## Установка ОС из ISO при помощи образа сервера Самый простой способ установки произвольной операционной системы — через образы сервера. Рассмотрим установку на примере Ubuntu Server 23.10. Для начала необходимо скачать ISO-образ liveCD. Сделать это можно [по этой ссылке](https://releases.ubuntu.com/23.10.1/) — выбираем «Server install image». 1. Перейдите на вкладку «[Образы](https://timeweb.cloud/my/images)», затем выберите «Загрузка образа», далее — «С компьютера» и загрузите скачанный образ liveCD. ![Image1](https://content.timeweb.com/assets/0dae53ba-7f71-46e1-9d46-9eebb7873314.png?width=1065&height=755) 2. После завершения загрузки образа создайте облачный сервер. В разделе «Образы» выберите «Мои образы» и найдите загруженный ранее ISO. ![Image4](https://content.timeweb.com/assets/4cee95a8-d223-48d0-aef9-dc50435e4012.png?width=1022&height=739) 3. Запустите создание сервера и дождитесь окончания процесса. > [!NOTE] > Подключение к серверу по SSH будет недоступно, так как OpenSSH Server не установлен. Чтобы продолжить, необходимо подключиться по VNC: для этого перейдите во вкладку «Консоль». ![Image5](https://content.timeweb.com/assets/95c686c3-e1cf-4a76-b564-241c4212ca9f.png?width=1034&height=926) 4. Выполните стандартную установку Ubuntu Server. Рекомендуется перейти в полноэкранный режим для удобства. В процессе установки выберите опцию установки OpenSSH Server, чтобы в дальнейшем подключиться к серверу по SSH. ![Image3](https://content.timeweb.com/assets/18d919d8-9b07-479f-b688-dbff00c9f04b.png?width=1277&height=942) 5. После завершения установки сервер автоматически перезагрузится. Теперь нужно отмонтировать образ, воспользовавшись кнопкой в панели управления. ![Image2](https://content.timeweb.com/assets/40805a0c-3545-4cdf-ae11-6225fd28ecb9.png?width=1294&height=945) После перезагрузки установка будет полностью завершена. Для обеспечения работы некоторых функций панели управления установите `qemu-guest-agent` по [инструкции](https://timeweb.cloud/docs/unix-guides/installing-qemu-agent). ## Установка ОС из ISO с использованием дополнительного диска Этим способом можно установить большинство операционных систем из ISO-образов. Для работы потребуется: - Сервер с установленной операционной системой. В нашем случае — Debian 11. - Прямая ссылка на образ ISO. - [Подключенный дополнительный диск](https://timeweb.cloud/docs/unix-guides/adding-removing-disk). Размечать или форматировать дополнительный диск не нужно, просто добавьте его. Ниже будет показан пример установки системы [GNU Guix System](https://guix.gnu.org/). ### Запись ISO **1.** Скачайте ISO на сервер: ``` wget https://ftp.gnu.org/gnu/guix/guix-system-install-1.3.0.x86_64-linux.iso ``` **2.** Добавьте в ПУ дополнительный диск. Он будет подключен к системе как устройство `/dev/sdb`. **3.** Запишите ISO на этот диск: ``` dd if=guix-system-install-1.3.0.x86_64-linux.iso of=/dev/sdb ``` На `/dev/sdb` появится файловая система. Проверьте, что это так, командой: ``` fdisk -l ``` ``` Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x5569f8be Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 20971519 20969472 10G 83 Linux Disk /dev/vda: 1 MiB, 1048576 bytes, 2048 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00000000 Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sdb1 * 0 1247275 1247276 609M 0 Empty /dev/sdb2 1247276 1253035 5760 2.8M ef EFI (FAT-12/16/32) ``` Как можно видеть, появились разделы `/dev/sdb1` и `/dev/sdb2`. Какие и сколько разделов появятся на диске `sdb`, зависит от содержимого образа ISO. ### Загрузка и установка системы Вся дальнейшая установка будет проходить через веб-консоль. > [!NOTE] > Если веб-консоль «залипла», можно воспользоваться функцией «Вставить из буфера» в правом углу над окном консоли. **1.** Запустите сервер [с диска восстановления](https://timeweb.cloud/docs/cloud-servers/manage-servers/boot-mode). **2.** Выберите пункт «Boot existing OS». ![Clipboard June 8, 2023 10 20 Am](https://content.timeweb.com/assets/374685b8-9fef-4428-8cf2-e6406b74f205?width=933&height=712) **3.** Нажмите Tab на клавиатуре. **4.** Замените hd0 на hd2. **5\.** Вы попадете в установочную программу. Выполните установку. В процессе: - Установщик предложит вам определить диск для установки ОС, выбирайте диск `/dev/sda`. - Cогласитесь на установку SSH-сервера и DHCP-клиента. Последнее важно, поскольку иначе на сервере не будет работать сеть. **6.** Когда программа установки сообщит о том, что все готово, выполните перезагрузку сервера. **7.** Проверьте, что вы можете авторизоваться в свежеустановленной системе, что сеть и демон SSH работают. Если все хорошо, можно удалить дополнительный диск. На этом установка завершена, однако вам может потребоваться [установка пакета](https://timeweb.cloud/docs/unix-guides/installing-qemu-agent) `qemu-guest-agent`. ## Установка OpenBSD через образ ядра В этом случае не потребуется подключать к серверу дополнительный диск. Вместо этого установка ОС будет производиться через загрузку из GRUB образа ядра BSD. Для работы будет нужен только сервер с установленной операционной системой, в нашем случае — Debian 11. > [!NOTE] > Обязательно внимательно прочитайте [гайд по установке OpenBSD](https://www.openbsd.org/faq/faq4.html). **1.** Подключитесь к существующему серверу и скачайте образ ядра BSD: ``` wget https://mirror.yandex.ru/pub/OpenBSD/7.1/amd64/bsd.rd -O /boot/bsd.rd ``` Дальнейшие действия выполняются через VNC-консоль в ПУ. **2.** Нажмите в ПУ кнопку перезагрузки сервера. Пока сервер перезагружается, в консоли воспользуйтесь функцией вставки текста и вставьте латинскую букву С. **3.** Откроется консоль загрузчика GRUB. В нее надо последовательно ввести и выполнить следующие команды: ``` set root=(hd2,msdos1) kopenbsd /boot/bsd.rd boot ``` **4.** Начнется загрузка ядра и установщика OpenBSD. Далее внимательно читайте подсказки на экране и вводите ответы. Следуйте [инструкции](https://www.openbsd.org/faq/faq4.html). На большинство вопросов установщика можно отвечать простым нажатием Enter. - На вопросе настройке сети (the IPv4 settings) следует ответить `dhcp`. - Согласиться на установку **sshd** (по умолчанию yes). - Создание обычного пользователя можно пропустить. В таком случае необходимо ответить **yes** на вопрос о доступе root по ssh. - По завершении согласиться на **reboot**. Первый запуск сервера будет долгим из-за применения патчей (в консоли будет отображаться текст: Checking for available binary patches). Дальнейшую настройку системы можно выполнить по SSH. ## Установка Mikrotik Cloud Hosted Router Процесс установки пошагово описан в статье [про установку MikroTik Cloud Hosted Router](https://timeweb.cloud/docs/unix-guides/chr-install). # Удаленный доступ к MySQL Source: https://timeweb.cloud/docs/unix-guides/remote-access-to-mysql По умолчанию сервер MySQL разрешает только локальные подключения, то есть выполняемые с сервера, на котором он работает. Если же требуется подключаться к MySQL извне, со сторонних адресов, необходимо выполнить следующее: 1. Внести изменения в конфигурационный файл MySQL. 2. Разрешить пользователю или пользователям MySQL удаленные подключения. ## Шаг 1. Редактирование конфигурационного файла В Ubuntu файл размещается, как правило, по пути `/etc/mysql/mysql.conf.d/mysqld.cnf`. В CentOS это могут быть `/etc/mysql/my.cnf` или `/etc/my.cnf`. Откройте файл для редактирования, указав нужный путь: ```shell sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ``` Найдите в нем следующие строки: ```shell # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 ``` Параметр `bind-address` определяет, с каких адресов MySQL разрешает подключения. В данном случае оно возможно только с локального сервера (`localhost`, 127.0.0.1). Укажите здесь нужные вам настройки: - Чтобы разрешить доступ с конкретного IP-адреса, укажите его вместо 127.0.0.1. - Чтобы разрешить доступ с любых IP-адресов, укажите здесь 0.0.0.0. Обратите внимание, что такая настройка может быть небезопасной. Закройте файл, сохранив изменения (в nano это можно сделать с помощью клавиш Crtl X → Y → Enter). После перезапустите MySQL: ```shell sudo systemctl restart mysql ``` ## Шаг 2. Создание пользователя MySQL Все пользователи MySQL, имеющие доступ только к локальным подключениям, имеют учетную запись вида `user@localhost`. Чтобы разрешить пользователю подключаться удаленно, нужно добавить для него учетную запись `user@нужный_IP` (или `user@%`, тогда будет возможно подключение с любого IP). Эту настройку можно выполнить через консоль или через phpMyAdmin. ### **Через консоль** Подключитесь к MySQL: ```shell sudo mysql ``` С помощью команд ниже создайте пользователя и выдайте ему необходимые привилегии. В примере используется `ALL PRIVILEGES`, но в зависимости от ваших задач вы можете выдавать только отдельные права доступа (например, `CREATE`, `INSERT`, `UPDATE` и т.д.). Для того, чтобы создаваемый пользователь мог подключаться к конкретной базе с любого адреса, используйте команду: ```shell mysql> GRANT ALL PRIVILEGES ON имя_базы.* TO 'имя_пользователя'@'%' IDENTIFIED BY 'пароль'; ``` Если нужно, чтобы пользователь мог подключаться только с определенного адреса, укажите его вместо `%`, например: ```shell mysql> GRANT ALL PRIVILEGES ON имя_базы.* TO 'имя_пользователя'@'123.45.67.8' IDENTIFIED BY 'пароль'; ``` С помощью следующей команды можно разрешить пользователю подключение ко всем базам вместо одной конкретной: ```shell mysql> GRANT ALL PRIVILEGES ON *.* TO 'имя_пользователя'@'123.45.67.8' IDENTIFIED BY 'пароль'; ``` ### **Через phpMyAdmin** В phpMyAdmin перейдите в раздел «Учетные записи пользователей» → «Добавить новую учетную запись». В пункте «Имя хоста» выберите «Любой хост» и укажите либо `%`, чтобы разрешить подключение с любого адреса, либо конкретный IP. На следующем шаге задайте нужные привилегии для пользователя. Это может быть полный набор прав или с определенными ограничениями (например, вы можете запретить новой учетной записи удалять таблицы базы данных; таким образом удаление будет возможно только при локальном подключении). ## Ограничения файрвола Удаленное подключение к MySQL может ограничиваться настройками файрвола. Например, на сервере с BitrixVM такое подключение вероятнее всего будет недоступно из-за ограничений iptables. Потребуется дополнительно внести изменения в правила — открыть порт 3306. Можно открыть доступ к нему с любого адреса, но такая настройка является небезопасной. Рекомендуется разрешать доступ для конкретного IP. В **iptables** это можно сделать командой: ```shell sudo iptables -A INPUT -s 123.45.67.8 -p tcp --destination-port 3306 -j ACCEPT ``` Замените адрес из примера на нужный вам. Если на сервере используется **UFW**, настройку можно выполнить с помощью: ```shell sudo ufw allow from 123.45.67.8 to any port 3306 ``` После завершения настройки проверьте, что пользователь может подключиться к MySQL удаленно. ```shell mysql -u имя_пользователя -h адрес_хоста_mysql -p ``` # Установка QEMU-агента Source: https://timeweb.cloud/docs/unix-guides/installing-qemu-agent Для корректной работы на ваш сервер должна быть установлена программа-демон **QEMU Guest Agent**. Она запускается внутри виртуальной машины и обеспечивает полноценную работу с сервером в панели управления. > [!NOTE] > Эта инструкция описывает установку QEMU на машины Linux. > > Для Windows сервис QEMU можно установить с помощью специального ISO-образа, который можно [скачать здесь](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/?C=M;O=D). Также с его помощью можно установить virtio-драйверы, необходимые для поддержки виртуализированных устройств. Если QEMU-агент отсутствует или отключен, в панели будут недоступны следующие действия: - Создание бэкапа, в том числе автоматического - Создание снапшота - Добавление SSH-ключа - Удаление SSH-ключа - Сброс пароля root - Клонирование сервера - Создание образа сервера - Открытие или закрытие доступа для поддержки - Корректное отображение графиков дашборда Если при создании сервера вы установили на него любое ПО из маркетплейса, QEMU-агент будет установлен автоматически. В остальных случаях вы можете установить его вручную по этой инструкции. > [!NOTE] > Хотя QEMU Guest Agent можно установить в BSD-системах (FreeBSD, OpenBSD, pfSense), он не поддерживает необходимые функции для управления виртуальной машиной и не будет работать корректно. ## Проверка наличия QEMU-агента Чтобы проверить, установлен ли агент QEMU на вашем сервере: 1. Подключитесь к серверу через веб-консоль в панели или [по SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. Выполните команду: ```shell systemctl status qemu-guest-agent ``` Подобный вывод означает, что агент не установлен: ```shell Unit qemu-guest-agent.service could not be found. ``` А в данном случае агент есть, но отключен — нужно его перезапустить: ```shell Active: inactive (dead) since ... ``` ## Перезапуск qemu-guest-agent Если вы уже устанавливали QEMU-агент, но описанный функционал панели недоступен, попробуйте перезапустить его — скорее всего, это решит проблему. 1. Подключитесь к серверу через веб-консоль в панели или [по SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. Выполните команду: ```shell systemctl restart qemu-guest-agent.service ``` 3. Проверьте, что все работает корректно, с помощью команды: ```shell systemctl status qemu-guest-agent.service ``` Если все в порядке, вывод команды будет следующим: ```shell qemu-guest-agent.service - QEMU Guest Agent Loaded: loaded (/lib/systemd/system/qemu-guest-agent.service; static) Active: active (running) ``` ## Установка qemu-guest-agent Чтобы установить QEMU-агент, [подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и выполните в консоли приведенные ниже команды, выбрав вариант для вашей операционной системы. Процесс установки зависит от используемого дистрибутива. Выберите подходящую вкладку: - **Debian-based** — для Debian, Ubuntu, Astra Linux; - **RHEL-based** — для CentOS, AlmaLinux, BitrixVM; - **Arch-based** — для Arch Linux и производных. Debian-based Обновите репозитории: ```bash sudo apt update ``` Установите QEMU Guest Agent: ```bash sudo apt install qemu-guest-agent -y ``` RHEL-based Обновите репозитории: ```bash sudo yum update ``` Установите QEMU Guest Agent: ```bash sudo yum install qemu-guest-agent -y ``` Arch-based Обновите систему: ```bash sudo pacman -Syu ``` Установите QEMU Guest Agent: ```bash sudo pacman -S qemu-guest-agent ``` Запустите агент: ```bash sudo systemctl start qemu-guest-agent ``` И добавьте его в автозапуск: ```bash sudo systemctl enable qemu-guest-agent ``` # Установка Zabbix-агента Source: https://timeweb.cloud/docs/unix-guides/installing-zabbix-agent Zabbix — это универсальная система мониторинга, позволяющая отслеживать состояние сервера и статусы различных его параметров. Мы используем Zabbix для сбора и вывода в панель управления данных о [потреблении сервером оперативной памяти и данных о нагрузке на диск](https://timeweb.cloud/docs/cloud-servers/manage-servers/resource-stats#pamyat). Для того, чтобы эти графики были доступны, на сервере должен быть запущен Zabbix-агент. На новых VDS агент установлен по умолчанию; также он автоматически добавляется на сервер при переустановке операционной системы. Вы также можете установить Zabbix-агент вручную, при помощи нашего скрипта. Запускать скрипт нужно под пользователем root или под пользователем с правами sudo. 1. Подключитесь к серверу [по SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. Скачайте скрипт во временную папку: ```bash wget -O /tmp/zabbix-install.sh http://zabbix.repo.timeweb.ru/zabbix-install.sh ``` 3. Установите права на выполнение скрипта: ```bash chmod +x /tmp/zabbix-install.sh ``` 4. Запустите скрипт: ```bash sudo /tmp/zabbix-install.sh ``` Скрипт автоматически определит операционную систему и выполнит установку Zabbix Agent из нашего репозитория. На Ubuntu и Debian он: - скачает GPG-ключ репозитория и сохранит его `/etc/apt/trusted.gpg.d/timeweb-zabbix.gpg`; - добавит наш репозиторий в файл `/etc/apt/sources.list.d/timeweb-zabbix.list`; - обновит список доступных пакетов; - установит пакет `zabbix-agent-timeweb`; - разрешит входящие TCP-подключения на порт `10050` при помощи UFW. На CentOS, Fedora и других системах семейства Red Hat скрипт: - создаст файл репозитория `/etc/yum.repos.d/timeweb-zabbix.repo`; - подключит наш репозиторий и настроет его GPG-ключ; - обновит кеш пакетов для подключенного репозитория; - установит пакет `zabbix-agent-timeweb`; - откроет TCP-порт `10050` с помощью `firewalld` или `iptables`. После установки список разрешенных Zabbix-серверов можно проверить в файле `/etc/zabbix/zabbix_agentd.conf`. # Установка и работа с PostgreSQL Source: https://timeweb.cloud/docs/unix-guides/installing-and-using-postgresql PostgreSQL — объектно-реляционная система управления базами данных. PostgreSQL базируется на языке SQL, отличается гибкостью и надежностью и поддерживает множество возможностей. Чаще всего PostgreSQL используется для сложных проектов, где требуется работа со сложными структурами данных, которые могут не поддерживаться обычными СУБД. В статье мы рассмотрим установку PostgreSQL на VDS с **Ubuntu 24.04** и особенности работы с ней. Для выполнения операций, описанных в инструкции, на сервере должен быть [создан пользователь](https://timeweb.cloud/docs/unix-guides/adding-users) с привилегиями sudo. ## Установка PostgreSQL PostgreSQL присутствует в официальных репозиториях Ubuntu, поэтому для установки достаточно выполнить: ```shell sudo apt update sudo apt install postgresql postgresql-contrib ``` Таким образом вы обновите локальный индекс пакетов и установите PostgreSQL вместе с пакетом `contrib`, который содержит дополнительный функционал и утилиты для работы СУБД. При установке будет автоматически создана роль и пользователь в системе Linux `postgres`, под которым можно будет начать работу с PostgreSQL. ## Пользователи (роли) Вместо привычного понятия пользователей, PostgreSQL использует концепцию ролей. Несмотря на определенные отличия, в целом можно определять роли как пользователей базы данных. В зависимости от настройки, роль можно рассматривать как пользователя базы данных или как группу пользователей. Роли могут владеть объектами базы данных (например, таблицами) и выдавать другим ролям разрешения на доступ к этим объектам. Также можно предоставить одной роли членство в другой роли (схоже с добавлением пользователя в группу), чтобы одна роль могла использовать привилегии другой роли. Как отмечалось выше, во время установки была автоматически создана роль `postgres`. Вы можете работать с СУБД из-под нее. Для этого переключитесь на сессию данного пользователя: ```shell sudo su - postgres ``` После чего запустите консоль Postgres: ```shell psql ``` После завершения работы вы сможете выйти из консоли Postgres командой `\q`: ```shell \q ``` Так как для каждой созданной роли Postgres предполагает наличие базы данных с таким же именем и по умолчанию подключается именно к ней, имеет смысл создавать новую роль для каждой базы. Кроме того, если имя роли совпадает с именем пользователя, созданного в системе Linux, подключение к БД также упрощается. ### **Создание новой роли** Создать роль **из консоли системы** (не `psql`) можно с помощью команды: ```shell createuser -P --interactive ``` Ключ `-P` позволит сразу задать пароль пользователю, а `--interactive` запустит интерактивный режим для указания дополнительных параметров. Система поочередно запросит имя новой роли, ее пароль и повтор пароля, а также позволит указать привилегии: сделать ли роль суперпользователем, должны ли быть права на создание баз данных и создание других ролей. Нажимайте `y / n` и `Enter` для выбора. ![Db1](https://content.timeweb.com/assets/7f2c589a-e486-41da-abab-3e88db6a43d3?width=513&height=114) Создать роль **из консоли Postgres** можно с помощью запроса `CREATE ROLE`. При использовании этой команды без дополнительных опций пользователь будет создан без каких-либо привилегий, поэтому желательно сразу при создании роли указывать нужные привилегии. Полный список доступных опций можно просмотреть, выполнив: ```shell \h CREATE ROLE ``` Чтобы создать новую роль выполните: ```shell CREATE ROLE имя_роли WITH LOGIN CREATEDB CREATEROLE; ``` Далее задайте новому пользователю пароль: ```shell \password имя_роли ``` ### **Просмотр существующих ролей** Чтобы просмотреть созданных пользователей и их привилегии, перейдите в консоль Postgres: ```shell psql ``` И выполните команду: ```shell \du ``` Пример вывода: ```shell List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} tmweb | Create role, Create DB | {} tweb | Create role, Create DB | {} ``` Нажмите `q`, чтобы закрыть вывод, и `\q`, если нужно выйти из консоли Postgres. ### **Удаление роли** Чтобы удалить роль, можно использовать команду в консоли системы: ```shell dropuser имя_роли ``` Либо команду в консоли Postgres: ```shell DROP ROLE имя_роли; ``` ### **Смена пароля пользователя** Для смены пароля одной из ролей подключитесь к Postgres от суперпользователя (`postgres` или другой роли с такими привилегиями), после чего выполните: ```shell ALTER USER имя_роли WITH PASSWORD 'новый_пароль'; ``` Обратите внимание, что эта операция сохранится в файле `.psql_history` вместе с паролем в открытом виде. Из соображений безопасности рекомендуется удалить соответствующую запись из файла. Как правило, файл размещается в директории `/var/lib/postgresql`. Проверить его расположение можно в терминале системы с помощью: ```shell grep postgres /etc/passwd | cut -d ':' -f 6 ``` Откройте файл, указав корректный путь к нему: ```shell sudo nano /var/lib/postgresql/.psql_history ``` Удалите запись с паролем и сохраните изменения. ## Создание базы данных Создать базу из консоли системы можно следующим образом: ```shell createdb имя_базы ``` Для создания базы из консоли Postgres, используйте: ```shell CREATE DATABASE имя_базы; ``` Вывести список баз можно командой `\l` в консоли Postgres: ```shell postgres=# \l ``` ## Подключение к базе данных 1. По умолчанию (без дополнительных опций) Postgres пытается подключиться от имени текущего пользователя к одноименной базе. Поэтому, если имя пользователя Linux совпадает с именем роли, созданной в Postgres, а также с именем базы, достаточно выполнить: ```shell psql ``` Например, если на сервере создан пользователь `timeweb`, а в Postgres — одноименная роль и база, подключиться можно с помощью данной команды: ![Db5](https://content.timeweb.com/assets/5b088c16-2eec-46b8-8329-46e154a59b34?width=890&height=113) После подключения можно выполнить команду `\conninfo`, чтобы посмотреть информацию о текущем соединении. 1.2. Если имя базы, к которой нужно подключиться, отличается, нужно указать его в команде: ```shell psql -d имя_базы ``` 2. Если имя роли не совпадает с именем пользователя Linux, необходимо указать дополнительные параметры в команде. 2.1. Если имя роли и имя базы совпадают, достаточно выполнить: ```shell psql -U имя_роли -h localhost -W ``` ![Db2](https://content.timeweb.com/assets/8bba70a7-6ce6-47d9-8eb3-37e36587f1ed?width=777&height=158) Как видно из вывода `\conninfo`, мы подключены к базе `tmweb` от одноименной роли. 2.2. Если имя роли и базы отличаются, базу также нужно указать в команде: ```shell psql -U имя_роли -d имя_базы -h localhost -W ``` ![Db3](https://content.timeweb.com/assets/73d9964d-9707-4bc8-a3a0-60f4dfa8a56a?width=765&height=161) 3. Если вы подключаетесь к другой базе данных уже в консоли Postgres, используйте: ```shell \c имя_базы ``` ![DB C2](https://content.timeweb.com/assets/775b2b0e-ebc7-4bcd-a3b8-501117d3ef3b?width=518&height=112) ## Резервные копии (экспорт и импорт дампа) При установке PostgreSQL на сервер устанавливаются утилиты `pg_dump` и `pg_restore`, с помощью которых вы сможете из консоли Linux создавать резервные копии базы данных (`pg_dump`) и восстанавливать данные из них (`pg_restore`). ### **Создание резервной копии** Чтобы создать резервную копию базы и сохранить ее на сервере, необходимо выполнить команду: ```shell pg_dump -h хост -U имя_роли -F формат_дампа -f путь_к_дампу имя_базы ``` Параметры: - `хост` — сервер, на котором располагается база; может быть указан `localhost`, IP-адрес или домен; - `имя_роли` — имя пользователя PostgreSQL, под которым вы подключаетесь к базе; - `формат_дампа` — формат, в котором будет сохранен дамп; указывается буквами `c`, `t` или `p`: '`с`' (custom), '`t`' (tar — архив .tar), '`p`' (plain — текстовый файл без сжатия, как правило, `.sql`); - `путь_к_дампу` — путь сохранения для файла дампа и имя файла; - `имя_базы` — имя базы данных, для которой создается резервная копия. Например: ```shell pg_dump -h localhost -U tmweb -F c -f /home/user/backups/db.dump tmweb ``` После выполнения команды будет запрошен пароль пользователя Postgres, указанного в команде (в примере — `tmweb`). ### **Восстановление из дампа** Импорт дампов выполняется с помощью `pg_restore`: ```shell pg_restore -h хост -U имя_роли -F формат_дампа -d имя_базы путь_к_дампу ``` Параметры: - `хост` — сервер, на котором располагается база; может быть указан `localhost`, IP-адрес или домен; - `имя_роли` — имя пользователя PostgreSQL, под которым вы подключаетесь к базе; - `формат_дампа` — формат, в котором был сохранен дамп (необязательный ключ); - `имя_базы` — имя базы данных, в которую импортируется дамп; - `путь_к_дампу` — путь к файлу дампа и имя файла. Например: ```shell pg_restore -h localhost -U tmweb -F c -d new_db /home/user/backups/db.dump ``` Для импорта дампов в формате `.sql` используется `cat`: ```shell cat путь_к_дампу | psql -h хост -U имя_роли имя_базы ``` Параметры: - `путь_к_дампу` — путь к файлу дампа и имя файла; - `хост` — сервер, на котором располагается база; может быть указан `localhost`, IP-адрес или домен; - `имя_роли` — имя пользователя PostgreSQL, под которым вы подключаетесь к базе; - `имя_базы` — имя базы данных, в которую импортируется дамп. Например: ```shell cat /home/user/backups/dump.sql | psql -h localhost -U tmweb new_db ``` ## Работа с шаблонами баз данных При установке PostgreSQL по умолчанию создаются три базы данных: `postgres`, `template0`, `template1`. `template0` и `template1` — это шаблоны баз данных, из которых в дальнейшем будут создаваться пользовательские БД. Фактически, когда вы выполняете команду `CREATE DATABASE`, Postgres создает клон базы `template1`. Если внести изменения в `template1`, они будут наследоваться всеми новыми создаваемыми базами. Это позволяет, например, добавить в `template1` необходимые вам таблицы с данными или установить расширения, после чего не потребуется добавлять их для каждой новой базы. Обратите внимание, что для установки расширений необходимо подключиться к `template1` от суперпользователя (`postgres` или другой роли, имеющей данные привилегии). Подключитесь к шаблону `template1`: ```shell \c template1 ``` И установите расширение: ```shell CREATE EXTENSION название_расширения; ``` Например, если вы установите в `template1` расширение `pgcrypto`, то в дальнейшем, при выполнении `CREATE DATABASE`, новые базы будут создаваться с уже установленным `pgcrypto`. ![DB Ext](https://content.timeweb.com/assets/185aac81-ef24-44aa-b981-4771a169b404?width=535&height=67) `template0` — это исходная база, которая используется, когда нужно создать новую базу без каких-либо изменений, внесенных в шаблон `template1`, или же вернуть `template1` в его изначальное состояние. Чтобы создать «чистую базу на основе `template0`, нужно выполнить: ```shell CREATE DATABASE имя_базы TEMPLATE template0; ``` Также `template0` необходима, если вам нужно внести изменения в кодировку или локаль создаваемой базы данных. По умолчанию (при использовании `template1`) эти изменения невозможны. В этом случае нужно при создании базы указать template0 в качестве шаблона и указать требуемую кодировку и/или локаль, например: ```shell CREATE DATABASE имя_базы TEMPLATE template0 ENCODING 'SQL_ASCII'; ``` **Пересоздание template1** С помощью `template0` вы также можете вернуть базу `template1` в исходный вид: для этого потребуется ее удалить, а после создать заново, на основе шаблона template0. Сначала необходимо указать, что `template1` не является шаблоном, чтобы удаление стало возможно: ```shell UPDATE pg_database SET datistemplate = false WHERE datname = 'template1'; ``` Далее удалить `template1`: ```shell DROP DATABASE template1; ``` И создать базу `template1` заново, указав, что она будет являться шаблоном: ```shell CREATE DATABASE template1 OWNER postgres TEMPLATE template0 is_template true; ``` ## Параметры и конфигурационные файлы Узнать расположение конфигурационного файла (как правило, размещается по пути: `/etc/postgresql/версия/main/postgresql.conf`) можно с помощью: ```shell SHOW config_file; ``` ![DB Config](https://content.timeweb.com/assets/9755952c-a515-463f-9721-7370dc78a272?width=359&height=88) Узнать значение какого-либо параметра Postgres: ```shell SHOW параметр; ``` ![DB Show](https://content.timeweb.com/assets/3ff9d885-90e7-4f70-8795-b1b06cf0f9e9?width=293&height=87) Получить расширенную информацию о параметре можно из представления `pg_settings`: будет выведено не только установленное значение, но также файл, в котором он назначен, максимальные и минимальные значения. ```shell SELECT * FROM pg_settings WHERE name = 'параметр'; ``` Например: ```sql SELECT * FROM pg_settings WHERE name = 'max_connections'; ``` Чтобы вывести информацию в удобном для восприятия формате, можно сменить представление командой `\x`: ![DB X](https://content.timeweb.com/assets/32f9efc2-0849-4e19-9dc0-ea5d97ec7b5b?width=597&height=340) ## Другие полезные команды для управления Postgres Вывести все параметры терминального командного меню Postgres: ```shell psql --help ``` Просмотр баз данных из командной строки Linux: ```shell psql -l ``` Список команд `psql` выводится с помощью `\?`: ```shell \? ``` Список SQL-команд (запросов): ```shell \h ``` Справка по конкретному SQL- запросу: ```shell \h запрос # Например: \h CREATE TABLE ``` Информация о подключении: ```shell \conninfo ``` ![DB Conn](https://content.timeweb.com/assets/d960c00a-e967-48ca-a209-3fca693cc09d?width=766&height=49) Выполнение shell-команд из командной строки Postgres: ```shell \! команда_shell ``` Например, чтобы вывести директорию нахождения: ```shell \! pwd ``` ![DB Shell](https://content.timeweb.com/assets/ce99c53c-d690-49dd-94ee-7199a0d74c66?width=295&height=34) Подключение к базе данных: ```shell \c имя_базы ``` ![DB C](https://content.timeweb.com/assets/f9459ef6-5ff1-468f-a1e5-ec616ae3a2ce?width=764&height=79) # Установка почтового сервера iRedMail Source: https://timeweb.cloud/docs/unix-guides/installing-iredmail iRedMail — это многофункциональный почтовый сервер с открытым исходным кодом, который предназначен для дистрибутивов Linux. В инструкции рассмотрим, как установить iRedMail вручную и выполнить необходимые настройки. > [!NOTE] > Вы также можете установить iRedMail автоматически, выбрав сборку «iRedMail» при создании нового облачного сервера. В этом случае после установки воспользуйтесь [отдельной инструкцией](https://timeweb.cloud/docs/unix-guides/configuring-iredmail) по настройке. ## Требования к серверу - ОЗУ: от 2 ГБ, рекомендуется 4 ГБ. - ОС: Ubuntu 22.04; Debian 11; CentOS Stream 9. Установку необходимо выполнять на «чистый» сервер. ## Установка на Debian / Ubuntu **1\.** Установить FQDN hostname для сервера. > [!NOTE] > FQDN — Fully Qualified Domain Name, имя домена, не имеющее неоднозначностей в определении. Включает в себя имена всех родительских доменов иерархии DNS. Проверить текущее значение hostname вы можете командой: ```shell hostname -f ``` Ответом может быть: ```shell mx.example.com ``` Значение hostname устанавливается в файлах `/etc/hostname` и `/etc/hosts`. В `/etc/hostname` нужно прописать короткий hostname — при mx.example.com в качестве FQDN следует указать: ```shell mx ``` В файле `/etc/hosts` указываем FQDN hostname первым в списке: ```shell 127.0.0.1 mx.example.com mx localhost localhost.localdomain ``` Повторно проверяем значение FQDN hostname командой: ```shell hostname -f ``` Если значение mx.example.com не было получено, необходимо перезагрузить сервер. **2\.** Обновить Ubuntu: ```shell apt-get update -y ``` **3\.** Изменить имя хоста сервера на домен электронной почты. **4\.** Загрузить архив с актуальной версией iRedMail с [сайта проекта](https://www.iredmail.org/download.html). **5\.** Разархивировать полученный архив командой: ```shell tar -xvzf 1.6.0.tar.gz ``` **6\.** Перейти в каталог с файлами и запустить скрипт iRedMail.sh: ```shell cd iRedMail-1.6.0 chmod +x iRedMail.sh ./iRedMail.sh ``` Далее запустится мастер установки, где будет возможность выбрать необходимые параметры либо оставить стандартные значения почтового сервера, а также установить дополнительное ПО в случае необходимости. **7.** В первую очередь нужно согласиться с установкой: ![0ogimage](https://content.timeweb.com/assets/ea82a3db-04a8-4aff-b22b-bedf48428f9c?width=1504&height=938) **8\.** Выбрать место хранения почтовых ящиков пользователей: ![Iu6image](https://content.timeweb.com/assets/26bf000f-589a-43be-b1b4-472949bd0806?width=1494&height=938) **9\.** Выбрать бэкенд по своему усмотрению: ![H5aimage](https://content.timeweb.com/assets/3726a06d-e060-47a3-bb87-cf4bf0c408d6?width=1500&height=944) - Если вы выбираете OpenLDAP, будет запрошен LDAP-суффикс: ![S Bfimage](https://content.timeweb.com/assets/73e8fc23-6438-4137-9621-acb4d51b404e?width=1442&height=934) - При выборе MySQL, MariaDB или PostgreSQL будет создан надёжный пароль, который можно найти в файле `/root/iRedMail-x.y.z/iRedMail.tips`. **10\.** В следующем окне появится мастер установки доменного имени электронной почты. Помните, что вы не можете установить имя хоста сервера в качестве домена электронной почты: ![Lm Himage](https://content.timeweb.com/assets/ec7e0dff-269c-4b42-81f4-8d62a2cbfe10?width=1494&height=936) **11\.** Установить пароль для администратора: ![Nu Yimage](https://content.timeweb.com/assets/29816f77-c579-4143-9173-f66801f5870c?width=1490&height=942) Этот аккаунт будет администратором и почтовым пользователем, с его реквизитами вы сможете войти в почтовый ящик, а также в админ-панель iRedAdmin. **12\.** Выбрать дополнительные компоненты: ![O P Limage](https://content.timeweb.com/assets/8f429646-3027-4ff2-9695-c36400c71918?width=1502&height=946) **13.** Согласиться с предложенной для установки конфигурацией, введя `y`: ![58eimage](https://content.timeweb.com/assets/5d0fac28-566f-4066-b2df-ed76acab4bf5?width=1540&height=924) **14\.** После завершения установки выполнить перезагрузку сервера. После установки вся необходимая информация (пароли пользователей, пути к конфигурационным файлам) доступна в файле `/root/iRedMail-x.y.z/iRedMail.tips`. Дополнительные компоненты будут доступны по следующим адресам: - Roundcube Webmail: https://адрес_сервера/mail/ - SOGo Groupware: https://адрес_сервера/SOGo - Веб-интерфейс админ-панели iRedAdmin: https://адрес_сервера/iredadmin/ Дополнительную информацию и помощь при проблемах можно получить на [форуме проекта](https://forum.iredmail.org/) или в [платной поддержке](https://www.iredmail.org/support.html) iRedMail. ## Установка на CentOS / RHEL **1.** Установить FQDN hostname для сервера. > [!NOTE] > FQDN — Fully Qualified Domain Name, имя домена, не имеющее неоднозначностей в определении. Включает в себя имена всех родительских доменов иерархии DNS. Проверить текущее значение hostname вы можете командой: ```shell hostname -f ``` Ответом может быть: ```shell mx.example.com ``` Значение hostname устанавливается в файлах `/etc/hostname` и `/etc/hosts`. В `/etc/hostname` нужно прописать короткий hostname — при mx.example.com в качестве FQDN следует указать: ```shell mx ``` В файле `/etc/hosts` указываем FQDN hostname первым в списке: ```shell 127.0.0.1 mx.example.com mx localhost localhost.localdomain ``` Повторно проверяем значение FQDN hostname командой: ```shell hostname -f ``` Если значение mx.example.com не было получено, необходимо перезагрузить сервер. **2\.** Отключить SELINUX одним из следующих способов. - Способ 1. В файле `/etc/selinux/config` необходимо указать `SELINUX=disabled`, после чего выполнить перезагрузку сервера. - Способ 2. Выполнить в консоли команду ниже — она отключит SELINUX без перезагрузки сервера. ```shell setenforce 0 ``` **3\.** Подключить официальные репозитории, если в этом будет необходимость (epel, appstream, powertools). **4\.** Следовать [инструкции для Ubuntu](https://timeweb.cloud/docs/unix-guides/installing-iredmail#ustanovka-na-debian--ubuntu), начиная с пункта 4. # Настройка почтового сервера iRedMail Source: https://timeweb.cloud/docs/unix-guides/configuring-iredmail После установки iRedMail из **нашего маркетплейса** для завершения настройки выполните описанные ниже шаги. ## Проверка почтовых портов Для предотвращения отправки спама почтовые порты на сервере могут быть заблокированы. В этом случае они будут указаны на Дашборде сервера в пункте «Закрытые порты». Чтобы снять блокировку, привяжите к аккаунту номер телефона и нажмите на иконку замка. ![E04dd52a B33c 4c8b A4ea 4d48a6b57e31](https://content.timeweb.com/assets/bb88ee2f-966a-431e-978b-cc66ae54b164.png?width=1570&height=1128) ## Настройка почтового домена ### Шаг 1. Добавьте домен и ящик в iRedMail 1. Авторизуйтесь в панели iRedMail. Реквизиты доступа можно найти на Дашборде сервера. 2. Нажмите «Добавить» → «Домен». 3. Введите имя домена или поддомена, на котором вы планируете создать почтовые ящики. 4. Нажмите «Добавить». 5. Нажмите «Добавить» → «Пользователи». 6. Введите имя ящика и пароль. Сохраните этот пароль — он понадобится в дальнейшем. 7. Нажмите «Добавить». ### Шаг 2. Сгенерируйте DKIM для домена Во всех примерах ниже мы будем использовать почтовый домен `domain.ru`. Замените его в командах и настройках на ваш реальный домен. 1. [Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. Сгенерируйте DKIM для домена командой ниже: ```shell amavisd genrsa /var/lib/dkim/domain.ru.pem 1024 ``` При успешном выполнении вы увидите сообщение: ```shell Private RSA key successfully written to file "/var/lib/dkim/domain.ru.pem" (1024 bits, PEM format) ``` ### Шаг 3. Отредактируйте конфигурационный файл 1. Откройте конфигурационный файл: ```shell nano /etc/amavis/conf.d/50-user ``` 2. Найдите в нем блок «Add dkim_key here». Он будет начинаться примерно так: ```shell # Add dkim_key here. dkim_key('mail.spb-3-vm-83ns.twc1.net', 'dkim', '/var/lib/dkim/mail.spb-3-vm-83ns.twc1.net.pem'); @dkim_signature_options_bysender_maps = ({ ``` 3. Перед `@dkim_signature_options_bysender_maps` добавьте следующую строку: ```shell dkim_key('domain.ru', 'dkim', '/var/lib/dkim/domain.ru.pem'); ``` 4. Внутри блока `@dkim_signature_options_bysender_maps` добавьте строку: ```shell "domain.ru" => { d => "domain.ru", a => 'rsa-sha256', ttl => 10*24*3600 }, ``` У вас должно получиться примерно следующее содержимое: ```shell # Add dkim_key here. dkim_key('mail.spb-3-vm-83ns.twc1.net', 'dkim', '/var/lib/dkim/mail.spb-3-vm-83ns.twc1.net.pem'); dkim_key('domain.ru', 'dkim', '/var/lib/dkim/domain.ru.pem'); @dkim_signature_options_bysender_maps = ({ # 'd' defaults to a domain of an author/sender address, "domain.ru" => { d => "domain.ru", a => 'rsa-sha256', ttl => 10*24*3600 }, # 's' defaults to whatever selector is offered by a matching key # Per-domain dkim key #"domain.com" => { d => "domain.com", a => 'rsa-sha256', ttl => 10*24*3600 }, # catch-all (one dkim key for all domains) '.' => {d => 'mail.spb-3-vm-83ns.twc1.net', a => 'rsa-sha256', c => 'relaxed/simple', ttl => 30*24*3600 }, }); ``` 5. Сохраните изменения и закройте файл, нажав CTRL + X, затем Y, затем Enter. 6. Настройте права к файлу с DKIM: ```shell chown amavis:amavis /var/lib/dkim/domain.ru.pem chmod 0400 /var/lib/dkim/domain.ru.pem ``` 7. Перезапустите службу командой ```shell systemctl restart amavis ``` ## Настройка DNS-записей Настройку необходимо выполнять **на стороне держателя NS-серверов**. Если домен делегирован на NS-серверы Timeweb Cloud, настроить DNS необходимо в разделе [«Домены и SSL»](https://timeweb.cloud/my/domains). ### DKIM 1. Получите значение открытого DKIM-ключа, выполнив на сервере: ```shell amavisd showkeys domain.ru ``` Вы получите значение DKIM-ключа в формате: ```shell dkim._domainkey.domain.ru. 3600 TXT ( "v=DKIM1; p=" "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCXWvK9yuKyB7AUvEurr5hNMvGk" "y+7m1nYP6UTA2SMjK+vid7+ElmpRczCgvSCONFOGIykZx4mLUUPAZnzl2hC1lffy" "LjW41zi3+YKMAbQEtqA3zXvNxlSNvNEfLinKB5uqUmyhxVfaBIZSb5fEYpPodVBP" "y3DDcfkKL1pw33QIuQIDAQAB") ``` 2. Уберите все кавычки и переносы строк, чтобы получить запись вида: ```shell v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCXWvK9yuKyB7AUvEurr5hNMvGky+7m1nYP6UTA2SMjK+vid7+ElmpRczCgvSCONFOGIykZx4mLUUPAZnzl2hC1lffyLjW41zi3+YKMAbQEtqA3zXvNxlSNvNEfLinKB5uqUmyhxVfaBIZSb5fEYpPodVBPy3DDcfkKL1pw33QIuQIDAQAB ``` 3. Перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains) и кликните на ваш почтовый домен. 4. На вкладке «DNS» добавьте новую TXT-запись. 5. В пункте «Хост» кликните «Указать вручную» и введите: ```shell dkim._domainkey.domain.ru ``` 6. В поле «Значение» укажите ваш DKIM-ключ. ### SPF Если для домена уже создана SPF, вы можете ее отредактировать, кликнув на нее. Для домена не должно быть создано больше одной SPF. 1. Перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains) и кликните на ваш почтовый домен. 2. На вкладке «DNS» добавьте новую TXT-запись. 3. Пункт «Хост» оставьте без изменений. 4. В поле «Значение» укажите: ```shell v=spf1 ip4:IP_адрес_сервера ~all ``` ### MX 1. Перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains) и кликните на ваш почтовый домен. 2. На вкладке «Поддомены» создайте поддомен, например, `mail.domain.ru`, и укажите в качестве его A-записи IP-адрес сервера iRedMail. 3. На вкладке «DNS» добавьте новую MX-запись. 4. В поле «Приоритет» укажите 10. 5. Пункт «Хост» оставьте без изменений. 6. В поле «Значение» укажите созданный поддомен. ### DMARC 1. Перейдите в раздел [«Домены и SSL»](https://timeweb.cloud/my/domains) и кликните на ваш почтовый домен. 2. На вкладке «DNS» добавьте новую TXT-запись. 3. В поле «Хост» укажите: ```shell _dmarc.domain.ru ``` 4. В поле «Значение» укажите: ```shell v=DMARC1; p=none ``` ### PTR и Hostname Как и DMARC, эти записи необязательны для работы почтового домена, но многие почтовые сервисы проверяют их наличие по следующему принципу: - Значения PTR и Hostname должны совпадать. - В А-записи домена, указанного в качестве значения, должен быть указан IP-адрес вашего сервера. Мы рекомендуем использовать для этих записей поддомен, который вы создали на этапе настройки MX. В нашем случае это `mail.domain.ru`. Замените его на нужное вам значение. #### Настройка PTR Чтобы настроить PTR: 1. Перейдите в раздел «Облачные серверы» и кликните на ваш сервер с iRedMail. 2. На вкладке «Сеть» наведите курсор на публичный IPv4 сервера и нажмите на иконку шестеренки. 3. В открывшемся окне укажите ваш поддомен в формате: ```shell mail.domain.ru ``` #### Настройка Hostname 1. Задайте Hostname, выполнив на сервере команду: ```shell hostnamectl set-hostname mail.domain.ru ``` 2. Проверьте, что изменения применены: ```shell hostnamectl ``` 3. Настройте Hostname в Postfix командами: ```shell postconf -e "myhostname = mail.domain.ru" postfix reload ``` 4. Проверьте, что изменения применены: ```shell postconf myhostname ``` 5. Настройте хостнейм в конфигурационном файле iRedMail. Для этого откройте файл: ```shell nano /etc/amavis/conf.d/50-user ``` 6. Найдите строку с параметром `$myhostname` (обычно, 12 строка). 7. Замените значение на нужный домен и сохраните изменения. 8. Перезапустите службу командой: ```shell systemctl restart amavis ``` ## Настройка SSL-сертификата По этой инструкции вы сможете выпустить и установить бесплатный сертификат SSL Let’s Encrypt для вашего почтового поддомена. ### Шаг 1. Установите certbot Для этого выполните команды: ```shell apt install software-properties-common -y add-apt-repository ppa:certbot/certbot -y apt install certbot -y ``` ### Шаг 2. Запросите сертификат Это можно сделать с помощью команды: ```shell certbot certonly --webroot --agree-tos --email ваш@email -w /opt/www/well_known -d mail.domain.ru ``` Замените `mail.domain.ru` на ваш почтовый домен, а `ваш@email` — на ваш контактный ящик. В процессе система запросит, хотите ли вы получать новости — можно ответить отказом. При успешном выполнении команда разместит файлы сертификата по пути `/etc/letsencrypt/live/mail.domain.ru/`. Доступ к этому каталогу имеет только `root`. Для корректной работы почтовых служб и баз данных измените права командой: ```shell chmod 0755 /etc/letsencrypt/{live,archive} ``` ### Шаг 3. Настройте сертификат Создайте символические ссылки на файлы сертификата Let's Encrypt, разместив их вместо файлов самоподписанного сертификата iRedMail. Создайте резервную копию файла сертификата: ```shell mv /etc/ssl/certs/iRedMail.crt{,.bak} ``` И файла ключа: ```shell mv /etc/ssl/private/iRedMail.key{,.bak} ``` Создайте символические ссылки на файлы сертификата и ключа: ```shell ln -s /etc/letsencrypt/live/mail.domain.ru/fullchain.pem /etc/ssl/certs/iRedMail.crt ln -s /etc/letsencrypt/live/mail.domain.ru/privkey.pem /etc/ssl/private/iRedMail.key ``` Перезапустите службы: ```shell systemctl restart postfix dovecot nginx ``` ### Шаг 4. Настройте автообновление Чтобы сертификат автоматически продлевался при приближении срока истечения, можно создать cron-задачу. Откройте файл планировщика задач в редакторе: ```shell crontab -e ``` При первом запуске потребуется выбрать удобный текстовый редактор — мы рекомендуем использовать `nano`. После вы увидите файл с cron-задачами iRedMail. Вставьте в файл следующую строку, заменив `mail.domain.ru` на ваш поддомен для почты: ```shell 1 3 * * * certbot certificates; certbot renew --post-hook 'ln -sf /etc/letsencrypt/live/mail.domain.ru/privkey.pem /etc/ssl/private/iRedMail.key; /usr/bin/systemctl restart postfix dovecot nginx' ``` Задача будет запускаться ежедневно в 03:01 и автоматически продлевать сертификат, если до его истечения осталось менее 30 дней. Сохраните изменения и закройте файл, нажав Ctrl + X, затем Y, затем Enter. ## Проверка работы Настройка завершена. Теперь вы можете отправлять письма по защищенному протоколу и обращаться к iRedMail по вашему домену: - Админ-панель: `https://mail.domain.ru/iredadmin/` - Roundcube: `https://mail.domain.ru/mail/` Авторизуйтесь в почтовом ящике по ссылке `https://mail.domain.ru/mail/`, используя логин и пароль от созданного ящика, и протестируйте работу почты: - Проверьте отправку писем через [mail-tester](https://www.mail-tester.com/). - Проверьте прием писем, отправив себе письмо на этот ящик. Если что-то не работает — свяжитесь с поддержкой, мы поможем разобраться. # Установка SSL на сервер с Keitaro Source: https://timeweb.cloud/docs/unix-guides/installing-ssl-on-server-with-keitaro Установить SSL-сертификат на сервер с ПО Keitaro проще всего по следующей инструкции. Она позволит выпустить и установить бесплатный SSL Let's Encrypt, который будет автоматически продлеваться каждые три месяца. 1. Укажите в качестве A-записи домена IP-адрес вашего сервера. Если домен размещается на NS-серверах Timeweb Cloud, это можно сделать в разделе «[Домены](https://timeweb.cloud/my/domains)». В остальных случаях настройку нужно выполнить на стороне держателя NS-серверов. 2. [Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и выполните команду ниже, указав вместо mydomain.ru ваш домен: ```shell kctl-enable-ssl -D mydomain.ru ``` Сертификат будет выпущен и установлен. # Запуск WordPress на сервере c Ubuntu Source: https://timeweb.cloud/docs/unix-guides/wordpress-on-ubuntu Для запуска WordPress на сервере Timeweb Cloud вам не нужно выполнять никаких сложных настроек — установить CMS можно в несколько кликов. ### Установка WordPress на новый сервер 1. [Зарегистрируйте аккаунт](https://timeweb.cloud/docs?auth=registrationAccount) в Timeweb Cloud, если его еще нет. 2. В панели управления перейдите в раздел «Облачные серверы». 3. Нажмите «Создать» или «Добавить». 4. Перейдите на вкладку «Маркетплейс». 5. Выберите образ «WordPress + Ubuntu 24.04». 6. Укажите остальные параметры и создайте сервер. ### Установка WordPress на существующий сервер Установку можно выполнить и на существующий сервер — при этом все имеющиеся данные на нем будут удалены. 1. В панели управления перейдите в раздел «Облачные серверы». 2. Кликните на нужный сервер. 3. Перейдите на вкладку «Конфигурация» и нажмите «Переустановить». 4. На следующей странице выберите вкладку «Маркетплейс» и найдите на ней образ «WordPress + Ubuntu 24.04» 5. Укажите остальные параметры и переустановите сервер. ![Scr 20260522 Nzed](https://content.timeweb.com/assets/3c48bbf8-7aae-46e2-b1a6-ffd5ff59c9bb.png?width=2262&height=1586) После установки сервера реквизиты придут на вашу почту, и вы сможете начать работу с CMS. # Запуск бота в фоновом режиме Source: https://timeweb.cloud/docs/unix-guides/zapusk-bota-v-fonovom-rezhime Вы можете запустить на сервере бота, написанного на Python или любом другом языке программирования. Чтобы обеспечить постоянную и надежную работу скрипта, потребуется настроить автозапуск и перезагрузку. ## Подготовка Загрузите файлы бота, например, в директорию `/home/me` и создайте виртуальное окружение: ```shell python3 -m venv venv ``` Активируйте его: ```py source ./venv/bin/activate ``` Далее установите все пакеты: ```py pip install -r requirements.txt ``` Если файл `requirements.txt` со списком пакетов отсутствует, установите все расширения вручную. ## Screen — самый простой метод Для простого запуска скрипта в фоне можно воспользоваться утилитой `screen`, которая позволяет создавать неограниченное количество сессий в терминале. Ее необходимо установить из репозитория: ```shell sudo apt install screen ``` Запустите новое окно командой: ```shell screen ``` Активируйте виртуальное окружение и запустите бота: ```shell source ./venv/bin/activate python main.py ``` Осталось свернуть сессию. Для этого необходимо зажать сочетание клавиш Ctrl + A, после чего нажать D. Список основных команд: - `screen` — запуск новой сессии; - `screen -ls` — просмотр всех сессий; - `screen -r ` — открыть конкретную сессию (если сессия всего одна, то имя можно не указывать). В сессии: - Ctrl + A + D — свернуть сессию; - Ctrl + A + K — завершить сессию. Это простой метод, который не требует создания конфигурационных файлов. Однако если сервер будет перезагружен или во время работы скрипта возникнет ошибка, бота нужно будет запустить заново. ## Systemd Рассмотрим запуск приложения в роли службы. [Systemd](https://timeweb.cloud/docs/unix-guides/service-management-in-systemd) — это менеджер системы и служб Linux. Он управляет службами, которые описаны в конфигурационных файлах, и запускает их. Создайте новый юнит systemd: ```shell sudo nano /etc/systemd/system/bot.service ``` Добавьте в него следующее содержимое: ``` [Unit] Description=Timeweb Bot Service After=network.target [Service] Type=idle Restart=always RestartSec=3 User=root WorkingDirectory=/home/me/bot ExecStart=/home/me/bot/venv/bin/python /home/me/bot/main.py [Install] WantedBy=multi-user.target ``` где: - Description — название службы, - ExecStart — путь до интерпретатора Python и скрипта, - User — пользователь, от которого будет запущена служба, - Restart=always — указание, что необходимо перезапустить бота после ошибки. Осталось перезагрузить юниты, добавить службу в автозапуск и активировать бота: ```shell sudo systemctl daemon-reload sudo systemctl enable bot.service sudo systemctl start bot.service ``` Теперь проверьте работу бота. Если бот не отвечает, попробуйте запустить его в терминале и посмотреть, нет ли ошибок ## **PM2** Еще один способ запустить бота — использовать менеджер процессов PM2. О нем мы подробнее писали в [Community](https://timeweb.com/ru/community/articles/ispolzuem-process-menedzhment-na-maksimum-ustanovka-i-nastroyka-pm2-1). PM2 автоматически перезапускает бота и сохраняет логи. Установите следующие пакеты: ```shell sudo apt install nodejs sudo apt install npm ``` Далее установите PM2: ```shell npm install pm2 -g ``` Для запуска бота перейдите в директорию с ботом и запустите его командой: ```shell pm2 start main.py --interpreter=python3 ``` # Установка сертификатов Минцифры Source: https://timeweb.cloud/docs/unix-guides/ustanovka-sertifikatov-mincifry Сбербанк переводит свой эквайринг с международных сертификатов на сертификаты Минцифры. Если на вашем сайте используется оплата через Сбербанк, то для корректной работы платежного шлюза: 1. На ваш сайт или сервер должны быть установлены цепочки сертификатов Минцифры. 2. На устройство вашего клиента должны быть установлены сертификаты Минцифры, либо клиенту необходимо пользоваться браузерами Яндекс или Atom. Своих клиентов вы можете ориентировать на [инструкцию по установке сертификатов](http://www.sberbank.ru/ru/certificates) на сайте Сбербанка. Процесс установки цепочки сертификатов на сервер описан ниже. ## Установка цепочки сертификатов на сервер ### Установка на Ubuntu/Debian 1. Авторизуйтесь на сервере под `root` или пользователем с правами `sudo`. 2. Скачайте файлы цепочки сертификата: ```shell wget https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt ``` ```shell wget https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt ``` 3. Скопируйте файлы сертификатов в хранилище сертификатов в каталог `/usr/local/share/ca-certificates/`: ```shell cp russian_trusted_sub_ca_pem.crt /usr/local/share/ca-certificates/ ``` ```shell cp russian_trusted_root_ca_pem.crt /usr/local/share/ca-certificates/ ``` 4. Обновите хранилище сертификатов командой: ```shell update-ca-certificates ``` 5. Выполните проверку доступа к Сбербанку: ```shell openssl s_client -connect sberbank.ru:443 2>/dev/null | grep 'Verify return code' ``` Пример корректного ответа: ```shell Verify return code: 0 (ok) ``` По другим вопросам, связанным с работой платежного шлюза, обращайтесь в поддержку Сбербанка. Дополнительную информацию о сертификатах можно получить в [документации Сбербанка](https://securepayments.sberbank.ru/wiki/doku.php/certificates:start). ### Установка на СentOS 1. Авторизуйтесь на сервере под `root` или пользователем с правами `sudo`. 2. Установите `wget`: ```shell yum install wget ``` 3. Скачайте файлы цепочки сертификата: ```shell wget https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt ``` ```shell wget https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt ``` 3. Скопируйте файлы сертификатов в хранилище сертификатов в каталог `/etc/pki/ca-trust/source/anchors/`: ```shell cp russian_trusted_sub_ca_pem.crt /etc/pki/ca-trust/source/anchors/ ``` ```shell cp russian_trusted_root_ca_pem.crt /etc/pki/ca-trust/source/anchors/ ``` 4. Обновите хранилище сертификатов командой: ```shell update-ca-trust ``` 5. Выполните проверку доступа к Сбербанку: ```shell openssl s_client -connect sberbank.ru:443 2>/dev/null | grep 'Verify return code' ``` Пример корректного ответа: ```shell Verify return code: 0 (ok) ``` По другим вопросам, связанным с работой платежного шлюза, обращайтесь в поддержку Сбербанка. Дополнительную информацию о сертификатах можно получить в [документации Сбербанка](https://securepayments.sberbank.ru/wiki/doku.php/certificates:start). # Создание образа виртуальной машины для облачного сервера Source: https://timeweb.cloud/docs/unix-guides/sozdanie-obraza-virtualnoj-mashiny-dlya-oblachnogo-servera В статье рассмотрим, как создать образ виртуальной машины, готовый для использования в облаке, с помощью QEMU и VirtualBox. На примере Ubuntu Server 23.10 вы узнаете, как настроить систему, создать и подготовить образ для его последующего развертывания в облачной среде. ## Создание образа виртуальной машины при помощи QEMU Рассмотрим процесс создания образа виртуальной машины на Ubuntu, Windows и macOS с использованием QEMU. Создание образа рассмотрим на примере Ubuntu Server 23.10. ### Предварительная подготовка **Скачивание ISO-образа Ubuntu** Перед установкой QEMU потребуется загрузить ISO-образ Ubuntu. Скачайте его при помощи браузера по [ссылке](https://releases.ubuntu.com/23.10.1/ubuntu-23.10-live-server-amd64.iso) или выполните команду: ```shell wget https://releases.ubuntu.com/23.10.1/ubuntu-23.10-live-server-amd64.iso -O ubuntu-23.10-live-server-amd64.iso ``` Эта команда сохранит образ Ubuntu 23.10 в текущую директорию под именем `ubuntu-23.10-live-server-amd64.iso`. **Установка QEMU** Ubuntu Для установки QEMU и сопутствующих инструментов выполните команду: ```shell sudo apt install qemu-kvm qemu virt-manager virt-viewer libvirt-daemon-system qemu-utils ``` Windows Загрузите установщик QEMU с [официального сайта](https://www.qemu.org/download/#windows) и установите, оставив все параметры по умолчанию. После установки запустите `cmd` от имени администратора и перейдите в директорию, где установлен QEMU: ```shell cd "C:\Program Files\qemu" ``` MacOS Установите QEMU через Homebrew: ```shell brew install qemu ``` ### Создание виртуального диска Создайте виртуальный диск с форматом qcow2 и размером 10 ГБ: ```shell qemu-img create -f qcow2 tw.qcow2 10G ``` ### Запуск виртуальной машины с ISO-образом Теперь, когда диск готов, запустим виртуальную машину с использованием скачанного ISO-образа. Используйте следующую команду для запуска виртуальной машины: Ubuntu ```shell qemu-system-x86_64 -enable-kvm -m 1024 -nic user,model=virtio -drive file=tw.qcow2,media=disk,if=virtio -cdrom ubuntu-23.10-live-server-amd64.iso ``` Windows ```shell .\qemu-system-x86_64.exe -m 1024 -nic user,model=virtio -drive file=tw.qcow2,media=disk,if=virtio -cdrom C:\Users\User\Downloads\ubuntu-23.10-live-server-amd64.iso ``` MacOS ```shell qemu-system-x86_64 -m 1024 -nic user,model=virtio -drive file=tw.qcow2,media=disk,if=virtio -cdrom /path/to/ubuntu-23.10-live-server-amd64.iso ``` Описание параметров: - `-enable-kvm` — активирует аппаратное ускорение с помощью KVM для повышения производительности (доступно на Linux). - `-m 1024` — выделяет 1 ГБ оперативной памяти для виртуальной машины. - `-nic user,model=virtio` — добавляет виртуальный сетевой интерфейс с моделью `virtio`. - `-drive file=tw.qcow2,media=disk,if=virtio` — подключает ранее созданный диск `tw.qcow2` с интерфейсом `virtio`. - `-cdrom` — указывает путь до ISO-образа Ubuntu для установки системы. В процессе установки оставьте параметры по умолчанию, но снимите галочку с опции «Set up this disk as an LVM group» при настройке диска. Это необходимо, поскольку при использовании LVM ресайз файловой системы будет невозможен при дальнейшем использовании образа в облаке. Когда установщик предложит выбор дополнительных компонентов, обязательно установите OpenSSH Server. ### Завершающие настройки после установки После установки системы для обеспечения работы некоторых функций панели управления установите `qemu-guest-agent`: ```shell sudo apt install qemu-guest-agent sudo systemctl enable qemu-guest-agent.service ``` Также рекомендуем отключить файл подкачки. Для этого выполните команду: ```shell swapoff -a ``` Все рекомендации по подготовке образа для создания облачного сервера доступны [тут](https://timeweb.cloud/docs/unix-guides/podgotovka-obraza-dlya-sozdaniya-oblachnogo-servera). ### Использование образа для работы в облаке После установки всех необходимых пакетов можно завершить работу виртуальной машины и загрузить созданный образ `tw.qcow2` в панель управления. 1. Перейдите на вкладку «[Образы](https://timeweb.cloud/my/images)», выберите «Загрузка образа», затем «С компьютера» и загрузите файл `tw.qcow2`. ![Image2](https://content.timeweb.com/assets/405e0060-b297-4a07-a414-bf3015e239e8.png?width=1025&height=757) 2. После завершения загрузки создайте облачный сервер, выбрав ранее загруженный образ в разделе «Мои образы». ![Image7](https://content.timeweb.com/assets/54fe9f5e-8521-4205-b985-e4a1691c4ca2.png?width=1048&height=747) 3. Запустите создание сервера и дождитесь его завершения. После создания сервера можно будет подключиться к нему с использованием данных доступа, заданных при установке. ## Создание образа виртуальной машины при помощи VirtualBox Рассмотрим, как создать образ виртуальной машины с помощью VirtualBox на примере Ubuntu Server 23.10. ### Подготовка Скачайте ISO-образ Ubuntu Server 23.10. Сделать это можно с помощью браузера по [ссылке](https://releases.ubuntu.com/23.10.1/ubuntu-23.10-live-server-amd64.iso) или выполните команду: ```shell wget https://releases.ubuntu.com/23.10.1/ubuntu-23.10-live-server-amd64.iso -O ubuntu-23.10-live-server-amd64.iso ``` Эта команда сохранит образ Ubuntu 23.10 в текущую директорию под именем `ubuntu-23.10-live-server-amd64.iso`. ### Создание виртуальной машины 1. Откройте VirtualBox и нажмите кнопку «Создать» для создания новой виртуальной машины. 2. Введите имя виртуальной машины, укажите путь до скачанного ранее iso-файла и выберите папку, в которой будет создана виртуальная машина. ![Image3](https://content.timeweb.com/assets/0ffc146a-00bd-4322-b5ea-9e0c3166b574.png?width=827&height=470) _Создание виртуальной машины в интерфейсе [VirtualBox](https://www.virtualbox.org/)_ 3. Нажмите «Далее» и выберите объем оперативной памяти. Рекомендуется выделить 1024 МБ для комфортной работы. 4. На этапе создания виртуального диска выберите «Создать новый виртуальный диск», укажите желаемый размер (в нашем случае стоит указать 10 ГБ) и нажмите «Далее». ![Image1](https://content.timeweb.com/assets/ffd2d6a8-c95e-476e-82dd-9f700fde1403.png?width=830&height=471) _Создание виртуальной машины в интерфейсе [VirtualBox](https://www.virtualbox.org/)_ 5. Проверьте все данные и нажмите «Готово». ### Запуск виртуальной машины и установка Ubuntu 1. Запустите виртуальную машину, нажав «Запустить». 2. Начнется установка Ubuntu Server. Следуйте стандартным шагам установщика. 3. На этапе выбора диска снимите галочку с опции «Set up this disk as an LVM group». Это важно, так как использование LVM делает невозможным ресайз файловой системы при дальнейшем использовании образа в облаке. 4. Когда установщик предложит выбрать дополнительные компоненты, установите OpenSSH Server для последующего подключения по SSH. ### Настройки после установки После установки системы выполните следующие команды для обеспечения работы некоторых функций панели управления: ```shell sudo apt install qemu-guest-agent sudo systemctl enable qemu-guest-agent.service ``` Также рекомендуем отключить файл подкачки. Для этого выполните команду: ```shell swapoff -a ``` Все рекомендации по подготовке образа для создания облачного сервера доступны [тут](https://timeweb.cloud/docs/unix-guides/podgotovka-obraza-dlya-sozdaniya-oblachnogo-servera). ### Использование образа для создания сервера 1. Завершите работу виртуальной машины. 2. Чтобы найти файл образа, откройте настройки виртуальной машины в VirtualBox и перейдите в раздел «Носители». Путь к образу указан в информации о диске в графе «Расположение». ![Image6](https://content.timeweb.com/assets/bac1d186-4010-4c57-a8bf-4feec2c81fd2.png?width=1252&height=537) _Настройки виртуальной машины в интерфейсе [VirtualBox](https://www.virtualbox.org/)_ 3. В панели управления облака перейдите на вкладку «[Образы](https://timeweb.cloud/my/images)», выберите «Загрузка образа», затем «С компьютера» и загрузите файл образа `.vdi`. ![Image5](https://content.timeweb.com/assets/d1e4a52e-683f-4224-8460-c0f83fad5652.png?width=1083&height=751) 4. После завершения загрузки создайте облачный сервер, выбрав ранее загруженный образ в разделе «Мои образы». ![Image4](https://content.timeweb.com/assets/a455bbaf-7076-48fc-b27c-cc657a457642.png?width=1023&height=746) 5. Запустите создание сервера и дождитесь его завершения. После создания сервера можно будет подключиться к нему, используя данные, заданные при установке. # Подготовка образа для создания облачного сервера Source: https://timeweb.cloud/docs/unix-guides/podgotovka-obraza-dlya-sozdaniya-oblachnogo-servera Перед тем, как создать облачный сервер из образа, образ необходимо подготовить — это нужно для того, чтобы установка была выполнена корректно и полноценно работал функционал панели управления. Ниже рассмотрим, какие проверки и настройки потребуется выполнить для успешного создания сервера. В нашем [репозитории на GitHub](https://github.com/timeweb-cloud/image-build-examples) вы можете найти примеры конфигов сборочной системы Packer для автоматической сборки образов ВМ. ## Основные настройки ### Таблица разделов Проверьте разбивку разделов на диске. Мы рекомендуем использовать для разбивки MBR или GPT; они обе поддерживаются большинством Linux-дистрибутивов командами `fdisk`, `gdisk` и аналогичными. ```shell gdisk -l /dev/vda ``` Пример вывода: ```shell GPT fdisk (gdisk) version 1.0.5 Partition table scan: MBR: MBR only BSD: not present APM: not present GPT: not present ``` Если используется иная разметка, потребуется создать образ заново, с корректной разметкой. ### Разметка диска Если на диске размечен всего один раздел (корневой) и он имеет файловую систему ext3 или ext4, то при установке сервера из образа будет выполнен ресайз файловой системы. ФС будет расширена до заданного в конфигурации сервера размера диска. Например, если размер блочного устройства в образе 10 ГБ, то при установке сервера с диском 15 ГБ блочное устройство и ФС будут расширены до 15 ГБ. Ресайз файловой системы не будет выполнен, если задействован LVM (Logical Volume Manager). ### Загрузчик ОС Мы используем для запуска виртуальных машин SeaBIOS, поэтому в ОС должен быть установлен обычный загрузчик для BIOS. Если установлен UEFI-загрузчик, его необходимо удалить и установить загрузчик для BIOS. Если вы используете GRUB2, cмотрите инструкции по установке и настройке [здесь](https://wiki.archlinux.org/title/GRUB_\(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9\)). ### Настройка /etc/fstab Для стабильного запуска системы в файле `/etc/fstab` для корневого раздела указывайте монтирование по UUID, например: ```shell UUID=f19002a1-6e7a-45ac-91cd-24b7cc0e4cd9 / ext4 defaults 0 1 ``` Посмотреть UUID раздела можно, например, командой: ```shell blkid ``` Пример вывода: ```shell /dev/vda1: UUID="f19002a1-6e7a-45ac-91cd-24b7cc0e4cd9" TYPE="ext4" PARTUUID="f7a1fae1-01" /dev/loop0: TYPE="squashfs" /dev/loop1: TYPE="squashfs" /dev/loop2: TYPE="squashfs" ``` ### Наличие qemu-guest-agent Убедитесь, что установлен и запущен сервис `qemu-guest-agent` — он необходим для выполнения определенных операций из панели, например, для создания бэкапов. - Проверьте статус. Systemd: ```shell systemctl status qemu-guest-agent.service ``` OpenRC и init.d: ```shell /etc/init.d/qemu-guest-agent status ``` или: ```shell service qemu-guest-agent status ``` - Установите агент, если он отсутствует: Debian/Ubuntu: ```shell apt-get install qemu-guest-agent ``` CentOS / RHEL: ```shell yum install qemu-guest-agent ``` Alpine Linux: ```shell apk add qemu-guest-agent ``` - Добавьте в автозагрузку: Systemd: ```shell systemctl enable qemu-guest-agent.service ``` init.d: ```shell chkconfig --add qemu-guest-agent ``` OpenRC: ```shell rc-update add qemu-guest-agent ``` > [!NOTE] > Для Windows сервис можно установить с помощью специального ISO-образа, который можно [скачать здесь](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/?C=M;O=D). Также с его помощью можно установить virtio-драйверы, необходимые для поддержки виртуализированных устройств. Данных настроек достаточно для создания облачного сервера из образа. Остальные настройки рекомендуется выполнить для более удобной работы с сервером. ## Дополнительные настройки ### Установка Zabbix Для сбора статистики с серверов мы используем агент Zabbix. Чтобы отображать статистику в панели, рекомендуем установить Zabbix с помощью скрипта командой: ```shell wget -O - http://zabbix.repo.timeweb.ru/zabbix-install.sh | bash ``` ### Сетевые настройки После запуска сервера необходимо обеспечить его доступность по сети. Для этого потребуется настроить DHCP-клиент для автоматического получения IP- и IPv6-адресов. В большинстве систем клиент DHCP установлен по умолчанию, мы рекомендуем использовать утилиту dhclient с таким файлом конфигурации: ```shell option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; option dhcp6.next-hop code 242 = ip6-address; send host-name = gethostname(); request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers, dhcp6.next-hop; timeout 300; ``` ### Доступ по SSH Так как для доступа к серверу, как правило, используется протокол SSH, проверьте, что он установлен и запускается при загрузке сервера. - Проверьте статус: Systemd: ```shell systemctl status ssh.service ``` OpenRC и init.d: ```shell /etc/init.d/ssh status ``` или: ```shell service ssh status ``` - Установите SSH, если он отсутствует: Debian/Ubuntu: ```shell apt-get install openssh-server ``` CentOS / RHEL: ```shell yum -y install openssh-server openssh-clients ``` Alpine Linux: ```shell apk add openssh ``` - Добавьте в автозагрузку: Systemd: ```shell systemctl enable ssh.service ``` Init.d: ```shell chkconfig --add ssh ``` OpenRC: ```shell rc-update add sshd ``` - Также убедитесь, что в используемом файрволе открыт доступ к порту SSH (по умолчанию — 22). ### Отключение swap Рекомендуем отключить файл подкачки. - Проверьте информацию о включенном swap: ```shell swapon --show ``` Пример вывода: ```shell NAME TYPE SIZE USED PRIO /swap.img file 685M 0B -2 ``` - Отключите swap: ```shell swapoff -a ``` # Создание и развертывание образа диска с помощью утилиты dd Source: https://timeweb.cloud/docs/unix-guides/creating-images-with-dd В статье рассмотрим, как создать образ сервера Timeweb Cloud и развернуть его на другом сервере Timeweb Cloud с помощью утилиты `dd`. Инструкция будет полезна для серверов в локациях, которые в данный момент не поддерживают работу с [образами](https://timeweb.cloud/docs/cloud-servers/manage-servers/server-images). Вам понадобятся: - «Отдающий» сервер, с которого будем снимать образ. - Новый сервер — с таким же размером диска. ОС и ПО на сервере могут стоять любые. - Наличие SSH на каждом из серверов. Последовательность действий: 1. Загрузите новый сервер с диска восстановления (вкладка «Доступ» на странице сервера → изменить режим загрузки). 2. Выполните команды ниже, чтобы в дальнейшем можно было подключаться к серверу по SSH: ```shell systemctl stop iptables passwd root ``` 3. Зайдите в панель управления с отдающим сервером и создайте бэкап диска (вкладка «Бэкапы» на странице сервера). 4. Смонтируйте бэкап в панели управления. ![Image1](https://content.timeweb.com/assets/2159cdeb-22c0-4679-8051-4331b6481bf0?width=1110&height=285) 5. Подключитесь к отдающему серверу по SSH и выполните команду ниже, чтобы определить имя нового добавленного устройства: ```shell dmesg ``` Далее в инструкции мы будем использовать имя устройства `/dev/vdc`. 6. Убедитесь, что размеры дисков на серверах идентичны, выполнив на каждом сервере команду: ```shell fdisk -l ``` 7. Если размеры совпадают, выполните на отдающем сервере команду: ```shell ssh root@IP_нового_сервера "cat > /dev/vda" < /dev/vdc ``` Также можно использовать команду ниже, чтобы отобразить прогресс-бар, но это замедлит процесс копирования: ```shell dd if=/dev/vdc | pv -s [размер образа] | ssh root@IP_нового_сервера "cat > /dev/vda" ``` 8. После завершения процесса проверьте, что все скопировалось без повреждений. Для этого выполните команду ниже, указав корректное имя диска: - - В команде на отдающем сервере укажите диск, копию которого создавали: ```shell sha256sum /dev/vdc ``` - - На новом сервере — диск, на который копировали: ```shell sha256sum /dev/vda ``` 9. Сравните полученные хеши. Если они совпадают, копирование было выполнено успешно. Бэкап на отдающем сервере можно отмонтировать и удалить. Новый сервер — загрузить в обычном режиме. # Установка Minecraft на Ubuntu Source: https://timeweb.cloud/docs/unix-guides/ustanovka-minecraft-na-ubuntu В этой статье рассмотрим, как выполнить установку и запуск Minecraft на сервере с Ubuntu. > [!NOTE] > Вы также можете [установить Minecraft автоматически](https://timeweb.cloud/docs/unix-guides/zapusk-servera-minecraft), выбрав готовую сборку в панели управления. ## Создание сервера и выбор конфигурации 1. [Зарегистрируйте аккаунт](https://timeweb.cloud/docs?auth=registrationAccount) в Timeweb Cloud, если его еще нет. 2. В панели управления перейдите в раздел [«Облачные серверы»](https://timeweb.cloud/my/servers). 3. Кликните «Создать» или «Добавить». 4. Выберите операционную систему Ubuntu. 5. Выберите регион с минимальным пингом. 6. Выберите подходящую конфигурацию сервера. Учитывайте количество игроков в режиме онлайн: при одновременной игре от 15-25 пользователей свободной оперативной памяти у сервера должно быть не менее 1,5 ГБ, а места на жестком диске — не менее 15 ГБ. 7. Настройте остальные параметры в форме заказа сервера (их можно оставить без изменений). 8. Нажмите «Заказать». Мы рассмотрим установку Minecraft на облачный сервер с операционной системой Ubuntu, 2 процессорными ядрами и 4 ГБ оперативной памяти. ## Подготовка сервера В первую очередь мы установим утилиту `screen`, чтобы запускать процессы в фоновом режиме и иметь возможность дальше пользоваться терминалом. Мы также создадим пользователя без доступа к `root`, чтобы безопасно запускать сервер от его имени. ### Обновление и установка пакетов Обновите список пакетов: ```shell sudo apt update && sudo apt upgrade -y ``` Установите необходимые инструменты: ```shell sudo apt install net-tools screen -y ``` Для работы Minecraft необходима Java, поэтому установите Java Development Kit: ```shell sudo apt install openjdk-21-jdk ``` ### Создание пользователя Командой ниже мы создадим пользователя `minecraft` (вы можете задать любое имя по своему усмотрению). ```shell sudo useradd -r -U -d /usr/local/minecraft/server/ -s /sbin/nologin minecraft ``` Аргумент `-s` задает оболочку входа для нового пользователя. Указывая `/sbin/nologin`, мы запрещаем пользователю интерактивного входа на сервер. Это гарантирует, что пользователь сможет только запускать сервера Minecraft, и снизит риски атак. ### Создание директории Создайте директории для размещения файлов Minecraft: ```shell sudo mkdir -p /usr/local/minecraft/server/Java ``` Опция `-p` позволяет создать все недостающие каталоги. ### Настройка прав Сделайте владельцем директории пользователя и группу `minecraft`: ```shell sudo chown -R minecraft: /usr/local/minecraft/server/ ``` Опция `-R` назначает права рекурсивно ко всем файлам и поддиректориям. ### Скачивание сервера Minecraft Переключитесь на пользоватeля `minecraft`: ```shell sudo su - minecraft -s /bin/bash ``` Перейдите в директорию для файлов Minecraft: ```shell cd /usr/local/minecraft/server/Java ``` Скачайте файл `.jar` с официального сайта: ```shell wget https://piston-data.mojang.com/v1/objects/4707d00eb834b446575d89a61a11b5d548d8c001/server.jar ``` Найти ссылку на актуальную версию можно на сайте [minecraft.net](https://www.minecraft.net/ru-ru/download/server). ### Запуск сервера Запустите сервер командой: ```shell java -Xmx1024M -Xms1024M -jar server.jar nogui ``` Эта команда выделяет 1 ГБ памяти для сервера (`-Xmx` — максимальный объем, `-Xms` — начальное выделение). Опция `nogui` отключает графический интерфейс, чтобы использовать меньше ресурсов. При первом запуске вы можете столкнуться с ошибкой, связанной с лицензионным соглашением (EULA): ![72d800c8 93da 428e 88b6 5905884515ce.png](https://content.timeweb.com/assets/1f46d569-53c1-4b95-8be6-b57b843d2f02.png?width=1237&height=402) Чтобы принять лицензионное соглашение, откройте файл `eula.txt` в редакторе: ```shell nano eula.txt ``` Замените строку `eula=false` на `eula=true`, после чего сохраните изменения и закройте файл. Теперь можно снова запустить сервер. Используйте утилиту `screen`, чтобы выполнить запуск в фонов режиме: ```shell screen -S mc_Java_server -dm java -Xmx1024M -Xms1024M -jar server.jar nogui ``` Команда создаст сессию с именем `mc_Java_server`. Нажав **CTRL + a**, а затем **d**, вы сможете отключиться от текущего сеанса `screen`, при этом сервер Minecraft продолжить работать. Чтобы вернуться к запущенному процессу, выполните: ```shell screen -r ``` Готово! Ваш Minecraft-сервер запущен и доступен по IP-адресу сервера и порту 25565. ## Проверка сервера Чтобы подключиться к серверу, запустите клиент Minecraft и добавьте новый сервер и его адрес в формате: ```shell :25565 ``` Например: ```shell 94.228.123.76:25565 ``` ![52b298de 8165 47d8 Bd03 Ad52f3c79f13.png](https://content.timeweb.com/assets/d88df6c3-c79a-4b4d-b1fb-0291316614f1.png?width=1556&height=1172) _Добавление сервера в интерфейсе клиента [Minecraft](https://www.minecraft.net/)_ После установки соединения вы можете присоединиться к серверу. ![A01ad3af Bddb 4810 97cf 0540cd765ae0.png](https://content.timeweb.com/assets/b7413ea1-9eb8-4c1d-8ace-b3cd940ba940.png?width=1600&height=807) _Отображение сервера в интерфейсе клиента [Minecraft](https://www.minecraft.net/)_ Вы можете проверить статус своего Minecraft-сервера с помощью онлайн-инструментов, таких как [mcsrvstat.us](https://mcsrvstat.us). Так можно убедиться, что сервер активен, а также увидеть дополнительные детали, например, версию Minecraft или количество игроков. ![4c8ca854 67f5 45ba 841d 4a2170c6f9a8.png](https://content.timeweb.com/assets/76d07328-2b43-4d97-a7f4-dc5a08fcb090.png?width=1999&height=846) _Просмотр параметров сервера на сайте [mcsrvstat.us](https://mcsrvstat.us)_ # Установка Bareos Source: https://timeweb.cloud/docs/unix-guides/bareos-install Bareos — это система резервного копирования с открытым исходным кодом, позволяющая создавать, управлять и восстанавливать бэкапы для серверов. В этой статье рассмотрим процесс установки и настройки Bareos для автоматизированного резервного копирования данных как на выделенном, так и на облачном сервере, используя S3-хранилище для размещения бэкапов. Для начала работы [зарегистрируйте аккаунт](https://timeweb.cloud/docs?auth=registrationAccount) в Timeweb Cloud, если у вас его еще нет. Вы получите доступ [в панель управления](https://timeweb.cloud/my/), где сможете создать необходимые ресурсы: сервер и бакет S3. ## Создание ресурсов Для начала [создадим облачный сервер](https://timeweb.cloud/docs/cloud-servers/manage-servers/create-server), на котором будет работать Bareos. Так как на сервере будут работать несколько ресурсоемких служб, включая базу данных и Bareos Storage Director, оптимальная конфигурация будет следующей: - **vCPU**: 2 - **RAM**: 4 ГБ - **Диск**: 50 ГБ SSD - **ОС**: Ubuntu 22.04 Jammy Однако вы можете выбрать другую конфигурацию в зависимости от ваших потребностей, объема данных и частоты резервного копирования. Если вы настраиваете резервное копирование для выделенного сервера, ему потребуется внешний IP-адрес, так как передача данных будет выполняться через интернет. Если же Bareos будет использоваться для создания бэкапов облачных серверов, можно добавить сервер в существующую локальную сеть и во всей инструкции использовать его локальный IP-адрес. Далее [создадим S3-бакет](https://timeweb.cloud/docs/s3-storage/manage-storage/create-bucket). Для наших целей идеально подойдет холодный класс хранилища. Учтите, что даже если используется инкрементное резервное копирование, в хранилище должен помещаться как минимум один полный бэкап всего сервера, а также ежедневные изменения, умноженные на количество дней размещения данных. ## Настройка сервера Bareos использует PostgreSQL для размещения конфигурации и информации о бэкапах. Чтобы упростить установку, мы воспользуемся Docker Compose. В результате установим саму СУБД и Adminer — веб-интерфейс для работы с базой. ### Создание СУБД Сначала установим Docker и Docker Compose: ```shell apt install -y docker.io docker-compose ``` Создадим манифест `docker-compose.yml`: ```yml version: '3.8' networks: bareos_network: driver: bridge services: postgres: image: public.ecr.aws/docker/library/postgres:14-alpine container_name: postgres_db restart: unless-stopped environment: POSTGRES_USER: admin POSTGRES_PASSWORD: <ваш_пароль_администратора_бд> networks: - bareos_network ports: - "127.0.0.1:5432:5432" volumes: - ~/bareos_database:/var/lib/postgresql/data adminer: image: public.ecr.aws/docker/library/adminer:4 container_name: adminer_ui restart: unless-stopped environment: ADMINER_DEFAULT_SERVER: postgres_db ADMINER_DEFAULT_DB: bareos ADMINER_DEFAULT_USER: bareos ADMINER_DEFAULT_DBTYPE: postgres networks: - bareos_network ports: - "8080:8080" depends_on: - postgres volumes: postgres_data: driver: local ``` Укажите вместо `<ваш_пароль_администратора_бд>` пароль администратора базы данных. Выполните команду для запуска контейнеров: ```shell docker-compose up -d ``` После загрузки образов и запуска контейнеров убедитесь, что они работают: ```shell docker ps ``` Вы должны увидеть примерно такой вывод: ```shell CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a6fe992e70b4 public.ecr.aws/docker/library/adminer:4 "entrypoint.sh php -…" 1 minutes ago Up 1 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp adminer_ui fe683271e380 public.ecr.aws/docker/library/postgres:14-alpine "docker-entrypoint.s…" 1 minutes ago Up 1 minutes 127.0.0.1:5432->5432/tcp postgres_db ``` ### Установка Bareos Добавим репозитории Bareos с помощью официального скрипта: ```shell wget -qO- https://download.bareos.org/current/xUbuntu_22.04/add_bareos_repositories.sh | sh ``` Обновим список пакетов и установим необходимые компоненты: ```shell apt update && apt install -y bareos bareos-webui bareos-storage-droplet ``` Во время установки появится запрос на настройку Postfix. Выберите `No configuration`. ![Screenshot 02 24 25 16:06:24](https://content.timeweb.com/assets/a0cd5fb5-61f1-4530-8a65-297996fec65d.png?width=812&height=517) _Запрос на настройку Postfix в установщике [Bareos](https://www.bareos.com/)_ Затем будет предложено настроить подключение к базе данных. Выберите `No`. ![Screenshot 02 24 25 16:07:15](https://content.timeweb.com/assets/756af81d-e1cf-4e59-be20-72eff1060c15.png?width=1906&height=410) _Запрос на настройку базы данных в установщике [Bareos](https://www.bareos.com/)_ ### Настройка подключения к базе данных Запустим инструмент для настройки подключения к базе данных: ```shell dpkg-reconfigure bareos-database-common ``` В первом окне выберите `Yes`. ![Screenshot 02 24 25 16:07:53](https://content.timeweb.com/assets/ed2981c9-5c76-49d5-ad56-845cc90a1a5a.png?width=1904&height=428) _Настройка подключения к базе данных в установщике [Bareos](https://www.bareos.com/)_ В качестве типа подключения укажите `TCP/IP`. ![Screenshot 02 24 25 16:08:10](https://content.timeweb.com/assets/51d177b5-fe42-4c57-8a38-820d14869161.png?width=1899&height=381) _Настройка подключения к базе данных в установщике [Bareos](https://www.bareos.com/)_ Так как база данных запущена на `localhost`, выберите его. ![Screenshot 02 24 25 16:08:26](https://content.timeweb.com/assets/7ea4ae1f-0eb9-42be-bfb3-34dd7449b4a6.png?width=971&height=346) _Настройка подключения к базе данных в установщике [Bareos](https://www.bareos.com/)_ Если вы не меняли порт в `docker-compose.yml`, укажите `5432`. ![Screenshot 02 24 25 16:08:49](https://content.timeweb.com/assets/1a36eca5-f274-4cc0-afba-5afdc59d0163.png?width=1425&height=294) _Настройка подключения к базе данных в установщике [Bareos](https://www.bareos.com/)_ В качестве метода аутентификации администратора выберите `password`. ![Screenshot 02 24 25 16:09:04](https://content.timeweb.com/assets/d03b7f94-2ab0-411e-baf5-41add2eb3a9a.png?width=1896&height=483) _Настройка подключения к базе данных в установщике [Bareos](https://www.bareos.com/)_ Для пользователя базы данных также выберите `password`. ![Screenshot 02 24 25 16:09:20](https://content.timeweb.com/assets/e62c979f-701e-437d-9a99-34106118f9cd.png?width=1900&height=460) _Настройка подключения к базе данных в установщике [Bareos](https://www.bareos.com/)_ Bareos использует базу данных с именем `bareos` и пользователя `bareos`. Создадим базу данных. ![Screenshot 02 24 25 16:09:44](https://content.timeweb.com/assets/3526dd6a-31f5-4fc3-9555-efcb50eabb23.png?width=994&height=295) _Создание базы данных в установщике [Bareos](https://www.bareos.com/)_ Затем создадим пользователя. ![Screenshot 02 24 25 16:10:02](https://content.timeweb.com/assets/63ca5c03-5322-4441-b2cd-0b79ca937e85.png?width=1895&height=399) _Создание пользователя базы данных в установщике [Bareos](https://www.bareos.com/)_ Установим пароль пользователя. ![Screenshot 02 24 25 16:10:24](https://content.timeweb.com/assets/2a05508f-5379-4025-9eea-c3081d9a7976.png?width=1808&height=343) _Создание пользователя базы данных в установщике [Bareos](https://www.bareos.com/)_ Подтвердим пароль. ![Screenshot 02 24 25 16:10:40](https://content.timeweb.com/assets/76918c12-99b8-4276-8521-c27346ce1ea7.png?width=572&height=271) _Создание пользователя базы данных в установщике [Bareos](https://www.bareos.com/)_ Теперь необходимо ввести данные администратора PostgreSQL, которые мы задавали в `docker-compose.yml`. Имя пользователя: `admin`. ![Screenshot 02 24 25 16:11:10](https://content.timeweb.com/assets/ad48a56d-93de-40b1-828a-260217caccc4.png?width=1783&height=282) _Настройка базы данных в установщике [Bareos](https://www.bareos.com/)_ Введите пароль администратора PostgreSQL. ![Screenshot 02 24 25 16:11:29](https://content.timeweb.com/assets/37bc9e17-5028-476e-8d1a-ddca49a68c59.png?width=1425&height=381) _Настройка базы данных в установщике [Bareos](https://www.bareos.com/)_ > [!NOTE] > Пароль администратора потребуется ввести несколько раз в процессе настройки. Чтобы убедиться, что база создана и работает, откройте браузер и перейдите по адресу `http://:8080`. Залогиньтесь, используя имя пользователя `bareos` и ранее заданный пароль. ![Screenshot 02 24 25 16:12:28](https://content.timeweb.com/assets/7b3765e1-f27c-4b30-bf79-f4fec33db758.png?width=602&height=333) _Подключение к базе данных в интерфейсе [Adminer](https://www.adminer.org/)_ После авторизации должны отобразиться таблицы базы данных Bareos. ![Screenshot 02 24 25 16:12:46](https://content.timeweb.com/assets/0118813d-0a03-46d7-839e-948119463933.png?width=1133&height=956) _Просмотр базы данных в интерфейсе [Adminer](https://www.adminer.org/)_ Теперь запустим службы: ```shell systemctl enable --now bareos-director.service bareos-storage.service ``` Проверим, что службы работают, подключены к базе данных и не содержат ошибок: ```shell bareos-dir -t -d100 ``` ### Настройка веб-интерфейса Bareos WebUI Для работы веб-интерфейса Bareos необходимо включить `php8-fpm` в Apache2. Включите модули Apache для работы с PHP-FPM: ```shell a2enmod proxy_fcgi setenvif ``` Активируйте конфигурацию PHP 8.1 FPM: ```shell a2enconf php8.1-fpm ``` Перезагрузите Apache, чтобы изменения вступили в силу: ```shell systemctl reload apache2 ``` В Ubuntu AppArmor может блокировать доступ `php-fpm` к файлам веб-интерфейса. Разрешим необходимые пути: ```shell cat > /etc/apparmor.d/local/php-fpm <<<"# Site-specific additions and overrides for 'php-fpm' # bareos-webui /usr/share/bareos-webui/** r, /etc/bareos-webui/directors.ini r, /etc/bareos-webui/configuration.ini r, /var/lib/php8/sessions/** w, " ``` Применим новые политики безопасности: ```shell systemctl reload apparmor.service ``` Теперь необходимо создать пользователя `bareos`. Для его создания, воспользуемся утилитой `bconsole`: ```shell bconsole ``` Создадим учетную запись `admin` для веб-интерфейса: ```shell configure add console name=admin password=<пароль_пользователя> profile=webui-admin tlsenable=false ``` Вместо `<пароль_пользователя>` укажите желаемый пароль. Применим изменения: ```shell reload ``` Выйти из `bconsole` можно сочетанием клавиш `Ctrl + D`. Теперь можно открыть браузер и перейти по адресу `http:///bareos-webui`. Войти в систему можно, используя ранее созданные учетные данные. ![Screenshot 02 24 25 16:14:50](https://content.timeweb.com/assets/01ffd4c5-b2b8-4f1b-bb1b-81aafab9d72b.png?width=600&height=688) _Окно логина в веб-интерфейс [Bareos](https://www.bareos.com/)_ ### Подключение S3-хранилища к Bareos Storage Director Создадим файл с параметрами подключения: ```shell nano /etc/bareos/bareos-sd.d/device/droplet/timeweb-ru-1.profile ``` Добавим в него следующую конфигурацию: ```shell host = s3.twcstorage.ru use_https = false access_key = secret_key = pricing_dir = "" backend = s3 aws_auth_sign_version = 2 aws_region = ru-1 ``` Данные для заполнения (`` и ``) можно найти в информации о бакете в панели управления. ![Selection 184](https://content.timeweb.com/assets/1264c5c0-0953-49dd-a2b1-3fc3f0afacd5.png?width=1041&height=943) ### Конфигурация бэкапного устройства Создадим файл: ```shell nano /etc/bareos/bareos-sd.d/device/S3_ObjectStorage.conf ``` Запишем в него информацию об устройстве. Укажите имя своего бакета в Device Options: ```shell Device { Name = S3_ObjectStorage Media Type = S3_Object1 Archive Device = S3 Object Storage Device Type = droplet Device Options = "profile=/etc/bareos/bareos-sd.d/device/droplet/timeweb-ru-1.profile,bucket=<имя_бакета>,chunksize=100M" Label Media = yes Random Access = yes Automatic Mount = yes Removable Media = no Always Open = no Maximum Concurrent Jobs = 1 } ``` Дадим пользователю Bareos доступ к этим файлам: ```shell chown -R bareos:bareos /etc/bareos/bareos-sd.d/device ``` Bareos может не подключаться к хранилищу, если включен TLS. Отключим его, добавив `TlsEnable=no` и `TlsRequire=no` в следующие файлы. Откроем файл `bareos-sd.conf`: ```shell nano /etc/bareos/bareos-sd.d/storage/bareos-sd.conf ``` Изменим содержимое: ```shell Storage { Name = bareos-sd Maximum Concurrent Jobs = 20 TlsEnable = no TlsRequire = no } ``` Откроем файл `bareos-dir.conf`: ```shell nano /etc/bareos/bareos-sd.d/director/bareos-dir.conf ``` Изменим содержимое: ```shell Director { Name = bareos-dir TlsEnable = no TlsRequire = no Password = "" # Этот пароль генерируется при установке и не требует изменений Description = "Director, who is permitted to contact this storage daemon." } ``` Запомните или сохраните пароль, указанный в `Password` из `bareos-dir.conf`, он понадобится на следующем шаге. ### Подключение Bareos Storage Daemon к Bareos Director В `bconsole` подключим `bareos-storage-daemon` к `bareos-director`, используя ранее сохраненный пароль: ```shell bconsole ``` Выполним команду: ```shell configure add storage name=S3_Object Address= Password= Device=S3_ObjectStorage MediaType=S3_Object1 ``` В команде укажите `` и ``. Примените конфигурацию: ```shell reload ``` Для применения изменений перезапустим службы: ``` systemctl restart bareos-storage.service && systemctl reload bareos-director.service ``` Обратите внимание, что Bareos читает файлы конфигурации только в ASCII-кодировке. Если вы редактировали файлы способом, отличным от указанного в инструкции, может возникнуть ошибка. Чтобы это исправить, необходимо изменить кодировку файлов. Сделать это можно при помощи команды: ```shell iconv -f utf-8 -t ascii//TRANSLIT /path/to/my/file.conf -o /path/to/my/file.conf ``` ## Настройка бэкапов ### Создание пользователя для соединения Сначала необходимо создать пользователя, через которого основной сервер будет соединяться с сервером бэкапов. Войдем в bconsole: ```shell bconsole ``` Выполним команду: ```shell configure add client name=BackupUser address= password= TlsEnable=no TlsRequire=no ``` В команде укажите два параметра: - `` — внешний IP-адрес сервера, для которого будут создаваться бэкапы. - `` — пароль для подключения. Его нужно придумать. Примените изменения: ```shell reload ``` После выполнения команды в консоли появится подобный вывод: ![Selection 185](https://content.timeweb.com/assets/70af68cb-2f44-4852-8b63-c4b5bf455d5f.png?width=1118&height=354) Это сформированный конфигурационный файл с паролем пользователя. Сохраните значение из поля `Password`, оно понадобится для подключения сервера. Если пароль будет утерян, его можно найти с помощью команды: ```shell grep -r Password /etc/bareos/bareos-dir-export/client/ ``` ### Настройка пулов и вольюмов Для размещения данных Bareos использует `pool` и `volume`: - **Pool** — хранилище резервных копий, ограниченное размером S3-бакета. - **Volume** — единица хранения данных, изначально предназначенная для сменных носителей, таких как ленты. В нашем случае: - **Размер volume (``)** — должен быть равен полному объему информации сервера, который мы собираемся бэкапить. - **Количество volumes (``)** — определяет, сколько копий данных должно быть доступно. - **VolumeRetention (``)** — время размещения резервной копии в днях, после которого она будет помечена для перезаписи. Данные из `volume` не удаляются, а только помечаются как стертые и подготовленные к перезаписи. ### Настройка пула для полных бэкапов Откроем файл конфигурации: ```shell nano /etc/bareos/bareos-dir.d/pool/Full.conf ``` Отредактируйте, приведя к виду: ```shell Pool { Name = Full Pool Type = Backup Recycle = yes # Bareos может автоматически перераспределять объемы AutoPrune = yes # Удалять устаревшие объемы Volume Retention = days # Срок размещения полных бэкапов Maximum Volume Bytes = G # Максимальный размер volume Maximum Volumes = # Максимальное количество volume в пуле Label Format = "Full-" # Метка volume, например "Full-001" } ``` ### Настройка пула для инкрементальных бэкапов Откроем файл: ```shell nano /etc/bareos/bareos-dir.d/pool/Incremental.conf ``` Приведем к виду: ```shell Pool { Name = Incremental Pool Type = Backup Recycle = yes AutoPrune = yes Volume Retention = days Maximum Volume Bytes = G Maximum Volumes = Label Format = "Incremental-" } ``` ### Создание FileSet FileSet — это конфигурационный файл, в котором указывается, какие именно файлы или базы данных необходимо включить в бэкап, а также какие параметры будут использоваться при их копировании (например, уровень сжатия или метод проверки целостности данных). #### FileSet для резервного копирования файлов в /home Этот файлсет используется для бэкапа пользовательских данных, размещенных в `/home`. Создадим файл: ```shell nano /etc/bareos/bareos-dir.d/fileset/HomeFileset.conf ``` Добавим следующий конфиг: ```shell FileSet { Name = "HomeFileset" Include { Options { Signature = MD5 Compression = LZ4 } File = "/home" } } ``` Здесь: - `Signature = MD5` — включает проверку целостности данных. - `Compression = LZ4` — используется быстрый алгоритм сжатия, который снижает нагрузку на CPU. - `File = "/home"` — указывает, что резервное копирование будет выполняться для `/home`. #### FileSet для резервного копирования баз данных MySQL Для бэкапа MySQL необходимо использовать специальный плагин, позволяющий корректно копировать базы без прерывания работы сервера. Создадим файл: ```shell nano /etc/bareos/bareos-dir.d/fileset/MysqlFileset.conf ``` Добавим конфигурацию: ```shell FileSet { Name = "MysqlFileset" Include { Options { Signature = MD5 Compression = LZ4 } Plugin = "python3" ":module_name=bareos-fd-percona-xtrabackup" ":mycnf=/root/.my.cnf" } } ``` Здесь: - `Plugin = "python3"` — указывает, что для создания бэкапа будет использоваться плагин на Python. - `":module_name=bareos-fd-percona-xtrabackup"` — использует Percona XtraBackup для создания бэкапа без остановки MySQL. - `":mycnf=/root/.my.cnf"` — указывает путь к файлу конфигурации MySQL, содержащему учетные данные. #### FileSet для резервного копирования баз данных PostgreSQL Для PostgreSQL также используется специальный плагин, позволяющий создавать бэкапы без прерывания работы сервера. Создадим файл: ```shell nano /etc/bareos/bareos-dir.d/fileset/PsqlFileset.conf ``` Добавим: ```shell FileSet { Name = "PostgresUserDBSet" Include { Options { Signature = MD5 Compression = LZ4 } Plugin = "python3" ":module_name=bareos-fd-postgresql" ":db_host=/run/postgresql/" ":wal_archive_dir=/var/lib/pgsql/wal_archive/" ":db_user=" ":db_password=" } } ``` Замените: - `` — на имя пользователя PostgreSQL. - `` — на пароль от базы данных. Параметры: - `":db_host=/run/postgresql/"` — указывает, что PostgreSQL работает через Unix-сокеты. - `":wal_archive_dir=/var/lib/pgsql/wal_archive/"` — включает копирование WAL-журналов. ### Установка прав для пользователя Чтобы Bareos мог прочитать созданные файлы, дадим пользователю `bareos` необходимые права: ```shell chown -R bareos:bareos /etc/bareos/bareos-dir.d/fileset ``` И обновить конфигурацию сервера `bareos` чтобы прочитать новые файлсеты: ```shell systemctl reload bareos-director.service ``` ### Создание расписания бэкапов Bareos позволяет задать расписание резервного копирования через параметр `Schedule`. Запустим `bconsole`: ```shell bconsole ``` Создадим правило: ```shell configure add schedule name=BackupSchedule Run="Level=Full 3/3 at 00:00" Run="Level=Incremental daily at 01:00" ``` Применим изменение: ```shell reload ``` Мы задали расписание: - Полный бэкап (`Level=Full`) выполняется раз в 3 дня в 00:00. - Инкрементальный бэкап (`Level=Incremental`) выполняется ежедневно в 01:00. ### Настройка заданий резервного копирования Bareos использует два типа конфигурационных файлов для бэкапов: - **JobDefs** — содержит общие настройки, которые могут использоваться в нескольких заданиях. - **Job** — конкретное задание резервного копирования с указанием клиентских данных. #### Создание общих правил для заданий (JobDefs) Открываем `bconsole`: ```shell bconsole ``` Добавляем правило: ```shell configure add jobdefs name=DefaultBackupJob Storage=S3_Object Type=Backup Level=Incremental Pool=Incremental FullBackupPool=Full IncrementalBackupPool=Incremental Schedule=BackupSchedule Messages=Standard Priority=10 ``` Применим изменение: ```shell reload ``` Описание параметров: - `Storage=S3_Object` — указывает, что бэкапы будут размещаться в S3. - `Level=Incremental` — по умолчанию бэкап выполняется как инкрементальный. - `Pool=Incremental` — используется пул для инкрементальных копий. - `FullBackupPool=Full` — полные копии отправляются в пул Full. - `Schedule=BackupSchedule` — задает расписание. - `Messages=Standard` — формат логирования. #### Создание задания для резервного копирования /home Добавляем задачу: ```shell configure add job name=BackupJob Client=BackupUser JobDefs=DefaultBackupJob FileSet=HomeFileset ``` Применим изменение: ```shell reload ``` Здесь: - `Client=BackupUser` — указывает, что бэкап выполняется для клиента `BackupUser`. - `FileSet=HomeFileset` — задает файловый набор с путями к данным. #### Создание задания для восстановления данных Чтобы можно было восстановить файлы, создадим задание RestoreJob: ```shell configure add job name=RestoreJob Type=Restore Client=BackupUser FileSet=HomeFileset Storage=S3_Object Pool=Incremental Messages=Standard Where="/" MaximumConcurrentJobs=10 ``` Применим изменение: ```shell reload ``` Параметры: - `Type=Restore` — задает, что это задание восстановления. - `Storage=S3_Object` — указывает хранилище. - `Pool=Incremental` — используется пул инкрементальных бэкапов. - `Where="/"` — файлы восстанавливаются в корневую директорию. ### Очистка ненужных конфигурационных файлов Bareos по умолчанию создает демонстрационные конфигурации, которые не используются в продакшен-среде. Их необходимо удалить: ```shell rm -f /etc/bareos/bareos-dir.d/jobdefs/DefaultJob.conf \ /etc/bareos/bareos-dir.d/job/BackupCatalog.conf \ /etc/bareos/bareos-dir.d/job/backup-bareos-fd.conf \ /etc/bareos/bareos-dir.d/job/RestoreFiles.conf ``` Очистим базу данных от неиспользуемых записей: ```shell bareos-dbcheck -b -f ``` ## Настройка сервера, который будем бэкапить ### Установка Bareos File Daemon Bareos использует службу `bareos-filedaemon`, которая должна быть установлена на сервере, с которого будут создаваться резервные копии. **Установка в Ubuntu** Добавим репозиторий Bareos: ```shell wget -qO- https://download.bareos.org/current/xUbuntu_22.04/add_bareos_repositories.sh | sh ``` Обновим список пакетов и установим Bareos File Daemon: ```shell apt update && apt install bareos-filedaemon -y ``` Включим и запустим Bareos File Daemon: ```shell systemctl enable --now bareos-filedaemon.service ``` **Установка в RHEL** Добавим правила для файрвола, открыв необходимые порты: ```shell firewall-cmd --permanent --add-port={80,443,9101,9102,9103}/tcp && firewall-cmd --reload ``` Добавим репозиторий Bareos: ```shell wget https://download.bareos.org/current/EL_9/bareos.repo -O /etc/yum.repos.d/bareos_EL_9.repo ``` Обновим кеш пакетов и установим Bareos File Daemon: ```shell yum makecache && yum install bareos-filedaemon -y ``` Включим и запустим Bareos File Daemon: ```shell systemctl enable --now bareos-filedaemon.service ``` ### Подключение к серверу бэкапов Теперь необходимо настроить подключение к Bareos Director, используя пароль, который был получен на этапе [создания пользователя](https://timeweb.cloud/docs/unix-guides/bareos-install#sozdanie-polzovatelya-dlya-soedineniya). Открываем конфигурационный файл: ```shell nano /etc/bareos/bareos-fd.d/director/bareos-dir.conf ``` Указываем следующие параметры: ```shell Director { Name = "bareos-dir" Password = "[md5]fcbb587d250fc823c9b6445891a2acd8" TlsEnable = no TlsRequire = no } ``` > [!NOTE] > Обязательно добавьте параметры `TlsEnable=no` и `TlsRequire=no`, иначе сервер бэкапов не сможет подключиться. Перезапускаем службу, чтобы применить изменения: ```shell systemctl restart bareos-filedaemon.service ``` ### Включение поддержки плагинов на клиенте Для резервного копирования баз данных необходимо включить поддержку плагинов в конфигурации клиента. Открываем файл: ```shell nano /etc/bareos/bareos-fd.d/client/myself.conf ``` Приводим его к следующему виду: ```shell Client { Name = name TLS Enable = no TLS Require = no Plugin Directory = "/usr/lib64/bareos/plugins" Plugin Names = "python3" } ``` Применяем изменения: ```shell systemctl restart bareos-filedaemon.service ``` ### Установка пакетов для резервного копирования баз данных #### MySQL Для создания резервных копий MySQL потребуется `Percona XtraBackup`, а также два плагина: `bareos-filedaemon-python3-plugin` и `bareos-filedaemon-percona-xtrabackup-python-plugin`. **Установка в Ubuntu** Скачаем пакет Percona XtraBackup: ```shell wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.32-26/binary/debian/jammy/x86_64/percona-xtrabackup-80_8.0.32-26-1.jammy_amd64.deb ``` Установим пакет: ```shell dpkg -i percona-xtrabackup-80_8.0.32-26-1.jammy_amd64.deb ``` Установим плагины Bareos для работы с Percona XtraBackup: ```shell apt install bareos-filedaemon-python3-plugin bareos-filedaemon-percona-xtrabackup-python-plugin -y ``` **Установка в RHEL** Скачаем пакет Percona XtraBackup: ```shell wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.32-26/binary/redhat/9/x86_64/percona-xtrabackup-80-8.0.32-26.1.el9.x86_64.rpm ``` Установим пакет: ```shell yum localinstall percona-xtrabackup-80-8.0.32-26.1.el9.x86_64.rpm ``` Установим плагины Bareos для работы с Percona XtraBackup: ```shell yum install bareos-filedaemon-python3-plugin bareos-filedaemon-percona-xtrabackup-python-plugin -y ``` #### PostgreSQL Для резервного копирования PostgreSQL необходимо установить пакеты `bareos-filedaemon-python3-plugin`, `bareos-filedaemon-postgresql-python-plugin` и `pg8000` — драйвер Python для подключения к PostgreSQL. **Установка в Ubuntu** Установим плагины Bareos для PostgreSQL: ```shell apt install bareos-filedaemon-python3-plugin bareos-filedaemon-postgresql-python-plugin -y ``` Установим `pip` для управления пакетами Python: ```shell apt install python3-pip -y ``` Установим библиотеку `pg8000` для работы с PostgreSQL: ```shell pip3 install pg8000 ``` **Установка в RHEL** Установим плагины Bareos для PostgreSQL: ```shell yum install bareos-filedaemon-python3-plugin bareos-filedaemon-postgresql-python-plugin -y ``` Установим `pip` для управления пакетами Python: ```shell yum install python3-pip -y ``` Установим библиотеку `pg8000` для работы с PostgreSQL: ```shell pip3 install pg8000 ``` ### Настройка WAL-архивации в PostgreSQL Для корректного резервного копирования PostgreSQL необходимо включить WAL-архивацию. Открываем конфигурацию PostgreSQL: ```shell nano /etc/postgresql/14/main/postgresql.conf ``` Приводим параметры к виду: ```shell ... max_wal_size = 10GB min_wal_size = 100MB archive_mode = on archive_command = 'cp %p /var/lib/pgsql/wal_archive/%f' archive_timeout = 60 ... ``` Здесь: - `archive_mode = on` — включает архивирование WAL. - `archive_command = 'cp %p /var/lib/pgsql/wal_archive/%f'` — копирует WAL-журналы в /var/lib/pgsql/wal_archive/. - `archive_timeout = 60` — задаёт интервал в 60 секунд для принудительного сохранения WAL. Создадим директорию для размещения архивных WAL-файлов: ```shell mkdir -p /var/lib/pgsql/wal_archive ``` Настроим права доступа: ```shell chown postgres:postgres /var/lib/pgsql/wal_archive && chmod 700 /var/lib/pgsql/wal_archive ``` Применим изменения: ```shell systemctl reload postgresql ``` Если к базе данных ограничен внешний доступ, необходимо настроить доступ к базе с сервера бэкапов. Для этого отредактируйте файл: ```shell nano /etc/postgresql/14/main/pg_hba.conf ``` Добавляем строку с IP-адресом сервера бэкапов: ```shell # IPv4 local connections: host all all 127.0.0.1/32 md5 host all all /32 md5 ``` Где `` — IP-адрес сервера бэкапов. Перезапускаем PostgreSQL: ```shell systemctl restart postgresql ``` На этом настройка Bareos завершена. Мы установили и настроили сервер бэкапов, подключили клиентский сервер, настроили файловые наборы, расписание и S3-хранилище. Теперь система автоматически создает резервные копии и позволяет восстанавливать данные в случае необходимости. ## Ручное создание резервной копии Для проверки можно запустить тестовый бэкап вручную из консоли bconsole или через веб-интерфейс. ### Создание бэкапа из консоли 1. Открываем консоль управления Bareos: ```shell bconsole ``` 2. Запускаем задание: ```shell run ``` 3. Выбираем нужное задание (например, `BackupJob`) и подтверждаем запуск, введя `yes`. 4. Дожидаемся завершения бэкапа и проверяем его статус: ```shell status job ``` 5. Чтобы посмотреть логи последнего задания, используем: ```shell messages ``` ### **Создание бэкапа через веб-интерфейс** 1. Открываем Bareos WebUI — `http:///bareos-webui`. 2. В меню переходим в «Jobs» → «Run». 3. Выбираем нужное задание, клиент и подтверждаем запуск. ![Screenshot 02 25 25 13:17:04](https://content.timeweb.com/assets/aa52359c-8650-48b3-8969-7e5df54b0005.png?width=1062&height=763) _Раздел «Jobs» → «Run» в веб-интерфейсе [Bareos](https://www.bareos.com/)_ 4. Ожидаем завершения выполнения задания и проверяем его статус во вкладке «Jobs» → «Show». # Настройка bastion-хоста Source: https://timeweb.cloud/docs/unix-guides/configuring-bastion-host Bastion-хост — это облачный сервер, через который можно подключаться по SSH к серверам без публичных IP-адресов. Bastion имеет публичный и приватный IP, а внутренние серверы подключены только к приватной сети. В результате внешний SSH-доступ будет открыт только к одному серверу. Подключение к остальным серверам будет выполняться через bastion по их приватным IP-адресам. В примере используются: - приватная сеть `192.168.0.0/24`; - bastion-хост с приватным IP `192.168.0.10` и публичным IP; - внутренний сервер с приватным IP `192.168.0.20` без публичного IP; - отдельные файрволы для bastion-хоста и внутреннего сервера. ## Создание SSH-ключа Если у вас уже есть подходящая пара SSH-ключей, используйте ее и перейдите к созданию приватной сети. Чтобы создать новый ключ, выполните на локальном компьютере: ```bash ssh-keygen -t ed25519 -f ~/.ssh/timeweb-bastion -C "bastion" ``` Будут созданы два файла: - `~/.ssh/timeweb-bastion` — приватный ключ; - `~/.ssh/timeweb-bastion.pub` — публичный ключ. Приватный ключ должен храниться только на локальном компьютере. Не загружайте его на bastion-хост или внутренний сервер. Добавьте публичный ключ в панель управления: 1. Перейдите в раздел «Облачные серверы» → «[SSH-ключи](https://timeweb.cloud/my/sshkeys)». 2. Нажмите «Добавить». 3. Укажите имя, например bastion-key. 4. Вставьте содержимое файла `~/.ssh/timeweb-bastion.pub`. 5. Сохраните ключ. ## Создание приватной сети Приватная сеть объединяет bastion-хост и внутренние серверы в изолированный сетевой сегмент. Чтобы создать сеть: 1. Перейдите в раздел «Сети» → «[Приватные сети](https://timeweb.cloud/my/vpc)». 2. Нажмите «Создать» или «Добавить». 3. Укажите имя сети, например `Bastion`. 4. Выберите локацию, в которой будут созданы серверы. 5. Укажите диапазон адресов, например `192.168.0.0/24`. 6. Завершите создание сети. > [!NOTE] > Серверы и приватная сеть должны находиться в одной локации. Перед выбором диапазона убедитесь, что он не пересекается с другими сетями, которые планируется объединить с этой сетью. ## Создание bastion-хоста Bastion-хост должен быть доступен из интернета по публичному IP и подключен к приватной сети внутренних серверов. 1. Перейдите в раздел «[Облачные серверы](https://timeweb.cloud/my/servers)» и нажмите «Создать». 2. Выберите образ и подходящую конфигурацию сервера. Для небольшого количества SSH-соединений достаточно минимальной конфигурации. 3. Выберите ту же локацию, в которой создана приватная сеть. 4. Подключите публичный IP. 5. Подключите сервер к сети Bastion. 6. Выберите SSH-ключ bastion-key. 7. Укажите имя bastion-host и создайте сервер. После создания обратите внимание на: - публичный IP bastion-хоста; - приватный IP bastion-хоста, например `192.168.0.10`. Эти адреса будут использоваться дальше для настройки подключения. ## Создание внутреннего сервера Внутреннему серверу не требуется публичный IP. Он будет доступен только из приватной сети. 1. Перейдите в раздел «[Облачные серверы](https://timeweb.cloud/my/servers)» и нажмите «Создать». 2. Выберите образ и конфигурацию сервера. 3. Выберите ту же локацию, что у bastion-хоста. 4. Отключите публичный IP. 5. Подключите сервер к сети `Bastion`. 6. Выберите SSH-ключ `bastion-key`. 7. Укажите имя `internal-server` и создайте сервер. После создания запишите приватный IP сервера, например `192.168.0.20`. > [!NOTE] > Один публичный ключ используется в примере для упрощения настройки. Для production-окружения можно использовать разные ключи для bastion-хоста и внутренних серверов. ## Настройка файрвола Для bastion-хоста и внутренних серверов рекомендуется использовать отдельные файрволы. Это позволяет независимо управлять правилами внешнего и внутреннего доступа. ### Файрвол bastion-хоста Разрешите подключение к порту SSH только с доверенного публичного IP: 1. Перейдите в раздел «Сети» → «[Firewall](https://timeweb.cloud/my/firewalls)» и нажмите «Добавить». 2. Выберите разрешающий тип правил. 3. Укажите имя `bastion-fw`. 4. Добавьте входящее правило: - протокол — `TCP`; - порт — `22`; - источник — публичный IP администратора с маской `/32`, например `203.0.113.10/32`. 6. Привяжите файрвол к серверу `bastion-host`. Узнать текущий публичный IP можно с помощью любого сервиса проверки IP-адреса. Если адрес изменится, обновите правило файрвола. > [!NOTE] > Не используйте источник `0.0.0.0/0`, если в этом нет необходимости. Такое правило разрешит попытки подключения к SSH со всего интернета. ### Файрвол внутреннего сервера Разрешите SSH-подключения только с приватного IP bastion-хоста: 1. Создайте разрешающий файрвол с именем `internal-fw`. 2. Добавьте входящее правило: - протокол — `TCP`; - порт — `22`; - источник — приватный IP bastion-хоста с маской `/32`, например `192.168.0.10/32`. 4. Привяжите файрвол к серверу `internal-server`. Если исходящий трафик также ограничен, разрешите на bastion-хосте исходящее TCP-соединение к приватному IP внутреннего сервера на порт `22`. При использовании разрешающих правил файрвола настройте правила DHCP на сервере. Без них сервер может потерять приватный IP после окончания срока аренды. ## Проверка подключения к bastion-хосту Подключитесь к bastion-хосту по публичному IP: ```bash ssh -i ~/.ssh/timeweb-bastion root@ ``` При первом подключении SSH предложит сохранить ключ хоста. После успешного входа завершите сеанс командой: ```bash exit ``` Если подключение завершается по тайм-ауту, проверьте публичный IP сервера и правила файрвола. Если появляется ошибка `Permission denied`, проверьте имя пользователя и SSH-ключ. ## Подключение к внутреннему серверу Для подключения через bastion используйте механизм `ProxyJump`: ```bash ssh -i ~/.ssh/timeweb-bastion -J root@ root@192.168.0.20 ``` SSH-клиент установит соединение с bastion-хостом, а затем подключится к приватному IP внутреннего сервера. Приватный ключ при этом остается на локальном компьютере. Для старых версий OpenSSH без поддержки `ProxyJump` используйте `ProxyCommand`: ```bash ssh -i ~/.ssh/timeweb-bastion -o ProxyCommand="ssh -i ~/.ssh/timeweb-bastion -W %h:%p root@" root@192.168.0.20 ``` ## Настройка SSH-конфигурации Чтобы не указывать параметры подключения вручную, добавьте хосты в файл `~/.ssh/config` на локальном компьютере: ```bash Host twc-bastion HostName User root IdentityFile ~/.ssh/timeweb-bastion IdentitiesOnly yes Host twc-internal HostName 192.168.0.20 User root IdentityFile ~/.ssh/timeweb-bastion IdentitiesOnly yes ProxyJump twc-bastion ``` Ограничьте доступ к файлу конфигурации: ```bash chmod 600 ~/.ssh/config ``` Теперь для подключения к внутреннему серверу достаточно выполнить: ```bash ssh twc-internal ``` ## Доступ к сервисам во внутренней сети Через bastion можно открыть локальный SSH-туннель к сервису на внутреннем сервере. Например, следующая команда перенаправит локальный порт `8080` на порт `80` сервера `192.168.0.20`: ```bash ssh -N -L 8080:192.168.0.20:80 twc-bastion ``` Пока соединение активно, сервис будет доступен на локальном компьютере по адресу: ```bash http://127.0.0.1:8080 ``` Порт сервиса не требуется открывать в интернет. Он должен быть доступен с приватного IP bastion-хоста. ## Передача файлов Для передачи файлов через bastion используйте scp с настроенной SSH-конфигурацией: ```bash scp ./localfile.txt twc-internal:/root/ ``` Для копирования файла с внутреннего сервера: ```bash scp twc-internal:/root/remotefile.txt ./ ``` ## Удаление ресурсов Если bastion-хост и внутренний сервер больше не нужны: 1. Удалите облачные серверы bastion-host и internal-server. 2. Удалите файрволы bastion-fw и internal-fw. 3. Удалите приватную сеть Bastion. Перед удалением приватной сети убедитесь, что к ней не подключены другие серверы или сервисы. # Запуск сервера Minecraft Source: https://timeweb.cloud/docs/unix-guides/zapusk-servera-minecraft В Timeweb Cloud вы можете запустить сервер Minecraft за пару кликов. Мы предлагаем готовые сборки с разными версиями Minecraft: - Minecraft JE (Java Edition) — классическая версия Minecraft со множеством бесплатных модов и сборок и возможностью гибкой настройки. - Minecraft BE (Bedrock Edition) — оптимизированная версия Minecraft с поддержкой кроссплатформенности, простым и удобным подключением к друзьям и большим выбором карт, текстур и скинов для покупки. В отличие от JE, не имеет хардкорного режима и режима наблюдения. > [!NOTE] > Если по каким-то причинам вы хотите установить Minecraft вручную, можно воспользоваться [нашей инструкцией](https://timeweb.cloud/docs/unix-guides/ustanovka-minecraft-na-ubuntu). ## Запуск Minecraft-сервера 1. [Зарегистрируйте аккаунт](https://timeweb.cloud/docs?auth=registrationAccount) в Timeweb Cloud, если его еще нет. 2. В панели управления перейдите в раздел [«Облачные серверы»](https://timeweb.cloud/my/servers). 3. Кликните «Создать» или «Добавить». 4. На вкладке «Маркетплейс» выберите нужную версию Minecraft. ![Создать Сервер 06 24 2026 04 46 Pm](https://content.timeweb.com/assets/e8fca339-d811-42d6-baad-d5a9e9ca31b7.png?width=1567&height=1008) 5. Выберите конфигурацию. Для игровых серверов мы рекомендуем выбирать мощные серверы с дисками NVMe и процессорами Intel Gold (линейка Premium NVMe) или производительные конфигурации HighCPU 5ГГц. Минимальный рекомендуемый тариф — Cloud 40: 2 x 3.3 ГГц CPU, 2 ГБ RAM, 40 ГБ NVMe. Более стабильный вариант, который подойдет для мультиплеерной игры на 5-10 человек — High 1: 1 x 5 ГГц CPU, 1 ГБ RAM, 15 ГБ NVMe. ![Создать Сервер 06 24 2026 04 49 Pm](https://content.timeweb.com/assets/72e33895-9f4c-4670-9e31-8445ffb0e51f.png?width=761&height=702) 6. После выбора необходимых настроек кликните «Заказать» и оплатите сервер, чтобы запустить его. 7. После завершения установки на ваш контактный емейл придет письмо с реквизитами доступа к серверу. После установки игровой сервер будет сразу запущен, и вы сможете подключиться к нему из клиента Minecraft, указав IP-адрес сервера и порт. Файлы Minecraft будут размещены в `/opt/minecraft`, параметры запуска можно найти в `/etc/systemd/system/minecraft@.service`. ## Подключение к серверу Версия игрового сервера — 1.17. Убедитесь, что в клиенте выбрана именно эта версия. Для подключения используются порты: - 25565 — для Minecraft JE - 19132 — для Minecraft BE Чтобы подключиться к игровому серверу: 1. Запустите Minecraft на своем компьютере 2. Нажмите Play. 3. Выберите Multiplayer. 4. Нажмите Add Server. 5. В строку Server Address введите IP-адрес вашего сервера и порт. 6. Нажмите Done. 7. Кликните на добавленный сервер и нажмите Join Server. Например, для подключения к нашему серверу с Minecraft JE: ![A6e4947c 1d6d 4aac 8ca0 047ffd813734](https://content.timeweb.com/assets/45417b8c-fbf5-4aa7-9342-19a6d3ed9ad3?width=1439&height=356) будет нужно указать: ```shell 94.228.123.76:25565 ``` ## Открытие портов Для работы Minecraft необходимо, чтобы на сервере были открыты порты 25565 или 19132 (в зависимости от версии Minecraft). Если у вас возникает проблема с подключением к серверу Minecraft, попробуйте открыть порты вручную, [подключившись к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh). Ubuntu / Debian На серверах с Ubuntu/Debian это можно сделать командой: ```shell ufw allow номер_порта ``` Например: ```shell ufw allow 25565 ``` После проверьте, что порт открыт: ```shell ufw status ``` CentOS На серверах с CentOS используйте: ```shell firewall-cmd --add-port=номер_порта/tcp --permanent ``` Например: ```shell firewall-cmd --add-port=25565/tcp --permanent ``` После перезагрузите файрвол для применения изменений: ```shell firewall-cmd --reload ``` И проверьте, что порт открыт: ```shell firewall-cmd --list-all ``` ## Offline mode Задать Offline mode можно в файле `/opt/minecraft/survival/server.properties`, указав вместо `online-mode=true` значение `online-mode=false`. 1. [Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. После подключения откройте файл на редактирование: ```shell nano /opt/minecraft/survival/server.properties ``` 3. Найдите строку `online-mode=true` и замените значение `true` на `false`. 4. Сохраните изменения: Ctrl X, затем Y и Enter. ## Полезные ссылки - Если вы только начинаете работать с собственным игровым сервером, рекомендуем посмотреть [наш вебинар по установке Minecraft-сервера и управлению им](https://www.youtube.com/watch?v=DBTuqVHExrk). Расскажем, как создать сервер и подключиться к нему, как управлять сервером и его настройками. - Полезную информацию для управления сервером можно найти в статье [Основные команды для сервера Minecraft](https://timeweb.com/ru/community/articles/komandy-dlya-servera-minecraft) в нашем Community. - Также вам может пригодиться информация из [wiki Minecraft по настройке игровых параметров сервера](https://minecraft.fandom.com/wiki/Server.properties). # Настройка сети Outline Source: https://timeweb.cloud/docs/unix-guides/nastrojka-outline Outline — это бесплатное ПО с открытым исходным кодом, с помощью которого можно развернуть собственную персональную сеть для безопасного доступа в Интернет. Outline использует протокол *shadowsocks*. В инструкции рассмотрим, как развернуть Outline на сервере Timeweb Cloud. > [!NOTE] > Даже если всё настроено правильно, сеть может не работать из-за ограничений со стороны вашего интернет-провайдера. > > Поддержка Timeweb Cloud не сможет помочь в настройке Outline или устранении неполадок в его работе. ## Шаг 1. Заказ сервера 1. [Зарегистрируйте аккаунт](https://timeweb.cloud/docs?auth=registrationAccount) в Timeweb Cloud, если его еще нет. 2. В панели управления перейдите в раздел [«Облачные серверы»](https://timeweb.cloud/my/servers). 3. Кликните «Создать» или «Добавить». 4. Выберите ОС. Outline можно установить на любую Linux-систему, но мы тестировали эту инструкцию для Ubuntu 24.04, поэтому установим ее. ![Scr 20260225 Llgp](https://content.timeweb.com/assets/fb3a8126-948f-45c6-8d73-8a513b988026.png?width=1054&height=922) 5. Выберите регион размещения сервера. В примере мы выбираем Нидерланды, но Outline будет работать в том числе на сервере в России. ![Scr 20260225 Llib](https://content.timeweb.com/assets/19fb512b-efe6-4f41-861e-7c3ddd1c6de5.png?width=1046&height=944) 6. Выберите конфигурацию. Для работы Outline достаточно минимальной конфигурации с 1 CPU, 1 ГБ RAM и 15 ГБ диска. Мы установим самый простой конфиг из доступных в Нидерландах. ![Scr 20260225 Lplk](https://content.timeweb.com/assets/c9a7d75d-3be9-4ba0-b4ff-20bf38257305.png?width=1056&height=982) 7. В следующем блоке можно отключить бэкапы, если они вам не нужны; остальные параметры можно оставить без изменений. 8. Нажмите «Заказать» — сервер будет установлен в течение нескольких минут. Реквизиты подключения, в том числе пароль root, вы найдете на дашборде сервера. ![06f14d57 8f5a 41c3 8679 539a08795935](https://content.timeweb.com/assets/48589da8-6ef5-4c98-9dc4-ba880586bc8c?width=1449&height=1003) ## Шаг 2. Установка Outline Manager Для управления подключениями вам потребуется Outline Manager, который необходимо установить на свой компьютер. 1. Скачайте версию для своей ОС с [официального сайта](https://getoutline.org/get-started/) и установите приложение. ![Ddf571d0 03b1 4861 A97d Eec8517b7fc6](https://content.timeweb.com/assets/5a4e30ee-0b49-4e93-9fac-81832910ddec?width=1511&height=871) _Скриншот официального сайта [Outline](https://getoutline.org/get-started/)_ 2. Запустите приложение и примите условия использования, кликнув ОК. 3. Кликните на опцию «Настройте Outline где угодно». ![Без Названия](https://content.timeweb.com/assets/a9688cb2-97e9-47e9-9cee-c91ccf2adb04?width=984&height=1012) _Интерфейс [Outline Manager](https://getoutline.org/)_ Outline предложит вам простую инструкцию: ![Image8](https://content.timeweb.com/assets/2f879c49-e979-4020-b0ea-32101c1a77c3?width=984&height=1012) _Инструкция по установке сервиса в интерфейсе [Outline Manager](https://getoutline.org/)_ Ниже мы опишем, как ее использовать. ## Шаг 3. Настройка сервера 1. Подключитесь к своему серверу Timeweb Cloud [по SSH](https://timeweb.cloud/docs/unix-guides/ssh) с помощью терминала, PowerShell или Putty. Не используйте для настройки консоль в панели управления — вы не сможете скопировать из нее необходимые данные. 2. Cкопируйте команду из Outline Manager и выполните ее на сервере. ![Scr 20260225 Lpzc](https://content.timeweb.com/assets/4487fc94-e2ff-4c5c-b943-9c678f0c012c.png?width=2692&height=1692) _Инструкция по установке сервиса в интерфейсе [Outline Manager](https://getoutline.org/)_ На момент написания инструкции команда выглядит так: ```shell sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)" ``` При выполнении команды будет выполнена проверка — установлен ли на сервер Docker. Если сервер новый, Docker установлен не будет. На вопрос *«Would you like to install Docker? This will run 'curl https://get.docker.com/ | sh'. \[Y/n\]»* ответьте `y` и нажмите `Enter`. После этого начнется установка Docker, а затем установка Outline продолжится. > [!NOTE] > На этом этапе может возникнуть ошибка: > > *Last error: curl: (7) Failed to connect to localhost port 29046 after 0 ms: Connection refused* > *Error response from daemon: Container b1c133cd1b... is restarting, wait until the container is running* > > Для ее устранения: > > 1. Откройте файл /etc/hosts: > `nano /etc/hosts` > 2. Добавьте в него строку: > `127.0.0.1 localhost` > 3. Сохраните изменения (Ctrl + X, затем Y и Enter). > > После снова выполните команду установки Outline, скопированную из Outline Manager. 3. Скопируйте строку из вывода команды, выделенную зеленым. ![Scr 20260225 Lnsg](https://content.timeweb.com/assets/d4968251-f609-46a7-9332-8f815cea2ee2.png?width=1787&height=1058) 4. Вставьте ее в окно Outline Manager и нажмите «Готово»: ![B59db17b 11e1 4611 9693 Cb0b06dcf1fc](https://content.timeweb.com/assets/a3845e78-eab3-4e46-826e-9636ae1c33f5?width=984&height=1012) _Инструкция по установке сервиса в интерфейсе [Outline Manager](https://getoutline.org/)_ На этом настройка серверной части закончена. ## Шаг 4. Создание ключей доступа Для установки подключения на устройствах будут необходимы ключи доступа. Они создаются в Outline Manager. 1. Кликните «Добавить новый ключ». При необходимости задайте ключу удобное имя. ![24f7ef95 313f 402a 8594 A59ee6680a3c](https://content.timeweb.com/assets/170fe9ad-8c02-4e47-bc00-ceb3f5551e23?width=984&height=1012) _Раздел «Подключения» в интерфейсе [Outline Manager](https://getoutline.org/)_ 2. Кликните на значок «Поделиться» у созданного ключа. ![45476339 3725 4774 Ac1c 62530a43c2a9](https://content.timeweb.com/assets/bb94f461-73e3-49a4-8127-8eaf7c26f1d3?width=984&height=1012) _Раздел «Подключения» в интерфейсе [Outline Manager](https://getoutline.org/)_ 3. В открывшемся окне нажмите «Копировать ключ доступа» и «Готово». ![Image9](https://content.timeweb.com/assets/6f6b496f-e78e-423a-81e4-7b616434c345?width=984&height=1012) _Окно «Поделитесь доступом» в интерфейсе [Outline Manager](https://getoutline.org/)_ Скопированный ключ понадобится на следующем шаге для настройки клиента Outline. Если вы настраиваете клиент на другом устройстве, ключ можно переслать в любом мессенджере. ## Шаг 5. Настройка клиента Outline 1. Скачайте приложение Outline для своего устройства. Ссылки на скачивание можно найти на [официальном сайте проекта](https://getoutline.org/ru/get-started/#step-3). ![Image14](https://content.timeweb.com/assets/7cf05350-2a80-4540-bd29-5eb736854996?width=1395&height=866) _Скриншот официального сайта [Outline](https://getoutline.org/)_ 2. Установите и запустите скачанное приложение. 3. Нажмите «Добавить сервер», укажите ключ доступа, скопированный из Outline Manager, и нажмите «Добавить сервер». ![Image3](https://content.timeweb.com/assets/e8746cc8-2231-4f30-a84a-902eb0e38097?width=446&height=798) _Добавление ключа доступа в интерфейсе приложения [Outline](https://getoutline.org/)_ Готово, сервер добавлен. Теперь вы можете подключиться к сети, нажав на кнопку «Подключить». ![Image6](https://content.timeweb.com/assets/6530e419-36f1-4d08-b20c-afab59c91e88?width=446&height=798) _Отображение сервера в интерфейсе приложения [Outline](https://getoutline.org/)_ Отключить соединение можно будет здесь же. ## Устранение проблем ### Проблема в работе shadowbox Иногда может некорректно работать один из двух Docker-контейнеров Outline под названием `shadowbox`, из-за чего не работает персональная сеть. Проверить можно командой ниже, [подключившись к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh): ```shell docker ps ``` В выводе обратите внимание на статус `shadowbox`. В примере ниже видим, что первый контейнер работает корректно уже 17 часов (статус: *Up 17 hours*), в то время как второй постоянно перезапускается (статус: *Restarting (1) 15 seconds ago*): ```shell CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3008f164751f containrrr/watchtower "/watchtower --clean…" 17 hours ago Up 17 hours 8080/tcp watchtower 040aac1265a0 quay.io/outline/shadowbox:stable "docker-entrypoint.s…" 17 hours ago Restarting (1) 15 seconds ago shadowbox ``` Для устранения проблемы отредактируйте файл `/etc/hosts`, открыв его в редакторе: ```shell nano /etc/hosts ``` И добавьте в файл строку: ```shell 127.0.0.1 localhost ``` Сохраните изменения (Ctrl + X, затем Y и Enter). После контейнер будет работать корректно, и у вас появится доступ к сети. ### Проблема со скачиванием образа из Docker Hub На этапе настройки сервера, после установки Docker, может возникнуть ошибка: ```shell Starting Watchtower ......................... FAILED Unable to find image 'containrrr/watchtower:latest' locally latest: Pulling from containrrr/watchtower docker: toomanyrequests: You have reached your unauthenticated pull rate limit. https://www.docker.com/increase-rate-limit ``` Ошибка возникает из-за превышения лимитов запросов к Docker Hub с IP-адреса сервера. Для решения проблемы вы можете воспользоваться [нашим зеркалом Docker Hub](https://dockerhub.timeweb.cloud/). Для этого: Откройте файл: ```shell nano /etc/docker/daemon.json ``` Добавьте строку: ```shell { "registry-mirrors": ["https://dockerhub.timeweb.cloud"] } ``` Сохраните изменения при помощи сочетания клавиш `Ctrl + X`, затем `Y` и `Enter`. Перезапустите Docker: ```shell systemctl reload docker ``` После этого вернитесь к пункту 3 шага 3 и выполните установку повторно. # Изменение настроек DNS-серверов Source: https://timeweb.cloud/docs/unix-guides/izmenenie-nastroek-dns-serverov В инструкции рассказываем, как изменить настройки DNS-серверов в операционных системах семейства **Linux**. Для сервера с ОС Windows [воспользуйтесь этой статьей](https://timeweb.cloud/docs/windows-guides/nastrojka-dns-serverov-v-windows-server). В инструкции ниже мы будем прописывать публичные DNS-серверы Google: `8.8.8.8` и `8.8.4.4`, но вы можете указывать любые нужные вам DNS (например, DNS Cloudflare: `1.1.1.1` и `1.0.0.1` и др.). Если вы используете IPv6, вы можете дополнительно указать DNS-серверы для этого протокола. Это необязательно — настройка нужна только в том случае, если ваш сервер работает с IPv6. Примеры IPv6 DNS от Google: `2001:4860:4860::8888`, `2001:4860:4860::8844`. ## Проверка текущих DNS Перед тем, как менять настройки, вы можете просмотреть, какие DNS-серверы используются сейчас. Это можно сделать, подключившись к серверу [по SSH](https://timeweb.cloud/docs/unix-guides/ssh) (или через веб-консоль в панели управления) и далее выполнив команду для вашей операционной системы. **Ubuntu 18.04:** ```shell systemd-resolve --status | grep 'DNS Servers' -A2 ``` **Ubuntu 20.04 и выше, Debian 12 и выше:** ```shell resolvectl status ``` **Debian 11:** ```shell cat /etc/resolv.conf ``` **CentOS Stream 9** ``` nmcli device show ens3 ``` В выводе будут указаны текущие DNS-серверы. Для серверов Timeweb Cloud, размещенных в Санкт-Петербурге, по умолчанию используются: ```shell nameserver 92.53.116.13 nameserver 92.53.116.104 ``` ## Изменение DNS-серверов ### Ubuntu 18.04 Чтобы изменить DNS-серверы, выполните следующее: Перейдите в директорию `/etc/netplan`: ```shell cd /etc/netplan ``` Откройте файл конфигурации службы для редактирования. Файл, как правило, называется `01-netcfg.yaml`: ```shell nano 01-netcfg.yaml ``` На серверах Timeweb Cloud его содержимое будет следующим: ```bash # This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets: ens3: dhcp4: yes ``` Добавьте в конец файла блок: ```bash nameservers: addresses: [8.8.8.8, 8.8.4.4] ``` При необходимости вы можете добавить DNS для IPv6: ```shell addresses: [8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844] ``` и включить `dhcp6`: ```shell dhcp6: yes ``` У вас должно получиться следующее: ```bash # This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets: ens3: dhcp4: yes dhcp6: yes nameservers: addresses: [8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844] ``` > [!NOTE] > Обязательно соблюдайте иерархичность структуры; каждый новый уровень директив должен начинаться с двух пробелов (не отступов Tab). Сохраните изменения в файле (Ctrl +X, затем Y и Enter). Примените новую конфигурацию командой: ```shell netplan try ``` Программа запросит у вас подтверждение — нажмите Enter, чтобы применить новые настройки. > [!NOTE] > На этом этапе, если в конфигурации сети были допущены какие-то ошибки, подключение по SSH будет разорвано. Конфигурация автоматически вернется к исходным настройкам через 2 минуты, и вы сможете снова подключиться к серверу. Проверьте, что DNS-серверы обновились, с помощью команд: ```shell systemd-resolve --status | grep 'DNS Servers' -A2 ``` ### Ubuntu 20.04 и выше, Debian 12 и выше Для изменения DNS-серверов в Debian 12, Ubuntu 20.04 и более новых версиях, выполните следующее: Откройте файл настроек `systemd-resolved` в текстовом редакторе: ```shell sudo nano /etc/systemd/resolved.conf ``` Раскомментируйте секцию `[Resolve]` и укажите в ней желаемые DNS-серверы. Например: ```shell [Resolve] DNS=8.8.8.8 FallbackDNS=8.8.4.4 ``` Сохраните изменения (Ctrl + X, затем Y и Enter). Чтобы указать DNS для IPv6, добавьте их в тот же файл вместе с IPv4: ```shell [Resolve] DNS=8.8.8.8 2001:4860:4860::8888 FallbackDNS=8.8.4.4 2001:4860:4860::8844 ``` Перезапустите службу `systemd-resolved`: ```shell systemctl restart systemd-resolved ``` Убедитесь, что служба запущена и работает корректно: ```shell systemctl status systemd-resolved ``` Проверьте, что новые DNS-серверы применились: ```shell resolvectl status ``` ### Debian 11 Чтобы изменить DNS-серверы: Откройте файл конфигурации `dhclient` в текстовом редакторе: ```shell nano /etc/dhcp/dhclient.conf ``` В самый конец файла добавьте строку: ```shell supersede domain-name-servers 8.8.8.8, 8.8.4.4; ``` Чтобы указать DNS для IPv6, добавьте их в тот же файл вместе с IPv4: ```shell supersede domain-name-servers 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844; ``` Сохраните изменения в файле (Ctrl +X, затем Y и Enter). Запросите сетевые настройки командой: ```shell dhclient ``` Проверьте, что DNS обновились: ```shell cat /etc/resolv.conf ``` В выводе должны отобразиться указанные вами серверы. ### CentOS Чтобы изменить DNS-серверы, выполните следующее: Выполните команду ниже, чтобы просмотреть сетевые адаптеры в системе: ```shell ip a ``` В выводе отобразятся три адаптера: `lo`, `ens3` и `ens8`: ```shell 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether ce:46:76:13:67:4a brd ff:ff:ff:ff:ff:ff altname enp0s3 inet 83.222.10.200/24 brd 83.222.10.255 scope global dynamic noprefixroute ens3 valid_lft 86369sec preferred_lft 86369sec inet6 2a03:6f01:1:2::c374/128 scope global dynamic noprefixroute valid_lft 2591972sec preferred_lft 604772sec inet6 fe80::cc46:76ff:fe13:674a/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: ens8: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:52:00:b1:4e:8d brd ff:ff:ff:ff:ff:ff altname enp0s8 inet 192.168.0.12/24 brd 192.168.0.255 scope global noprefixroute ens8 valid_lft forever preferred_lft forever inet6 fe80::5652:ff:feb1:4e8d/64 scope link valid_lft forever preferred_lft forever ``` Нам нужно настроить адаптер `ens3`. Проверьте текущие настройки DNS для интерфейса: ```shell nmcli con show ens3 | grep dns ``` Задайте новые DNS-серверы: ```shell sudo nmcli connection modify ens3 ipv4.dns "8.8.8.8,8.8.4.4" ``` Если в системе используется IPv6, можно указать DNS и для него: ```shell sudo nmcli connection modify ens3 ipv6.dns "2001:4860:4860::8888,2001:4860:4860::8844" ``` Чтобы использовать только эти серверы и игнорировать получаемые от DHCP, можно добавить опцию: ```shell sudo nmcli connection modify ens3 ipv4.ignore-auto-dns yes ``` Отключите соединение: ```shell sudo nmcli connection down ens3 ``` Включите соединение снова: ```shell sudo nmcli connection up ens3 ``` Убедитесь, что изменения применились: ```shell nmcli con show ens3 | grep dns ``` Вы увидите такую строку: ```shell ipv4.dns: 8.8.8.8,8.8.4.4 ``` И если настраивали IPv6: ```shell ipv6.dns: 2001:4860:4860::8888,2001:4860:4860::8844 ``` # Перенос сервера с большим диском на меньший с помощью rsync Source: https://timeweb.cloud/docs/unix-guides/perenos-servera-s-bolsim-diskom-na-mensii-s-pomoshhiu-rsync Главный критерий данного переноса — чтобы размер файлов на отдающем сервере не превышал размер диска принимающего. Предположим у нас есть два сервера — отдающий и принимающий со следующими дисками: - Сервер 1 (отдающий) имеет диск в 40 ГБ и суммарный объем файлов в 24 ГБ - Сервер 2 (принимающий) имеет диск в 30 ГБ Для переноса мы: 1. [Загружаем](https://timeweb.cloud/docs/cloud-servers/manage-servers/boot-mode) оба сервера с диска восстановления. Для подключения по SSH потребуется отключить firewall и установить пароль для пользователя root: ```bash systemctl stop iptables ``` ```bash passwd #дважды укажите новый пароль для root ``` 2. Монтируем диски серверов в каталог `mnt`: ```bash mount /dev/sda1 /mnt ``` Команда выполняется на двух серверах. Диск может обозначаться как `/dev/sda`, так и `/dev/vda`. Перед выполнением команды монтирования определите фактическое имя диска. Для этого выполните команду: ```bash lsblk ``` В выводе будет указан основной диск и его разделы, например: ```shell NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 885M 1 loop /run/archiso/sfs/airootfs sda 8:0 0 50G 0 disk ├─sda1 8:1 0 49G 0 part ├─sda14 8:14 0 4M 0 part ├─sda15 8:15 0 106M 0 part └─sda16 259:0 0 913M 0 part sr0 11:0 1 1019M 0 rom /run/archiso/bootmnt vda 254:0 0 1M 1 disk ``` В этом случае для монтирования используется команда: ```bash mount /dev/sda1 /mnt ``` 3. Удаляем файлы на диске **принимающего** сервера: ```bash rm -rf /mnt/* ``` 4. Копируем файлы с отдающего на принимающий: ```bash rsync -azvhP /mnt/ root@IP_ПРИНИМАЮЩЕГО:/mnt/ ``` 5. По окончанию копирования выполняем команды на принимающем сервере: Ubuntu Войдем в окружение `chroot` на смонтированном разделе: ```shell arch-chroot /mnt ``` Удалим привязку к статическому MAC-адресу ```shell nano /etc/netplan/50-cloud-init.yaml ``` Найдем и закомментируем строки с привязкой к MAC-адресу, например: ```shell match: macaddress: 54:52:00:6e:6d:ba ``` После редактирования применяем изменения: ```shell netplan apply ``` Проверьте, запущена ли служба ssh: ```shell systemctl status ssh ``` Если служба не запущена, запустите ее: ```shell systemctl enable ssh && systemctl start ssh ``` Выполним команды: ```shell update-initramfs -u ``` ```shell grub-install /dev/sda ``` ```shell update-grub ``` ```shell exit ``` Centos Войдем в окружение `chroot` на смонтированном разделе: ```shell arch-chroot /mnt ``` Установим GRUB на основной диск: ```shell grub2-install /dev/sda ``` Создадим конфигурацию загрузчика: ```shell grub2-mkconfig -o /boot/grub2/grub.cfg ``` Проверим UUID корневого раздела: ```shell blkid /dev/sda1 ``` Вы увидите примерно такой вывод: ```shell /dev/sda1: UUID="90c1eed9-cfb3-4676-bcc9-fbf85f391246" TYPE="xfs" ``` Скопируйте UUID без кавычек — в нашем примере это: ```shell 90c1eed9-cfb3-4676-bcc9-fbf85f391246 ``` Найдем файл загрузки ядра: ```shell ls /boot/loader/entries ``` Пример вывода: ```shell ff03bff452ba47cda441b4fde3632ef4-5.14.0-585.el9.x86_64.conf ``` Отредактируем найденный файл и укажем актуальный UUID: ```shell vi /boot/loader/entries/ff03bff452ba47cda441b4fde3632ef4-5.14.0-585.el9.x86_64.conf ``` Найдите строку, начинающуюся с `options root=UUID=...` и замените UUID на актуальный. Выходим из `chroot`: ```shell exit ``` 6. Запускаем принимающий сервер в стандартном режиме. Обратите внимание: для входа необходимо использовать учетные данные (имя пользователя и пароль) от исходного сервера, с которого выполнялся перенос. Пароль, указанный в панели управления для нового сервера, работать не будет. # Установка n8n Source: https://timeweb.cloud/docs/unix-guides/installing-n8n n8n — инструмент для автоматизации рабочих процессов с открытым исходным кодом. Он позволяет создавать интеграции между различными сервисами, используя GUI. ## Установка через маркетплейс Самый простой способ развернуть n8n — использовать готовый образ из маркетплейса. Для этого: 1. [Зарегистрируйте аккаунт](https://timeweb.cloud/docs?auth=registrationAccount) в Timeweb Cloud, если его еще нет. 2. В панели управления перейдите в раздел [«Облачные серверы»](https://timeweb.cloud/my/servers). 3. Кликните «Создать» или «Добавить». 4. На вкладке «Маркетплейс» выберите n8n. ![Selection 287](https://content.timeweb.com/assets/58efe1cd-5033-4255-9575-50b627d64437.png?width=1012&height=860) 5. Выберите конфигурацию. Для запуска n8n подойдет минимальная конфигурация сервера. Ее будет достаточно для тестирования. В будущем, если нагрузка на сервис возрастет, вы сможете изменить параметры сервера и увеличить ресурсы сервера. 6. Настройте остальные параметры (их можно оставить без изменений). 7. Завершите создание сервера, нажав на кнопку «Заказать». После запуска сервер будет доступен в панели управления. Перейдите во вкладку «Дашборд», чтобы увидеть технический домен, по которому открывается интерфейс n8n. ![Selection 290](https://content.timeweb.com/assets/81201419-174c-447c-a356-f602d9ee6389.png?width=772&height=770) ### Настройка SSL-сертификата При первом обращении к n8n через браузер вы можете столкнуться с предупреждением о небезопасном соединении. Это связано с отсутствием SSL-сертификата. Для выпуска сертификата необходимо указать ваш email в настройках `docker-compose.yml`. Для этого подключитесь к серверу по SSH. Перейдите в рабочую директорию n8n: ```shell cd /home/n8n ``` Отредактируйте файл `.env`: ```shell nano .env ``` Найдите строку с переменной `SSL_EMAIL` и укажите ваш email: ```shell SSL_EMAIL=user@example.com ``` Email будет использоваться сервисом Let's Encrypt для выпуска сертификата. Сохраните изменения и перезапустите контейнеры: ```shell docker compose down docker compose up -d ``` Процесс выпуска сертификата может занять несколько минут. После этого доступ к n8n будет выполняться по HTTPS. ### Изменение домена Если вы хотите использовать собственный домен, вы можете изменить настройки в файле `.env`. Перед внесением изменений убедитесь, что домен и поддомен указывают на IP-адрес вашего сервера через A-записи в DNS. Перейдите в директорию n8n: ```shell cd /home/n8n ``` Откройте файл `.env`: ```shell nano .env ``` Найдите и измените строки: ```shell DOMAIN_NAME= SUBDOMAIN= ``` Например, если вы хотите использовать домен `n8n.example.com`, значения должны быть следующими: ```shell DOMAIN_NAME=example.com SUBDOMAIN=n8n ``` Если вы хотите использовать домен второго уровня (без поддомена), укажите только `DOMAIN_NAME`, а все упоминания `${SUBDOMAIN}` в файле `docker-compose.yml` удалите. Сохраните файл и перезапустите контейнеры: ```shell docker compose down docker compose up -d ``` После этого n8n будет доступен по вашему домену. ## Установка вручную с помощью Docker Compose Вы также можете установить n8n вручную на любой сервер при помощи Docker Compose. Перед настройкой установим Docker и Docker Compose. Для этого выполните следующие команды: ```shell curl -fsSL https://get.docker.com -o get-docker.sh sudo sh ./get-docker.sh ``` Создайте отдельную директорию для проекта: ```shell mkdir n8n-compose ``` И перейдите в нее ```shell cd n8n-compose ``` Создайте файл `docker-compose.yml` со следующим содержимым: ```yaml services: traefik: image: "traefik" restart: always command: - "--api=true" - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.web.http.redirections.entryPoint.to=websecure" - "--entrypoints.web.http.redirections.entrypoint.scheme=https" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true" - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}" - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" volumes: - traefik_data:/letsencrypt - /var/run/docker.sock:/var/run/docker.sock:ro n8n: image: docker.n8n.io/n8nio/n8n restart: always ports: - "127.0.0.1:5678:5678" labels: - traefik.enable=true - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`) - traefik.http.routers.n8n.tls=true - traefik.http.routers.n8n.entrypoints=web,websecure - traefik.http.routers.n8n.tls.certresolver=mytlschallenge - traefik.http.middlewares.n8n.headers.SSLRedirect=true - traefik.http.middlewares.n8n.headers.STSSeconds=315360000 - traefik.http.middlewares.n8n.headers.browserXSSFilter=true - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true - traefik.http.middlewares.n8n.headers.forceSTSHeader=true - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME} - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true - traefik.http.middlewares.n8n.headers.STSPreload=true - traefik.http.routers.n8n.middlewares=n8n@docker environment: - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME} - N8N_PORT=5678 - N8N_PROTOCOL=https - NODE_ENV=production - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} volumes: - n8n_data:/home/node/.n8n - ./local-files:/files volumes: n8n_data: traefik_data: ``` Создайте файл `.env` и добавьте следующее: ```shell # The top level domain to serve from DOMAIN_NAME=example.com # The subdomain to serve from SUBDOMAIN=n8n # The timezone to use inside the container GENERIC_TIMEZONE=Europe/Moscow # The email address used for certificate issuance SSL_EMAIL=user@example.com ``` Измените значения `DOMAIN_NAME`, `SUBDOMAIN` и `SSL_EMAIL` на ваши данные. После настройки всех файлов, запустите контейнеры: ```shell docker compose up -d ``` Через несколько минут n8n будет доступен по адресу, который вы указали в `.env`. ## Создание резервной копии Для создания копии подключитесь к серверу по SSH. Перейдите в директорию n8n: ```bash cd /home/n8n ``` Остановите контейнеры: ```bash docker compose down ``` Создайте директорию для хранения резервных копий: ```bash mkdir backups ``` Создайте архив с данными n8n: ```bash docker run --rm \ -v n8n_data:/data \ -v "$(pwd)/backups:/backup" \ alpine \ tar czf /backup/n8n_data_$(date +%F_%H-%M-%S).tar.gz -C /data . ``` После выполнения команды архив будет сохранен в директории `/home/n8n/backups`. Проверить, что архив был создан можно командой: ```bash ls ./backups ``` После создания резервной копии запустите контейнеры снова: ```bash docker compose up -d ``` ## Восстановление из резервной копии Подключитесь к серверу по SSH и перейдите в директорию n8n: ```bash cd /home/n8n ``` Остановите контейнеры: ```bash docker compose down ``` Очистите вольюм со старыми данными: ```bash docker run --rm -v n8n_data:/data alpine sh -c 'rm -rf /data/* /data/.[!.]* /data/..?* 2>/dev/null || true' ``` Выполните восстановление из архива: ```bash docker run --rm \ -v n8n_data:/data \ -v "$(pwd)/backups:/backup" \ alpine \ sh -c 'tar xzf /backup/ИМЯ_АРХИВА.tar.gz -C /data' ``` Замените `ИМЯ_АРХИВА.tar.gz` на имя нужного файла резервной копии. После завершения восстановления запустите контейнеры: ```bash docker compose up -d ``` ## Обновление > [!NOTE] > Процесс обновления ниже описан для версии, установленной через маркетплейс. При ручной установке путь к директории и отдельные параметры могут отличаться. Проверить текущую версию n8n можно через веб-интерфейс. Для этого на главной странице нажмите значок вопроса в левом нижнем углу и выберите пункт «About n8n». В открывшемся окне будет указана версия приложения. ![Scr 20260423 Kxxb](https://content.timeweb.com/assets/700c1795-c46a-4b58-8f28-d9de43e6f8e3.png?width=2250&height=1288) Также проверить версию можно при помощи команды: ```bash docker exec n8n-n8n-1 n8n --version ``` Где `n8n-n8n-1` — имя контейнера n8n. Получить имя контейнера можно командой: ```bash docker ps ``` Перед обновлением рекомендуем [создать резервную копию данных](https://timeweb.cloud/docs/unix-guides/installing-n8n#sozdanie-rezervnoj-kopii), чтобы при необходимости можно было выполнить восстановление. Подключитесь к серверу по SSH и перейдите в директорию n8n: ```bash cd /home/n8n ``` Остановите контейнеры: ```bash docker compose down ``` Скачайте новый образ: ```bash docker compose pull ``` Обратите внимание, если вы редактировали `.env` или `docker-compose.yml`, могла быть указана фиксированная версия образа. Проверьте используемые значения. Для установки через маркетплейс строка в `.env` должна выглядеть так: ```bash IMAGE2=dockerhub.timeweb.cloud/n8nio/n8n ``` При ручной установке в `docker-compose.yml` строка должна быть следующей: ```bash image: docker.n8n.io/n8nio/n8n ``` После загрузки нового образа запустите n8n: ```bash docker compose up -d ``` Немного подождите, после чего n8n снова будет доступен по прежнему адресу. Затем проверьте, что версия приложения обновилась. # Установка OpenClaw Source: https://timeweb.cloud/docs/unix-guides/openclaw [OpenClaw](https://openclaw.ai/) — это self-hosted AI-ассистент, который можно развернуть на облачном сервере. В отличие от обычных чат-ботов, OpenClaw не только отвечает на запросы, но и может взаимодействовать с миром: отправлять сообщения, обрабатывать данные, работать с файлами и внешними сервисами. С OpenClaw можно взаимодействовать через мессенджеры (например, Телеграм), а также напрямую через API или командную строку. ## Создание сервера Для запуска OpenClaw создайте сервер с подходящей конфигурацией через панель управления. 1. [Зарегистрируйте аккаунт](https://timeweb.cloud/docs?auth=registrationAccount) в Timeweb Cloud, если его еще нет. 2. В панели управления перейдите в раздел [«Облачные серверы»](https://timeweb.cloud/my/servers). 3. Кликните «Создать» или «Добавить». 4. На вкладке «Маркетплейс» выберите образ «OpenClaw». ![Создать Сервер 06 24 2026 04 55 Pm](https://content.timeweb.com/assets/41440ce9-7927-4eb2-bf5e-c527e9da1d7a.png?width=1565&height=950) 5. Укажите регион, в котором будет размещен сервер. 6. Выберите конфигурацию сервера. Мы рекомендуем следующие параметры: - 4 ядра CPU - 8 ГБ RAM - 80 ГБ NVMe 8. Остальные параметры можно оставить без изменений. 9. Нажмите «Заказать», чтобы создать сервер. ## Настройка сервера После создания сервера выполните первоначальную настройку OpenClaw. Подключитесь к серверу по SSH с вашего компьютера. Если используете macOS или Linux, запустите терминал, на Windows — PowerShell. В панели управления откройте вкладку «Дашборд» и скопируйте строку из блока «Подключение по SSH». ![Scr 20260428 Qfst](https://content.timeweb.com/assets/8d233123-a8b5-4093-b720-da4f41f36c98.png?width=2080&height=1658) Вставьте эту команду в терминал и нажмите `Enter`. При первом подключении появится запрос на добавление сервера в список доверенных: ```bash Are you sure you want to continue connecting (yes/no/[fingerprint])? ``` Введите `yes` и нажмите `Enter`. Введите пароль из поля «Root-пароль» на вкладке «Дашборд» панели управления. Обратите внимание, что при вводе пароль не отображается — это нормальное поведение терминала. ### Базовая настройка > [!NOTE] > При настройке может возникнуть ошибка «*Error: systemctl is-enabled unavailable: Command failed: systemctl --user is-enabled openclaw-gateway.service*». Она связана с ошибкой в установщике OpenClaw. Причина и временное решение описаны [в разделе ниже](https://timeweb.cloud/docs/unix-guides/openclaw#oshibka-pri-nastrojke). При первом входе в систему автоматически запустится мастер настройки OpenClaw. Если он не запустился или был закрыт, его можно вызвать вручную командой: ```bash openclaw onboard ``` Далее выполните следующие шаги: 1. Ознакомьтесь с дисклеймером и согласитесь с условиями, выбрав «Yes». 2. В разделе «Onboarding mode» выберите «QuickStart». 3. На шаге «Model/auth provider»: - Если у вас есть API-ключ от внешнего провайдера, выберите его. - Если вы планируете использовать наших AI-агентов, выберите «Skip for now». ![Scr 20260130 Pjtw](https://content.timeweb.com/assets/4a0aefa3-71c3-4668-9adc-3602b60f19d9.png?width=1466&height=1270) _Мастер настройки [OpenClaw](https://openclaw.ai/)_ 4. В «Filter models by provider» укажите «All providers». 5. Параметр «Default model» оставьте без изменений. 6. На шаге «Select channel (QuickStart)» можно настроить мессенджер. Для подключения Телеграма [воспользуйтесь инструкцией ниже](https://timeweb.cloud/docs/unix-guides/openclaw#podkluchenie-k-telegramu). 7. Шаг «Configure skills now?» можно пропустить, выбрав «No». 8. На этапе «Enable hooks?» выберите «Skip for now», нажав пробел и Enter. 9. В разделе «How do you want to hatch your bot?» выберите «Do this later». ![Scr 20260130 Pnho](https://content.timeweb.com/assets/6ed980ec-12a2-42b2-b6cf-e8b92e9027fb.png?width=1502&height=1376) _Мастер настройки [OpenClaw](https://openclaw.ai/)_ ### Подключение AI-агентов Если вы планируете использовать [наших AI-агентов](https://timeweb.cloud/docs/ai-agents), выполните команду для запуска скрипта подключения: ```bash curl -fsSL https://st.timeweb.com/cloud-static/twc-openclaw-autoinstall.sh -o /tmp/twc-openclaw-autoinstall.sh && bash /tmp/twc-openclaw-autoinstall.sh ``` Скрипт потребует: 1. **Указать базовый URL** — он отображается в панели управления агентом, во вкладке «Дашборд». ![Scr 20260130 Qesd](https://content.timeweb.com/assets/bf3a6441-182d-4682-be12-e4e7bce8e4ca.png?width=1786&height=1654) 2. **Ввести API-ключ**. Получить его можно во вкладке в панели управления: - Перейдите во вкладку «Управление» - Нажмите «Изменить» в строке «Доступность». - В открывшемся окне нажмите «Добавить новый ключ». ![Scr 20260130 Qfpq](https://content.timeweb.com/assets/7b5a459e-2b30-42b6-a7db-a9f0ad0bed37.png?width=2532&height=1660) 3. Подтвердите введенные данные, нажав «Y». После этого запустится консольный интерфейс OpenClaw. Вы можете проверить корректность подключения, отправив любое сообщение. ![Scr 20260130 Qggk](https://content.timeweb.com/assets/02ea176a-ee5d-4431-9fb3-1d2576201899.png?width=2500&height=1068) _Консольный интерфейс [OpenClaw](https://openclaw.ai/)_ Если потребуется изменить настройки позже — повторно запустите мастер настройки командой: ```bash openclaw onboard ``` Для взаимодействия с OpenClaw в терминале доступен текстовый интерфейс. Чтобы запустить его, выполните команду: ```bash openclaw tui ``` После запуска откроется интерактивная консоль, в которой можно отправлять сообщения агенту, просматривать ответы и отслеживать активность. ## Подключение к Телеграму Для взаимодействия с OpenClaw через Телеграм необходимо создать собственного бота и получить API-ключ. Это можно сделать с помощью официального бота [@BotFather](https://t.me/BotFather). Откройте Телеграм и выполните действия: 1. Перейдите в [@BotFather](https://t.me/BotFather) и начните диалог. 2. Выполните команду `/newbot`. 3. Укажите имя бота — оно будет отображаться в списке чатов. 4. Укажите логин бота. Он должен быть уникальным и обязательно заканчиваться на `bot` (например, `openclaw_tw_bot`). После выполнения всех шагов BotFather сгенерирует API-ключ. Этот ключ будет использоваться для интеграции Телеграм-бота с OpenClaw. ![Scr 20260130 Oyjw](https://content.timeweb.com/assets/03591b38-6013-44f4-93b6-2c082e9998ea.png?width=1684&height=1200) _Получение API-ключа в интерфейсе [Telegram](https://telegram.org/)_ В мастере настройки OpenClaw, на этапе «Select channel (QuickStart)», выберите «Telegram» и вставьте полученный API-ключ. Полностью завершите настройку OpenClaw и запустите диалог с ботом, отправив команду: ```bash /start ``` В ответ бот пришлет сообщение с кодом сопряжения. ![Scr 20260130 Qiol](https://content.timeweb.com/assets/35fd125e-6138-473c-a1e7-f30343850283.png?width=1678&height=604) _Получение кода сопряжения в интерфейсе [Telegram](https://telegram.org/)_ На сервере выполните команду: ```bash openclaw pairing approve telegram ``` Где `` — это код, полученный от бота в Телеграм. После этого бот будет готов к работе: вы сможете отправлять команды и взаимодействовать с агентом напрямую через Телеграм. Сопряжение нужно будет повторить для каждого нового клиента. ## Веб-интерфейс Веб-интерфейс можно использовать для взаимодействия с агентом и управления его работой. Через него можно общаться с ботом, проверять активные сессии и их состояние, управлять токенами доступа, а также выполнить базовую настройку. Интерфейс предназначен для администрирования и отладки и не рассчитан на публикацию в открытый интернет. ![Scr 20260206 Ltsb](https://content.timeweb.com/assets/e2ff4978-9e94-4f86-966b-013eb583c9f0.png?width=2934&height=1670) _Раздел «Chat» в веб-интерфейсе [OpenClaw](https://openclaw.ai/)_ Для получения доступа к веб-интерфейсу выполните команду, подключившись к серверу по SSH: ```bash openclaw dashboard ``` В ответ вы получите подобный вывод: ```bash 🦞 OpenClaw 2026.2.3-1 (d84eb46) — I keep secrets like a vault... unless you print them in debug logs again. Dashboard URL: http://127.0.0.1:18789/?token=c6aaee5ae1fd9a7925892f4738f37deb01d2bd13d0c11199 Copy to clipboard unavailable. No GUI detected. Open from your computer: ssh -N -L 18789:127.0.0.1:18789 root@147.45.148.206 Then open: http://localhost:18789/ http://localhost:18789/?token=c6aaee5ae1fd9a7925892f4738f37deb01d2bd13d0c11199 Docs: https://docs.openclaw.ai/gateway/remote https://docs.openclaw.ai/web/control-ui ``` Команда используется для генерации токена. Далее понадобится значение из строки Dashboard URL. По умолчанию веб-интерфейс доступен только локально на сервере и недоступен извне. Для удаленного доступа рекомендуется использовать SSH-туннель. На своем компьютере выполните: ```bash ssh -N -L 18789:127.0.0.1:18789 root@IP_сервера ``` После установки соединения откройте в браузере URL, полученный ранее: ```bash http://127.0.0.1:18789/?token=c6aaee5ae1fd9a7925892f4738f37deb01d2bd13d0c11199 ``` ## Обновление OpenClaw Для обновления OpenClaw выполните команду: ```bash openclaw update ``` Команда обновит OpenClaw и установленные плагины. Проверить текущую версию можно командой: ```bash openclaw --version ``` ## Ошибка при настройке Сейчас при установке OpenClaw может появиться ошибка: *Error: systemctl is-enabled unavailable: Command failed: systemctl --user is-enabled openclaw-gateway.service.* Она возникает из-за ошибки в установщике OpenClaw. Временное решение описано [в issues официального репозитория](https://github.com/openclaw/openclaw/issues/36008). Если вы получили эту ошибку, выполните следующие команды на сервере. Сначала задайте переменные окружения для пользовательского `systemd`: ```bash export XDG_RUNTIME_DIR=/run/user/$(id -u) export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus ``` Создайте временный сервис: ```bash cat > ~/.config/systemd/user/openclaw-gateway.service <<'EOF' [Unit] Description=OpenClaw Gateway (bootstrap placeholder) [Service] Type=oneshot ExecStart=/bin/true RemainAfterExit=yes [Install] WantedBy=default.target EOF ``` Активируйте сервис. Сначала обновите конфигурацию пользовательских сервисов `systemd`: ```bash systemctl --user daemon-reload ``` Затем включите сервис и запустите его: ```bash systemctl --user enable --now openclaw-gateway.service ``` После этого убедитесь, что сервис включен: ```bash systemctl --user is-enabled openclaw-gateway.service ``` После этого повторно запустите настройку: ```bash openclaw onboard ``` И выполните [шаги инструкции](https://timeweb.cloud/docs/unix-guides/openclaw#bazovaya-nastrojka) еще раз. На этапе «Config handling» выберите «Update values». # Установка Paperclip Source: https://timeweb.cloud/docs/unix-guides/paperclip [Paperclip](https://github.com/paperclipai/paperclip) — это open-source-платформа для управления командой AI-агентов. Она позволяет объединять агентов и модели в одной системе, распределять между ними роли и задачи, отслеживать выполнение работы, расходы и управлять процессами через веб-интерфейс. Проект подходит для сценариев, где требуется координация нескольких AI-инструментов в рамках одного рабочего процесса. ## Установка При создании облачного сервера на этапе «Образ» перейдите во вкладку «Маркетплейс», в ней выберите раздел «AI» и выберите сборку Paperclip. ![Scr 20260420 Mome](https://content.timeweb.com/assets/054c05ef-4b55-41b1-b432-e0aacd1558dd.png?width=2080&height=1644) После этого выберите регион размещения и конфигурацию сервера. Остальные параметры можно оставить по умолчанию. Подробное описание всех этапов доступно [в инструкции по созданию облачного сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/create-server). Закажите сервер, нажав кнопку «Заказать», и дождитесь завершения создания. После этого на вашу электронную почту будет отправлено письмо со ссылкой на скрипт автоматической настройки сервера. После создания сервера доступны два варианта настройки: - автоматическая настройка; - ручная настройка. ## Автоматическая настройка Автоматическая настройка выполняется с помощью готового скрипта. Он устанавливает и настраивает Paperclip, а также OpenCode для работы с AI-моделями. Такой способ предполагает использование [наших AI-агентов](https://timeweb.cloud/docs/ai-agents) или [AI Gateway](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway) в качестве провайдера OpenAI-совместимого API. Перед началом настройки убедитесь, что у вас [создан AI-агент](https://timeweb.cloud/docs/ai-agents/manage-agents/create) или выпущен [токен для использования AI Gateway](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway#sozdanie-api-klucha). Для запуска настройки подключитесь к серверу по SSH и выполните команду: ```bash curl -fsSL "https://st.timeweb.com/cloud-static/twc-paperclip-autoinstall.sh" -o /tmp/twc-paperclip-autoinstall.sh && chmod +x /tmp/twc-paperclip-autoinstall.sh && sudo /tmp/twc-paperclip-autoinstall.sh ``` После запуска скрипт последовательно запросит необходимые параметры. Укажите URL OpenAI API. Если планируется использование AI Gateway, введите: ```bash https://api.timeweb.ai/v1 ``` Если используется AI-агент, [URL можно найти](https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api#bazovyj-url) на вкладке «Дашборд» выбранного агента. Введите токен для выбранного способа подключения. Во время ввода символы отображаться не будут. Укажите модель в формате: ```bash вендор/имя_модели ``` Например: ```bash openai/gpt-5-mini ``` После ввода параметров скрипт: - проверит и установит зависимости; - создаст отдельного системного пользователя; - настроит OpenCode; - создаст пользователя администратора; - создаст проект в Paperclip. По завершении установки будет выведена ссылка на веб-интерфейс Paperclip, а также данные для входа под учетной записью администратора. ## Ручная настройка Рассмотрим ручную настройку Paperclip: создадим отдельного пользователя, зададим параметры сервера, настроим автозапуск сервиса и создадим учетную запись администратора. ### Создание пользователя Подключитесь к серверу по SSH и создайте отдельного пользователя, под которым будет запускаться Paperclip: ```bash sudo adduser paperclip ``` Добавьте пользователя в группу `sudo`: ```bash sudo usermod -aG sudo paperclip ``` Переключитесь на созданного пользователя: ```bash su paperclip ``` ### Первичная настройка Paperclip Запустите настройку Paperclip: ```bash paperclipai onboard ``` В процессе настройки: - выберите пункт «Quickstart»; - на вопрос «Start Paperclip now?» ответьте «No». После этого откройте настройку параметров сервера: ```bash paperclipai configure --section server ``` Укажите следующие значения: - Reachability — Custom; - Server port — `3100` (значение по умолчанию); - Auth mode — Authenticated; - Exposure profile — Public internet; - Bind host — `0.0.0.0`; - Public base URL — домен, который будет использоваться для доступа к сервису, либо `http://IP_сервера`, если домен не требуется. После завершения настройки проверьте, что Paperclip запускается корректно. Выполните: ```bash paperclipai run ``` Откройте в браузере адрес `http://ip_сервера:3100/`. Если появилось сообщение о необходимости создать учетную запись администратора, значит сервис работает корректно. Вернитесь в терминал и остановите процесс сочетанием клавиш `Ctrl + C`. ### Настройка автозапуска через systemd Чтобы Paperclip запускался автоматически после перезагрузки сервера, создайте systemd-сервис. Создайте файл конфигурации: ```bash sudo nano /etc/systemd/system/paperclip.service ``` Добавьте в него: ```bash [Unit] Description=Paperclip After=network.target [Service] User=paperclip WorkingDirectory=/home/paperclip ExecStart=/usr/bin/paperclipai run Restart=always RestartSec=5 [Install] WantedBy=multi-user.target ``` Сохраните файл, затем выполните следующие команды. Перечитайте конфигурацию `systemd` после создания нового сервиса: ```bash sudo systemctl daemon-reload ``` Добавьте сервис в автозагрузку, чтобы он запускался автоматически после перезагрузки сервера: ```bash sudo systemctl enable paperclip ``` Запустите Paperclip: ```bash sudo systemctl start paperclip ``` После этого снова откройте в браузере страницу по адресу `http://IP_сервера:3100`. Должно отображаться то же сообщение о необходимости создать администратора. ### Создание администратора Для создания первого администратора выполните команду: ```bash paperclipai auth bootstrap-ceo --force --base-url http://IP_сервера:3100 ``` Команда создаст одноразовую ссылку-приглашение для регистрации администратора. Пример ссылки: ```bash http://IP_сервера:3100/invite/pcp_bootstrap_523d3256ea12afbb5e1f9d7f805233e9aecce5db58c85b17 ``` Перейдите по полученной ссылке и нажмите кнопку «Sign in / create account». ![Scr 20260421 Mpwj](https://content.timeweb.com/assets/14bbcf4b-236a-403d-9adb-829881b83b43.png?width=1856&height=1014) _Страница авторизации в [Paperclip](https://paperclip.ing/)_ На следующем экране нажмите «Create one», чтобы создать нового пользователя. > [!NOTE] > Адрес электронной почты используется только как логин. Письма на него отправляться не будут. Заполните поля формы и нажмите «Create account». Если после создания аккаунта вы снова попали на страницу приглашения, откройте вручную адрес `http://IP_сервера:3100`. После входа откроется страница создания компании. Завершите первоначальную настройку и укажите параметры подключения к нужному провайдеру агентов. После завершения настройки откроется дашборд Paperclip. ![Scr 20260421 Mrue](https://content.timeweb.com/assets/386a84e3-fca1-410f-af33-0724e088fe77.png?width=2938&height=1672) _Интерфейс [Paperclip](https://paperclip.ing/)_ На этом ручная настройка Paperclip завершена. # Установка Hermes Agent Source: https://timeweb.cloud/docs/unix-guides/hermes [Hermes Agent](https://hermes-agent.nousresearch.com/) — это self-hosted AI-агент от Nous Research. Он работает на вашем сервере, взаимодействует с файлами и инструментами, выполняет команды в терминале и сохраняет историю сессий. Общаться с агентом можно через текстовый интерфейс в терминале. В Timeweb Cloud доступен готовый образ с установленным Hermes. После создания сервера останется подключить к нему AI-агента или AI Gateway. ## Создание сервера 1. В панели управления перейдите в раздел «[Облачные серверы](https://timeweb.cloud/my/cloud/servers)». 2. Нажмите «Создать» или «Добавить». 3. На вкладке «Маркетплейс» перейдите в раздел «AI» и выберите образ «Hermes». 4. Выберите регион и конфигурацию сервера, настройте остальные параметры. 5. Нажмите «Заказать», чтобы создать сервер. ![Установка Hermes](https://content.timeweb.com/assets/e31c92a8-2096-4f65-8cf8-89d38b09502d.png?width=2126&height=1600) Hermes и необходимые для его работы компоненты будут установлены автоматически при создании сервера. ## Выбор способа подключения К Hermes вы можете подключить AI-агента или AI Gateway. Если подключить AI-агента, можно использовать [базу знаний](https://timeweb.cloud/docs/ai-agents/manage-knowledge-bases). Hermes будет работать с одной моделью — той, которая выбрана в настройках агента. Чтобы сменить ее, измените модель в панели управления Timeweb Cloud. Если подключить AI Gateway, использовать базы знаний AI-агентов не получится. Зато в Hermes можно выбрать любую доступную в AI Gateway модель и переключать модели во время работы. Перед началом настройки подготовьте параметры подключения. ### Для AI-агента Понадобятся: - [Базовый URL агента](https://timeweb.cloud/docs/ai-agents/api-usage/openai-compatible-api#bazovyj-url). Он отображается на вкладке «Дашборд» в панели управления агентом. - [Ключ доступа](https://timeweb.cloud/docs/ai-agents/manage-agents/api-access-key). Если AI-агент еще не создан, воспользуйтесь [инструкцией](https://timeweb.cloud/docs/ai-agents/manage-agents/create). ### Для AI Gateway Понадобятся: - Базовый URL: `https://api.timeweb.ai/v1`. - [API-ключ AI Gateway](https://timeweb.cloud/docs/ai-agents/api-usage/ai-gateway#sozdanie-api-klucha). AI Gateway использует отдельные ключи, не связанные с ключами AI-агентов. ## Настройка подключения Подключитесь к серверу по SSH с вашего компьютера. Если используете macOS или Linux, откройте терминал, на Windows — PowerShell. В панели управления сервером перейдите на вкладку «Дашборд» и скопируйте команду из блока «Подключение по SSH». Вставьте ее в терминал и нажмите `Enter`. ![Данные для подключения к серверу](https://content.timeweb.com/assets/3c2b9758-9ed4-4040-ab5a-718271544b4b.png?width=2172&height=1952) При первом подключении появится запрос на добавление сервера в список доверенных: ```bash Are you sure you want to continue connecting (yes/no/[fingerprint])? ``` Введите `yes` и нажмите `Enter`, затем введите root-пароль из панели управления. При вводе пароль не отображается — это нормальное поведение терминала. После подключения автоматически откроется текстовый интерфейс Hermes. Вернитесь в командную строку, нажав `Ctrl+C`. Запустите скрипт настройки: ```bash curl -fsSL https://st.timeweb.com/cloud-static/twc-hermes-autoinstall.sh -o /tmp/twc-hermes-autoinstall.sh && bash /tmp/twc-hermes-autoinstall.sh ``` Скрипт запросит: 1. `Base URL` — базовый URL AI-агента или AI Gateway. 2. `API Key` — соответствующий ключ доступа. После ввода параметров скрипт проверит подключение и выведет выбранную конфигурацию. Проверьте значения. Если все указано правильно, введите `y` и нажмите `Enter`. ![Настройка провайдера в Hermes](https://content.timeweb.com/assets/a0c621d2-c5ea-4aea-9a19-1c368e83acff.png?width=1642&height=544) Скрипт добавит провайдера `twc-agent` и откроет интерфейс чата. ## Выбор модели в AI Gateway Этот шаг требуется только при подключении через AI Gateway. При использовании AI-агента Hermes обращается к модели, выбранной в настройках агента. В интерфейсе Hermes выполните команду: ```bash /model ``` Откроется окно выбора модели. Выберите провайдера `twc-agent`, затем — модель, которую хотите использовать. ![Выбор модели в Hermes](https://content.timeweb.com/assets/184cd3b6-1c65-42b2-8f37-caf431a7412a.png?width=2326&height=1202) _Интерфейс [Hermes Agent](https://hermes-agent.nousresearch.com/)_ Модель можно изменить во время работы той же командой `/model`. ## Работа с Hermes Чтобы вручную запустить текстовый интерфейс Hermes, выполните: ```bash hermes --tui ``` В интерфейсе можно отправлять запросы агенту, просматривать ответы и отслеживать выполнение инструментов. Полезные команды: | **Команда** | **Действие** | | --- | --- | | `/help` | Открыть список команд | | `/model` | Выбрать модель | | `/sessions` | Переключиться между открытыми сессиями или создать новую | | `/usage` | Посмотреть расход токенов и заполнение контекста | | `/new` | Начать новый диалог | | `/details` | Включить или скрыть подробности вызовов инструментов | Чтобы продолжить последнюю сессию после выхода, запустите: ```bash hermes --tui --continue ``` Чтобы открыть конкретную сохраненную сессию по идентификатору или названию, используйте: ```bash hermes --tui --resume "<идентификатор_или_название>" ``` Основные сочетания клавиш: | **Сочетание** | **Действие** | | --- | --- | | `Enter` | Отправить сообщение | | `Alt+Enter` или `Ctrl+J` | Добавить новую строку | | `Ctrl+C` | Прервать текущую операцию; повторное нажатие завершает Hermes | | `Ctrl+D` | Выйти из Hermes | После настройки отправьте агенту произвольный запрос и убедитесь, что он отвечает. Если используется AI Gateway, перед проверкой выберите модель командой `/model`. Другие команды и возможности интерфейса описаны в [официальной документации Hermes](https://hermes-agent.nousresearch.com/docs/user-guide/tui). # Установка Cloud Hosted Router Source: https://timeweb.cloud/docs/unix-guides/chr-install Cloud Hosted Router (CHR) — это версия операционной системы RouterOS от Mikrotik, предназначенная для работы в виртуализированной среде. CHR используется для создания виртуальных маршрутизаторов, балансировщиков нагрузки и VPN-шлюзов в облачных инфраструктурах. Для начала работы [зарегистрируйте аккаунт](https://timeweb.cloud/docs?auth=registrationAccount) в Timeweb Cloud, если у вас его еще нет. Вы получите доступ [в панель управления](https://timeweb.cloud/my/), где далее сможете создать виртуальный сервер. В качестве операционной системы можно выбрать любой Linux-дистрибутив, так как он будет использоваться только на этапе записи образа. В нашем примере используется Ubuntu 22.04. Минимальные системные требования CHR — 256 МБ оперативной памяти и 128 МБ дискового пространства, поэтому достаточно минимальной конфигурации. Остальные параметры сервера можно оставить по умолчанию. После создания сервера загрузите его [с диска восстановления](https://timeweb.cloud/docs/cloud-servers/manage-servers/boot-mode). Когда система загрузится в режиме восстановления, откройте вкладку «Консоль». Для открытия доступа по SSH сначала отключите файрвол командой: ```shell systemctl stop iptables ``` Затем установите пароль для пользователя `root`: ```shell passwd ``` Введите новый пароль дважды. После этого можно подключиться к серверу по SSH с использованием заданного пароля. Подключившись по SSH, примонтируйте `tmpfs` в `/tmp`: ```shell mount -t tmpfs tmpfs /tmp/ ``` Перейдите в директорию `/tmp`: ```shell cd /tmp ``` Скачайте образ CHR: ```shell wget https://download.mikrotik.com/routeros/7.20.8/chr-7.20.8.img.zip ``` Актуальные версии образа вы можете скачать [с официального сайта](https://mikrotik.com/download). Распакуйте архив: ```shell unzip chr-7.20.8.img.zip ``` Запишите образ на диск: ```shell dd if=chr-7.20.8.img of=/dev/sda bs=4M oflag=sync ``` На этом установка завершена. Перезагрузите сервер в обычном режиме. После загрузки откройте вкладку «Консоль» и авторизуйтесь с логином `admin`, оставив поле пароля пустым. Система предложит задать новый пароль. После этого можно подключаться к серверу по SSH, используя логин `admin` и установленный пароль. # Диагностика и решение проблем Source: https://timeweb.cloud/docs/unix-guides/troubleshooting-unix Инструкции по базовой диагностике и устранению неполадок на серверах с системами Unix. - [Базовая диагностика при проблемах в работе сайта](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/basic-diagnostics) - [Проблемы с базой данных](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/database-issues) - [Анализ дискового пространства: ncdu, du](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-space-analysis-ncdu-du) - [Данные о дисках: df, lsblk, parted, fdisk](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-data-df-lsblk-parted-fdisk) - [Контроль нагрузки и процессов: top, htop, atop](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/load-and-process-control-top-htop-atop) - [Завершение процессов OOM Killer](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/ending-processes-oom-killer) - [Переполнение inodes](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/inodes-overflow) - [Проверка файловой системы](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/file-system-check) - [Ускорение работы сайта: перенос MySQL в tmpfs](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/improving-site-performance-mysql-to-tmpfs) - [Устранение ошибки «Could not get lock /var/lib/dpkg/lock»](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/ustranenie-oshibki-could-not-get-lock-var-lib-dpkg-lock) - [Другие возможные проблемы](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/other-issues) # Базовая диагностика при проблемах в работе сайта Source: https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/basic-diagnostics Если в работе вашего сайта, размещенного на VDS, возникли неполадки (недоступность сайта, ошибки 500, 502, 504, ошибки базы данных и др.), рекомендуем перед обращением в службу технической поддержки выполнить базовую диагностику по инструкции ниже. Полученная информация поможет либо решить проблему самостоятельно, либо ускорить обработку обращения нашими специалистами. ## Доступен ли сервер из внешней сети? Проверить доступность сервера проще всего с помощью любого сервиса в сети, предоставляющего такую возможность: найти подобные сайты можно по запросам «ping online», «проверка доступности», «сервис ping» и так далее; их очень много и они бесплатны. Также проверку можно выполнить из командной строки вашего компьютера. В командной строке выполните: ```shell ping IP_адрес_сервера ``` Если сервер доступен, в выводе сразу начнет отображаться информация об отправке пакетов и получении ответов от сервера. Это выглядит примерно следующим образом: ![Ping](https://content.timeweb.com/assets/b2c9a78a-4662-40fc-9086-04a9f15bc6e6?width=499&height=169) Для остановки выполнения команды нажмите Ctrl+C. Если обмен пакетами не происходит — сервер недоступен. В этом случае попробуйте проверить сетевые настройки на сервере. Для этого необходимо [подключиться по SSH](https://timeweb.cloud/docs/unix-guides/ssh) или использовать веб-консоль в панели управления. Выполните команду: ```shell ifconfig ``` Пример вывода с корректными настройками: ![Ifconfig](https://content.timeweb.com/assets/d14f19f0-1723-43f5-8244-e4f000ce9e25?width=627&height=275) Если строка`inet addr` пустая, есть проблема с сетевыми настройками, которую можно попробовать решить [настройкой статического IP-адреса](https://timeweb.cloud/docs/unix-guides/adding-ip-addresses). ## Запущены ли службы для работы сайтов? Для проверки работы служб [подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) или используйте веб-консоль в панели управления. Проверки выполняются командой вида: ```shell service имя_службы status ``` Например, для Apache это будет команда: ```shell service apache2 status ``` или: ```shell service httpd status ``` Для Nginx: ```shell service nginx status ``` Для MySQL: ```shell service mysql status ``` ```shell service mysqld status ``` Для MariaDB: ```shell service mariadb status ``` Примеры запущенных служб: ![Running](https://content.timeweb.com/assets/918768de-0aeb-4ddf-a0d5-4b98eec7abdd?width=652&height=512) Если в выводе не фигурирует слово `running`, служба не запущена. В этом случае в первую очередь необходимо попытаться запустить службу. Это выполняется командой вида: ```shell service имя_службы start ``` Например, для Apache2: ```shell service apache2 start ``` Или: ```shell service httpd start ``` Nginx: ```shell service nginx start ``` MySQL: ```shell service mysql start ``` ```shell service mysqld start ``` MariaDB: ```shell service mariadb start ``` После запуска службы повторно проверьте работу сайтов. Если проблема сохраняется, переходите к следующим проверкам. ## Состояние дискового пространства Общую информацию можно получить командой: ```bash df -h ``` В выводе будут данные о размере диска и доступном объеме. Если дисковое пространство исчерпано, необходимо принять меры: [расширить диск](https://timeweb.cloud/docs/unix-guides/disk-resizing) или удалить ненужные файлы. Для работы с дисковым пространством можно использовать утилиты `ncdu` и `du`. Подробнее о работе с ними — в статье [Анализ дискового пространства: ncdu, du](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-space-analysis-ncdu-du). ## Состояние inodes Если индексные дескрипторы — inodes — исчерпаны, это тоже может быть причиной неполадок. В работе сервера начнут возникать ошибки и появляться уведомления о недостаточном дисковом пространстве. Подробнее о диагностике и устранении проблемы см. в статье [Переполнение inodes](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/inodes-overflow). ## Наличие необходимых прав для директорий с логами Необходимо проверить, назначены ли права на запись для директорий, в которые пишутся логи основных служб сервера. Это директории: ```shell /var/log/mysql/ /var/log/nginx/ /var/log/apache2/ или /var/log/httpd/ ``` Проверить наличие нужных прав можно командой: ```shell ls -l /var/log/ ``` Пример вывода: Здесь мы видим, что у интересующих нас каталогов установлены корректные права, а именно — у владельца есть права на запись, чтение и исполнение (rwx): ```shell drwxr-x--- 2 root adm 4096 Aug 16 09:26 apache2 drwxrwxr-x 2 mysql adm 4096 Aug 16 09:26 mysql drwxr-xr-x 2 root adm 4096 Aug 16 09:27 nginx ``` Если у каталога нет нужных прав, их можно установить командой `chmod`: ```shell chmod -R 755 /путь/к/каталогу/ ``` Например: ```shell chmod -R 755 /var/log/nginx/ ``` В данном случае будут установлены права 755, т.е. rwxr-xr-x, то есть полный набор прав для владельца и права на чтение и исполнение — для остальных. Если при проверке вы видите, что директория с логами той или иной службы отсутствует, ее необходимо создать командой mkdir и установить нужные права, например: ```shell mkdir /var/log/mysql/ chmod -R 775 /var/log/mysql/ ``` После того, как выполнены проверки дискового пространства, inodes и прав, повторно запустите службы и проверьте работу сайта. Если часть служб по-прежнему не запускается или сохраняются проблемы в работе сайта, создайте обращение в техническую поддержку и сообщите в нем полученную в ходе диагностики информацию. # Проблемы с базой данных Source: https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/database-issues В статье рассказываем про возможные неполадки в работе базы данных и способы их устранения. ## Недоступность базы данных [Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и выполните следующие проверки. 1. Проверьте, запущена ли служба MySQL: ```shell service mysql status ``` Пример вывода для запущенной службы: ![Running (1)](https://content.timeweb.com/assets/a5901850-3163-472f-9a8e-407f553db4f6?width=650&height=196) Если в выводе отсутствует слово running, служба не запущена. В этом случае необходимо попытаться ее запустить: ```shell service mysql start ``` После проверьте работу сайта. Если проблема сохраняется, переходите к следующей проверке. 2. Проверьте состояние дискового пространства. В первую очередь выполните команду ниже, чтобы просмотреть общий и занятый объем на диске: ```shell df -h ``` Важно, чтобы доступное пространство было именно на основном разделе. Если пространство исчерпано, необходимо [расширить диск](https://timeweb.cloud/docs/unix-guides/disk-resizing) или освободить место на нем. Для работы с дисковым пространством рекомендуем использовать [утилиты ncdu или du](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-space-analysis-ncdu-du). Если на диске достаточно свободного места, но проблема сохраняется, [проверьте состояние inodes](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/inodes-overflow). [Свяжитесь с нами](https://timeweb.cloud/my/support/help-problem), если вам не удается решить проблему самостоятельно. ## Повреждены таблицы БД (Table is marked as crashed) При возникновении ошибок вида «Warning: Table ... is marked as crashed» необходимо выполнить восстановление таблиц. Если на сервере установлен phpMyAdmin, можно выполнить восстановление с его помощью. Для этого перейдите в интерфейс PMA и кликните на нужную базу данных в меню слева. Отметьте в списке те таблицы, которые нужно восстановить (то есть таблицы, имена которых фигурируют в ошибках). В самом низу страницы нажмите на выпадающее меню «С отмеченными» и выберите вариант «Восстановить». Можно обойтись и без phpMyAdmin, выполнив необходимые действия при [подключении по SSH](https://timeweb.cloud/docs/unix-guides/ssh). Для восстановления одной таблицы выполните команду: ```shell mysqlcheck -r имя_базы имя_таблицы -uroot -p ``` Для восстановления всех таблиц в базе используйте: ```shell mysqlcheck -r имя_базы -uroot -p ``` Вы также можете выполнить проверку всех таблиц в базе с помощью команды: ```shell mysqlcheck -r -A -uroot -p ``` ## Ошибка 2006: MySQL server has gone away Ошибка MySQL server has gone away означает, что сервер закрыл соединение, что происходит, как правило, в двух случаях: превышение таймаута ожидания или получение сервером слишком большого пакета. В обоих случаях для решения проблемы потребуется внести правки в конфигурационный файл MySQL. Это можно сделать при [подключении к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) или с помощью веб-консоли в панели управления. Конфигурационный файл может располагаться по различным путям, например: ```shell /etc/my.cnf /etc/mysql/my.cnf /etc/mysql/mysql.conf.d/mysqld.cnf ``` Чтобы определить, в какой файл необходимо вносить изменения, можно использовать команду вида: ```shell grep -Rl 'имя_параметра' /etc/* ``` Например: ```shell grep -Rl 'wait_timeout' /etc/* grep -Rl 'max_allowed_packet' /etc/* ``` С ее помощью можно выяснить, в каких файлах прописан интересующий нас параметр, и изменить в них его значение. ### **Таймаут** Чтобы увеличить таймаут ожидания, необходимо скорректировать значение параметра `wait_timeout`. Откройте конфигурационный файл с помощью редактора (укажите корректный путь к файлу): ```shell nano /etc/mysql/my.cnf ``` Измените значение параметра `wait_timeout` на более высокое. Значение указывается в секундах, т.е. чтобы увеличить время ожидания, например, до 10 минут, необходимо указать 600: ```shell wait_timeout = 600 ``` После перезапустите службу MySQL. В Debian/Ubuntu: ```shell service mysql restart ``` В CentOS: ```shell service mysqld restart ``` ### **Размер пакетов** В этом случае можно скорректировать максимально допустимый размер пакетов, увеличив параметр `max_allowed_packet`. Откройте файл конфигурации (укажите корректный путь к файлу): ```shell nano /etc/mysql/my.cnf ``` Измените значение параметра `max_allowed_packet` на более высокое (значение указывается в мегабайтах): ```shell max_allowed_packet = 64M ``` И перезапустите службу: В Debian / Ubuntu: ```shell service mysql restart ``` В CentOS: ```shell service mysqld restart ``` ## Ошибка 1040: Too many connections Появление ошибки «Too many connections» говорит о том, что исчерпан лимит подключений к базе данных. Как правило, проблема либо в медленных запросах, которые выполняются слишком долго (в этом случае требуется оптимизация кода), либо в числе одновременных подключений. В этом случае можно попробовать решить проблему увеличением лимита подключений (параметр `max_connections`) в конфигурационном файле MySQL. В пункте выше было описано, как определить расположение файла `my.cnf`. После откройте файл в редакторе, указав корректный путь: ```shell nano /etc/mysql/my.cnf ``` И замените значение параметра на более высокое, например: ```shell max_connections = 200 ``` После перезапустите службу: В Debian / Ubuntu: ```shell service mysql restart ``` В CentOS: ```shell service mysqld restart ``` ## Ошибка 1292: Incorrect date value При попытке добавить данные в таблицу MySQL: ```shell ERROR 1292 (22007): Incorrect date value: '0000-00-00' for column 'columnname' at row 1 ``` Из-за этой ошибки **может нарушаться работа импорта в 1С**. Для решения проблемы необходимо: 1. Открыть файл `/etc/mysql/my.cnf`: ```shell nano /etc/mysql/my.cnf ``` 2. В строке, начинающейся с `sql-mode=`, удалить следующие значения: ```shell NO_ZERO_IN_DATE NO_ZERO_DATE STRICT_ALL_TABLES ``` 3. Выполнить перезагрузку mysql-сервера: ```shell sudo service mysql restart ``` **Примечание:** Если строка вида `sql-mode=` **отсутствует**, необходимо: 1. В файл `/etc/mysql/my.cnf` после параметра `[mysqld]` добавить строку: ```shell sql-mode="ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" ``` 2. Выполнить перезагрузку mysql-сервера: ```shell sudo service mysql restart ``` # Анализ дискового пространства: ncdu, du Source: https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-space-analysis-ncdu-du При работе с сервером важно контролировать занятый объем на диске. Если дисковое пространство окажется занято полностью, в работе VDS начнут возникать ошибки (ошибка 502, удаление файлов при их редактировании, повреждение базы данных). Чтобы этого избежать, необходимо своевременно увеличивать доступный объем, удаляя ненужные файлы или [расширяя сам диск](https://timeweb.cloud/docs/unix-guides/disk-resizing). Для того, чтобы проверить, чем занято дисковое пространство на сервере, можно воспользоваться такими утилитами, как `ncdu` и `du`. Работать с ними достаточно просто. При анализе также может потребоваться проверить данные о файловой системе и inodes (подробнее об этом в последнем разделе этой статьи). ## ncdu Утилита `ncdu` — один из самых удобных инструментов для анализа дискового пространства. Она имеет псевдографический интерфейс, что значительно упрощает работу с ней. `ncdu` не предустановлена в дистрибутивах Unix по умолчанию, но ее легко можно установить командами ниже. Для Debian / Ubuntu: ```shell apt install ncdu ``` Для CentOS: ```shell yum install ncdu ``` > [!NOTE] > Если дисковое пространство уже переполнено и установить `ncdu` невозможно, можно сначала воспользоваться утилитой `du` (см. [ниже](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-space-analysis-ncdu-du#du)), удалить несколько файлов, чтобы освободить немного места, после чего поставить `ncdu` и дальше продолжить работать с ней. Для того, чтобы просканировать и вывести данные о конкретной директории, воспользуйтесь командой: ```shell ncdu имя_каталога ``` Например, чтобы вывести информацию о корневом каталоге, выполните: ```shell sudo ncdu / ``` ![Ncdu1](https://content.timeweb.com/assets/f0c235a1-f156-44d6-aa3c-1177ea2761a7?width=732&height=409)Формат вывода Количество символов `#` помогает определить, какие файлы и каталоги занимают больше всего места. Крайний левый столбец может содержать дополнительные обозначения (например, на скриншоте выше — пометки `e`): - `!` — ошибка при чтении каталога; - `.` — ошибка при чтении подкаталога, т.е. указанный размер может быть некорректным; - `<` — объект исключен из подсчета (с помощью опции `--exclude`); - `>` — объект из другой файловой системы; - `@` — объект не является файлом или каталогом (символическая ссылка, сокет); - `H` — объект уже был учтен (жесткая ссылка); - `e` — пустой каталог. ### **Навигация** Для перемещения по директориям используются клавиши со стрелками (вверх и вниз). Стрелка вправо или Enter — войти в выбранную директорию. Стрелка влево — вернуться в предыдущую директорию. ### **Доступные функции интерфейса** С помощью следующих клавиш можно управлять полученным выводом: `n` — упорядочить элементы по имени (в прямом и обратном порядке); `s` — упорядочить элементы по размеру (в прямом и обратном порядке); `g` — переключение между отображением «графика» (####) и объёма в процентах: ![Ncdu3](https://content.timeweb.com/assets/fd6a5e94-6af4-4804-97b1-007567a21da2?width=728&height=410) `a` — переключение между отображением реального размера файлов и объемом занимаемого пространства на диске; `e` — скрыть/показать скрытые файлы и папки; `?` — вызвать краткую справку; `d` — удалить выбранный элемент (перед удалением будет запрошено подтверждение действия); `i` — вывести информацию о выбранном элементе: ![Ncdu2](https://content.timeweb.com/assets/22c495c6-ed3f-430b-8032-21bc5d6cca0c?width=732&height=410) `q` — выйти. ### **Ключи ncdu** Также при запуске утилиты можно использовать дополнительные ключи для `ncdu`: `-h` (т.е. команда вида `ncdu -h`) — вывод краткой справки; `-q` — «тихий режим», с обновлением данных каждые 2 секунды. Тихий режим позволяет снизить объем передачи данных при удаленных подключениях; `-x` — учет при сканировании только файлов и директорий одной и той же файловой системы. Например, если есть директория `home/user/site.com`, и пространство с файлами и директориями внутри нее примонтировано из директории на другом диске (`/mnt/disk2/site.com`), то по умолчанию `ncdu` посчитает, что директория `/home/user/site.com` занимает пространство на основном диске, хотя на самом деле — на диске `disk2`. Использование ключа `-x` позволит отразить действительное положение дел на основном диске. `-r` — режим «только для чтения», в данном режиме невозможно удаление файлов; `--exclude` — исключение файла или типа файлов. `ncdu` отобразит эти файлы в общем списке, но не будет учитывать их при подсчете занятого пространства: ```shell ncdu --exclude=/путь/к/каталогу/*что_исключаем* ``` Например: ``` ncdu --exclude=/home/user/*.html* ``` `-о` — сохранить результаты в файл: ```shell ncdu / -o путь/к/файлу.txt ``` ## du Утилита `du` (от англ. disk usage) присутствует во всех UNIX-дистрибутивах по умолчанию и позволяет получить общую информацию о занятом месте. При выполнении команды она выводит объем пространства, занимаемого каждым файлом и каталогом в текущем каталоге: ![Du11](https://content.timeweb.com/assets/3f7acdf6-3447-4c05-a076-57a236ef2839?width=373&height=137) ### **Ключи du** Для вывода занятого объема в читаемом виде (в килобайтах, мегабайтах и т.д.) требуется ключ `-h`, мы будем использовать его во всех командах ниже. - Например, можно начать с оценки размера всех директорий в корневой файловой системе. Для этого добавим ключи `-s` (для вывода итогового размера указанной директории) и `-c` (для вывода «итого»): ```shell du -shc /* ``` ![Du22](https://content.timeweb.com/assets/b9abc3cb-bbe9-40ab-87e0-e55b2688434c?width=739&height=545) - Полезный и удобный способ подсчета и сортировки: ```shell du -sch ./*|sort -hr ``` ![Du8](https://content.timeweb.com/assets/d0e20f6e-5c62-43a3-b9fb-5332ea40a56d?width=427&height=124) - Чтобы узнать размер конкретной директории, используйте ключ `-s` и указывайте путь к нужной директории: ```shell du -sh /путь/к/директории ``` ![Du33](https://content.timeweb.com/assets/27381acf-d326-49d6-80c0-c3fe8614775c?width=381&height=38) - Для вывода размера всех файлов и подкаталогов в каталоге используйте ключ `-a`. ```shell du -ah /путь/к/директории ``` ![Du44](https://content.timeweb.com/assets/1c1a9d36-8833-4d8c-ad7d-8d9f0c437c70?width=594&height=392) - Для вывода суммарного объема всех показанных в выводе элементов используется ключ `-c`: ```shell du -ch /путь/к/директории ``` ![Du55](https://content.timeweb.com/assets/ce7cf186-8309-418e-bd4c-0a9c18a8fad2?width=513&height=258) - Можно использовать опцию `--exclude`**,** чтобы исключить из вывода конкретный тип файлов. ```shell du -ah --exclude="*что_исключаем*" ``` Например: ```shell du -ah --exclude="*.html*" ``` ![Du9](https://content.timeweb.com/assets/1d8ccea3-bfc8-4a57-b010-a09d488bbe38?width=581&height=308) - Еще одна полезная опция — вывод времени последнего изменения файла. Для этого используется `--time`: ```shell du -ah --time /путь/к/директории ``` ## Нюансы ### Несоответствие данных du, ncdu и ПО 1. Иногда можно столкнуться с ситуацией, когда утилиты `du` и `ncdu` показывают меньший объем, чем выводится в панели управления; либо же вы удаляете файлы, но ваше ПО сообщает, что свободного пространства по-прежнему недостаточно. В этом случае для проверки стоит воспользоваться командой `df`, которая позволит получить данные именно о файловой системе (в то время как `du` и `ncdu` показывают именно физический объем на диске): ```shell df -h ``` Вероятнее всего, в выводе будет информация о занятости 100% пространства. Это связано с тем, что иногда при удалении файла он остается доступен какому-либо запущенному процессу, из-за чего файловая система по-прежнему учитывает его в общем объеме занятого пространства. Чтобы решить проблему, нужно определить, какими процессами все еще используются удаленные файлы: ```shell lsof | grep '(deleted)' ``` После чего перезапустить эти процессы: ``` systemctl restart имя_сервиса ``` Например, в выводе ниже этот процесс — httpd, и именно его нужно перезапустить: ![Deleted](https://content.timeweb.com/assets/eeccd7fa-c458-4229-86ad-9172a2316b50?width=470&height=81) 2. Если по данным панели управления и утилит `du` и `df` свободное место в наличии, однако ваше ПО или CMS по-прежнему сообщают о недостаточном объеме пространства, необходимо проверить [наличие свободных inodes](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/inodes-overflow). # Данные о дисках: df, lsblk, parted, fdisk Source: https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-data-df-lsblk-parted-fdisk Имена дисков на виртуальных серверах имеют вид `vd*` или `sd*`, где вместо символа `*` идет буква от `a` до `z`. Буква зависит от номера диска в системе. На основном (первом) диске всегда установлена операционная система, и он имеет имя `vda` или `sda`. Дополнительный диск может быть добавлен в любой момент, и на нем могут располагаться любые данные. Просмотреть имена дисков, а также дополнительную информацию о них, можно с помощью различных команд, например, `df -h`, `lsblk`, `parted -l`, `fdisk -l`. ## df -h Данная команда позволяет вывести информацию только о примонтированных файловых системах, включая те, которые не являются дисковыми разделами. В выводе отображается общий размер, использованный и доступный объем (в т.ч. в процентах), точка монтирования. ```shell df -h ``` ```shell Filesystem Size Used Avail Use% Mounted on udev 210M 0 210M 0% /dev tmpfs 51M 1.2M 50M 3% /run /dev/vda1 3.9G 1.2G 2.6G 32% / tmpfs 255M 0 255M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 255M 0 255M 0% /sys/fs/cgroup /dev/vdb1 4.8G 10M 4.6G 1% /mnt/disk2 tmpfs 51M 0 51M 0% /run/user/0 ``` ## lsblk Выводит информацию о дисках и созданных на них разделах, их размерах, точке монтирования. ```shell lsblk ``` ```shell NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 202:0 0 5G 0 disk |-vda1 202:1 0 4G 0 part / |-vda2 202:2 0 1K 0 part `-vda5 202:5 0 1022M 0 part [SWAP] vdb 202:16 0 5G 0 disk `-vdb1 202:17 0 5G 0 part /mnt/disk2 ``` ## parted -l Позволяет получить сведения о дисках, разделах, их размерах в легко читаемом формате, файловой системе. Также является удобным инструментом для поиска примонтированного снапшота: в примере ниже снапшот выводится как диск `/dev/vdc` и имеет структуру, аналогичную диску `/dev/vda`. ```shell parted -l ``` ```shell Model: Xen Virtual Block Device (vd) Disk /dev/vda: 5369MB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 4295MB 4294MB primary ext4 2 4296MB 5368MB 1072MB extended 2 4296MB 5368MB 1072MB extended 2 4296MB 5368MB 1072MB extended Model: Xen Virtual Block Device (vd) Disk /dev/vdb: 5369MB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 5369MB 5368MB primary ext4 Model: Xen Virtual Block Device (vd) Disk /dev/vdc: 5369MB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 4295MB 4294MB primary ext4 2 4296MB 5368MB 1072MB extended 5 4296MB 5368MB 1072MB logical linux-swap(v1) ``` ## fdisk -l Команда, близкая по функциональности к `parted -l`, однако, предоставляющая более обширный вывод разделов (с дисками `/dev/ram*`), что может затруднять восприятие. В целом также позволяет просмотреть размеры дисков и разделов. ```shell fdisk -l ``` ```shell Disk /dev/vda: 5 GiB, 5368709120 bytes, 10485760 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xfb148422 Device Boot Start End Sectors Size Id Type /dev/vda1 2048 8388607 8386560 4G 83 Linux /dev/vda2 8390654 10483711 2093058 1022M 5 Extended /dev/vda5 8390656 10483711 2093056 1022M 82 Linux swap / Solaris Disk /dev/vdb: 5 GiB, 5368709120 bytes, 10485760 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x6b14d070 Device Boot Start End Sectors Size Id Type /dev/vdb1 2048 10485759 10483712 5G 83 Linux ``` # Контроль нагрузки и процессов: top, htop, atop Source: https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/load-and-process-control-top-htop-atop Каждый запущенный на сервере процесс оказывает нагрузку, и если ресурсов сервера становится недостаточно, могут возникать проблемы: медленная работа сайта, задержки в выполнении скриптов и так далее. Проанализировать, что именно нагружает сервер, можно с помощью специальных утилит. Их довольно много; в статье мы рассмотрим три из них: В целом они довольно похожи; работа с `htop` может быть немного удобнее за счет интерактивности; при этом `top` предустановлена во всех дистрибутивах Linux и не требует отдельной установки; `atop` отличается возможностью ведения логов. При медленной работе сайта дополнительно рекомендуем воспользоваться сервисом [PageSpeed Insights](https://pagespeed.web.dev/) от Google, который анализирует скорость загрузки страниц и сообщает, каким образом можно оптимизировать работу сайта. Также можно попытаться оптимизировать работу сайта за счет переноса каталога [временных файлов MySQL в tmpfs](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/improving-site-performance-mysql-to-tmpfs). ## top Как было сказано выше, утилита `top` предустановлена в UNIX-системах, поэтому для запуска вам достаточно подключиться к серверу по SSH и выполнить команду `top`. Вывод утилиты выглядит следующим образом: ![Top](https://content.timeweb.com/assets/f1701b00-1856-4486-8a53-29d267b35408?width=646&height=630) В верхней части выводится информация о системе, ниже — список процессов. Вывод обновляется каждые 2 секунды. Самые «жадные» до ресурсов процессы, оказывающие самую большую нагрузку на процессор, будут выведены вверху списка. ### **Сведения о системе** Слева вверху указано текущее время системы, далее: `Up` — время работы системы с последнего запуска. `User` — количество текущих пользователей. `Load average` — средняя нагрузка на сервер: отображаются значения за одну, пять и 15 минут назад. `Tasks` — общее количество запущенных процессов в разных статусах (`running` — выполняемые; `sleeping` — в ожидании; `stopped` — остановленные; `zombie` — «зомби», дочерние процессы, ожидающие завершения родительского процесса). `Cpu(s)` — процент времени процессора, затраченного на выполнение процессов, в том числе: `us` — пользовательские процессы (высокое значение данного показателя может указывать, в том числе, на проблемы в коде сайта, необходимость его оптимизации); `sy` — процессы ядра; `id` — неиспользуемые ресурсы (чем выше этот показатель, тем лучше); `wa` — операции ввода/вывода, т.е. дисковые операции. `Mem`, `Swap` — сведения об использовании оперативной памяти (`total` — общий объем, `free` — объем свободной памяти, `used` — объем использованной памяти). ### **Сведения о процессах** По умолчанию процессы выстроены в таблице по размеру нагрузки на процессор, от большего значения к меньшему. Обозначения столбцов: `PID` — идентификатор процесса; `USER` — пользователь, запустивший процесс; `PR` — приоритет процесса; `NI` — измененный приоритет (присвоенный пользователем с помощью команды `nice`); `VIRT` — объем используемой виртуальной памяти (здесь выводится тот объем памяти, который был запрошен процессом, даже если фактически используется меньше); `RES` — объем используемой оперативной памяти (в данном случае, если процесс запросил 50Мб памяти, а использует 10Мб, будет выведено 10Мб); `SHR` — объем памяти, разделяемой с другими процессами (т.е. память, которая может быть использована другими процессами); `S` — статус процесса (`running` — запущен; `sleeping` — в ожидании; `zombie` — процесс-«зомби»); `%CPU` — процент использования процессорного времени; `%MEM` — процент использования оперативной памяти; `TIME` — общее время работы процесса; `COMMAND` — имя процесса (команда, которой был запущен процесс). ### **Управление** Для работы с утилитой `top` используются следующие клавиши: **Пробел** — обновить вывод **M** — сортировка по используемой памяти **P** — сортировка по нагрузке на процессор (используется по умолчанию) **T** — сортировка по времени работы процесса **A** — сортировка по максимальному потреблению различных ресурсов **u** — сортировка по имени пользователя (потребуется ввести имя пользователя) **k** — завершить процесс (потребуется указать его идентификатор, PID) **n** — изменить количество процессов в выводе (потребуется указать нужное количество) **c** — вывести полный путь запущенного процесса (столбец COMMAND) **h** — вывод справки **q** — выход из программы ## htop В отличие от `top`, утилиту `htop` сначала необходимо установить на сервер: **Ubuntu / Debian:** ```shell apt install htop ``` **CentOS:** ```shell dnf install htop ``` И после запустить: ```shell htop ``` Вывод команды выглядит следующим образом: ![Htop](https://content.timeweb.com/assets/825bf9e7-e21e-447c-a2e5-9da079dc8644?width=1366&height=737) Аналогично выводу `top`, в верхней части представлена информация о системе, ниже — список процессов. Значения столбцов в `htop` те же, что в `top` (они описаны выше). Сверху слева вы можете видеть данные о нагрузке каждого ядра процессора, объем занятой памяти, сведения о количестве процессов, значения load avearage (средней нагрузки) за последние 1, 5 и 15 минут и аптайм системы. По умолчанию процессы отсортированы по уровню нагрузки на процессор, от большего к меньшему. Чтобы отсортировать их по занятой памяти (или любому другому параметру), просто кликните на название нужного столбца, например MEM. Для обратной сортировки (от меньшего к большему) достаточно кликнуть на тот же столбец еще раз. Также для управления сортировкой можно использовать клавиши **M** (сортировка по памяти), **P** (по процессору), **T** (по времени), аналогично утилите top. Дополнительно используются: **Пробел** — отметить процесс (таким образом можно помечать процессы для групповой операции с ними, например, завершения). **u** — вывести процессы конкретного пользователя. Для управления используются клавиши F1 – F10: **F1** — вывод справки **F2** — настройка вывода (добавление, удаление столбцов, отображение расширенной информации в верхнем блоке и пр.) **F3** — поиск процессов **F4** — фильтрация процессов (вывод процессов, имеющих в названии указанное слово) **F5** — вывод дерева процессов (родительские и дочерние процессы) **F6** — изменить тип сортировки **F7 / F8** — повышение / понижение приоритета **F9** — завершение процесса (в отличие от `top`, не требуется указание PID — просто выделите с помощью мыши или клавиатуры нужный процесс и нажмите F9. Для подтверждения завершения процесса нажмите Enter, для отмены — Esc). **F10** — выход из программы Функции для каждой клавиши могут изменяться, в зависимости от того, в каком меню программы вы находитесь, при этом доступные действия по соответствующим клавишам будут отображаться внизу окна, что упрощает работу с утилитой. ## atop Основным преимуществом утилиты `atop` является функция ведения логов. Благодаря этому можно не только контролировать нагрузку в текущий момент, но и отслеживать работу процессов за прошедшие дни, чтобы диагностировать плавающие ошибки, которые сложно «поймать» при мониторинге в реальном времени. Утилиту необходимо установить на сервер: **Ubuntu / Debian:** ```shell apt install atop -y ``` **CentOS:** ```shell dnf install atop -y ``` Также рекомендуем добавить `atop` в автозагрузку: ```shell systemctl enable atop ``` Запустите утилиту: ```shell atop ``` Вывод выглядит примерно следующим образом: ![Atop](https://content.timeweb.com/assets/c1072556-299e-4a07-8c13-f002af0ed032?width=894&height=583) В верхней части отображается информация о системе и нагрузке на ключевые компоненты: процессор, ядра, память, сеть. Ниже выводится список процессов. Для управления выводом можно использовать: **m** — сортировка по используемой памяти **d** — сортировка по нагрузке на диск **u** — нагрузка по пользователям **v** — подробная информация по процессам **i** — изменение интервала обновления данных (по умолчанию 10 секунд) **g** — вернуть вывод по умолчанию **n** — сортировка процессов по нагрузке на сеть (доступна при наличии установленного патча ядра) Сочетания клавиш с Shift выстроят текущий список процессов по соответствующим параметрам: - **Shift + m** — сортировка процессов памяти - **Shift + с** — сортировка по потреблению CPU (по умолчанию) - **Shift + d** — сортировка по использованию диска - **Shift + n** — сортировка по использованию сети ### **Логи atop** По умолчанию atop собирает сведения о состоянии системы каждые 10 минут и сохраняет их в файл лога, располагающийся в директории `/var/log/atop`. Чтобы просмотреть лог за сегодня, выполните: ```shell atop -r ``` Полезные клавиши: - **t** — перейти вперед по времени - **Shift + t** — перейти назад по времени Файл за конкретный день имеет имя `atop_ГГГГММДД`. Чтобы просмотреть лог за нужный день, используйте команду `atop -r` и укажите путь к файлу, например: ```shell atop -r /var/log/atop/atop_20250227 ``` Изменить настройки ведения лога можно в конфигурационном файле `atop`, который размещается по пути `/etc/default/atop` или `/etc/sysconfig/atop` — в CentOS. ```shell # Интервал создания снимка нагрузки сервера, в секундах: INTERVAL=600 # Путь к директории с логами: LOGPATH="/var/log/atop" # Имя файла логов OUTFILE="$LOGPATH/daily.log" ``` Например, для того, чтобы `atop` делал снимок нагрузки раз в минуту, а не раз в 10 минут, укажите интервал 60. После внесения изменений перезапустите `atop`: ```shell systemctl restart atop.service ``` # Завершение процессов OOM Killer Source: https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/ending-processes-oom-killer OOM Killer — механизм ядра Linux, который при исчерпании доступной памяти принудительно завершает отдельные процессы на сервере для освобождения RAM. Освободившаяся память передается ядру ОС, а после перенаправляется тому процессу, которому ее было недостаточно. OOM Killer использует определенный набор правил для выбора процесса, который нужно «убить». В целом, в первую очередь будут завершены недавно запущенные пользовательские процессы, которые требуют большого объема памяти и/или имеют множество дочерних процессов; в последнюю очередь будут завершаться системные процессы пользователя root, запущенные значительное время назад. В связи с тем, что OOM killer «убивает» процессы с помощью `SIGKILL`, что не дает возможности корректного завершения процессов, сохранения данных и пр., частое срабатывание этого механизма может приводить к серьезным последствиям в работе системе. ## Что делать при срабатывании OOM killer - Если вы замечаете такое поведение только при больших нагрузках, например, при проведении работ по оптимизации сервера и др., можно временно отключить антивирусное ПО. Это позволит освободить до нескольких сотен мегабайт оперативной памяти, чтобы необходимые процессы были успешно выполнены. Разумеется, это снижает безопасность вашего сервера, поэтому рекомендуется использовать этот вариант только в качестве временной меры. - Если OOM killer срабатывает регулярно, необходимо проанализировать работу сервера, баз данных, сайтов и провести оптимизацию, чтобы устранить причину проблемы. - Если сервер оптимизирован, но памяти постоянно не хватает, увеличьте ее объем или перейдите на тариф с большим количеством RAM (см. [Тариф и конфигурация](https://timeweb.cloud/docs/cloud-servers/manage-servers/server-configuration)). - Также есть возможность установить приоритет определенному процессу, чтобы запретить OOM killer его завершать. Значение приоритета хранится в файле `/proc/$PID/oom_adj`, который создается при запуске каждого процесса. Для установки приоритета необходимо узнать PID конкретного процесса, после чего воспользоваться командой: ```shell echo -17 > /proc/PID_процесса/oom_adj ``` Можно использовать название процесса; на примере sshd: ```shell pgrep -f "/usr/sbin/sshd" | while read PID; do echo -17 > /proc/$PID/oom_adj; done ``` Устанавливаемый приоритет в данном случае — -17. Более безопасный вариант — использовать приоритет -15. В этом случае процесс будет одним из последних, которые OOM killer завершит, но при этом отсутствует полный запрет на завершение, который в критических ситуациях может привести к kernel panic. # Переполнение inodes Source: https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/inodes-overflow Inodes, или индексные дескрипторы («описатели») — это структуры данных в системах Unix, используемые для хранения информации о файлах и каталогах. Так как дескрипторы являются, по сути, данными о данных, их также называют метаданными. Inodes хранят такие свойства файла, как его размер, информацию о владельце, группу, к которой принадлежит файл, права доступа, счетчик жестких ссылок, место, где на данный момент располагается содержимое файла, временные отметки (время последней модификации файла, последнее время доступа к файлу и т.д.) и пр. Другими словами, дескриптор содержит в себе всю информацию о файле, кроме его имени и содержимого. Чем больше создано файлов, тем больше индексных дескрипторов занято. Чрезмерное количество файлов (например, файлы кэша или почтовая очередь) может привести к отсутствию свободных inodes и, как следствие, к ошибкам в работе сервера и сообщениям о недостаточном дисковом пространстве, несмотря на его фактическое наличие. Решать проблему потребуется удалением ненужных файлов или директорий. Получить информацию о количестве использованных и занятых дескрипторов можно при [подключении по SSH](https://timeweb.cloud/docs/unix-guides/ssh), с помощью следующей команды: ```shell df -hTi ``` Значения в выводе команды: - **Inodes** — объем доступного пространства для индексных дескрипторов; - **IUsed** — объем, занятый дескрипторами; - **IFree** — свободный объем; - **IUse%** — объем, занятый дескрипторами, в процентах. `![Inodes](https://content.timeweb.com/assets/3dca5c28-9386-4603-b7df-9d4ce14b4aa0?width=592&height=189)` Для решения проблемы с недостатком свободных inodes необходимо удалить достаточное число файлов или каталоги с большим числом файлов. Найти директории, содержащие в себе большое количество файлов, можно с помощью команды ниже. Ее можно использовать, например, в корневой директории ОС или корневой директории сайта, а дальше при необходимости спускаться ниже и ниже по структуре. ```shell echo "Detailed Inode usage for: $(pwd)" ; for d in `find -maxdepth 1 -type d |cut -d\/ -f2 |grep -xv . |sort`; do c=$(find $d |wc -l) ; printf "$c\t\t- $d\n" ; done ; printf "Total: \t\t$(find $(pwd) | wc -l)\n" ``` Команда подойдет для серверов с операционными системами Ubuntu, Debian или CentOS. Если вы используете другую ОС и команда не срабатывает — свяжитесь с [поддержкой](https://timeweb.cloud/my/support/help-problem/other), постараемся помочь. Удалить ненужные файлы и директории можно с помощью команды `rm`. Будьте внимательны при ее использовании. # Проверка файловой системы Source: https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/file-system-check Некоторые ваши действия или сбои в работе сервера могут привести к повреждению файловой системы на дисках. Поэтому в случае любой внештатной ситуации мы рекомендуем выполнить проверку диска. Диски, как правило, имеют имена `vd*` или `sd*`; ниже в командах для примера используются `vda1` и `vdb1`. Замените их при необходимости на реальные имена дисков и разделов в вашей системе. 1. Загрузите систему с диска восстановления ([инструкция](https://timeweb.cloud/docs/cloud-servers/manage-servers/boot-mode)). 2. Просмотрите, какие разделы есть в системе, с помощью следующей команды: ```plain lsblk -lp | grep part ``` Вывод команды будет примерно таким: ```shell /dev/vda1 252:1 0 5G 0 part /dev/vdb1 252:17 0 5G 0 part ``` 3. Для проверки системного раздела — `vda1` — выполните команду: ```plain e2fsck -yf /dev/vda1 ``` Если нужно проверить какой-либо другой раздел, например, `vdb1`, укажите в команде именно его: ```plain e2fsck -yf /dev/vdb1 ``` 4. По окончании операции вернитесь в настройку загрузки системы и выберите «Стандартный режим загрузки системы». После сохранения настроек и перезагрузки сервера можно продолжать работу. # Ускорение работы сайта: перенос MySQL в tmpfs Source: https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/improving-site-performance-mysql-to-tmpfs Один из самых несложных способов повышения производительности сайта, который в большинстве случаев позволяет заметно ускорить его работу — это перенос временных файлов MySQL на RAM-диск. Благодаря этому работа с временными таблицами БД будет будет производиться через оперативную память вместо жесткого диска, за счет чего MySQL будет работать быстрее. Настройка выполняется следующим образом. 1. Создайте папку для размещения временных файлов, например, `/var/lib/mysql/tmp`: ```shell mkdir /var/lib/mysql/tmp ``` 2. Измените владельца папки и группу на `mysql`: ```shell chown mysql:mysql /var/lib/mysql/tmp ``` 3. Определите идентификатор пользователя (uid) и группы (gid) MySQL: ```shell id mysql ``` 4. Откройте файл `/etc/fstab`: ```shell nano /etc/fstab ``` Добавьте в него строку с указанием полученных выше значений: ```shell tmpfs /var/lib/mysql/tmp tmpfs rw,gid=27,uid=27,size=1G,nr_inodes=10k,mode=0700 0 0 ``` В параметре size указывается объем памяти, который будет отдан под временные файлы MySQL. Его необходимо установить в зависимости от количества имеющейся оперативной памяти на сервере. 5. Примонтируйте новый tmpfs-раздел: ```shell mount /var/lib/mysql/tmp ``` 6. Откройте файл конфигурации MySQL `/etc/mysql/my.cnf` (если вы используете BitrixVM, обратите внимание, что путь к файлу конфигурации отличается): ```shell nano /etc/mysql/my.cnf ``` ```shell # Для BitrixVM: nano /etc/mysql/conf.d/bvat.cnf ``` В сегмент `[mysqld]` (если сегмента нет, добавьте его) добавьте строку: ```shell [mysqld] tmpdir=/var/lib/mysql/tmp ``` 7. Перезапустите MySQL: ```shell systemctl restart mysqld ``` # Устранение ошибки «Could not get lock /var/lib/dpkg/lock» Source: https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/ustranenie-oshibki-could-not-get-lock-var-lib-dpkg-lock Иногда при запуске утилиты `apt` или `apt-get` вы можете получить ошибку в терминале: ```shell E: Could not get lock /var/lib/dpkg/lock – open (11: Resource temporarily unavailable) ``` Формулировка ошибки и путь к lock-файлу могут отличаться в зависимости от конкретного случая, но если речь идет о невозможности заблокировать файл `dpkg`, все они будут устраняться схожими методами. В целом, ошибка связана с тем, что файл менеджера пакетов `dpkg` уже заблокирован — то есть, уже выполняется какой-то процесс, который его задействует, либо же выполнение процесса было завершено некорректно, из-за чего мы сейчас получаем ошибку. В первую очередь рекомендуем подождать несколько минут и попробовать запустить `apt` снова. Вполне возможно, что выполняемый процесс через пару минут автоматически завершится, и вы сможете продолжить работу. Если же проблема сохраняется, ее можно решить следующими способами. ### Способ 1. Завершить процесс принудительно Выполните команду ниже, чтобы найти все запущенные экземпляры утилиты `apt`: ```shell ps aux | grep -i apt ``` В выводе отобразятся активные процессы, а также их ID (второй столбец). > [!NOTE] > Если в выводе будет `apt.systemd.daily update`, рекомендуем не завершать такой процесс. Это утилита автоматической проверки и установки обновлений — просто дождитесь завершения ее работы. Завершить ненужный процесс можно командой: ```shell sudo kill -9 ID_процесса ``` Другой вариант — завершить все процессы утилит `apt` и `apt-get` сразу, не проверяя конкретные процессы. Это можно сделать командой: ```shell sudo killall apt apt-get ``` ### Способ 2. Удалить файлы блокировки Если предыдущий способ не помог, вероятнее всего, проблема связана не с активными процессами `apt` или `apt-get`, а с некорректным завершением одного из процессов ранее. Сначала воспользуемся командой `lsof`, чтобы посмотреть, каким процессом используется lock-файл. Последовательно выполните команды: ```shell sudo lsof /var/lib/dpkg/lock ``` ```shell sudo lsof /var/lib/dpkg/lock-frontend ``` ```shell sudo lsof /var/lib/apt/lists/lock ``` ```shell sudo lsof /var/cache/apt/archives/lock ``` В ответ команда может не выдать ничего или выдать одно или несколько чисел — это ID процессов. Завершите их, указывая полученные ID: ```shell sudo kill -9 ID_процесса ``` Затем удалите lock-файлы: ```shell sudo rm /var/lib/dpkg/lock ``` ```shell sudo rm /var/lib/dpkg/lock-frontend ``` ```shell sudo rm /var/lib/apt/lists/lock ``` ```shell sudo rm /var/cache/apt/archives/lock ``` При удалении вы можете получать ошибки вида «Нет такого файла или каталога» — их можно просто проигнорировать. В завершение переконфигурируйте пакеты с помощью команды: ```shell sudo dpkg --configure -a ``` Попробуйте снова запустить `apt` или `apt-get` — все должно работать корректно. # Другие возможные проблемы Source: https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/other-issues В статье приведены способы устранения возможных неполадок в работе виртуальных серверов. Данные инструкции подскажут, как можно попытаться решить проблему самостоятельно, а также получить необходимую диагностическую информацию, которая позволит более оперативно решить вопрос с нашей стороны. ## Не увеличился размер диска Расширение разделов после увеличения размера диска выполняется автоматически во всех случаях, кроме ситуации, когда вы ранее самостоятельно меняли разметку диска и в результате на нем создано два логических раздела и больше. В данном случае необходимо произвести переразметку вручную по нашей [инструкции](https://timeweb.cloud/docs/unix-guides/disk-resizing). Если после выполнения указанных действий проблема сохранится, для диагностики выполните (от пользователя root) следующие команды: ```shell df -h ``` ```shell fdisk -l ``` Первая позволит просмотреть размер разделов, вторая — вывести список существующих разделов и дисков. Создайте [обращение в службу поддержки](https://timeweb.cloud/my/support/help-problem) и приложите к нему вывод данных команд — наши специалисты проведут необходимую диагностику. В зависимости от предоставленной вами информации, для устранения проблемы может потребоваться отключить сервер на 15-20 минут. Уточните в обращении период времени, когда это можно сделать. ## Не увеличился размер оперативной памяти Если после изменения размера оперативной памяти вы видите, что ее объем фактически не увеличился, создайте [обращение](https://timeweb.cloud/my/support/help-problem) в службу поддержки, приложив к нему результат вывода команды: ```shell free -m ``` Команду необходимо выполнить от пользователя root; она позволит просмотреть количество использованной и неиспользованной памяти в мегабайтах. В зависимости от предоставленной вами информации, для устранения проблемы может потребоваться отключить сервер на 15-20 минут. Уточните в обращении период времени, когда это можно сделать. ## Не загружается операционная система Для устранения проблемы загрузите ОС в режиме загрузки с диска восстановления, после чего вернитесь в стандартный режим работы. Если в результате проблема не будет решена, [напишите нам](https://timeweb.cloud/my/support/help-problem) для проведения диагностики. ## Сервер работает нестабильно, зависает Чаще всего причиной подобного поведения является повышенная нагрузка. Проверьте графики нагрузки на главной странице панели управления, и в случае наличия превышений примите меры для ее снижения. Также проанализировать нагрузку на сервер можно [утилитами `top` или `htop`](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/load-and-process-control-top-htop-atop). Если превышения нагрузки не зафиксировано, [напишите нам](https://timeweb.cloud/my/support/help-problem) для проведения диагностики. ## Сайт недоступен даже после перезагрузки сервера Если вы столкнулись с недоступностью ресурса (например, с ошибкой «Не удается получить доступ к сайту. Соединение сброшено»), которая не решилась в том числе и перезагрузкой сервера, возможной причиной может быть kernel panic — критическая ошибка ядра операционной системы. При этом также может наблюдаться невозможность произведения каких-либо действий в консоли сервера в панели управления. Для решения проблемы запустите перезагрузку сервера, после чего нажмите на кнопку «Перезагрузить принудительно». Принудительная перезагрузка позволит перезапустить виртуальную машину и восстановить работу. # Инструкции для Windows Source: https://timeweb.cloud/docs/windows-guides Инструкции по работе с серверами с операционной системой Windows. - [Особенности работы с Windows VDS](https://timeweb.cloud/docs/windows-guides/windows-vds-special-features) - [Подключение к серверу по RDP](https://timeweb.cloud/docs/windows-guides/connecting-to-the-server-via-rdp) - [Добавление пользователя](https://timeweb.cloud/docs/windows-guides/add-user) - [Смена пароля администратора](https://timeweb.cloud/docs/windows-guides/changing-administrator-password) - [Ручной сброс пароля пользователя](https://timeweb.cloud/docs/windows-guides/manual-password-reset) - [Срок действия пароля](https://timeweb.cloud/docs/windows-guides/password-expiration-date) - [Добавление и удаление жесткого диска](https://timeweb.cloud/docs/windows-guides/add-disk) - [Изменение размера диска на Windows](https://timeweb.cloud/docs/windows-guides/disk-resizing) - [Добавлениe IP-адресов](https://timeweb.cloud/docs/windows-guides/adding-ip-addresses) - [Установка .NET Framework 3.5](https://timeweb.cloud/docs/windows-guides/installing-net-framework35) - [Лицензии RDS для Windows](https://timeweb.cloud/docs/windows-guides/rds-licenses-for-windows) - [Открытие портов в брандмауэре Windows Server](https://timeweb.cloud/docs/windows-guides/otkrytie-portov-v-brandmauehre-windows-server) - [Настройка DNS-серверов в Windows Server](https://timeweb.cloud/docs/windows-guides/nastrojka-dns-serverov-v-windows-server) # Особенности работы с Windows VDS Source: https://timeweb.cloud/docs/windows-guides/windows-vds-special-features - Для администрирования Windows-серверов используется, как правило, [RDP-доступ](https://timeweb.cloud/docs/windows-guides/connecting-to-the-server-via-rdp). - При невозможности соединения по RDP (например, при отсутствии интернет-подключения к серверу) вы можете использовать встроенную в панель управления систему доступа, расположенную на вкладке «Консоль». Подробнее в статье «[Веб-консоль](https://timeweb.cloud/docs/cloud-servers/manage-servers/console)». - Лицензия Windows Server имеет ограничение на количество одновременных пользователей: одновременно к серверу могут подключаться не более [2 пользователей](https://timeweb.cloud/docs/windows-guides/add-user) (администраторов) системы. Чтобы увеличить количество пользователей, необходимо приобрести [дополнительные лицензии RDS](https://timeweb.cloud/docs/windows-guides/rds-licenses-for-windows). - Рабочие столы пользователей разделены — каждый пользователь имеет собственный рабочий стол. - Невозможно открыть техподдержке доступ к Windows-серверу через панель управления. Чтобы специалисты поддержки могли подключиться к серверу для выполнения вашего запроса, потребуется предоставить реквизиты через тикет. # Подключение к серверу по RDP Source: https://timeweb.cloud/docs/windows-guides/connecting-to-the-server-via-rdp Для работы с созданным Windows-сервером вы можете использовать консоль в панели управления или подключиться к нему по протоколу RDP ([remote desktop protocol](https://ru.wikipedia.org/wiki/Remote_Desktop_Protocol)). В зависимости от используемой на вашем локальном компьютере операционной системы, подключение осуществляется либо средствами ОС, либо с помощью специальных программ — RDP-клиентов. Для подключения вам будет необходимо указать IP-адрес сервера, имя пользователя и пароль (эти данные можно найти в письме, которое отправлялось на ваш контактный ящик после установки сервера). Рассмотрим процесс подключения для отдельных операционных систем. ## Windows Для установки RDP-соединения из ОС Windows используется сервис «Подключение к удаленному рабочему столу». Его можно открыть одним из следующих способов: - через меню «Пуск» -> «Cтандартные» -> «Подключение к удаленному рабочему столу»; - с помощью командной строки. В этом случае нажмите комбинацию клавиш **Win + R**, в открывшемся окне введите `mstsc` и нажмите **ОК**: ![Mstsc](https://content.timeweb.com/assets/5c39c30e-1c09-45bf-b85b-33a5736f592f?width=446&height=215) _Окно «Выполнить» в интерфейсе [Microsoft Windows](https://www.microsoft.com/ru-ru/download/windows)_ Появится окно настройки подключения к удаленному рабочему столу, где необходимо ввести IP-адрес сервера. ![2](https://content.timeweb.com/assets/8e00210d-0f87-49cf-ad34-72ef2179a445?width=410&height=248) _Подключение к удаленному рабочему столу в интерфейсе [Microsoft Windows](https://www.microsoft.com/ru-ru/download/windows)_ Здесь же вы можете подключить к серверу диск или съемный носитель (например, карту памяти или CD-диск), физически подключенный к вашему локальному компьютеру, для переноса данных на сервер. Для этого нажмите на кнопку «Параметры» для отображения дополнительных опций. Перейдите на вкладку «Локальные ресурсы», где нажмите на кнопку «Подробнее». ![Sett](https://content.timeweb.com/assets/ffea9135-4dde-4ef1-bb1c-66235828a8b3?width=410&height=468) _Подключение к удаленному рабочему столу в интерфейсе [Microsoft Windows](https://www.microsoft.com/ru-ru/download/windows)_ В открывшемся окне отметьте нужное устройство и нажмите «ОК»: ![5](https://content.timeweb.com/assets/b26c7cee-a468-4641-8bc7-bffca3ac0910?width=411&height=431) _Подключение к удаленному рабочему столу в интерфейсе [Microsoft Windows](https://www.microsoft.com/ru-ru/download/windows)_ Далее нажмите «Подключить». При первом подключении появится уведомление о недоверенном сертификате безопасности: ![3](https://content.timeweb.com/assets/1d9a345f-fc32-4d07-849d-2570b975defa?width=394&height=395) _Подключение к удаленному рабочему столу в интерфейсе [Microsoft Windows](https://www.microsoft.com/ru-ru/download/windows)_ Это связано с тем, что подключение к серверу шифруется сертификатом, который заверен самим сервером, а не центром сертификации. Чтобы данное уведомление не появлялось при последующих подключениях, можно отметить чекбокс «Больше не выводить запрос о подключениях к этому компьютеру». Далее нажмите «Да», после чего соединение с сервером по RDP будет установлено. При первом подключении к серверу, при появлении следующего уведомления нажмите «Да». Это позволит корректно подключаться к серверу в дальнейшем. ![N1](https://content.timeweb.com/assets/8feffd7c-45cc-496f-b2a7-e63d0a4ece77?width=329&height=409) _Сетевые_ _настройки в интерфейсе [Microsoft Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ ## MacOS Для подключения из MacOS вам необходимо установить бесплатный RDP-клиент [Microsoft Remote Desktop](https://apps.apple.com/us/app/microsoft-remote-desktop/id1295203466?mt=12). После выполните следующие действия: Запустите программу и кликните «Add PC». В появившемся окне заполните поля: - PC name — IP-адрес вашего сервера. - User account — кликните и выберите Add user account. - Username и Passowrd — имя пользователя и пароль доступа к вашему серверу. Нажмите Add, чтобы добавить удаленный компьютер в приложение. Для подключения кликните на нем правой кнопкой мыши и выберите Connect. При первом подключении появится уведомление о недоверенном сертификате безопасности: ![Mac](https://content.timeweb.com/assets/60047d0b-18ff-47bd-8d3a-a13169a31f0f?width=590&height=193) _Всплывающее окно проверки сертификата в интерфейсе [MacOS](https://www.apple.com/os/macos/)_ Это связано с тем, что подключение к серверу шифруется сертификатом, который заверен самим сервером, а не центром сертификации. Чтобы данное уведомление не появлялось при последующих подключениях, нужно добавить сертификат в список доверенных. Для этого нажмите «Show certificate» и отметьте чекбокс «Always trust»: ![6](https://content.timeweb.com/assets/1fda9730-6917-4a43-969d-3d304a9d9ee4?width=590&height=420) _Всплывающее окно проверки сертификата в интерфейсе [MacOS](https://www.apple.com/os/macos/)_ Нажмите «Continue», и далее соединение будет установлено. При первом подключении к серверу при появлении уведомления «Вы хотите найти в этой сети...» нажмите «Да». Это позволит корректно подключаться к серверу в дальнейшем. ## Linux В отличие от других ОС (MacOS, Android, iOS), для операционных систем на базе Linux не существует официального RDP-клиента от Microsoft. Для подключения к серверу вы можете использовать FreeRDP или rdesktop, для которых существуют графические оболочки Remmina, KRDC, Vinagre и др. Мы рассмотрим процесс подключения на примере **Remmina**. Запустите приложение и нажмите на «Создать новое подключение» слева вверху: ![Rem1](https://content.timeweb.com/assets/26d6bcb3-2347-4e9d-b1a3-7c5fcdaf51db?width=602&height=429) _Интерфейс [Remmina](https://remmina.org/)_ В открывшемся окне заполните поля: - Сервер — IP-адрес вашего сервера, - Имя пользователя — Администратор или Admin, согласно письму с реквизитами, - Пароль — пароль администратора. ![Rem2](https://content.timeweb.com/assets/f29670db-9a69-4ffa-bb2c-791d8cf85edb?width=782&height=579) _Создание подключения в интерфейсе [Remmina](https://remmina.org/)_ Вы также можете выбрать удобное для работы разрешение. Далее нажмите «Подключиться». При подключении появится уведомление о необходимости принять сертификат безопасности. Нажмите «ОК», после чего соединение с сервером будет установлено. При первом подключении к серверу при появлении уведомления «Вы хотите найти в этой сети...» нажмите «Да». Это позволит корректно подключаться к серверу в дальнейшем. ## Android Для подключения вам необходимо установить бесплатное приложение [Windows App](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx&hl=en). 1. Запустите приложение — вы попадете на экран «Devices». 2. Нажмите на значок плюса чтобы добавить новое устройство. ![1 2](https://content.timeweb.com/assets/e68cddd3-0206-4c36-8cfd-89156cef080a.png?width=600&height=1246) _Создание подключения в [Windows App](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx&hl=en) на [Android](https://www.android.com/)_ 3. Выберите вариант «PC Connection». ![2 3](https://content.timeweb.com/assets/4e22a72f-ac2e-49c6-bd47-09efd1d9e76e.png?width=600&height=1245) _Создание подключения в [Windows App](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx&hl=en) на [Android](https://www.android.com/)_ 4. В поле «PC Name» укажите IP-адрес сервера и нажмите «Save». ![3 1 2026 08 14 11 40](https://content.timeweb.com/assets/1fac1f5a-c629-4165-8cc4-05c3a9319bd6.png?width=600&height=1258) _Создание подключения в [Windows App](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx&hl=en) на [Android](https://www.android.com/)_ 5. Подключение отобразится на главном экране. Кликните на него. ![4 1](https://content.timeweb.com/assets/0158f005-0160-45df-aee3-00e567c19110.png?width=600&height=1243) _Подключения в [Windows App](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx&hl=en) на [Android](https://www.android.com/)_ 6. Введите реквизиты подключения к серверу: имя пользователя (по умолчанию — `Administrator`) и пароль. ![5 1](https://content.timeweb.com/assets/8915b58e-db34-4a78-85cd-890266d63eab.png?width=600&height=1300) _Установка подключения к серверу в [Windows App](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx&hl=en) на [Android](https://www.android.com/)_ 7. При первом подключении появится уведомление о недоверенном сертификате безопасности. Это связано с тем, что подключение к серверу шифруется сертификатом, который заверен самим сервером, а не центром сертификации. Отметьте чекбокс «Never ask again...» и нажмите «Connect». ![6 1](https://content.timeweb.com/assets/152a897e-c063-4ba3-9283-5122e9c9272f.png?width=600&height=1300) _Установка подключения к серверу в [Windows App](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx&hl=en) на [Android](https://www.android.com/)_ Соединение будет установлено. При первом подключении к серверу появится уведомление «Do you want to allow your PC...?». Нажмите «Yes». Это позволит корректно подключаться к серверу в дальнейшем. ![7 1 2026 08 14 11 47](https://content.timeweb.com/assets/e4afdd01-9e9a-4547-8632-8b6e47fb9ecf.png?width=600&height=1300) _Интерфейс [Windows Server](https://www.microsoft.com/ru-ru/windows-server) при подключении с помощью [Windows App](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx&hl=en) на [Android](https://www.android.com/)_ # Добавление пользователя Source: https://timeweb.cloud/docs/windows-guides/add-user В стандартной лицензии Windows Server доступно одновременное использование двух пользователей (администраторов) сервера. Первый пользователь-администратор создается автоматически при установке сервера с системой Windows. Чтобы создать второго пользователя, выполните следующее: 1. Подключитесь к серверу и откройте «Панель управления». 2. Перейдите в раздел «Учетные записи пользователей». 3. Выберите пункт «Управление другой учетной записью» → «Добавить учетную запись пользователя». 4. Укажите имя пользователя, пароль, подсказку для пароля и нажмите «Готово». 5. Кликните на нового созданного пользователя и выберите «Изменение типа учетной записи». 6. Выберите пункт «Администратор» и сохраните изменения. Если вам требуется большее количество администраторов сервера, будет необходимо приобрести дополнительные [Лицензии RDS для Windows](https://timeweb.cloud/docs/windows-guides/rds-licenses-for-windows). # Смена пароля администратора Source: https://timeweb.cloud/docs/windows-guides/changing-administrator-password Если вам **известен** текущий пароль доступа, вы можете изменить его как в панели управления, так и средствами операционной системы. Если же пароль **неизвестен**, вы можете сбросить его из панели управления аккаунтом. ## Сброс пароля в панели управления Вы можете сбросить текущий пароль доступа к серверу в панели [timeweb.cloud/my](https://timeweb.cloud/my/). 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. Кликните на значок замка в верхнем меню. 3. В открывшемся окне подтвердите сброс пароля. ![B0e04952 8d3a 4f5f 9687 E369c26024c7](https://content.timeweb.com/assets/41d23f12-5802-4e2b-a269-3b6d4a10f9f7.png?width=1568&height=794) Пароль будет изменен сразу же, и вы можете скопировать новый пароль на дашборде сервера: ![2b5a6887 835a 457d Bc95 F3d41d824b57](https://content.timeweb.com/assets/0c05ddf6-f057-4fc7-8fd6-3164f2c782ea.png?width=1580&height=1527) Сброс пароля через панель сработает только при условии, что пользователь с именем `Администратор` (или `Administrator` в англоязычных версиях ОС) не был удален или переименован. ## Изменение пароля в ОС Windows Если текущий пароль вам известен, но вы хотите сменить его, вам необходимо выполнить следующие действия. 1. Подключитесь к серверу по RDP или через консоль в панели управления. 2. Нажмите правой кнопкой мыши на кнопку «Пуск» и выберите «Управление компьютером» / Computer Management. ![00d7e1fd 7153 4906 A27e 8e21a4bf9cbc](https://content.timeweb.com/assets/c87ee95c-bffc-446c-96b8-72664818d40b.png?width=350&height=694) _Интерфейс меню «Пуск» в ОС [MS Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 3. В открывшемся окне найдите пункт «Локальные пользователи» / Local Users and Groups, разверните его и выберите папку «Пользователи» / Users. 4. В правой части окна кликните правой кнопкой мыши на нужного пользователя и выберите «Задать пароль» / Set Password. ![9cfec064 50f4 4cde 9555 2e538eccde48](https://content.timeweb.com/assets/8b561b0b-e770-4df7-bc4a-b3f92dd62268.png?width=1107&height=562) _Интерфейс раздела «Управление компьютером» в ОС [MS Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 5. В появившемся окне подтверждения нажмите «Продолжить» / Proceed. 6. Введите новый пароль в полях «Новый пароль» / New password и «Подтверждение» / Confirm password. 7. Нажмите «ОК». Пароль изменен. #### Требования к паролю Пароль должен соответствовать следующим требованиям: - Не содержать имени учетной записи пользователя или частей полного имени пользователя длиной более двух рядом стоящих знаков. - Иметь длину не менее 6 знаков. - Содержать знаки как минимум трех следующих категорий: - Латинские заглавные буквы (от A до Z). - Латинские строчные буквы (от a до z). - Цифры (от 0 до 9). - Специальные символы (!, $, #, % и др.). # Ручной сброс пароля пользователя на Windows Server Source: https://timeweb.cloud/docs/windows-guides/manual-password-reset Стандартно вы можете [изменить пароль администратора](https://timeweb.cloud/docs/windows-guides/changing-administrator-password) средствами панели управления или операционной системы. Однако в некоторых случаях может потребоваться ручной сброс пароля пользователя. Например, если имя администратора на сервере отличается от `Administrator` или `Администратор`, то смена пароля через панель управления не сработает. В таком случае необходимо вносить изменения в ОС штатными средствами или описанным здесь способом. В этой статье мы рассмотрим, как сбросить пароль при отсутствии доступа к системе. Использовать этот способ следует только в отсутствие других возможностей. 1. Загрузите сервер в режиме восстановления системы. 2. Перейдите на вкладку «Консоль». Вы попадете в командную строку LiveCD SystemRescue. 3. Примонтируйте диск, на который установлена операционная система. По умолчанию это `/dev/vda1`: ```shell mount /dev/vda1 /mnt ``` Список всех дисков можно посмотреть командой: ```shell fdisk -l ``` Убедиться, что примонтирован необходимый диск, можно с помощью команды: ```shell ls -l /mnt ``` Вы должны увидеть каталоги диска `C:\`. ![Image6](https://content.timeweb.com/assets/d50f16cc-1af8-4757-96e7-cb88dc35e15c?width=684&height=252) 4. Перейдите в каталог `/mnt/Windows/System32/config/`: ```shell cd /mnt/Windows/System32/config/ ``` Просмотреть всех пользователей Windows можно командой: ```shell chntpw -l SAM ``` Возможный вывод: ![Image4](https://content.timeweb.com/assets/eed5dc89-6eec-4d01-8100-6cb1e4e508ff?width=696&height=202) В этом примере мы будем сбрасывать пароль пользователя `Timeweb`, однако вы точно так же можете сбросить пароль администратора. Администраторы отмечены флагом `ADMIN` в столбце `Admin?`. Обратите внимание, что кириллические имена пользователей невозможно отобразить. В этом случае потребуется ориентироваться по другим столбцам и количеству букв в имени пользователя. 5. Для редактирования пользователя потребутся его идентификатор, указанный в столбце `RID`. В команде нужно указать `RID` после отметки `0x`. В нашем случае команда примет вид: ```shell chntpw -u 0x03e8 SAM ``` Будет выведено интерактивное меню. Проверьте, чтобы учетная запись не была заблокирована. Узнать о блокировке можно по статусу `probably locked now`. ![Scr 20251003 Mwkf](https://content.timeweb.com/assets/755796c2-941e-43f0-832f-8451c3648c70.png?width=1246&height=1568) Для разблокировки выберите второй пункт, после чего статус изменится на `seems unlocked already`. ![Scr 20251003 Mwve](https://content.timeweb.com/assets/6db0a06b-35b3-4710-98b8-8904fd26802e.png?width=1122&height=1000) Для сброса пароля выберите первый пункт (`Clear (blank) user password`). Утилита выведет сообщение `Password cleared!` и вновь распечатает меню. Введите букву `q` для выхода и `y` для сохранения изменений: ![Image2](https://content.timeweb.com/assets/00708cf0-cc01-425b-bfe0-ffe2c378f175?width=681&height=219) Для проверки, что пароль пользователя `Timeweb` был действительно сброшен, вновь выведем список пользователей — в последнем столбце будет отображено `*BLANK*`: ![Image3](https://content.timeweb.com/assets/ac08b812-6739-48a3-8700-018be7f39063?width=677&height=201) 6. Размонтируйте диск: ```shell cd && umount /mnt ``` 7. Верните стандартный режим загрузки ОС. 8. Как можно скорее задайте пользователю новый пароль, так как сейчас войти в систему под пользователем можно без пароля. Установить пароль в Windowsможно в разделе **Учетные записи** → **Параметры входа** → **Добавить** (или **Accounts → Sign-in options → Password → Add)**. ![Image5](https://content.timeweb.com/assets/902ea92d-f881-498b-9856-34a24ea21f4e?width=784&height=578) _Окно «Параметры входа» в интерфейсе ОС [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ # Срок действия пароля Source: https://timeweb.cloud/docs/windows-guides/password-expiration-date По соображениям безопасности ОС Windows требует выполнять смену пароля для учетных записей (в том числе, для администратора) через определенные промежутки времени. Однако при необходимости этот функционал можно отключить, и тогда вам не потребуется принудительно изменять пароль. Для этого необходимо внести изменения в настройки учетной записи. 1. Кликните правой кнопкой мыши на меню «Пуск» и выберите «Управление компьютером». ![Pass1](https://content.timeweb.com/assets/d1ccb749-ced0-435f-a25d-3d7c61e23cdb?width=348&height=425) _Интерфейс меню «Пуск» в ОС [MS Windows](https://www.microsoft.com/ru-ru/download/windows)_ 2. В открывшемся окне в разделе «Служебные программы» разверните раздел «Локальные пользователи» и перейдите в папку «Пользователи». ![Pass 2](https://content.timeweb.com/assets/f4506206-b275-414d-a0ce-4c9e62e650e5?width=999&height=716) _Интерфейс окна «Управление компьютером» в ОС [MS Windows](https://www.microsoft.com/ru-ru/download/windows)_ 3. Кликните правой кнопкой мыши по нужному пользователю в списке и выберите «Свойства». 4. Отметьте чекбокс «Срок действия пароля не ограничен» («Password never expires»). ![Pass 3](https://content.timeweb.com/assets/04f85e6e-bcac-4199-b6fc-ac3812d53a65?width=443&height=547) _Интерфейс окна «Управление компьютером» в ОС [MS Windows](https://www.microsoft.com/ru-ru/download/windows)_ 5. Нажмите «Применить». # Добавление и удаление жесткого диска Source: https://timeweb.cloud/docs/windows-guides/add-disk Добавление жестких дисков в Windows происходит в два этапа: сначала операцию необходимо выполнить в панели управления VDS, после — на самом сервере, в настройках Windows. ## Шаг 1. Добавление диска в панели управления 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. Откройте вкладку «Конфигурация». 3. В блоке «Подключенные диски» кликните «Добавить диск». 4. Выберите тип диска: сетевой или локальный. 5. Укажите необходимый объем и нажмите «Добавить». 6. Перезагрузите сервер. ## Шаг 2. Добавление диска в Windows 1. Подключитесь к серверу [по RDP](https://timeweb.cloud/docs/windows-guides/connecting-to-the-server-via-rdp). 2. Нажмите правой кнопкой мыши по кнопке «Пуск» и выберите пункт «Управление дисками» / «Disk Management: ![665e7b8c 8c26 45eb 9409 29f708d167c0](https://content.timeweb.com/assets/d4194002-797e-472d-9769-73216d43bac4.png?width=383&height=722) _Меню «Пуск» в интерфейсе ОС [MS Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 3. Кликните правой кнопкой мыши на новый диск и выберите опцию «В сети» / «Online». 4. Снова кликните правой кнопкой и выберите пункт «Инициализировать диск» / «Initialize Disk», в следующем окне нажмите «ОК». 5. Кликните правой кнопкой мыши на новом диске и выберите «Создать простой том» / «New Simple Volume». ![3295b26f B5ca 4ead 8ae1 49819518d3ce](https://content.timeweb.com/assets/08f6bce1-0d59-49dc-b917-6816296f6dc7.png?width=850&height=668) _Окно «Управление дисками» в интерфейсе ОС [MS Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 6. Пройдите все предложенные системой шаги в открывшемся окне, после чего диск появится в списке дисков в данном разделе и в разделе «Этот компьютер» / «This PC». ## Удаление жесткого диска Для удаления жесткого диска: 1. Перейдите в раздел «Облачные серверы» и кликните на нужный сервер. 2. Откройте вкладку «Конфигурация». 3. В блоке «Подключенные диски» наведите курсор на диск и нажмите «Отключить». ![99fc329b 52ca 4f36 9282 0fc91b5fed4a](https://content.timeweb.com/assets/f6abb3de-3c0f-4eb0-8ec6-63c81d087dc7.png?width=1392&height=869) 4. Подтвердите действие. Диск будет автоматически извлечен из системы. # Изменение размера диска на Windows Source: https://timeweb.cloud/docs/windows-guides/disk-resizing Изменение размера жестких дисков в Windows происходит в два этапа: сначала требуется изменить размер диска в панели управления, затем — внутри операционной системы. Можно изменять размер как основного, так и дополнительных дисков. ## Действия в панели управления 1. На странице сервера перейдите на вкладку «Конфигурация» 2. Кликните «Выбрать конфигурацию». 3. Выберите тариф с нужным размером диска и нажмите «Сохранить и перезагрузить». ## Действия в ОС Windows > [!NOTE] > Данную процедуру необходимо выполнять **только в случае**, если на диске создано больше одного раздела. Во остальных случаях диск будет переразмечен автоматически и с вашей стороны никакие действия не требуются. - Подключитесь к серверу [по RDP](https://timeweb.cloud/docs/windows-guides/connecting-to-the-server-via-rdp). - Кликните правой кнопкой мыши по кнопке «Пуск» и выберите «Управление дисками»: ![Discmanage](https://content.timeweb.com/assets/a1cfa972-327b-4c71-95e7-2582112cf47c?width=378&height=431) _Интерфейс меню «Пуск» в ОС [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ - Если на диске, размер которого был изменен, требуется создать новый том, кликните правой кнопкой мыши по нераспределенной области диска и выберите «Создать простой том»: ![Newtom](https://content.timeweb.com/assets/8c381ed9-9640-4481-9855-30f22eaba1f8?width=734&height=440) _Интерфейс окна «Управление дисками» в ОС [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ - Далее пройдите все предложенные системой шаги в открывшемся окне, после чего новый том будет создан. - Если же необходимо расширить уже существующий том, кликните правой кнопкой мыши по существующему тому и выберите «Расширить том»: ![Expand](https://content.timeweb.com/assets/8de1c133-4e10-42fc-b3a6-dd5379f70556?width=657&height=588) _Интерфейс окна «Управление дисками» в ОС [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ > [!NOTE] > Обратите внимание, что возможно изменить размер только крайнего тома. Например, при наличии на диске томов C и D, расширить можно только том D. Для расширения тома C предварительно потребуется удалить том D. После система предложит выбрать размер, на который необходимо увеличить том. Вы сможете указать требуемое значение. Если же нужно выделить для тома всю нераспределенную область, просто оставьте значение без изменений: ![Expand2](https://content.timeweb.com/assets/882fcec7-0610-476f-81d4-e8cfb1590590?width=660&height=559) _Интерфейс окна «Управление дисками» в ОС [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ Далее пройдите все предложенные системой шаги, после чего размер тома будет изменен. ### **Если размер тома не увеличился** Иногда при изменении размера диска вы можете получить ошибку «The parameter is correct». Как правило, в этом случае в разделе «Управление дисками» вы будете видеть новый размер диска, однако в свойствах диска будет по-прежнему отображаться предыдущее значение. Это связано с тем, что несмотря на то, что размер диска был увеличен, размер файловой системы остался прежним. Исправить эту ошибку можно с помощью утилиты `diskpart` по следующей инструкции. Запустите командную строку, кликнув правой кнопкой на «Пуск» → «Командная строка (администратор)» (либо «Пуск» → «Windows PowerShell (администратор)»). Запустите утилиту командой: ```shell diskpart ``` Определите номер тома командой `list volume`: ```shell list volume ``` Выберите нужный том, указав его номер: ```shell select volume номер_тома ``` Расширьте файловую систему: ```shell extend filesystem ``` Готово. Для выхода из `diskpart` выполните: ```shell exit ``` # Добавлениe IP-адресов Source: https://timeweb.cloud/docs/windows-guides/adding-ip-addresses Чтобы добавить на сервер дополнительный IP-адрес или несколько, сначала добавьте их в панели управления: - [для VDS](https://timeweb.cloud/docs/cloud-servers/manage-servers/network#dopolnitelnye-ip-adresa); - [для выделенных серверов](https://timeweb.cloud/docs/dedicated/adding-ip). После этого добавьте IP-адреса на сам сервер в сетевых настройках операционной системы. ## Заказ дополнительных IP в панели управления Чтобы заказать дополнительный IP: 1. На странице нужного сервера перейдите на вкладку «Сеть». 2. В блоке «IP-адреса» кликните «Добавить». ![F6f08189 D069 4eea B2fd A86efd867912](https://content.timeweb.com/assets/07fd1cbc-e284-429a-81cc-af1290bfb55d.png?width=1563&height=1189) 3. На следующем шаге выберите тип (IPv4 или IPv6) и количество адресов. 4. Нажмите «Добавить». После вам нужно физически добавить этот адрес на сервер. Это касается любых дополнительных IP-адресов, а также основного IPv6-адреса. ## Добавление IPv4-адресов 1. Подключитесь к серверу по [RDP](https://timeweb.cloud/docs/windows-guides/connecting-to-the-server-via-rdp). 2. Кликните на значок «Сеть» справа в панели задач и откройте «Центр управления сетями и общим доступом»: ![1](https://content.timeweb.com/assets/55b099a8-705b-4eff-b70f-a25540e96b4f?width=359&height=107) _Меню «Сеть» в интерфейсе ОС [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 3. В открывшемся окне выберите пункт «Изменение параметров адаптера»: ![6](https://content.timeweb.com/assets/71abf478-2783-471a-aa73-2f69973739a5?width=796&height=598) _Окно «Центр управления сетями и общим доступом» в интерфейсе ОС [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 4. Кликните на адаптер правой кнопкой мыши и выберите «Свойства»: ![2](https://content.timeweb.com/assets/cb8603ca-beea-44f7-9080-f33b4f0e4935?width=261&height=252) _Контекстное меню адаптера в интерфейсе ОС [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 5. Выделите в списке компонентов «Протокол Интернета версии 4 (TCP/IPv4)» и нажмите «Свойства»: ![3](https://content.timeweb.com/assets/4793d2af-68c5-4af5-9a56-0b7f6a808c15?width=375&height=472) _Окно с параметрами адаптера в интерфейсе ОС [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 6. В следующем окне выберите пункт «Использовать следующий IP-адрес» и укажите данные: - - **IP-адрес**: основной IP сервера; - **Маска подсети**: `255.255.255.0`; - **Основной шлюз**: основной IP сервера, с «1» вместо последнего октета. - **Адреса DNS-серверов**: `8.8.8.8` и `8.8.4.4`. ![4](https://content.timeweb.com/assets/3fc47f3d-ae47-4120-bfa0-2358ccf0ee0f?width=411&height=457) _Окно «Свойства: "Протокол Интернета версии 4 (TCP/IPv4)"» в интерфейсе ОС [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 7. Нажмите «Дополнительно». 8. В открывшемся окне кликните «Добавить» под блоком «IP-адреса»: ![7](https://content.timeweb.com/assets/e615fc97-48bd-43da-bc40-91bc312b960e?width=411&height=491) _Окно «Дополнительные параметры TCP/IP» в интерфейсе ОС [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 9. Заполните форму, указав **дополнительный** IP-адрес и маску подсети (`255.255.255.0`), и нажмите «Добавить»: ![5](https://content.timeweb.com/assets/ff0df43d-4974-4500-8bc3-6fe064aa9a57?width=330&height=148) _Окно «TCP/IP-адрес» в интерфейсе ОС [Windows Server](https://www.microsoft.com/ru-ru/windows-server)_ 10. Закройте все открытые окна настроек, нажимая в них «ОК». ## Добавление IPv6-адресов **IPv6-адреса** добавляются аналогично IPv4, но на шаге **5** необходимо выбрать пункт «Протокол Интернета версии 6 (TCP/IPv6)». Далее укажите: - **IPv6-адрес**: основной IPv6-адрес сервера - **Длина префикса подсети**: 128 - **Основной шлюз**: основной IPv6-адрес сервера, заменив последний блок на `1` Например, если IPv6-адрес сервера — `2a03:6f01:1:2::cd6a`, то настройки будут такими: - IPv6-адрес: `2a03:6f01:1:2::cd6a` - Длина префикса подсети: `128` - Основной шлюз: `2a03:6f01:1:2::1` DNS-серверы: - 2001:4860:4860::8888 - 2001:4860:4860::8844 Если также нужно добавить дополнительный IPv6, нажмите «Дополнительно», далее «Добавить» под блоком «IP-адреса» и заполните открывшуюся форму. # Установка .NET Framework 3.5 Source: https://timeweb.cloud/docs/windows-guides/installing-net-framework35 Для установки .NET Framework 3.5 или любого другого стандартного ПО, когда установка из системы по каким-то причинам невозможна (чаще всего проблемы возникают из-за политики установки дополнительных приложений Microsoft — Features on Demand), можно воспользоваться следующим способом. 1. Загрузите ISO-образ системы Windows на сервер с [официального сайта](https://www.microsoft.com/ru-ru/evalcenter/evaluate-windows-server-2019). По ссылке откроется вкладка с Windows Server 2019, но на этой же странице вы можете выбрать другую версию ОС. В форму с данными можно внести любые сведения. 2. Смонтируйте полученный образ, кликнув правой кнопкой на файл (Опция «Подключить»). 3. Запустите Windows PowerShell от имени администратора и выполните команду вида: ```shell dism.exe /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess ``` Здесь: - `featurename` — наименование устанавливаемой опции (в примере выше — `NetFX3`, то есть .NET Framework 3.5); - `Source` — путь к каталогу `sxs` примонтированного диска, где хранятся необходимые файлы устанавливаемой опции (по умолчанию диск монтируется под диском D, поэтому здесь ничего менять не потребуется). # Лицензии RDS для Windows Source: https://timeweb.cloud/docs/windows-guides/rds-licenses-for-windows В стандартной лицензии Windows Server доступно одновременное использование только 2 пользователей (администраторов) сервера, т.е. одновременно к рабочему столу (RDP) можно выполнить только два подключения, по одному на каждого пользователя. Если вам необходимо увеличить количество пользователей, для каждого из них нужно приобрести дополнительную лицензию Remote Desktop Services. > [!NOTE] > В связи с ограничениями, введенными Microsoft для российских пользователей, мы не предоставляем лицензии RDS. > > Вы можете приобрести лицензию у другого провайдера, после чего самостоятельно добавить ее на сервер и настроить. # Открытие портов в брандмауэре Windows Server Source: https://timeweb.cloud/docs/windows-guides/otkrytie-portov-v-brandmauehre-windows-server Чтобы разрешить тот или иной порт в брандмауэре Windows Server: 1. В меню «Пуск» выберите «Служебные — Windows» — «Панель управления» ![Ae2ed3ca E76b 4dfa 9f03 2f9b256b23ab](https://content.timeweb.com/assets/26cc48a3-1782-4efb-bf4f-bb9b431e8783?width=728&height=755) _Меню «Пуск» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 2. Далее выберите «Система и безопасность» — «Брандмауэр защитника Windows». 3. В меню слева выберите пункт «Дополнительные параметры». ![Daf8f0be 8df7 4be1 A252 B5f9db72d6ae](https://content.timeweb.com/assets/9826fb47-4086-40c7-b965-3e5e110d2e8f?width=752&height=568) _Окно «Брандмауэр защитника Windows» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 4. В меню слева кликните «Правила для входящих подключений» и в блоке «Действия» справа кликните «Создать правило…». ![Cde5d57c 6b4e 46d7 8d58 84d6aafa8e01](https://content.timeweb.com/assets/a4b4a852-1f40-4380-b02b-4339706ead2e?width=971&height=697) _Окно «Правила для входящих подключений» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 5. Выберите «Для порта» и кликните «Далее». ![1aced47e 5806 4541 8b34 Bba0d2d52f51](https://content.timeweb.com/assets/066fc672-8797-4215-bb5f-eeae54d5e895?width=972&height=692) _Создание правила для входящего подключения в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 6. Укажите нужный протокол и порт (порты). Здесь можно ввести: - - один конкретный порт; - несколько портов через запятую (1540,1541); - диапазон портов через дефис (1560-1591); ![F258d7a7 8710 46af 87ec 32d02f0c8145](https://content.timeweb.com/assets/dddd7fbb-1615-49a4-baed-6f0e35e5a988?width=972&height=694) _Создание правила для входящего подключения в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 7. Нажмите «Далее», затем снова «Далее». 8. Выберите, для каких профилей применять созданное правило, и снова нажмите «Далее». ![1c7dd2a9 F789 40c1 8531 9a406d33a934](https://content.timeweb.com/assets/5207606f-838b-479d-bc8f-1e77d78e96f4?width=975&height=694) _Создание правила для входящего подключения в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 9. Введите имя и описание правила и кликните «Готово». ![D55cd1c1 97fb 418a Abf4 492d10ffc715](https://content.timeweb.com/assets/291b7595-664c-4193-b6ea-eab167b2d611?width=973&height=691) _Создание правила для входящего подключения в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ # Настройка DNS-серверов в Windows Server Source: https://timeweb.cloud/docs/windows-guides/nastrojka-dns-serverov-v-windows-server В инструкции рассказываем, как изменить настройки DNS-серверов в операционной системе Windows Server. Для сервера с ОС Linux [воспользуйтесь этой статьей](https://timeweb.cloud/docs/unix-guides/izmenenie-nastroek-dns-serverov). В инструкции ниже мы будем прописывать публичные DNS-серверы Google: `8.8.8.8` и `8.8.4.4`, но вы можете указывать любые нужные вам DNS (например, DNS Cloudflare: `1.1.1.1` и `1.0.0.1` и др.). ## Windows Server 2012 R2 1. [Подключитесь к серверу по RDP](https://timeweb.cloud/docs/windows-guides/connecting-to-the-server-via-rdp) или через веб-консоль в панели управления. 2. Кликните правой кнопкой мыши на «Пуск» и выберите «Сетевые подключения». ![Chrome Nkya Xx Lj D9](https://content.timeweb.com/assets/63bf7c7a-be07-4b8f-8083-3a981cf6c081?width=990&height=743) _Меню в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 3. Кликните правой кнопкой мыши на Ethernet-адаптер и выберите «Свойства». ![Chrome P C Lm Vz8q D5](https://content.timeweb.com/assets/c0993062-bb39-4199-b508-4c6cb3fdbe1f?width=987&height=742) _Окно «Сетевые подключения» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 4. В списке компонентов найдите «Протокол Интернета версии 4 (TCP/IPv4)», выделите его кликом и нажмите кнопку «Свойства». ![Chrome Z La Yg Pe Vue](https://content.timeweb.com/assets/12ada00f-eef1-40ec-b1a0-ced4c6d7566e?width=989&height=742) _Окно «Ethernet: свойства» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 5. Отметьте пункт «Использовать следующие адреса DNS-серверов» и пропишите нужные DNS. ![32fd2fce Ca58 4b65 Be58 E78cd4ba0571](https://content.timeweb.com/assets/736bb958-27b1-41d9-a04f-71d3fbb860d1?width=988&height=739) _Настройка DNS-серверов в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 6. Нажмите «Ок» для сохранения и закройте все предыдущие окна. Чтобы проверить, что настройки изменились, откройте командную строку (кликните правой кнопкой на «Пуск» и выберите «Командная строка») и выполните команду: ```shell ipconfig /all ``` Если все настроено корректно, в выводе отобразятся заданные вами DNS-серверы: ![2119c754 34cc 42d6 B9c7 18304a2067c8](https://content.timeweb.com/assets/a35ee47f-5a92-4bd6-b540-8b4e20f65fae?width=989&height=744) _Окно командной строки в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ ## Windows Server 2016 1. [Подключитесь к серверу по RDP](https://timeweb.cloud/docs/windows-guides/connecting-to-the-server-via-rdp) или через веб-консоль в панели управления. 2. Кликните правой кнопкой мыши на «Пуск» и выберите «Сетевые подключения». ![0ffa2e76 A789 4725 81a0 77441c515b7a](https://content.timeweb.com/assets/5093214d-a4ee-42bf-998e-5b5ad7f6b653?width=1013&height=773) _Меню в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 3. Кликните правой кнопкой мыши на Ethernet-адаптер и выберите «Свойства». ![Chrome Trev U7tzpc](https://content.timeweb.com/assets/64837745-4fef-4855-b466-ca67b5c87ce5?width=1008&height=756) _Окно «Сетевые подключения» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 4. В списке компонентов найдите «IP версии 4 (TCP/IPv4)», выделите его кликом и нажмите кнопку «Свойства». ![Chrome 73g W Qiyq Bb](https://content.timeweb.com/assets/f9451942-31a5-49f3-b554-c466ffd0dda9?width=1012&height=771) _Окно «Ethernet: свойства» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 5. Отметьте пункт «Использовать следующие адреса DNS-серверов» и пропишите нужные DNS. ![8935bd17 0318 43bc 821c C5895304c3b0](https://content.timeweb.com/assets/268053fd-ea66-4004-a4f2-4eae78e3d297?width=1011&height=772) _Настройка DNS-серверов в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 6. Нажмите «Ок» для сохранения и закройте все предыдущие окна. Чтобы проверить, что настройки изменились, откройте командную строку (кликните правой кнопкой на «Пуск» и выберите «Командная строка») и выполните команду: ```shell ipconfig /all ``` Если все настроено корректно, в выводе отобразятся заданные вами DNS-серверы: ![47e118c5 B5e7 40ba 9d84 2ce283ec24e7](https://content.timeweb.com/assets/4fd4e6b2-1eb7-4261-9325-3abe75840401?width=1008&height=774) _Окно командной строки в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ ## Windows Server 2019 1. [Подключитесь к серверу по RDP](https://timeweb.cloud/docs/windows-guides/connecting-to-the-server-via-rdp) или через веб-консоль в панели управления. 2. Кликните правой кнопкой мыши на «Пуск» и выберите «Сетевые подключения». ![69f97eef 753f 44df 8320 6d51bfbded1e](https://content.timeweb.com/assets/48269e10-df0f-439c-bbb2-5f16ede89cca?width=1016&height=770) _Меню в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 3. Выберите пункт «Настройка параметров адаптера». ![5d98d69a A540 44fb A6fc A446d1e48c6f](https://content.timeweb.com/assets/aaf6d599-6af2-4a8b-aabd-44be63c61883?width=1006&height=766) _Окно «Состояние сети» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 4. Кликните правой кнопкой мыши на Ethernet-адаптер и выберите «Свойства». ![Chrome D0n Rg18i Ei](https://content.timeweb.com/assets/6a8cedd9-a32e-47f4-a0bc-de892befe183?width=1013&height=768) _Окно «Сетевые подключения» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 5. В списке компонентов найдите «IP версии 4 (TCP/IPv4)», выделите его кликом и нажмите кнопку «Свойства». ![Chrome Rk Puu Df V V7](https://content.timeweb.com/assets/961f5ec9-1b33-46ca-b185-b0c96c5d4e2c?width=1016&height=765) _Окно «Ethernet: свойства» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 6. Отметьте пункт «Использовать следующие адреса DNS-серверов» и пропишите нужные DNS. ![D51699f9 C759 41c5 83e7 101b53d53231](https://content.timeweb.com/assets/badb8c61-c457-4bb1-ab67-6e6593381aea?width=1015&height=774) _Настройка DNS-серверов в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 7. Нажмите «Ок» для сохранения и закройте все предыдущие окна. Чтобы проверить, что настройки изменились, откройте PowerShell (кликните правой кнопкой на «Пуск» и выберите «Windows PowerShell») и выполните команду: ```shell ipconfig /all ``` Если все настроено корректно, в выводе отобразятся заданные вами DNS-серверы: ![C3f1e05b 6446 494a A69a 20e7ddb1a56a](https://content.timeweb.com/assets/7ed6aad7-96e0-44db-876d-34b619d7a153?width=1013&height=771) _Окно «PowerShell» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ ## Windows Server 2022 En 1. [Подключитесь к серверу по RDP](https://timeweb.cloud/docs/windows-guides/connecting-to-the-server-via-rdp) или через веб-консоль в панели управления. 2. Кликните правой кнопкой мыши на «Пуск» и выберите «Network Connections». ![159e89e7 1813 4deb A32f 4c6c65d201c9](https://content.timeweb.com/assets/b7aeff00-da92-41ef-b6a0-c4aa3ebe7418?width=987&height=747) _Меню в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 3. Кликните «Change adapter options». ![Da9e2d4c 6076 4aac Bf24 Cc2c40a5f11c](https://content.timeweb.com/assets/6de1b4bf-b527-4a2a-85bd-2370c5b4b2cf?width=989&height=751) _Окно «Network status» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 4. Кликните правой кнопкой мыши на Ethernet-адаптер и выберите «Properties». ![Chrome Rr Gg9r Cpna](https://content.timeweb.com/assets/b34d1fa3-6180-4ed4-8665-24aca313b2db?width=987&height=750) _Окно «Network Connections» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 5. В списке компонентов найдите «Internet Protocol Version 4 (TCP/IPv4)», выделите его кликом и нажмите кнопку «Properties». ![Chrome R Gr Ks Ul Igd](https://content.timeweb.com/assets/661aa37c-7ecb-4393-bc67-9a84c9a013e4?width=993&height=752) _Окно «Ethernet: Properties» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 6. Отметьте пункт «Use the following DNS server addresses» и пропишите нужные DNS. ![7c22e6b7 55fb 4c4e 8925 D003f2d87fb7](https://content.timeweb.com/assets/95dd8b01-18c4-415b-b71b-3baa74596f35?width=988&height=757) _Настройка DNS-серверов в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ 7. Нажмите «Ок» для сохранения и закройте все предыдущие окна. Чтобы проверить, что настройки изменились, откройте PowerShell (кликните правой кнопкой на «Пуск» и выберите «Windows PowerShell») и выполните команду: ```shell ipconfig /all ``` Если все настроено корректно, в выводе отобразятся заданные вами DNS-серверы: ![56699187 052f 4bae 90c8 Bc1d528fb543](https://content.timeweb.com/assets/3e4775e6-dcee-4431-ab34-0d06183d6b10?width=988&height=751) _Окно «PowerShell» в интерфейсе ОС [Windows Server](https://www.microsoft.com/en-us/windows-server)_ # Панели управления Source: https://timeweb.cloud/docs/control-panels В этом разделе мы собрали инструкции для различных панелей управления: - [Ispmanager](https://timeweb.cloud/docs/control-panels/ispmanager) - [Fastpanel](https://timeweb.cloud/docs/control-panels/fastpanel) - [ISPConfig](https://timeweb.cloud/docs/control-panels/ispconfig) - [VestaCP](https://timeweb.cloud/docs/control-panels/vestacp) - [Hestia](https://timeweb.cloud/docs/control-panels/hestia-cp) - [Окружение BitrixVM](https://timeweb.cloud/docs/control-panels/bitrixvm) - [Размещение сайта в aaPanel](https://timeweb.cloud/docs/control-panels/aapanel-cp) - [Размещение сайта в BrainyCP](https://timeweb.cloud/docs/control-panels/brainycp) - [Размещение сайта в Plesk](https://timeweb.cloud/docs/control-panels/plesk-cp) # Работа с ispmanager Source: https://timeweb.cloud/docs/control-panels/ispmanager В разделе собраны инструкции по работе с панелью управления ispmanager. - [Миграция на ispmanager 6](https://timeweb.cloud/docs/control-panels/ispmanager/migration-to-ispmanager6) - [Начало работы. Первичная настройка isp](https://timeweb.cloud/docs/control-panels/ispmanager/initial-isp-setup) - [Создание пользователей](https://timeweb.cloud/docs/control-panels/ispmanager/creating-users) - [Размещение сайта на сервере](https://timeweb.cloud/docs/control-panels/ispmanager/adding-site-ispmanager) - [Добавление алиасов](https://timeweb.cloud/docs/control-panels/ispmanager/adding-aliases) - [Установка SSL-сертификатов](https://timeweb.cloud/docs/control-panels/ispmanager/installing-ssl-certificates) - [Добавление IP-адресов](https://timeweb.cloud/docs/control-panels/ispmanager/adding-ip-addresses) - [Запрет доступа по IP](https://timeweb.cloud/docs/control-panels/ispmanager/deny-access-by-ip) - [Планировщик Cron](https://timeweb.cloud/docs/control-panels/ispmanager/cron-scheduler) - [Создание FTP-пользователей](https://timeweb.cloud/docs/control-panels/ispmanager/creating-ftp-users) - [Настройка редиректов](https://timeweb.cloud/docs/control-panels/ispmanager/setting-up-redirects) - [Настройка резервного копирования](https://timeweb.cloud/docs/control-panels/ispmanager/backup-setup) - [Настройка почты на сервере](https://timeweb.cloud/docs/control-panels/ispmanager/mail-setup-ispmanager) - [Смена пароля пользователя базы данных](https://timeweb.cloud/docs/control-panels/ispmanager/changing-database-user-password) - [Смена версии PHP](https://timeweb.cloud/docs/control-panels/ispmanager/change-php-version) - [Установка модулей PHP](https://timeweb.cloud/docs/control-panels/ispmanager/installing-php-modules) - [Настройка параметров PHP](https://timeweb.cloud/docs/control-panels/ispmanager/setting-php-options) - [Режимы работы PHP](https://timeweb.cloud/docs/control-panels/ispmanager/php-modes) - [PHP в режиме FastCGI](https://timeweb.cloud/docs/control-panels/ispmanager/php-fastcgi-mode) - [PHP в режиме Nginx + PHP-FPM](https://timeweb.cloud/docs/control-panels/ispmanager/nginx-php-fpm-mode) - [Кэширование и сжатие](https://timeweb.cloud/docs/control-panels/ispmanager/caching-and-compression-in-isp) - [Логи](https://timeweb.cloud/docs/control-panels/ispmanager/logs-ispmanager) - [Устранение неполадок в работе ispmanager](https://timeweb.cloud/docs/control-panels/ispmanager/troubleshooting-ispmanager) - [Установка ispmanager вручную](https://timeweb.cloud/docs/control-panels/ispmanager/installing-ispmanager-manually) - [Настройка обновлений ispmanager](https://timeweb.cloud/docs/control-panels/ispmanager/configuring-isp-updates) - [Настройка доступа к панели по HTTPS](https://timeweb.cloud/docs/control-panels/ispmanager/nastrojka-dostupa-k-paneli-po-https) # Миграция на ispmanager 6 Source: https://timeweb.cloud/docs/control-panels/ispmanager/migration-to-ispmanager6 С 15 июня 2021 года завершается продажа и продление лицензий ispmanager 5. С 1 января 2022 г. поддержка пятой версии будет прекращена. Чтобы и дальше использовать возможности ispmanager, вам необходимо перейти на версию ispmanager 6. Для этого необходимо заказать лицензию версии 6 в подходящей редакции, после чего обновить панель. ## Шаг 1. Заказ лицензии ispmanager 6 Лицензирование в ispmanager 6 немного отличается от предыдущей версии: теперь редакции и стоимость лицензии зависят от количества размещаемых вами доменов. Доступные редакции ispmanager: | **Наименование лицензии** | **Количество доменов (сайтов)** | **Стоимость в месяц** | | --- | --- | --- | | ispmanager 6 lite | 10 | 390 рублей | | ispmanager 6 pro | 50 | 750 рублей | | ispmanager 6 host | Неограниченное количество | 1250 рублей | Заказать лицензии вы можете в панели управления в разделе «[Лицензии](https://timeweb.cloud/my/licenses)». ## Шаг 2. Обновление панели управления ispmanager Выполните обновление в вашей панели управления ispmanager, в разделе Помощь → О программе. Если версия вашей панели управления ниже, чем 5.295, обновление нужно выполнить дважды: сначала до последней версии ispmanager 5, а затем до ispmanager 6. Для того, чтобы всегда иметь последнюю версию панели и ее компонентов, рекомендуем настроить [автоматическое обновление ispmanager](https://timeweb.cloud/docs/control-panels/ispmanager/initial-isp-setup#pervichnaya-nastrojka). Чтобы получить дополнительную информацию или помощь в миграции на версию 6, создайте обращение из [панели управления](https://timeweb.cloud/my/support/help-question/other) либо напишите нам на [info@timeweb.cloud](mailto:info@timeweb.cloud). # Начало работы. Первичная настройка ispmanager Source: https://timeweb.cloud/docs/control-panels/ispmanager/initial-isp-setup Перед установкой ispmanager вы можете посмотреть, как работает панель, с помощью демо-версии на [сайте ispmanager](https://www.ispmanager.ru/try). ## Установка ispmanager и оплата лицензии **Автоматически** Панель управления ispmanager можно установить автоматически при заказе / создании нового VDS либо при переустановке операционной системы. Ispmanager устанавливается на ОС Ubuntu и Debian. 1. [Установите сервер](https://timeweb.cloud/my/servers/create?preset=4799&os=99&zone=msk-1&software=2) с нужной редакцией ispmanager. 2. Перейдите в раздел «Облачные серверы» и откройте вкладку «[Лицензии](https://timeweb.cloud/my/licenses)». 3. Кликните «Оплатить». ![Dc814591 0668 4000 9623 Dcc6dd707c71](https://content.timeweb.com/assets/a917215f-df64-456f-bbed-ad39bbb7dadb.png?width=1580&height=762) 4. Произведите оплату — с баланса аккаунта или отдельным счетом. Теперь вы сможете перейти по адресу панели, авторизоваться и активировать лицензию. **Вручную** Вы также можете установить панель вручную, воспользовавшись нашей [инструкцией](https://timeweb.cloud/docs/control-panels/ispmanager/installing-ispmanager-manually). После установки ispmanager перейдите в раздел «Лицензии», закажите лицензию нужной версии, указав при этом IP-адрес вашего сервера, и оплатите ее. Ключ активации доступен в панели управления Timeweb Cloud. Перейдите в раздел «Облачные серверы» → «Лицензии». Кликните на три точки у лицензии и выберите «Скопировать ключ». ## Авторизация в панели 1. Перейдите по адресу: `https://IP_адрес_сервера:1500/ispmgr`. Его также можно найти на Дашборде сервера. При первом обращении по адресу лицензии вы можете увидеть предупреждение о небезопасном подключении. Для продолжения работы откройте дополнительные сведения (кнопки «Дополнительно», «Advanced» и т.д.) и далее, в зависимости от используемого браузера, вы сможете либо сразу перейти к панели, либо подтвердить исключение безопасности. 2. В форме авторизации укажите данные для доступа к ispmanager, доступные на Дашборде сервера. ![A9593682 D13e 4162 9492 5b9a560d4e4f](https://content.timeweb.com/assets/1b79a899-cdcd-4b96-ae66-689757151f82?width=617&height=592) _Окно авторизации в панель управления [ispmanager](https://www.ispmanager.ru/)_ 3. Примите условия лицензионного соглашения. Лицензия может активироваться автоматически, однако если этого не произошло, выполните активацию вручную: 1. В панели управления Timeweb Cloud перейдите в раздел «Облачные серверы» → «Лицензии» 2. Кликните на три точки у лицензии и выберите «Скопировать ключ». 3. В панели ispmanager нажмите «Активировать лицензию», введите скопированный ключ и нажмите «Активировать». ## Первичная настройка На первом этапе работы с ispmanager нужно настроить несколько базовых параметров. В дальнейшем, при необходимости, их можно будет изменить через раздел «Все разделы» → «Настройки системы» в блоке «Управление сервером». ![66fb8690 2b30 42c1 B3f6 Cf744294eac7](https://content.timeweb.com/assets/aa4ccf5b-66f3-476f-a6a2-64bd8ed6bab5.png?width=1165&height=869) _Раздел «Первоначальная настройка сервера» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ - **Имя сервера** — укажите полное доменное имя (можно использовать имя вашего сайта). - **Часовой пояс** — выберите «Местное время». - **Регион / Местоположение** — укажите ваше текущее местоположение для корректного отображения времени. Мы также рекомендуем включить **автоматическое обновление системы**, чтобы поддерживать панель в актуальном состоянии. # Создание пользователей Source: https://timeweb.cloud/docs/control-panels/ispmanager/creating-users По умолчанию в панели создан основной пользователь — `root`, который обладает максимальным набором прав. Из соображений безопасности работа из-под основного пользователя не рекомендуется (как и в случае работы под `root` в консоли сервера), поэтому для управления сайтами имеет смысл создать дополнительного пользователя с ограниченными правами — ему не будет доступно непосредственное управление настройками сервера. Для создания пользователя перейдите в раздел «Пользователи» и нажмите «Создать пользователя». ![D30e3778 F2fc 48b6 B84a Ffac92f633c7](https://content.timeweb.com/assets/59d109cd-0b3a-402d-9a22-7490d66f52f6.png?width=1702&height=869) _Раздел «Пользователи» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ В открывшейся форме укажите логин пользователя и его пароль, а также необходимые настройки (можно оставить настройки по умолчанию). Логин — имя пользователя для входа в ispmanager, оно также будет использоваться для подключения через терминал. Имя — ФИО пользователя или любое другое значение. Имя будет отображаться только в ispmanager, при входе под `root`. Нажмите «Далее». На следующем шаге вы можете создать: - FTP-пользователя, чтобы иметь возможность подключаться под данным пользователем по FTP/SFTP. - Сайт. В пункте «Выбор скрипта» можно выбрать установку CMS (WordPress, Joomla, PrestaShop, Bitrix). - Почтовый домен, чтобы [настроить почту на сервере](https://timeweb.cloud/docs/control-panels/ispmanager/mail-setup-ispmanager). Если вы пользуетесь почтой Timeweb Cloud (раздел «[Почта](https://timeweb.cloud/my/mailman)» в вашей панели управления), почтовый домен вам не потребуется. ![Fcbbee27 D08b 4d1b 9239 3cca4dbb22b3](https://content.timeweb.com/assets/f9f58193-d1b1-4153-a508-21bb7e866679.png?width=1137&height=869) _Настройка параметров пользователя в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Ниже в блоке «Доступ» рекомендуем разрешить использование SSL. ![Eb2852f0 0977 4ca1 B01a 996a8456c7f1](https://content.timeweb.com/assets/44dbafdd-a80b-43e5-b9d1-bfe912e9a2d2.png?width=691&height=376) _Настройка параметров пользователя в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Нажмите «Далее»; на следующем шаге нажмите «Завершить» для подтверждения. Для входа в панель под именем нового пользователя кликните на три точки справа от пользователя и нажмите «Войти под пользователем» ![99b03a4f E297 4967 8b41 368986cfd2a8](https://content.timeweb.com/assets/fee4086f-e192-4458-8c3e-e8cc98646833.png?width=1598&height=762) _Раздел «Пользователи» и опция «Вход под пользователем» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Либо выделите пользователя и нажмите на иконку входа в верхнем меню. ![5766ee89 Fabb 4aaf A04f 4f2d5d84ffb0](https://content.timeweb.com/assets/540b82da-53a8-4312-a049-9e0211f21de9.png?width=1547&height=762) _Раздел «Пользователи» и опция «Вход под пользователем» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ # Размещение сайта на сервере Source: https://timeweb.cloud/docs/control-panels/ispmanager/adding-site-ispmanager Для размещения сайта на сервере с помощью ispmanager в первую очередь [создайте нового пользователя](https://timeweb.cloud/docs/control-panels/ispmanager/creating-users) и войдите в панель по его именем (выделите пользователя в разделе «Пользователи» и нажмите «Войти под пользователем»). Далее для добавления сайта выполните описанные ниже шаги. ## Домен > [!NOTE] > На стороне держателя NS-серверов вашего домена укажите для него в качестве А-записи IP-адрес вашего сервера. Если домен зарегистрирован через нас, это можно сделать в панели [my.timeweb.cloud](https://timeweb.cloud/my/) в разделе «Домены и SSL». Если нужный домен не был добавлен в ispmanager на этапе создания пользователя, добавьте его в разделе «Сайты» — «Создать сайт». ![5766ee89 Fabb 4aaf A04f 4f2d5d84ffb0](https://content.timeweb.com/assets/b647c7df-c869-4d6a-bdec-ee95dc570e64.png?width=1487&height=762) _Раздел «Сайты» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Если планируете размещать сайт на базе WordPress, выберите этот вариант. Он позволит добавить WordPress-сайт без ручной настройки. Дополнительную информацию можно найти [в документации ispmanager](https://www.ispmanager.ru/docs/ispmanager/novyi-sait-na-wordpress). В ином случае выберите «Настроить вручную». В открывшейся форме достаточно указать только доменное имя на вкладке «Базовые настройки». Поставьте курсор мыши в поле «Директория сайта», чтобы заполнить его автоматически. Дополнительные параметры задаются на вкладке «Расширенные настройки». Например, если ваш сайт имеет несколько доменов (т.е. используются алиасы), можно указать их в поле «Псевдонимы». Остальные настройки в большинстве случаев можно оставить по умолчанию — основные из них будет можно изменить позднее. ![83e5b1b3 6088 4d6c A6a7 Badcee7b4c46](https://content.timeweb.com/assets/b5c061b1-06a0-4ebd-be12-e55ae9cbee2a.png?width=1228&height=861) _Настройка параметров при создании сайта в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Нажмите «Создать». Если пользователю, под которым создается сайт, разрешено использовать SSL, далее будет предложено выпустить SSL-сертификат. Нужные поля будут заполнены автоматически; нажмите «Выпустить». Если по какой-то причине SSL не нужен — нажмите «Отмена». ## Файлы сайта Для загрузки файлов сайта на сервер в разделе **«**Сайты» выделите нужный домен и нажмите «Файлы сайта». ![Eb2852f0 0977 4ca1 B01a 996a8456c7f1](https://content.timeweb.com/assets/c9e30b0f-e77f-4be3-8612-14810e874dc9.png?width=1582&height=809) _Раздел «Сайты» и опция «Файлы сайта» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Созданный по умолчанию файл `index.html` можно удалить. Далее нажмите «Загрузить». Можно загрузить файлы с локального компьютера или по ссылке — в этом случае укажите URL. ![241c0182 404f 469d 913f F05e1edc6a1f](https://content.timeweb.com/assets/7471ce1a-c674-4e0b-b162-9c2ea6458acb.png?width=1555&height=806) _Раздел «Менеджер файлов» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Если вы загружаете архив, то для распаковки нажмите на три точки справа и выберите «Извлечь». На следующем шаге по умолчанию будет выбрана домашняя директория; просто нажмите «Распаковать». ## База данных В разделе «Базы данных» кликните «Создать базу данных». На следующем шаге укажите имя базы, имя пользователя и пароль (для удобства рекомендуем сразу указывать параметры базы данных, прописанные в конфигурационном файле сайта). Нажмите «Создать». ![E81397ab 7a69 4bc0 Ae0b 6ce393c7e557](https://content.timeweb.com/assets/be5ec10c-6684-4837-8603-97d38c909fd2.png?width=972&height=858) _Создание новой базы данных в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Для импорта дампа базы на сервер кликните на созданную базу, нажмите «Дамп» — «Импорт» и выберите файл дампа на вашем компьютере. ![E81397ab 7a69 4bc0 Ae0b 6ce393c7e557](https://content.timeweb.com/assets/ed63ef97-b5e1-47e3-8682-75154048e6f3.png?width=1582&height=809) _Раздел «Базы данных» и опция импорта дампа в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Проверьте работу сайта. # Добавление алиасов Source: https://timeweb.cloud/docs/control-panels/ispmanager/adding-aliases Если сайт использует несколько доменов, вы можете указать алиасы (псевдонимы) в настройках сайта в панели ispmanager. Для этого перейдите в раздел «Сайты» и кликните дважды на нужный сайт. В поле «Псевдонимы сайта» укажите домены через пробел. Либо кликните на иконку со стрелками справа, чтобы раскрыть поле, и укажите нужные домены друг под другом. Сохраните изменения. ![66b4d07e 158d 4922 8cb8 5c1f00dcc7c0](https://content.timeweb.com/assets/a3c2aa9a-221c-4337-93e8-f2b317969a1a.png?width=1020&height=862) _Настройки сайта в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ # Установка SSL-сертификатов Source: https://timeweb.cloud/docs/control-panels/ispmanager/installing-ssl-certificates Средствами ispmanager вы можете как установить уже имеющийся у вас сертификат, так и выпустить бесплатный SSL Let's Encrypt. ## Установка существующего сертификата Если для вашего домена выпущен SSL-сертификат, вы можете установить его на сайт на облачном сервере по инструкции ниже. 1. В первую очередь выдайте доступ к использованию SSL пользователю, под которым добавлялся сайт. Для этого зайдите в панель управления под `root`, перейдите в раздел «Пользователи», выберите в списке нужного пользователя и нажмите «Изменить». На вкладке «Доступ» отметьте чек-бокс «Может использовать SSL». 2. Войдите в панель под данным пользователем. 3. Перейдите в раздел «SSL-сертификаты» и нажмите «Добавить сертификат» → «Существующий». ![4e625c1f 8f92 48a4 B588 07113f0d18a2](https://content.timeweb.com/assets/910f1646-94ab-4dc3-85dd-f70ad0582610.png?width=1582&height=809) _Раздел «SSL-сертификаты» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 4. На следующем шаге заполните все поля и нажмите «Создать»: - - **SSL-сертификат** — содержимое сертификата. - **Ключ SSL-сертификата** — содержимое приватного ключа. - **Цепочка SSL-сертификатов** — цепочка сертификатов, которыми подписан данный сертификат. Как правило, они приходят в письме от центра сертификации в файле с расширением `.ca-bundle`. 5. Перейдите в раздел «Сайты», выберите нужный домен и кликните на нем дважды. 6. Выберите в списке нужный сертификат. ![D3b30d0d Cdff 493d Beaf 605961bd260e](https://content.timeweb.com/assets/a4b05c4b-c93e-4fa1-aea4-c297b6541386.png?width=1015&height=864) _Опция «SSL-сертификат» в настройках сайта в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 7. Включите опцию «Перенаправлять HTTP-запросы в HTTPS». 8. Нажмите «Сохранить». ## Выпуск и установка Let's Encrypt Скорее всего, вы выпустили Let's Encrypt на этапе [добавления домена](https://timeweb.cloud/docs/control-panels/ispmanager/adding-site-ispmanager#domen). Если же этого не было сделано, выпустить SSL для сайта можно так: 1. Зайдите в панель управления под `root`, перейдите в раздел «Пользователи», выберите в списке нужного пользователя и нажмите «Изменить». 2. На вкладке «Доступ» отметьте чек-бокс «Может использовать SSL». 3. Войдите в панель под данным пользователем. 4. В разделе «SSL-сертификаты» нажмите «Добавить сертификат» → «Let's Encrypt». ![423f4754 6aa2 44ae 9e67 E3fded917584](https://content.timeweb.com/assets/adcf2379-d2b8-4f7b-9563-e141136ec0e3?width=1592&height=847) _Раздел «SSL-сертификаты» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 4. В открывшемся окне выберите домен, для которого нужен SSL. Остальные поля можно оставить без изменений. 5. Нажмите «Выпустить». ![4765008e Ddd5 4dd2 B160 1e875b12cc70](https://content.timeweb.com/assets/183b4000-5982-488b-852a-40f2e03b2d80?width=1330&height=868) _Настройки для выпуска SSL-сертификата Let's Encrypt в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Сертификат будет выпущен автоматически и появится в списке в разделе «SSL-сертификаты». Обновление установленного Let's Encrypt будет происходить автоматически. ## Выпуск и установка Let's Encrypt Wildcard Wildcard — это сертификаты, которые действуют для домена и всех его поддоменов. Вы можете выпустить и установить SSL Let's Encrypt Wildcard автоматически, через интерфейс панели ispmanager, или вручную. Автоматический выпуск сертификата может занять значительное время, около 40 минут, с учетом необходимых проверок DNS-записей. Если вы не хотите ждать, Wildcard можно выпустить вручную. Обе инструкции доступны ниже. ### Способ 1: Автоматически 1. Зайдите в панель управления под `root`, перейдите в раздел «Пользователи», выберите в списке нужного пользователя и нажмите «Изменить». 2. На вкладке «Доступ» отметьте чек-бокс «Может использовать SSL». 3. Войдите в панель под данным пользователем. 4. В разделе «SSL-сертификаты» нажмите «Добавить сертификат» → «Let's Encrypt» ![423f4754 6aa2 44ae 9e67 E3fded917584](https://content.timeweb.com/assets/adcf2379-d2b8-4f7b-9563-e141136ec0e3?width=1592&height=847) _Раздел «SSL-сертификаты» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 4. В открывшемся окне отметьте пункт «Wildcard сертификат» и выберите домен, для которого нужен SSL. Остальные поля можно оставить без изменений. Нажмите «Выпустить». ![57b34639 F0f7 445e A745 B25892c0ebff](https://content.timeweb.com/assets/1b3de654-1274-4fb0-9bb9-c79b5566e1a0?width=1379&height=847) _Настройки для выпуска SSL-сертификата Let's Encrypt Wildcard в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 5. Запустится процесс выпуска Let's Encrypt Wildcard. Он займет некоторое время, до 10 минут. После в панели появится уведомление о необходимости прописать у домена нужные TXT-записи. ![78d85ea9 F472 4e9a Aa95 F431781a9966](https://content.timeweb.com/assets/a43cdc63-55ad-4798-b922-92e52c086599?width=1379&height=847) _Раздел «SSL-сертификаты» и уведомление о настройке TXT в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 6. Нажмите «Подробнее» и скопируйте нужные записи. Они будут иметь подобный вид: ```shell _acme-challenge.domain.com. TXT KoZ26MJmum64Wevjg-xh23pqymt5W7sN-xGF0BXdo4g _acme-challenge.domain.com. TXT WMawG90_ZpFDzvh5Lfg51DM11a8yTBVv4hz5E44B45c ``` 7. На стороне держателя NS-серверов создайте нужные TXT-записи. Если домен на наших NS, это можно сделать так: - В панели управления Timeweb Cloud перейдите в раздел «Домены и SSL» и кликните на значок шестеренки в строке с нужным доменом, чтобы открыть DNS-записи. - Нажмите «Добавить запись» и укажите: - - - Тип — TXT. - Хост — выберите «Ввести вручную» и укажите `_acme-challenge`. - Значение — вставьте значение записи из ispmanager (все, что идет после `TXT`). ![221f34ea D010 4734 B2f7 4f920ad9401e](https://content.timeweb.com/assets/0bd3a650-0ecb-480d-b293-debeff42a90a?width=1515&height=846) - - Нажмите «Добавить». - Создайте вторую TXT-запись таким же образом. 8. Дождитесь, когда панель проверит созданные записи. Если все в порядке — сертификат будет выпущен и установлен. Если что-то пойдет не так, будет выведено повторное уведомление о необходимости прописать TXT-записи. ispmanager будет автоматически проверять наличие TXT-записей и их корректность каждые 30 минут, пока сертификат не будет успешно выпущен. Выпущенный сертификат будет продлеваться автоматически. ### Способ 2: Вручную > [!NOTE] > Если домен делегирован на собственные NS-серверы, созданные на этом же сервере, то сертификат, выпущенный этим способом, не будет продлеваться автоматически. 1. Подключитесь к серверу по SSH и выполните команду ниже, заменив `domain.com` на имя вашего домена: ```shell certbot certonly --agree-tos --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory -d *.domain.com -d domain.com ``` 2. В отдельных случаях консоль может запросить email. Введите адрес `admin@domain.com`, заменив `domain.com` на ваш домен, и нажмите Enter. 3. При запросе введите `Y` и нажмите Enter. ![A13cfc2e Cd09 4577 Ba61 3b858cede88c](https://content.timeweb.com/assets/63ba5a12-33f8-4bc3-8422-e5da4e773720?width=774&height=167) 4. Консоль выведет первую TXT-запись. Пропишите ее на стороне держателя NS-серверов и **после этого** нажмите Enter. ![60769540 746d 4c96 91db Bcd1cbb3499c](https://content.timeweb.com/assets/e1eb34ec-cba7-421e-920c-39148c8a41f3?width=752&height=221) Если домен на наших NS, это можно сделать так: - - В панели управления Timeweb Cloud перейдите в раздел «Домены и SSL» и кликните на значок шестеренки в строке с нужным доменом, чтобы открыть DNS-записи. - Нажмите «Добавить запись» и укажите: - Тип — TXT. - Хост — выберите «Ввести вручную» и укажите `_acme-challenge`. - Значение — значение записи из консоли (на скриншоте выше — `huyUvZi65fdfNwTyNz6YpGDkPEYdX7t899a2fQI7lkU`). - Нажмите «Добавить». 5. Консоль выведет вторую TXT-запись. Также пропишите ее для домена. 6. Не закрывайте консоль и подождите 5-15 минут, чтобы данные обновились. 7. Перейдите на сайт [dnschecker.org](https://dnschecker.org/) и проверьте домен вида `_acme-challenge.domain.com`, заменив `domain.com` на ваш домен. 8. Если записи TXT обновлены — нажмите Enter в консоли, чтобы выпустить сертификат. 9. Консоль отобразит путь до файлов сертификата и ключа. Используя эти данные, установите сертификат, как описано в разделе [Установка существующего сертификата](https://timeweb.cloud/docs/control-panels/ispmanager/installing-ssl-certificates#ustanovka-sushchestvuushchego-sertifikata). ## Включение редиректа на HTTPS После установки сертификата не забудьте [включить редирект](https://timeweb.cloud/docs/control-panels/ispmanager/setting-up-redirects) для домена на защищенное соединение HTTPS. # Добавление IP-адресов Source: https://timeweb.cloud/docs/control-panels/ispmanager/adding-ip-addresses Вы можете [заказать дополнительный IPv4 или IPv6-адрес](https://timeweb.cloud/docs/cloud-servers/manage-servers/network#dopolnitelnye-ip-adresa) в панели управления Timeweb Cloud. После необходимо добавить IP-адрес на сервер. Для этого: 1. Авторизуйтесь в ispmanager под пользователем `root`. 2. Перейдите в раздел **«**Все разделы» → «IP-адреса» в блоке «Управление сервером». ![D3b30d0d Cdff 493d Beaf 605961bd260e](https://content.timeweb.com/assets/2b1e19f8-7c94-4e0a-9c91-b50795255d3e.png?width=1920&height=869) _Экран «Все разделы» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 3. Перейдите в «Пулы IP-адресов». ![D3b30d0d Cdff 493d Beaf 605961bd260e](https://content.timeweb.com/assets/cbcfbebd-fcb2-4f13-be2f-18b8ef04e803.png?width=1715&height=809) _Раздел «IP-адреса» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 4. Нажмите «Создать». 5. В поле «Пул IP-адресов» введите ваш IP-адрес. 6. Кликните мышью на свободном пространстве — маска сети и шлюз будут заполнены автоматически. 7. Нажмите «Создать». ![C33526b1 Fdae 4415 B5bb 96e57125c1ce](https://content.timeweb.com/assets/a4aa0155-4284-487d-9f96-9a50e3d0439e.png?width=1236&height=726) _Создание пула IP-адресов в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 8. Вернитесь в раздел «IP-адреса» и нажмите «Создать». 9. В пункте «Способ выделения» выберите «Из выбранной подсети». 10. В пункте «Подсеть» выберите ваш IP-адрес. 11. Нажмите «Создать». Если это уже не первый дополнительный адрес в панели, на этом этапе он будет добавлен и отобразится в разделе «IP-адреса». Если же вы добавляете первый IPv4- или IPv6-адрес на сервер, ispmanager сообщит, что требуются дополнительные сведения. 1. Нажмите «Заполнить». 2. В большинстве случаев маска и шлюз будут определены автоматически. Нажмите «Сохранить». ![5766ee89 Fabb 4aaf A04f 4f2d5d84ffb0](https://content.timeweb.com/assets/d7cc4c2f-478a-4393-832c-4bc0743d7a92.png?width=1115&height=421) _Окно указания маски сети и шлюза в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 3. Снова откроется окно добавления IP-адреса. 4. В пункте «Способ выделения» выберите «Из выбранной подсети». 5. В пункте «Подсеть» выберите ваш IP-адрес. 6. Нажмите «Создать». IP-адрес будет добавлен и отобразится в разделе «IP-адреса». # Запрет доступа по IP Source: https://timeweb.cloud/docs/control-panels/ispmanager/deny-access-by-ip Управлять доступом к сайту — разрешать и запрещать запросы с различных IP-адресов — вы можете в разделе «Брандмауэр». 1. Авторизуйтесь в ispmanager под пользователем `root`. 2. Перейдите во «Все разделы» → «Брандмауэр». ![E319591a F4ec 40a8 9768 88d3799f1180](https://content.timeweb.com/assets/607781ce-48cf-4088-9db5-9660b1993725.png?width=1920&height=869) _Экран «Все разделы» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 3. Нажмите «Создать правило». 4. Задайте параметры: - **Действие**: - **Разрешить** — разрешить доступ для указанного IP (это не запретит доступ для любых прочих IP без установки соответствующих запрещающих правил). - **Запретить** — запретить доступ для указанного IP. - **Частично разрешить** — разрешить запросы с указанных IP-адресов (можно ввести список). Если отметить чекбокс «Запретить доступ для всех», доступ будет запрещен для всех адресов, кроме перечисленных в правиле. Если чекбокс не отмечен, будут разрешены запросы от доверенных IP-адресов из указанной подсети источника; доступ для прочих IP будет заблокирован. - **Частично запретить** — запретить доступ для отдельных IP-адресов из подсети, указанной в «Адресе источника». - **Протокол**. При выборе конкретного протокола (TCP / UDP) можно указать порт, тогда блокировка будет осуществляться только при обращениях к указанному порту. - **Адрес источника**. IP или подсеть, для которых устанавливается правило. ![0f6a77ed Bcaf 4dcc A52f 0aec0fedc341](https://content.timeweb.com/assets/92ff132f-2fbd-4fcf-be95-cb13608d2b2b.png?width=1020&height=671) _Окно добавления нового правила брандмауэра в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Во избежание потери контроля над сервером ispmanager по умолчанию не позволит создать следующие правила: - Запретить свой IP-адрес (адрес, с которого произведен вход в панель). - Запретить сеть, в которую входит ваш адрес, если нет разрешающего правила для вашего адреса. - Создать запрещающее правило на любой порт для любого IP-адреса сервера, если нет ни одного разрешающего правила для этого сервера. # Планировщик Cron Source: https://timeweb.cloud/docs/control-panels/ispmanager/cron-scheduler Управлять задачами Cron, выполняемыми на сервере по расписанию, вы можете как от пользователя `root`, так и от дополнительного пользователя. ## Создание задачи Перейдите в раздел «Планировщик Cron» и нажмите «Создать», чтобы добавить задачу, или «Изменить», чтобы внести корректировки в уже существующее задание. ![0c40adb9 C13a 48a4 9a06 5296715f32b7](https://content.timeweb.com/assets/1b0b21c1-3182-42d4-96c4-03c308eeb6dd.png?width=1920&height=869) _Раздел «Планировщик CRON» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Заполните открывшуюся форму. ![3024ccf3 28ce 41cc B5f5 428ff61fe908](https://content.timeweb.com/assets/a1fc27be-8f91-4c5f-a12a-63d1fa573870.png?width=811&height=839) _Создание новой задачи CRON в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ - **Адрес e-mail** — указывается автоматически, если адрес [указан в настройках](https://timeweb.cloud/docs/control-panels/ispmanager/cron-scheduler#poluchenie-otchetov-ob-oshibkah). На этот адрес будут отправляться уведомления об ошибках. - **Команда** — введите путь до программы, которая должна выполняться по расписанию. Примеры команд для запуска Cron смотрите ниже. Для запуска PHP-скрипта необходимо перед скриптом также указать путь до интерпретатора, например: ```shell /usr/bin/php8.0 /var/www/new_user/data/www/mysite/script.php ``` - **Описание** — необязательное поле, здесь можно указать любой комментарий к заданию, чтобы вам было удобнее ориентироваться в общем списке в Планировщике. - **Расписание** — здесь задается периодичность выполнения задания. Ее можно настроить в базовом или экспертном режиме. В **базовом** **режиме** вы можете выбрать один из следующих вариантов выполнения задания: ![A6ea7f71 8983 4be9 87ca 9eb146a8b070](https://content.timeweb.com/assets/b50544cd-c60d-4ea7-99c6-cddfe69a46d0?width=523&height=406) _Настройка расписания CRON-задач в базовом режиме в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ При выборе опции «каждый час» задание будет выполняться в 0 минут каждого часа; «при загрузке» — при каждой загрузке операционной системы. Ниже задается конкретное время выполнения (часы и минуты). **Экспертный режим** дает возможность более тонкой настройки. Формат настройки (на примере минут): - **\*** — каждую минуту; - **\*/5** — каждые 5 минут; - **5** — с началом пятой минуты; - **5, 20, 35** — с началом указанных минут. Аналогичный формат применяется для остальных параметров — часов, месяцев и т.д. Значения указываются: - минуты — с 0 до 59, - часы — с 0 до 23, - дни месяцев — с 1 до 31, - месяцы — с 1 до 12, - дни недели — с 0 (воскресенье) до 6 (суббота). В примере ниже настроено выполнение задания каждые 5 минут: ![48cbc88c 19a3 4992 A5fa A9446057da6f](https://content.timeweb.com/assets/ed76ea95-42f7-493e-b4f5-ba2172002018?width=529&height=441) _Настройка расписания CRON-задач в экспертном режиме в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ ## Примеры команд для запуска Cron Пример 1. ```shell /usr/bin/wget -O /dev/null "https://mydomain.com/script.php" ``` Здесь используется утилита `wget`, чтобы выполнить скрипт `script.php` на удаленном сервере `mydomain.com`. - `/usr/bin/wget` — путь к исполняемому файлу `wget`.(`/usr/bin` — это стандартное место установки исполняемых файлов в Linux). - `-O /dev/null` — опция `-O` в используется для указания имени файла, в который будет сохранен результат загрузки. В данном случае указан путь к специальному файлу `/dev/null`, который просто отбрасывает все, что в него пишется. То есть, что результат загрузки будет отброшен и не сохранен никуда на диске. - `https://mydomain.com/script.php` — то URL, по которому размещен скрипт `script.php`. Такой формат задачи удобно использовать в Cron, когда важен только сам факт выполнения скрипта, а вывод не требуется. Пример 2. ```shell /usr/bin/curl -s "https://mydomain.com/script.php" ``` Здесь используется `curl`, чтобы выполнить скрипт `script.php` на удаленном сервере `mydomain.com`. - `/usr/bin/curl` — это путь к исполняемому файлу `curl`. - `-s` — опция `-s` используется для того, чтобы сделать запрос «тихим» (silent). Это означает, что `curl` будет работать в фоновом режиме и не будет выводить информацию о процессе загрузки на экран. - `https://mydomain.com/script.php` — URL, по которому находится скрипт `script.php`. Такой формат может быть удобен в cron-задачах, когда нужно выполнить скрипт удаленно и без вывода информации на экран. Пример 3. ```shell /usr/bin/php7.1 /home/user/web/mydomain.com/public_html/script.php ``` Здесь с помощью интерпретатора PHP запускается скрипт `script.php`, который находится на вашем сервере по пути: `/home/user/web/mydomain.com/public_html/script.php`. - `/usr/bin/php7.1` — указывает на исполняемый файл интерпретатора PHP версии 7.1. Это значит, что при выполнении скрипта `script.php` будет использоваться именно версия PHP 7.1. - `/home/user/web/mydomain.com/public_html/script.php` — путь к PHP-скрипту, который должен быть выполнен. ## Получение отчетов об ошибках Вы можете указать емейл для получения отчетов в случаях, если какие-то задания завершились с ошибкой. Для этого: Перейдите в раздел «Планировщик Cron» и кликните на иконку шестеренки. ![5766ee89 Fabb 4aaf A04f 4f2d5d84ffb0](https://content.timeweb.com/assets/5bdab531-3c0a-40ff-8c9d-0cd27ad00a00.png?width=1920&height=869) _Раздел «Планировщик CRON» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Укажите емейл в поле «Адрес e-mail» и нажмите «Сохранить». ![4048a936 C0b1 435f B903 7cddda9710cb](https://content.timeweb.com/assets/00b5c3b4-07b1-4da1-a0c7-36ece5dabd7f.png?width=1192&height=577) _Настройки планировщика в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ # Создание FTP-пользователей Source: https://timeweb.cloud/docs/control-panels/ispmanager/creating-ftp-users Создать дополнительного пользователя FTP можно как под `root`, так от имени существующего пользователя. 1. Перейдите в раздел «FTP-пользователи»: - - При работе из-под `root` кликните «Все разделы» → «FTP-пользователи». ![345dec13 F01f 421d Ae21 76e0f129fc4c](https://content.timeweb.com/assets/60ec1c67-3065-4494-b443-dab5dfd2f0cd.png?width=1895&height=869) _Экран «Все разделы» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ - - При работе из-под обычного пользователя кликните «FTP-пользователи» в меню слева. ![ftp users](https://content.timeweb.com/assets/282250f5-ad49-432c-a635-64ff13fc8a76.png?width=1699&height=817) _Раздел «FTP-пользователи» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 2. Нажмите «Создать FTP-пользователя». 3. Заполните форму: ![506e23a1 Dc10 4570 B211 43adcc35697b](https://content.timeweb.com/assets/552a0ac8-6c64-48a1-b604-f6d46ae9f87c.png?width=1011&height=676) _Окно создания нового FTP-пользователя в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ - - **Имя** — логин создаваемого пользователя, с которым он будет подключаться по FTP. - **Владелец** (при создании FTP-пользователя от `root`) — один из существующих пользователей ispmanager. - **Пароль** — введите или сгенерируйте пароль доступа для создаваемого пользователя. - **Подтверждение** — повторите пароль. - **Домашняя директория** — директория, которой будет ограничен доступ для создаваемого пользователя. Указывается относительно домашней директории владельца. По умолчанию домашняя директория каждого пользователя: `/var/www/имя_пользователя/data/`. Файлы сайта по умолчанию размещаются по пути: `/var/www/имя_пользователя/data/www/имя_домена/`. Чтобы выдать FTP-пользователю доступ только к директории конкретного сайта, можно в данном поле указать: `/www/имя_домена`. 4. Нажмите «Создать». # Настройка редиректов Source: https://timeweb.cloud/docs/control-panels/ispmanager/setting-up-redirects В панели ispmanager вы можете настроить следующие редиректы. ## Редирект на HTTPS Для включения редиректа на HTTPS перейдите в раздел «Сайты». Кликните дважды по нужному сайту. В окне настроек отметьте пункт «Перенаправлять HTTP-запросы в HTTPS». Он будет доступен только при наличии установленного [SSL-сертификата](https://timeweb.cloud/docs/control-panels/ispmanager/installing-ssl-certificates). ![D3b30d0d Cdff 493d Beaf 605961bd260e](https://content.timeweb.com/assets/a4b05c4b-c93e-4fa1-aea4-c297b6541386.png?width=1015&height=864) _Включение перенаправления на HTTPS в настройках сайта в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ ## Другие редиректы Вы можете настроить редиректы 301, 302, 303 в разделе «Сайты». Выделите в списке нужный домен, кликните на три точки, чтобы открыть дополнительные опции, и выберите «Настройка редиректов». ![D3b30d0d Cdff 493d Beaf 605961bd260e](https://content.timeweb.com/assets/7a1f7fe5-45ab-4a82-82d6-ef157a8ba9f8.png?width=1582&height=809) _Раздел «Сайты» и опция «Настройка редиректов» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ В следующем окне нажмите «Создать редирект» и укажите параметры. ![9de9563b 7b35 447b B2ab 57838504e890](https://content.timeweb.com/assets/165d93fb-10f4-4e99-bcd6-f0992acfba2b?width=523&height=335) _Создание нового редиректа в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ - **Код** — выберите тип перенаправления (в большинстве случаев рекомендуется использовать 301, для корректной обработки перенаправления браузерами). - **Путь** — укажите файл, при обращении к которому web-сервер должен перенаправить браузер. Путь к файлу или директории должен начинаться с `/` и указываться относительно директории `www` в домашней директории пользователя. - **URL** — укажите URL, на который должно происходить перенаправление. URL может быть внутренним (на этом же домене) и в этом случае начинаться с `/`, либо внешним и тогда начинаться с `http://`, `https://` и пр. Например, для редиректа с домена `mydomain.com` на `domain2.com` необходимо указать код 301, путь — `/`, URL — `http://domain2.com`. Более сложные перенаправления можно настроить [с помощью файла .htaccess](https://timeweb.cloud/docs/unix-guides/setting-up-redirects). # Настройка резервного копирования Source: https://timeweb.cloud/docs/control-panels/ispmanager/backup-setup Для настройки резервного копирования перейдите под пользователем `root` в раздел «Резервные копии». При первом обращении к разделу или по клику на значок шестеренки вы сможете указать основные параметры резервного копирования. ## Выбор хранилища для бэкапов В первую очередь выберите, где будут размещаться резервные копии. ![F5cda706 C7da 441d Ac99 Db08bc96d21a](https://content.timeweb.com/assets/fcf787e7-ef7e-4e74-aad6-2de2a9c35e02?width=513&height=312) _Выбор хранилища для бэкапов в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Вы можете хранить копии на самом сервере (локальный каталог), в облачных и S3-хранилищах или на сторонних серверах, настроив копирование по FTP/SFTP. При выборе **локального каталога** бэкапы будут занимать дисковое пространство на сервере; также этот вариант не самый надежный — при критичном сбое на сервере вы рискуете потерять свои данные вместе с созданными резервными копиями. Рекомендуется настроить копирование на какое-либо удаленное хранилище. При выборе **облачного хранилища** (Dropbox, Google Drive) потребуется получить код доступа, перейдя по ссылке в интерфейсе ispmanager, и указать директорию, в которой должны сохраняться бэкапы. ![google](https://content.timeweb.com/assets/9e553b1f-7377-4432-a96e-ee213c243625.png?width=578&height=318) _Настройки при выборе Google Drive в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ При выборе вариантов **FTP/SFTP** будет нужно указать адрес удаленного сервера, выбрать способ авторизации: по паролю (в этом случае нужно указать имя пользователя и пароль) или по ключу (здесь потребуется указать пользователя и его закрытый ключ), а также директорию хранения бэкапов. ![63dd94f8 Eb04 4c79 Af50 6bff0a301514](https://content.timeweb.com/assets/1dc941ee-80aa-433c-87a2-4e7aa541f864.png?width=539&height=698) _Настройки при выборе FTP / SSH в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ При выборе **S3-совместимого хранилища** потребуется указать реквизиты подключения к бакету: адрес хранилища, имя бакета, идентификатор ключа и секретный ключ, а также регион. ![s3](https://content.timeweb.com/assets/f652059e-5b15-4b75-9d8a-908a8dbd3425.png?width=693&height=816) _Пример настроек для загрузки бэкапов в S3-хранилищ Timeweb Cloud в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Если вы настраиваете сохранение бэкапов в [S3-хранилище Timeweb Cloud](https://timeweb.cloud/docs/s3-storage), указывайте: - URL хранилища — `https://s3.twcstorage.ru`. - Идентификатор ключа — Access key из настроек бакета. - Секретный ключ — Secret access key из настроек бакета. - Корзина — имя бакета, которое нужно выбрать из списка. **Важно:** невозможно использовать опцию «Создать новую корзину (bucket)» в ispmanager. Бакет необходимо предварительно создать в вашей панели управления в разделе [Хранилище S3](https://timeweb.cloud/my/storage/). - Класс хранилища — по умолчанию; - Метод адресации корзины— URL-путь; - Регион корзины — `ru-1`. Найти все реквизиты подключения можно найти в панели управления Timeweb Cloud на Дашборде бакета. ## Дополнительные параметры На вкладке «Расширенные настройки» вы можете дополнительно настроить исключения из копирования, количество резервных копий и максимальный объем для резервных копий. ![4d164604 6578 4af9 9383 0111bb85fe6e](https://content.timeweb.com/assets/19854d4f-ef2d-4a47-a973-95d52c7ab639.png?width=707&height=747) _Параметры лимитов и ограничений при настройке бэкапов в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ При достижении установленного объема система начнет удалять наиболее старые копии. Если лимит не указан, но в хранилище закончилось свободное место, также будут удаляться старые копии. Здесь же можно исключить определенные файлы, папки и базы данных из копирования. Путь до файлов и папок указывается относительно директории `/var/www/имя_пользователя/`, соответственно, для исключения директории `/var/www/имя_пользователя/data/www/имя_домена/example` необходимо указать `data/www/имя_домена/example`. Как правило, имеет смысл исключать из копирования временные каталоги, кэш и др. Также, если у вас есть тестовые или временные базы данных, сохранение которых не критично, можно исключить из копирования и их — для этого укажите имена баз в соответствующем окне, по одному в строке. ## Расписание резервного копирования Резервное копирование по умолчанию выполняется ежедневно, в 3 часа ночи. Первая резервная копия за неделю (создается в ночь на воскресенье) — полная, остальные — дифференциальные (будут содержать только изменения, внесенные за прошедшие сутки). Изменить график резервного копирования можно в разделе «Расписание». ![B08c246c 5f7a 47fc A32d 505db4ad7261](https://content.timeweb.com/assets/ec859739-ccc0-459e-b2c6-93c6c9799137.png?width=1699&height=817) _Раздел «Резервные копии» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Укажите необходимые настройки. ![B08c246c 5f7a 47fc A32d 505db4ad7261](https://content.timeweb.com/assets/ae5960c6-f4cd-4081-b3da-d0e7705829ba.png?width=616&height=737) _Расширенные настройки бэкапов в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ ## Восстановление из резервной копии ### **Полное восстановление** Полное восстановление можно выполнить от пользователя `root`. 1. Перейдите в раздел «Резервные копии» и кликните дважды на нужный бэкап. 2. Выделите в списке пользователя, данные которого нужно восстановить, и нажмите «Восстановить». ![Dfsdtgfawbetvaery](https://content.timeweb.com/assets/67c1a1ef-f28a-4be5-aa7b-f04bcc5b8c74.png?width=1499&height=817) ** _Раздел «Резервные копии» и опция «Восстановить» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ ** ### **Выборочное восстановление** Для восстановления отдельных данных войдите в панель управления под нужным пользователем и перейдите в раздел «Резервные копии». Дважды кликните на бэкапе за необходимую дату, чтобы перейти к списку сохраненных данных. Они разделены по типам: Файлы, Базы данных. Выберите нужный тип и кликните на нем дважды. Вы перейдете к списку сохраненных директорий и файлов (можно перейти еще на несколько уровней вглубь) или баз данных. Выберите необходимые элементы для восстановления и нажмите «Восстановить». ![Dfsdtgfawbetvaery](https://content.timeweb.com/assets/37cb27ec-799c-41c2-bc1f-db40b4ccdf43.png?width=1499&height=817) _Раздел «Резервные копии» → «Сохраненные данные» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ # Настройка почты Source: https://timeweb.cloud/docs/control-panels/ispmanager/mail-setup-ispmanager По этой инструкции вы можете настроить почту на своем сервере. Другой вариант работы с почтой — использование [почтового сервиса Timeweb Cloud](https://timeweb.cloud/docs/mail). ## Настройка почтового сервера 1. Авторизуйтесь в ispmanager под пользователем `root`. 2. Перейдите в раздел «Конфигурация ПО». 3. Найдите пункт «Почтовый сервер SMTP/POP3/IMAP» и кликните на нем дважды. ![92 255 108 15 1500 04 06 2026 01 11 Pm](https://content.timeweb.com/assets/03533cd1-6db8-4019-94d8-df8889bb3cd0.png?width=1658&height=838) _Раздел «Конфигурация ПО» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 4. Включите необходимые опции: - - Dovecot (POP3/IMAP) - OpenDKIM (exim) - RoundCube Дополнительно можно включить: 1. - Greylisting или SpamAssassin — фильтры для защиты от спама. - ClamAv — антивирус для почты. - Sieve — сортировщик для настройки правил, применяемых к входящим письмам. ![63dd94f8 Eb04 4c79 Af50 6bff0a301514](https://content.timeweb.com/assets/af51f159-69b0-476d-ab75-b77ed6ea4a06.png?width=1205&height=766) _Настройки почтового сервера в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 5. Сохраните изменения. ## Создание поддомена для почтового сервера Этот поддомен будет использоваться как имя почтового сервера — к нему будут подключаться почтовые клиенты. Также он применяется для настройки SSL-сертификата и корректной работы почты. На стороне держателя NS-серверов вашего почтового домена создайте поддомен `mail.вашдомен`. В качестве A-записи укажите для него IP-адрес сервера с ispmanager. Если домен зарегистрирован через нас, создать поддомен и настроить A-запись можно в панели [my.timeweb.cloud](https://timeweb.cloud/my/) в разделе «Домены и SSL». ## Добавление почтового домена Теперь необходимо добавить почтовый домен в ispmanager, если вы не сделали этого на этапе [создания нового пользователя](https://timeweb.cloud/docs/control-panels/ispmanager/creating-users). Как при работе от **root**, так и при работе от **пользователя**, добавить почтовый домен можно через раздел «Почта» → «Почтовые домены». ![92 255 108 15 1500 04 06 2026 01 28 Pm](https://content.timeweb.com/assets/a70712bf-4a60-4d7b-8d36-1738f889ae69.png?width=1658&height=838) _Раздел «Почта» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Нажмите «Создать почтовый домен». В открывшейся форме заполните необходимые поля: ![92 255 108 15 1500 04 06 2026 01 31 Pm](https://content.timeweb.com/assets/45ec0919-9894-4b16-8d06-38c64b415a06.png?width=961&height=869) _Создание почтового домена в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ - **Имя** — имя домена. - **Владелец** (доступно только для `root`) — пользователь, которому будет принадлежать новый домен. - **Действие по умолчанию** — можно выбрать, что будет происходить с письмами, отправленными на несуществующий ящик на указанном домене: - Сообщить об ошибке — отправителю уйдет уведомление о том, что ящик не существует, письмо будет удалено. - Игнорировать и удалить — отправителю не будет отправлено уведомление; письмо будет удалено. - Перенаправить на адрес — можно указать почтовый адрес, на который будут перенаправляться такие письма. - Перенаправить на домен — можно указать почтовый домен, на который будут перенаправляться такие письма. - **Включить DKIM для домена** — оставьте включенным. - **Включить DMARC для домена** — оставьте включенным. - **Защищенное соединение SSL** — отметьте галочкой. - **SSL-сертификат** — выберите «Новый SSL Let's encrypt». - **Псевдоним для сертификата** — оставьте без изменений (будет по умолчанию указан поддомен вида `mail.вашдомен`, который мы создали на предыдущем шаге). - **Email** — ваш контактный email для Let's Encrypt. Нажмите «Создать». Далее вы попадете на страницу выпуска сертификата. Все поля будут заполнены автоматически — просто нажмите «Выпустить». ## Настройка DNS-записей для домена После создания почтового домена необходимо правильно настроить DNS-записи домена: MX, SPF, DMARC и DKIM. 1. В панели ispmanager перейдите в раздел «Управление DNS». 2. Выделите добавленный почтовый домен и нажмите «DNS-записи». ![92 255 108 15 1500 04 06 2026 01 35 Pm](https://content.timeweb.com/assets/10b8bc6b-e91a-4989-a35e-2dffe97f01f4.png?width=1658&height=838) _Раздел «Управление DNS» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 3. Найдите в списке записи MX, SPF, DKIM и DMARC — эти записи с их значениями будет нужно создать на стороне держателя NS-серверов. ![92 255 108 15 1500 04 06 2026 01 37 Pm](https://content.timeweb.com/assets/6d599bc8-8bb0-40c4-98b2-8a625eaf6d16.png?width=1920&height=869) _Просмотр DNS-записей домена в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Ниже мы рассмотрим настройку на примере Timeweb Cloud. ### **MX** 1. В панели [timeweb.cloud/my](https://timeweb.cloud/my) перейдите в раздел «[Домены и SSL](https://timeweb.cloud/my/domains/)». 2. Нажмите на значок шестеренки рядом с нужным доменом и выберите пункт «Настройки DNS». 3. Создайте новую MX-запись или отредактируйте имеющуюся, кликнув на нее. Укажите данные из ispmanager: - Приоритет (prioity) MX-записи. - Значение MX-записи (будет иметь вид `mail.вашдомен`). Не ставьте точку в конце домена. ![773deae5 00e6 4715 Abf3 Cb401b0353e1](https://content.timeweb.com/assets/d42dda2d-f087-424f-8c86-6e995c7352d8?width=604&height=418) 4. Удалите прочие MX-записи, если они были созданы. ### **SPF** В SPF-записи указывается список серверов, с которых разрешена отправка писем от имени вашего домена. Для настройки SPF: 1. Скопируйте значение SPF-записи из ispmanager (начинается с `v=spf1`). 2. В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите в раздел «[Домены и SSL](https://timeweb.cloud/my/domains/)». 3. Нажмите на значок шестеренки рядом с нужным доменом и выберите пункт «Настройки DNS». 4. Если TXT-запись с параметром `v=spf1` уже существует, ее необходимо отредактировать, кликнув на нее. Если подобной записи еще нет, необходимо нажать на «Добавить DNS-запись» справа вверху и выбрать пункт «TXT». 5. В окне настройки DNS-записи поле «Хост» оставьте пустым. 6. В поле «Значение» укажите значение SPF-записи из ispmanager. ![2f0bc2b6 0d2f 4048 9ca0 876c812b2f21](https://content.timeweb.com/assets/730e1f03-3303-4593-8b2c-076c09c8106f?width=590&height=551) ### **DKIM** 1. Скопируйте значение DKIM-записи из ispmanager (начинается с `v=DKIM1`). 2. В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите в раздел «[Домены и SSL](https://timeweb.cloud/my/domains/)». 3. Нажмите на значок шестеренки рядом с вашим доменом и выберите пункт «Настройки DNS». 4. Если TXT-запись с параметром `v=DKIM1` уже существует, ее необходимо отредактировать, нажав на значок карандаша. Если подобной записи еще нет, необходимо нажать на «Добавить DNS-запись» справа вверху и выбрать пункт «TXT». 5. В окне настройки DNS-записи в поле «Хост» кликните «Указать вручную» и укажите `dkim._domainkey`. 6. В поле «Значение» вставьте DKIM-запись, скопированную в ispmanager. ![17d8392a F748 47d2 Ab4e 047e7a944ee7](https://content.timeweb.com/assets/4c07102c-f6fd-451c-8070-8acbce1afe17?width=482&height=613) ### **DMARC** 1. Скопируйте значение DMARC в ispmanager (начинается с `v=DMARC1`). 2. В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите в раздел «[Домены и SSL](https://timeweb.cloud/my/domains/)». 3. Нажмите на значок шестеренки рядом с вашим доменом и выберите пункт «Настройки DNS». 4. Если TXT-запись с параметром `v=DMARC1` уже существует, ее необходимо отредактировать, нажав на значок карандаша. Если подобной записи еще нет, необходимо нажать на «Добавить DNS-запись» справа вверху и выбрать пункт «TXT». 5. В окне настройки DNS-записи в поле «Хост» выберите «Указать вручную» и введите `_dmarc`. 6. В поле «Значение» вставьте DMARC-запись, скопированную в ispmanager. ![4d56271f F011 49d2 Bb32 F22a16f75bc9](https://content.timeweb.com/assets/b88a1e2c-bd44-4008-b404-43efdb11267a?width=479&height=604) ## Создание почтового ящика Cоздать ящик можно в разделе «Почта» — «Создать ящик». ![841ab0bd 1a0e 4a62 Bf61 Ed0702dc3a88](https://content.timeweb.com/assets/5425615d-3e3b-4283-8ed5-fcc23a1c0289?width=1445&height=864) _Раздел «Почта» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ В открывшейся форме заполните основные поля: - **Имя** — имя ящика до `@`. Например, `admin`, `info`, `support` и так далее. В имени могут использоваться латинские буквы, цифры, тире и точки. - **Домен** — на каком домене должен быть создан ящик (т.е., что указано после `@`). - **Пароль** — введите или сгенерируйте пароль для ящика. ![92 255 108 15 1500 04 06 2026 01 40 Pm](https://content.timeweb.com/assets/695f9a2f-7c69-4f15-ae44-278493b43bd8.png?width=947&height=867) _Создание почтового ящика в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Дополнительно можно указать: - **Псевдоним** — можно указать дополнительные имена для ящика. Например, если вы укажете `sales`, то все письма, отправленные на *несуществующий* ящик `sales@mydomain.com`, будут доставлены на тот ящик, который вы сейчас создаете. Здесь можно указать несколько псевдонимов через пробел. Сам домен при этом указывать не требуется, т.к. все настройки в любом случае будут касаться только домена в поле «Домен». - **Слать копии на e-mail** — можно указать ящики, на которые будет приходить копии всех входящих писем, поступивших на создаваемый ящик. - **Макс.размер** — можно указать максимальный размер ящика. - **Примечание** — здесь можно указать любую дополнительную информацию. Нажмите «Создать». ## Почтовый клиент Для непосредственной работы с почтой необходимо добавить ящик в какой-либо почтовый клиент. Можно воспользоваться веб-интерфейсом Roundcube, который интегрирован в ispmanager. Чтобы перейти в Roundcube, в разделе «Почта» выделите созданный ящик и кликните «Почтовый клиент». ![92 255 108 15 1500 04 06 2026 01 43 Pm](https://content.timeweb.com/assets/527b5a2d-4b40-492e-aeb5-6b7f0f223ec8.png?width=1658&height=838) _Раздел «Почта» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Вы будете переадресованы в интерфейс Roundcube. Вы также можете использовать любой другой почтовый клиент. Настройки, которые при этом необходимо указать, доступны в разделе «Почта» — кликнуть на три точки справа — «Настройки для почтовых клиентов». ![92 255 108 15 1500 04 06 2026 01 44 Pm](https://content.timeweb.com/assets/8f821be8-15a3-4a32-841e-cc600c0ec22e.png?width=1658&height=838) _Раздел «Почта» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ В открывшемся окне вы найдете данные, которые потребуются для настройки почтового клиента. # Смена пароля пользователя базы данных Source: https://timeweb.cloud/docs/control-panels/ispmanager/changing-database-user-password По этой инструкции вы можете изменить пароль обычного и root-пользователя БД. ## Смена пароля пользователя Для смены пароля обычного пользователя: 1. Авторизуйтесь в ispmanager под пользователем `root`. 2. Перейдите в раздел «Базы данных», выделите в списке нужную базу и нажмите «Пользователи». ![databases](https://content.timeweb.com/assets/b492b73d-da1f-42a0-bf3a-fb86abf1cc93.png?width=1658&height=838) _Раздел «Базы данных» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Дважды кликните на строке с пользователем, для которого нужно внести изменения. Укажите новый пароль и сохраните изменения. ![92 255 108 15 1500 04 06 2026 03 39 Pm](https://content.timeweb.com/assets/5887819d-4088-45fd-ba7c-d8f70fb9dff6.png?width=579&height=308) _Окно смены пароля пользователя базы данных в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ ## Смена пароля root-пользователя Смена пароля `root`\-пользователя БД осуществляется в разделе «Базы данных» — «Серверы БД». ![92 255 108 15 1500 04 06 2026 03 40 Pm](https://content.timeweb.com/assets/ff11f559-2996-4584-9ba1-58a06c8c0d6f.png?width=1920&height=869) _Раздел «Базы данных» и опция «Серверы БД» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Дважды кликните по строке с сервером. Укажите новый пароль, отметьте пункт «Установить новый пароль» и нажмите «Сохранить»: ![92 255 108 15 1500 04 06 2026 03 42 Pm](https://content.timeweb.com/assets/b1df925c-ad5e-4e7e-a0dc-d6ac20bfc125.png?width=952&height=646) _Форма указания нового пароля root-пользователя базы данных в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ # Смена версии PHP Source: https://timeweb.cloud/docs/control-panels/ispmanager/change-php-version Для установки допольнительных версий PHP перейдите под пользователем `root` в раздел «Конфигурация ПО», выберите нужную версию и нажмите «Установить». ![php](https://content.timeweb.com/assets/304d0fb3-52c0-4bfa-a0af-ea313103829d.png?width=1465&height=869) _Раздел «Конфигурация ПО» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Выбранная версия обработчика будет установлена в директорию `/opt`. После установки появится возможность выбирать для каждого сайта различные версии PHP (в режиме CGI). Для того, чтобы пользователь мог изменять версию PHP, ему должны быть выданы соответствующие права. Для этого: 1. Перейдите пользователем `root` в раздел «Пользователи» 2. Кликните дважды на нужном пользователе. 3. Прокрутите настройки до вкладки «Доступ» и отметьте пункт «Может использовать PHP в режиме CGI». 4. Сохраните изменения. ![user settings php](https://content.timeweb.com/assets/59b615ab-48fd-4404-ae39-8dc98a44c0e7.png?width=1465&height=869) _Выдача прав пользователю в разделе «Пользователи» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ При наличии такой настройки пользователь сможет изменять версию PHP для своих сайтов по следующему алгоритму: 1. Перейти в раздел «Сайты». 2. Выбрать нужный сайт и кликнуть дважды по строке с ним. 3. В блоке «Обработчик (PHP)» в пункте «Режим работы PHP» выбрать «CGI». 4. В пункте «Версия PHP (CGI)» выбрать нужную версию из выпадающего списка. 5. Сохранить изменения. ![Cgi](https://content.timeweb.com/assets/aebb3259-846b-4312-ad3b-385a40396193.png?width=1465&height=869) _Настройки сайта в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ # Установка модулей PHP Source: https://timeweb.cloud/docs/control-panels/ispmanager/installing-php-modules Управлять модулями PHP (установка, удаление, включение и выключение) можно под пользователем root в разделе «PHP». Выделите нужную версию PHP и нажмите на «Расширения». ![Php2](https://content.timeweb.com/assets/b7577bde-ae44-4056-b67a-242aa7710ef9.png?width=1465&height=763) _Раздел «Настройки PHP» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Для установки модуля выделите его в списке и нажмите на иконку установки или включения, в зависимости от текущего статуса расширения. ![Php3](https://content.timeweb.com/assets/ea4c08f9-0731-4f95-9714-72190ceacd3c.png?width=1465&height=763) _Просмотр расширений PHP в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ В представленном списке все расширения отмечены значками соответственно их статусу: включено или выключено. Замочком обозначены расширения, которые входят в сборку PHP и не могут быть удалены или выключены пользователем. Включить/выключить расширение можно как по клику на иконку лампочки в верхнем меню, так и путем переключения тумблера в строке с расширением. # Настройка параметров PHP Source: https://timeweb.cloud/docs/control-panels/ispmanager/setting-php-options Для редактирования параметров PHP для определенного сайта в первую очередь необходимо проверить, какую версию PHP он использует, и в каком [режиме](https://timeweb.cloud/docs/control-panels/ispmanager/php-modes) работает PHP: CGI или модуль Apache. Это можно сделать в разделе «Сайты». ![Php4](https://content.timeweb.com/assets/adf729fc-d5e4-4df4-af4a-a2676dc22571.png?width=1920&height=869) _Раздел «Сайты» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Далее перейдите в раздел «PHP», выделите нужную версию PHP и нажмите кнопку «Расширенные настройки». ![Php9](https://content.timeweb.com/assets/69d4c575-50ed-46d2-968d-69b8b8a27897.png?width=1465&height=763) _Раздел «PHP» и опция «Расширенные настройки» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Здесь можно просмотреть все доступные параметры PHP; для удобства можно воспользоваться поиском справа сверху. ![Php8](https://content.timeweb.com/assets/bb673255-67bc-4911-a007-815b277f232e.png?width=1465&height=763) _Поиск параметров PHP в разделе «PHP» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Дважды кликните по строке с нужным параметром, чтобы перейти к редактированию. Укажите требуемое значение для нужного режима и нажмите «Сохранить. ![Php7](https://content.timeweb.com/assets/9127a664-d279-42c6-8511-e1912daa4400.png?width=1465&height=763) _Настройка переменной PHP в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Изменения вступят в силу сразу же. # Режимы работы PHP Source: https://timeweb.cloud/docs/control-panels/ispmanager/php-modes В панели ispmanager вам доступны несколько режимов работы PHP: - Модуль Apache (`mod_php`) - CGI - FastCGI (Apache) - FastCGI (Nginx + PHP-FPM) - LSAPI ## Модуль Apache (mod_php) При работе PHP в этом режиме PHP-код обрабатывается самим веб-сервером Apache (его модулем PHP), а не сторонними модулями. ### Особенности mod_php - Наиболее быстрый из режимов Apache (но уступает по скорости Nginx + PHP-FPM и LSAPI). - Есть возможность редактировать параметры через `.htaccess`. - Основные настройки PHP указываются глобально для всех доменов пользователей и могут быть изменены только администратором. - Можно выбрать свою версию PHP для каждого сайта. - Все процессы запускаются под пользователем `apache`, из-за чего невозможно определить конкретного пользователя, который запустил тот или иной процесс. - Медленная обработка статических файлов. ### **Как включить режим** mod_php 1. В разделе «Конфигурация ПО» кликните дважды по строке «Веб-сервер». 2. Выберите вариант «Apache-MPM-ITK» или «Apache MPM-Prefork». Пункт «Модуль PHP» должен быть включен. 3. Дайте доступ пользователю. В разделе «Пользователи» кликните дважды на нужного пользователя. 4. На вкладке «Доступ» отметьте пункт «Может использовать PHP как модуль apache». 5. При создании или изменении сайта выберите режим «модуль Apache» в блоке «Обработчик (PHP)» в пункте «Режим работы PHP». ## CGI При использовании этого режима веб-сервер запускает `php-cgi` для каждого скрипта и после получает результат обработки. ### **Особенности CGI** - CGI — самый медленный режим работы. Имеет низкую производительность и считается устаревшим. - Настройки PHP можно задать индивидуально для каждого пользователя, и пользователь может менять их самостоятельно. - Для каждого домена можно выбрать версию PHP. ### **Как включить режим CGI** 1. В разделе «Конфигурация ПО» кликните дважды по строке «Веб-сервер». 2. Выберите вариант «Apache-MPM-ITK» или «Apache MPM-Prefork». 3. Дайте доступ пользователю. В разделе «Пользователи» кликните дважды на нужного пользователя. 4. На вкладке «Доступ» отметьте пункт «Может использовать PHP в режиме CGI». 5. При создании или изменении сайта выберите режим «CGI» в блоке «Обработчик (PHP)» в пункте «Режим работы PHP». ## FastCGI (Apache) FastCGI — развитие технологии CGI, ее более производительная и современная версия. В отличие от CGI, в данном режиме для каждого скрипта не запускается отдельный процесс, благодаря чему меньше расходуются ресурсы. ### **Особенности FastCGI** - Работает медленнее, чем модуль Apache и PHP-FPM, но быстрее CGI. - Настройки PHP можно задать индивидуально для каждого пользователя, и пользователь может менять их самостоятельно. - Для каждого сайта можно выбрать версию PHP. - Каждый запрос выполняется от конкретного пользователя; ошибки в скриптах не приведут к сбоям в работе доменов других пользователей. - Есть возможность редактировать параметры через `.htaccess`. ### **Как включить режим FastCGI** Используйте инструкцию [PHP в режиме FastCGI](https://timeweb.cloud/docs/control-panels/ispmanager/php-fastcgi-mode). ## FastCGI (Nginx + PHP-FPM) Это режим работы PHP, при котором обработка PHP выполняется менеджером процессов PHP-FPM, а веб-сервер Nginx передает ему запросы через FastCGI. ### **Особенности режима PHP-FPM** - В разы производительнее других режимов работы. - Настройки PHP можно задать индивидуально для каждого пользователя, и пользователь может менять их самостоятельно. - Для каждого сайта можно выбрать версию PHP. - Быстрая обработка статики. - Не поддерживается `.htaccess`. Правила необходимо настраивать в конфигурационном файле Nginx. ### **Как включить режим PHP-FPM** Используйте инструкцию: [PHP в режиме Nginx + PHP-FPM](https://timeweb.cloud/docs/control-panels/ispmanager/nginx-php-fpm-mode). ## LSAPI Интерфейс для работы PHP в связке с веб-сервером OpenLiteSpeed. ### Особенности LSAPI - Один из самых производительных режимов работы (уступает по скорости только Nginx + PHP-FPM). - Настройки PHP можно задать индивидуально для каждого пользователя, и пользователь может менять их самостоятельно. - Для каждого сайта можно выбрать версию PHP. - Каждый запрос выполняется от имени пользователя. - Не используется `.htaccess`. Настройка выполняется через конфигурацию веб-сервера. ### Как включить режим LSAPI 1. В разделе «Конфигурация ПО» кликните дважды по строке «Веб-сервер». 2. Отключите Apache (пункт «Не использовать») и Nginx (снять галку в чекбоксе). 3. Отметьте чекбокс «OpenLiteSpeed» и сохраните изменения. 4. После того, как веб-сервер будет установлен, выдайте доступ пользователю: в разделе «Пользователи» кликните дважды на нужного пользователя. 5. На вкладке «Доступ» отметьте пункт «Может использовать PHP в режиме LSAPI». 6. При создании или изменении сайта выберите режим «LSAPI» в блоке «Обработчик (PHP)» в пункте «Режим работы PHP». # PHP в режиме FastCGI Source: https://timeweb.cloud/docs/control-panels/ispmanager/php-fastcgi-mode При необходимости использовать PHP в режиме FastCGI выполните следующие шаги: 1. Под пользователем `root` перейдите в раздел «Конфигурация ПО». 2. Кликните дважды по строке «Веб-сервер (WWW)». 3. В открывшемся окне настроек выберите пункт «Apache MPM-Prefork» и убедитесь, что включен пункт «Модуль PHP». ![92 255 108 15 1500 04 13 2026 04 47 Pm](https://content.timeweb.com/assets/4c644f36-6be7-4942-8120-c19ae086ce4e.png?width=1465&height=763) _Настройка параметров веб-сервера в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 4. Сохраните изменения. 5. После необходимо дать доступ к FastCGI пользователю. Для этого перейдите в раздел «Пользователи» и кликните дважды на нужном пользователе. 6. На вкладке «Доступ» отметьте пункт «Может использовать PHP в режиме FastCGI (Apache)» и сохраните изменения. ![54b19c1d 93fe 4042 Bee5 49a81dd0c834](https://content.timeweb.com/assets/38868065-9a74-410f-a0fa-6469a7f5c26e?width=645&height=359) _Настройка прав пользователя в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 7. Войдите в панель **под пользователем** и перейдите в раздел «Сайты». 8. Кликните дважды по строке с нужным сайтом. 9. В пункте «Обработчик» должен быть выбран «PHP», ниже во вкладке «Обработчик (PHP)» в пункте «Режим работы PHP» выберите «FastCGI (Apache)». 10. Сохраните изменения. ![92 255 108 15 1500 04 13 2026 04 52 Pm](https://content.timeweb.com/assets/e5af1857-3554-416b-b59a-d2111e4e527f.png?width=1465&height=833) _Просмотр настроек сайта в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ # PHP в режиме Nginx + PHP-FPM Source: https://timeweb.cloud/docs/control-panels/ispmanager/nginx-php-fpm-mode Режим **FastCGI (Nginx + PHP-FPM)** — один из самых производительных [режимов работы PHP](https://timeweb.cloud/docs/control-panels/ispmanager/php-modes), который уступает по скорости только LSAPI. Его использование зачастую может помочь оптимизировать сайт и ускорить его работу. Однако при переводе сайта на PHP-FPM потребуется выполнить дополнительные настройки: - Правила, прописанные в `.htaccess`, перестанут применяться. Вам будет необходимо указать аналогичные директивы в конфигурационном файле Nginx. Чтобы упростить процесс, можно воспользоваться каким-либо сервисом в сети, который позволяет сконвертировать директивы `.htaccess` для Nginx. - Если вы используете CMS, также будет нужно внести изменения в конфигурационный файл. В статье ниже мы приведем настройки для CMS WordPress, Joomla, Opencart и Битрикс. ## Установка Nginx Для работы с PHP-FPM на сервере должен быть установлен Nginx. Установить его можно так: 1. В разделе «Конфигурация ПО» кликните дважды по строке «Веб-сервер». 2. Выберите пункты «Nginx» и «PHP-FPM FastCGI». 3. Сохраните изменения и дождитесь завершения установки. ![92 255 108 15 1500 04 14 2026 10 16 Am](https://content.timeweb.com/assets/37924e88-9836-4ead-9bc9-aa23a65905cc.png?width=1369&height=824) _Настройки веб-сервера в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ ## Перевод сайта на PHP-FPM 1. В первую очередь необходимо проверить, какую версию PHP использует сайт в данный момент и в каком [режиме](https://timeweb.cloud/docs/control-panels/ispmanager/php-modes) работает PHP. Сделать это можно в разделе «Сайты» под пользователем `root`: ![Php4](https://content.timeweb.com/assets/adf729fc-d5e4-4df4-af4a-a2676dc22571.png?width=1920&height=869) _Раздел «Сайты» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 2. В разделе «Пользователи» кликните дважды на нужном пользователе. 3. На вкладке «Доступ» отметьте пункт «Может использовать PHP в режиме FastCGI (Nginx + PHP-FPM)». 4. В разделе «Сайты»: - кликните дважды по нужному сайту; - на вкладке «Обработчик (PHP)» выберите режим работы «FastCGI (Nginx + PHP-FPM)»; - укажите ту версию PHP, которая сейчас используется на сайте (см. шаг 1). ![92 255 108 15 1500 04 14 2026 10 21 Am](https://content.timeweb.com/assets/e0f6e689-f01d-4761-a7cf-f2db8b0ccae1.png?width=1369&height=833) _Настройки сайта в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 5. Проверьте работоспособность страниц сайта. Как правило, большинство страниц, кроме главной, будут отдавать ошибку 404. В этом случае нужно выполнить дополнительные настройки, а именно прописать редирект. 6. В разделе «Сайты» выделите строку с нужным доменом, кликните на три точки для дополнительных опций и выберите «Конфиг. файлы». ![92 255 108 15 1500 04 14 2026 10 22 Am](https://content.timeweb.com/assets/5460233d-8631-4f6a-8723-131e9d34a9c0.png?width=1369&height=833) _Раздел «Сайты» и меню действий с сайтом в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ 7. Внесите изменения в файл, в зависимости от используемой CMS, по инструкциям ниже. ### **WordPress, Joomla** В конфигурационном файле найдите блок, который начинается со строки: ```shell location / { ``` Сразу под этой строкой пропишите редирект: ```shell try_files $uri $uri/ /index.php?q=$uri&$args; ``` ### **Opencart** В конфигурационном файле найдите блок, который начинается со строки: ```shell location / { ``` Сразу под этой строкой пропишите редирект: ```shell if (!-e $request_filename){ rewrite ^/(.+)$ /index.php?_route_=$1 last; } ``` Обратите внимание, что при использовании SSL у вас будет два блока `location` в файле, и редирект необходимо прописать в них обоих. ### **Битрикс** В конфигурационном файле найдите следующий блок: ```shell location @php { ``` ***Под этим блоком*** (не под данной строкой) вставьте блок с редиректом: ```shell location ~* /\.ht { deny all; } location ~ ^/(?!(\.well-known)) { if (!-e $request_filename) { rewrite ^(.*)$ /bitrix/urlrewrite.php last; } } if (!-f $request_filename) { rewrite ^(.*)/index.php$ $1/ redirect; } ``` 8. Сохраните изменения и проверьте работу сайта. # Кэширование и сжатие Source: https://timeweb.cloud/docs/control-panels/ispmanager/caching-and-compression-in-isp Для оптимизации работы сайта вы можете включить в ispmanager опции кэширования и сжатия статического контента. Это позволит снизить общую нагрузку на сервер и ускорить время загрузки страниц. Эти настройки доступны, если установлен и используется веб-сервер Nginx. ## Сжатие Включение настройки позволяет сжимать статические файлы (изображения, видео, музыку и пр.) методом `gzip`, благодаря чему объем передаваемых данных может быть уменьшен в несколько раз. 1. Перейдите в раздел «Сайты». 2. Дважды кликните по нужному сайту, чтобы перейти к редактированию. 3. В блоке «Оптимизация и защита от DDoS» задайте желаемый уровень сжатия от 1 (минимальное) до 9 (максимальное; более высокая нагрузка на CPU). Рекомендуем выбирать средний вариант, **5**. В дальнейшем вы можете изменить эту настройку, если потребуется. 4. Нажмите «Сохранить». ![92 255 108 15 1500 04 14 2026 12 18 Pm](https://content.timeweb.com/assets/a70ee2f8-18c3-416d-8312-57936cc6a2c9.png?width=1369&height=833) _Настройка уровня сжатия в разделе «Сайты» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ ## Кэширование Кэширование позволяет сохранить результат операций, выполняемых при загрузке сайта, на выбранный период времени и отдавать пользователям сохраненный контент из кэша вместо повторного выполнения операций. 1. Перейдите в раздел «Сайты». 2. Дважды кликните по нужному сайту, чтобы перейти к редактированию. 3. В блоке «Оптимизация и защита от DDoS» отметьте пункт «Включить кэширование». 4. Выберите период хранения данных в кэше. По умолчанию ispmanager предлагает кэшировать данные каждые 24 часа. Если, например, вы хотите хранить данные неделю, укажите период «день» и значение «7». 5. Настройте, для каких типов файлов должно работать кэширование (можно оставить значения по умолчанию). 6. Нажмите «Сохранить». Стоит учитывать, что если в файлы на сайте, сохраненные в кэше, были внесены изменения, пользователи по-прежнему будут получать старые данные до тех пор, пока не истечет указанный период кэширования. ![92 255 108 15 1500 04 14 2026 12 19 Pm](https://content.timeweb.com/assets/cd724eba-98d6-4707-aa99-5e6c9d24912b.png?width=1369&height=833) _Настройки кэширования в разделе «Сайты» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ # Логи Source: https://timeweb.cloud/docs/control-panels/ispmanager/logs-ispmanager В панели ispmanager вы можете просматривать логи доступа и логи ошибок, а также логи работы самой панели. ## Логи сайтов Вы можете просмотреть логи доступа (access.log) и ошибок (error.log) для каждого сайта в разделе «Журналы WWW-запросов». ![92 255 108 15 1500 04 14 2026 12 21 Pm](https://content.timeweb.com/assets/4c0bddaa-e000-4618-9344-13e52d44008f.png?width=1369&height=834) _Раздел «Журналы WWW-запросов» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ По умолчанию для доменов включены оба типа логов и ежедневная ротация. При ротации журналы обнуляются, а архивы помещаются в директорию `logs` (`/var/www/имя_пользователя/data/logs`), которую можно просмотреть в разделе «Менеджер файлов». ![92 255 108 15 1500 04 14 2026 12 33 Pm](https://content.timeweb.com/assets/ef9bc572-f857-4f70-ab27-1b6c85f57e28.png?width=1369&height=834) _Раздел «Менеджер файлов» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Изменить параметры можно при добавлении или редактировании сайта в разделе «Сайты», на вкладке «Дополнительные настройки»: ![92 255 108 15 1500 04 14 2026 12 26 Pm](https://content.timeweb.com/assets/04b85023-4314-471b-ba9a-52a93bf55c3a.png?width=1369&height=834) _Параметры логирования в разделе «Сайты» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Вы можете: - отключить/включить ведение логов; - изменить период ротации (ежедневно, еженедельно, ежемесячно; - указать максимальное количество архивов, которое будет храниться на сервере; - включить/отключить awstats (генератор отчетов) и выполнить его настройку. ## Логи панели Логи авторизации в панели можно просмотреть в разделе «Журнал посещений» (можно найти, в том числе, через «Все разделы» → «Журнал посещений» в категории «Журналы»). При работе под пользователем будут отображены авторизации конкретного пользователя, при работе под `root` — все авторизации в панель. Под авторизацией понимается именно вход в панель со страницы логина; переключения между пользователем и `root` непосредственно в интерфейсе ispmanager не логируются. ![92 255 108 15 1500 04 14 2026 12 30 Pm](https://content.timeweb.com/assets/86ee3052-ef75-4815-80e9-62904b661006.png?width=1369&height=834) _Раздел «Журнал посещений» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ При необходимости проанализировать работу самой панели и ее модулей вы можете обратиться к логам панели управления. Их можно просмотреть от пользователя `root` через «Менеджер файлов» в директории `/usr/local/mgr5/var`. Основные логи ispmanager: - `ispmgr.log` — основной лог панели; - `backup2*.log` — логи резервного копирования; - `longtask.log` — лог выполнения длительных операций; - `pkg.log` — лог установки программного обеспечения. ![92 255 108 15 1500 04 14 2026 12 38 Pm](https://content.timeweb.com/assets/a73ef918-cbff-47c8-a632-2cb105a850ed.png?width=1369&height=834) _Файлы логов в разделе «Менеджер файлов» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ # Устранение неполадок в работе ispmanager Source: https://timeweb.cloud/docs/control-panels/ispmanager/troubleshooting-ispmanager Разбираем возможные неполадки в работе ispmanager и способы их устранения. ## Панель зависает Если панель ispmanager зависла, попробуйте перезапустить ее следующим образом: 1. Подключитесь к серверу [по SSH](https://timeweb.cloud/docs/unix-guides/ssh) под пользователем `root`. 2. Выполните команду: ```shell pkill -9 core ``` ## Панель не запускается Если панель ispmanager не открывается (идет бесконечная загрузка), проблема может заключаться во встроенном веб-сервере `ihttpd`. Для ее устранения необходимо выполнить следующие действия. 1. Подключиться к серверу [по SSH](https://timeweb.cloud/docs/unix-guides/ssh) под пользователем `root`. 2. Проверить, есть ли запущенные процессы `ihttpd`: ```shell ps aux | grep ihttpd ``` Пример вывода: ```shell root 12015 0.0 0.3 183552 13492 ? Ss 16:13 0:01 /usr/local/mgr5/sbin/ihttpd root 13274 0.0 0.0 15648 1000 pts/0 R+ 16:44 0:00 grep --color=auto ihttpd ``` 3. Завершить текущие процессы. Идентификатор (PID) запущенного процесса указан во втором столбце, соответственно, в примере выше необходимо завершить процесс с PID 12015: ```shell kill -9 12015 ``` 4. Завершить все процессы, связанные с ispmanager: ```shell killall core ``` 5. Очистить кэш, удалив содержимое директории `/usr/local/mgr5/var/.xmlcache/`: **5.1.** Перейти в директорию: ```shell cd /usr/local/mgr5/var/.xmlcache/ ``` **5.2.** Удалить всё содержимое командой: ```shell rm -rf ./* ``` Перед выполнением команды убедитесь, что вы перешли в нужный каталог. Целиком строка должна выглядеть так: ```shell root@server:/usr/local/mgr5/var/.xmlcache# rm -rf ./* ``` **5.3.** После чего вернуться в домашний каталог: ```shell cd ~ ``` 6. Перезапустить процесс `ihttpd`: ```shell service ihttpd restart ``` 7. Запустить ispmanager: ```shell /usr/local/mgr5/bin/core ``` 8. Проверить, какой порт прослушивает `ihttpd`: ```shell netstat -nap | grep ihttpd ``` Пример вывода: ``` tcp 0 0 176.53.162.38:1500 0.0.0.0:* LISTEN 12015/ihttpd ``` 9. Обратиться по данному порту. В примере видим, что прослушивается стандартный порт 1500; соответственно, для обращения к панели необходимо использовать `https://176.53.162.38:1500`. # Установка ispmanager вручную Source: https://timeweb.cloud/docs/control-panels/ispmanager/installing-ispmanager-manually **Ispmanager** — коммерческая система управления программным обеспечением, таким как веб-сервер, сервер баз данных и других. Это одна из наиболее популярных панелей управления хостингом, используемых в веб-студиях и интернет-агентствах России. Вы можете установить панель ispmanager автоматически при создании нового сервера или переустановке операционной системы либо выполнить установку вручную по этой инструкции. > [!NOTE] > Установку ispmanager необходимо выполнять на «чистый» сервер. > > Если на сервере уже размещены сайты, установка панели приведет к нарушению их работы, так как будет изменена текущая конфигурация веб-серверов. Дальнейшее описание подразумевает, что вы уже приобрели лицензию на ispmanager. Вы можете это сделать в вашей панели управления в разделе «[Лицензии](https://timeweb.cloud/my/licenses)». ## Поддерживаемые ОС Версия **lite**, **pro** и **host** могут быть установлены на серверы с операционными системами: - Ubuntu 22.04 и 24.04 (рекомендуемый вариант) - Debian 11, 12 - AlmaLinux 8, 9, 10 - CloudLinux 8, 9, 10 - Rocky Linux 8 - МСВСфера 9 ## Системные требования Минимальные системные требования зависят от предполагаемой нагрузки на сервер: - До 10 сайтов: 1 CPU, 2 ГБ RAM, 20 ГБ диска - Более 10 сайтов: от 2 CPU, 3 ГБ RAM, 50 ГБ диска Если планируется использовать несколько версий MySQL, для корректной работы панели рекомендуется от 4 ГБ RAM. ## Установка Для установки панели: 1. [Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh). Необходимые реквизиты можно найти на Дашборде вашего сервера. 2. Скачайте установочный файл ispmanager: ```shell wget https://download.ispmanager.com/install.sh -O install.sh ``` 3. Запустите скрипт установки: ``` sh install.sh --ignore-hostname ``` 4. Введите `s`, чтобы установить стабильную версию (stable). 5. Введите `1`, чтобы установить панель с рекомендуемыми параметрами (ispmanager lite (pro, host) with recommended software). Будет установлен веб-сервер, почтовый сервер, сервер СУБД и соответствующие службы. - Другой вариант — минимальная установка (ispmanager lite (pro, host) minimal version). Будет установлена только панель, дополнительное ПО вы сможете установить позже. В этом случае введите `2`. 6. Выберите веб-сервер: Nginx + Apache (MPM-ITK), OpenLiteSpeed или LiteSpeed. Если не уверены, выбирайте `1`. Вы сможете изменить веб-сервер в дальнейшем. 7. Выберите базу данных: SQLite (`1`) или MySQL (`2`). ispmanager рекомендует SQLite для 5-10 сайтов и пользователей, а MySQL — для крупных проектов. Начнется установка необходимых пакетов, дождитесь ее завершения. В конце установки будет выведен URL, по которому доступна панель. Он будет иметь вид: ```shell https://IP-адрес-сервера:1500/ispmgr ``` ![Powershell E036i S Ah Ul 04 14 2026 02 51 Pm](https://content.timeweb.com/assets/15308b89-f742-493e-bd35-83039c9592d8.png?width=499&height=122) Для авторизации используйте логин `root` и пароль пользователя `root` для вашего сервера — его можно найти на Дашборде. Подробнее о начале работе с панелью — в статье [Начало работы. Первичная настройка ispmanager](https://timeweb.cloud/docs/control-panels/ispmanager/initial-isp-setup). # Настройка обновлений Source: https://timeweb.cloud/docs/control-panels/ispmanager/configuring-isp-updates Для того, чтобы всегда иметь последнюю версию панели и ее компонентов, рекомендуем регулярно устанавливать обновления пакетов, которые вы используете. Вы можете делать это вручную или настроить автоматическое обновление. При этом вы также можете выбрать уровень обновления: только продукты ispsystem или все пакеты системы. ## Автоматическое обновление Автоматическое обновление позволяет обновлять программное обеспечение по расписанию. При включении автоматического обновления ежедневно запускается задание в планировщике cron. Время запуска задания в планировщике генерируется случайным образом. Для настройки автоматического обновления в панели ispmanager перейдите во «Все разделы» → «Настройки системы» под пользователем `root`. ![All](https://content.timeweb.com/assets/2ad44153-f20e-4860-96ba-f6796366ed91.png?width=1920&height=869) _Экран «Все разделы» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ В пункте «Обновлять ПО автоматически» выберите нужный вариант: - **не обновлять** — автоматическое обновление отключено; - **обновлять продукт ispmanager** — автоматическое обновление пакетов, установленных из репозиториев ispmanager; - **обновлять все пакеты системы** — автоматическое обновление всех пакетов операционной системы. ![92 255 108 15 1500 04 16 2026 11 44 Am](https://content.timeweb.com/assets/075e5a5a-5663-4ecf-a10a-bca9f384c263.png?width=1370&height=837) _Раздел «Настройки системы» в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ ## Обновление вручную Вы также можете выполнять обновления самостоятельно в удобное вам время. Чтобы обновить все пакеты, установленные из репозиториев ispmanager, необходимо: 1. Подключиться к серверу по [SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. Ввести в терминале команду: ```shell /usr/local/mgr5/sbin/pkgupgrade.sh coremanager ``` # Доступ к панели по домену Source: https://timeweb.cloud/docs/control-panels/ispmanager/nastrojka-dostupa-k-paneli-po-https Вы можете обращаться к ispmanager по своему домену вместо IP-адреса сервера. Адресом панели может быть `https://ваш_домен/ispmgr` или `https://ваш_домен`. Последний вариант подойдет, если на домене не размещен сайт, так как в противном случае вместо сайта будет открываться ispmanager. Перед настройкой убедитесь, что: - нужный домен [добавлен в раздел «Сайты»](https://timeweb.cloud/docs/control-panels/ispmanager/adding-site-ispmanager); - в качестве A-записи домена указан IP-адрес сервера с ispmanager; - для домена [выпущен и установлен SSL-сертификат](https://timeweb.cloud/docs/control-panels/ispmanager/installing-ssl-certificates); - на сервере используется веб-сервер Apache, Nginx или LiteSpeed. Далее: 1. Авторизуйтесь в ispmanager под пользователем `root`. 2. Перейдите в раздел «Сайты» и кликните дважды по нужному сайту. 3. Прокрутите вниз и во вкладке «Дополнительные настройки» найдите пункт «Доступ в ispmanager по имени сайта». Выберите нужный вариант доступа. 4. Сохраните изменения. ![92 255 108 15 1500 04 16 2026 01 58 Pm](https://content.timeweb.com/assets/2fdcff0c-2cbb-4ba3-a991-fcb6e4b0f840.png?width=895&height=869) _Настройки сайта в интерфейсе [ispmanager](https://www.ispmanager.ru/)_ Теперь ispmanager будет доступна по адресу `https://ваш_домен` или `https://ваш_домен/ispmgr`, в зависимости от ваших настроек. # Работа с Fastpanel Source: https://timeweb.cloud/docs/control-panels/fastpanel Fastpanel — бесплатная панель управления сервером, которая позволяет работать со всеми необходимыми опциями: управлять сайтами, почтой, базами данных, бэкапами и др. Панель имеет удобный интерфейс и русскую локализацию. - [Установка Fastpanel](https://timeweb.cloud/docs/control-panels/fastpanel/fastpanel-installation) - [Размещение сайта](https://timeweb.cloud/docs/control-panels/fastpanel/site-hosting-in-fastpanel) - [Смена пароля пользователя](https://timeweb.cloud/docs/control-panels/fastpanel/change-user-password-fastpanel) - [Управление пользователями](https://timeweb.cloud/docs/control-panels/fastpanel/managing-users-in-fastpanel) - [Резервное копирование](https://timeweb.cloud/docs/control-panels/fastpanel/backup-fastpanel) - [Установка SSL](https://timeweb.cloud/docs/control-panels/fastpanel/installing-ssl) - [Изменение настроек PHP](https://timeweb.cloud/docs/control-panels/fastpanel/changing-php-settings-in-fastpanel) - [Настройка почты](https://timeweb.cloud/docs/control-panels/fastpanel/mail-in-fastpanel) - [Настройка редиректов](https://timeweb.cloud/docs/control-panels/fastpanel/redirects-in-fastpanel) - [Смена пароля пользователя БД](https://timeweb.cloud/docs/control-panels/fastpanel/changing-database-user-password-in-fastpanel) - [Доступ по FTP и SFTP](https://timeweb.cloud/docs/control-panels/fastpanel/ftp-sftp-access) - [Добавление алиасов](https://timeweb.cloud/docs/control-panels/fastpanel/aliases-in-fastpanel) - [Кэширование и сжатие статики](https://timeweb.cloud/docs/control-panels/fastpanel/caching-and-compression-in-fastpanel) - [Логи](https://timeweb.cloud/docs/control-panels/fastpanel/logs-in-fastpanel) - [Доступ к панели по HTTPS](https://timeweb.cloud/docs/control-panels/fastpanel/dostup-k-fastpanel-po-https) # Установка Fastpanel Source: https://timeweb.cloud/docs/control-panels/fastpanel/fastpanel-installation Fastpanel — бесплатная панель управления сервером, которая позволяет работать со всеми необходимыми опциями: управлять сайтами, почтой, базами данных, бэкапами и др. Панель имеет удобный интерфейс и русскую локализацию. Для работы панели нужна лицензия, которая предоставляется бесплатно. > [!NOTE] > Вы можете подробнее ознакомиться с интерфейсом и функционалом панели с помощью [демо-версии на сайте Fastpanel](https://fastpanel.direct/demo). ## Автоматическая установка Fastpanel Панель управления Fastpanel можно установить автоматически при создании нового VDS либо при переустановке операционной системы. Fastpanel устанавливается в сборке с операционной системой Ubuntu. 1. Перейдите в раздел «Облачные серверы» и нажмите «Создать» или «Добавить». 2. На вкладке «Маркетплейс» выберите Fastpanel и предпочтительную версию ОС. ![99cfdd69 5df6 4025 B589 681cd1e89129](https://content.timeweb.com/assets/9d81cff2-64a3-4e03-a60e-b2487e1ad4e6.png?width=1528&height=868) 3. Задайте остальные настройки сервера, включая регион, конфигурацию (для самой Fastpanel достаточно минимального конфига) и сетевые параметры. У сервера обязательно должен быть публичный IPv4-адрес. 4. Нажмите «Заказать». После создания сервера на почту придут реквизиты доступа к Fastpanel (адрес, логин и пароль). Теперь нужно [выпустить лицензию](https://timeweb.cloud/docs/control-panels/fastpanel/fastpanel-installation#vypusk-licenzii) для панели. ## Установка Fastpanel вручную Вы также можете установить панель на свой сервер вручную, по инструкции ниже. Установить Fastpanel можно на серверы с системами: - Debian 9 и новее - Ubuntu 18.04 и новее - CentOS 7 - AlmaLinux 8 - Rocky Linux 8 Выполните следующие действия: 1. [Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) от пользователя `root`. 2. Запустите установщик командой: ```shell wget http://repo.fastpanel.direct/install_fastpanel.sh -O - | bash - ``` Дождитесь завершения установки, после чего в терминале отобразится информация с данными для доступа: ![Fast2](https://content.timeweb.com/assets/1f1b41c4-0be9-4138-803e-28c7e6035905?width=1567&height=116) Панель установлена. Теперь нужно выпустить лицензию для нее. ## Выпуск лицензии Для работы Fastpanel требуется лицензия. Стандартная лицензия бесплатна и действует бессрочно. Чтобы получить ее, зарегистрируйтесь на [официальном сайте Fastpanel](https://fastpanel.direct/). 1. Перейдите по адресу панели управления: ```shell https://IP_адрес_сервера:8888/ ``` Адрес панели можно найти: - - при автоматической установке — в письме или в панели Timeweb Cloud; - при ручной установке — в терминале после завершения установки. 2. На открывшейся странице нажмите «Запросить лицензию». ![Scr 20260804 Kzxh](https://content.timeweb.com/assets/0aa9e659-a708-4993-8ea4-57816db8fcfb.png?width=1842&height=1070) _Страница проверки лицензии [Fastpanel](https://fastpanel.direct/)_ 3. Вы будете перенаправлены на страницу авторизации Fastpanel: - если у вас уже есть аккаунт, введите данные для входа; - если аккаунта нет, нажмите «Sign Up» и зарегистрируйтесь с помощью электронной почты или аккаунта Google. После регистрации войдите в аккаунт. 5. На странице заказа лицензии нажмите «Add to cart» в карточке «Standard license». ![Scr 20260804 Lcmi](https://content.timeweb.com/assets/12343854-6c71-4a2a-8cf5-715739edfeb2.png?width=3420&height=1968) _Страница заказа лицензии [Fastpanel](https://fastpanel.direct/)_ 5. В открывшемся окне укажите публичный IP-адрес сервера, на котором установлена Fastpanel. Посмотреть IP-адрес можно на вкладке «Дашборд» сервера в панели Timeweb Cloud. ![Scr 20260804 Lpxa](https://content.timeweb.com/assets/2d85fc49-09de-4097-9851-3bb19bc4362a.png?width=2188&height=1682) 6. Нажмите «Checkout», затем — «Submit order». После оформления заказа лицензия будет выпущена для указанного IP-адреса. 7. Вернитесь на страницу Fastpanel: ```shell https://IP_адрес_сервера:8888/ ``` 8. После проверки лицензии откроется страница авторизации. Логин и пароль для входа в Fastpanel можно найти на вкладке «Дашборд» сервера в панели Timeweb Cloud. ![Scr 20260804 Lrek](https://content.timeweb.com/assets/f77989d3-4128-42b3-9e0d-1089d7ee5f2d.png?width=520&height=940) # Размещение сайта Source: https://timeweb.cloud/docs/control-panels/fastpanel/site-hosting-in-fastpanel Для размещения сайта на сервере с установленной панелью Fastpanel выполните описанные ниже шаги. 1. Авторизуйтесь в Fastpanel и нажмите «Создать сайт». 2. Выберите вариант создания сайта. Мы рассмотрим вариант создания сайта на PHP. ![10d73b39 D7be 4ac7 Ac46 374b2160e302](https://content.timeweb.com/assets/96c7b0b3-1209-4cf2-b7ab-5fd33281c7f9.png?width=1629&height=1151) _Создание сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 3. Введите домен и нажмите «Следующий шаг». ![64d82e5a B8c7 4c8e Be9f 8ddab1171dc9](https://content.timeweb.com/assets/526fb9a0-9560-40f7-b449-ead8f0de6b25.png?width=1629&height=836) _Создание сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 4. Просмотрите предложенную конфигурацию и внесите изменения при необходимости, кликнув на значок карандаша у блока, который нужно скорректировать. В блоке «Пользователь» рекомендуем оставить опцию «Создать нового», чтобы сайт был создан под дополнительным пользователем панели, вместо суперпользователя `fastuser`. В блоке «База данных» нажмите на значок карандаша и задайте нужные значения для имени базы данных, имени пользователя и его пароля. 5. Нажмите «Создать сайт». ![D4604187 B9ba 48ae Aada Ab29be5cdfc3](https://content.timeweb.com/assets/ed434c9d-919c-4d06-a25c-51ba2e79845b?width=1920&height=1222) _Создание сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 6. Перейдите в карточку сайта и откройте меню «Файлы». ![A72e62dd 0dc0 42c1 B05c 82e08478fbf2](https://content.timeweb.com/assets/46ff55d2-dc3b-4fc4-baba-ff0b07aea9f7?width=1898&height=892) _Создание сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 7. Загрузите файлы сайта на сервер. ![8e56d4c5 9a51 4c9a 9ba0 Bf885d5e463b](https://content.timeweb.com/assets/7bfd3848-f6af-4328-ab85-1e9bce47d0bc?width=1920&height=892) _Создание сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 8. После обновите конфигурационный файл, указав новые реквизиты для подключения к БД. 9. Вернитесь в карточку сайта и откройте меню «Базы данных». ![66fd3655 A51f 4d67 B350 B36cc4c37ee8](https://content.timeweb.com/assets/c2dfd7fb-70f3-482c-911c-cb4e4f650734?width=1898&height=892) _Создание сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 10. Откройте phpMyAdmin и импортируйте дамп базы на сервер. ![40bb7c89 3e4d 4c64 Bf2a Fb51e1ebd08c](https://content.timeweb.com/assets/14d0a7be-54a9-4fe8-8d16-d92249d1421d?width=1920&height=543) _Создание сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Проверьте работу сайта. > [!NOTE] > Не забудьте, что для работы сайта необходимо, чтобы в качестве A-записи у домена был указан IP-адрес вашего сервера. # Смена пароля пользователя Source: https://timeweb.cloud/docs/control-panels/fastpanel/change-user-password-fastpanel Изменить пароль для пользователя `fastuser` или любого другого пользователя панели можно двумя способами. ## Средствами панели управления В разделе «Управление» — «Пользователи» кликните на три точки у нужного пользователя и нажмите «Редактировать пользователя». ![Afa0c543 029a 4632 Bf4e 97db583d05ef](https://content.timeweb.com/assets/f7ba759e-cb73-4bc9-83a3-848dc5a2b57b.png?width=1629&height=803) _Раздел «Пользователи панели управления» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ В открывшейся форме укажите новый пароль и сохраните изменения. ## При подключении по SSH В этом случае вам не потребуется вводить старый пароль пользователя. 1. Подключитесь к серверу по SSH от пользователя `root`. Реквизиты `root` можно найти на Дашборде сервера в панели управления. ```shell ssh root@IP-адрес-сервера ``` 2. Выполните следующую команду, указав в ней имя пользователя, для которого нужно изменить пароль. Например, в случае с пользователем `fastuser`: ```shell passwd fastuser ``` 3. Введите новый пароль пользователя и нажмите Enter. После введите пароль еще раз для подтверждения. Система сообщит, что пароль изменен: ```shell passwd: password updated successfully ``` Еще один способ — использовать утилиту `mogwai`. В этом случае синтаксис будет следующим: ```shell mogwai chpasswd -u {имя_пользователя} -p {новый_пароль} ``` # Управление пользователями Source: https://timeweb.cloud/docs/control-panels/fastpanel/managing-users-in-fastpanel Fastpanel позволяет вам создавать пользователей, выдавать им разные права и управлять настройками индивидуально для каждого пользователя. Пользователь может быть автоматически создан, когда вы [добавляете новый сайт](https://timeweb.cloud/docs/control-panels/fastpanel/site-hosting-in-fastpanel) на сервер, либо же вы можете создавать пользователей вручную. С реквизитами каждого из пользователей панели вы также можете подключаться к серверу по SSH и иметь соответствующий этому пользователю доступ к файлам и настройкам. Основные действия над пользователями выполняются в разделе «Управление» — «Пользователи». ![«Управление» — «Пользователи»](https://content.timeweb.com/assets/6ea6bcab-723f-4be5-8203-af699a613239?width=1920&height=892) _Переход в раздел «Пользователи» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ ## Создание пользователей В разделе «Управление» — «Пользователи» кликните на кнопку «Создать». ![B887f58f C397 4696 9d6d Db56a3fd161b](https://content.timeweb.com/assets/be6dbbda-4a6f-46d8-9730-e3c56e141f7e?width=1920&height=892) _Раздел «Пользователи» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Укажите имя пользователя (изменить его будет невозможно) и его пароль, а также роль — пользователь или реселлер. ![Fab383b2 1674 4e69 B018 E4d488b7334a](https://content.timeweb.com/assets/f9d40af0-7170-4a22-b270-e7305e3adb01?width=1920&height=892) _Создание нового пользователя в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Нажмите «Создать». ## Смена пароля пользователя В разделе «Управление» — «Пользователи» кликните на три точки у нужного пользователя и нажмите «Редактировать». ![2186a88e 3a08 4c19 8c2e 00a86c1aaaf5](https://content.timeweb.com/assets/42e3d645-57f6-423f-b839-85e247d3e3e1?width=1920&height=892) _Опция редактирования пользователя в интерфейсе [Fastpanel](https://fastpanel.direct/)_ В открывшейся форме укажите новый пароль и сохраните изменения. ## Доступ по SSH для пользователя По умолчанию для каждого пользователя разрешен доступ по SSH. Наличие доступа отмечено галочкой в общем списке: ![58198ab0 745e 42a0 8311 6cd4ed33a7aa](https://content.timeweb.com/assets/e4c4adc2-aff1-4c56-92b8-053220efd4ef?width=1920&height=892) _Раздел «Пользователи» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Вы можете запретить доступ по SSH для того или иного пользователя. Для этого кликните на три точки и выберите «Редактировать пользователя». ![2186a88e 3a08 4c19 8c2e 00a86c1aaaf5](https://content.timeweb.com/assets/9ecb4b57-9648-426d-b437-2fe4e6af8243?width=1920&height=892) _Опция редактирования пользователя в интерфейсе [Fastpanel](https://fastpanel.direct/)_ На вкладке «SSH» переведите тумблер в положение «выключено» и сохраните изменения. ![11317631 5132 4640 Ba76 Daadfb2b9bf9](https://content.timeweb.com/assets/72a46168-b134-4e59-8d7b-0d9a1d3e4dcc?width=1063&height=440) _Отключение SSH-доступа для пользователя в интерфейсе [Fastpanel](https://fastpanel.direct/)_ ## Изменение версии PHP (CLI) для пользователя Настраивается в разделе «Управление» — «Пользователи» — «Редактировать пользователя». Подробнее описано [здесь](https://timeweb.cloud/docs/control-panels/fastpanel/changing-php-settings-in-fastpanel#smena-versii-php-cli-dlya-polzovatelya). ## Блокировка и разблокировка пользователя При необходимости временно отключить того или иного пользователя можно его заблокировать. Для этого в списке пользователей переведите тумблер в поле «Статус» в положение выключено. ![A6629e75 9e6d 4806 B4de 6d890adebdf3](https://content.timeweb.com/assets/82e25568-ac84-46af-97b1-66fb74349f69?width=1920&height=892) _Просмотр статуса пользователя в интерфейсе [Fastpanel](https://fastpanel.direct/)_ В дальнейшем вы сможете разблокировать пользователя здесь же. ## Доступное дисковое пространство для пользователя Вы можете ограничивать доступную дисковую квоту для каждого пользователя. В этом случае пользователь не сможет загрузить на сервер больший объем файлов, чем позволяет его квота. Для управления квотой необходимо установить дополнительное приложение из панели. Перейдите в раздел «Настройки» — «Приложения». ![1e2143dd 317a 4660 8a86 F9a43d58c509](https://content.timeweb.com/assets/bdeeb945-dd07-4acf-8531-8a297664f651?width=1920&height=892) _Переход в раздел «Приложения» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Найдите модуль «quota» и установите его. ![C0eda5b7 00b4 4fa8 A595 5cdd5a247caf](https://content.timeweb.com/assets/95e189de-c40a-4c4d-9f60-8f2e433ab433?width=1898&height=892) ** _Раздел «Приложения» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ ** Теперь вы можете указывать лимит квоты для пользователя при его создании или редактировании: ![24635184 9ced 40ef 9f5b A89a60ce8d2f](https://content.timeweb.com/assets/d889c97d-cdd2-4a34-8f16-98447f177f71?width=1920&height=972) _Настройки пользователя в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Чтобы пересчитать занятый объем, если есть подозрения, что квота подсчитана с ошибками, в списке пользователей кликните «Пересчитать дисковую квоту». ![B2b9b774 2ca9 4a3b A9f9 B7699559768c](https://content.timeweb.com/assets/40c897f9-4828-4b33-9f48-1dad0ff0344d?width=1920&height=820) _Опция перерасчет дисковой квоты в разделе «Пользователи» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Чтобы просмотреть статистику по квоте, можно использовать следующую команду при подключении по SSH: ```shell repquota -au ``` # Резервное копирование Source: https://timeweb.cloud/docs/control-panels/fastpanel/backup-fastpanel Fastpanel поддерживает два типа бэкапов: - **Стандартные бэкапы**. Позволяют создавать полные копии данных, которые включают сайты и базы данных. Можно восстанавливать данные точечно: например, конкретную базу или конкретный сайт. - **Дифференциальные бэкапы** (beta). Создают полные бэкапы и копии изменений, внесенных с последнего полного бэкапа. Можно восстанавливать отдельные базы данных или аккаунты целиком. Восстановление отдельных сайтов недоступно. Вы можете настроить загрузку резервных копий: - В локальную директорию на сервере. - На удаленный сервер (по FTP или SCP). - В облачное хранилище Google Drive, Dropbox или FASTBACKUP. - В S3-совместимое хранилище (только для дифференциальных бэкапов). В статье рассмотрим настройку стандартных бэкапов в Google Drive и дифференциальных — в S3-хранилище Timeweb Cloud. ## Настройка резервного копирования на Google Диск 1. Авторизуйтесь в панели управления. 2. В боковом меню перейдите в «Управление» → «Резервные копии». 3. Нажмите кнопку «Новый аккаунт». ![B271907c 36f0 4f09 Ab03 1a86b6301876](https://content.timeweb.com/assets/cb48b662-cf10-44f0-b795-7efdc1f88cfc?width=1920&height=892) _Раздел «Резервные копии» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 4. Выберите «Тип» → «Google» и заполните поля: - - Название — произвольное имя создаваемого аккаунта. - Email (необязательно) — ящик, на который будут отправляться отчеты. - Путь — директория на Google Диске, в которую будут сохраняться резервные копии. Можно оставить значение по умолчанию (символ / ) — в этом случае резервные копии будут сохраняться в корневую директорию облачного диска. 5. Cкопируйте код подтверждения и перейдите по ссылке. ![328b7e9c Dcbd 4c6a Acc6 26980d6a8fea](https://content.timeweb.com/assets/406d0999-69e5-4eae-9a70-57c99f227704?width=1122&height=815) _Настройка резервного копирования в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 6. Введите код и нажмите «Продолжить». ![84559783 D257 44e7 9e0d Fbd15df86e89](https://content.timeweb.com/assets/d3ea692e-4a98-4316-a2cc-902f2b7a7ef0?width=590&height=658) _Подключение устройства в интерфейсе [Google](https://google.com/)_ 7. Выберите аккаунт Google, на который будет нужно сохранять резервные копии. ![5](https://content.timeweb.com/assets/b7b0fbc2-2838-4342-8e65-288de61b05ba?width=584&height=652) _Выбор аккаунта в интерфейсе [Google](https://google.com/)_ 8. В следующем окне нажмите кнопку «Разрешить». ![6](https://content.timeweb.com/assets/32d8dd07-872e-48e4-9bd1-39cc5afcabff?width=582&height=1081) _Подтверждение доступа в интерфейсе [Google](https://google.com/)_ Вы увидите сообщение о том, что устройство подключено. 9. Вернитесь на вкладку с панелью управления и нажмите «Сохранить». ![B9aca238 B3a1 4e81 A563 8f5942543f88](https://content.timeweb.com/assets/c4f12b5d-50f6-49f2-b5de-ec4956e3fcf3?width=1122&height=815) _Настройка резервного копирования в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 10. Теперь необходимо создать план резервного копирования, который будет отвечать за фактический запуск процессов резервного копирования. Для этого перейдите на вкладку «Планы резервного копирования» и нажмите на кнопку «Новый план». ![Be9619d5 8b57 4f54 A086 42ad9c1fe426](https://content.timeweb.com/assets/9f504b1b-63cf-4554-a1f5-55dd11199781?width=1915&height=584) _Настройка резервного копирования в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 11. В открывшемся окне заполните поля: - - Название — произвольное имя создаваемого плана. - Аккаунт — выберите аккаунт, который вы только что создали. - Укажите, сколько копий вы хотите хранить. - Настройте периодичность создания копий. - Выберите из списка, какие сайты и базы нужно копировать. Учитывайте общий объем сайтов и БД и объем доступного пространства на Google Диске при настройке. ![Af343f6e 16da 4bee 8866 408ae0e4cdc0](https://content.timeweb.com/assets/24de8e44-07e6-4117-8be7-8133a3fa4b24?width=1000&height=939) _Настройка резервного копирования в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 12. Нажмите «Сохранить». Готово. Резервные копии начнут создаваться по заданному вами расписанию и будут сохраняться в указанную директорию на Google Диске. ## Настройка резервного копирования в S3 > [!NOTE] > Опция загрузки в S3 доступна только для дифференциальных бэкапов. [Создайте бакет](https://timeweb.cloud/docs/s3-storage/manage-storage/create-bucket) для бэкапов в панели Timeweb Cloud. На дашборде бакета вы найдете необходимые реквизиты для подключения: ![E769c338 F990 422f 97ec D3240e1d5ab6](https://content.timeweb.com/assets/abfa54b0-f051-42ca-967c-608f22599061.png?width=1577&height=1501) Далее настройте дифференциальные бэкапы Fastpanel. #### Этап 1. Создайте аккаунт резервного копирования 1. Авторизуйтесь в Fastpanel. 2. В меню слева перейдите в раздел «Управление» → «Резервные копии» и нажмите «Новый аккаунт». 3. Введите удобное имя для создаваемого аккаунта. 4. В пункте «Тип» выберите «S3-совместимое». 5. Заполните поля: - Email (опционально) — ящик, на который будут отправляться отчеты. - Путь — путь, по которому будут загружаться бэкапы в бакет. Можно указать `/`, чтобы загружать в корень бакета, или любую поддиректорию. Она будет создана автоматически при запуске бэкапа. 6. Укажите реквизиты подключения к бакету: - URL хранилища — `https://s3.twcstorage.ru` - Идентификатор ключа доступа — S3 Access Key - Секретный ключ доступа — S3 Secret Access Key - Имя bucket — имя бакета из панели - Регион — `ru-1` - Класс хранилища — выберите тип бакета, созданного в Timeweb Cloud, или оставьте «По умолчанию». 7. Сохраните изменения. ![88518999 Ec7f 4e96 A398 F5a4b8eb7058](https://content.timeweb.com/assets/f670341b-942b-4ea0-a605-8f378bbefad6.png?width=853&height=919) _Пример настройки резервного копирования в S3 в интерфейсе [Fastpanel](https://fastpanel.direct/)_ #### Этап 2. Создайте план резервного копирования 1. Перейдите на вкладку «Дифференциальные планы» и нажмите «Новый план». 2. Выберите вкладку: - Один пользователь — позволяет делать бэкапы для одного пользователя и связанных с ним баз данных. - Все пользователи — позволяет делать бэкапы для всех пользователей панели с возможностью исключения ненужных. 3. Заполните форму: - Название — произвольное имя создаваемого плана. - Аккаунт — выберите аккаунт, который вы только что создали. - Лимит копий — укажите, сколько копий, полных и частичных, вы хотите хранить. - Расписание — настройте периодичность создания копий. - Пользователь — выберите, для какого пользователя делать бэкапы. - Исключения — укажите, какие файлы и директории нужно исключить из бэкапа. - Базы данных — выберите, какие базы нужно копировать. - Сжатие — оставьте параметры по умолчанию либо настройте по своему усмотрению. Подробнее — [в документации Fastpanel](https://kb.fastpanel.direct/backups/differential-backup-plan#compression). - Шифрование — если хотите шифровать бэкапы, включите эту опцию. Подробнее — [в документации Fastpanel](https://kb.fastpanel.direct/backups/differential-backup-plan#encryption). 4. Сохраните изменения. Новый план резервного копирования отобразится на вкладке «Дифференциальные планы». Вы можете запустить бэкап вручную, чтобы проверить корректность настройки. ![90a99e16 81d3 49a1 B378 3d552f01e09d](https://content.timeweb.com/assets/a335794c-8a15-423e-b4e6-bf9697e4e9ed.png?width=1629&height=803) _Раздел «Резервные копии» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ После его завершения проверьте наличие нужных файлов на вкладке «Объекты» вашего бакета: ![92b5179e 5256 4732 9024 90b244bc04df](https://content.timeweb.com/assets/981f4c1c-248e-48fb-9678-217702ddcd0c.png?width=1568&height=841) ## Управление резервными копиями в панели ### **Запуск вне расписания** Вы можете создавать копии не только по расписанию, но и в любой момент, когда это необходимо. Для этого кликните на значок на вкладке «Планы резервного копирования»: ![](https://content.timeweb.com/assets/1756decb-dbb0-43d3-a119-302a6383bbb0?width=1787&height=466) _Раздел «Резервные копии» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ ### **Изменение расписания** Заданное расписание бэкапов можно в любой момент изменить — для этого кликните на иконку редактирования на вкладке «Планы резервного копирования»: ![D702e194 Cb6a 444f A780 Fa7b2065e0b9](https://content.timeweb.com/assets/c56944dd-c246-47b9-9e2c-73a7c37e5aa9?width=1787&height=466) _Раздел «Резервные копии» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Вы можете выбрать время запуска из выпадающего списка или настроить его по своему усмотрению, кликнув на «Настроить». ![](https://content.timeweb.com/assets/de699c78-adad-48f9-989c-548d435b1902?width=1898&height=892) _Настройка периодичности резервного копирования в интерфейсе [Fastpanel](https://fastpanel.direct/)_ ### **Просмотр созданных копий** Чтобы просмотреть список созданных копий и при необходимости запустить восстановление данных, кликните на значок: ![Cd620819 3875 4950 A970 11dfc1ecc484](https://content.timeweb.com/assets/e303ef04-b332-43a7-b446-cb21ad7e8131?width=1787&height=466) _Раздел «Резервные копии» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ При просмотре дифференциальных бэкапов вы увидите список полных (`full`) и частичных (`partial`) бэкапов. ![Diff](https://content.timeweb.com/assets/6256ba8b-e067-4f25-8d3c-18caf5bbcaf3.png?width=1629&height=869) _Просмотр дифференциальных бэкапов в интерфейсе [Fastpanel](https://fastpanel.direct/)_ ### **Действия с созданными копиями** В списке резервных копий вам доступно несколько опций: ![02ba916e Dcae 4084 Baf2 17138fcfeca0](https://content.timeweb.com/assets/a7a089c2-fbb5-4a71-963f-2486ab839e42?width=1768&height=485) _Управление резервными копиями в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Значки запускают следующие действия: 1. Запустить восстановление данных. Перед восстановлением панель запросит подтверждение. 2. Загрузить копию из хранилища (в нашем случае — Google Диска). 3. Скачать загруженную копию на ваш компьютер. 4. Удалить загруженную копию с сервера. Копия в хранилище при этом удалена не будет. 5. Удалить резервную копию из хранилища. Перед удалением панель запросит подтверждение. ### Восстановление из дифференциальных бэкапов Дифференциальные бэкапы в данный момент не поддерживают восстановление отдельных сайтов. Однако вы можете восстанавливать отдельные базы данных или все данные пользователя целиком. 1. Для запуска восстановления кликните на иконку: ![Ed2d6185 Cca4 497b 9cb6 950efb0db273](https://content.timeweb.com/assets/dcf74cfd-be94-4833-b7d8-b5df3f67a08f.png?width=1629&height=869) _Просмотр дифференциальных бэкапов в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 2. Задайте параметры восстановления: - Если нужно восстановить базу — выберите исходную и целевую базу данных для восстановления. - Если нужно восстановить весь аккаунт пользователя — выберите пользователя. - Выберите, нужно ли удалять существующие данные перед восстановления (это затронет только данные в директории www пользователя). - Если удаление данных не выбрано, укажите путь для восстановления резервной копии. 3. Нажмите «Восстановить». ![D78c3353 7e8e 4768 812a D4837cc578f2](https://content.timeweb.com/assets/1aa33c6f-014d-411f-9761-a1d33a8ea56a.png?width=689&height=845) _Запуск восстановления из дифференциального бэкапа в интерфейсе [Fastpanel](https://fastpanel.direct/)_ # Установка SSL Source: https://timeweb.cloud/docs/control-panels/fastpanel/installing-ssl Рассмотрим, как выпустить и установить сертификат Let's Encrypt, а также как установить уже существующий сертификат. ## Выпуск и установка сертификата Let's Encrypt Чтобы установить бесплатный SSL Let's Encrypt, выполните следующие шаги: 1. Кликните на карточку сайта, для которого нужно установить сертификат. 2. Перейдите в раздел «SSL-сертификаты». ![55a6fad3 4f7a 4ff3 9470 0c6504a1fd7d](https://content.timeweb.com/assets/04f422a6-f377-4550-b7a2-396914a8f93c?width=1919&height=1233) _Карточка сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 3. Нажмите «Новый сертификат». ![781e3a1e 820b 43ff 91e2 02b83b5804f5](https://content.timeweb.com/assets/77f0a26e-6953-40e3-9cb3-92488d5e5a9a?width=1920&height=500) _Раздел «SSL-сертификаты» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 4. Вы окажетесь в разделе «Let's Encrypt» на вкладке «Обычный сертификат». Поля **Email** и **Длина ключа** будут заполнены автоматически, при необходимости вы можете скорректировать данные. ![027d84c7 Ab78 4d55 8bdd D39d5340cf19](https://content.timeweb.com/assets/df20e987-78a0-4028-a671-0139751ba2c6?width=1920&height=892) _Выпуск нового сертификата Let's Encrypt в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 5. Нажмите «Сохранить». Сертификат будет выпущен и установлен. Продление Let's Encrypt будет выполняться автоматически. После добавления сертификата включите перенаправление с HTTP на HTTPS. Для этого: 1. Наведите курсор на карточку сайта и выберите «Опции». 2. Перейдите в раздел «HTTPS». 3. Отметьте «Перенаправление на HTTPS» и сохраните изменения. ## Выпуск и установка сертификата Let's Encrypt Wildcard Сертификат Wildcard позволяет защищать домен и все его поддомены. Для выпуска сертификата выполните следующие шаги: 1. Кликните на карточку сайта, для которого нужно установить сертификат. 2. Перейдите в раздел «SSL сертификаты». ![55a6fad3 4f7a 4ff3 9470 0c6504a1fd7d](https://content.timeweb.com/assets/04f422a6-f377-4550-b7a2-396914a8f93c?width=1919&height=1233) _Карточка сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 3. Нажмите «Новый сертификат». ![781e3a1e 820b 43ff 91e2 02b83b5804f5](https://content.timeweb.com/assets/77f0a26e-6953-40e3-9cb3-92488d5e5a9a?width=1920&height=500) _Раздел «SSL-сертификаты» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 4. Вы окажетесь в разделе «Let's Encrypt». Перейдите на вкладку «Wildcard». Поля **Email** и **Длина ключа** будут заполнены автоматически, при необходимости вы можете скорректировать данные. ![7ce73f6c C5df 4e0b 9eb2 E69c5260060a](https://content.timeweb.com/assets/415d2f24-8f0b-4302-a6ad-3fe831b46614?width=1896&height=886) _Выпуск нового сертификата Let's Encrypt Wildcard в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 5. Нажмите «Сохранить». 6. Сертификат отобразится в списке сертификатов. Нажмите на кнопку «Возобновить». 7. Откроется новое окно. Нам потребуются указанные в нем значения TXT-записей: ![0fedfead 80af 4db7 Abe8 93ae2c19dded](https://content.timeweb.com/assets/687fbac2-da05-4f99-af72-a35c37844d70?width=1258&height=486) _Окно с TXT-записями в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 8. В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите в раздел «Домены и SSL». 9. Нажмите на значок шестеренки рядом с вашим доменом, чтобы выбрать «DNS-записи». 10. Нажмите на «Добавить запись» справа вверху и выберите пункт «TXT». 11. В окне настройки в поле «Хост» кликните «Ввести вручную» и укажите `_acme-challenge`. В поле «Значение» вставьте значение, скопированное в Fastpanel. Нажмите «Добавить». 12. Повторите то же самое для еще одной TXT-записи. 13. Вернитесь к панели Fastpanel и нажмите «Продолжить». Сертификат Let's Encrypt Wildcard будет выпущен и установлен. После добавления сертификата включите перенаправление с HTTP на HTTPS. Для этого: 1. Наведите курсор на карточку сайта и выберите «Опции». 2. Перейдите в раздел «HTTPS». 3. Отметьте «Перенаправление на HTTPS» и сохраните изменения. ### Продление Let's Encrypt Wildcard Продление Let's Encrypt Wildcard будет выполняться автоматически только в случае, если на сервере развернут локальный DNS-сервер и домен делегирован на собственные NS-серверы. Во всех остальных случаях для продления SSL будет нужно подтверждать владение доменом, указывая для него нужные значения TXT-записей (как в процедуре, описанной выше, начиная с шага 6). Fastpanel пришлет уведомление на контактный ящик, указанный при регистрации, когда потребуется указать новые TXT-записи. ## Установка существующего сертификата Чтобы установить существующий сертификат, выполните следующие шаги: 1. Кликните на карточку сайта, для которого нужно установить сертификат. 2. Перейдите в раздел «SSL-сертификаты». ![55a6fad3 4f7a 4ff3 9470 0c6504a1fd7d](https://content.timeweb.com/assets/04f422a6-f377-4550-b7a2-396914a8f93c?width=1919&height=1233) _Карточка сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 3. Нажмите «Новый сертификат». ![781e3a1e 820b 43ff 91e2 02b83b5804f5](https://content.timeweb.com/assets/77f0a26e-6953-40e3-9cb3-92488d5e5a9a?width=1920&height=500) _Раздел «SSL-сертификаты» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 4. Слева выберите вариант «Существующий» и заполните форму: - В поле **Приватный ключ** вставьте содержимое приватного ключа. - В поле **Сертификат** вставьте содержимое сертификата. - В поле **Цепочка** вставьте цепочку сертификатов, которыми подписан данный сертификат. Как правило, они приходят в письме от центра сертификации в файле с расширением .ca-bundle. 5. Нажмите «Сохранить». После добавления сертификата включите перенаправление с HTTP на HTTPS. Для этого: 1. Наведите курсор на карточку сайта и выберите «Опции». 2. Перейдите в раздел «HTTPS». 3. Отметьте «Перенаправление на HTTPS» и сохраните изменения. # Изменение настроек PHP Source: https://timeweb.cloud/docs/control-panels/fastpanel/changing-php-settings-in-fastpanel Рассмотрим, как менять настройки PHP, версию PHP, устанавливать дополнительные модули PHP в панели Fastpanel. ## Установка версий PHP Для установки определенной версии PHP откройте меню слева и перейдите в раздел «Настройки» — «Приложения». ![6abc2913 350d 44b9 B478 2860422b6170](https://content.timeweb.com/assets/89e38a54-4a1f-4fc4-953c-423e497915b4?width=1920&height=892) _Переход в раздел «Приложения» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Найдите нужную версию в списке и кликните на значок установки: ![Без Названия (1)](https://content.timeweb.com/assets/86ce453e-249b-4dca-b5a5-1b5a0bd7094d?width=1898&height=892) _Раздел «Приложения» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Для установки доступны версии, начиная с PHP 5.2, при этом PHP 5.2. недоступна для последних версий отдельных ОС, например Ubuntu 20.04 и 22.04 или Debian 11. ## Смена версии PHP для сайта Чтобы изменить версию PHP для конкретного сайта сначала установите нужную версию по инструкции выше. Далее: 1. Наведите курсор на карточку нужного сайта и выберите «Опции». ![3849e5e7 38c0 4690 88d9 31785ec741b5](https://content.timeweb.com/assets/e5f49618-7464-4234-8f99-b99643d74a34?width=1920&height=892) _Раздел «Все сайты» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 2. Кликните на раздел «Обработчик PHP». 3. Укажите режим работы «FastCGI» и выберите нужную версию PHP в списке. ![9c020c4a 7663 4bef B24a 935cc13d786f](https://content.timeweb.com/assets/591ac082-af17-40dc-9615-4b727dacb926?width=1898&height=892) _Настройка параметров PHP в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 4. Сохраните изменения. Убедиться, что верная версии PHP применена, можно, создав файл `info.php` в директории сайта и добавив в него следующее содержимое: ```shell ``` После откройте в браузере ссылку вида: ```shell http://адрес-сайта/info.php ``` Если все корректно, отобразится техническая информация о выбранной версии PHP. ## Смена версии PHP (CLI) для пользователя Вы можете выбирать версии PHP для каждого пользователя отдельно. Это позволит использовать определенную версию PHP при работе в командной строке. Эта настройка затронет только версию PHP в командной строке и задачах cron, настройки PHP-версий для сайтов не изменятся. В меню слева перейдите в раздел «Управление» — «Пользователи». ![8ba6798c Cf83 4043 9ea7 226228352ceb](https://content.timeweb.com/assets/f9ec3ed5-e8c7-4da7-a60a-4deda1b0de2c?width=1920&height=892) _Переход в раздел «Пользователи» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Кликните на три точки в строке с нужным пользователем и выберите «Редактировать пользователя». ![2186a88e 3a08 4c19 8c2e 00a86c1aaaf5](https://content.timeweb.com/assets/edaf3433-9ac4-479a-aa89-bfdd4269c946?width=1920&height=892) _Раздел «Пользователи» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ В поле «Версия PHP (CLI)» выберите нужную версию и сохраните изменения. ![79acdbb1 59e3 4406 B193 3cefd357f015](https://content.timeweb.com/assets/624a53ca-56ce-4fb7-83c8-3a1232d97eb9?width=1186&height=890) _Просмотр и изменение настроек пользователя в интерфейсе [Fastpanel](https://fastpanel.direct/)_ ## Использование альтернативных версий PHP в CLI Как правило, для запуска скриптов через консоль используется команда: ```shell php /path/to/script.php ``` В этом случае будет использоваться основная версия PHP для сервера, даже если для сайта была выбрана иная версия. Если вы изменили версию PHP для пользователя по инструкции выше, то при выполнении команды будет использоваться выбранная версия для пользователя вместо серверной версии. Чтобы запустить скрипт, используя иную версию PHP, необходимо указать полный путь к нужному интерпретатору, например: ```shell /opt/php80/bin/php /path/to/script.php ``` ## Изменение настроек PHP для сайта Вы можете настраивать PHP индивидуально для каждого сайта. Для этого: 1. Кликните на карточку нужного сайта на главной странице панели. 2. Выберите «Настройки PHP». ![Без Названия (2)](https://content.timeweb.com/assets/49b920b5-ec2e-422f-9b99-0f2e145e5297?width=1918&height=1238) _Просмотр карточки сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 3. Найдите нужный параметр в списке и кликните на кнопку редактирования, чтобы изменить его значение. ![B08c659c 3d2c 49b7 A583 6247f8a0d85a](https://content.timeweb.com/assets/5c939bfa-ebfe-4d6f-bad2-9f7af9b1c330?width=1898&height=892) _Раздел «Настройки PHP» в настройках сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 4. Сохраните изменения. ## Изменение настроек для конкретной версии PHP Вы можете определять настройки для каждой установленной версии PHP. Для этого: 1. Откройте меню слева и выберите «Управление» — «PHP». ![2705bc37 1207 4558 Bb65 26d0a1dc8d5d](https://content.timeweb.com/assets/ad320eb5-f3a3-4c6f-8612-051b89bdaf69?width=1920&height=892) _Переход в раздел «PHP» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 2. На вкладке «Настройки PHP» выберите версию, для которой нужно выполнить настройки. ![A28d9010 8991 4e89 B143 B8a4e2981323](https://content.timeweb.com/assets/4ae6f953-8762-4f9a-8cf1-e2446a044a1d?width=1898&height=892) _Настройки PHP в разделе «PHP» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 3. Кликните на кнопку редактирования, чтобы изменить значение конкретного параметра. 4. Сохраните изменения. ## Установка модулей PHP Для установки модулей PHP: 1. Откройте меню слева и выберите «Управление» — «PHP». ![2705bc37 1207 4558 Bb65 26d0a1dc8d5d](https://content.timeweb.com/assets/ad320eb5-f3a3-4c6f-8612-051b89bdaf69?width=1920&height=892) _Переход в раздел «PHP» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 2. На вкладке «Модули PHP» найдите нужный модуль в списке и кликните на значок установки. ![Befd985c Aa1b 4820 96ae 35482998b751](https://content.timeweb.com/assets/954a4dbb-43c1-4322-88bd-1b71e1a2092f?width=1898&height=892) _Модули PHP в разделе «PHP» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Здесь же можно удалить ранее установленные модули, кликнув на значок корзины. ## Смена режима работы PHP Вы можете выбрать один из следующих режимов работы: - Модуль Apache (mod_php) В этом режиме используется серверная версия PHP и выбрать альтернативную версию невозможно. В качестве фронтенд-сервера используется Nginx, в качестве бэкенда — Apache. Скрипты обрабатываются модулем mod_php. Apache работает в режиме MPM-ITK. - CGI Можно выбирать альтернативные версии PHP. В качестве бэкенда используется Apache, для каждого запроса создается отдельный PHP-процесс. - FastCGI Можно выбирать альтернативные версии PHP. В качестве фронтенд-сервера используется Nginx, в качестве бэкенда — Apache. Скрипты обрабатываются модулем mod_fcgid. В отличие от CGI, для каждого скрипта не запускается отдельный процесс, благодаря чему меньше расходуются ресурсы и увеличивается скорость работы сайты. В случаях, когда требуется альтернативная версия PHP, рекомендуется выбирать этот режим. - PHP-FPM (Nginx + PHP-FPM) Можно выбирать альтернативные версии PHP. В качестве фронтенд-сервера используется Nginx, в качестве бэкенда — PHP-FPM. В этом режиме не обрабатывается файл .htaccess. Все настройки .htaccess необходимо указывать в конфигурации Nginx. Для выбора режима наведите курсор на карточку нужного сайта и кликните «Опции». ![3849e5e7 38c0 4690 88d9 31785ec741b5](https://content.timeweb.com/assets/47c2e7f6-c54d-4cd3-8ba4-bd207c8d51fe?width=1920&height=892) _Раздел «Все сайты» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Перейдите в раздел «Обработчик PHP», выберите нужный режим и сохраните изменения. - Если сайт не использует файл `.htaccess`, выбирайте PHP-FPM. - Если сайт использует `.htaccess` и для него подходит основная версия PHP, используйте PHP как модуль Apache. - Если сайт использует `.htaccess`, но нужна дополнительная версия PHP, выбирайте FastCGI. - CGI — самый медленный режим, его рекомендуется выбирать только в случаях, если при других режимах сайт работает некорректно. # Настройка почты Source: https://timeweb.cloud/docs/control-panels/fastpanel/mail-in-fastpanel В инструкции рассказываем, как настроить почту на сервере с панелью Fastpanel. Другой вариант работы с почтой — использование почтового сервиса Timeweb Cloud (подробнее о нем — в разделе [Почта](https://timeweb.cloud/docs/mail)). ## Шаг 1. Добавление DNS-домена 1. В панели Fastpanel установите приложение bind9. Для этого: - - Перейдите в раздел «Настройки» — «Приложения». - Найдите в списке bind9 и кликните на значок установки. ![0b8aedbc F6ba 45c3 965c 169c42fad0de](https://content.timeweb.com/assets/b093e0bf-96c6-4bd2-b2c8-470a3dc4ea07?width=1898&height=892) _Установка bind9 в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 2. После завершения установки перейдите в раздел «Управление» — «DNS-домены» и нажмите «Новый домен». 3. Введите ваш домен (например, `mydomain.com`) и сохраните изменения. Этот модуль поможет сгенерировать все необходимые DNS-записи домена, которые в дальнейшем будет нужно прописать у домена (на шаге 3). ## Шаг 2. Добавление почтового домена 1. Перейдите в раздел «Управление» — «Почта». Если нужный домен уже есть в списке, переходите к следующему шагу. 2. Кликните на «Новый домен». ![D3b52585 F4c5 4dc3 Aefa 199b946aa5df](https://content.timeweb.com/assets/c2491707-9e17-42d2-bf01-7ebaa8a848e4?width=1919&height=511) _Раздел «Почта» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 3. Введите ваш домен (например, mydomain.com) и сохраните изменения. ## Шаг 3. Настройка DNS для домена 1. Перейдите в раздел «Управление» — «DNS-домены» и кликните на «DNS-записи»: ![5a5a9c0f 57d3 425c B146 B6611e2a2e3d](https://content.timeweb.com/assets/f32f2b2d-78c9-429e-988c-25832e244936?width=1919&height=522) _Раздел «DNS-домены» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 2. На стороне держателя NS-серверов пропишите для домена DNS-записи, выделенные на скриншоте (A, MX, DMARC, DKIM и SPF), используя указанные в Fastpanel значения: ![Без Названия (3)](https://content.timeweb.com/assets/ee118ecb-7b5f-4540-ba36-7e0b1a18d8a8?width=1920&height=1166) _Просмотр DNS-записей домена в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Если домен размещен на NS-серверах Timeweb Cloud, эту настройку можно выполнить в разделе «[Домены и SSL](https://timeweb.cloud/my/domains)» — кликнуть на нужный домен — вкладка «DNS». Подробнее о настройке DNS — [в нашей инструкции](https://timeweb.cloud/docs/domains/dns-records-management). > [!NOTE] > У вас должен быть создан поддомен `mail` на вашем домене (например, `mail.mydomain.com`) и привязан к серверу. Если домен размещен у нас, создать поддомен и выбрать сервер для привязки можно в разделе «Домены и SSL» — кликнуть на нужный домен — вкладка «Поддомены» — «Добавить». В целом, на этом настройку можно завершить и перейти к созданию ящиков (Шаг 5). Однако дополнительно можно настроить сертификат безопасности (Шаг 4), чтобы выполнять отправку писем по защищенным протоколам. ## Шаг 4. Настройка SSL-сертификата > [!NOTE] > Если ваш почтовый домен совпадает с доменом сайта, созданного в Fastpanel, и для него уже выпущен SSL, переходите к пункту 4. > > Если ваш почтовый домен совпадает с доменом сайта, но SSL еще нет — [выпустите SSL Let's Encrypt по нашей инструкции](https://timeweb.cloud/docs/control-panels/fastpanel/installing-ssl#vypusk-i-ustanovka-sertifikata-lets-encrypt), после чего переходите к пункту 4. Если сайта с почтовым доменом еще нет: 1. На главной странице панели кликните «Создать сайт» — «Создать сайт вручную» — введите ваш почтовый домен — «Следующий шаг» — «Создать сайт». 2. Перейдите в раздел «Управление» — «Сертификаты SSL». 3. Кликните «Новый сертификат»: - Убедитесь, что выбран Let's Encrypt и вкладка «Обычный сертификат». - Выберите в пункте «Сайт» ваш почтовый домен и нажмите «Сохранить». ![E143bb9c 639f 44fe A4b3 F8634bce69d1](https://content.timeweb.com/assets/a42277ab-91ea-453f-9ad9-e94ba4fb7e83?width=1898&height=884) _Выпуск SSL Let's Encrypt в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Сертификат будет выпущен в течение 1-2 минут. ![092d0e55 Bb01 4c2d A383 9c1752d0fbcb](https://content.timeweb.com/assets/fe0e4ac0-e509-4c9d-9b59-2bdd0781d7d3?width=1920&height=884) _Раздел «Сертификаты SSL» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 4. Перейдите в раздел «Управление» — «Почта». 5. Кликните на значок шестеренки у почтового домена. ![5f16a9f2 1e2a 4cf8 97d2 8c99dfce386c](https://content.timeweb.com/assets/379c7612-79dc-4548-a843-98502b458e94?width=1920&height=884) _Раздел «Почта» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 6. В пункте «Сертификат» выберите выпущенный SSL и нажмите «Сохранить». ![49b013ce 32b4 4db1 Ab05 F32665b6aa80](https://content.timeweb.com/assets/d5d6b9ab-9577-4315-8611-c5ce47166ef9?width=1077&height=582) _Настройки почтового домена в интерфейсе [Fastpanel](https://fastpanel.direct/)_ ## Шаг 5. Создание почтового ящика 1. Перейдите в раздел «Управление» — «Почта» и кликните на «Почтовые ящики». ![F3bedd3a 9ae7 4f01 9bb0 397b73f3ae01](https://content.timeweb.com/assets/ff9e49ca-4a52-40bb-9af9-e6fee7d22b8e?width=1920&height=512) _Раздел «Почта» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 2. Кликните на «Новый ящик». ![E69374ea A850 46ea Bed6 F59105e6e89b](https://content.timeweb.com/assets/292aecc0-867d-4b9a-979b-f5b3bf2b1d59?width=1919&height=505) _Страница почтовых ящиков на домене в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 3. Заполните поля: - - **Логин** — имя ящика, которое будет указываться перед @. Например, admin, info, support и так далее. - **Пароль** — пароль ящика, с учетом указанных требований. - **Квота** — можно указать максимальный объем, который может занимать ящик. Если не указывать (оставить 0), квота не будет ограничена. - **Перенаправления** — можно указать ящики, на которые будут пересылаться письма, поступившие на создаваемый ящик. Можно указаться несколько ящиков для редиректов, друг под другом. - **Псевдонимы** — можно указать дополнительные имена для ящика. Например, если вы укажете `sales`, то все письма, отправленные на несуществующий ящик `sales@mydomain.com`, будут доставлены на тот ящик, который вы сейчас создаете. Здесь можно указать несколько псевдонимов друг под другом. Необходимо указывать только логин ящика (часть до `@`). ![38008923 7cc0 4576 A556 0d17ff88aecc](https://content.timeweb.com/assets/7b7e8808-cafc-423c-be7b-c93355f89d57?width=1034&height=1157) _Создание почтового ящика в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 4. Нажмите «Сохранить». Проверьте работу почты. > [!NOTE] > На новом сервере могут быть заблокированы почтовые порты, из-за чего почта не будет отправляться. Свяжитесь с поддержкой, чтобы снять блокировку. ## Доступ к ящику через Roundcube Для работы с почтой можно использовать веб-интерфейс Roundcube. Для перехода к нему кликните «Roundcube» справа над списком ящиков или нажмите кнопку входа в Roundcube у конкретного ящика: ![1ca79f70 7062 4ee1 Bd8e Da998e85bd92](https://content.timeweb.com/assets/3602e351-b5e2-4a99-ae37-17e2dd971d3d?width=1920&height=633) _Страница почтовых ящиков на домене в интерфейсе [Fastpanel](https://fastpanel.direct/)_ ## Настройки для почтовых клиентов Реквизиты для настройки почтовых клиентов можно получить, кликнув на значок рядом с именем ящика: ![7b364922 D777 440e Bf36 37b450396617](https://content.timeweb.com/assets/1d70176b-da84-4752-916a-6fee12df00aa?width=1920&height=633) _Страница почтовых ящиков на домене в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Откроется окно с реквизитами: ![Без Названия (2)](https://content.timeweb.com/assets/dfb0d0d4-fbe1-46e2-8411-81ae0455a7c5?width=723&height=659) _Окно с настройками для почтовых клиентов в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Если вы настроили сертификат на шаге 4, вы также можете использовать следующие порты с шифрованием: - Для IMAP — 993 - Для SMTP — 465 - Для POP3 — 995 # Настройка редиректов Source: https://timeweb.cloud/docs/control-panels/fastpanel/redirects-in-fastpanel Инструменты Fastpanel позволяют настроить только два вида редиректов: - перенаправление на HTTPS после установки SSL-сертификата — описано [здесь](https://timeweb.cloud/docs/control-panels/fastpanel/installing-ssl); - редирект на основное зеркало сайта со всех алиасов — описано [здесь](https://timeweb.cloud/docs/control-panels/fastpanel/aliases-in-fastpanel). Настройку иных редиректов необходимо выполнять вручную. Вам могут помочь наши инструкции: - [Настройка перенаправлений (Apache)](https://timeweb.cloud/docs/unix-guides/setting-up-redirects) - [Настройка перенаправлений (Nginx)](https://timeweb.cloud/docs/unix-guides/setting-up-redirects-nginx) # Смена пароля пользователя БД Source: https://timeweb.cloud/docs/control-panels/fastpanel/changing-database-user-password-in-fastpanel ## Смена пароля пользователя Чтобы изменить пароль пользователя базы данных: 1. Перейдите в раздел «Управление» — «Базы данных». 2. Кликните на три точки у нужной базы и выберите «Управление пользователями». ![7348d373 1369 4e42 B6e3 4ec150b635fe](https://content.timeweb.com/assets/dd8d3ae6-4de8-480f-8b4b-8a802f74c832?width=1920&height=597) _Раздел «Базы данных» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 3. Кликните на значок карандаша, чтобы открыть меню редактирования пользователя: ![F8da7a77 Bd98 4dd0 9277 8d76d4453bc3](https://content.timeweb.com/assets/e87488a3-d31d-4ce0-900a-daf8eca36f9d?width=1920&height=512) _Просмотр пользователей базы данных в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 4. Введите новый пароль и сохраните изменения. ![944b11d8 E3ca 4a5f Bd96 9248d9066f6a](https://content.timeweb.com/assets/a5b94e04-834a-4601-9802-26c081657d84?width=1920&height=892) _Редактирование пользователя базы данных в интерфейсе [Fastpanel](https://fastpanel.direct/)_ ## Смена пароля root-пользователя Изменить пароль root-пользователя базы данных средствами Fastpanel невозможно. При установленной на сервер Fastpanel, root-пароль MySQL хранится в файле `/root/.my.cnf`. Обратиться к файлу можно, подключившись к серверу по SSH или SFTP. Также вам может помочь наша инструкция: [Смена пароля root для MySQL](https://timeweb.cloud/docs/unix-guides/mysql-root-password-reset). # Доступ по FTP и SFTP Source: https://timeweb.cloud/docs/control-panels/fastpanel/ftp-sftp-access Рассказываем, как в панели Fastpanel создавать дополнительных пользователей FTP и SFTP, а также управлять доступом по SFTP. ## Создание FTP-пользователей Чтобы создать новый FTP-аккаунт: 1. Откройте в левом меню раздел «Управление» — «FTP аккаунты». 2. Нажмите на «Новый аккаунт» справа вверху. ![Ba844114 Fc95 4c12 Accc Bf322201ec27](https://content.timeweb.com/assets/8464edf8-ea7b-48b8-a3ac-449d697155ca?width=1919&height=614) _Раздел «FTP-аккаунты» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 3. Заполните поля: - - Логин аккаунта. - Пароль аккаунта. - Права — если выбрать «Запретить запись», пользователь сможет только просматривать файлы, но не сможет загружать или изменять их. - Сайт — к какому из сайтов выдается FTP-доступ. Поля «Владелец» и «Домашняя директория» обновятся автоматически в зависимости от выбранного сайта. ![Без Названия (2)](https://content.timeweb.com/assets/b8a2fce8-7c83-4e76-a8b0-b3e4d48bcdd6?width=1920&height=1113) _Создание FTP-аккаунта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 4. Сохраните изменения. ## Доступ по SFTP По умолчанию доступ по SFTP отсутствует — для использования SFTP нужно установить дополнительный модуль. 1. Перейдите в раздел «Настройки» — «Приложения». 2. Найдите в списке `sftp` и установите его. ![84f593ab Fa54 4a5b A515 F8e97c4165f1](https://content.timeweb.com/assets/33b6b93d-d24c-490c-908b-fa31d5dd46f5?width=1898&height=892) _Раздел «Приложения» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ В разделе «Управление» появится новый подраздел — «SFTP аккаунты». ![2845ef96 91c1 44d2 8e60 9f2ad54a077a](https://content.timeweb.com/assets/39dabb37-2537-4e46-84c8-b6b3417fa61c?width=1920&height=892) _Раздел «SFTP-аккаунты» в меню интерфейса [Fastpanel](https://fastpanel.direct/)_ ## Создание SFTP-пользователей Создание пользователей станет доступно после установки модуля `sftp`, которая описана выше. 1. Перейдите в раздел «Управление» — «SFTP аккаунты». 2. Нажмите «Новый аккаунт». 3. Заполните поля: - - Логин аккаунта. - Пароль аккаунта. - Сайт — к какому из сайтов выдается доступ. Поля «Владелец» и «Домашняя директория» обновятся автоматически в зависимости от выбранного сайта. ![690463eb 5378 41e9 9d55 4ca00fc9120e](https://content.timeweb.com/assets/c35935f9-6cb1-4c7a-9b05-9a250176c34b?width=1920&height=1101) _Создание SFTP-аккаунта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 4. Сохраните изменения. > [!NOTE] > При подключении по SFTP, например, при помощи [FileZilla](https://timeweb.cloud/docs/general/filezilla), используйте порт 2222. # Добавление алиасов Source: https://timeweb.cloud/docs/control-panels/fastpanel/aliases-in-fastpanel Если сайт использует несколько доменов, вы можете добавить их адреса в качестве псевдонимов (алиасов) в настройках. Для этого: 1. Наведите курсор на карточку сайта и выберите «Опции». ![67c856ba 8e6f 4b85 806c 142cf1b75479](https://content.timeweb.com/assets/7f6c28d1-ca1c-4a9e-8d6f-53e14a2de60c?width=1920&height=892) _Раздел «Все сайты» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 2. В разделе «Основные» в блоке «Псевдонимы» введите алиасы. Например, если вы хотите, чтобы сайт открывался в том числе по IP-адресу сервера, укажите его здесь. ![73a666a0 Db64 45d8 Aea7 7f95f1d58f1f](https://content.timeweb.com/assets/ae39f1a6-b329-4891-8302-7e8692f57a41?width=1898&height=892) _Настройки сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ Если нужно, чтобы со всех псевдонимов сайта выполнялся редирект на основной адрес: 1. Перейдите на вкладку «Редиректы». 2. В списке выберите нужный адрес и сохраните изменения. ![74cb2196 67d2 4409 95b7 73cd0e7d1bbc](https://content.timeweb.com/assets/6da00363-40e8-40c4-b557-8d3aba2e91ea?width=1898&height=892) _Раздел «Редиректы» в настройках сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ # Кэширование и сжатие статического контента Source: https://timeweb.cloud/docs/control-panels/fastpanel/caching-and-compression-in-fastpanel В Fastpanel вы можете настроить параметры сжатия и кэширования статического контента для того, чтобы он быстрее отдавался сервером. Для этого: 1. Наведите курсор на карточку сайта и выберите «Опции». ![67c856ba 8e6f 4b85 806c 142cf1b75479](https://content.timeweb.com/assets/7f6c28d1-ca1c-4a9e-8d6f-53e14a2de60c?width=1920&height=892) _Раздел «Все сайты» в интерфейсе [Fastpanel](https://fastpanel.direct/)_ 2. Перейдите в раздел «Статический контент», укажите нужные параметры и сохраните изменения. ![Eda205be E7db 483b 9db2 87a3f0fd2473](https://content.timeweb.com/assets/cb46aaa2-a9d2-4631-885a-a13cced0b1bc?width=1920&height=991) _Раздел «Статический контент» в настройках сайта в интерфейсе [Fastpanel](https://fastpanel.direct/)_ - **Сжатие Gzip** — включено по умолчанию. Если по каким-то причинам вы не хотите использовать сжатие, отключите эту опцию. - **Срок кэширования** — настройка времени кэширования в днях; при параметре 0 кэширование отключено. - **Уровень сжатия Gzip** — разработчики панели рекомендуют использовать средний уровень 5 и не поднимать его выше этого значения, так как высокий уровень сжатия значительно повысит нагрузку на сервер. # Логи Source: https://timeweb.cloud/docs/control-panels/fastpanel/logs-in-fastpanel Fastpanel имеет собственные инструменты для сбора и отображения логов доступа и ошибок, а также дает возможность установить Awstats для работы со статистикой. ## Настройка логов 1. Чтобы включить или выключить логи, настроить период ротации и количество хранимых лог-файлов, сделайте следующее: 2. Наведите курсор на карточку нужного сайта и нажмите «Опции». ![67c856ba 8e6f 4b85 806c 142cf1b75479](https://content.timeweb.com/assets/a4a2bc09-93d5-4d55-a0b5-05a574f0a038?width=1920&height=892) 3. Перейдите в раздел «Логирование» и настройте нужные параметры, после чего сохраните изменения. ![Bb3d5f9e 35c4 4041 Bc63 0bd31d2a382b](https://content.timeweb.com/assets/fd29ce86-e028-4c1c-8a12-18e67ef9f729?width=1898&height=892) ## Просмотр логов Чтобы посмотреть логи по конкретному сайту: 1. Наведите курсор на карточку сайта и выберите «Логи». ![7f7d22ed 6e0e 42fa A7b6 369903d6fcdc](https://content.timeweb.com/assets/08852d97-018d-4edc-9738-babe83a24bff?width=1920&height=892) Либо: 1. Кликните на карточку сайта. 2. Откройте раздел «Логи». ![Без Названия](https://content.timeweb.com/assets/782c792d-3380-4e86-b629-2b7205bc094b?width=1919&height=1247) 3. Переключайтесь между вкладками, чтобы просматривать нужный журнал логов. ![Без Названия (1)](https://content.timeweb.com/assets/4c486baf-3441-48d4-8c1f-d520b9e8ba77?width=1898&height=820) ## Статистика AWStats Для работы с AWStats нужный модуль нужно установить дополнительно. 1. В левом меню перейдите в раздел «Настройки» — «Приложения». 2. Установите модуль **awstats**. ![9fdd0a80 D930 4ddf 958d 1ea94ac433bb](https://content.timeweb.com/assets/d34d3f5d-0c19-4871-8e83-76e608772b15?width=1898&height=892) 3. Перейдите в логи нужного сайта — появится новая вкладка «AWSTATS». ![19c55fcb D937 45c6 Abd3 Fd8cbdad3e28](https://content.timeweb.com/assets/2ea6307f-5f59-417e-912e-5783163b3c0d?width=1920&height=545) 4. Нажмите «Включить». Обратите внимание, что работа AWStats увеличит нагрузку на сервер. Вы можете включать и выключать модуль, когда это необходимо. Если модуль включен, отчеты будут создаваться каждые 6 часов. Также вы можете запускать создание отчетов вручную по кнопке «Запустить». После того, как отчет будет создан, вы сможете просмотреть его, кликнув «Открыть». ![39823dbc 84d3 46dd Ae92 F6d9d5a2962e](https://content.timeweb.com/assets/29ef522c-64df-449e-82b8-5c0d42010b36?width=1920&height=520) # Доступ к Fastpanel по домену и HTTPS Source: https://timeweb.cloud/docs/control-panels/fastpanel/dostup-k-fastpanel-po-https Чтобы панель была доступна по защищенному протоколу HTTPS вместо стандартного адреса `http://ip-адрес-сервера:8888`, необходимо указать в настройках панели домен или поддомен и выпустить для него SSL-сертификат. Предварительно убедитесь, что для нужного домена или поддомена в качестве A-записи указан IP-адрес вашего сервера с Fastpanel. 1. Перейдите в раздел «Настройки» — «Основные» и выберите вкладку «Адреса панели». 2. Нажмите «Добавить адрес» и введите домен или поддомен, по которому вы хотите открывать панель. ![1](https://content.timeweb.com/assets/3b4ad868-f2a4-40fb-9aac-83f5e297a685.png?width=1345&height=821) _Добавление адреса панели управления в интерфейсе [Fastpanel](https://fastpanel.direct/ru)_ 3. Если вы хотите, чтобы панель была доступна по домену без указания порта 8888, отметьте пункт «Прямой доступ» и выберите IP-адреса, которые необходимо использовать для этого домена. ![2](https://content.timeweb.com/assets/058d0546-99fc-44a9-9737-bd930cb508c0.png?width=1350&height=806) _Добавление адреса панели управления в интерфейсе [Fastpanel](https://fastpanel.direct/ru)_ 4. Сохраните изменения. На этом этапе панель уже доступна по домену, но все еще по протоколу HTTP. Далее нужно выпустить SSL-сертификат. 5. Нажмите «SSL». ![3](https://content.timeweb.com/assets/96ed13ff-06d2-46e3-be90-7bc07eef9ab9.png?width=1345&height=811) 6. Выберите вариант «Let's Encrypt» и нажмите «Сохранить». Сертификат будет выпущен в течение нескольких минут, после чего вы сможете обращаться к панели по протоколу HTTPS. # Работа с ISPConfig Source: https://timeweb.cloud/docs/control-panels/ispconfig ISPConfig — бесплатная панель управления для серверов с операционной системой Linux. С помощью ISPConfig вы можете управлять сайтами на сервере через удобный веб-интерфейс, работать с почтой, FTP, веб-серверами и решать другие задачи. ISPConfig отлично подходит для работы в режиме Nginx + PHP-FPM. - [Установка ISPConfig](https://timeweb.cloud/docs/control-panels/ispconfig/installing-ispconfig) - [Создание пользователей](https://timeweb.cloud/docs/control-panels/ispconfig/creating-users) - [Размещение сайта](https://timeweb.cloud/docs/control-panels/ispconfig/site-hosting-in-ispconfig) - [Установка SSL](https://timeweb.cloud/docs/control-panels/ispconfig/installing-ssl) - [Добавление IP-адресов](https://timeweb.cloud/docs/control-panels/ispconfig/adding-ip-addresses) - [Планировщик Cron](https://timeweb.cloud/docs/control-panels/ispconfig/cron-scheduler) - [Настройка почты](https://timeweb.cloud/docs/control-panels/ispconfig/setting-up-mail) - [Дополнительные настройки](https://timeweb.cloud/docs/control-panels/ispconfig/additional-ispconfig-settings) # Установка ISPConfig Source: https://timeweb.cloud/docs/control-panels/ispconfig/installing-ispconfig > [!NOTE] > Перед установкой панели вы можете подробнее посмотреть ее интерфейс и функционал с помощью [демо-версии на сайте ISPConfig](https://www.ispconfig.org/ispconfig/online-demo/). ## Автоматическая установка Проще всего установить панель автоматически, выбрав **ISPConfig** на вкладке «Маркетплейс» при создании сервера. Сервер будет создан с уже установленной панелью управления ISPConfig, и вы сможете сразу перейти к созданию пользователей и сайтов. ![Fbd3040c 4498 40eb 904d 4559b88573e6](https://content.timeweb.com/assets/81bf929a-f2eb-404c-8c32-e7af302ab278?width=1470&height=1066) Если же вы хотите установить панель вручную, следуйте инструкции ниже. ## Установка ISPConfig вручную Панель рекомендуется устанавливать на серверы с системами: - Debian 10, 11, 12 - Ubuntu 20.04, 22.04, 24.04 Установку необходимо выполнять на «чистый» сервер. 1. Подключитесь к серверу [по SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. Измените hostname сервера, указав домен, на котором будет работать панель: ```shell hostname isp.example.com ``` 3. С помощью следующей команды вы можете скачать и запустить инсталлятор, который установит стандартный набор ПО: Apache2, PHP (версии 5.6 - 8.0), MariaDB, Postfix, Dovecot, Rspamd, BIND, Jailkit, Roundcube, PHPMyAdmin, Mailman, Webalizer, AWStats и GoAccess. ```shell wget -O - https://get.ispconfig.org | sh -s -- ``` Если вы хотите внести изменения в ПО, эту команду потребуется скорректировать, добавляя в нее необходимые аргументы. Например, чтобы установить Nginx в качестве веб-cервера вместо Apache2, используйте команду вида: ```shell wget -O - https://get.ispconfig.org | sh -s -- --use-nginx ``` В большинстве случаев, а также если вы не уверены, какое ПО выбрать, рекомендуем использовать стандартную команду установки, чтобы иметь на сервере весь необходимый функционал. Если же вы хотите настроить установку по своему усмотрению, используйте следующие аргументы: | \--help | Показать инструкцию по использованию команды | | --- | --- | | \--debug | Включить отладку в процессе установки | | \--channel | Выбор ветки для установки ISPConfig Формат: --channel= stable — последний релиз, доступный на сайте панели. Рекомендуется к установке. dev — последняя версия из Git-репозитория. Может иметь баги и недостетированные опции. Рекомендуется только для опытных пользователей. | | \--lang | Язык установщика (доступны английский и немецкий). Формат: --lang=en\|de | | \--use-nginx | Установить Nginx в качестве веб-сервера вместо Apache2 | | \--use-amavis | Использовать amavis вместо rspamd для фильтрации почты | | \--use-unbound | Установить unbound вместо bind9 в качестве локального DNS. Не использовать при установке параметра --no-dns | | \--use-php | Установить только указанные версии PHP (по умолчанию устанавливаются все). Доступные версии: 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0. Например: --use-php=7.4,8.0 | | \--use-php=system | Отключить установку дополнительных версий php из стороннего репозитория и установить только версию из официального репозитория | | \--use-ftp-ports | Задать диапазон портов для FTP в пассивном режиме. Например: --use-ftp-ports=40110-40210 | | \--no-web | Не использовать ISPConfig для управления конфигурацией веб-сервера. Данный аргумент также отключит установку nginx/apache, pureftpd, roundcube, phpmyadmin | | \--no-mail | Не устанавливать почтовый сервер. Будет установлен только postfix для отправки системных оповещений | | \--no-dns | Не устанавливать ns-сервер. Bind будет установлен только для самой системы | | \--no-local-dns | Не использовать DNS-кэш | | \--no-firewall | Не устанавливать UFW | | \--no-roundcube | Не устанавливать roundcube webmail | | \--roundcube | Установить Roundcube даже если используется --no-mail (потребуется ручная донастройка) | | \--no-pma | Не устанавливать PHPMyAdmin | | \--no-mailman | Не устанавливать Mailman | | \--no-quota | Отключить квоту | | \--no-ntp | Не настраивать синхронизацию системного времени | | \--unattended-upgrades | Включить автообновление Дополнительно можно добавить следующие аргументы: \--unattended-upgrades=autoclean,reboot — для автоматической очистки и перезагрузки \--i-know-what-i-am-doing — не запрашивать подтверждения в процессе установки | 4. После ввода команды пройдет подготовительный этап, и далее будет запрошено подтверждение установки: ![Ispconfig1](https://content.timeweb.com/assets/c33c5a24-8952-4e8d-87f0-b5de22236b7d?width=1722&height=111) Введите yes и нажмите Enter. 5. Дождитесь завершения установки. В результате вы увидите подобный вывод: ![Ispconfig2](https://content.timeweb.com/assets/a2df6296-d2e3-4bec-93c5-feec1cc0b2fa?width=1995&height=164) Сохраните созданные установщиком пароли — они пригодятся в дальнейшем. На этом установка панели завершена, но мы дополнительно рекомендуем выполнить следующую команду, чтобы в дальнейшем можно было корректно запустить почтовый клиент Roundcube Webmail: ```shell chown -Rf ispapps:www-data /etc/roundcube ``` ## Вход в панель Ваша панель доступна по адресу: `https://IP_адрес_сервера:8080/login/` Для входа используйте реквизиты, предоставленные инсталлятором: логин `admin` и пароль из строки «Your ISPConfig admin password is». При первом входе браузер выведет предупреждение о небезопасном подключении — это связано с тем, что подключение происходит по защищенному протоколу, сертификат для которого не был заверен каким-либо центром сертификации. Откройте дополнительные сведения (кнопки «Дополнительно», «Продолжить», «Все равно перейти» в зависимости от используемого браузера), после чего вы сможете либо сразу перейти к панели, либо подтвердить исключение безопасности. ![Ispconfig3](https://content.timeweb.com/assets/6412f94f-be4d-4218-af38-77442a64b0ae?width=1999&height=1314) _Интерфейс [ISPConfig](https://www.ispconfig.org/)_ # Создание пользователей Source: https://timeweb.cloud/docs/control-panels/ispconfig/creating-users По умолчанию в панели создан основной пользователь — **admin**, который обладает максимальным набором прав. Из соображений безопасности работа из-под основного пользователя не рекомендуется (как и в случае работы под root в консоли сервера), поэтому для управления сайтами имеет смысл создать дополнительного пользователя с ограниченными правами, которому не будет доступно непосредственное управление настройками сервера. Для создания пользователя перейдите в раздел **Client** и нажмите **Add new client**. ![1](https://content.timeweb.com/assets/d6dd2406-9e41-48a1-a866-ad7c0514cc94?width=1560&height=675) _Раздел Clients в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ В открывшейся форме на вкладке **Address** укажите имя (**Contact name**), логин пользователя (**Username**) и его пароль, а также email (ниже на странице). Можно заполнить и другие параметры формы либо оставить настройки по умолчанию. ![Add Client](https://content.timeweb.com/assets/24b0559b-aa75-48b4-acea-6bd8cc5d1f76?width=1603&height=1038) _Создание нового пользователя в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ Перейдите на вкладку **Limits**. Здесь задаются ограничения и права доступа к различному функционалу панели. В разделе **Web Limits** рекомендуем включить доступ к использованию SSL, отметив пункты **SSL available** и **Let's Encrypt available**. Остальные настройки можно оставить по умолчанию; их можно будет изменить в дальнейшем. Значение **\-1**, указанное для количества сайтов (Max. number of web domains), квоты (Web Quota) и других параметров, говорит о том, что для этого параметра ограничение отсутствует. ![Web](https://content.timeweb.com/assets/b47b73e7-6334-4f25-98cc-21821324b5e7?width=1597&height=1191) _Настройка лимитов пользователя в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ Разверните раздел **Cron Job Limits** ниже на странице, чтобы настроить доступ пользователя к Cron. Рекомендуем указать **\-1** в поле **Max. number of cron jobs** и выбрать тип **Full Cron**, чтобы снять ограничения при работе с Cron и разрешить пользователю создавать cron-задачи. ![Cron](https://content.timeweb.com/assets/b33b78ab-7e8a-4540-9f99-30fde51a56f6?width=1214&height=712) _Настройка доступа пользователя к Cron в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ После указания всех настроек нажмите **Save**. Для входа в панель под именем пользователя выберите его в списке в разделе **Client** и нажмите на зеленый значок входа; на следующей странице нажмите Yes, login as client. ![Login As](https://content.timeweb.com/assets/a675da36-0186-41a9-945e-89c5ccf047cb?width=1903&height=688) _Вход под пользователем в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ # Размещение сайта Source: https://timeweb.cloud/docs/control-panels/ispconfig/site-hosting-in-ispconfig Для размещения сайта на сервере с помощью ISPconfig в первую очередь [создайте нового пользователя](https://timeweb.cloud/docs/control-panels/ispconfig/creating-users) и войдите в панель по его именем (в разделе Client нажмите на зеленый значок входа у нужного пользователя; далее нажмите Yes, login as client). Далее выполните следующие шаги. ## Домен 1. На стороне держателя NS-серверов вашего домена укажите в качестве А-записи домена IP-адрес вашего сервера. 2. Перейдите в раздел **Sites** и нажмите **Add new website**. ![Addsite1](https://content.timeweb.com/assets/77ea09c8-1947-4f0f-854f-0788b13ea9fe?width=1603&height=736) _Раздел Websites в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ 3. В открывшейся форме на вкладке **Domain** укажите доменное имя, выберите режим работы PHP и версию. ![Addsite2](https://content.timeweb.com/assets/62901322-4a75-44ed-b3ad-594940f710e9?width=1603&height=1177) _Раздел Web Domain в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ Дополнительно можно указать настройки на остальных вкладках. На вкладке **Redirect** — настроить перенаправления, **SSL** — добавить сертификат, **Statistics** — подключить Awstats или другой инструмент сбора статистики, **Backup** — задать интервал создания копии для сайта и количество хранимых копий. В целом, можно оставить настройки по умолчанию и при необходимости вернуться к ним позднее. 4. После указания всех настроек нажмите **Save**. ## Файлы сайта Для загрузки файлов сайта на сервер сначала необходимо создать FTP-пользователя. 1. Перейдите в раздел **FTP-Accounts** и нажмите **Add new FTP-user**. ![Addsite3](https://content.timeweb.com/assets/c63030ce-9b20-449c-84c4-bb46712fb9b0?width=1604&height=781) _Раздел FTP-User в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ 2. В открывшейся форме выберите сайт, для которого создается FTP-пользователь, и задайте логин и пароль пользователя. Логин всегда будет начинаться с имени пользователя панели. ![Addsite4 1](https://content.timeweb.com/assets/f4e0b75b-ae2c-4f3d-b6ae-3cf7320994b9?width=1594&height=933) _Создание нового FTP-пользователя в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ 3. Нажмите **Save**. 4. Далее подключитесь к серверу по FTP, используя только что заданные реквизиты, и загрузите файлы в директорию **web**. ## База данных 1. Перейдите в раздел **Database Users** и нажмите **Add new user**. ![Addsite5](https://content.timeweb.com/assets/d02d27f4-710d-44a2-9a64-71581504f8fd?width=1604&height=688) _Раздел Database Users в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ 2. Задайте имя пользователя базы данных и его пароль, после чего нажмите **Save**. ![Addsite6](https://content.timeweb.com/assets/55b63cc2-6cf0-49fe-b990-2e87273cd126?width=1601&height=779) _Создание нового пользователя базы данных в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ 3. Далее перейдите в **Databases** и нажмите **Add new database**. ![Addsite7](https://content.timeweb.com/assets/71fcc6d2-f709-4640-88b1-d13dedebd61e?width=1620&height=685) _Раздел Databases в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ 4. В открывшейся форме: - - выберите сайт, для которого создается база данных, - укажите имя базы данных, - выберите пользователя базы, которого вы создали ранее, - установите нужную кодировку, - включите удаленный доступ к базе при необходимости; в этом случае можно также сразу указать удаленный IP, которому разрешено подключение. 5. После нажмите **Save**. ![Addsite8](https://content.timeweb.com/assets/a0f986d6-04fd-45ff-9200-2b5e47a40e29?width=1601&height=1181) _Создание новой базы данных в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ 6. Перейдите по адресу: `https://IP_адрес_сервера:8081/phpmyadmin` и авторизуйтесь в phpMyAdmin с реквизитами созданного пользователя. 7. Импортируйте дамп базы данных. 8. Укажите в файлах конфигурации сайта новые реквизиты для подключения к базе данных (имя базы, имя пользователя и пароль). Проверьте работу сайта. # Установка SSL Source: https://timeweb.cloud/docs/control-panels/ispconfig/installing-ssl Рассмотрим, как выпустить и установить SSL Let's Encrypt, а также как установить существующий сертификат. ## Выпуск и установка сертификата Let's Encrypt Чтобы установить бесплатный SSL Let's Encrypt, выполните следующие шаги: 1. Войдите в панель и перейдите в раздел **Sites**. 2. Кликните на нужный сайт, чтобы перейти к настройкам. 3. На вкладке **Domain** отметьте пункты **SSL** и **Let’s Encrypt SSL**. 4. Нажмите **Save**. Сертификат Let's Encrypt будет автоматически выпущен и установлен. ![Ssl1](https://content.timeweb.com/assets/3fba77fb-0790-4d40-aa77-292a3673cf26?width=1269&height=973) _Раздел Sites → Web Domain в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ ## Установка существующего сертификата Если для вашего домена уже выпущен SSL-сертификат, вы можете установить его по инструкции ниже. 1. Войдите в панель и перейдите в раздел **Sites**. 2. Кликните на нужный сайт и перейдите на вкладку **SSL**. 3. Заполните открывшуюся форму: - Поля State, Locality, Organisation, Organisation Unit можно оставить пустыми или заполнить любыми данными. - В поле **SSL Key** вставьте содержимое приватного ключа. - В поле **SSL Certificate** вставьте содержимое сертификата. - В поле **SSL Bundle** вставьте цепочку сертификатов, которыми подписан сертификат. Как правило, они приходят в письме от центра сертификации в файле с расширением .ca-bundle. - В поле **SSL Action** выберите вариант **Save certificate**. 4. Нажмите **Save**. ## Включение редиректа на HTTPS После установки сертификата включите для домена редирект на защищенное соединение HTTPS. Для этого в разделе **Sites** на вкладке **Redirect** отметьте пункт **Rewrite HTTP to HTTPS** и сохраните изменения. ![Ssl2](https://content.timeweb.com/assets/08a81c02-a56b-4898-880b-456ab4dba47a?width=1239&height=831) _Включение редиректа на HTTPS в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ # Добавление IP-адресов Source: https://timeweb.cloud/docs/control-panels/ispconfig/adding-ip-addresses Вы можете заказать дополнительный IPv4 или IPv6-адрес в панели управления [timeweb.cloud/my](https://timeweb.cloud/my/). После необходимо добавить IP-адрес на сервер. Для этого: 1. Войдите в панель под пользователем **admin**. 2. Перейдите в раздел **System** -> **Server IP addresses** и нажмите **Add new IP Address**. 3. В открывшемся меню: - - В поле **Type** выберите тип адреса (IPv4 или IPv6). - В поле **IP Address** укажите адрес, который нужно добавить. - Если необходимо, чтобы адрес был доступен только для сайтов конкретного пользователя, выберите его в поле **Client**. ![IP](https://content.timeweb.com/assets/2ad14f3b-d413-45db-b7c7-ac4e9e767193?width=1601&height=837) _Раздел IP Addresses в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ 4. Нажмите **Save**. Готово, новый адрес добавлен. # Планировщик Cron Source: https://timeweb.cloud/docs/control-panels/ispconfig/cron-scheduler Управлять задачами Cron вы можете в разделе **Sites** → **Cron Jobs**. Перейдите в этот раздел и нажмите **Add new Cron job**, чтобы добавить новую задачу. ![Cron1](https://content.timeweb.com/assets/d44d252d-36c1-4ec2-b4ec-717b5bf0fc34?width=1592&height=885) _Раздел Cron Jobs в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ Заполните открывшуюся форму. ![Cron2](https://content.timeweb.com/assets/a2c5ad85-4440-4670-9678-fc94739aa16b?width=1597&height=1275) _Создание новой cron-задачи в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ - В поле **Parent website** укажите, для какого сайта запускается задача. - Далее настройте **расписание** ее выполнения. Формат настройки (на примере минут): - — каждую минуту; - \*/5 — каждые 5 минут; - 5 — с началом пятой минуты; - 5, 20, 35 — с началом указанных минут. Аналогичный формат применяется для остальных параметров: часов, месяцев и т.д. Минуты указываются с 0 до 59, часы с 0 до 23, дни месяцев с 1 до 31, месяцы с 1 до 12, дни недели — с 0 (воскресенье) до 6 (суббота). На скриншоте выше настроено выполнение задания каждые 5 минут. - В поле **Command to run** введите путь до программы, которая должна выполняться по расписанию. Вы можете указать как URL, так и путь до скрипта, который нужно выполнить. Если вы указываете путь до php-скрипта, то также необходимо указать путь до интерпретатора. Например: ```shell /usr/bin/php7.0 /var/www/clients/client1/web1/web/script.php ``` Рассмотрим несколько примеров. Пример 1. ```shell /usr/bin/wget -O /dev/null "https://mydomain.com/script.php" ``` Здесь используется утилита `wget`, чтобы выполнить скрипт `script.php` на удаленном сервере `mydomain.com`. - `/usr/bin/wget` — путь к исполняемому файлу `wget`.(`/usr/bin` — это стандартное место установки исполняемых файлов в Linux). - `-O /dev/null` — опция `-O` в используется для указания имени файла, в который будет сохранен результат загрузки. В данном случае указан путь к специальному файлу `/dev/null`, который просто отбрасывает все, что в него пишется. То есть, что результат загрузки будет отброшен и не сохранен никуда на диске. - `https://mydomain.com/script.php` — то URL, по которому размещен скрипт `script.php`. Такой формат задачи удобно использовать в Cron, когда важен только сам факт выполнения скрипта, а вывод не требуется. Пример 2. ```shell /usr/bin/curl -s "https://mydomain.com/script.php" ``` Здесь используется `curl`, чтобы выполнить скрипт `script.php` на удаленном сервере `mydomain.com`. - `/usr/bin/curl` — это путь к исполняемому файлу `curl`. - `-s` — опция `-s` используется для того, чтобы сделать запрос «тихим» (silent). Это означает, что `curl` будет работать в фоновом режиме и не будет выводить информацию о процессе загрузки на экран. - `https://mydomain.com/script.php` — URL, по которому находится скрипт `script.php`. Такой формат может быть удобен в cron-задачах, когда нужно выполнить скрипт удаленно и без вывода информации на экран. Пример 3. ```shell /usr/bin/php7.1 /home/user/web/mydomain.com/public_html/script.php ``` Здесь с помощью интерпретатора PHP запускается скрипт `script.php`, который находится на вашем сервере по пути: `/home/user/web/mydomain.com/public_html/script.php`. - `/usr/bin/php7.1` — указывает на исполняемый файл интерпретатора PHP версии 7.1. Это значит, что при выполнении скрипта `script.php` будет использоваться именно версия PHP 7.1. - `/home/user/web/mydomain.com/public_html/script.php` — путь к PHP-скрипту, который должен быть выполнен. # Настройка почты Source: https://timeweb.cloud/docs/control-panels/ispconfig/setting-up-mail Рассказываем, как настроить почту на сервере с панелью ISPConfig: создадим почтовый домен и почтовый ящик и выполним необходимые настройки DNS. ## Добавление почтового домена Для работы с почтой в первую очередь необходимо добавить почтовый домен. Для этого перейдите в раздел **Email** и нажмите **Add new Domain**. ![Mail1](https://content.timeweb.com/assets/a7afc2a6-9013-4d91-8d85-132cf89d965f?width=1896&height=812) _Раздел Email в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ На открывшейся странице введите доменное имя и нажмите **DomainKeys Identified Mail**, чтобы сразу сгенерировать DKIM-подпись. ![Mail2](https://content.timeweb.com/assets/66faa5e6-ac53-44cb-a17d-c0804b7e22af?width=1611&height=715) _Опция генерации DKIM-подписи в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ Установите галочку **Enable DKIM** и нажмите **Generate DKIM Private-key**. В результате будет сгенерирована и установлена DKIM-подпись для этого почтового домена. ![Mail3](https://content.timeweb.com/assets/fc76cf79-3366-4c3c-a064-b0d39b3ff556?width=1607&height=1451) _Настройка DKIM в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ Запись из поля **DNS-record** необходимо скопировать, чтобы в дальнейшем добавить ее в настройках домена. Нажмите **Save** — почтовый домен создан. ## Создание почтового ящика Для создания ящика перейдите в раздел **Email** -> **Email Mailbox** и нажмите **Add new Mailbox**. ![Mail4](https://content.timeweb.com/assets/eed5ae92-d216-47ec-bac6-78edec18dabd?width=2005&height=925) _Раздел Email Mailbox в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ На открывшейся странице заполните поля **Email** (имя ящика, которое будет указываться перед @) и **Password**. Остальные поля можно оставить пустыми или заполнить по желанию. В поле «Name» указывается имя пользователя, в поле «Quota» можно установить лимиты на размер почтового ящика; также можно указать адреса, на которые необходимо отправлять копии входящих и исходящих писем, настроить режим работы спам-фильтра, отключить отправку писем с данного ящика, отключить локальную отправку, отключить протоколы POP3 и IMAP для данного ящика и включить greylisting. ![Mail5](https://content.timeweb.com/assets/2296148f-c755-43c0-81ca-5f30db1e7277?width=1595&height=785) _Создание нового почтового ящика в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ После указания необходимых настроек нажмите **Save**. ## Настройка DNS-записей для домена После создания почтового домена и почтового ящика необходимо правильно настроить DNS-записи домена: MX, SPF, DKIM. ### MX 1. В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите в раздел [Домены и SSL](https://timeweb.cloud/my/domains/). 2. Нажмите на значок шестеренки рядом с нужным доменом и выберите пункт **Настройки DNS**. 3. Создайте новую MX-запись или отредактируйте имеющуюся, кликнув на значок карандаша. В качестве значения укажите ваш домен, например: ![Mx2](https://content.timeweb.com/assets/5d5c6677-4795-4273-bd75-f5cc150688eb?width=397&height=198) 4. Удалите прочие MX-записи, если они были созданы. ### SPF В SPF-записи указывается список серверов, с которых разрешена отправка писем от имени вашего домена. Для настройки SPF: 1. В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите в раздел [Домены и SSL](https://timeweb.cloud/my/domains/). 2. Нажмите на значок шестеренки рядом с нужным доменом и выберите пункт **Настройки DNS**. 3. Если TXT-запись с параметром «v=spf1» уже существует, ее необходимо отредактировать, нажав на значок карандаша. Если подобной записи еще нет, необходимо нажать на «Добавить DNS-запись» справа вверху и выбрать пункт «TXT». 4. В окне настройки DNS-записи поле «Хост» оставьте пустым. В поле «Значение» укажите следующую запись, заменив 1.1.1.1 на IP-адрес вашего сервера: ```shell v=spf1 ip4:1.1.1.1 a mx ~all ``` 5. Сохраните изменения. ### DKIM 1. В данной инструкции мы уже добавили DKIM в панели ISPConfig. Если вы этого не делали, перейдите в ISPConfig в раздел **Email** -> **Domain**, кликните на нужный домен, чтобы открыть настройки, и добавьте DKIM, как описано [здесь](https://timeweb.cloud/docs/control-panels/ispconfig/setting-up-mail#dobavlenie-pochtovogo-domena). Скопируйте содержимое поля **DNS-record**. 2. Пропишите DKIM у домена: - - В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите в раздел [Домены и SSL](https://timeweb.cloud/my/domains/). - Нажмите на значок шестеренки рядом с вашим доменом и выберите пункт **Настройки DNS**. - Если TXT-запись с параметром «v=DKIM1» уже существует, ее необходимо отредактировать, нажав на значок карандаша. Если подобной записи еще нет, необходимо нажать на «Добавить DNS-запись» справа вверху и выбрать пункт «TXT». - В окне настройки DNS-записи в поле «Хост» укажите `dkim._domainkey`. В поле «Значение» вставьте DKIM-запись, скопированную в поле **DNS-record** в ISPConfig. ![Dkim Copy 4](https://content.timeweb.com/assets/d56db22a-41d4-41f0-bb8d-891bd09c37f3?width=445&height=324) Сохраните изменения. ### DMARC 1. В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите в раздел [Домены и SSL](https://timeweb.cloud/my/domains/). 2. Нажмите на значок шестеренки рядом с вашим доменом и выберите пункт **Настройки DNS**. 3. Если TXT-запись с параметром `v=DMARC1` уже существует, ее необходимо отредактировать, нажав на значок карандаша. Если подобной записи еще нет, необходимо нажать на «Добавить DNS-запись» справа вверху и выбрать пункт «TXT». 4. В окне настройки DNS-записи в поле «Хост» укажите `_dmarc`. В поле «Значение» вставьте следующую DMARC-запись: ```shell v=DMARC1; p=none; aspf=r; sp=none ``` ### PTR 1. В панели ISPConfig под пользователем **admin** перейдите в раздел System и кликните на имя сервера. ![Ptr1](https://content.timeweb.com/assets/4f4ef378-1bf6-4dd9-b02c-fd51597ea1d6?width=1614&height=588) _Раздел System в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ 2. В поле **Servername** укажите ваш домен и нажмите Save. Этим именем ваша почтовая служба будет представляться при отправке письма. ![Ptr](https://content.timeweb.com/assets/df22eecf-4415-4743-83b7-bd1e23e89f0b?width=1598&height=978) _Настройки сервера в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ 3. В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите на вкладку **Конфигурация**. 4. В поле «IPv4-адрес» кликните на имя сервера и также укажите ваш домен. ![Ptr3](https://content.timeweb.com/assets/adbf04fd-562f-47dd-86e6-fa666ea3c611?width=1032&height=333) ## Почтовый клиент Для непосредственной работы с почтой ISPConfig использует веб-интерфейс SquirrelMail. Перейти к нему можно по ссылке `https://IP_адрес_сервера:8081/squirrelmail/` или кликнув на иконку с конвертом в разделе **Email** → **Email Mailbox**: ![Mail6](https://content.timeweb.com/assets/1b56e2a3-4763-44b9-8681-46d00396b8c3?width=1612&height=728) _Кнопка входа в почтовый ящик в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ Для входа используйте имя созданного почтового ящика и его пароль. # Дополнительные настройки Source: https://timeweb.cloud/docs/control-panels/ispconfig/additional-ispconfig-settings В статье описаны дополнительные настройки панели ISPConfig, которые могут быть полезны вам в работе с панелью и сервером. Все эти действия необходимо выполнять в панели от пользователя **admin**. ## Настройка ссылок на phpMyAdmin и Webmail Для того, чтобы phpMyAdmin и Roundcube Webmail корректно открывались по ссылке в панели управления, выполните следующее. 1. Перейдите в раздел **System** → **Main config**. 2. На вкладке **Sites** в поле **PHPMyAdmin URL** укажите, как на скриншоте: ```shell https://[SERVERNAME]:8081/phpmyadmin ``` ![1](https://content.timeweb.com/assets/18a8a775-e935-41a7-b955-da807fd3c707?width=1599&height=919) _Настройки URL для phpMyAdmin в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ 3. Перейдите на вкладку **Mail** и в поле **Webmail URL** укажите, как на скриншоте: ```shell https://[SERVERNAME]:8081/webmail ``` 4. На этой же вкладке снимите галочку в пункте **Use SMTP to send system mails**. ![2](https://content.timeweb.com/assets/ab1b797e-0bdf-4207-95f5-bedf514e5229?width=1605&height=1300) _Настройки для корректной работы Roundcube в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ 5. Нажмите **Save**. ## Изменение префиксов имен Вы можете изменить или полностью удалить префиксы, которые используются по умолчанию в названиях БД, именах пользователей БД, пользователей FTP и пр., например, как здесь (префикс `c2`): ![3](https://content.timeweb.com/assets/e9479368-9b1f-4f7a-914f-0fdc99092187?width=1272&height=304) _Раздел Database Users в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ Чтобы изменить префиксы, выполните следующее. 1. Перейдите в раздел **System** → **Main config**. 2. Отредактируйте следующие поля на вкладке **Sites**, указав нужный префикс: - - Database name prefix - Database user prefix - FTP user prefix - Shell user prefix - Webdav user prefix Также эти поля можно очистить, чтобы префикс не добавлялся совсем. ## Изменение папки с сайтами по умолчанию Для того, чтобы сайты создавались в необходимой вам директории: 1. Перейдите в раздел **System** → **Server Config** на вкладку **Web**. 2. В поле **Website basedir** задайте папку, в которой будут создаваться директории ваших сайтов. 3. В поле **Website path** укажите путь до самих папок сайтов. 4. В поле **Website symlinks** укажите, какие ссылки необходимо создать для директории сайта (чтобы в нее можно было перейти по домену, а не по ID клиента и сайта). ![4](https://content.timeweb.com/assets/30978636-bb68-4b47-b257-d0c2bdf9c5c4?width=1605&height=914) _Настройка директории по умолчанию в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ ## Дополнительные настройки сайта При настройке сайта может потребоваться задать собственные настройки `php.ini` или добавить какой-либо блок с редиректами в конфигурацию Nginx. Для этого войдите перейдите в раздел **Sites**, кликните на нужный сайт и откройте настройки на вкладке **Options**. ![Phpnginx](https://content.timeweb.com/assets/b0407d96-99be-434e-b41c-059b3ce8e5e9?width=1600&height=2439) _Настройки сайта в интерфейсе [ISPConfig](https://www.ispconfig.org/)_ В поле **Custom php.ini settings** добавьте директивы `php.ini`, значение которых надо задать или переопределить (например: `short_open_tag=on`). В поле **nginx Directives** можно добавлять директивы, которые надо добавить в блок server виртуального хоста nginx. Допускается использование переменных: `{DOCROOT}`, `{DOCROOT_CLIENT}`, `{DOMAIN}`, `{FASTCGIPASS}`, `{PHPFALLBACKFASTCGIPASS}`. Например, вместо стандартного файла `.htaccess` для Bitrix можно указать: ```shell location / { try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args; } ``` Список возможных директив nginx доступен по ссылке: [http://nginx.org/ru/docs/dirindex.html](http://nginx.org/ru/docs/dirindex.html) В качестве **PHP-FPM Process Manager** рекомендуется устанавливать `dynamic`. ## Управление модулями PHP ISPConfig не имеет встроенных инструментов для управления модулями PHP (их установки, удаления, включения и выключения). Для выполнения необходимых действий используйте наши инструкции: - [Установка модулей PHP (Debian / Ubuntu)](https://timeweb.cloud/docs/unix-guides/installing-php-modules-debian-ubuntu) - [Установка модулей PHP (CentOS)](https://timeweb.cloud/docs/unix-guides/installing-php-modules-centos) # Работа с VestaCP Source: https://timeweb.cloud/docs/control-panels/vestacp > [!NOTE] > В настоящий момент VestaCP редко получает обновления, а возникающие в ее работе баги подолгу не устраняются. > > Рекомендуем вам рассмотреть [бесплатную панель HestiaCP](https://timeweb.cloud/docs/control-panels/hestia-cp) — интерфейс и функционал очень схожи с Vesta, при этом Hestia активно обновляется и дорабатывается. В разделе собраны инструкции по работе с бесплатной панелью управления VestaCP. - [Начало работы с VestaCP](https://timeweb.cloud/docs/control-panels/vestacp/getting-started-with-vestacp) - [Создание пользователей](https://timeweb.cloud/docs/control-panels/vestacp/creating-users-vestacp) - [Смена пароля пользователя](https://timeweb.cloud/docs/control-panels/vestacp/changing-user-password-vestacp) - [Размещение сайта](https://timeweb.cloud/docs/control-panels/vestacp/site-hosting-in-vestacp) - [Установка SSL](https://timeweb.cloud/docs/control-panels/vestacp/installing-ssl-vestacp) - [Настройка почты](https://timeweb.cloud/docs/control-panels/vestacp/mail-setup-vestacp) - [Резервное копирование](https://timeweb.cloud/docs/control-panels/vestacp/backup-vestacp) - [Добавление IP-адресов](https://timeweb.cloud/docs/control-panels/vestacp/adding-ip-addresses-vestacp) - [Планировщик Cron](https://timeweb.cloud/docs/control-panels/vestacp/cron-scheduler-vestacp) - [Запрет доступа по IP](https://timeweb.cloud/docs/control-panels/vestacp/ip-deny-access-vestacp) - [Создание FTP-пользователей](https://timeweb.cloud/docs/control-panels/vestacp/creating-ftp-users-vestacp) - [Смена пароля пользователя БД](https://timeweb.cloud/docs/control-panels/vestacp/changing-database-user-password-vestacp) - [Смена часового пояса](https://timeweb.cloud/docs/control-panels/vestacp/changing-time-zone-vestacp) - [Настройка редиректов](https://timeweb.cloud/docs/control-panels/vestacp/setting-up-redirects-vestacp) - [Модули PHP, настройка параметров PHP](https://timeweb.cloud/docs/control-panels/vestacp/configuring-php-parameters-vestacp) - [Логи](https://timeweb.cloud/docs/control-panels/vestacp/logs-vestacp) # Начало работы с VestaCP Source: https://timeweb.cloud/docs/control-panels/vestacp/getting-started-with-vestacp ## Установка VestaCP - **Автоматически** Панель управления VestaCP может быть установлена автоматически при заказе или создании нового VDS с операционной системой Ubuntu, а также при переустановке операционной системы. С VestaCP на сервер будет установлен набор компонентов, необходимых для корректной работы большинства проектов: Nginx, Apache, PHP, MySQL (MariaDB для Centos7), Named, Vsftpd, IPtables, Fail2ban, Exim, dovecot, spamassassin. - **Вручную** Вы можете установить панель самостоятельно, сконфигурировав установочный пакет с нужными компонентами на [сайте проекта](http://vestacp.com/install/). VestaCP устанавливается на старые версии операционных систем: - RHEL / CentOS 5, 6, 7 - Debian 7, 8, 9 - Ubuntu 12.04-18.10 ## Авторизация в Vesta Панель доступна по адресу `https://IP_адрес_сервера:8083`. После установки сервера с VestaCP на ваш контактный ящик придет письмо с реквизитами доступа к серверу и к панели, а также с ссылкой для входа в панель. Перейдите по указанной в письме ссылке. При первом входе вы увидите предупреждение о небезопасном подключении — это связано с тем, что подключение происходит по защищенному протоколу, сертификат для которого был заверен Vesta, а не каким-либо центром сертификации. Для продолжения работы откройте дополнительные сведения (кнопки «Дополнительно», «Advanced» и т.д.). Далее, в зависимости от используемого браузера, вы сможете либо сразу перейти на сайт, либо подтвердить исключение безопасности. Теперь вы можете авторизоваться в панели Vesta с данными, полученными в письме. ## Интерфейс панели Для переключения в русскоязычный интерфейс кликните на имя пользователя справа вверху и выберите нужный язык в настройках: ![Vesta Lang](https://content.timeweb.com/assets/39460ff0-ef5b-4bd6-80d1-fdab287c15cf?width=1088&height=771) _Интерфейс [VestaCP](https://vestacp.com/)_ Рекомендуем на этом же этапе изменить почтовый ящик, указанный в поле **Email**, на нужный вам. В верхней части панели вам доступно управление основными элементами: ![Vesta Main](https://content.timeweb.com/assets/deb15125-9287-47e7-8a2e-7e837f658e63?width=1059&height=631) _Интерфейс [VestaCP](https://vestacp.com/)_ - **USER** — управление пользователями - **WEB** — управление доменами - **DNS** — настройка DNS-служб - **MAIL** — управление почтой - **DB** — работа с базами данных - **CRON** — работа с планировщиком задач - **BACKUP** — резервное копирование # Создание пользователей Source: https://timeweb.cloud/docs/control-panels/vestacp/creating-users-vestacp Основной пользователь панели `admin` создается автоматически и имеет максимальный набор прав. От имени `admin` вы сможете выполнять настройки сервера и панели: управлять установленными на сервер компонентами, настраивать файрвол, добавлять IP-адреса, обновлять панель управления и так далее. Обратите внимание, что необходимо использовать именно admin, а не root — авторизация под root в панели VestaCP отключена. Из соображений безопасности постоянная работа из-под основного пользователя не рекомендуется, поэтому для управления доменами и сайтами имеет смысл создать дополнительного пользователя с ограниченными правами — ему не будет доступно непосредственное управление настройками сервера. Также создать дополнительных пользователей может быть необходимо, если нужно дать доступ к серверу третьим лицам. **Для создания пользователя:** 1. Перейдите в раздел **USER**. 2. Нажмите на значок плюса (опция «Добавить аккаунт»). 3. Заполните все поля в открывшейся форме. 4. Нажмите «Добавить». Чтобы зайти в панель под созданным пользователем, наведите курсор на поле с ним в разделе **USER** и нажмите на всплывающую кнопку **Войти.** С этими же реквизитами новый пользователь может подключаться к серверу по FTP. Настройки пользователя в дальнейшем можно будет изменить. Для этого под пользователем admin перейдите в раздел **USER**, наведите курсор на нужного пользователя и нажмите «Редактировать». Также вы всегда можете удалить любого пользователя или временно заблокировать его. ![User Edit](https://content.timeweb.com/assets/5ef49013-77d9-47b9-b720-3b684d3b19f3?width=1493&height=669) _Раздел USER в интерфейсе [VestaCP](https://vestacp.com/)_ # Смена пароля пользователя Source: https://timeweb.cloud/docs/control-panels/vestacp/changing-user-password-vestacp Изменить пароль для пользователя admin или любого другого пользователя панели можно средствами самой панели или при подключении по SSH. ## Средствами панели управления Этот способ подойдет, если вам известен пароль пользователя admin. **1.** Войдите в VestaCP под admin и перейдите в раздел **USER**. **2.** Наведите курсор на нужного пользователя и нажмите **Редактировать**. **3.** Укажите новый пароль и нажмите **Сохранить**. Готово, пароль изменен. ## При подключении по SSH В этом случае вам не потребуется пароль admin. **1.** Подключитесь к серверу по SSH от пользователя **root**. Реквизиты root были отправлены на ваш email после установки сервера. ```shell ssh root@IP-адрес-сервера ``` **2.** Выполните следующую команду, указав в ней нужного пользователя и новый пароль. Например, в случае с пользователем admin: ```plain v-change-user-password admin новый_пароль ``` Готово, пароль изменен. Теперь вы можете войти в панель с новым паролем. # Размещение сайта Source: https://timeweb.cloud/docs/control-panels/vestacp/site-hosting-in-vestacp Для размещения вашего сайта на сервере выполните шаги, описанные ниже. Рекомендуем добавлять сайт от имени [дополнительного пользователя](https://timeweb.cloud/docs/control-panels/vestacp/creating-users-vestacp). ## Домен 1. На стороне держателя NS-серверов вашего домена укажите для него в качестве А-записи IP-адрес вашего сервера. 2. Добавьте домен в панель Vesta. Для этого перейдите в раздел **WEB** и нажмите на зеленый значок плюса. Введите имя вашего домена и выберите необходимые настройки. > [!NOTE] > Кириллические домены необходимо указывать на кириллице, не в punycode. ![Vesta Web](https://content.timeweb.com/assets/35a7b6c3-890e-4e96-83b1-6320489027b1?width=1058&height=653) _Добавление домена в интерфейсе [VestaCP](https://vestacp.com/)_ Кликнув на «Дополнительные опции», вы сможете задать дополнительные настройки, например, включить поддержку SSL (указать данные существующего сертификата или запросить выпуск для вашего домена бесплатного сертификата Let’s Encrypt), подключить инструмент аналитики (awstats или webalizer), создать дополнительный FTP-аккаунт при необходимости (подключение по FTP также доступно с логином и паролем созданного пользователя). В большинстве случаев вы можете оставить настройки, указанные по умолчанию. Для того, чтобы добавить поддомен, выполните те же действия. ## База данных 1. Создайте базу данных в Vesta. Для этого перейдите в раздел **DB** и добавьте базу, кликнув на зеленый значок плюса. Укажите все необходимые данные (имя базы, имя пользователя БД и пароль), включая e-mail, на который будут отправлены реквизиты для доступа к базе. После вы сразу сможете перейти в phpMyAdmin из интерфейса Vesta (кнопка **PHPMYADMIN** над списком баз), или же по ссылке в письме. 2. Авторизуйтесь в phpMyAdmin с полученными данными и импортируйте дамп базы на сервер. 3. Обновите конфигурационный файл сайта, указав в нем корректное имя базы, имя пользователя базы данных и пароль. ## Файлы сайта Загрузите файлы вашего сайта на сервер. Для этого подключитесь к серверу по [SFTP](https://timeweb.cloud/docs/unix-guides/sftp), например, с помощью FileZilla, и скопируйте файлы в директорию `/web/ваш_домен/public_html` (полный путь при работе от `admin`: `/home/имя_пользователя/web/имя_домена/public_html`). В качестве реквизитов для подключения используйте: - **Хост**: IP-адрес вашего сервера. - **Имя пользователя**: имя пользователя в Vesta. - **Пароль**: пароль пользователя. - **Порт**: 22 # Установка SSL в VestaCP Source: https://timeweb.cloud/docs/control-panels/vestacp/installing-ssl-vestacp Процесс установки SSL-сертификата в VestaCP достаточно прост. 1. Зайдите в панель управления под пользователем, от которого добавлялся домен. 2. Перейдите в раздел **WEB**, наведите курсор на поле с доменом и нажмите **Редактировать**. Обратите внимание, что если вы используете кириллический домен, для корректного выпуска SSL домен должен быть добавлен в панель на кириллице, не в punycode. 3. В окне редактирования найдите пункт **Поддержка SSL** и отметьте его галочкой. 4. Откроется дополнительная форма. Далее: - Если вы хотите выпустить сертификат Let's Encrypt, отметьте пункт **Поддержка Let's Encrypt** и нажмите **Сохранить** внизу страницы (сохранение будет происходить немного дольше обычного). Сертификат будет создан автоматически в течение нескольких минут. Также для выпуска сертификата необходимо создать пользователя для утилиты выпуска. Для этого в консоли сервера в панели управления или при [подключении по SSH](https://timeweb.cloud/docs/unix-guides/ssh) необходимо выполнить команду: ```shell v-add-letsencrypt-user USERNAME E-MAIL ``` - В качестве USERNAME укажите логин, который вы используете для входа в VestaCP, в качестве E-MAIL — ваш контактный ящик. После выпуска сертификат будет сохранен в директории /home/admin/conf/web. - Если вы хотите использовать имеющийся у вас сертификат, заполните поля его данными и нажмите **Сохранить**: - - **SSL сертификат** — содержимое сертификата. - **Ключ SSL сертификата** — содержимое приватного ключа. - **Центр сертификации SSL / Intermediate** — цепочка сертификатов, которыми подписан данный сертификат (как правило, это файл в письме от центра сертификации с расширением .ca-bundle). - Если вы только планируете приобрести SSL, вы можете сгенерировать CSR с помощью VestaCP: - Нажмите на ссылку **Cгенерировать CSR запрос**. - В новом открывшемся окне внесите необходимые данные и нажмите **Ок**. - Используйте полученный CSR-запрос для покупки сертификата. - Сохраните ключ сертификата на локальный компьютер — он потребуется вам при установке полученного SSL. # Настройка почты Source: https://timeweb.cloud/docs/control-panels/vestacp/mail-setup-vestacp Настраиваем почту на сервере с панелью VestaCP: создадим почтовый домен и почтовый ящик, выполним необходимые настройки DNS для домена. ## Добавление почтового домена Для управления почтовыми доменами и ящиками перейдите в раздел **MAIL**. Здесь уже присутствуют домены, добавленные вами в разделе **WEB**; также вы можете добавить новый почтовый домен, кликнув на значок плюса. При добавлении домена обязательно отметьте пункт DKIM. ![Mail 1](https://content.timeweb.com/assets/7d618e59-e6c1-4d1e-8d98-a84a061bf9f2?width=1027&height=614) _Добавление почтового домена в интерфейсе [VestaCP](https://vestacp.com/)_ Если домен уже добавлен через WEB, можно кликнуть на «Редактировать», чтобы убедиться, что опция DKIM включена. ![Mail 2](https://content.timeweb.com/assets/6293443a-ee4c-4c32-af3e-24cf890cc314?width=1034&height=441) _Раздел «MAIL» в интерфейсе [VestaCP](https://vestacp.com/)_ ## Создание почтового ящика Наведите курсор на поле с нужным доменом и нажмите «Добавить аккаунт». ![Mail 3](https://content.timeweb.com/assets/18b46634-bce1-41d0-b675-084018d3e70d?width=1042&height=429) _Раздел «MAIL» в интерфейсе [VestaCP](https://vestacp.com/)_ В поле «Аккаунт» укажите имя ящика (имя, которое будет указываться перед @; например, admin, info, support и так далее), также укажите пароль. ![Mail 4](https://content.timeweb.com/assets/76fd72ea-2486-4d30-852d-51f722a1b0a0?width=903&height=627) _Добавление почтового аккаунта в интерфейсе [VestaCP](https://vestacp.com/)_ По клику на «Дополнительные опции» можно сразу настроить размер почтовой квоты, алиасы для ящика и пересылку почты. ## Настройка DNS-записей для домена ### **MX** 1. В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите в раздел [Домены и SSL](https://timeweb.cloud/my/domains/). 2. Нажмите на значок шестеренки рядом с нужным доменом и выберите пункт **Настройки DNS**. 3. Создайте новую MX-запись или отредактируйте имеющуюся, кликнув на значок карандаша. В качестве значения укажите ваш домен. 4. Удалите прочие MX-записи, если они были созданы. ### **SPF** В SPF-записи указывается список серверов, с которых разрешена отправка писем от имени вашего домена. Для настройки SPF: 1. В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите в раздел [Домены и SSL](https://timeweb.cloud/my/domains/). 2. Нажмите на значок шестеренки рядом с нужным доменом и выберите пункт **Настройки DNS**. 3. Если TXT-запись с параметром `v=spf1` уже существует, ее необходимо отредактировать, нажав на значок карандаша. Если подобной записи еще нет, необходимо нажать на «Добавить DNS-запись» справа вверху и выбрать пункт «TXT». 4. В окне настройки DNS-записи поле «Хост» оставьте пустым. В поле «Значение» укажите следующую запись, заменив `1.1.1.1` на IP-адрес вашего сервера: ```shell v=spf1 ip4:1.1.1.1 a mx ~all ``` ### **DKIM** 1. Создайте DKIM через консоль: Подключитесь к серверу [по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и выполните в консоли команду: ```shell v-list-mail-domain-dkim USER DOMAIN ``` Вместо `USER` укажите имя пользователя, под которым добавлен домен, вместо `DOMAIN` — имя домена, на котором создается почта. Например: ```shell v-list-mail-domain-dkim admin mydomain.com ``` В результате команды будут выведены private key и public key. Скопируйте public key — весь текст, который находится между `BEGIN PUBLIC KEY` и `END PUBLIC KEY`: ![Mail 5](https://content.timeweb.com/assets/482375b9-120c-4374-8abb-cf7820626198?width=614&height=432) 2. Пропишите DKIM у домена: - - В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите в раздел [Домены и SSL](https://timeweb.cloud/my/domains/). - Нажмите на значок шестеренки рядом с вашим доменом и выберите пункт **Настройки DNS**. - Если TXT-запись с параметром `v=DKIM1` уже существует, ее необходимо отредактировать, нажав на значок карандаша. Если подобной записи еще нет, необходимо нажать на «Добавить DNS-запись» справа вверху и выбрать пункт «TXT». - В окне настройки DNS-записи в поле «Хост» укажите `mail._domainkey`. В поле «Значение» вставьте DKIM-запись в формате: ```shell v=DKIM1; k=rsa; p=скопированное_содержимое_public_key ``` ### **DMARC** - В панели [timeweb.cloud/my](https://timeweb.cloud/my/) перейдите в раздел [Домены и SSL](https://timeweb.cloud/my/domains/). - Нажмите на значок шестеренки рядом с вашим доменом и выберите пункт **Настройки DNS**. - Если TXT-запись с параметром `v=DMARC1` уже существует, ее необходимо отредактировать, нажав на значок карандаша. Если подобной записи еще нет, необходимо нажать на «Добавить DNS-запись» справа вверху и выбрать пункт «TXT». - В окне настройки DNS-записи в поле «Хост» укажите `_dmarc`. В поле «Значение» вставьте следующую DMARC-запись: ```shell v=DMARC1; p=none; aspf=r; sp=none ``` ### **PTR** - В панели VestaCP перейдите в раздел **Сервер** (Server) и нажмите на кнопку «Настроить» (значок шестеренки). ![Mail 7](https://content.timeweb.com/assets/4eb509be-e58c-4177-870b-5a059cdeeb9c?width=1030&height=425) _Раздел «СЕРВЕР» в интерфейсе [VestaCP](https://vestacp.com/)_ - В поле **Имя хоста** (Hostname) укажите ваш домен. Этим именем ваша почтовая служба будет представляться при отправке письма. - В панели управления Timeweb Cloud перейдите во вкладку «[Облачные серверы](https://timeweb.cloud/my/servers)». - Выберите нужный сервер и перейдите во вкладку «Сеть». - В разделе «IP-адреса» наведите курсор на IPv4 сервера и нажмите на иконку шестеренки. - В открывшемся меню укажите ваш домен в строку «PTR-запись». ![Scr 20260717 Kbti](https://content.timeweb.com/assets/d2bc2fa5-d530-4927-bb6f-7bd8c40b799a.png?width=2198&height=1810) ## Почтовый клиент Для непосредственной работы с почтой VestaCP использует веб-интерфейс Roundcube. Перейти в него можно, кликнув по ссылке «Открыть веб-почту» над списком почтовых доменов. ![Mail 8](https://content.timeweb.com/assets/3a3ee18c-e98c-4cf2-a7bf-7c8ec632084e?width=1047&height=437) _Раздел «MAIL» в интерфейсе [VestaCP](https://vestacp.com/)_ Для входа в Roundcube используйте имя созданного ящика и его пароль. ## Возможные ошибки Если при отправке почты через Roundcube возникает ошибка: *Access denied - Invalid HELO name (See RFC2821 4.1.3)*, необходимо внести изменения в файл `/etc/roundcube/defaults.inc.php`. Откройте его в любом редакторе и найдите следующую строку: ```shell $config['smtp_helo_host'] = ''; ``` Укажите в ней значение `'localhost'`: ```shell $config['smtp_helo_host'] = 'localhost'; ``` ## Дополнительные опции VestaCP позволяет настроить еще одну полезную почтовую функцию — «Ловушку для почты». С ее помощью письма, отправленные на несуществующие ящики на данном домене, будут собираться на указанный вами e-mail. Для настройки «Ловушки» выберите нужный домен в разделе MAIL, нажмите «Редактировать» и введите имя ящика. # Резервное копирование Source: https://timeweb.cloud/docs/control-panels/vestacp/backup-vestacp Создание бэкапов в панели VestaCP с их хранением на сервере или удаленном хранилище (при подключении по FTP). ## Резервное копирование в панели По умолчанию VestaCP выполняет ежедневное резервное копирование и хранит бэкапы за последние три дня. Вы также можете создавать резервные копии вручную — для этого перейдите в раздел **BACKUP** и добавьте новое задание, кликнув на значок плюса. После того, как копия будет создана, вы получите уведомление на контактный ящик пользователя; сам бэкап будет доступен в этом же разделе. Обратите внимание, что если бэкап за текущую дату уже существует, он будет заменен новым. ![Vesta Backup](https://content.timeweb.com/assets/0a7bb4c1-1eee-4d1f-99b7-42cf347e05fc?width=1026&height=461) _Раздел «BACKUP» в интерфейсе [VestaCP](https://vestacp.com/)_ Вы можете скачать любую из резервных копий на локальный компьютер, либо же нажать на «Настроить параметры восстановления» и выбрать отдельные элементы, которые требуется восстановить из бэкапа. Например, для восстановления файлов сайта необходимо выбрать нужный WEB-домен и нажать «Восстановить». Кликнув на кнопку «Исключения» над списком резервных копий, и далее на значок шестеренки, вы сможете указать, какие элементы должны исключаться из копирования. Для полной сохранности ваших данных вы также можете настроить резервное копирование на удаленный FTP-сервер — таким образом актуальная копия ваших данных будет доступна вам даже в случае сбоя на VDS. ## Резервное копирование по FTP Для настройки выгрузки бэкапов на удаленный сервер выполните следующие шаги. 1. Подключитесь к серверу [по SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. Создайте файл `/usr/local/vesta/conf/ftp.backup.conf` командой: ```shell nano /usr/local/vesta/conf/ftp.backup.conf ``` 3. Внесите в него следующее содержимое, указав корректные параметры: IP удаленного сервера, логин и пароль для подключения, а также путь к директории, в которую должны сохраняться бэкапы: ```shell HOST='IP-адрес_сервера' PORT='21' USERNAME='имя_пользователя' PASSWORD='пароль' BPATH='/vesta-backup' ``` 4. Сохраните изменения. 5. Откройте файл `vesta.conf`: ```shell nano /usr/local/vesta/conf/vesta.conf ``` 6. Найдите в нем строку `BACKUP_SYSTEM='local'` и замените ее значение на: ```shell BACKUP_SYSTEM='local,ftp' ``` 7. Вы также можете указать только `'ftp'` — в этом случае бэкапы не будут сохраняться локально, а только на удаленном сервере. 8. Сохраните изменения. Для проверки настроек перейдите в раздел **BACKUP** в VestaCP и создайте новую резервную копию. Если все работает корректно, новый бэкап в VestaCP будет иметь тип «local,ftp», а также будет доступен на удаленном сервере. ![Backupftp](https://content.timeweb.com/assets/444f566c-b982-47b0-b44e-0aebb8c27eba?width=1013&height=591) _Раздел «BACKUP» в интерфейсе [VestaCP](https://vestacp.com/)_ # Добавление IP-адресов Source: https://timeweb.cloud/docs/control-panels/vestacp/adding-ip-addresses-vestacp С помощью VestaCP вы можете добавлять на сервер IPv4-адреса; операция осуществляется от пользователя `admin`. Заказ нового IP в панели управления Timeweb Cloud описан [здесь](https://timeweb.cloud/docs/cloud-servers/manage-servers/network#dopolnitelnye-ip-adresa). Кликните на раздел «IP» в верхнем блоке панели управления. Для добавления адреса нажмите на значок плюса (опция «Добавить IP»). ![Ip1](https://content.timeweb.com/assets/00f1d8df-4efb-4556-9c17-5da0fea067b2?width=1030&height=440) _Раздел «IP» в интерфейсе [VestaCP](https://vestacp.com/)_ На следующем шаге укажите IP, маску сети (255.255.255.255) и нажмите «Добавить». ![Ip2](https://content.timeweb.com/assets/798c2d5b-2557-4266-9135-18f36ba8d84a?width=436&height=672) _Добавление IP-адреса в интерфейсе [VestaCP](https://vestacp.com/)_ В дальнейшем при добавлении новых доменов в панель вы сможете выбирать, к какому IP-адресу он должен быть привязан. # Планировщик Cron в VestaCP Source: https://timeweb.cloud/docs/control-panels/vestacp/cron-scheduler-vestacp Работа с планировщиком задач осуществляется в разделе **CRON**. Для формирования нового задания нажмите на значок плюса (опция «Добавить задание»). Далее укажите команду и расписание ее выполнения: ![Cron4](https://content.timeweb.com/assets/ac787a0b-e3da-45c8-873b-78be4e91d2b1?width=870&height=652) Вы можете задать расписание вручную либо сгенерировать его с помощью интерфейса Vesta, выбрав нужные параметры. При указании параметров вручную используйте следующий формат (на примере минут): - — каждую минуту; - **\*/5** — каждые 5 минут; - **5** — с началом 5 минуты; - **5, 20, 35** — с началом указанных минут. Аналогичный формат применяется для остальных параметров — часов, дней, месяцев и т.д. Минуты указываются с 0 до 59, часы с 0 до 23, дни с 1 до 31, месяцы с 1 до 12, дни недели — с 0 (воскресенье) до 6 (суббота). При запуске php-скриптов укажите перед скриптом полный путь до интерпретатора либо просто php. Рассмотрим несколько примеров команд. Пример 1. ```shell /usr/bin/wget -O /dev/null "https://mydomain.com/script.php" ``` Здесь используется утилита `wget`, чтобы выполнить скрипт `script.php` на удаленном сервере `mydomain.com`. - `/usr/bin/wget` — путь к исполняемому файлу `wget`.(`/usr/bin` — это стандартное место установки исполняемых файлов в Linux). - `-O /dev/null` — опция `-O` в используется для указания имени файла, в который будет сохранен результат загрузки. В данном случае указан путь к специальному файлу `/dev/null`, который просто отбрасывает все, что в него пишется. То есть, что результат загрузки будет отброшен и не сохранен никуда на диске. - `https://mydomain.com/script.php` — то URL, по которому размещен скрипт `script.php`. Такой формат задачи удобно использовать в Cron, когда важен только сам факт выполнения скрипта, а вывод не требуется. Пример 2. ```shell /usr/bin/curl -s "https://mydomain.com/script.php" ``` Здесь используется `curl`, чтобы выполнить скрипт `script.php` на удаленном сервере `mydomain.com`. - `/usr/bin/curl` — это путь к исполняемому файлу `curl`. - `-s` — опция `-s` используется для того, чтобы сделать запрос «тихим» (silent). Это означает, что `curl` будет работать в фоновом режиме и не будет выводить информацию о процессе загрузки на экран. - `https://mydomain.com/script.php` — URL, по которому находится скрипт `script.php`. Такой формат может быть удобен в cron-задачах, когда нужно выполнить скрипт удаленно и без вывода информации на экран. Пример 3. ```shell php /home/user/web/mydomain.com/public_html/script.php ``` Здесь с помощью интерпретатора PHP запускается скрипт `script.php`, который находится на вашем сервере по пути: `/home/user/web/mydomain.com/public_html/script.php`. - `php`— которая запускает интерпретатор PHP для выполнения PHP-скрипта. При таком вызове интерпретатора будет использоваться версия PHP по умолчанию. - `/home/user/web/mydomain.com/public_html/script.php` — путь к PHP-скрипту, который должен быть выполнен. Таким образом, эта команда для cron будет выполнять PHP-скрипт `script.php` на сервере по указанному пути. Во время выполнения этой команды PHP будет интерпретировать и выполнять код, содержащийся в `script.php`. Эта команда удобна для автоматизации выполнения PHP-скриптов по расписанию, таких как обновление данных, отправка уведомлений и других регулярных задач веб-приложений. Пример 4. ```shell /usr/bin/php7.1 /home/user/web/mydomain.com/public_html/script.php ``` Эта команда делает практически то же самое, что и предыдущая, но с одним отличием: она явно указывает использование определенной версии PHP. - `/usr/bin/php7.1` — указывает на исполняемый файл интерпретатора PHP версии 7.1. Это значит, что при выполнении скрипта `script.php` будет использоваться именно версия PHP 7.1. - `/home/user/web/mydomain.com/public_html/script.php` — путь к PHP-скрипту, который должен быть выполнен. Таким образом, в этой команде мы явно указываем, что для исполнения скрипта нужно использовать версию PHP 7.1. Это полезно, когда на сервере установлено несколько версий PHP, и вам нужно определить, какую версию использовать для конкретной задачи или скрипта. # Запрет доступа по IP Source: https://timeweb.cloud/docs/control-panels/vestacp/ip-deny-access-vestacp Чтобы заблокировать доступ к сайтам для конкретных IP-адресов, перейдите в раздел «Файрвол» в верхней части панели (опция доступна пользователю admin) и нажмите на значок плюса («Добавить правило»). ![Firewall1](https://content.timeweb.com/assets/56fb8036-3e8e-47c9-a476-127629c07ff9?width=1055&height=346) _Раздел «Файрвол» в интерфейсе [VestaCP](https://vestacp.com/)_ Выберите действие DROP и укажите нежелательный IP-адрес и порты, к которым нужно заблокировать доступ (как правило, 80 и 443, если нужно заблокировать доступ к сайту для этого IP). ![Firewall2](https://content.timeweb.com/assets/fac5981a-3847-4152-8291-1bbf01dddc3d?width=465&height=632) _Добавление правила файрвола в интерфейсе [VestaCP](https://vestacp.com/)_ # Создание FTP-пользователей Source: https://timeweb.cloud/docs/control-panels/vestacp/creating-ftp-users-vestacp Основной пользователь (`admin`) и все пользователи, созданные в разделе «USER», могут подключаться к серверу по FTP со своим логином и паролем. Можно также создать отдельных FTP-пользователей для конкретных сайтов. В этом случае доступ пользователя будет ограничен каталогом соответствующего сайта. 1. Зайдите в панель под пользователем, которому принадлежит нужный домен. 2. Перейдите в раздел «WEB», наведите курсор на поле с доменом и нажмите «Редактировать». 3. В списке настроек поставьте галочку в пункте «Дополнительный FTP» и внесите данные: - - **Аккаунт** — логин создаваемого пользователя, с которым он будет подключаться по FTP. - **Пароль** — введите или сгенерируйте пароль доступа для создаваемого пользователя. - **Путь** — директория, которой будет ограничен доступ для создаваемого пользователя. По умолчанию будет предоставлен доступ к домашней директории текущего домена, и в этом случае прописывать путь не нужно. Если необходимо дать доступ к другой директории, путь к ней необходимо указать относительно домашней директории сайта: например, для выдачи доступа к `/home/user1/web/mydomain.com/public_html` укажите в этом поле `/public_html`. - **Отправить данные ftp аккаунта по адресу** — можно сразу выслать логин и пароль нового пользователя на его почту. Необязательно для заполнения. 4. Нажмите **Сохранить**. ![V Ftp2](https://content.timeweb.com/assets/00f990da-932e-436d-b9de-1d9082222dda?width=743&height=632) _Создание FTP-пользователя в интерфейсе [VestaCP](https://vestacp.com/)_ # Смена пароля пользователя БД Source: https://timeweb.cloud/docs/control-panels/vestacp/changing-database-user-password-vestacp Сменить пароль пользователя базы данных вы можете в разделе «DB». Наведите курсор на поле с нужной базой и нажмите на кнопку «Редактировать». ![Db1](https://content.timeweb.com/assets/400f09fc-acb7-447c-accd-8694510618dd?width=1032&height=489) _Раздел «DB» в интерфейсе [VestaCP](https://vestacp.com/)_ На следующем шаге укажите или сгенерируйте новый пароль и сохраните изменения. # Смена часового пояса Source: https://timeweb.cloud/docs/control-panels/vestacp/changing-time-zone-vestacp Изменить часовой пояс на сервере вы можете инструментами панели управления. Для этого зайдите в VestaCP под пользователем admin, откройте раздел «Сервер» и кликните на значок шестеренки (опция «Настроить»). ![Gmt](https://content.timeweb.com/assets/1b6bcb4a-ae7b-40a9-93e8-a1cca9cc196f?width=1027&height=427) _Раздел «СЕРВЕР» в интерфейсе [VestaCP](https://vestacp.com/)_ На следующем шаге в пункте «Часовой Пояс» выберите нужный и нажмите «Сохранить». # Настройка редиректов в VestaCP Source: https://timeweb.cloud/docs/control-panels/vestacp/setting-up-redirects-vestacp VestaCP не содержит встроенных инструментов для настройки перенаправлений. Вы можете настроить необходимые редиректы с помощью [директив в файле .htaccess](https://timeweb.cloud/docs/unix-guides/setting-up-redirects). # Модули PHP, настройка параметров PHP в VestaCP Source: https://timeweb.cloud/docs/control-panels/vestacp/configuring-php-parameters-vestacp VestaCP не имеет встроенных инструментов для настройки параметров PHP или подключения модулей PHP. Выполнить необходимые действия можно по нашим инструкциям: - [Настройка параметров PHP (Debian / Ubuntu)](https://timeweb.cloud/docs/unix-guides/setting-php-options-debian-ubuntu) - [Настройка параметров PHP (CentOS)](https://timeweb.cloud/docs/unix-guides/setting-php-options-centos) - [Установка модулей PHP (Debian / Ubuntu)](https://timeweb.cloud/docs/unix-guides/installing-php-modules-debian-ubuntu) - [Установка модулей PHP (CentOS)](https://timeweb.cloud/docs/unix-guides/installing-php-modules-centos) # Логи Source: https://timeweb.cloud/docs/control-panels/vestacp/logs-vestacp Для доступа к логам (`AccessLog` и `ErrorLog`) зайдите в панель под пользователем, от имени которого добавлялся домен, и перейдите в раздел «WEB». Наведите курсор на интересующий вас домен и нажмите на всплывающую кнопку «Просмотреть логи». ![Logs](https://content.timeweb.com/assets/9a9a81d8-b045-402c-80ee-c05db1dbb3ca?width=1045&height=456) _Раздел «WEB» в интерфейсе [VestaCP](https://vestacp.com/)_ Откроется новое окно, где вы можете как просмотреть логи, так и скачать их на свой компьютер для подробного изучения. ![Logs2](https://content.timeweb.com/assets/c0d082d1-773c-4e0e-b654-689ca4360d6e?width=711&height=145) _Просмотр логов в интерфейсе [VestaCP](https://vestacp.com/)_ # Работа с Hestia Source: https://timeweb.cloud/docs/control-panels/hestia-cp Hestia CP — бесплатная панель управления, с помощью которой можно добавлять пользователей и сайты, управлять почтой, базами данных, задачами Cron и др. Панель имеет простой и понятный интерфейс и значительно упрощает работу с сервером. > [!NOTE] > Вы можете подробнее ознакомиться с интерфейсом и функционалом панели с помощью [бесплатной демо-версии](https://demo.hestiacp.com:8083/login/). - [Установка Hestia](https://timeweb.cloud/docs/control-panels/hestia-cp/hestiacp-installation) - [Создание пользователей](https://timeweb.cloud/docs/control-panels/hestia-cp/adding-users-hestia) - [Управление пользователями](https://timeweb.cloud/docs/control-panels/hestia-cp/managing-users-in-hestia) - [Размещение сайта](https://timeweb.cloud/docs/control-panels/hestia-cp/adding-site-hestia) - [Изменение настроек PHP](https://timeweb.cloud/docs/control-panels/hestia-cp/changing-php-settings-in-hestia) - [Добавление алиасов](https://timeweb.cloud/docs/control-panels/hestia-cp/adding-aliases-hestia) - [Установка SSL](https://timeweb.cloud/docs/control-panels/hestia-cp/installing-ssl-hestia) - [Добавление IP-адресов](https://timeweb.cloud/docs/control-panels/hestia-cp/adding-ip-hestia) - [Запрет доступа по IP](https://timeweb.cloud/docs/control-panels/hestia-cp/zapret-dostupa-po-ip-hestia) - [Планировщик Cron](https://timeweb.cloud/docs/control-panels/hestia-cp/cron-hestia) - [Создание FTP-пользователей](https://timeweb.cloud/docs/control-panels/hestia-cp/creating-ftp-users-hestia) - [Настройка редиректов](https://timeweb.cloud/docs/control-panels/hestia-cp/setting-up-redirects-hestia) - [Резервное копирование](https://timeweb.cloud/docs/control-panels/hestia-cp/backup-hestia) - [Смена пароля пользователя БД](https://timeweb.cloud/docs/control-panels/hestia-cp/smena-parolya-polzovatelya-bd) - [Настройка почты](https://timeweb.cloud/docs/control-panels/hestia-cp/setting-up-mail-hestia) - [Логи](https://timeweb.cloud/docs/control-panels/hestia-cp/logs-in-hestia) - [Смена часового пояса](https://timeweb.cloud/docs/control-panels/hestia-cp/changing-timezone-hestia) # Установка Hestia Source: https://timeweb.cloud/docs/control-panels/hestia-cp/hestiacp-installation HestiaCP — это удобная и бесплатная панель управления сервером с открытым исходным кодом. Она позволяет легко настраивать и управлять веб-сайтами, почтой, базами данных и другими сервисами на сервере. Панель имеет удобный интерфейс и русскую локализацию. ## Автоматическая установка Hestia HestiaCP можно установить автоматически при создании нового облачного сервера или при переустановке операционной системы. Чтобы установить HestiaCP автоматически, при создании сервера в пункте «Образ» перейдите на вкладку «Маркетплейс». Включите фильтрацию по категории «Сайт» и выберите сборку с HestiaCP. ![Image3](https://content.timeweb.com/assets/9f700932-b944-4b5b-b63a-0b2b06f6bc94.png?width=1021&height=911) После создания сервера реквизиты доступа к панели HestiaCP (адрес, логин и пароль) будут доступны на Дашборде сервера. ![Image2](https://content.timeweb.com/assets/4399f876-47a2-4f42-88ce-a27632757889.png?width=783&height=910) ## Установка Hestia вручную HestiaCP поддерживает установку на Debian 11, 12 и Ubuntu 22.04, 24.04. Для запуска панели достаточно сервера с 1 CPU, 1 ГБ RAM и 1 ГБ диска, однако для стабильной работы рекомендуется конфигурация с 4 CPU, 4 ГБ RAM и 4 ГБ диска. > [!NOTE] > Hestia требует наличия зарегистрированного домена. В противном случае установка может завершиться ошибкой. Чтобы установить панель вручную, выполните следующие шаги: 1. Подключитесь к серверу по SSH. 2. Выполните команду для загрузки установочного скрипта на сервер: ```shell wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh ``` 3. Запустите скрипт: ```shell bash hst-install.sh --force ``` 4. Подтвердите запуск установки, введя `y`. 5. Укажите желаемое имя администратора, пароль, емейл и домен в формате `hostname.domain.ltd` в качестве имени хоста. Начнется установка панели и необходимых пакетов. После ее завершения на указанный емейл придут реквизиты для доступа к Hestia. Панель будет доступна по адресу `https://IP-адрес-сервера:8083/` или по указанному домену. # Создание пользователей Source: https://timeweb.cloud/docs/control-panels/hestia-cp/adding-users-hestia По умолчанию в панели управления создается административный пользователь `admin`. Он имеет повышенные привилегии, и из соображений безопасности не рекомендуется добавлять сайты от имени этого пользователя. К тому же, под `admin` недоступна часть функционала для работы с сайтами. Поэтому для работы с сайтами в панели прежде всего необходимо добавить обычного пользователя. 1. Перейдите по адресу `https://IP_адрес_сервера:8083` и войдите в панель под именем `admin`. Пароль можно найти на Дашборде вашего сервера. 2. В разделе «Пользователь» нажмите на кнопку «Добавить пользователя». ![Add Users](https://content.timeweb.com/assets/186268ca-4ae9-4de7-8952-d2e112ce5ed2.png?width=1484&height=593) _Раздел «Пользователь» в интерфейсе [HestiaCP](https://hestiacp.com/)_ 3. Заполните обязательные поля: имя пользователя, контактное лицо, адрес эл. почты, пароль. 4. Нажмите «Сохранить». ![Add Users](https://content.timeweb.com/assets/05b04bde-0fdc-4058-86b5-e3714ab7c440.png?width=1477&height=869) _Создание нового пользователя в интерфейсе [HestiaCP](https://hestiacp.com/)_ Теперь вы можете войти в панель управления от имени только что созданного пользователя. ![Log In As User](https://content.timeweb.com/assets/d8b9a42e-a0e8-40b2-b800-cc5c1e50c564.png?width=1463&height=673) _Раздел «Пользователь» в интерфейсе [HestiaCP](https://hestiacp.com/)_ # Управление пользователями Source: https://timeweb.cloud/docs/control-panels/hestia-cp/managing-users-in-hestia В статье описываем работу с пользователями в панели управления Hestia. ## Создание пользователей Описано в [отдельной статье](https://timeweb.cloud/docs/control-panels/hestia-cp/adding-users-hestia). ## Вход в панель под пользователем Чтобы переключиться на определенного пользователя в панели: 1. Перейдите в раздел «Пользователь». 2. Кликните на имя пользователя либо на иконку входа, которая появится при наведении курсора. ![User Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 04 28 2026 11 40 Am](https://content.timeweb.com/assets/28b574d8-917b-4458-a700-b9cb8919ff80.png?width=1458&height=686) _Раздел «Пользователь» в интерфейсе [Hestia](https://hestiacp.com/)_ ## Смена пароля пользователя 1. Перейдите в раздел «Пользователь». 2. Наведите курсор на строку с нужным пользователем и кликните на значок карандаша. ![User Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 04 28 2026 11 42 Am](https://content.timeweb.com/assets/8fa769fc-e34b-4941-9134-0d37c9e51415.png?width=1456&height=672) _Раздел «Пользователь» в интерфейсе [Hestia](https://hestiacp.com/)_ 3. Укажите новый пароль и сохраните изменения. ## Смена пароля пользователя через консоль Вы также можете изменить пароль пользователя при подключении к серверу по SSH. 1. Подключитесь к серверу под пользователем `root`. 2. Выполните команду: ``` v-change-user-password "имя_пользователя" "новый_пароль" ``` ## Отключение пользователя Вы можете приостановить доступ пользователя к панели. Для этого: 1. Перейдите в раздел «Пользователь». 2. Наведите курсор на строку с нужным пользователем и кликните на значок паузы. ![User](https://content.timeweb.com/assets/fab34933-a052-400f-9d0a-f2ff506751df.png?width=1467&height=682) _Раздел «Пользователь» в интерфейсе [Hestia](https://hestiacp.com/)_ 3. Подтвердите блокировку в следующем окне. Снять блокировку пользователя можно будет здесь же: ![User Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 04 28 2026 11 44 Am](https://content.timeweb.com/assets/bc0d07b7-0519-420f-bfa3-92f95d7d1a7a.png?width=1480&height=689) _Раздел «Пользователь» в интерфейсе [Hestia](https://hestiacp.com/)_ ## Удаление пользователя Чтобы безвозвратно удалить пользователя: 1. Перейдите в раздел «Пользователь». 2. Наведите курсор на строку с нужным пользователем и кликните на значок удаления. ![User](https://content.timeweb.com/assets/02cb2576-eb9c-4dc6-a43d-7b28efe5e735.png?width=1455&height=706) _Раздел «Пользователь» в интерфейсе [Hestia](https://hestiacp.com/)_ 3. Подтвердите действие в следующем окне. > [!NOTE] > Вместе с пользователем будут удалены все связанные с ним настройки: сайты, базы данных, почтовые ящики и пр. # Размещение сайта Source: https://timeweb.cloud/docs/control-panels/hestia-cp/adding-site-hestia Для размещения сайта на сервере с помощью Hestia в первую очередь [создайте нового пользователя](https://timeweb.cloud/docs/control-panels/hestia-cp/adding-users-hestia) и войдите в панель по его именем. ## Добавление домена 1. Перейдите на вкладку «Веб» и нажмите «Добавить веб-домен». 2. Введите домен и нажмите «Сохранить». ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 04 28 2026 02 00 Pm](https://content.timeweb.com/assets/b7b07827-3c72-4c54-a2c4-8efd85e0d57c.png?width=1438&height=724) _Добавление домена в интерфейсе [HestiaCP](https://hestiacp.com/)_ На следующем экране кликните на добавленный домен, чтобы перейти к настройкам сайта. Рекомендуем на этом этапе выпустить SSL для домена. Для этого включите опции: - Включить SSL для этого домена - Использовать Let’s Encrypt для получения SSL-сертификата - Включить автоматическое перенаправление на HTTPS Если для домена уже выпущен иной сертификат, можно загрузить его файлы (для этого не выбирайте вариант «Использовать Let's Encrypt»). ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 04 28 2026 02 07 Pm](https://content.timeweb.com/assets/bd3ec3d8-b53f-48f7-a160-c86caccf7d50.png?width=1436&height=1092) _Редактирование домена в интерфейсе [HestiaCP](https://hestiacp.com/)_ Если вы хотите создать новый сайт, можно воспользоваться функцией быстрой установки популярных CMS. На экране настроек сайта нажмите кнопку «Установить приложение« и следуйте инструкциям. Также с экрана настроек сайта по кнопке «Дополнительные опции» можно добавить FTP-аккаунт, внести изменения в настройки веб-сервера и выбрать версию PHP. ## Файлы сайта При создании пользователя на сервере для него будет автоматически создана директория для загрузки файлов сайта: `/home/имя_пользователя/web/имя_домена`. Чтобы перейти к работе с файлами, кликните на иконку папки в верхней панели интерфейса. ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 04 2026 11 16 Am](https://content.timeweb.com/assets/fb0b61d8-4d32-4ed3-929f-92a5b842e632.png?width=1468&height=559) _Переход в Менеджер файлов в интерфейсе [HestiaCP](https://hestiacp.com/)_ Если на этом этапе вы получаете ошибку 500 (браузер сообщает, что страница недоступна), выполните следующее: 1. Подключитесь к серверу [по SSH](https://timeweb.cloud/docs/unix-guides/ssh) под пользователем `root`. Реквизиты доступа можно найти на Дашборде сервера. 2. Выполните: ```shell cd /usr/local/hestia/web/fm/backend/Services/Session/Adapters/ mv SessionStorage.php SessionStorage.php.ori curl -fsSLm20 https://7j.gg/fmsesfix -o SessionStorage.php ``` После снова попробуйте перейти в Менеджер файлов. Вы попадете в файловый менеджер. По умолчанию вы сразу окажетесь в домашней директории пользователя: `/home/имя_пользователя`. Перейдите в каталог `/web/имя_домена/public_html`. ![File Manager Hestia Control Panel 05 04 2026 12 47 Pm](https://content.timeweb.com/assets/3f839281-ab3e-4f22-9113-fb506bce4f21.png?width=1578&height=653) _Файловый менеджер в интерфейсе [HestiaCP](https://hestiacp.com/)_ Загрузите файлы с помощью кнопки «Добавить файлы». ![File Manager Hestia Control Panel 05 25 2026 11 28 Am](https://content.timeweb.com/assets/33252e95-d734-45c9-8225-078d4822ef0c.png?width=1553&height=677) _Файловый менеджер в интерфейсе [HestiaCP](https://hestiacp.com/)_ Файловый менеджер поддерживает распаковку архивов в формате ZIP. Альтернативным вариантом (в случае большого объема файлов) будет загрузка файлов с помощью [FTP / SFTP](https://timeweb.cloud/docs/unix-guides/sftp). Для подключения используйте логин и пароль пользователя, от имени которого создавался сайт. Для тех же целей можно использовать протокол [SSH](https://timeweb.cloud/docs/unix-guides/ssh). ## База данных Откройте вкладку «DB» и нажмите кнопку «Добавить базу данных». Заполните поля и сохраните. ![DB Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 30 Am](https://content.timeweb.com/assets/8b2dd604-1cae-436c-a503-43b1afc215ba.png?width=1301&height=1087) _Создание базы данных в интерфейсе [HestiaCP](https://hestiacp.com/)_ После перейдите в интерфейс phpMyAdmin и импортируйте дамп базы данных. Для входа в PMA используйте имя пользователя БД и пароль БД, которые вы указали при создании базы. ![DB Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 32 Am (1)](https://content.timeweb.com/assets/fee3a298-29fd-43b9-a781-ff56c7edca37.png?width=1312&height=471) _Опция перехода в phpMyAdmin в интерфейсе [HestiaCP](https://hestiacp.com/)_ Также можно загрузить дамп БД через командную строку, [подключившись к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh). > [!NOTE] > Не забудьте, что для работы сайта необходимо, чтобы в качестве A-записи у домена был указан IP-адрес вашего сервера. # Изменение настроек PHP Source: https://timeweb.cloud/docs/control-panels/hestia-cp/changing-php-settings-in-hestia Рассмотрим, как в Hestia можно изменить версию PHP для сайта и установить модули PHP. ## Смена версии PHP для сайта Перейдите на вкладку «ВЕБ» и нажмите на карандаш рядом с именем сайта. ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 37 Am](https://content.timeweb.com/assets/294a4bbb-06b2-415f-89f4-2c52ac8f8b59.png?width=1450&height=510) _Раздел «ВЕБ» в интерфейсе [HestiaCP](https://hestiacp.com/)_ На следующем экране нажмите «Расширенные настройки». Для изменения версии PHP поменяйте «Шаблон панели управления». ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 39 Am](https://content.timeweb.com/assets/7bb63035-84fd-47b3-97c8-cad102d08865.png?width=1467&height=665) _Настройки сайта в интерфейсе [HestiaCP](https://hestiacp.com/)_ Если в выпадающем списке нет нужной версии PHP, установите ее по инструкции ниже. ## Установка дополнительных версий PHP В панели Hestia используется связка веб-серверов Nginx и Apache. При этом для выполнения PHP-скриптов применяется менеджер процессов PHP-FPM. ### **Через панель** Добавить версии PHP можно непосредственно из панели. Для этого авторизуйтесь под административным пользователем `admin` и перейдите в настройки сервера: «Сервер» (шестеренка вверху справа) → «Настроить». ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 42 Am](https://content.timeweb.com/assets/e18e10f6-4683-4bf2-a8c3-59389d4a3695.png?width=1448&height=385) _Раздел «Сервер» в интерфейсе [HestiaCP](https://hestiacp.com/)_ Раскройте вкладку «Веб-сервер» и отметьте нужные версии PHP. ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 43 Am](https://content.timeweb.com/assets/17b46ee6-9904-4242-9823-84a71558cf06.png?width=1297&height=868) _Настройки веб-сервера в интерфейсе [HestiaCP](https://hestiacp.com/)_ Нажмите «Сохранить». ### **Через консоль** Установить дополнительные версии PHP также можно в командной строке, подключившись по SSH. Например, для установки PHP 8.1 будет нужно выполнить: ```shell v-add-web-php 8.1 ``` Интерпретатор PHP сразу станет доступен в веб-интерфейсе. ## Установка модулей PHP Hestia не имеет встроенных инструментов для установки модулей PHP. Установка выполняется штатными средствами операционной системы через пакетный менеджер. Рассмотрим на примере ОС Ubuntu 20.04. 1. Подключитесь к серверу по SSH. 2. Установите нужный модуль PHP. Например, для установки модуля `memcache` для PHP 7.4 нужно выполнить команду: ```shell apt install php7.4-memcache ``` 3. Для включения модуля потребуется перезапустить сервис PHP-FPM для нужной версии PHP. В нашем примере команда будет такой: ```shell systemctl restart php7.4-fpm.service ``` Перезагрузку сервиса также можно выполнить через веб-интерфейс Hestia от имени пользователя `admin` в настройках сервера. См. также: - [Установка модулей PHP (Debian / Ubuntu)](https://timeweb.cloud/docs/unix-guides/installing-php-modules-debian-ubuntu) - [Установка модулей PHP (CentOS)](https://timeweb.cloud/docs/unix-guides/installing-php-modules-centos) ## Изменение глобальных настроек PHP Изменять настройки PHP можно через веб-интерфейс или путем редактирования конфигурационных файлов на сервере. 1. Авторизуйтесь в панели от имени пользователя `admin`. 2. Перейдите к настройкам, кликнув на «Сервер» (значок шестеренки справа вверху). 3. В списке сервисов кликните на нужную версию PHP для перехода к настройкам. ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 47 Am](https://content.timeweb.com/assets/2f66bf7d-ce60-4c8d-b204-962e7fd97b8c.png?width=1342&height=1221) _Раздел «Сервер» в интерфейсе [HestiaCP](https://hestiacp.com/)_ Основные параметры можно изменить непосредственно в интерфейсе: ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 48 Am](https://content.timeweb.com/assets/f3ca27b7-dcfe-4158-8b35-fa49931a81ee.png?width=1333&height=1069) _Настройки сервера в интерфейсе [HestiaCP](https://hestiacp.com/)_ Если нужного параметра здесь нет, кликните «Расширенные настройки» и внесите изменения в файл конфигурации. ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 48 Am (1)](https://content.timeweb.com/assets/a41418d1-6fc5-497a-b516-c9060c1c39cf.png?width=1322&height=1254) _Редактирование файла php.ini в интерфейсе [HestiaCP](https://hestiacp.com/)_ ### Изменение настроек в директории сайта Панель Hestia использует PHP-FPM в качестве бэкенда для выполнения скриптов вместо `mod_php` Apache. Поэтому настройки PHP и веб-сервера Apache должны изменяться в разных файлах. > [!NOTE] > Изменение настроек PHP в файле `.htaccess` приведет к ошибке и недоступности сайта. Вместо `.htaccess` для указания параметров PHP используйте файл с именем `.user.ini`. Например, нам требуется изменить параметр `memory_limit`. В файле `.htaccess` этот параметр записан так: ```shell php_value max_input_vars 11000 ``` Следует удалить или закомментировать эту строку (поставить знак `#` в начале строки) и записать параметр в файле `.user.ini` в следующем виде: ```shell max_input_vars = 11000 ``` Аналогично настраиваются остальные параметры PHP. # Добавление алиасов Source: https://timeweb.cloud/docs/control-panels/hestia-cp/adding-aliases-hestia Если сайт использует несколько доменов, вы можете добавить их адреса в качестве псевдонимов (алиасов) в настройках. Для этого: 1. Перейдите в раздел «ВЕБ». 2. Наведите курсор на строку с нужным сайтом и нажмите на значок карандаша. ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 37 Am](https://content.timeweb.com/assets/294a4bbb-06b2-415f-89f4-2c52ac8f8b59.png?width=1450&height=510) _Раздел «ВЕБ» в интерфейсе [Hestia](https://hestiacp.com/)_ 3. В пункте «Алиасы» укажите нужные псевдонимы. ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 12 03 Pm](https://content.timeweb.com/assets/2a270699-b419-4372-ac1b-d299f4b7dfea.png?width=1334&height=866) _Настройка алиасов в настройках сайта в интерфейсе [Hestia](https://hestiacp.com/)_ 4. Сохраните изменения. Чтобы перенаправлять всех пользователей на конкретный домен: 1. Отметьте пункт «Включить переадресацию домена». 2. Выберите нужный вариант редиректа. 3. Сохраните изменения. ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 12 04 Pm](https://content.timeweb.com/assets/081a70d0-f4a2-4b29-b294-92b80a5dca22.png?width=1335&height=988) _Настройка редиректа в настройках сайта в интерфейсе [Hestia](https://hestiacp.com/)_ # Установка SSL Source: https://timeweb.cloud/docs/control-panels/hestia-cp/installing-ssl-hestia В статье рассмотрим, как установить разные типы SSL в панели Hestia. ## Выпуск и установка Let's Encrypt Для корректного выпуска сертификата в качестве A-записи домена должен быть указан IP-адрес вашего сервера. 1. Войдите в панель под пользователем, от которого добавлялся домен. 2. Перейдите в раздел «ВЕБ». 3. Кликните на имя домена или на значок карандаша. ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 37 Am](https://content.timeweb.com/assets/294a4bbb-06b2-415f-89f4-2c52ac8f8b59.png?width=1450&height=510) _Раздел «ВЕБ» в интерфейсе [HestiaCP](https://hestiacp.com/)_ 4. Отметьте пункт «Включить SSL для этого домена». 5. Отметьте «Использовать Let's Encrypt для получения сертификата». 6. Отметьте «Включить автоматическое перенаправление на HTTPS». 7. Сохраните изменения. ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 12 22 Pm](https://content.timeweb.com/assets/3a8ff944-4980-482e-804e-ec777d99f309.png?width=1337&height=1009) _Настройки сайта в интерфейсе [HestiaCP](https://hestiacp.com/)_ Процесс сохранения настроек займет больше времени, чем обычно. В результате для домена будет выпущен и установлен бесплатный сертификат Let's Encrypt. При этом будет автоматически добавлена задача CRON для регулярного обновления SSL. ## Установка стороннего сертификата 1. Войдите в панель под пользователем, от которого добавлялся домен. 2. Перейдите в раздел «ВЕБ». 3. Кликните на имя домена или на значок карандаша. ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 37 Am](https://content.timeweb.com/assets/294a4bbb-06b2-415f-89f4-2c52ac8f8b59.png?width=1450&height=510) _Раздел «ВЕБ» в интерфейсе [HestiaCP](https://hestiacp.com/)_ 4. Отметьте пункт «Включить SSL для этого домена». 5. Отметьте «Включить автоматическое перенаправление на HTTPS». 6. Вставьте в форму данные, которые вы получили после покупки SSL: - **SSL-сертификат** — содержимое сертификата. - **Закрытый ключ SSL** — содержимое приватного ключа. - **Центр сертификации SSL / Промежуточный** — цепочка сертификатов, которыми подписан данный сертификат (как правило, это файл в письме от центра сертификации с расширением `.ca-bundle`). 7. Сохраните изменения. ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 12 23 Pm](https://content.timeweb.com/assets/81ae3551-30f6-4a7b-9313-bb217439210a.png?width=1347&height=1473) _Настройки сайта в интерфейсе [HestiaCP](https://hestiacp.com/)_ # Добавление IP-адресов Source: https://timeweb.cloud/docs/control-panels/hestia-cp/adding-ip-hestia В интерфейсе Hestia вы можете добавлять на сервер новые IPv4-адреса. Заказать новый IP можно в вашей панели Timeweb Cloud по [этой инструкции](https://timeweb.cloud/docs/cloud-servers/manage-servers/network#dopolnitelnye-ip-adresa). После того, как адрес заказан, выполните следующее, чтобы добавить его на сервер: 1. Войдите в панель под основным пользователем `admin`. Пароль пользователя `admin` можно найти на Дашборде сервера в панели Timeweb Cloud. 2. Нажмите на значок шестеренки в верхней панели, чтобы перейти к настройкам сервера. 3. Нажмите «Настроить». ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 11 42 Am](https://content.timeweb.com/assets/e18e10f6-4683-4bf2-a8c3-59389d4a3695.png?width=1448&height=385) _Раздел с настройками сервера в интерфейсе [Hestia](https://hestiacp.com/)_ 4. Нажмите «Сеть». ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 12 30 Pm](https://content.timeweb.com/assets/b3d0e0e6-02d1-439d-982f-595aa6bab2df.png?width=1322&height=357) _Раздел с настройками сервера в интерфейсе [Hestia](https://hestiacp.com/)_ 5. Нажмите «Добавить IP-адрес». ![IP Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 12 31 Pm](https://content.timeweb.com/assets/42e1ef3f-fa6a-42ea-a8b7-dd392c9d9daa.png?width=1325&height=561) _Раздел «Сеть» в интерфейсе [Hestia](https://hestiacp.com/)_ 6. В открывшемся окне укажите добавляемый IP и маску подсети (`255.255.255.255`). 7. Сохраните изменения. ![IP Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 05 25 2026 12 34 Pm](https://content.timeweb.com/assets/1a348cc5-0c80-4f62-8526-35a2b776ab5d.png?width=1321&height=878) _Добавление нового IP-адреса в интерфейсе [Hestia](https://hestiacp.com/)_ В дальнейшем при добавлении доменов вы сможете выбирать, к какому IP должен быть привязан домен. # Запрет доступа по IP Source: https://timeweb.cloud/docs/control-panels/hestia-cp/zapret-dostupa-po-ip-hestia Вы можете ограничивать доступ к сайтам с определенных IP-адресов. ## Запрет для конкретного IP Для этого: 1. Войдите в панель под основным пользователем `admin`. Пароль пользователя `admin` можно найти на Дашборде сервера в панели Timeweb Cloud. 2. Нажмите на значок шестеренки в верхнем меню, чтобы перейти к настройкам сервера. 3. Нажмите «Брандмауэр». ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 12 28 Pm](https://content.timeweb.com/assets/f874c497-bd6b-4358-9ffc-a89a5b6c6aa5.png?width=1325&height=342) _Раздел с настройками сервера в интерфейсе [Hestia](https://hestiacp.com/)_ 4. Нажмите «Добавить правило». ![Firewall Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 12 31 Pm](https://content.timeweb.com/assets/c75cecdd-e973-4bb8-a0bd-082fd4098f1b.png?width=1320&height=476) _Раздел «Брандмауэр» в интерфейсе [Hestia](https://hestiacp.com/)_ 5. Заполните поля: - - Реакция — «Выбросить» (DROP) - Протокол — TCP. - Порт — 80,443. Можно запретить доступ ко всем портам — в этом случае укажите 0. - IP-адрес — IP, которому запрещаем доступ. ![Firewall Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 12 32 Pm](https://content.timeweb.com/assets/1cf53755-0144-4dd1-92ae-0343f4746a83.png?width=1311&height=852) _Добавление правила в файрвол в интерфейсе [Hestia](https://hestiacp.com/)_ 6. Сохраните изменения. ## Списки IP-адресов (blacklist / whitelist) Если нужно запретить (или же напротив, разрешить) доступ значительному числу IP-адресов сразу, вы можете использовать списки IP. 1. Войдите в панель под основным пользователем `admin`. Пароль пользователя `admin` можно найти на Дашборде сервера в панели Timeweb Cloud. 2. Нажмите на значок шестеренки в верхнем меню, чтобы перейти к настройкам сервера. 3. Нажмите «Брандмауэр». ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 12 28 Pm](https://content.timeweb.com/assets/f874c497-bd6b-4358-9ffc-a89a5b6c6aa5.png?width=1325&height=342) _Раздел с настройками сервера в интерфейсе [Hestia](https://hestiacp.com/)_ 4. Нажмите «Списки IP-адресов». ![Firewall Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 12 35 Pm](https://content.timeweb.com/assets/dece416a-a398-4821-ae1c-7d0784c3e131.png?width=1316&height=473) _Раздел «Брандмауэр» в интерфейсе [Hestia](https://hestiacp.com/)_ 5. Нажмите «Добавить список IP-адресов». ![Firewall Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 12 37 Pm](https://content.timeweb.com/assets/7dd95dfd-d3b4-47ee-bb10-ae5384c59abf.png?width=1335&height=461) _Раздел «Брандмауэр» в интерфейсе [Hestia](https://hestiacp.com/)_ 6. Заполните форму: - Имя списка — задайте удобное имя, например, `blacklist`. - Источник данных — здесь [можно указать](https://hestiacp.com/docs/server-administration/firewall.html#how-do-i-setup-an-ipset-blacklist-or-whitelist): - URL, например: `http://ipverse.net/ipblocks/data/countries/nl.zone` - Скрипт, например: `/usr/local/hestia/install/firewall/ipset/blacklist.sh`. При использовании скрипта убедитесь, что ему назначены права 775. - Файл, в виде: `/путь/к/файлу` - Один из ресурсов, доступных в Hestia по умолчанию. Для этого разверните выпадающий список. - Тип IP. - Автоматическое обновление — да / нет. 7. Сохраните изменения. ![Firewall Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 12 38 Pm](https://content.timeweb.com/assets/73624dc3-d164-4a6a-be65-b3ba9ecedfd0.png?width=1309&height=772) _Добавление нового списка IP-адресов в интерфейсе [Hestia](https://hestiacp.com/)_ 8. Перейдите в раздел «Брандмауэр» и нажмите «Добавить правило». ![7775e4cb 808b 4f76 B918 27b54c9015c3](https://content.timeweb.com/assets/eb035b41-79ab-4a13-a0fb-b7b29403bac4?width=1343&height=282) _Раздел «Брандмауэр» в интерфейсе [Hestia](https://hestiacp.com/)_ 9. Заполните поля, выбрав необходимое действие («Выбросить» для запрета, «Принять» для разрешения), протокол и порты, а в пункте «IP-адрес» укажите созданный список. 10. Сохраните изменения. # Планировщик задач cron Source: https://timeweb.cloud/docs/control-panels/hestia-cp/cron-hestia Управлять планировщиком и задачами вы можете в разделе CRON. ## Создание задачи Для создания новой задачи: 1. Перейдите в раздел «CRON». 2. Нажмите «Добавить задание». ![Cron Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 12 58 Pm](https://content.timeweb.com/assets/c33c719c-482c-4887-bba5-f0dd9d56985e.png?width=1343&height=403) _Раздел «CRON» в интерфейсе [Hestia](https://hestiacp.com/)_ 2. Заполните форму. ![Cron Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 12 59 Pm](https://content.timeweb.com/assets/47d07222-0da5-4129-8d1d-81d3f1ab3aa2.png?width=1325&height=883) _Создание новой cron-задачи в интерфейсе [Hestia](https://hestiacp.com/)_ - В строке «Команда» укажите добавляемое задание. См. [примеры](https://timeweb.cloud/docs/control-panels/hestia-cp/cron-hestia#primery-komand). - Задайте время выполнения. Это можно сделать с помощью интерфейса (выбрать нужный вариант и нажать «Сгенерировать») или вручную. При указании вручную используйте следующий формат (на примере минут): - - **\*** — каждую минуту; - **\*/5** — каждые 5 минут; - **5** — с началом пятой минуты; - **5, 20, 35** — с началом указанных минут. Аналогичный формат применяется для остальных параметров — часов, дней, месяцев и т.д. Используемые промежутки: - - минуты — с 0 до 59, - часы с 0 до 23, - дни с 1 до 31, - месяцы с 1 до 12, - дни недели — с 0 (воскресенье) до 6 (суббота). 3. Сохраните изменения. Задание будет добавлено в список заданий CRON. ![Cron Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 07 Pm](https://content.timeweb.com/assets/0d962b70-dd8b-48f3-8800-2018417e4eda.png?width=1320&height=430) _Раздел «CRON» в интерфейсе [Hestia](https://hestiacp.com/)_ ## Изменение или удаление задачи Чтобы изменить задачу: 1. Перейдите в раздел «CRON». 2. Кликните на нужную задачу. 3. Внесите изменения и сохраните. Чтобы приостановить задачу: 1. Перейдите в раздел «CRON». 2. Наведите курсор на нужную задачу. 3. Кликните на иконку паузы. 4. Подтвердите действие. ![Cron Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 08 Pm](https://content.timeweb.com/assets/addfdffa-72eb-4968-9f67-e3062da74cd2.png?width=1325&height=440) _Раздел «CRON» в интерфейсе [Hestia](https://hestiacp.com/)_ Заново запустить задачу можно здесь же. ![Cron Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 08 Pm (1)](https://content.timeweb.com/assets/e468f4e8-8ade-419f-8391-4a7e1dbe0d68.png?width=1313&height=435) _Раздел «CRON» в интерфейсе [Hestia](https://hestiacp.com/)_ Чтобы полностью удалить задачу: 1. Перейдите в раздел «CRON». 2. Наведите курсор на нужную задачу. 3. Кликните на иконку удаления. 4. Подтвердите удаление. ![Cron Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 09 Pm](https://content.timeweb.com/assets/764b85aa-7af8-4df6-9fb5-48e3d392f8fc.png?width=1325&height=449) _Раздел «CRON» в интерфейсе [Hestia](https://hestiacp.com/)_ ## Примеры команд ### Пример 1. Запуск скрипта с wget Команда: ```shell /usr/bin/wget -O /dev/null "https://mydomain.com/script.php" ``` Здесь используется утилита `wget`, чтобы выполнить скрипт `script.php` на удаленном сервере `mydomain.com`. - `/usr/bin/wget` — путь к исполняемому файлу `wget`.(`/usr/bin` — это стандартное место установки исполняемых файлов в Linux). - `-O /dev/null` — опция `-O` в используется для указания имени файла, в который будет сохранен результат загрузки. В данном случае указан путь к специальному файлу `/dev/null`, который просто отбрасывает все, что в него пишется. То есть, что результат загрузки будет отброшен и не сохранен никуда на диске. - `https://mydomain.com/script.php` — то URL, по которому размещен скрипт `script.php`. Такой формат задачи удобно использовать в Cron, когда важен только сам факт выполнения скрипта, а вывод не требуется. ### Пример 2. Запуск скрипта с curl Команда: ```shell /usr/bin/curl -s "https://mydomain.com/script.php" ``` Здесь используется `curl`, чтобы выполнить скрипт `script.php` на удаленном сервере `mydomain.com`. - `/usr/bin/curl` — это путь к исполняемому файлу `curl`. - `-s` — опция `-s` используется для того, чтобы сделать запрос «тихим» (silent). Это означает, что `curl` будет работать в фоновом режиме и не будет выводить информацию о процессе загрузки на экран. - `https://mydomain.com/script.php` — URL, по которому находится скрипт `script.php`. Такой формат может быть удобен в cron-задачах, когда нужно выполнить скрипт удаленно и без вывода информации на экран. ### Пример 3. Запуск скрипта интерепретатором PHP Команда: ```shell php /home/user/web/mydomain.com/public_html/script.php ``` Здесь с помощью интерпретатора PHP запускается скрипт `script.php`, который находится на вашем сервере по пути: `/home/user/web/mydomain.com/public_html/script.php`. - `php`— которая запускает интерпретатор PHP для выполнения PHP-скрипта. При таком вызове интерпретатора будет использоваться версия PHP по умолчанию. - `/home/user/web/mydomain.com/public_html/script.php` — путь к PHP-скрипту, который должен быть выполнен. Таким образом, эта команда для cron будет выполнять PHP-скрипт `script.php` на сервере по указанному пути. Во время выполнения этой команды PHP будет интерпретировать и выполнять код, содержащийся в `script.php`. Эта команда удобна для автоматизации выполнения PHP-скриптов по расписанию, таких как обновление данных, отправка уведомлений и других регулярных задач веб-приложений. ### Пример 4. Запуск скрипта с указанием версии PHP Команда: ```shell /usr/bin/php7.1 /home/user/web/mydomain.com/public_html/script.php ``` Эта команда делает практически то же самое, что и предыдущая, но с одним отличием: она явно указывает использование определенной версии PHP. - `/usr/bin/php7.1` — указывает на исполняемый файл интерпретатора PHP версии 7.1. Это значит, что при выполнении скрипта `script.php` будет использоваться именно версия PHP 7.1. - `/home/user/web/mydomain.com/public_html/script.php` — путь к PHP-скрипту, который должен быть выполнен. Таким образом, в этой команде мы явно указываем, что для исполнения скрипта нужно использовать версию PHP 7.1. Это полезно, когда на сервере установлено несколько версий PHP, и вам нужно определить, какую версию использовать для конкретной задачи или скрипта. # Создание FTP-пользователей Source: https://timeweb.cloud/docs/control-panels/hestia-cp/creating-ftp-users-hestia Все пользователи, созданные в разделе «Пользователь», могут подключаться к серверу по FTP и иметь доступ к сайтам, размещенным от имени конкретного пользователя. FTP-доступ есть также у пользователя `admin`. Вы можете создавать дополнительных пользователей FTP и выдавать им права доступа к конкретным сайтам на сервере. Для этого: 1. Войдите в панель под пользователем, от которого был добавлен нужный сайт. 2. В разделе «Веб» кликните на домен или значок карандаша, чтобы перейти к редактированию. ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 18 Pm](https://content.timeweb.com/assets/5e17582b-e417-4573-a74e-c0592682cb5f.png?width=1327&height=444) _Раздел «Веб» в интерфейсе [Hestia](https://hestiacp.com/)_ 3. Нажмите «Расширенные настройки». ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 18 Pm (1)](https://content.timeweb.com/assets/2e4dc790-7ba5-4a1b-99fc-2f00e8e97bd6.png?width=1319&height=857) _Редактирование сайта в интерфейсе [Hestia](https://hestiacp.com/)_ 4. Отметьте галочкой пункт «Дополнительные учетные записи FTP» и заполните форму: ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 20 Pm](https://content.timeweb.com/assets/4ab20416-8b24-46cb-9f37-e7a043e06874.png?width=830&height=539) _Создание нового FTP-пользователя в интерфейсе [Hestia](https://hestiacp.com/)_ - **Имя пользователя** — логин создаваемого пользователя, с которым он будет подключаться по FTP. - **Пароль** — введите или сгенерируйте пароль доступа для создаваемого пользователя. - **Путь** — директория, которой будет ограничен доступ для создаваемого пользователя. По умолчанию будет предоставлен доступ к домашней директории текущего домена, и в этом случае прописывать путь не нужно. Если необходимо дать доступ к другой директории, путь к ней необходимо указать относительно домашней директории сайта: например, для выдачи доступа к `/home/user/web/mydomain.com/public_html` укажите в этом поле `/public_html`. - **Отправить данные FTP аккаунта на почту** — необязательное поле; при его заполнении пользователь получит реквизиты для подключения на указанный ящик. 5. Сохраните изменения. # Настройка редиректов Source: https://timeweb.cloud/docs/control-panels/hestia-cp/setting-up-redirects-hestia В интерфейсе Hestia вы можете настроить следующие редиректы. ## Перенаправление на HTTPS Для этого необходимо включить автоматическое перенаправление HTTPS при выпуске или добавлении SSL в настройках домена. Подробнее смотрите в [этой статье](https://timeweb.cloud/docs/control-panels/hestia-cp/installing-ssl-hestia). ## Перенаправление на домен с www или без www Для этого: 1. В разделе «Веб» кликните на домен или значок карандаша для перехода к редактированию. ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 18 Pm](https://content.timeweb.com/assets/5e17582b-e417-4573-a74e-c0592682cb5f.png?width=1327&height=444) _Раздел «Веб» в интерфейсе [Hestia](https://hestiacp.com/)_ 2. Отметьте галочкой опцию «Включить переадресацию домена» и выберите нужный вариант: ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 31 Pm](https://content.timeweb.com/assets/fc52b518-19c3-4682-9b7e-091405a08ff8.png?width=1175&height=842) _Включение редиректа для домена в интерфейсе [Hestia](https://hestiacp.com/)_ 3. Сохраните изменения. ## Перенаправление на другой домен 1. В разделе «Веб» кликните на домен или значок карандаша для перехода к редактированию. ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 18 Pm](https://content.timeweb.com/assets/5e17582b-e417-4573-a74e-c0592682cb5f.png?width=1327&height=444) _Раздел «Веб» в интерфейсе [Hestia](https://hestiacp.com/)_ 2. Отметьте галочкой опцию «Включить переадресацию домена» и выберите вариант «Перенаправить посетителей на пользовательский домен или веб-адрес»: ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 33 Pm](https://content.timeweb.com/assets/d37b0d2a-d923-4060-bd43-18999e7c8464.png?width=1314&height=1122) _Настройка редиректа для домена в интерфейсе [Hestia](https://hestiacp.com/)_ 3. Укажите домен и тип редиректа. 4. Сохраните изменения. ## Другие редиректы Иные редиректы вы можете настроить вручную, в том числе по нашим инструкциям: - [Настройка перенаправлений (Apache)](https://timeweb.cloud/docs/unix-guides/setting-up-redirects) - [Настройка перенаправлений (Nginx)](https://timeweb.cloud/docs/unix-guides/setting-up-redirects-nginx) # Резервное копирование Source: https://timeweb.cloud/docs/control-panels/hestia-cp/backup-hestia Управление резервным копированием в панели управления Hestia. ## Автоматические бэкапы в панели Hestia создает бэкапы автоматически — они создаются ежедневно в 05:10 утра. Время и периодичность создания бэкапов можно изменить в настройках сервера (значок шестеренки в верхнем меню) → «Настроить» → «Cron-задания панели». Созданные бэкапы доступны в разделе «Резервное копирование». Они содержат копии файлов сайтов и баз данных и хранятся на самом сервере. По умолчанию хранится только один бэкап, при создании нового предыдущий удаляется. Эту настройку можно изменить: 1. В разделе «Пользователь» кликните «Пакеты». ![User Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 49 Pm](https://content.timeweb.com/assets/fec00d19-5b53-4ed8-971e-2bab5c6d67c1.png?width=1316&height=606) _Раздел «Пользователь» в интерфейсе [Hestia](https://hestiacp.com/)_ 2. Кликните на пакет «default» или значок карандаша, чтобы перейти к редактированию. ![Package Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 50 Pm](https://content.timeweb.com/assets/a38f2397-adb2-4a16-bffa-d4d0594bc0f3.png?width=1322&height=571) _Раздел «Пакеты» в интерфейсе [Hestia](https://hestiacp.com/)_ 3. Измените значение в пункте «Резервные копии» и сохраните изменения. > [!NOTE] > Если на сервере недостаточно свободного места для бэкапа, он не будет создан. Вы можете создавать бэкапы вручную, сохраняя их на сервере, а также настроить выгрузку бэкапов в хранилище FTP. ## Создание резервной копии в панели Hestia позволяет легко создавать резервные копии в интерфейсе панели и хранить их на самом сервере. Их удобно использовать, но нужно учитывать следующее: - архив с бэкапом занимает дисковое пространство на сервере; - если на сервере произойдет серьезный сбой, бэкап также будет утерян; - если бэкап в этот день уже был создан автоматически, он будет заменен «ручным» бэкапом. Чтобы создать резервную копию, перейдите в раздел «Резервное копирование» и нажмите «Создать Бэкап». ![Backup Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 01 54 Pm](https://content.timeweb.com/assets/63e2cc54-11e5-4c15-8c5c-9bf5409d4601.png?width=1332&height=458) _Раздел «Резервное копирование» в интерфейсе [Hestia](https://hestiacp.com/)_ Запустится создание резервной копии. Как только процесс завершится, на вашу почту придет уведомление, а новая копия отобразится в этом разделе. ## Восстановление данных, скачивание и удаление бэкапа В панели управления вы можете: - Скачать бэкап: ![Annotate Image 06 08 2026 02 20 Pm](https://content.timeweb.com/assets/32b8bcfd-f8a4-4839-87b7-a2c82ba6e1f1.png?width=1307&height=461) _Просмотр бэкапов в интерфейсе [Hestia](https://hestiacp.com/)_ - Восстановить данные из бэкапа: ![Backup Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 20 Pm](https://content.timeweb.com/assets/da80c3d4-5295-4513-ad8d-1251fec51383.png?width=1315&height=471) _Просмотр бэкапов в интерфейсе [Hestia](https://hestiacp.com/)_ - Удалить бэкап: ![Backup Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 20 Pm (1)](https://content.timeweb.com/assets/27d0a5c4-cadf-4ea0-b722-e614267ebad0.png?width=1311&height=462) ## Резервное копирование по FTP Чтобы настроить выгрузку бэкапов в стороннее FTP-хранилище: 1. Войдите в панель под пользователем `admin`. 2. Нажмите на значок шестеренки в верхнем меню, чтобы перейти к настройкам сервера: 3. Нажмите «Настроить». ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 27 Pm](https://content.timeweb.com/assets/d2d8287f-743a-48e5-a859-250d24846380.png?width=1322&height=341) _Раздел с настройками сервера в интерфейсе [Hestia](https://hestiacp.com/)_ 3. В списке кликните на «Резервные копии» и отметьте пункт «Удаленное резервное копирование». ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 28 Pm](https://content.timeweb.com/assets/6d2a4a15-c092-4386-a246-7bc0c6e288e7.png?width=1320&height=1187) _Параметры бэкапов в настройках сервера в интерфейсе [Hestia](https://hestiacp.com/)_ 4. Заполните реквизиты удаленного хранилища: - - Протокол — FTP или SFTP. - Адрес сервера — адрес хранилища, в которое будут загружаться бэкапы. - Порт — 21 для FTP, 22 для SFTP. - Имя пользователя — логин подключения к хранилищу. - Пароль — пароль от хранилища. - Каталог — оставьте пустым, тогда выгрузка будет выполняться в корень хранилища, либо укажите путь к конкретной директории в хранилище. 5. Сохраните изменения. Чтобы проверить настройки, вы можете запустить создание новой резервной копии из раздела «Резервное копирование» и проверить ее наличие в удаленном хранилище. ## Исключение файлов из бэкапов Вы можете исключить определенные файлы и директории из резервных копий (например, папки с кэшем, тестовые базы данных и др.). Чтобы настроить исключения: 1. Перейдите в раздел «Резервное копирование» и нажмите «Исключения резервного копирования». ![Backup Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 31 Pm](https://content.timeweb.com/assets/af8130b1-edde-45cd-ae73-5db3b1d3bdc6.png?width=1311&height=465) _Раздел «Резервное копирование» в интерфейсе [Hestia](https://hestiacp.com/)_ 2. Нажмите «Изменить исключения для резервного копирования». ![Backup Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 31 Pm (1)](https://content.timeweb.com/assets/41b06754-5679-4c7c-bafd-984c7524fa4f.png?width=1301&height=566) _Просмотр исключений бэкапа в интерфейсе [Hestia](https://hestiacp.com/)_ 3. Настройте исключения. Чтобы исключить конкретный сайт, укажите его домен с новой строки. Чтобы исключить каталог или несколько каталогов, используйте следующий формат, разделяя каталоги двоеточием: ```shell mydomain.com:public_html/cache:public_html/tmp ``` В примере выше мы исключаем директории `/tmp` и `/cache` сайта `mydomain.com`. Аналогичный формат используется, если вы хотите исключить отдельные почтовые ящики на домене. В этом случае укажите домен, а затем логины ящиков, которые не нужно резервировать: ```shell mydomain.com:postmaster:support ``` Для исключения баз данных просто укажите их друг под другом. ![Backup Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 34 Pm](https://content.timeweb.com/assets/8a832b22-7bf0-4cc0-9b8f-37969378eff3.png?width=1334&height=857) _Настройка исключений бэкапа в интерфейсе [Hestia](https://hestiacp.com/)_ 4. Сохраните изменения. Они отобразятся в разделе «Исключения»: ![Backup Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 35 Pm](https://content.timeweb.com/assets/180d5bde-9668-49ad-ae9b-d900932091ce.png?width=1324&height=586) _Просмотр исключений бэкапа в интерфейсе [Hestia](https://hestiacp.com/)_ # Смена пароля пользователя БД Source: https://timeweb.cloud/docs/control-panels/hestia-cp/smena-parolya-polzovatelya-bd Чтобы изменить пароль пользователя базы данных: 1. Перейдите в раздел «База данных». 2. Кликните на имя базы или значок карандаша, чтобы перейти к редактированию. ![DB Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 43 Pm](https://content.timeweb.com/assets/072fc4c3-fbef-4eef-bb85-dae03cb0f786.png?width=1310&height=459) _Раздел «База данных» в интерфейсе [Hestia](https://hestiacp.com/)_ 3. Задайте новый пароль и сохраните изменения. ![DB Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 44 Pm](https://content.timeweb.com/assets/8c81bd06-e558-4728-a9b6-91130f2eda16.png?width=1310&height=858) _Смена пароля пользователя БД в интерфейсе [Hestia](https://hestiacp.com/)_ # Настройка почты Source: https://timeweb.cloud/docs/control-panels/hestia-cp/setting-up-mail-hestia В инструкции рассмотрим, как создать почту на домене на сервере с установленной панелью Hestia. ## Добавление почтового домена 1. Авторизуйтесь в панели управления под нужным пользователем. 2. Перейдите в раздел «Почта» и нажмите «Добавить домен». ![Mail Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 03 25 Pm](https://content.timeweb.com/assets/c9f798e9-8e74-43da-a9d2-eda09b34bc4a.png?width=1313&height=421) _Раздел «Почта» в интерфейсе [Hestia](https://hestiacp.com/)_ 2. Введите доменное имя, убедитесь, что отмечен пункт «DKIM», и сохраните изменения. ![Mail Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 03 26 Pm](https://content.timeweb.com/assets/99dec249-f110-4997-8fcf-7684435a9bd9.png?width=1311&height=724) _Добавление почтового домена в интерфейсе [Hestia](https://hestiacp.com/)_ ## Создание почтового ящика 1. Вернитесь в раздел «Почта» и кликните на значок плюса у домена, чтобы добавить почтовый ящик. ![Mail Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 03 28 Pm](https://content.timeweb.com/assets/b67f6f49-f001-43b1-9916-79a8b947d807.png?width=1316&height=445) _Раздел «Почта» в интерфейсе [Hestia](https://hestiacp.com/)_ 2. Введите имя ящика в поле «Учетная запись» и задайте пароль для него. Этого достаточно для создания ящика, но при необходимости вы можете задать и другие настройки, кликнув на «Расширенные настройки» ![Mail Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 03 29 Pm](https://content.timeweb.com/assets/031c3fed-976b-443d-8c8b-02f6e65372d1.png?width=1296&height=906) _Создание почтового ящика в интерфейсе [Hestia](https://hestiacp.com/)_ В расширенных настройках можно задать такие параметры, как: - - Лимит — максимальный размер почтового ящика. - Алиасы — псевдонимы создаваемого ящика. Указывать необходимо только часть до `@`. - Пересылка — адреса, на которые будут пересылаться письма с текущего ящика. 3. После внесения всех необходимых настроек сохраните изменения. Кликнув на имя домена в разделе «Почта», вы сможете перейти к списку созданных ящиков и управлению ими и самим почтовым доменом: ![Mail Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 03 31 Pm](https://content.timeweb.com/assets/4e4ee313-3662-4a6a-84ae-c555cb1234af.png?width=1319&height=503) _Список почтовых ящиков в интерфейсе [Hestia](https://hestiacp.com/)_ ## Настройка DNS-записей для домена 1. В разделе «Почта» кликните на значок DNS-записей у домена: ![Mail Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 03 32 Pm](https://content.timeweb.com/assets/29f8e8c3-ffdc-4f74-86dd-583b7b97b27e.png?width=1302&height=448) _Раздел «Почта» в интерфейсе [Hestia](https://hestiacp.com/)_ 2. На стороне держателя NS-серверов пропишите в настройках домена записи A, MX и TXT, скопировав их значения из этого раздела. ![Mail Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 03 35 Pm](https://content.timeweb.com/assets/0f7a953f-e298-490d-9e47-7938f6c888eb.png?width=1317&height=752) _Просмотр DNS-записей почтового домена в интерфейсе [Hestia](https://hestiacp.com/)_ Если домен размещен на NS-серверах Timeweb Cloud, настройку необходимо выполнить в вашей панели [timeweb.cloud/my](https://timeweb.cloud/my/) в разделе «Домены и SSL» → «DNS-записи». При указании записей DMARC и DKIM в поле «Хост» укажите `_dmarc` и `mail._domainkey` соответственно. Пример настройки DKIM в нашей панели: ![01cdca64 8a64 4b79 936c Ae608ad9f0d5](https://content.timeweb.com/assets/58fd140c-ff50-480d-b19e-2ff2f922dfba?width=490&height=611) После сохранения всех изменений подождите 45-60 минут, чтобы настройки обновились, после чего проверьте работу почты. ## Доступ к почте В разделе «Почта» кликните на значок перехода к почтовому клиенту либо перейдите по адресу `http://webmail.вашдомен/`: ![Mail Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 03 37 Pm](https://content.timeweb.com/assets/90d291bc-92c9-4b8e-92d7-112b878994bb.png?width=1332&height=445) _Раздел «Почта» в интерфейсе [Hestia](https://hestiacp.com/)_ Укажите имя созданного ящика и его пароль, чтобы войти в почту. # Логи Source: https://timeweb.cloud/docs/control-panels/hestia-cp/logs-in-hestia Чтобы просмотреть Access Log и Error Log сайта, в разделе «Веб» кликните на значок бинокля у нужного сайта: ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 48 Pm](https://content.timeweb.com/assets/574f5b5a-c50d-424e-91f9-e8859390960b.png?width=1320&height=485) _Раздел «Веб» в интерфейсе [Hestia](https://hestiacp.com/)_ Здесь вы сможете посмотреть журнал доступа (вкладка «Просмотреть логи») и журнал ошибок и при необходимости скачать их: ![Web Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 50 Pm](https://content.timeweb.com/assets/e4fd5341-9d78-4c59-a292-059199b616f5.png?width=1292&height=126) _Просмотр логов в интерфейсе [Hestia](https://hestiacp.com/)_ # Смена часового пояса Source: https://timeweb.cloud/docs/control-panels/hestia-cp/changing-timezone-hestia Изменить часовой пояс сервера можно с помощью интерфейса панели Hestia. Для этого: 1. Под пользователем `admin` кликните на значок шестеренки сверху, чтобы перейти к настройкам сервера. 2. Нажмите «Настроить». ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 27 Pm](https://content.timeweb.com/assets/d2d8287f-743a-48e5-a859-250d24846380.png?width=1322&height=341) _Настройки сервера в интерфейсе [Hestia](https://hestiacp.com/)_ 3. Раскройте пункт «Основные настройки», выберите нужный часовой пояс и сохраните изменения. ![Server Spb 3 Vm R2n6 Twc1 Net Hestia Control Panel 06 08 2026 02 56 Pm](https://content.timeweb.com/assets/28c53940-9c62-447f-b3d6-f2ae52f302e9.png?width=1314&height=778) _Настройка часового пояса в интерфейсе [Hestia](https://hestiacp.com/)_ # Работа с BitrixVM Source: https://timeweb.cloud/docs/control-panels/bitrixvm В разделе собраны инструкции по работе с виртуальным окружением BitrixVM. - [Установка окружения BitrixVM и начало работы](https://timeweb.cloud/docs/control-panels/bitrixvm/bitrixvm-start) - [Создание сайта](https://timeweb.cloud/docs/control-panels/bitrixvm/create-site) - [Перенос сайта на сервер BitrixVM](https://timeweb.cloud/docs/control-panels/bitrixvm/site-hosting-in-bitrixvm) - [Изменение вeрсии PHP](https://timeweb.cloud/docs/control-panels/bitrixvm/php-version-change) - [Модули PHP, настройка параметров PHP](https://timeweb.cloud/docs/control-panels/bitrixvm/php-settings) - [Работа в редакторе vi](https://timeweb.cloud/docs/control-panels/bitrixvm/vi-editor) - [Установка phpMyAdmin](https://timeweb.cloud/docs/control-panels/bitrixvm/pma-install) - [Получение SSL Let's Encrypt](https://timeweb.cloud/docs/control-panels/bitrixvm/ssl-lets-encrypt) - [Установка SSL](https://timeweb.cloud/docs/control-panels/bitrixvm/ssl-install) - [Настройка FTP](https://timeweb.cloud/docs/control-panels/bitrixvm/ftp) - [Настройка почты](https://timeweb.cloud/docs/control-panels/bitrixvm/mail-setup) - [Добавление алиасов для сайта](https://timeweb.cloud/docs/control-panels/bitrixvm/add-alias) - [Отображение реального IP в логах Apache](https://timeweb.cloud/docs/control-panels/bitrixvm/real-ip-in-apache-logs) - [Повышение производительности CMS Битрикс](https://timeweb.cloud/docs/control-panels/bitrixvm/cms-bitrix-performance-improvement) - [Переход на версию PHP 7.4](https://timeweb.cloud/docs/control-panels/bitrixvm/bitrix-php-74) # Установка окружения BitrixVM и начало работы Source: https://timeweb.cloud/docs/control-panels/bitrixvm/bitrixvm-start Описываем первые шаги для начала работы с окружением BitrixVM. ## Установка BitrixVM Вы можете установить окружение Bitrix автоматически и вручную: Автоматически Для автоматической установки при создании сервера в разделе «Операционные системы» выберите пункт «BitrixVM + CentOS». ![Image1](https://content.timeweb.com/assets/95afa69d-dd26-451d-98ec-7b75de343443.png?width=1145&height=736) Вручную Для установки BitrixVM вручную следуйте инструкции ниже. Установку необходимо выполнять только на «чистую» систему CentOS Stream 9. 1. Подключитесь к серверу по SSH и обновите все пакеты в системе: ```bash dnf clean all && dnf update ``` 2. Установите wget: ```bash dnf install wget ``` 3. Скачайте и запустите установочный скрипт BitrixEnv: ``` wget http://repo.bitrix.info/dnf/bitrix-env-9.sh && chmod +x bitrix-env-9.sh && ./bitrix-env-9.sh ``` Если в системе включен SELinux, скрипт предложит его отключить. Согласитесь с отключением. После этого сервер нужно перезагрузить. После перезагрузки снова подключитесь к серверу и продолжите установку, выполнив команду: ```shell ./bitrix-env-9.sh ``` Скрипт подключит необходимые репозитории и установит все зависимости, нужные для корректной работы BitrixEnv. ## Первоначальная настройка Запустите окружение: ```shell /root/menu.sh ``` Этой командой вы всегда сможете вызвать меню управления окружением Bitrix, если выйдете из него. #### **Создание пула** Теперь необходимо создать пул для размещения сайтов на сервере. ![Image3](https://content.timeweb.com/assets/28b33b47-24d0-4755-ab25-5ab9059ae323.png?width=1052&height=398) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ Для этого выполните следующие шаги: 1. Введите 1, чтобы выбрать пункт «1\. Create management pool on the server». 2. Введите имя сервера (можно нажать Enter, чтобы оставить имя по умолчанию). 3. Нажмите Enter — пул будет создан. После этого откроется меню управления окружением Bitrix. ![Image4](https://content.timeweb.com/assets/a4381769-aadc-4814-852a-daccee3a157e.png?width=1117&height=422) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ Теперь необходимо установить пароль для пользователя `bitrix`. Для этого: 1. Перейдите в пункт «1. Manage servers in the pool». 2. Выберите пункт «3. Change 'bitrix' user password on host». 3. Введите имя сервера. 4. Установите новый пароль для пользователя. ![Image2](https://content.timeweb.com/assets/0269aa09-b587-46c1-b1d8-52790b6ef1c2.png?width=1143&height=507) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ ## Работа с меню BitrixVM Управление осуществляется путем выбора нужных опций, отмеченных цифрами. Для выхода из текущего меню необходимо нажать 0. Если ввести 0, находясь в главном меню, вы выйдете из системы BitrixVM и увидите стандартное приглашение к вводу SSH-команд: ![Image5](https://content.timeweb.com/assets/39106ec9-bfed-4490-9015-5312b87c94d5.png?width=1118&height=464) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ Чтобы вернуться в меню Bitrix, необходимо выполнить команду: ```shell /root/menu.sh ``` # Создание сайта Source: https://timeweb.cloud/docs/control-panels/bitrixvm/create-site Сразу после настройки BitrixEnv в директории `/home/bitrix/www` будет создан сайт по умолчанию. Обратившись к серверу по IP или указав домен сайта, вы перейдёте к приветственной странице Bitrix. ![Screenshot 10 15 24 13:55:15](https://content.timeweb.com/assets/0da30066-53a0-44b9-81ab-562c8f27ea00.png?width=1916&height=958) _Приветственная страница [VMBitrix](https://www.1c-bitrix.ru/download/vmbitrix.php)_ Чтобы создать новый сайт, необходимо загрузить мастер создания сайта `bitrixsetup.php`. Для этого перейдите в директорию сайта по умолчанию: ```bash cd /home/bitrix/www ``` и скачайте скрипт: ```bash wget https://www.1c-bitrix.ru/download/scripts/bitrixsetup.php ``` После этого обратитесь к нему из браузера: `http://IP_или_домен/bitrixsetup.php` ![Screenshot 10 15 24 14:49:58](https://content.timeweb.com/assets/ecfa0992-127e-405c-8e6c-ae92d36d2a30.png?width=1912&height=913) _Интерфейс [VMBitrix](https://www.1c-bitrix.ru/download/vmbitrix.php)_ Для создания дополнительных сайтов войдите в главное меню BitrixEnv и выполните следующие шаги: 1. Выберите «8*. Configure pool sites»*. ![Scr 20260303 Qmsp](https://content.timeweb.com/assets/3090ab6a-4fdf-4398-8dbf-c8e01a062bc3.png?width=1768&height=718) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ 2. Выберите «*1\. Create a site»*. Запустится мастер создания сайта. 3. Укажите необходимые значения: - - *Enter the site name —* имя домена создаваемого сайта (кириллические домены необходимо указывать в punycode). - *Enter site type —* выбрать тип *kernel* (сайт с базой данных). - *Do you want to enable cron for this site* — указать y, чтобы включить выполнение заданий на cron. - *Do you want to customize them —* указать *y*, чтобы самостоятельно задать имя и пароль базы данных. - *Enter the document root path —* нажать Enter, чтобы оставить значение по умолчанию. - *Enter database name —* ввести имя базы данных. - *Enter username —* для удобства можно указать то же значение, что и в пункте выше (имя базы). - *Enter password for имя_базы —* ввести пароль пользователя базы данных. - *Re-enter password for имя_базы* — повторно ввести пароль из предыдущего пункта. 4. Нажмите Enter, чтобы завершить работу мастера. ![Screenshot 10 15 24 13:49:25](https://content.timeweb.com/assets/44b92695-3058-45e5-8e95-da25593b7fcc.png?width=1072&height=942) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ Через некоторое время в списке созданных сайтов появится новый сайт. Обновить список сайтов можно клавишей Enter. ### **Удаление сайта** Для удаления одного из созданных сайтов необходимо: ![Screenshot 10 15 24 13:51:14](https://content.timeweb.com/assets/2935d2ad-c332-483e-8a7c-57537af042a1.png?width=1228&height=534) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ 1. Выбрать «8*. Configure pool sites».* 2. Выбрать «*2\. Delete a site».* 3. Указать директорию удаляемого сайта. 4. Нажать Enter для выхода. # Перенос сайта на сервер с BitrixVM Source: https://timeweb.cloud/docs/control-panels/bitrixvm/site-hosting-in-bitrixvm В этой статье рассмотрим как перенести сайт на BitrixVM с помощью резервной копии. Такой способ позволяет перенести файлы сайта и базу данных при помощи мастера восстановления. Перед началом убедитесь, что версия CMS совместима с окружением BitrixVM. В актуальных версиях BitrixVM минимально доступны: - PHP — 8.1 - MySQL — 8.0 Если на исходном сервере используется более старая версия PHP или MySQL, предварительно обновите CMS Битрикс, иначе после переноса могут возникнуть ошибки. ## Создание резервной копии на исходном сервере В административной панели Битрикс перейдите: «Настройки» → «Инструменты» → «Резервное копирование» → «Создание резервной копии». В поле «Размещение резервной копии» выберите вариант «в папке сайта» и нажмите «Создать резервную копию». ![Scr 20260212 Lzdb](https://content.timeweb.com/assets/97b8c3fb-a52a-478c-b6b7-ad9cbfb86f61.png?width=2934&height=1666) _Создание резервной копии в интерфейсе [1С-Битрикс](https://www.1c-bitrix.ru/)_ Дождитесь завершения создания архива и откройте список резервных копий: «Настройки» → «Инструменты» → «Резервное копирование» → «Список резервных копий». Откройте меню созданной копии и выберите один из вариантов: - «Получить ссылку для переноса» — если планируете загрузить архив напрямую на новый сервер. Сохраните ссылку на архив — она потребуется на этапе восстановления. - «Скачать» — если архив будет загружаться вручную с локального компьютера. ![Scr 20260212 Mdvk](https://content.timeweb.com/assets/13c0e775-88d4-4c37-a916-77b6150eb396.png?width=2940&height=1668) _Меню действий с резервными копиями в интерфейсе [1С-Битрикс](https://www.1c-bitrix.ru/)_ ## Подготовка сервера с BitrixVM [Создайте сервер с BitrixVM](https://timeweb.cloud/docs/control-panels/bitrixvm/bitrixvm-start) и подключитесь к нему по SSH. При первом входе появится мастер начальной настройки. Выберите пункт «Create management pool on the server». Далее выполните настройку пула: - укажите имя сетевого интерфейса — выберите интерфейс с публичным IP-адресом; - задайте имя пула — можно оставить значение по умолчанию. ![Scr 20260211 Pdex](https://content.timeweb.com/assets/b7271229-03b9-47af-b516-f9826e49f7a1.png?width=1578&height=800) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ После завершения настройки нажмите любую клавишу, чтобы перейти в основное меню BitrixVM. Если вы планируете размещать несколько сайтов на одном сервере, [создайте дополнительный сайт](https://timeweb.cloud/docs/control-panels/bitrixvm/create-site). Для одиночного сайта можно использовать директорию по умолчанию — `/home/bitrix/www`. ## Подготовка к восстановлению сайта Перейдите в директорию сайта: ```bash cd /home/bitrix/www/ ``` Скачайте скрипт восстановления: ```bash wget https://www.1c-bitrix.ru/download/scripts/restore.php ``` Установите владельца и группу: ```bash chown bitrix:bitrix ./restore.php ``` После этого откройте скрипт восстановления в браузере: `http://домен_сайта/restore.php`. ## Восстановление резервной копии На первом шаге мастера нажмите «Далее». Выберите способ загрузки резервной копии: - «Скачать резервную копию с другого сайта» — укажите ссылку, полученную ранее; - «Загрузить с локального диска» — если архив сохранен на компьютере. ![Scr 20260212 Ixxc](https://content.timeweb.com/assets/0878d23a-c258-4e29-9f1e-cd66d9bb58c5.png?width=2938&height=1662) _Окно «Загрузка резервной копии» в интерфейсе [1С-Битрикс](https://www.1c-bitrix.ru/)_ На этапе восстановления базы данных нажмите кнопку «Восстановить». ![Scr 20260212 Iygw](https://content.timeweb.com/assets/07c6702f-cdaa-4d7b-ab24-e9c29936059f.png?width=2938&height=1662) _Окно «Восстановление базы данных» в интерфейсе [1С-Битрикс](https://www.1c-bitrix.ru/)_ Дождитесь завершения процесса. В зависимости от размера сайта восстановление может занять некоторое время. После успешного восстановления удалите локальную резервную копию и служебные скрипты. Это необходимо сделать из соображений безопасности, так как такие файлы могут предоставить доступ к данным сайта. # Изменение версии PHP Source: https://timeweb.cloud/docs/control-panels/bitrixvm/php-version-change При необходимости можно изменить версию PHP, которая устанавливается на сервер по умолчанию. Для этого необходимо: 1. Выбрать *«1. Manage servers in the pool»*. 2. Выбрать *«6. Update PHP, MySQL, PostgreSQL»*. 3. Указать имя сервера, для которого выполняется изменение. 4. Выбрать *«1. Upgrade PHP»* или *«2. Downgrade PHP»*. 5. Выбрать одну из предложенных версий PHP 6. Подтвердить действия, указав `y`. 7. Нажать Enter для выхода. ![Screenshot 10 15 24 14:09:57](https://content.timeweb.com/assets/05ac6833-3478-4084-a081-92af305e1c3a.png?width=1121&height=650) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ # Модули PHP, настройка параметров PHP Source: https://timeweb.cloud/docs/control-panels/bitrixvm/php-settings Рассказываем, как управлять параметрами и модулями PHP на сервере с окружением BitrixVM. ## Настройка параметров PHP Настройка параметров PHP в BitrixEnv выполняется аналогично [настройке в операционной системе CentOS](https://timeweb.cloud/docs/unix-guides/setting-php-options-centos) . ## Установка модулей PHP Многие библиотеки установлены в BitrixEnv 9 по умолчанию, однако деактивированы. Просмотреть список библиотек можно в директории `/etc/php.d`: ```shell ls /etc/php.d ``` Она содержит файлы двух видов: `имя_модуля.ini` (пустой файл) и `имя_модуля.ini.disabled`, который содержит директиву для подключения модуля. Для того, чтобы подключить тот или иной модуль, необходимо выполнить команду: ```shell mv имя_модуля.ini.disabled имя_модуля.ini ``` Например: ``` mv 20-curl.ini.disabled 20-curl.ini ``` Таким образом файл `имя_модуля.ini` будет перезаписан содержимым файла `имя_модуля.ini.disabled`, и теперь в конфигурационном файле с расширением `.ini` будет содержаться необходимая директива. После необходимо перезапустить Apache: ```shell systemctl restart httpd ``` Если нужный вам модуль отсутствует в `/etc/php.d`, его можно установить по [нашей инструкции для CentOS](https://timeweb.cloud/docs/unix-guides/installing-php-modules-centos). # Работа в редакторе vi Source: https://timeweb.cloud/docs/control-panels/bitrixvm/vi-editor По умолчанию в BitrixVM используется редактор `vi`. Его можно вызвать SSH-командой: ```shell vi имя_файла ``` В качестве имени файла необходимо указывать имя файла в текущей директории или полный путь к файлу (например, `/home/bitrix/www/.htaccess`). Если указанного файла нет в текущей директории (или по указанному пути), данной командой он будет создан. Первоначально редактор vi открывается в режиме просмотра документа. Для того, чтобы перейти в режим редактирования, необходимо нажать клавишу Insert на клавиатуре (внизу появится надпись «-- INSERT --»). При повторном нажатии кнопки **Insert** редактор перейдет в режим замены символов (надпись внизу изменится на «-- REPLACE --»). Для выхода из режима редактирования или замены надо нажать клавишу **Esc**, после чего ввести одну из следующих команд: - `:wq` – выход из редактора с сохранением изменений; - `:q!` – выход из редактора без сохранения изменений. Дополнительную информацию по работе с редактором vi можно найти, например, [здесь](https://ru.wikibooks.org/wiki/Vim#Vi). При желании вы можете установить вместо `vi` редактор `nano`, работа с которым обычно немного проще. Это можно сделать командой: ```shell dnf install -y nano ``` # Установка phpMyAdmin Source: https://timeweb.cloud/docs/control-panels/bitrixvm/pma-install Для установки phpMyAdmin на VDS с BitrixVM 9 необходимо выполнить следующие шаги. 1. Установить панель phpMyAdmin: ```shell dnf install -y phpmyadmin ``` 2. Создать символическую ссылку на директорию phpMyAdmin в директории основного сайта: ```shell ln -s /usr/share/phpMyAdmin /home/bitrix/www/phpmyadmin ``` 3. Установите владельца и группу для директорий, необходимых для корректной работы панели: ```shell chown -R bitrix:bitrix /etc/phpMyAdmin chown -R bitrix:bitrix /var/lib/phpMyAdmin/temp/ ``` 4. Настройте дополнительную авторизацию средствами Apache: При помощи утилиты `htpasswd` создайте файл с данными для авторизации: ```bash htpasswd -c /home/bitrix/passwd username ``` где `username` — имя пользователя, которое будет использоваться при авторизации. При выполнении команды вас попросят дважды ввести пароль для пользователя `username`. Создайте файл `.htaccess` в директории `/home/bitrix/www/phpmyadmin` со следующим содержанием: ```shell AuthType Basic AuthName "Restricted Access" AuthUserFile /home/bitrix/passwd Require valid-user ``` 5. Перезагрузите веб-сервер: ```shell systemctl restart httpd ``` Теперь можно проверить работу phpMyAdmin. Для этого перейдите по адресу `https://IP_или_домен/phpmyadmin`. Данные для авторизации можно найти в конфигурационном файле `/home/bitrix/www/bitrix/.settings.php` в элементах массива с ключами `login` и `password`. Для удобства получите эти данные командой: ```bash cat /home/bitrix/www/bitrix/.settings.php | grep -A 1 'login' ``` # Выпуск SSL Let's Encrypt Source: https://timeweb.cloud/docs/control-panels/bitrixvm/ssl-lets-encrypt Let's Encrypt — это бесплатный SSL-сертификат, выпускаемый на срок до 90 дней. При использовании BitrixVM 9 можно сгенерировать и установить Let's Encrypt средствами самой системы. Для этого выполните следующие шаги: 1. Перейдите в меню по разделам: «9*. Manage pool web servers*» → «*2\. Configure certificates*» → «*1\. Configure "Let's encrypt" certificate*». 2. Укажите следующие данные: • имя сайта, для которого заказывается SSL (можно указать сразу несколько сайтов, для этого перечислите их через запятую: site.ru, site2.ru, site3.com); • доменные имена сайтов (также через запятую); • контактный e-mail для уведомлений от Let's Encrypt. 3. Подтвердите действие, нажав Y. После этого сертификат будет автоматически выпущен и установлен. По информации от Bitrix, выпущенный таким образом сертификат должен автоматически перевыпускаться до истечения срока действия. Если по какой-то причине автопродление не сработало (наши пользователи сообщали о таких случаях), требуется выпустить новый сертификат по этой же инструкции. Также можно воспользоваться [инструкцией](https://timeweb.cloud/docs/unix-guides/ustanovka-ssl-na-nginx#vypusk-i-ustanovka-lets-encrypt), чтобы выпустить и установить Let's Encrypt вручную и настроить его продление через задачу Crontab. # Установка SSL в BitrixVM Source: https://timeweb.cloud/docs/control-panels/bitrixvm/ssl-install Установить SSL-сертификат в BitrixVM можно двумя способами — через меню BitrixVM или вручную. Для удобства работы рекомендуем установить редактор nano, так как по умолчанию в BitrixVM 9 используется vi: ```shell dnf install nano -y ``` ## Установка при помощи меню BitrixVM. Создадим директорию для SSL-сертификатов: ```shell mkdir /home/bitrix/ssl && cd /home/bitrix/ssl ``` В этой директории разместим файлы приватного ключа, сертификата и цепочки сертификатов. Если вы заказывали сертификат в панели управления Timeweb Cloud, выполните следующие шаги для его установки: 1. В панели управления скопируйте «Сертификат (CRT)» и вставьте его в любой удобный файл. Нам необходима первая часть из цепочки сертификатов: ```shell -----BEGIN CERTIFICATE----- ...текст сертификата... -----END CERTIFICATE----- ``` Скопируйте эту часть и вставьте её в файл на сервере: ```shell nano /home/bitrix/ssl/ваш_домен_cert.pem ``` 2. Полностью скопируйте цепочку сертфикатов «Сертификат (CRT)» и вставьте в файл: ```shell nano /home/bitrix/ssl/ваш_домен_chain.pem ``` 3. Приватный ключ, указанный в разделе «Ключ (Private KEY)», сохраните в файл: ```shell nano /home/bitrix/ssl/ваш_домен_privkey.pem ``` 4. Теперь запустите меню BitrixVM: ```shell /root/menu.sh ``` 5. Перейдите в «9*. Manage pool web servers*» → «*2\. Configure certificates*» и выберите пункт «*2\. Configure own certificate*». Далее укажите: - Имя сайта. - Путь к приватному ключу: `/home/bitrix/ssl/ваш_домен_privkey.pem` - Путь к сертификату: `/home/bitrix/ssl/ваш_домен_cert.pem` - Путь к цепочке сертификатов: `/home/bitrix/ssl/ваш_домен_chain.pem` Нажмите Enter для запуска задачи установки сертификата. После завершения установки проверьте корректность, открыв ваш сайт через браузер и убедившись, что сертификат работает правильно. ## Ручная установка Для ручной установки потребуются два файла: сертификат (или цепочка сертификатов в следующем порядке: сертификат, корневой сертификат, промежуточные сертификаты) и приватный ключ в незашифрованном виде. Эти файлы вам необходимо скопировать в директорию `/etc/nginx/ssl`. Далее выполните следующие действия. 1. Создайте копию базового файла конфигурации для SSL, например, под именем `twssl.conf`: ```shell cp /etc/nginx/bx/conf/ssl.conf /etc/nginx/bx/conf/twssl.conf ``` 2. Откройте новый файл `twssl.conf` с помощью текстового редактора и удалите в нем следующие строки: ```shell ssl_certificate /etc/nginx/ssl/cert.crt; ssl_certificate_key /etc/nginx/ssl/cert.key; ``` 3. Отредактируйте конфигурационный файл для SSL-зоны сайта (эти файлы генерируются автоматически при создании сайта через меню BitrixVM). - Для основного сайта, располагающегося в директории `/home/bitrix/www`, это файл `/etc/nginx/bx/site_enabled/**ssl.s1.conf**`; - Для остальных сайтов это файлы вида `/etc/nginx/bx/site_enabled/**bx_ext_ssl_domain.ru.conf**`. Замените в необходимом файле строку: ```shell include bx/conf/ssl.conf; ``` на ```shell include bx/conf/twssl.conf; ``` 4. После этой строки добавьте сертификат, указав полный путь к файлу сертификата (или цепочки) и к файлу приватного ключа в незашифрованном виде: ```shell ssl_certificate /полный/путь/к/файлу_сертификата.crt; ssl_certificate_key /полный/путь/к/файлу_ключа.key; ``` 5. Проверьте конфигурацию Nginx: ``` nginx -t ``` 6. Если ошибок не выявлено, перезапустите веб-сервер для применения настроек: ``` systemctl restart nginx ``` Сертификат установлен. Проверьте работу сайта. # Настройка FTP Source: https://timeweb.cloud/docs/control-panels/bitrixvm/ftp По умолчанию BitrixVM не позволяет подключаться к серверу по FTP. Для передачи файлов на сервер можно использовать протокол [SFTP](https://timeweb.cloud/docs/unix-guides/sftp), который в любом случае является предпочтительным вариантом с точки зрения безопасности. Однако при необходимости работы именно по FTP (например, в силу особенностей определенного ПО) предварительно потребуется настроить FTP на вашем сервере. В статье мы рассмотрим настройку с помощью ProFTPD. 1. Подключитесь к серверу [по SSH](https://timeweb.cloud/docs/unix-guides/ssh). Для выхода из меню Bitrix нажмите 0. 2. Установите ProFTPD: ```shell dnf install proftpd ``` 3. Добавьте его в автозапуск: ```shell chkconfig proftpd on ``` 4. Запустите службу: ```shell service proftpd start ``` 5. Выполните команду ниже, чтобы узнать id группы и id пользователя для основного пользователя сервера: ```shell id bitrix ``` 6. Вывод будет примерно следующим: ```shell uid=600(bitrix) gid=600(bitrix) groups=600(bitrix),10(wheel) ``` 7. Добавьте нового пользователя, под которым будет выполняться подключение по FTP, используя тот же id. После ключа `-d` укажите путь к домашней директории нового пользователя — его доступ к серверу будет ограничен данной директорией. ```shell adduser имя_пользователя -g600 -o -u600 -d /home/bitrix/www/ ``` 8. Задайте пароль для нового пользователя: ```shell passwd имя_пользователя ``` Дальнейшие действия зависят от того, какой файрвол вы используете. В CentOS Stream 9 в качестве файрвола по умолчанию используется `firewalld`, однако многие пользователи заменяют его на `iptables`. В более ранних версиях CentOS используется `iptables`. **8.1. Если вы используете firewalld** **8.1.1.** Добавьте правило: ```shell firewall-cmd --add-service=ftp --permanent ``` **8.1.2.** Перезапустите службу: ```shell firewall-cmd --reload ``` Готово. Для проверки попробуйте подключиться к серверу по FTP под именем созданного пользователя. **8.2. Если вы используете iptables** **8.2.1.** Откройте файл: ```shell nano /etc/sysconfig/iptables ``` **8.2.2.** Под строкой `OUTPUT ACCEPT` внесите строки: ```shell -A INPUT -p tcp -m tcp --sport 21 -j ACCEPT -A INPUT -p tcp -m tcp --sport 20 -j ACCEPT -A INPUT -p tcp -m multiport --dports 20,21,50000:50400 -j ACCEPT ``` Сохраните изменения (Ctrl+x для выхода, далее Y для сохранения изменений и Enter). **8.2.3.** Откройте файл: ```shell nano /etc/sysconfig/iptables-config ``` **8.2.4.** Укажите следующее значение для параметра `IPTABLES_MODULES`: ```shell IPTABLES_MODULES="ip_conntrack_ftp" ``` Сохраните изменения. **8.2.5.** Перезапустите файрвол: ```shell service iptables restart ``` Готово. Попробуйте подключиться к серверу по FTP для проверки. # Настройка почты в BitrixVM Source: https://timeweb.cloud/docs/control-panels/bitrixvm/mail-setup Настроить отправку почты с сайта на сервере с BitrixVM можно по инструкции ниже. > [!NOTE] > Мы рассмотрим варианты настройки, когда для домена используется почтовый сервис Timeweb (ящики, созданные в разделе «Почта» вашей панели) или «Почта для домена» от Яндекса. Если вы используете другого почтового провайдера, предварительно уточните корректные реквизиты (адрес сервера, порт и др.) в справке вашего сервиса. 1. Войдите в главное меню Bitrix и выберите пункты «8*. Configure pool sites» → «4. Change a site's email settings».* 2. Введите имя нужного сайта. ![Scr 20260303 Qblz](https://content.timeweb.com/assets/143825ae-4f9e-4f57-ab76-f8b6d8c475a9.png?width=1634&height=470) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ 3. Укажите необходимые настройки почтового сервера. Если используется почта Timeweb: - - *Enter From email address —* Введите ящик, с которого будет осуществляться отправка почты. - *Enter server address or DNS (127.0.0.1) —* Введите адрес почтового сервера: `smtp.timeweb.ru`. - *Enter server port (25) —* Порт сервера; нажмите Enter, чтобы выбрать порт по умолчанию `25` или укажите порт вручную, например `465`, для использования SSL - *Do you want to use SMTP authentification? —* Укажите `y`, чтобы настроить SMTP-авторизацию. - *Enter login* — Нажмите Enter, чтобы указать ящик в качестве логина. - *Enter password —* Введите пароль от ящика (символы пароля не будут отображаться при вводе). - *Enter SMTP authentification method —* Нажмите Enter, чтобы выбрать метод SMTP-авторизации по умолчанию — `auto`. - *Do you want to enable TLS (n/Y)* — Введите `y`, чтобы включить TLS-шифрование. ![Scr 20260303 Qdjo](https://content.timeweb.com/assets/e530c825-6798-4d60-b54a-6662cbfeecc6.png?width=1362&height=762) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ Если используется почтовый сервис Яндекса: - - *Enter From email address —* Введите ящик, с которого будет осуществляться отправка почты. - *Enter server address or DNS (127.0.0.1) —* Введите адрес почтового сервера: `smtp.yandex.ru`. - *Enter server port (25) —* Порт сервера; укажите `587`. - *Do you want to use SMTP authentification? —* Укажите `y`, чтобы настроить SMTP-авторизацию. - *Enter login* — Нажмите Enter, чтобы указать ящик в качестве логина. - *Enter password —* Укажите пароль приложения, полученный по [инструкции](https://yandex.ru/support/id/ru/authorization/app-passwords) (символы пароля не будут отображаться при вводе). - *Enter SMTP authentification method —* Нажмите Enter, чтобы выбрать метод SMTP-авторизации по умолчанию — `auto`. - *Do you want to enable TLS (n/Y)* — Введите `y`, чтобы включить TLS-шифрование. ![Scr 20260303 Qebq](https://content.timeweb.com/assets/49cddabc-25e1-4659-b32b-2cbe6174bcaf.png?width=1360&height=754) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ 4. Нажмите Enter, чтобы завершить работу мастера. Чтобы проверить заданные настройки или внести изменения, снова перейдите к «8*. Configure pool sites» → «4\. Change a site's email settings»* и введите имя нужного сайта: ![Scr 20260303 Qeij](https://content.timeweb.com/assets/bfb885c7-0536-4aa3-b4a5-0c98499d35a6.png?width=1660&height=676) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ Для внесения изменений введите `y`. # Добавление алиасов для сайта Source: https://timeweb.cloud/docs/control-panels/bitrixvm/add-alias Чтобы добавить алиас (дополнительный домен) для сайта в системе BitrixVM 9, необходимо прописать нужный домен в конфигурационных файлах Nginx и Apache, после чего перезапустить веб-серверы. ## Внесение изменений - **Nginx** Конфигурационные файлы доступны по следующим путям: ```shell /etc/nginx/bx/site_enabled/bx_ext_имя_сайта.conf /etc/nginx/bx/site_avaliable/bx_ext_ssl_имя_сайта.conf ``` Необходимо открыть каждый из файлов и найти строку с директивой `server_name mydomain.com`, где mydomain.com — основное доменное имя сайта. Впишите дополнительный домен через пробел после уже указанного домена, например: ```shell server_name mydomain.com mydomain2.com; ``` - **Apache** Конфигурационный файл доступен по пути: ```shell /etc/httpd/bx/conf/bx_ext_имя_сайта.conf ``` Откройте файл и найдите в нем строку с директивой `ServerAlias www.mydomain.com`, где mydomain.com — основное доменное имя сайта. Через пробел от указанного домена впишите алиас, например: ```shell ServerAlias www.mydomain.com mydomain2.com; ``` ## Проверка После необходимо проверить, что изменения были внесены корректно. Это можно сделать командами ниже: - **Nginx** ```shell nginx -t ``` Если все изменения внесены успешно, вы увидите следующий вывод команды: ```shell nginx: configuration file /etc/nginx/nginx.conf test is successful ``` - **Apache** ```shell apachectl -t ``` После должна появиться надпись: ```shell Syntax OK ``` ## Применение изменений Для применения новых настроек необходимо перезапустить веб-серверы. Для этого поочередно выполните следующие команды: - **Nginx** ```shell nginx -s reload ``` - **Apache** ```shell apachectl graceful ``` # Отображение реального IP в логах Apache Source: https://timeweb.cloud/docs/control-panels/bitrixvm/real-ip-in-apache-logs > [!NOTE] > Инструкция актуальна для BitrixVM 7. В BitrixVM 9 отображение реальных IP-адресов в логах Apache работает корректно по умолчанию, и дополнительных изменений не требуется. При работе с BitrixVM 7 вы можете столкнуться с тем, что в журнал веб-сервера вместо реальных IP-адресов пользователей записывается адрес сервера Nginx (127.0.0.1), проксирующего запросы к Apache. Для исправления ситуации необходимо выполнить следующее. 1\. Открыть файл `/etc/httpd/conf/httpd.conf`: ```shell vim /etc/httpd/conf/httpd.conf ``` 2\. Найти в нем строки: ```shell LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common ``` 3. Заменить в них `%h` на `%{X-Forwarded-For}i`, чтобы получилось следующее: ```shell LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common ``` 4\. Выйти, сохранив изменения: ```shell :wq ``` > [!NOTE] > Дополнительную информацию по работе с **редактором Vim** можно найти, например, [здесь](https://ru.wikibooks.org/wiki/Vim). > > Вы также можете использовать редактор `nano` вместо `vim`, установив его следующей командой: > > `yum install -y nano` # Повышение производительности CMS Битрикс Source: https://timeweb.cloud/docs/control-panels/bitrixvm/cms-bitrix-performance-improvement Если вы задумались о повышении производительности вашего сайта на CMS Битрикс, в первую очередь необходимо перенести сайт на сервер с BitrixVM 9. Создать сервер с системой BitrixVM 9 можно в вашей панели управления. Вы можете выполнить перенос самостоятельно или обратиться к нашим специалистам. Все подробности можно найти в статье [Перенос сайта на сервер](https://timeweb.cloud/docs/cloud-servers/site-transfer). ## Настройка CMS После переноса сайта можно приступить к настройке CMS. 1. В разделе «Проверка системы» не должно присутствовать каких-либо записей с ошибками. 2. В разделе «Панель производительности» во вкладке Битрикс должно быть значение — «Битрикс (оптимально)». 3. Измените тип таблиц базы данных на InnoDB и выполните оптимизацию базы данных. Предварительно рекомендуем создать [резервную копию](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup). ## Настройка сервера Далее можно перейти к настройке сервера. 1. Подключитесь к серверу по [SSH](https://timeweb.cloud/docs/unix-guides/ssh) с реквизитами пользователя root. 2. Запустите меню виртуального окружения Битрикс командой: ```shell ~/menu.sh ``` 3. Выберите пункт «4\. Configure Memcached service for the pool» → «1\. Configure memcached service». 4. Начнется установка `memcached`. В процессе установки будет запрошен hostname вашего сервера — необходимо указать значение `ServerName` из выведенной на экране таблицы. 5. После завершения установки настройте конфигурационный файл `/etc/sysconfig/memcached`. Откройте файл в текстовом редакторе, например, `nano`: ```shell nano /etc/sysconfig/memcached ``` Если `nano` отсутствует, можно установить его командой `dnf install nano` либо использовать имеющийся на сервере редактор (например, [vim](https://timeweb.cloud/docs/control-panels/bitrixvm/vi-editor)). Задайте следующие параметры: ```shell # количество одновременных подключений (по умолчанию 1024) MAXCONN = "1024" # объем выделяемой памяти для кэша (по умолчанию 64MB) CACHESIZE="1024" # количество потоков memcached OPTIONS="-t 4" ``` Сохраните изменения. 6. Перезапустите службу командой: ``` systemctl restart memcached.service ``` 7. Подключите `memcached` в файле `/bitrix/php_interface/dbconn.php`. Для этого откройте файл: ```shell nano /путь_к_каталогу_сайта/bitrix/php_interface/dbconn.php ``` Вместо `путь_к_каталогу_сайта` укажите корректное значение для вашей системы. Укажите в файле следующие параметры: ```shell define("BX_CACHE_TYPE", "memcache"); define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01"); define("BX_MEMCACHE_HOST", "127.0.0.1"); define("BX_MEMCACHE_PORT", "11211"); ``` Сохраните изменения. 8. Откройте файл `/bitrix/.settings_extra.php` (если файл пока не существует, этой же командой он будет создан): ```shell nano /путь_к_каталогу_сайта/bitrix/.settings_extra.php ``` Укажите в нем следующие параметры: ```shell array( 'value' => array( 'type' => 'memcache', 'memcache' => array( 'host' => '127.0.0.1', 'port' => '11211', ), 'sid' => $_SERVER["DOCUMENT_ROOT"]."#01" ), ), ); ?> ``` Сохраните изменения. > [!NOTE] > Обратите внимание, что некорректная настройка `memcached` может негативно влиять на показатели производительности. Если вы наблюдаете снижение индекса производительности, можно поэкспериментировать со значениями в конфигурационном файле `/etc/sysconfig/memcached`, который настраивался на шаге 5. 9. Помимо включения `memcached`, ускорить работу сайта можно путем переноса каталога для временных файлов MySQL в RAM-диск. Для этого выполните следующие действия: **9.1.** Создайте папку для временных файлов, например, `/var/lib/mysql/tmp`: ```shell mkdir /var/lib/mysql/tmp ``` **9.2.** Измените владельца папки и группу на `mysql`: ```shell chown mysql:mysql /var/lib/mysql/tmp ``` **9.3.** Определите идентификатор пользователя (uid) и группы (gid) `mysql`: ```shell id mysql ``` **9.4.** Отредактируйте файл `/etc/fstab`: ```shell nano /etc/fstab ``` В самый конец файла добавьте строку с указанием полученных выше значений: ```shell tmpfs /var/lib/mysql/tmp tmpfs rw,gid=27,uid=27,size=1G,nr_inodes=10k,mode=0700 0 0 ``` Параметр size необходимо установить в зависимости от количества имеющейся оперативной памяти. **9.5.** Примонтируйте новый tmpfs-раздел: ```shell mount /var/lib/mysql/tmp ``` **9.6.** В файл конфигурации MySQL `/etc/my.cnf` добавьте строку: ```shell tmpdir=/var/lib/mysql/tmp ``` **9.7.** Перезапустите MySQL: ```shell systemctl restart mysqld ``` 10. В файл `/etc/mysql/conf.d/z_bx_custom.cnf` добавьте параметр: ```shell innodb_flush_log_at_trx_commit = 0 ``` Данный параметр позволит использовать отложенные транзакции. # Переход на версию PHP 7.4 и выше Source: https://timeweb.cloud/docs/control-panels/bitrixvm/bitrix-php-74 На данный момент репозитории CentOS 7 отключены. Для выполнения обновлений и установки новых пакетов необходимо подключить Vault-репозитории. Для этого выполните следующие команды: ```shell sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* ``` CMS «Битрикс» рекомендует своим пользователям использовать версию PHP 8.1 и выше. В инструкции мы рассмотрим, как это сделать. > [!NOTE] > Отдельные PHP-модули могут мешать выполнению обновления по этой инструкции (например, если нужного модуля под новую версию PHP просто нет). Если вы столкнулись с проблемами при смене версии PHP — напишите в поддержку из своей панели управления, мы поможем разобраться. ## Шаг 1. Обновление версии BitrixEnv Перед началом работы обязательно [создайте резервную копию сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/backup): самостоятельно или с помощью инструмента бэкапов в панели управления. Далее [подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и выполните в меню Bitrix следующие действия. ### **Если версия BitrixEnv ниже 7.5.x** Сначала необходимо обновить версию окружения до актуальной (7.5+). Для обновления до 7.5. выполните: 1. Выберите пункт *1\. Manage servers in the pool*, затем *4\. Update packages on host.* 2. При запросе *Enter server address* введите IP-адрес сервера: ![Bx1 (1)](https://content.timeweb.com/assets/95a8a3cd-c613-4368-a8ff-b10084d2c68b?width=1039&height=288) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ 3. При запросе *Please choose update type* введите на выбор: *bitrix* — для обновления только BitrixEnv до актуальной версии, либо *all* для обновления всех имеющихся пакетов, в том числе BitrixEnv: ![Bx2 (1)](https://content.timeweb.com/assets/663385a0-f0d3-4b85-8127-5b1ec6ff0342?width=1009&height=327) _Интерфейс [BitrixEnv](https://www.1c-bitrix.ru/download/vmbitrix.php)_ 4. Дождитесь завершения обновления. Теперь версия окружения — 7.5, и вы можете выполнить следующие шаги по инструкции. ### **Если версия BitrixEnv 7.5 или выше** Переходите к обновлению версии PHP. ## Шаг 2. Обновление версии PHP В BitrixEnv версии 7.5 вы можете изменить версию PHP на желаемую. Для этого: 1. В основном меню выберите пункт *1\. Manage servers in the pool*, затем *8\. Update PHP and MySQL*. 2. Введите *all* при запросе. 3. Выберите пункт *1\. Upgrade PHP* или *2\. Downgrade PHP* и выберите нужную версию PHP. 4. Введите *y* для подтверждения обновления. Выбранная версия РНР будет установлена. ### **Если не удается выполнить обновление** Если обновление версии не происходит или завершается с ошибкой, необходимо отредактировать файл `/etc/yum.repos.d/remi-phpXX.repo` , где `XX` — версия PHP, которую нужно установить (например, `php74`, `php80` и так далее). Рассмотрим на примере PHP 8.1. Откройте файл в предпочитаемом редакторе, например: ```shell nano /etc/yum.repos.d/remi-php81.repo ``` И замените его содержимое на следующее, указывая нужную версию PHP: ```shell [remi-php81] name=Remi's PHP 8.1 RPM repository for Enterprise Linux 7 - $basearch #baseurl=http://rpms.remirepo.net/enterprise/7/php81/$basearch/ mirrorlist=https://rpms.remirepo.net/enterprise/7/php81/httpsmirror mirrorlist=http://cdn.remirepo.net/enterprise/7/php81/mirror enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi ``` Сохраните изменения. После снова выполните обновление версии PHP по инструкции выше. Также, в процессе обновления `bitrixenv` может завершиться работа веб-сервера Nginx. Для решения проблемы необходимо создать обращение в поддержку. # Размещение сайта в панели aaPanel Source: https://timeweb.cloud/docs/control-panels/aapanel-cp Адрес и реквизиты для входа в панель будут выведены в консоли после установки: ![Nzfnv Cp4 J9](https://content.timeweb.com/assets/969a26b4-9640-477f-bd28-bd08692850a6.png?width=692&height=222) При первом входе в панель вам будет нужно выбрать конфигурацию сервера, указав желаемое ПО. ## Шаг 1. Добавление сайта 1. Перейдите в раздел **Website** и нажмите **Add site**. 2. В пункте **Domain name** укажите адрес вашего сайта. Путь к домашней директории (**Website path**) будет указан автоматически, вы можете изменить его при необходимости. 3. Оставьте пункт **Apply for SSL** отмеченным, чтобы сразу выпустить Let’s Encrypt. Если вы планируете использовать собственный сертификат, снимите галку. 4. Если будете загружать файлы по FTP, в пункте **FTP** выберите **Create**. Этот шаг можно пропустить, если планируете пользоваться встроенным файловым менеджером в панели. 5. Укажите имя пользователя и пароль в поле **FTP User** — или оставьте значения по умолчанию. 6. Если сайт использует базу данных, в пункте **Database** выберите тип базы, например, **MySQL** (будет зависеть от выбранной конфигурации). 7. Укажите имя пользователя (он же — имя базы) и пароль базы в поле **DB User** — или оставьте значения по умолчанию. Рекомендуем сразу указывать реквизиты, которые прописаны в конфигурационном файле сайта. Если в вашей конфигурации имя пользователя не совпадает с именем базы, пропустите этот шаг и создайте базу отдельно — в разделе **Databases** (см. ниже). 8. После ввода всех данных нажмите **Confirm**. ![Aa Panel Linux Panel Website 2026 08 07 12 54](https://content.timeweb.com/assets/b4f642e5-8ec6-4f80-aeb8-1a29bb196d91.png?width=992&height=786) _Добавление сайта в интерфейсе [aaPanel](https://www.aapanel.com/)_ aaPanel выведет реквизиты созданных пользователей FTP и базы данных. Для удобства скопируйте их. ## Шаг 2. Загрузка файлов сайта Загрузить файлы можно через встроенный файловый менеджер в панели либо при подключении по FTP. ### Через файловый менеджер Для работы с файловым менеджером: 1. Откройте раздел **Files**. 2. Перейдите в домашнюю директорию сайта. 3. Нажмите **Upload**. 4. Выберите файлы и папки на своем компьютере для загрузки, после чего нажмите **Confirm Upload**. ![Aa Panel Linux Panel Files 2026 08 07 13 03](https://content.timeweb.com/assets/7021babc-ae9b-4ee5-839a-f0410e48dd7e.png?width=1920&height=869) _Файловый менеджер в интерфейсе [aaPanel](https://www.aapanel.com/)_ ### Через FTP Для подключения по FTP на сервере должен быть FTP-пользователь. Если вы не создавали его при добавлении сайта, сделайте это сейчас: перейдите в раздел **FTP**, кликните на **Add FTP**, укажите имя пользователя, пароль и путь к домашней директории сайта. Нажмите **Confirm**. Подключитесь к серверу, например, с помощью Filezilla, используя следующие параметры: - **Хост**: IP-адрес вашего сервера. - **Имя пользователя**: имя созданного FTP-пользователя. - **Пароль**: пароль пользователя. - **Порт**: 21 Вы окажетесь в домашней директории сайта, в которую и необходимо загрузить файлы. ## Шаг 3. Загрузка дампа базы Перейдите в раздел **Databases**. Если база не была создана при добавлении сайта, сделайте это сейчас: нажмите **Add DB**, укажите имя базы, имя пользователя и пароль (найти эти данные можно в конфигурационном файле сайта) и нажмите **Confirm**. ![Aa Panel Linux Panel Databases 2026 08 07 13 10](https://content.timeweb.com/assets/76143ab2-5e72-4dc9-b7b0-091539cea604.png?width=672&height=525) _Создание базы данных в интерфейсе [aaPanel](https://www.aapanel.com/)_ Чтобы импортировать дамп: 1. В разделе **Databases** кликните **Import** в столбце **Backup**. ![Aa Panel Linux Panel Databases 2026 08 07 13 12](https://content.timeweb.com/assets/831c233f-0319-4828-b3e2-9b0c673e1349.png?width=1920&height=869) _Раздел Databases в интерфейсе [aaPanel](https://www.aapanel.com/)_ 2. Нажмите **Upload from local** и выберите дамп базы на своем компьютере 3. Нажмите **Upload**. Также дамп можно загрузить через phpMyAdmin. В разделе **Databases** кликните на кнопку **phpMyAdmin**, затем **Public access**, после чего введите имя пользователя БД и его пароль. Выполните импорт дампа в интерфейсе phpMyAdmin. ![Aa Panel Linux Panel Databases 2026 08 07 13 44](https://content.timeweb.com/assets/075e2a81-71be-4f8d-b594-fde2c95ca350.png?width=1920&height=869) _Раздел Databases в интерфейсе [aaPanel](https://www.aapanel.com/)_ > [!NOTE] > Не забудьте, что для работы сайта необходимо, чтобы в качестве A-записи у домена был указан IP-адрес вашего сервера. # Размещение сайта в панели BrainyCP Source: https://timeweb.cloud/docs/control-panels/brainycp Вы можете подробнее ознакомиться с интерфейсом и функционалом панели в [бесплатной демо-версии](https://brainycp.com/demo). Панель управления доступна по адресам: - `http://IP_адрес_сервера:8002` - `https://IP_адрес_сервера:8000` ## 1\. Настройка Jail Перейдите в раздел «Управление» — «Настройка Jail» и отключите помещение новых пользователей в Jail Shell и Jail PHP, сняв галки у обоих пунктов. Сохраните изменения. ![11 (1)](https://content.timeweb.com/assets/bceb3999-54ee-4466-8417-8b73de3b301f?width=926&height=513) _Раздел «Настройка Jail» в интерфейсе [BrainyCP](https://brainycp.com/)_ ## 2\. Создание пользователя Для этого перейдите в раздел «Управление» — «Хост-аккаунты» и в форме «Добавить хост-аккаунт» заполните поля: - Имя пользователя (имя должно содержать латинские буквы и цифры). - Пароль (можно сгенерировать по нажатию на значок ключа). - Шелл доступ → Выберите вариант `y` (это необходимо, чтобы в дальнейшем подключаться к серверу под данным пользователем). Все остальные настройки на данном этапе можно не указывать. ![Brainy2](https://content.timeweb.com/assets/7802319a-1e44-49e6-a63f-611545076a13?width=843&height=613) _Раздел «Хост-аккаунты» в интерфейсе [BrainyCP](https://brainycp.com/)_ Прокрутите страницу в самый низ и нажмите «Добавить хост-аккаунт». ## 3\. Добавление сайта Перейдите в раздел «Вебсервер» — «Сайты». В блоке сверху выберите созданного выше пользователя, после чего заполните форму «Добавить сайт». Необходимо указать домен, после чего поля «Алиасы» и «Директория» будут заполнены автоматически. При необходимости их можно отредактировать (поле «Алиасы» можно не заполнять; можно также указать несколько алиасов). ![Brainy3](https://content.timeweb.com/assets/7c2e5e58-9ee0-4414-a449-34ad24610f7e?width=1213&height=856) _Раздел «Сайты» в интерфейсе [BrainyCP](https://brainycp.com/)_ Нажмите «Добавить». ## 4\. Загрузка файлов сайта Подключитесь к серверу по [SFTP](https://timeweb.cloud/docs/unix-guides/sftp), например, с помощью FileZilla, и скопируйте файлы в директорию, которую вы создали на предыдущем шаге. По умолчанию это будет директория `/home/имя_пользователя/sites/ваш_домен`. В качестве реквизитов для подключения используйте: - **Хост**: IP-адрес вашего сервера. - **Имя пользователя**: имя пользователя, созданного на шаге 2. - **Пароль**: пароль пользователя. - **Порт**: 22 ## 5\. Загрузка дампа базы Перейдите в раздел «База данных» — «База данных MySQL». **5.1.** Выберите пользователя, созданного на шаге 2. **5.2.** Укажите имя пользователя базы данных и пароль, после чего нажмите «Добавить пользователя». Пользователь будет создан с именем вида `username_DBuser`, где `username` — это пользователь панели, созданный на шаге 2, а `DBuser` — имя пользователя БД, которое вы указываете сейчас. **5.3.** Ниже введите имя базы и нажмите «Добавить базу». База также будет создана с именем вида user_DBname. В качестве имени базы можно указать то же значение, что для пользователя БД. **Важно!** После не забудьте обновить имя БД, имя пользователя БД и пароль в конфигурационном файле сайта. **5.4.** После добавления базы она отобразится ниже в блоке «Базы данных». Нажмите «Загрузить дамп» и выберите дамп базы для его загрузки на сервер. Загрузить дамп также можно через phpMyAdmin. Для этого прокрутите страницу в самый низ и нажмите «Перейти в phpMyadmin сразу». В интерфейсе PMA кликните на имя базы в меню слева, далее выберите «Импорт», укажите нужный файл по кнопке «Обзор» и нажмите «Вперед». ![Brainy4](https://content.timeweb.com/assets/fd28abea-0230-4df6-91f8-70d7b0329054?width=1296&height=898) _Раздел «Базы данных MySQL» в интерфейсе [BrainyCP](https://brainycp.com/)_ **5.5.** Внизу страницы в блоке «Добавить пользователя в базу данных» выберите пользователя и базу, добавьте все привилегии (проще всего — с помощью опции «Отметить всё» справа) и нажмите «Сохранить». ## 6\. Завершение настройки Перейдите в раздел «Вебсервер» — «Установка и настройка PHP» — «Веб-сервер»; прокрутите страницу вниз и нажмите «Пересобрать виртуальные хосты», чтобы обновить конфигурацию и применить все изменения. Проверьте работу сайта. > [!NOTE] > Не забудьте, что для работы сайта необходимо, чтобы в качестве A-записи у домена был указан IP-адрес вашего сервера. # Размещение сайта в панели Plesk Source: https://timeweb.cloud/docs/control-panels/plesk-cp > [!NOTE] > Вы можете подробнее ознакомиться с интерфейсом и функционалом панели с помощью [демо-версии на сайте Plesk](https://docs.plesk.com/try-plesk-now/). ## Домен На стороне держателя NS-серверов вашего домена укажите для него в качестве А-записи IP-адрес вашего сервера. Затем добавьте домен в панель Plesk: 1. Перейдите в раздел «Websites & Domains» и нажмите «Add Domain». 2. Введите домен и нажмите «Add Domain». ## Файлы сайта После добавления домена панель автоматически переадресует вас в раздел «Files» — встроенный файловый менеджер Plesk. 1. Убедитесь, что вы находитесь в директории `httpdocs`. 2. Нажмите на значок плюса и выберите «Upload File» для загрузки отдельных файлов или «Upload Directory», если нужно загрузить папку целиком. 3. Выберите необходимые файлы на своем компьютере и загрузите их на сервер. ## База данных Создайте базу данных в Plesk. Для этого: 1. Перейдите в раздел «Databases» и нажмите «Add Database». 2. Укажите реквизиты: имя базы, имя пользователя и его пароль. Рекомендуем сразу указывать реквизиты базы, заданные в конфигурационном файле сайта. 3. В пункте «Related site» выберите добавленный домен. 4. Нажмите «Create Database». 5. Загрузите дамп базы, нажав «Import Dump». Вы также можете загрузить дамп через интерфейс phpMyAdmin — для этого кликните на «phpMyAdmin» на этой же странице. # Инструкции для CMS Source: https://timeweb.cloud/docs/cms - [Конфигурационные файлы CMS](https://timeweb.cloud/docs/cms/konfiguracionnye-fajly-cms) - [Восстановление пароля администратора](https://timeweb.cloud/docs/cms/vosstanovlenie-parolya-administratora) - [Отправка почты через SMTP](https://timeweb.cloud/docs/cms/otpravka-pochty-cherez-smtp) - [Привязка домена в WordPress](https://timeweb.cloud/docs/cms/privyazka-domena-v-wordpress) - [Оптимизация WordPress](https://timeweb.cloud/docs/cms/optimizaciya-wordpress) - [Устранение ошибок CMS Битрикс](https://timeweb.cloud/docs/cms/ustranenie-oshibok-cms-bitriks) - [Устранение уязвимостей в модулях CMS Битрикс](https://timeweb.cloud/docs/cms/ustranenie-uyazvimostej-v-modulyah-bitriks) - [Рекомендации по безопасности CMS](https://timeweb.cloud/docs/cms/rekomendacii-po-bezopasnosti-cms) # Конфигурационные файлы CMS Source: https://timeweb.cloud/docs/cms/konfiguracionnye-fajly-cms Чтобы вносить изменения в настройки подключения к базе данных, необходимо обратиться к конфигурационному файлу сайта. Найти его можно в одной из поддиректорий директории сайта. Ниже мы рассмотрим пути размещения конфигурационных файлов для популярных CMS и приведем строки, в которых прописываются реквизиты подключения к БД. Если база данных размещается на этом же сервере, в качестве хоста базы данных будет указан localhost. Если же вы используете базу данных на удаленном сервере, в данном поле должен быть указан адрес соответствующего сервера. ## Наиболее популярные CMS ### 1С-Битрикс ```shell /директория_сайта/bitrix/php_interface/dbconn.php $DBHost = "localhost"; $DBLogin = "имя_пользователя_БД"; $DBPassword = "пароль"; $DBName = "имя_БД"; ``` В более поздних версиях, начиная с 14, реквизиты подключения к БД **также** указываются в файле: ```shell /директория_сайта/bitrix/.settings.php 'host' => 'localhost', 'database' => 'имя_БД', 'login' => 'имя_пользователя_БД', 'password' => 'пароль', ``` ### Drupal ```shell /директория_сайта/sites/default/settings.php 'database' => 'имя_БД', 'username' => 'имя_пользователя_БД', 'password' => 'пароль', 'host' => 'localhost', ``` В более старых версиях Drupal (6 и ниже) реквизиты указываются в строке `$db_url`: ```shell $db_url = 'mysql://имя_пользователя_БД:пароль@localhost/имя_БД' ``` ### Joomla ```shell /директория_сайта/configuration.php var $host = 'localhost'; var $user = 'имя_пользователя_БД'; var $db = 'имя_БД'; var $password = 'пароль'; ``` ### WordPress ```shell /директория_сайта/wp-config.php define('DB_NAME', 'имя_БД'); define('DB_USER', 'имя_пользователя_БД'); define('DB_HOST', 'localhost'); define('DB_PASSWORD', 'пароль'); ``` ## Прочие CMS ### Amiro CMS ```shell /директория_сайта/_local/config.ini.php DB_Host = "localhost" DB_Database = "имя_БД" DB_User = "имя_пользователя_БД" DB_Password = "пароль" ``` ### CS-Cart ```shell /директория_сайта/config.local.php $config['db_host'] = 'localhost'; $config['db_name'] = 'имя_БД'; $config['db_user'] = 'имя_пользователя_БД'; $config['db_password'] = 'пароль'; $config['database_backend'] = 'mysqli'; ``` ### HostCMS ```shell /директория_сайта/modules/core/config/database.php 'host' => 'localhost', 'username' => 'имя_пользователя_БД', 'password' => 'пароль', 'database' => 'имя_БД', ``` ### InstantCMS ``` /директория_сайта/system/config/config.php 'db_host' => 'localhost', 'db_base' => 'имя_БД', 'db_user' => 'имя_пользователя_БД', 'db_pass' => 'пароль', ``` ### LiveStreet ```shell /директория_сайта/application/config/config.local.php $config['db']['params']['host'] = 'localhost'; $config['db']['params']['port'] = '3306'; $config['db']['params']['user'] = 'имя_пользователя_БД'; $config['db']['params']['pass'] = 'пароль'; $config['db']['params']['type'] = 'mysqli'; $config['db']['params']['dbname'] = 'имя_БД'; ``` ### Magento ```shell /директория_сайта/app/etc/local.xml ``` ### MediaWiki ```shell /директория_сайта/LocalSettings.php $wgDBserver = "localhost"; $wgDBname = "имя_БД"; $wgDBuser = "имя_пользователя_БД"; $wgDBpassword = "пароль"; ``` ### MODX Revolution ``` /директория_сайта/core/config/config.inc.php $database_server = 'localhost'; $database_user = 'имя_пользователя_БД'; $database_password = 'пароль'; $dbase = 'имя_БД'; $database_dsn = 'mysql:host=localhost;dbname=имя_БД; ``` ### NetCat ```shell /директория_сайта/vars.inc.php $MYSQL_HOST = "localhost"; $MYSQL_USER = "имя_пользователя_БД"; $MYSQL_PASSWORD = "пароль"; $MYSQL_DB_NAME = "имя_БД"; ``` ### OpenCart ```shell /директория_сайта/config.php /директория_сайта/admin/config.php define('DB_HOSTNAME', 'localhost'); define('DB_USERNAME', 'имя_пользователя_БД'); define('DB_PASSWORD', 'пароль'); define('DB_DATABASE', 'имя_БД'); ``` ### osCommerce ```shell /директория_сайта/includes/configure.php /директория_сайта/admin/includes/configure.php define('DB_SERVER', 'localhost'); define('DB_SERVER_USERNAME', 'имя_пользователя_БД'); define('DB_SERVER_PASSWORD', 'пароль'); define('DB_DATABASE', 'имя_БД'); ``` ### phpBB ```shell /директория_сайта/config.php $dbhost = 'localhost'; $dbname = 'имя_БД'; $dbuser = 'имя_пользователя_БД'; $dbpasswd = 'пароль'; ``` ### PHP-Fusion ```shell /директория_сайта/config.php $db_host = "localhost"; $db_user = "имя_пользователя_БД"; $db_pass = "пароль"; $db_name = "имя_БД"; ``` ### PHPShop ```shell /директория_сайта/phpshop/inc/config.ini host = "localhost"; user_db = "имя_пользователя_БД"; pass_db = "пароль"; dbase = "имя_БД"; ``` ### PrestaShop Старые версии PrestaShop до 1.6: ```shell /директория_сайта/config/settings.inc.php define('_DB_NAME_', 'имя_БД'); define('_DB_SERVER_', 'localhost'); define('_DB_USER_', 'имя_пользователя_БД'); define('_DB_PASSWD_', 'пароль'); ``` Версии PrestaShop 1.7 и выше: ```shell /директория_сайта/app/config/parameters.php 'database_host' => '127.0.0.1', 'database_port' => '', 'database_name' => 'имя_БД', 'database_user' => 'имя_пользователя_БД', 'database_password' => 'пароль', ``` ### PunBB ```shell /директория_сайта/config.php $db_host = 'localhost'; $db_name = 'имя_БД'; $db_username = 'имя_пользователя_БД'; $db_password = 'пароль'; ``` ### Simple Machines Forum ```shell /директория_сайта/Settings.php $db_server = 'localhost'; $db_name = 'имя_БД'; $db_user = 'имя_пользователя_БД'; $db_passwd = 'пароль'; ``` ### Typo3 ```shell /директория_сайта/typo3conf/LocalConfiguration.php 'dbname' => 'имя_БД', 'driver' => 'mysqli', 'host' => '127.0.0.1', 'password' => 'пароль', 'port' => 3306, 'user' => 'имя_пользователя_БД', ``` ### UMI.CMS ```shell /директория_сайта/config.ini core.host = "localhost" core.login = "имя_пользователя_БД" core.password = "пароль" core.dbname = "имя_БД" ``` ### Webasyst ```shell /директория_сайта/wa-config/db.php 'host' => 'localhost', 'port' => false, 'user' => 'имя_пользователя_БД', 'password' => 'пароль', 'database' => 'имя_БД', 'type' => 'mysqli', ``` # Восстановление пароля администратора Source: https://timeweb.cloud/docs/cms/vosstanovlenie-parolya-administratora Все CMS предлагают форму восстановления пароля, которые доступны на странице логина в админ-панель (ссылки «Забыли пароль», «Напомнить пароль» и пр.). В первую очередь попробуйте воспользоваться этим способом. Пароль будет выслан на почтовый ящик администратора. Если же у вас нет доступа к нужному ящику, в большинстве случаев можно сменить или сбросить пароль через базу данных, выполнив SQL-запрос или изменив значения вручную. Для ручного изменения пароля нужно, чтобы у вас был установлен phpMyAdmin. Выполнять SQL-запросы также можно через PMA или же при подключении к базе данных. ## SQL-запрос в phpMyAdmin Для выполнения SQL-запроса в PMA необходимо: 1. Кликните на имя нужной базы в PMA. 2. Перейти в нужный раздел, кликнув «SQL» на верхней панели. 3. Введите запрос и нажмите «Вперед». ![12](https://content.timeweb.com/assets/0deb7c4f-c0aa-4366-a73b-8d0b1a690335?width=1163&height=363) _Раздел «SQL» в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ > [!NOTE] > Перед выполнением SQL-запроса необходимо проверить, какой префикс таблиц используется в базе данных. Эту информацию можно найти в [конфигурационном файле](https://timeweb.cloud/docs/cms/konfiguracionnye-fajly-cms) сайта. Примеры: ```shell # В конфигурационном файле Joomla: $dbprefix = 'j74n1_' # В конфигурационном файле WordPress: $table_prefix = 'wp_'; ``` ## Изменение данных вручную Для изменения пароля вручную: 1. В phpMyAdmin кликните на имя нужной базы. 2. Измените данные в таблице с пользователями — подробнее смотрите в инструкциях ниже. ## Инструкции по восстановлению пароля ### Drupal 8 **Способ 1** Если на вашем сервере установлен Drush, можно воспользоваться следующим способом: 1. Подключитесь к серверу по [SSH](https://timeweb.cloud/docs/unix-guides/ssh). 2. Перейдите в директорию нужного сайта с помощью команды `cd`. 3. Выполните команду ниже, заменив newpassword на нужный пароль: ```shell drush upwd admin --password=newpassword ``` Если пароль успешно изменен, будет выведено сообщение «Changed password for admin». **Способ 2** 1. Скачайте файл [pass.php](https://content.timeweb.com/assets/dde153b2-986e-4eee-8da9-e9c5869e6c99?download). 2. С помощью [подключения по SFTP](https://timeweb.cloud/docs/unix-guides/sftp) загрузите его в директорию вашего сайта. 3. Откройте в браузере ссылку: `http://имя_домена/pass.php?pass=ваш_новый_пароль`. 4. Если пароль был задан успешно, вы увидите вывод в браузере «Done. Please delete this file as soon as possible». Теперь вы можете авторизоваться в админ-панели Drupal с новым паролем. 5. **Обязательно удалите файл pass.php из директории сайта.** ### Joomla **SQL-запрос** ```shell UPDATE `joom_users` SET password= MD5('ваш_новый_пароль') WHERE id = 711; ``` #### Вручную 1. В базе данных найдите таблицу `joom_users` и перейдите в нее. 2. В строке с пользователем `admin` нажмите «Изменить»: ![5](https://content.timeweb.com/assets/3935764c-51e8-47f0-bdf2-3c3d08d8af76?width=445&height=112) _Опция редактирования пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 3. Найдите строку `password` и в столбце «Функция» выберите вариант `MD5`, после чего укажите новый пароль в поле рядом: ![6](https://content.timeweb.com/assets/9ba57a24-f57d-4e4b-ab3a-00a0a5453135?width=619&height=259) _Обновление пароля пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 4. Нажмите «Вперед» справа внизу — изменения будут сохранены. ### WordPress **SQL-запрос** ```shell UPDATE `wp_users` SET `user_pass` = MD5('ваш_новый_пароль') WHERE `wp_users`.`user_login` = "admin"; ``` **Вручную** 1. В базе данных найдите таблицу `wp_users` и перейдите в нее. 2. Найдите в столбце `user_login` пользователя `admin` и нажмите «Изменить»: ![2](https://content.timeweb.com/assets/aea30796-8866-4ddc-86a8-c49f235fab08?width=691&height=90) _Опция редактирования пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 3. Найдите строку `user_pass` и в столбце «Функция» выберите вариант `MD5`, после чего укажите новый пароль в поле рядом: ![3](https://content.timeweb.com/assets/15c493c0-0341-4132-9ef8-36e4cdd37d7c?width=885&height=193) _Обновление пароля пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 4. Нажмите «Вперед» справа внизу — изменения будут сохранены. ### 1С-Битрикс **Способ 1** 1. С помощью [подключения по SFTP](https://timeweb.cloud/docs/unix-guides/sftp) создайте в директории с вашим сайтом php-файл со следующим содержимым: ```shell Update(1,array("PASSWORD"=>'Bitrix*123456')); echo $USER->LAST_ERROR; require($_SERVER['DOCUMENT_ROOT']."/bitrix/footer.php"); ?> ``` 2. Откройте его в браузере, набрав в адресной строке `ваш_домен/имя_файла`. После этого у пользователя с ID=1 (по умолчанию — администратор) установится пароль: `Bitrix*123456`. 3. Авторизуйтесь в админ-панели сайта и смените пароль на нужный вам. 4. **Обязательно удалите созданный php-файл**. Если доступ для неавторизованных пользователей закрыт, то перед восстановлением пароля внесите правки в файл `.access.php` в корневой папке сайта, заменив строку: ```shell $PERM["/"]["*"]="D"; ``` на: ```shell $PERM["/"]["*"]="R"; ``` После смены пароля верните изначальное значение. **Способ 2** 1. С помощью [подключения по SFTP](https://timeweb.cloud/docs/unix-guides/sftp) создайте в директории с вашим сайтом php-файл со следующим содержимым: ```shell Authorize(1); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?> ``` 2. Откройте его в браузере, набрав в адресной строке `ваш_домен/имя_файла`. 3. Авторизуйтесь на сайте без ввода логина и пароля, после чего установите в панели Bitrix новый пароль. 4. **Обязательно удалите созданный php-файл**. **Способ 3** 1. В базе данных найдите таблицу `b_user` и перейдите в нее: 2. Найдите пользователя с `ID` 1 и нажмите «Изменить»: ![Bx2](https://content.timeweb.com/assets/d2675bdd-c4d2-4a16-ab6c-38932a8202cd?width=738&height=62) _Опция редактирования пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 3. Найдите строку `PASSWORD` и в столбце «Функция» выберите вариант `MD5`, после чего укажите новый пароль в поле рядом: ![Bx3](https://content.timeweb.com/assets/da0c3d4b-7843-4356-89f1-4de046dab343?width=824&height=223) _Обновление пароля пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 4. Нажмите «Вперед» справа внизу — изменения будут сохранены. ### DataLife Engine 1. В базе данных найдите таблицу `dle_users` и перейдите в нее. 2. В строке с пользователем `admin` нажмите «Изменить». 3. В строке `password` в поле «Значение» укажите: ```shell a45e49f0f3298f566bb71aff532821e5 ``` 4. Нажмите «Вперед» справа внизу — ваш пароль будет изменен на `changepass`. 5. Войдите в админ-панель с паролем `changepass` и **обязательно измените пароль на безопасный**. ### HostCMS 1. Скачайте файл [restore_password.php](https://www.hostcms.ru/download/install/restore_password.php) (загрузка выполняется с сайта HostCMS). 2. С помощью [подключения по SFTP](https://timeweb.cloud/docs/unix-guides/sftp) загрузите файл в директорию с вашим сайтом. 3. Откройте в браузере ссылку: `http://имя_домена/restore_password.php`. 4. Сохраните реквизиты авторизации, которые будут выведены на экране. 5. Войдите в админ-панель с новым паролем, после при необходимости смените его на нужный вам. 6. Проверьте, что файл `restore_password.php` был автоматически удален из директории сайта. Если это не так, **обязательно удалите его вручную**. ### InstantCMS 1. В базе данных найдите таблицу `cms_users` и перейдите в нее. 2. В строке с пользователем `admin` нажмите «Изменить». 3. Найдите строку `password`. В столбце «Функция» выберите вариант `MD5`, после чего укажите новый пароль в поле рядом: ![Inst](https://content.timeweb.com/assets/cbde331e-bc5a-4d60-b90a-038151a4a96d?width=893&height=377) 4. Нажмите «Вперед» справа внизу — изменения будут сохранены. 5. Снова нажмите «Изменить» в строке с пользователем `admin`. 6. Скопируйте значение поля `password_salt` и вставьте его в строку `password` после указанного в нем значения, без пробелов. 7. В столбце «Функция» выберите вариант `MD5`. ![Inst2](https://content.timeweb.com/assets/3ba87d70-bf8a-4275-bd29-35bf8de94ea0?width=890&height=379) _Обновление пароля пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 8. Нажмите «Вперед» справа внизу, чтобы сохранить изменения. Теперь вы можете войти в админ-панель с паролем, указанным на шаге 3. ### LiveStreet 1. В базе данных найдите таблицу `prefix_user` и перейдите в нее. 2. В строке с пользователем `admin` нажмите «Изменить». 3. В строке `user_password` в поле «Значение» укажите: ```shell 827ccb0eea8a706c4c34a16891f84e7b ``` 4. Нажмите «Вперед» справа внизу — ваш пароль будет изменен на `12345`. 5. Войдите в админ-панель с паролем `12345` и **обязательно измените пароль на безопасный**. ### Magento 1.9 **SQL-запрос** ```shell UPDATE admin_user SET `password` = md5('ваш_новый_пароль'), is_active = 1 WHERE `username` = 'admin'; ``` ### MediaWiki **SQL-запрос** ```shell UPDATE user SET user_password = MD5( CONCAT( user_id, '-', MD5( 'ваш_новый_пароль' ) ) ) WHERE user_id =1 ``` ### MODX Revolution Инструкция для версий 2.1 и выше. **SQL-запрос** ```shell UPDATE modx_users SET hash_class = 'hashing.modMD5', password = MD5('ваш_новый_пароль') WHERE username = 'admin'; ``` **Вручную** 1. В базе данных найдите таблицу `modx_users` и перейдите в нее. 2. В строке с пользователем `admin` нажмите «Изменить»: ![8](https://content.timeweb.com/assets/cfe8383f-d159-4a14-8e9e-665b79108f66?width=356&height=72) _Опция редактирования пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 3. В строке `password` выберите функцию `MD5` и укажите новый пароль в поле рядом. 4. В строке `hash_class` измените значение с `hashing.modPBKDF2` на `hashing.modMD5`. ![9](https://content.timeweb.com/assets/e25f86d1-fa81-4bdf-be71-d5aa59fbc0d4?width=645&height=479) _Обновление пароля пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 5. Нажмите «Вперед» справа внизу — изменения будут сохранены. ### NetCat **SQL-запрос** ```shell UPDATE User SET Password = MD5('ваш_новый_пароль') WHERE User_ID=1; ``` ### Opencart **Вручную** 1. В базе данных найдите таблицу `oc_user` и перейдите в нее. 2. Нажмите «Изменить» в строке с пользователем `admin`: ![16](https://content.timeweb.com/assets/540894e9-16d7-4bbf-a95f-b2bca0281baa?width=475&height=80) _Опция редактирования пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 3. Найдите строку `password` и в столбце «Функция» выберите вариант `MD5`, после чего укажите новый пароль в поле рядом: ![17](https://content.timeweb.com/assets/c7aff537-5e11-438f-87a7-1f8949763e87?width=681&height=121) _Обновление пароля пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 4. Нажмите «Вперед» справа внизу — изменения будут сохранены. ### osCommerce **Вручную** 1. В базе данных найдите таблицу administrators и перейдите в нее. 2. Нажмите «Изменить» в строке с пользователем `admin`. 3. В строке «user_password» в поле «Значение» укажите: ```shell 6cdd7c57450225fac77427f5962bb726:40 ``` ![Osc](https://content.timeweb.com/assets/1e105e57-2f4e-4ae9-a11d-41a92f1cc6fe?width=953&height=262) _Обновление пароля пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 4. Нажмите «Вперед» справа внизу — ваш пароль будет изменен на `pass`. 5. Войдите в админ-панель с паролем `pass` и **обязательно измените пароль на безопасный**. ### phpBB **SQL-запрос** ```shell UPDATE phpbb_users SET 'user_password' = md5('ваш_новый_пароль') WHERE 'user_id' = 2 ``` **Вручную** 1. В базе данных найдите таблицу `phpbb_users` и перейдите в нее. 2. В строке с пользователем `admin` (`user_id` 2) нажмите «Изменить»: ![10](https://content.timeweb.com/assets/8596a3fb-714b-400a-81fe-d091b4ff3dd4?width=938&height=167) _Опция редактирования пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 3. Найдите строку `user_password` и в столбце «Функция» выберите вариант `MD5`, после чего укажите новый пароль в поле рядом: ![11](https://content.timeweb.com/assets/0fd8124a-b190-4881-a5f7-360b771e1500?width=777&height=135) _Обновление пароля пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 4. Нажмите «Вперед» справа внизу — изменения будут сохранены. ### PHP-Fusion 1. В базе данных найдите таблицу `fusion_user` и перейдите в нее. 2. В строке с пользователем `admin` нажмите «Изменить». 3. Вставьте новые значения в следующие строки. - - В строку `user_salt`: ```shell 6684574b344de27e2f63415bbd32a903bb40cc00 ``` - - В строку `user_password`: ```shell 3b70ac8fced1f11ac3ac1b82282736912eedf8a7d52738c9257fd7dafad7eecd ``` ![Fusion](https://content.timeweb.com/assets/f3211a0f-5b22-4705-9653-81ac4ac4d43b?width=976&height=369) _Обновление пароля пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 4. Нажмите «Вперед» справа внизу — ваш пароль будет изменен на `c8snsZU8`. 5. Войдите в админ-панель с паролем `c8snsZU8` и **обязательно измените пароль на собственный**. ### PHPShop 1. В базе данных найдите таблицу `phpshop_users` и перейдите в нее. 2. В строке с пользователем `admin` нажмите «Изменить». 3. В строке `password` в поле «Значение» укажите: ```shell $P$BBpIN0sGRD0zaAy56gLxOZRJKc55fg0 ``` 4. Нажмите «Вперед» справа внизу — ваш пароль будет изменен на `rootroot`. 5. Войдите в админ-панель с паролем `rootroot` и **обязательно измените пароль на безопасный**. ### Prestashop 1.7 Для изменения пароля в Prestashop необходимо предварительно узнать значение параметра `cookie_key`. Для этого можно использовать [подключение по SFTP](https://timeweb.cloud/docs/unix-guides/sftp). 1. Перейдите в директорию `/директория_сайта/app/config` и откройте файл `parameters.php`. 2. Найдите строку c `cookie_key` и скопируйте его значение (без кавычек): ![13](https://content.timeweb.com/assets/2062c043-396e-4eaa-9ae4-f7bf055383d8?width=778&height=254) **SQL-запрос** ```shell UPDATE ps_employee SET passwd=md5("значение_cookie_key_и_ваш_новый_пароль") WHERE email="email_администратора" ``` Обратите внимание: между `cookie_key` и паролем **не должно быть пробела**. **Вручную** 1. В базе данных найдите таблицу `ps_employee` и перейдите в нее. 2. Нажмите «Изменить» в строке с пользователем-администратором: ![14](https://content.timeweb.com/assets/c91b2c48-57b9-4860-8c67-889199a3ff51?width=700&height=81) _Опция редактирования пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 3. Найдите строку `passwd`, выберите в столбце «Функция» `MD5`, после чего в поле рядом укажите скопированное значение `cookie_key` и ваш новый пароль, без пробела между ними: ![15](https://content.timeweb.com/assets/433eb234-756b-4ca2-93f9-d03f86f6a5a2?width=911&height=121) _Обновление пароля пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 4. Нажмите «Вперед» справа внизу — изменения будут сохранены. ### PunBB **Вручную** 1. В базе данных найдите таблицу `users` и перейдите в нее. 2. В строке с пользователем `admin` нажмите «Изменить». 3. Найдите строку `password`**.** В столбце «Функция» выберите вариант `SHA1`, после чего укажите новый пароль в поле рядом: ![Pbb1](https://content.timeweb.com/assets/6c5cd2b9-76ee-4f2b-b9dc-0dbd15780765?width=897&height=292) _Обновление пароля пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 4. Нажмите «Вперед» справа внизу — изменения будут сохранены. 5. Снова нажмите «Изменить» в строке с пользователем `admin`. 6. Скопируйте значение поля `salt` и вставьте его в строку `password` сразу после указанного в нем значения, без пробелов: ![Pbb2](https://content.timeweb.com/assets/34029724-af6f-4ece-ab16-2c1fab117db8?width=896&height=287) _Обновление пароля пользователя в интерфейсе [phpMyAdmin](https://www.phpmyadmin.net/)_ 7. Нажмите «Вперед» справа внизу, чтобы сохранить изменения. Теперь вы можете войти в админ-панель с паролем, указанным на шаге 3. ### Simple Machines Forum **SQL-запрос** ```shell UPDATE smf_members SET passwd = SHA1(CONCAT(LOWER(member_name), 'ваш_новый_пароль')) WHERE id_member = 1 ``` ### Typo3 **SQL-запрос** ```shell UPDATE be_users SET password=md5('ваш_новый_пароль') WHERE username = 'admin'; ``` ### UMI.CMS **SQL-запрос** ```shell UPDATE cms3_object_content SET varchar_val=md5('ваш_новый_пароль') WHERE obj_id=(SELECT id FROM cms3_objects WHERE guid='system-supervisor' LIMIT 1) AND field_id=(SELECT id FROM cms3_object_fields WHERE name='password' LIMIT 1) ``` # Отправка почты через SMTP Source: https://timeweb.cloud/docs/cms/otpravka-pochty-cherez-smtp Большинство CMS позволяют настроить отправку почты через SMTP с помощью специальных плагинов. Ниже рассмотрим примеры настроек. > [!NOTE] > Мы приводим примеры настройки при использовании SMTP-серверов Timeweb Cloud. Если вы пользуетесь другим почтовым провайдером (например, Mail.ru, Yandex и пр.), будет нужно указать иные реквизиты. Уточнить их можно у поддержки вашего почтового сервиса или в его базе знаний. ## WordPress Для WordPress есть много разных плагинов для SMTP, среди которых [WP Mail SMTP](https://ru.wordpress.org/plugins/wp-mail-smtp/), [Mail Bank](https://ru.wordpress.org/plugins/wp-mail-bank/) и другие. Вам потребуется скачать плагин с сайта WordPress или установить его из раздела «Плагины» вашей админ-панели. Далее активируйте плагин и выполните настройку, нажав на «Settings». Укажите требуемые данные (имена полей могут отличаться в зависимости от используемого плагина): - **From Email** — почтовый ящик, с которого будет происходить отправка. - **From Name** — имя отправителя (будет видно адресату в поле «От»); можно указать, например, имя сайта. - **Mailer** — Send all WordPress emails via SMTP - **SMTP Host** — `smtp.timeweb.ru` - **SMTP Port**: - 25 или 2525 — без шифрования (Encryption: None) - 465 — если выбран SSL в пункте «Encryption» - 587 — если выбран TLS в пункте «Encryption» - **Authentication** — Yes: Use SMTP authentication - **Username** — почтовый ящик (совпадает с полем «From Email»). - **Password** — пароль от указанного ящика. После сохранения настроек у вас есть возможность произвести тестовую отправку, чтобы проверить, что все работает корректно. ## Drupal В Drupal для SMTP-отправки почты используется плагин [SMTP Authentication Support](https://www.drupal.org/project/smtp). Выберите модуль для нужной версии CMS и скачайте архив либо скопируйте ссылку на него. В админ-панели в разделе «Расширения» нажмите «Установить новый модуль». Укажите путь к скачанному архиву или вставьте скопированный URL, нажмите «Установить». После установки модуля перейдите в раздел «Конфигурация» и в блоке «Система» нажмите на имя нового модуля. Дальше требуется включить его и указать необходимые данные. - **SMTP-сервер** — `smtp.timeweb.ru` - **Порт SMTP**: - 25 или 2525 — без шифрования - 465 — если выбран SSL в пункте «Использовать протокол шифрования» - 587 — если выбран TLS в пункте «Использовать протокол шифрования» - **Имя пользователя** — почтовый ящик. - **Пароль** — пароль от указанного ящика. - **Адрес отправителя** — почтовый ящик, с которого будет происходить отправка (совпадает с полем «Имя пользователя»). - **Имя отправителя** — имя, которое будет отображаться для получателя поле «От», например, имя вашего сайта. После сохранения настроек у вас есть возможность произвести тестовую отправку, чтобы проверить, что все работает корректно. ## Joomla В Joomla для работы с SMTP существуют внутренние инструменты в админ-панели. Кликните на ссылку «Система» в меню сверху, далее выберите «Общие настройки». Откройте вкладку «Сервер» и найдите блок «Настройка почты». Проверьте, что опция «Отправка почты» включена, и укажите нужные реквизиты: - **E-mail сайта** — почтовый ящик, с которого будет происходить отправка. - **Отправитель письма** — имя отправителя (будет видно адресату в поле «От»); можно указать, например, имя сайта. - **Способ отправки** — SMTP - **SMTP-сервер** — `smtp.timeweb.ru` - **Порт SMTP-сервера**: - 25 или 2525 — без шифрования - 465 — если выбран SSL в пункте «Защита SMTP» - 587 — если выбран TLS в пункте «Защита SMTP» - **Авторизация на SMTP-сервере** — Да - **Имя пользователя SMTP** — почтовый ящик (совпадает с полем «E-mail сайта»). - **Пароль для SMTP** — пароль от указанного ящика. После сохранения настроек у вас есть возможность произвести тестовую отправку, чтобы проверить, что все работает корректно. ## 1C-Битрикс Начиная с версии 21.900.0 модуля main в 1С-Битрикс можно настроить отправку почты через SMTP без дополнительных модулей. Подробную инструкцию по настройке встроенной функции SMTP отправки вы можете найти на [этой странице](https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=23612). Для пользователей, которым требуется расширенный функционал, доступны также специальные модули для отправки почты через SMTP — их можно найти в [каталоге решений](https://marketplace.1c-bitrix.ru/search/index.php?q=smtp&spell=1&where=&tags=). В каталоге представлены как платные, так и бесплатные модули (например, [этот](https://marketplace.1c-bitrix.ru/solutions/wsrubi.smtp/#tab-about-link)) с описанием возможностей, инструкциями по установке и отзывами других пользователей. Имена полей в процессе настройки могут отличаться, но основные параметры, которые вам нужно использовать, следующие: - **SMTP-сервер** — `smtp.timeweb.ru` - **Порт**: - 25 или 2525 — без шифрования - 465 — нужно указать «SSL» в пункте «Тип шифрования» - 587 — нужно указать «TLS» в пункте «Тип шифрования» - **Аутентификация SMTP** — Да - **Имя пользователя** — почтовый ящик, с которого будет происходить отправка. - **Пароль** — пароль от почтового ящика. ## Instant CMS В админ-панели сайта перейдите в раздел «Настройки» и далее на вкладку «Почта». В пункте «Почтовый транспорт» выберите «SMTP» и укажите следующие параметры: - **Адрес отправителя** — почтовый ящик, с которого будет происходить отправка. - **Название отправителя** — имя отправителя, например, имя сайта (будет видно адресату в поле «От»). - **SMTP Сервер** — `smtp.timeweb.ru` - **Порт**: - 25 или 2525 — без шифрования - 465 — нужно указать «SSL» в пункте «SMTP Шифрование» - 587 — нужно указать «TLS» в пункте «SMTP Шифрование» - **SMTP Авторизация** — отметить галочкой. - **SMTP Пользователь** — почтовый ящик (совпадает с полем «Адрес отправителя»). - **Пароль** — пароль от почтового ящика. После сохранения настроек вы можете произвести тестовую отправку по кнопке «Проверить настройки почты» слева вверху, чтобы убедиться, что все работает корректно. ## MODX Revolution MODX Revo, как и Joomla, имеет необходимые внутренние инструменты. В админ-панели наведите курсор на значок шестеренки справа вверху и откройте раздел «Системные настройки». В поле «Фильтр по разделу» выберите «Почта». Укажите следующие значения для перечисленных ниже параметров: - **SMTP аутентификация** — Да - **SMTP хосты** — `smtp.timeweb.ru` - **SMTP пароль** — пароль от почтового ящика. - **SMTP номер порта**: - 25 или 2525 — без шифрования - 465 — нужно указать «ssl» в пункте «SMTP префикс для соединений» - 587 — нужно указать «tls» в пункте «SMTP префикс для соединений» - **SMTP пользователь** — почтовый ящик, с которого будет происходить отправка. - **Использовать SMTP** — Да ## Netcat В админ-панели перейдите в раздел «Настройки» — «Настройки системы». В блоке «Вид транспорта» выберите «Использовать SMTP» и укажите следующие параметры: - **SMTP сервер** — `smtp.timeweb.ru` - **Порт**: - 25 или 2525 — без шифрования - 465 — нужно указать «SSL» в пункте «Шифрование» - 587 — нужно указать «TLS» в пункте «Шифрование» - **Использовать аутентификацию** — отметить галочкой. - **Имя пользователя** — почтовый ящик, с которого будет происходить отправка. - **Пароль** — пароль от почтового ящика. ## Opencart В админ-панели перейдите в раздел «Система» — «Настройки». Нажмите на кнопку «Редактировать» у магазина и откройте вкладку «Почта». В пункте «Почтовый протокол» выберите «SMTP» и укажите следующие параметры: - **SMTP Имя сервера** — `smtp.timeweb.ru` - **SMTP Логин** — почтовый ящик, с которого будет происходить отправка. Ящик обязательно должен совпадать с ящиком, указанным в настройках магазина на вкладке «Витрина» (раздел «Система» — «Настройки»). - **SMTP Пароль** — пароль от почтового ящика. - **SMTP Порт**: - 25 или 2525 — без шифрования - 465 — в этом случае адрес SMTP-сервера нужно указать как `ssl://smtp.timeweb.ru` - 587 — в этом случае адрес SMTP-сервера нужно указать как `tls://smtp.timeweb.ru` ## phpBB В панели администратора на вкладке «Общие» кликните на пункт «Настройки почты» (в разделе «Средства связи»). В блоке «Настройки SMTP» укажите следующие параметры: - **Использовать SMTP для отправки email-сообщений** — Да. - **Адрес сервера SMTP** — `smtp.timeweb.ru` - **Порт сервера SMTP**: - 25 или 2525 — без шифрования - 465 — в этом случае адрес SMTP-сервера нужно указать как `ssl://smtp.timeweb.ru` - 587 — в этом случае адрес SMTP-сервера нужно указать как `tls://smtp.timeweb.ru` - **Метод аутентификации для SMTP** — PLAIN - **Имя пользователя SMTP** — почтовый ящик, с которого будет происходить отправка. - **Пароль SMTP** — пароль от почтового ящика. После сохранения настроек вы можете произвести пробную отправку по кнопке «Отправить тестовое email-сообщение» сверху над блоком SMTP. ## PrestaShop В админ-панели в блоке «Настроить» выберите «Расширенные параметры» — «E-mail». Отметьте пункт «Задать свои параметры для SMTP сервера» и укажите следующие значения: - **Сервер SMTP** — `smtp.timeweb.ru` - **Имя пользователя SMTP** — почтовый ящик, с которого будет происходить отправка. - **Пароль SMTP** — пароль от почтового ящика. - **Порт**: - 25 или 2525 — без шифрования - 465 — нужно указать «SSL» в пункте «Шифрование» - 587 — нужно указать «TLS» в пункте «Шифрование» В блоке ниже («Проверка конфигурации электронной почты») вы можете произвести тестовую отправку, для проверки корректности настроек. # Привязка домена в WordPress Source: https://timeweb.cloud/docs/cms/privyazka-domena-v-wordpress В CMS WordPress домен вашего сайта не только привязан к определенному серверу в панели управления, но и прописан в самой CMS: в базе данных, админ-панели и конфигурационном файле. При любой смене URL сайта привязку домена необходимо актуализировать везде. Это касается и полного переноса сайта на другой домен, и таких изменений, как переход на HTTPS. Обновить домен во всех необходимых местах можно либо вручную, либо с помощью специальных [плагинов](https://wordpress.org/plugins/velvet-blues-update-urls/). Другой способ — не менять URL в настройках, а полностью «деактивировать» привязку CMS к конкретному домену. В этом случае WordPress не будет редиректить на домен, указанный в настройках, а вместо будет работать с URL, который привязан в серверу в панели управления. Чтобы воспользоваться этим способом, нужно внести следующие директивы в [конфигурационный файл](https://timeweb.cloud/docs/cms/konfiguracionnye-fajly-cms#wordpress) сайта: ```shell if(isset($_SERVER['HTTPS'])) { $schema = 'https://'; } else { $schema = 'http://'; } define('WP_HOME', $schema.$_SERVER['SERVER_NAME']); define('WP_SITEURL', $schema.$_SERVER['SERVER_NAME']); ``` Такое решение может пригодиться как при переводе сайта на новый домен, так и при возникновении каких-либо проблем в работе сайта, связанных с его URL (например, при невозможности устранить редирект на https, и др.). # Оптимизация WordPress Source: https://timeweb.cloud/docs/cms/optimizaciya-wordpress Оптимизация и ускорение работы сайта важны не только как элемент удержания пользователей (пользователь вероятнее покинет сайт, который работает медленно), но и для SEO — Google рассматривает скорость загрузки страниц как один из факторов ранжирования в поисковой выдаче. В статье мы рассмотрим несколько основных мер, которые стоит принять, чтобы улучшить производительность сайта на WordPress и скорость его работы. ## Кэширование Кэширование — важный элемент в ускорении работы вашего сайта. Благодаря кэшированию пользователь получает доступ к данным максимально быстро, без необходимости формировать запрос к базе и серверу заново. Реализовать кэширование проще всего с помощью специальных плагинов, например: - [W3 Total Cache](https://wordpress.org/plugins/w3-total-cache/) - [WP Super Cache](https://wordpress.org/plugins/wp-super-cache/) - [WP Fastest Cache](https://wordpress.org/plugins/wp-fastest-cache/) Рассмотрим настройку кэширования на примере WP Fastest Cache. Скачайте и активируйте плагин, после чего кликните на его имя в меню слева, чтобы перейти к настройкам. На вкладке «Настройки» включите следующие опции: ![D3fe6dac 5f7d 4eec B86c 21bb0faf7f13](https://content.timeweb.com/assets/0e43f0e6-7036-4773-a09a-54c432cbb6f9?width=1015&height=997) _Настройки [WP Fastest Cache](https://wordpress.org/plugins/wp-fastest-cache/) в интерфейсе [WordPress](https://wordpress.org/)_ - **Кэширование** Включает кэширование сайта. - **Предподготовка** Файлы кэшируются после того, как пользователь впервые посещает страницу, что означает, что для данного пользователя загрузка займет больше времени, так как кэш пока отсутствует. Включение опции «Предподготовка» запускает периодическое создание кэша основных элементов, что значительно ускоряет время будущих загрузок. В открывшемся окне настроек отметьте те элементы, которые вы хотели бы кэшировать таким образом, например: ![E7a5a467 7439 40e6 9547 Ac433ad1ba2a](https://content.timeweb.com/assets/629017f1-2a22-4326-bd5b-707200030b71?width=565&height=585) _Окно «Preload» плагина [WP Fastest Cache](https://wordpress.org/plugins/wp-fastest-cache/) в интерфейсе [WordPress](https://wordpress.org/)_ Параметр `pages per minute` при работе с облачным сервером можно увеличить до 10-12. - **Новая запись** и **Обновление записи** При использовании кэширования пользователи какое-то время видят устаревшие данные на сайте, так как для них подгружается сохраненная копия из кэша. Чтобы при добавлении новой записи или ее обновлении пользователям сразу была доступна актуальная версия, отметьте эти опции. При публикации или изменении записи кэш будет сброшен, и для пользователей загрузятся актуальные данные. В окне настройки для обеих опций можно выбрать второй вариант (сбрасывать кэш только домашней страницы, записей и пр. вместо сброса всего кэша целиком). ![3a66bde5 C497 437c 9822 69309db3b119](https://content.timeweb.com/assets/d8f6d407-5a16-4fee-94c8-4a13231689e3?width=429&height=425) _Окно «New Post» плагина [WP Fastest Cache](https://wordpress.org/plugins/wp-fastest-cache/) в интерфейсе [WordPress](https://wordpress.org/)_ - **Компрессия Gzip** Чем меньше объем загружаемых данных, тем быстрее загружается страница. Сжатие Gzip позволяет уменьшить размер получаемых от сервера данных и улучшить время загрузки. Вы можете включить сжатие Gzip в данном плагине либо использовать отдельный плагин для этого (см. ниже «Сжатие Gzip»), но не используйте то и другое одновременно. - **Кэш в браузере** Позволяет сохранять в кэше браузера стандартные элементы страницы, которые подгружаются каждый раз при ее посещении (CSS, JS и пр.). Благодаря этому браузер не загружает эти элементы каждый раз заново, а значит время загрузки страницы сокращается. На вкладке «Очистка кэша» рекомендуем включить периодический сброс кэша, чтобы не переполнять пространство аккаунта сохраненными данными. Для этого кликните на Add New Rule и в открывшемся окне укажите нужные параметры. В поле «If REQUEST_URI» выберите «Все», а ниже — подходящий вам интервал удаления данных и время выполнения действия. Оптимальный вариант — удаление кэша раз в сутки / раз в три дня. Например: ![Ce6738ac B678 47f4 A3e4 707814186c21](https://content.timeweb.com/assets/525317df-1b98-4970-ab46-abfb57de15a3?width=717&height=327) _Окно «Cache Timeout Wizard» плагина [WP Fastest Cache](https://wordpress.org/plugins/wp-fastest-cache/) в интерфейсе [WordPress](https://wordpress.org/)_ Вы можете использовать и другие опции плагина. Информацию о каждой из них можно найти, кликнув на значок вопроса рядом с опцией. Имеет смысл включать их последовательно и проверять работу сайта ориентировочно в течение суток, чтобы вовремя отследить нежелательный эффект, если он возникнет, и отключить конкретную опцию. ## Сжатие Gzip Сжатие Gzip позволяет уменьшить размер контента, который отдается сервером при обращении пользователя к сайту. Благодаря этому значительно снижается время загрузки страницы (иногда до двух раз). Чтобы включить сжатие Gzip, можно активировать эту опцию в используемом вами кэширующем плагине (большинство из них обладают этой функцией) либо воспользоваться одним из специальных плагинов, например: - [Advanced Speed Increaser](https://wordpress.org/plugins/advanced-speed-increaser/) - [Check and Enable GZIP compression](https://wordpress.org/plugins/check-and-enable-gzip-compression/) Как уже упоминалось, не используйте обе возможности сжатия одновременно (в отдельном плагине и в плагине для кэширования), так как это может привести к ошибкам в работе WordPress. ## Оптимизация базы данных и удаление ревизий При сохранении поста или страницы, WordPress сохраняет новую версию в базе данных (это касается, в том числе, черновиков и промежуточных сохранений при редактировании). Также в базе сохраняются все комментарии, страницы в корзине и так далее. Чем сильнее разрастается база, тем медленнее будет работать сайт. Для оптимизации базы и удаления ненужных данных можно воспользоваться одним из следующих плагинов: - [WP-Optimize](https://wordpress.org/plugins/wp-optimize/) - [WP-Sweep](https://wordpress.org/plugins/wp-sweep/) - [Advanced Database Cleaner](https://wordpress.org/plugins/advanced-database-cleaner/) - [Optimize Database after Deleting Revisions](https://wordpress.org/plugins/rvg-optimize-database/) Предварительно рекомендуем создать резервную копию базы данных. Количество ревизий (т.е. версий постов, черновиков) можно также ограничить с помощью файла wp-config.php, не прибегая к установке плагина. Для этого нужно добавить в файл сразу после ** и /\*код/. ## Отключение лишних плагинов Сильно нагружать сайт и увеличивать время загрузки могут сами плагины. За время работы с WordPress мы часто устанавливаем и активируем множество плагинов для решения разных задач. Каждый из этих плагинов отнимает часть ресурсов, что в итоге негативно влияет на работу сайта. Рекомендуем просмотреть список установленных плагинов и проверить: - Действительно ли используется каждый плагин? Возможно, часть из них уже не нужны, и их можно удалить. - Действительно ли плагин используется постоянно? Если к плагину требуется обращаться только иногда, имеет смысл деактивировать его на тот период, пока он не используется. Также стоит проверить ресурсоемкость плагинов. Для этого можно воспользоваться плагином: - [Query Monitor](https://wordpress.org/plugins/query-monitor/) Установите и активируйте плагин, после чего перейдите на сайте и пролистайте его страницы (главную страницу и разделы, где наблюдается медленная работа). В верхнем меню будет отображаться скорость загрузки. Наведите курсор на этот элемент и в выпадающем меню выберите «SQL-запросы». В столбце «Компонент» выберите пункт «Не-ядро». ![7ceef5e6 D3f6 4c88 9897 7cce529024bd](https://content.timeweb.com/assets/6a97b95f-3844-4b6a-a65d-c4164386082c?width=1712&height=313) _Интерфейс плагина [Query Monitor](https://wordpress.org/plugins/query-monitor/) в интерфейсе [WordPress](https://wordpress.org/)_ Вы увидите список запросов к базе от разных плагинов и скорость выполнения запросов. Проверьте, все ли из указанных плагинов вам нужны, удалите или деактивируйте ненужные. Если плагин, вызывающий медленную работу, вам необходим, попробуйте найти аналогичный и протестировать его работу на вашем сайте. После завершения работы с Query Monitor не забудьте деактивировать или удалить плагин, чтобы не нагружать сайт. # Устранение ошибок CMS Битрикс Source: https://timeweb.cloud/docs/cms/ustranenie-oshibok-cms-bitriks Опция «Проверка системы» в CMS Битрикс позволяет проверить соответствие настроек сервера требованиям CMS и вашего сайта. При запуске этой опции Битрикс, как правило, приводит несколько ошибок и замечаний. В этой статье мы рассмотрим, как их исправить. ## Режим работы MySQL Уведомление: ```shell Ошибка! innodb_strict_mode=ON, требуется OFF. Переменная sql_mode в MySQL должна быть пустая, текущее значение: NO_ENGINE_SUBSTITUTION ``` Эта ошибка критична. Она может привести к блокировке запросов к базе данных, что практически означает остановку работы сайта. **Решение:** Необходимо внести изменения в файлы конфигурации Bitrix, в которых задаются параметры базы данных, и указать в них нужные значения. Отредактировать файлы можно, например, с помощью подключения по FTP/SFTP. В файл `/директория_сайта/bitrix/php_interface/after_connect.php` под уже имеющимися строками и до символов `?>` добавьте: ```shell $DB->Query("SET sql_mode=''"); $DB->Query("SET innodb_strict_mode=0"); ``` В файл `/директория_сайта/bitrix/php_interface/after_connect_d7.php` под уже имеющимися строками и до символов `?>` добавьте: ```shell $connection->queryExecute('SET sql_mode=""'); $connection->queryExecute("SET innodb_strict_mode=0"); ``` После этого проверка Bitrix пройдет успешно. ## Выполнение агентов на cron Уведомление: ```shell Замечание: Агенты выполняются на хитах, рекомендуется перенести их выполнение на cron ``` Это замечание некритично. В Битрикс предусмотрен внутренний планировщик задач (агентов). Данное замечание влияет на то, насколько точно по времени сработают запланированные задачи. Грубо говоря, скрипты сайта выполняются, только когда его страницы кто-то посещает. Если нет посещений, то и таймер работать не будет. Cron позволяет полностью решить проблему с планированием задач. **Решение:** Чтобы перенести работу непериодических агентов (и передачу почты) на Сron, необходимо установить константу `BX_CRONTAB_SUPPORT`. Для этого добавьте в файл `/директория_сайта/bitrix/php_interface/dbconn.php` строку: ```shell define('BX_CRONTAB_SUPPORT', true); ``` Затем нужно добавить задачу в Crontab. Это можно сделать инструментами вашей панели управления или с помощью cli. Уведомление: ```shell Ошибка! Не настроен запуск cron_events.php на cron ``` Эта ошибка может возникнуть, если в пункте выше вы только добавили константу, но не добавили задачу cron. Без настройки задачи в crontab будет остановлена часть агентов, в том числе с сайта перестанет отправляться почта. Письма будут накапливаться в очередь и отправляться по частям после устранения ошибки. **Решение:** Выполните приведенную выше инструкцию по добавлению задачи cron, и ошибка будет устранена. ## Обязательные параметры PHP Уведомление: ```shell Ошибка! Значение max_input_vars должно быть не ниже 10000 ``` Эта ошибка не влияет на работоспособность сайта напрямую, но может отразиться на работе с большими формами в административной панели. При работе с инфоблоками низкое значение параметра `max_input_vars` может вызвать проблемы с сохранением настроек, поэтому система выделяет эту ошибку как критическую. **Решение:** Необходимо добавить следующую строку в файл `/директория_сайта/.htaccess`: ```shell php_value max_input_vars 11000 ``` # Устранение уязвимостей в модулях Битрикс Source: https://timeweb.cloud/docs/cms/ustranenie-uyazvimostej-v-modulyah-bitriks В мае 2025 года несколько сайтов наших клиентов, использующих CMS «1С-Битрикс», были взломаны и заражены вредоносным кодом. Взлом произошел из-за уязвимостей в устаревших версиях модулей Битрикс: - Импорт из Excel (2.5.1 - 2.8.9) - Экспорт в Excel (0.8.6 - 1.2.2) - Экспорт/Импорт товаров в Excel (2.5.1 - 2.8.9) - Импорт из XML и YML (0.6.8 - 1.1.6) - Массовая обработка элементов инфоблока (0.5.9 - 0.7.7) - Многофункциональный экспорт/импорт в Excel (0.2.2 - 0.4.8) ## Устранение уязвимостей Если вы используете какие-то из этих модулей, рекомендуем **как можно скорее обновить саму CMS и модули** до последних стабильных версий. В новых версиях уязвимости уже закрыты, и злоумышленники не смогут ими воспользоваться. Если у вас нет возможности установить обновления, закройте уязвимости при помощи патча. Для автоматического исправления перейдите в «Настройки» → «Инструменты» → «Командная PHP-строка» и вставьте следующий код: Развернуть ```shell $arFiles = array( '/bitrix/modules/esol.allimportexport/admin/cron_settings.php', '/bitrix/modules/esol.importexportexcel/admin/iblock_export_excel_cron_settings.php', '/bitrix/modules/esol.importexportexcel/admin/iblock_import_excel_cron_settings.php', '/bitrix/modules/esol.importxml/admin/import_xml_cron_settings.php', '/bitrix/modules/esol.massedit/admin/profile.php', '/bitrix/modules/kda.exportexcel/admin/iblock_export_excel_cron_settings.php', '/bitrix/modules/kda.importexcel/admin/iblock_import_excel_cron_settings.php', ); $cnt = 0; foreach($arFiles as $fn) { $fn = $_SERVER['DOCUMENT_ROOT'].$fn; if(file_exists($fn)) { chmod($fn, 0775); $c = file_get_contents($fn); while(preg_match('#<\?.*//.*403 Forbidden.*\?>\s*<\?#Uis', $c, $m)) { $c = str_replace($m[0], ' 0) { header((stristr(php_sapi_name(), 'cgi') !== false ? 'Status: ' : \$_SERVER['SERVER_PROTOCOL'].' ').'403 Forbidden'); die(); } ?>".preg_replace('/@exec\(\$phpPath.\' \-v\'/', '//$0', $c)); $cnt++; } } } unlink(__FILE__); echo 'patched:'.$cnt.'.'; ``` Нажмите «Выполнить». ## Если взлом уже произошел Факт заражения может проявляться по-разному: - подмена контента на сайте или данных администратора; - запуск сторонних процессов на сервере, - подмена Cron-задач, - рассылка спама и др. Если ваш сайт уже взломан, самый надежный способ устранить проблему — **восстановить сайт из резервной копии** на момент, когда заражения еще не было. После восстановления обязательно обновите CMS и все модули до последних версий. Если у вас нет необходимых резервных копий и восстановление невозможно, для устранения последствий взлома выполните следующее: 1. **Просканируйте сайт на наличие вредоносных файлов и удалите их** Для этого можно воспользоваться внутренними инструментами Битрикса: «Рабочий стол» → «Настройки» → «Проактивная защита» → «Поиск троянов» → «Сканирование файлов». Если сканер обнаружит зараженные файлы, удалите их. 2. **Проверьте файлы .htaccess** Здесь тоже помогут инструменты Битрикса: «Рабочий стол» → «Настройки» → «Проактивная защита» → «Поиск троянов» → «Проверка .htaccess». Кликните на «Удалить всё и установить минимальный набор», чтобы удалить зараженные файлы и вернуть всё к стандартным настройкам. 3. **Проверьте задачи Crontab** [Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и выполните команду: ```shell crontab -l ``` Она выведет список всех задач Cron. Если обнаружены подозрительные задачи — удалите их. 4. **Проверьте процессы на сервере** В первую очередь перезагрузите сервер. Обычно вредоносные процессы не запускаются заново после перезагрузки. После [подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и проверьте список процессов командой `htop`, `top` или `ps aux`. Если есть подозрительные процессы — завершите их с помощью: ```shell kill [PID] ``` PID каждого процесса будет указан в выводе команд `htop`, `top` или `ps aux`. 5. **Проверьте учетные данные администратора** В админке Битрикса перейдите в «Настройки» → «Пользователи» → «Список пользователей» и убедитесь, что все данные, включая email, корректные. # Рекомендации по безопасности CMS Source: https://timeweb.cloud/docs/cms/rekomendacii-po-bezopasnosti-cms Вопрос безопасности актуален при использовании любых CMS. Легкие пароли, загруженные с сомнительных сайтов плагины, необновленные версии CMS — все это может привести к взлому или утечке информации. Мы рекомендуем придерживаться простых рекомендаций, которые сведут риски к минимуму: 1. Используйте сложные пароли, регулярно меняйте их и не передавайте третьим лицам. 2. Используйте известные и проверенные CMS, которые регулярно обновляются, имеют техническую поддержку и дают гарантии защищенности своих скриптов (ознакомиться с информацией о конкретной CMS можно на ее официальном сайте). То же касается модулей, плагинов, тем оформления и прочих расширений CMS. Многие CMS, распространяемые на бесплатной основе, не предоставляют данных гарантий. Мы рекомендуем перед установкой внимательно изучить отзывы о выбранной вами системе. 3. Отслеживайте информацию об обнаружении новых уязвимостей и своевременно принимайте меры. Такие сообщения зачастую появляются на сайтах и в блогах, посвященных IT и IT-безопасности. 4. Регулярно сохраняйте резервные копии вашего сайта, чтобы иметь возможность выполнить откат на некоторое время назад, если взлом не удастся обнаружить сразу. 5. Для передачи конфиденциальной информации лучше всего выбирать протоколы передачи данных, использующие шифрование (SSH, SFTP, HTTPS). # Наши дата-центры Source: https://timeweb.cloud/docs/nashi-data-centry Мы размещаем инфраструктуру в надежных центрах обработки данных уровня TIER III, соответствующих международным стандартам безопасности и имеющих коэффициент отказоустойчивости не менее 99,98%. **Санкт-Петербург** - Selectel, ул. Цветочная, д. 21, лит. А, Санкт-Петербург *(зоны доступности SPB-1 и SPB-2)* - Dataline, ул. Жукова, д. 43, Санкт-Петербург *(зоны доступности SPB-3 и SPB-4)* - ОБИТ, Предпортовая улица, 5, Санкт-Петербург *(только выделенные серверы)* **Москва** - IXcellerate, ул. Подольских Курсантов, 15Б, ст1, Москва - IXcellerate Moscow North, Алтуфьевское шоссе, 33Г, Москва - DataPro I, ул. Авиамоторная, 69, Москва - DataPro III, ул. Рябиновая 53 строение 3, Москва - WEB DC, ул. Нагорное шоссе, 2, г. Химки, Московская область **Новосибирск** - Adman, ул. Светлая 21, дп. Кудряшовский, Новосибирская область **Казахстан** - Transtelecom, ул. Карасай-батыра, 55, Алматы **Нидерланды** - Qupra DC2, Gyroscoopweg 58, 1042 AC Amsterdam - De Gouden Driehoek, Beneluxweg 4, 9636 HV Zuidbroek **Германия** - Frankfurt 1 Data Center, Eschborner Landstraße 100, 60489 Frankfurt am Main - Firstcolo Data Center Werkhaus, Kruppstraße 105, 60388 Frankfurt am Main **США** - Long Island Interconnect, 1025 Old Country Road, Westbury, New York 11590 - ColoCrossing, 325 Delaware Ave #302, Buffalo, New York 14202 **Финляндия** *(только выделенные серверы)* - Digita, Uutiskatu 5, 00240 Helsinki **Турция** *(только выделенные серверы)* - TI Sparkle Turkey, Çobançeşme, Kımız Sokaği No:30, 34196 Bahçelievler/İstanbul **Франция** *(только выделенные серверы)* - DC2SCALE’s Vélizy Latécoère PAR3, 10 All. Latécoère, 78140 Vélizy-Villacoublay **Великобритания** *(только выделенные серверы)* - Redcentric’s London City Data Centre, 80 Clifton Street, London, EC2A 4HB # Общие вопросы Source: https://timeweb.cloud/docs/general - [Командная строка в разных ОС](https://timeweb.cloud/docs/general/komandnaya-stroka-v-raznyh-os) - [Утилиты ping, tracert, nslookup](https://timeweb.cloud/docs/general/ping-tracert-nslookup) - [Сброс кэша браузера](https://timeweb.cloud/docs/general/sbros-kehsha-brauzera) - [Настройка публичных DNS](https://timeweb.cloud/docs/general/public-dns) - [Настройка файла /etc/hosts](https://timeweb.cloud/docs/general/nastrojka-fajla-etc-hosts) - [Настройка файла robots.txt](https://timeweb.cloud/docs/general/nastrojka-fajla-robots-txt) - [Настройка Cloudflare](https://timeweb.cloud/docs/general/nastrojka-cloudflare) - [Основные команды SSH](https://timeweb.cloud/docs/general/osnovnye-komandy-ssh) - [FileZilla](https://timeweb.cloud/docs/general/filezilla) - [PuTTY](https://timeweb.cloud/docs/general/putty) - [WinMTR](https://timeweb.cloud/docs/general/winmtr) - [MTR для macOS](https://timeweb.cloud/docs/general/mtr-for-macos) - [Поддержка облачных сервисов](https://timeweb.cloud/docs/general/cloud-services-support) # Основные команды SSH Source: https://timeweb.cloud/docs/general/osnovnye-komandy-ssh В данной статье рассматриваются основные команды, используемые при работе с файлами и директориями при подключении к серверу по SSH-протоколу. Для подключения можно использовать терминал в вашей ОС, утилиту [PuTTY](https://timeweb.cloud/docs/general/putty) или же веб-консоль в панели управления. Подробнее см. в статье статье «[Подключение по SSH](https://timeweb.cloud/docs/unix-guides/ssh)». > [!NOTE] > Обратите внимание, что команды необходимо вводить в нижнем регистре. Например, `pwd` — корректное имя команды, `Pwd` — некорректное. ## Навигация Команды для перемещения по каталогам и просмотра их содержимого. ### Вывод текущей рабочей директории Для вывода информации о текущей рабочей директории используется команда `pwd`. #### Пример использования ```shell pwd ``` Вывод: ```shell /root ``` ### Вывод содержимого директории Чтобы посмотреть содержимое директории, воспользуйтесь командой `ls`. Вывод содержимого текущей директории в несколько колонок (только имена файлов и директорий): ```shell ls . ``` Вывод содержимого текущей директории в одну колонку (только имена файлов и директорий): ```shell ls -1 ``` Вывод подробной информации о содержимом текущей директории, включая скрытые файлы (имя которых начинается с точки): ```shell ls -la ``` Вывод содержимого конкретной директории: ```shell ls имя_директории ``` #### Пример использования Выведем содержимое текущей директории: ```shell ls -la ``` Вывод: ```shell total 16 drwx------ 4 username customers 4096 Mar 10 12:56 . drwx------ 14 username customers 4096 Mar 10 12:55 .. -rw------- 1 username customers 0 Mar 10 12:56 .htaccess drwx------ 2 username customers 4096 Mar 10 12:55 test drwx------ 2 username customers 4096 Mar 10 12:55 test1 -rw------- 1 username customers 0 Mar 10 12:55 test.txt ``` Здесь `.` — текущий каталог, а `..` — родительский каталог. ### Перемещение между директориями Команда `cd` позволяет выполнить переход в другую директорию. #### Основные способы применения Перейти в директорию, которая находится в текущей директории: ```shell cd dirname ``` Перейти в родительский каталог (на уровень выше): ```shell cd .. ``` Перейти в домашний каталог: ```shell cd ``` Либо: ```shell cd ~ ``` Перейти в домашний каталог по абсолютному пути (начиная с корня): ```shell cd /home/u/username ``` Перейти в предыдущий каталог: ```shell cd - ``` #### Примеры Переходим в каталог `media`: ```shell cd /home/u/username/public_html/media ``` Вы увидите, что текущая директория, которая отображается после двоеточия и до символа `$`, изменится: ```shell username@server:~/public_html/media$ ``` Перейдем в каталог cms: ```shell cd cms ``` Текущая директория снова изменится: ```shell username@server:~/public_html/media/cms$ ``` Перейдем в домашний каталог: ```shell cd ``` Мы увидим: ```shell username@server:~$ ``` Вернемся в предыдущий каталог: ```shell cd - ``` Перейдем на уровень выше: ```shell cd .. ``` ## Действия с файлами и каталогами Создание, удаление, изменений файлов и директорий. ### Создание директорий Команда для создания директорий — `mkdir`. Создать директорию: ```shell mkdir имя_директории ``` Создать сразу несколько директорий: ```shell mkdir имя_директории1 имя_директории2 ``` Создать дерево директорий: ```shell mkdir -p /имя_директории1/имя_директории2 ``` #### Пример использования ```shell ls -l ``` ```shell total 0 ``` Создадим директорию: ```shell mkdir dir1 ``` Выводим листинг: ```shell ls -l ``` ```shell total 4 drwx------ 2 username customers 4096 Mar 10 13:16 dir1 ``` ### Создание файлов Для создания файлов можно использовать различные команды, например: Создать новый файл при его отсутствии (если файл существует, содержимое файла не изменяется): ```shell touch test.txt ``` Создать новый файл при его отсутствии (если файл существует, то команда удаляет его содержимое): ```shell > test.txt ``` Создать новый файл при его отсутствии и записать в него строку «test» (если файл существует, то команда заменяет его содержимое на строку «test»): ```shell echo "test" > test.txt ``` Вы можете выбрать удобный для вас способ или использовать любой другой. Также можно создать файл с помощью текстового редактора. На наших серверах доступен `nano`: ```shell nano имя_файла ``` При этом файл сразу будет открыт для редактирования. Чтобы сохранить изменения и закрыть файл, в nano можно воспользоваться сочетанием клавиш Crtl X → Y → Enter. ### Копирование файлов и каталогов Копирование каталогов и файлов осуществляется с помощью команды `cp`. #### Основные способы применения Скопировать файл `test.txt` в файл `test1.txt` (файл `test.txt` должен присутствовать в текущей директории): ```shell cp test.txt test1.txt ``` Скопировать директорию `dir1` в директорию `dir2`, включая всё содержимое (ключ -r означает рекурсивное копирование, директория `dir1` должна присутствовать в текущей директории): ```shell cp -r dir1 dir2 ``` ### Перемещение и переименование файлов Перемещение и переименование файлов выполняется при помощи команды `mv`. #### Основные способы применения Переименовать файл `test.txt` в `test2.txt` (файл `test.txt` должен присутствовать в текущей директории): ```shell mv test.txt test2.txt ``` Переместить файл `test2.txt` в директорию `dir` (файл и директория должны присутствовать в текущей директории): ```shell mv test2.txt dir ``` #### Примеры использования ```shell ls -l ``` ```shell total 4 drwx------ 2 username customers 4096 Mar 10 13:37 dir -rw------- 1 username customers 0 Mar 10 13:37 test.txt ``` Переименуем файл: ```shell mv test.txt test2.txt ``` Выведем листинг: ```shell ls -l ``` ```shell total 4 drwx------ 2 username customers 4096 Mar 10 13:37 dir -rw------- 1 username customers 0 Mar 10 13:37 test2.txt ``` Переместим файл в директорию: ```shell mv test2.txt dir ``` Просмотрим ее содержимое: ```shell ls dir ``` ```shell test2.txt ``` ### Удаление файлов и каталогов Для удаления объектов используйте команду `rm`. #### Основные способы применения Удалить файл `test.txt` в текущем каталоге: ```shell rm test.txt ``` Удалить все файлы в определенной директории: ```shell rm /путь/к/файлам/* ``` Удалить все файлы с расширением `.txt` в определенной директории: ```shell rm /путь/к/файлам/*.txt ``` Удалить директорию и все ее содержимое: ```shell rm -r имя_директории ``` Для того, чтобы при удалении каждого файла запрашивалось подтверждение, можно использовать ключ `-i`: ```shell rm -i /путь/к/файлам/*.txt ``` Если же файлов много и вы точно уверены в необходимости их удаления, можно использовать противоположную опцию `-f`, тогда удаление будет выполнено без подтверждения: ```shell rm -f /путь/к/файлам/*.txt ``` ### Создание ссылок Ссылки при работе по SSH-протоколу создаются командой `ln`. #### Основные способы применения Создать жесткую ссылку: ```shell ln file1 file2 ``` Создать символьную ссылку: ```docker ln -s file1 file2 ``` #### Примеры использования ```shell ls -l ``` ```shell total 0 -rw------- 1 username customers 0 Mar 10 14:08 test.txt ``` Создадим символьную ссылку: ```shell ln -s test.txt link ``` Выведем листинг: ```shell ls -l ``` ```shell total 0 lrwxrwxrwx 1 username customers 8 Mar 10 14:08 link -> test.txt -rw------- 1 username customers 0 Mar 10 14:08 test.txt ``` ### Изменение прав доступа к файлам и директориям Команда `chmod` позволяет настроить права доступа к файлам и директориям. #### Основные способы применения Изменение прав на `xxxx` для файла `file` (`file` должен существовать в текущей директории): ```shell chmod xxxx file ``` Изменение прав на `xxxx` для директории `dir` (`dir` должна существовать в текущей директории): ```shell chmod xxxx dir ``` #### Примеры использования ```shell ls -l ``` ```shell total 4 drwx------ 2 username customers 4096 Mar 10 14:39 dir -rw------- 1 username customers 0 Mar 10 14:39 test.txt ``` Изменим права на файл: ```shell chmod 0644 test.txt ``` Проверим: ```shell ls -l ``` ```shell total 4 drwx------ 2 username customers 4096 Mar 10 14:39 dir -rw-r--r-- 1 username customers 0 Mar 10 14:39 test.txt ``` Изменим права на директорию: ```shell chmod 0755 dir/ ``` Проверим: ```shell ls -l ``` ```shell total 4 drwxr-xr-x 2 username customers 4096 Mar 10 14:39 dir -rw-r--r-- 1 username customers 0 Mar 10 14:39 test.txt ``` ## Работа с содержимым файлов Основные команды для управления содержимым файлов. ### Конкатенация содержимого файлов Команда `cat` позволяет выполнить конкатенацию (объединение) содержимого файлов и печать его в стандартный поток вывода. Данная команда зачастую используется просто для просмотра содержимого файла. #### Примеры использования ```shell cat test.txt ``` Вывод: ```shell 1 2 3 4 5 ``` ### Просмотр частей файла С помощью команд `head` и `tail` можно вывести определенное количество строк от начала или конца файла соответственно. #### Примеры использования Вывести две строки с начала: ```shell head -2 test.txt ``` ```shell 2 ``` Вывести последнюю строку с конца: ```shell tail -1 test.txt ``` ```shell 5 ``` ### Поиск по содержимому файла `grep` — это популярная команда, позволяющая найти содержимое файлов. Например, у нас есть файл `test1.txt`. Просмотрим его содержимое: ```shell cat test1.txt ``` ``` 1 first string 2 second string 3 another example of a string 4 something in here 5 andalsohere ``` #### Примеры использования Ищем вхождения `string`: ```shell grep 'string' test1.txt ``` ```shell 1 first string 2 second string 3 another example of a string ``` Ищем вхождения `th`: ```shell grep 'th' test1.txt ``` ```shell 3 another example of a string 4 something in here ``` Ищем вхождения `here`: ```shell grep 'here' test1.txt ``` ```shell 4 something in here 5 andalsohere ``` Команда `grep` имеет огромное количество способов применения. За дополнительной информацией вы можете обратиться [к официальной документации](https://www.gnu.org/software/grep/manual/grep.html), либо к свободным источникам в интернете. ## Поиск файлов Используйте команду `find`, чтобы найти нужный файл. #### Основные способы применения Поиск файлов и каталогов с именем `test` в текущей директории: ```shell find ./ -name 'test' ``` Поиск в текущей директории файлов и каталогов, имена которых начинаются на `test` и далее содержат любое количество любых символов: ```shell find ./ -name 'test*' ``` Поиск в домашней директории файлов и каталогов, имена которых начинаются на `test` и далее содержат любое количество любых символов: ```shell find ~/ -name 'test*' ``` Поиск файлов с расширением `.php` в домашней директории: ```shell find ~/ -name '*.php' ``` ## Архивы Создать архив директории: ```shell tar -cf имя_архива.tar имя_директории ``` #### Примеры использования Заархивируем директорию `/home/user/директория_сайта/public_html/media/`. Для этого сначала перейдем в каталог, в котором находится директория `media`: ```shell cd /home/u/user/имя_сайта/public_html/ ``` Выполним команду архивации и укажем удобное имя архива: ```shell tar -cf имя_архива.tar media ``` Распакуем архив `.tar` в текущую директорию: ```shell tar -xvf архив.tar ``` Распаковать архив `.rar` в текущую директорию: ```shell unrar x архив.rar ``` Распаковать архив `.zip` в текущую директорию: ```shell unzip архив.zip ``` ## Базы данных Создание дампа базы данных: ```shell mysqldump -u'пользователь_бд' база_данных -p'пароль_базы_данных' > имя_дампа.sql ``` Импорт данных из дампа в базу данных: ```shell mysql -u'пользователь_бд' база_данных -p'пароль_базы_данных' < имя_дампа.sql ``` Проверка базы данных на наличие ошибок: ```shell mysqlcheck -c -u'пользователь_бд' база_данных -p'пароль_базы_данных' ``` Восстановление базы данных при наличии ошибок: ```shell mysqlcheck -r -u'пользователь_бд' база_данных -p'пароль_базы_данных' ``` Подключение к серверу баз данных: ```shell mysql -u база_данных -p ``` Нажмите Enter, после чего введите пароль базы. Получение информации о параметрах MySQL: ```sql SHOW VARIABLES LIKE 'параметр'; SHOW SESSION VARIABLES LIKE 'параметр'; ``` Например: ```shell SHOW SESSION VARIABLES LIKE 'max_join_size'; ``` ## Завершение работы процессов Для управления сервисами на современных Linux-серверах используется `systemctl`. Например, чтобы перезапустить веб-сервер Apache: ```shell systemctl restart apache2 ``` Также возможно жесткое завершение процесса с помощью `killall`. Однако использовать его стоит только в крайних случаях, когда сервис «завис» и не отвечает. Для обычного управления сервисами лучше всегда `systemctl restart` или `systemctl stop`/`start`. Пример использования `killall`: ```shell killall -9 apache2 ``` ## Дисковое пространство Вывод информации о текущей дисковой квоте: ```shell quota -s ``` Вывести размер файлов и директорий в текущем каталоге: ```shell du -sch * ``` Анализ дискового пространства аккаунта (сканирует корневой каталог): ```shell ncdu ``` Просканировать файлы конкретную директорию: ```shell ncdu имя_директории ``` ## Другие вспомогательные команды Вывод истории команд: ```shell history ``` Очистить экран (сочетание клавиш Ctrl-L): ```shell clear ``` Закрыть подключение по SSH (сочетание клавиш Ctrl-D): ```shell exit ``` ### Сочетания клавиш - Ctrl-C — прервать выполнение текущей команды. - Ctrl-Shift-C — копировать выделенный фрагмент (в интерфейсе PuTTY копирование осуществляется простым выделением). - Ctrl-Shift-V — вставить (в интерфейсе PuTTY вставка осуществляется нажатием на правую кнопку мыши). # Командная строка в разных ОС Source: https://timeweb.cloud/docs/general/komandnaya-stroka-v-raznyh-os В статье рассмотрим, как запустить командную строку, или терминал, в операционных системах Windows, Linux и MacOS. ## Windows Для запуска командной строки в ОС Windows нажмите **Win**+**R** (либо перейдите в меню «Пуск» и выберите пункт «Выполнить»), в появившемся окне наберите **cmd** и нажмите ОК. Окно, которое откроется дальше, и есть командная строка Windows. ![Win Cmd](https://content.timeweb.com/assets/2f06161a-c93a-4997-923a-d42f4fd5b554?width=679&height=343) _Окно командной строки в интерфейсе ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ В новых версиях Windows также можно использовать **PowerShell**. Для этого кликните правой кнопкой по меню пуск и выберите Windows PowerShell. Вам необходимо ввести нужную команду и нажать Enter для ее выполнения. Для того, чтобы передать вывод команды в службу поддержки, выделите его с помощью мыши и нажмите Ctrl+C. Содержимое будет скопировано в буфер обмена, и далее вы сможете вставить его в текст обращения. ## Linux Для работы с командной строкой в Linux запустите приложение «**Терминал**». Для этого можно нажать сочетание клавиш **Ctrl**+**Alt**+**T**, либо набрать «терминал» (или «terminal») в поиске. ![Lin](https://content.timeweb.com/assets/8fc041aa-7a3e-4a52-88c9-b7b30915b022?width=722&height=462) _Окно терминала в интерфейсе ОС [Ubuntu](https://ubuntu.com/)_ ## MacOS В MacOS необходимо использовать приложение **Терминал** / Terminal. Его можно найти через Spotlight / Finder. ![Mac T](https://content.timeweb.com/assets/9f47ea21-7376-4492-9b4f-b6bc492774bc?width=1144&height=736) _Окно терминала в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ Также, для выполнения базовых команд диагностики (`ping`, `nslookup`, `traceroute`), в MacOS вы можете использовать **Сетевую утилиту**. Ее можно найти через Finder или Spotlight. В окне утилиты нужно перейти на вкладку с требуемым инструментом и ввести имя проверяемого домена. ![Mac N](https://content.timeweb.com/assets/367b9686-07da-4bc5-a761-950f8140cfa6?width=1294&height=776) _Окно «Сетевой утилиты» в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ # Утилиты ping, tracert, nslookup, telnet Source: https://timeweb.cloud/docs/general/ping-tracert-nslookup Если в работе сайта возникают ошибки, вы можете провести диагностику с помощью описанных ниже инструментов. Результаты диагностики помогут вам устранить проблему самостоятельно или, если вы предоставите их в службу поддержки, ускорят решение вопроса с нашей стороны. Команды диагностики необходимо выполнять в [командной строке](https://timeweb.cloud/docs/general/komandnaya-stroka-v-raznyh-os) вашей операционной системы. ## Основные команды Если возникают проблемы с доступом к сайту, в первую очередь необходимо проверить доступ к серверу, на котором он расположен. Сделать это можно при помощи перечисленных ниже команд-утилит. - Для **ОС Windows** можно также скачать и использовать программу [WinMTR](https://timeweb.cloud/docs/general/winmtr), которая объединяет в себе функции утилит `ping` и `tracert`. - В **MacOS** для выполнения `ping`, `nslookup`, `tracert` можно использовать «Сетевую утилиту» вместо терминала. ### ping Команда `ping` позволяет проверить время отклика компьютера или ресурса на запрос. Для получения информации необходимо ввести в командную строку саму команду и доменное имя сайта, на который вы не можете зайти, и нажать Enter. ```shell ping domain.ru ``` Для остановки выполнения команды нажмите Ctrl+C. В сетевой утилите в Mac необходимо перейти на вкладку Ping, ввести доменное имя и нажать Ping. ### tracert Команда `tracert` позволяет выполнить трассировку, то есть отследить путь переданных пакетов с данными от вашего компьютера до указанного адреса. Для получения информации необходимо ввести в командную строку саму команду и доменное имя сайта, на который вы не можете зайти, и нажать Enter. ```shell tracert domain.ru ``` ### nslookup Команда `nslookup` позволяет запросить информацию с DNS-серверов. Для получения информации необходимо ввести в командную строку саму команду и доменное имя сайта, на который вы не можете зайти, и нажать Enter. ```shell nslookup domain.ru ``` Полученные сведения вы можете использовать для самостоятельного анализа либо предоставить их в обращении к службе поддержки. ### telnet Еще одна команда диагностики, которая может быть полезна — это `telnet`. Telnet имеет смысл использовать для проверки работы конкретной службы (главным образом — почтовых серверов), если наблюдаются проблемы с подключением к ней. Чтобы начать работу с `telnet`, его нужно установить либо активировать. Windows Откройте Windows PowerShell от имени администратора и выполните: ```shell dism /online /Enable-Feature /FeatureName:TelnetClient ``` MacOS Установите `telnet` с помощью Homebrew: ```shell brew install telnet ``` Linux Установите `telnet` с помощью пакетного менеджера вашей ОС: Ubuntu / Debian: ```shell apt update apt install telnet ``` Fedora / RHEL: ```shell dnf install telnet ``` Arch Linux: ```shell pacman -S inetutils ``` Теперь можно работать с `telnet`. Например, для проверки соединения с сервером исходящей почты, используйте: ```shell telnet smtp.timeweb.ru 25 ``` Если проблема возникает при подключении по другому порту (2525 или 465), указывайте в команде именно его. Аналогичным образом можно проверить подключение к серверам входящей почты, указав необходимые номера портов (могут быть 110 или 995 для POP3, 143 или 993 для IMAP): ```shell telnet pop3.timeweb.ru 110 telnet imap.timeweb.ru 143 ``` Ответ «Connected to имя_сервера» говорит об успешном подключении. Если в выводе команды сообщение об ошибке подключения (»Unable to connect to remote host»), вероятнее всего, с вашей стороны блокируются подключения на конкретный порт, и необходимо обратиться к провайдеру или администратору сети для устранения этого ограничения. К обращению стоит приложить вывод команды `telnet`. Трафик на порт может также блокироваться антивирусом или файрволом — проверьте дополнительно соответствующие настройки ПО. Еще одно частое применение `telnet` — проверка удаленного подключения к базе данных: ```shell telnet имя_сервера 3306 ``` # Сброс кэша браузера Source: https://timeweb.cloud/docs/general/sbros-kehsha-brauzera После внесения изменений в файлы сайта или после устранения ошибки может потребоваться сбросить кэш браузера, чтобы отобразить актуальное состояние страницы вместо ее прежней версии. Иногда бывает достаточно перезагрузить конкретную страницу, не сбрасывая кэш полностью. Для этого нужно нажать **Ctrl+F5** (в браузере Safari — Command+R). Если это не помогло, необходимо очистить кэш через настройки вашего браузера. ## Google Chrome - Нажмите Ctrl + Shift + Del. - Выберите пункт «Изображения и другие файлы, сохраненные в кеше» → «Удалить данные». ## Mozilla Firefox - Нажмите Ctrl + Shift + Del. - Отметьте пункт «Кэш» → «Ок» или «Удалить сейчас». ## Safari - Нажмите сочетание клавиш Option+Command+E (⌥⌘e). ## Internet Explorer - Нажмите Ctrl + Shift + Del. - Выберите пункт «Временные файлы Интернета и веб-сайтов» → «Удалить». ## Microsoft Edge - Нажмите Ctrl + Shift + Del. - Выберите пункт «Кэшированные изображения и файлы» → «Удалить». ## Opera - Нажмите Ctrl + Shift + Del. - Выберите пункт «Кэшированные изображения и файлы» → «Удалить данные». ## Яндекс.Браузер - Нажмите Ctrl + Shift + Del. - Выберите пункт «Файлы, сохраненные в кэше» → «Очистить». # Настройка публичных DNS Source: https://timeweb.cloud/docs/general/public-dns Смена DNS-сервера может понадобиться в случаях, когда из вашей сети недоступен сайт — например, при переходе по доменному имени происходит обращение к неверному IP. Такое может произойти, когда долго не обновляется кэш DNS-сервера вашего провайдера. В этом случае можно заменить DNS, предоставляемый провайдером интернета, на альтернативный публичный DNS. Публичные DNS предоставляются такими сервисами, как Google, Yandex, Cloudflare и многими другими; вы можете найти информацию о них в сети. В этой инструкции мы будем использовать [Google Public DNS](https://developers.google.com/speed/public-dns) — публичные DNS-серверы Google: ```shell 8.8.8.8 8.8.4.4 ``` Рассмотрим настройку для операционных систем: - Windows - macOS - Linux ## Windows На устройствах с ОС Windows сначала нужно изменить DNS в сетевых настройках, после чего очистить кэш DNS. 1. Нажмите сочетание клавиш Windows + R и введите в окне «Выполнить» следующую команду: ```shell control.exe /name Microsoft.NetworkandSharingCenter ``` Нажмите «OK». 2. Откроется окно настроек. В разделе «Просмотр основных сведений о сети и настройка подключений» кликните на сеть в пункте «Подключения». ![Win1](https://content.timeweb.com/assets/87407369-66ac-43a2-907c-6dff31d4fc30?width=1120&height=631) _Окно «Центр управления сетями и общим доступом» в интерфейсе ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ 3. В открывшемся окне выберите пункт «Свойства». ![Win2](https://content.timeweb.com/assets/697cc18c-8cba-4955-9930-17e9743c67ea?width=421&height=550) _Окно с параметрами подключения в интерфейсе ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ 4. В списке компонентов найдите и выделите пункт «IP версии 4 (TCP/IPv4)» и нажмите кнопку «Свойства». ![Win3](https://content.timeweb.com/assets/79a7dde9-7bb3-4caf-821d-5ee36e4b815d?width=453&height=585) _Окно «Беспроводная сеть: свойства» в интерфейсе ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ 5. На вкладке «Общие» выберите пункт «Использовать следующие адреса DNS-серверов» и введите нужные DNS-адреса в поля «Предпочитаемый DNS-сервер» и «Альтернативный DNS-cepвep». В зависимости от выбранного провайдера DNS, второе поле может оставаться пустым. ![Win4](https://content.timeweb.com/assets/29ef3144-5936-49ac-995c-716cafac74c0?width=400&height=452) _Окно «Свойства: IP версии 4 (TCP/IPv4)» в интерфейсе ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ Теперь необходимо выполнить очистку кэша DNS. 1. Кликните правой кнопкой мыши по иконке Windows (меню Пуск) и выберите опцию «Командная строка (администратор)» или «Windows PowerShell (администратор)». 2. Введите команду: ```shell ipconfig /flushdns ``` Нажмите Enter. Вы увидите подобный вывод: ![Win5](https://content.timeweb.com/assets/9bfa35e5-50aa-449c-8fbb-52e1c5a1ea8f?width=857&height=196) _Окно Windows PowerShell в интерфейсе ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ ## macOS Для смены DNS-серверов на устройствах под управлением macOS необходимо перейти в настройки сетевого подключения и указать IP-адрес DNS-сервера. 1. Откройте меню Apple (иконка яблока) и выберите пункт «Системные настройки». После перейдите в меню «Сеть». ![Mac1](https://content.timeweb.com/assets/f7dcfb92-0591-4ec6-9151-c675182cdfad?width=1624&height=1024) _Меню системных настроек в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ 2. В левой колонке выберите подключение, которое вы используете, и нажмите «Дополнительно». ![Mac2](https://content.timeweb.com/assets/7588d991-4050-462d-af86-faf1930d3c1d?width=821&height=605) _Окно «Сеть» в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ 3. В появившемся окне перейдите во вкладку «DNS», нажмите значок «+» и введите IP-адрес нужного DNS-сервера. ![Mac3](https://content.timeweb.com/assets/57701e67-8164-410b-b400-49e6caf4e6d9?width=821&height=606) _Настройка DNS в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ После нажмите «OK», и DNS-серверы будут добавлены. ## Linux Мы рассмотрим смену DNS в Linux на примере Ubuntu 20.04 LTS. Мы будем использовать графический интерфейс Ubuntu, но также можно изменить DNS через терминал. 1. Войдите в настройки сетевого соединения. Для этого выберите пункт «Параметры соединения» в меню подключенной сети. ![Lin1](https://content.timeweb.com/assets/c09551ee-945d-4467-aa6f-99f13fe0942a?width=1919&height=1078) _Переход в «Параметры соединения» в интерфейсе ОС [Ubuntu](https://ubuntu.com/)_ 2. Нажмите на значок шестеренки и перейдите во вкладку «IPv4». ![Lin2](https://content.timeweb.com/assets/1c338ef4-2c5a-4a93-a28f-65dd3e04ddd9?width=980&height=818) _Сетевые настройки в интерфейсе ОС [Ubuntu](https://ubuntu.com/)_ 3. В блоке «DNS» отключите автоматическое получение IP-адресов DNS и укажите в строке «DNS» нужные адреса через запятую. 4. Нажмите «Применить». ![Lin3](https://content.timeweb.com/assets/8c0fb816-f7c4-45cd-a18b-4595f0ef7bbe?width=722&height=476) _Настройка DNS в интерфейсе ОС [Ubuntu](https://ubuntu.com/)_ # Настройка файла /etc/hosts Source: https://timeweb.cloud/docs/general/nastrojka-fajla-etc-hosts С помощью файла `hosts` на вашем компьютере можно настроить соответствие между доменом и конкретным IP-адресом. Такая настройка может понадобиться, например, в случае, если вы перенесли сайт и домен на новый сервер, и необходимо проверить работу сайта по его основному адресу. Однако кэш DNS-сервера все еще «помнит» предыдущую A-запись домена, и при обращении к сайту будет отдавать прежний IP-адрес, по которому сайт уже недоступен. Чтобы не дожидаться обновления кэша DNS (оно может занимать несколько часов), можно указать необходимую связку домена и IP-адреса в файле `hosts` — запрос к этому файлу имеет приоритет перед обращением к DNS-серверам. Узнать, к какому IP идет запрос в данный момент при обращении к домену, можно с помощью команды `ping` — работа с ней подробнее описана [здесь](https://timeweb.cloud/docs/general/ping-tracert-nslookup). Еще один вариант использования настройки в `hosts` — запрет доступа к тому или иному сайту с вашего компьютера. К примеру, если домену `vk.com` прописать в `hosts` некорректный IP (скажем, 127.0.0.1), то перейти на данный сайт с вашего компьютера будет невозможно. Сама настройка очень простая: достаточно указать в файле нужный IP-адрес, а через пробел от него — доменное имя. Вносить изменения необходимо от имени администратора. ## Windows Если система устанавливалась по умолчанию на диск C, файл будет находиться по пути: ```shell c:\windows\system32\drivers\etc\hosts ``` Открыть нужный файл можно одним из следующих способов. Убедитесь, что все действия вы выполняете **от имени администратора***.* **Вариант 1.** Запустить командную строку (нажать Win+R, в появившемся окне набрать `cmd` и нажать ОК) и выполнить в ней команду ниже: ```shell notepad.exe c:\windows\system32\drivers\etc\hosts ``` Файл `hosts` будет открыт в блокноте, и вы сможете внести необходимые изменения и сохранить их. **Вариант 2.** Перейти в «Мой компьютер» → Локальный диск С → Windows → System32 → drivers → etc: ![Shortcut ](https://content.timeweb.com/assets/db1623fe-ee98-46af-abfa-3f225d0290aa?width=943&height=302) _Окно «Этот компьютер» в интерфейсе ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ В папке `etc` кликните правой кнопкой мыши на файле `hosts`, выберите «Открыть с помощью» и далее выберите «Блокнот»: ![Open As](https://content.timeweb.com/assets/7d1895ce-6670-43f1-a58d-c32f545af9e1?width=1081&height=527) _Контекстное меню файла в интерфейсе ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ Как правило, файл выглядит следующим образом: ![Hosts](https://content.timeweb.com/assets/79dbcc2c-7cc2-4b49-b7b5-2fea272357e0?width=726&height=485) _Окно программы «Блокнот» в интерфейсе ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ Введите необходимый IP и домен, например, `92.53.96.120 mydomain.com`: ![Hosts 1](https://content.timeweb.com/assets/306470e6-459c-4319-a05a-e6fe8d8a97a0?width=725&height=511) _Окно программы «Блокнот» в интерфейсе ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ Сохраните изменения. Для этого выберите «Файл» — «Сохранить». В открывшемся окне выберите «Все файлы» и нажмите «Сохранить». ![Save](https://content.timeweb.com/assets/40fad97d-049f-4f15-aec7-02446d043301?width=962&height=591) _Окно сохранения файла в интерфейсе ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ Чтобы проверить настройки, выполните [в командной строке](https://timeweb.cloud/docs/general/komandnaya-stroka-v-raznyh-os): ```shell ping mydomain.com ``` Замените `mydomain.com` на указанный вами домен. Если все настройки корректны, в выводе команды будет отражен IP-адрес, указанный в файле `hosts`. ## Linux Откройте терминал и выполните команду ниже: ```shell sudo nano /etc/hosts ``` Она позволит открыть файл `hosts` для редактирования с правами суперпользователя. Если в вашей системе не установлен редактор `nano`, можно воспользоваться любым другим (`gedit`, `vi` и т.д.). Как правило, содержимое файла выглядит следующим образом: ```shell 127.0.0.1 localhost 127.0.1.1 ваш_компьютер # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ``` Введите необходимый IP и домен после второй строки, например: ```shell 127.0.0.1 localhost 127.0.1.1 ваш_компьютер 92.53.96.120 mydomain.com ``` Сохраните изменения (в `nano` — нажатием Ctrl+O, далее Ctrl+X) и проверьте настройки, выполнив в терминале: ```shell ping mydomain.com ``` Если все настройки корректны, в выводе команды будет отражен IP-адрес, указанный в файле `hosts`. ## MacOS Запустите программу **Терминал** / Terminal. Ее можно найти через Spotlight / Finder. Выполните в терминале команду: ```shell sudo nano /etc/hosts ``` Далее введите ваш пароль пользователя. В файле под уже имеющимися записями укажите нужный IP и домен, например: ```shell 92.53.96.120 mydomain.com ``` Сохраните изменения и закройте редактор (в `nano` — нажатием Control+O, далее Control+X)/. Для проверки вы можете выполнить в терминале команду: ```shell ping mydomain.com ``` Если все сделано верно, в выводе команды будет отражен IP-адрес, который вы указали в файле `hosts`. # Настройка файла robots.txt Source: https://timeweb.cloud/docs/general/nastrojka-fajla-robots-txt `robots.txt` — это служебный файл с инструкциями для поисковых роботов, размещаемый в корневой директории сайта (`/public_html/robots.txt`). С его помощью можно запретить индексирование отдельных страниц (или всего сайта), ограничить доступ для определенных роботов, настроить частоту запросов роботов к сайту и др. Корректная настройка `robots.txt` позволит снизить нагрузку на сайт, создаваемую поисковыми роботами. ## Формат robots.txt - Файл содержит набор правил (директив), каждое из которых записывается с новой строки в формате `имя_директивы: значение` (пробел после двоеточия необязателен, но допустим). - Каждый блок правил начинается с директивы `User-agent`. - Внутри блока правил не должно быть пустых строк. - Новый блок правил отделяется от предыдущего пустой строкой. - В файле можно использовать примечания, отделяя их знаком `#`. - Файл должен называться именно `robots.txt`; написание Robots.txt или ROBOTS.TXT будет ошибочным. Некоторые роботы могут игнорировать отдельные директивы. Например, GoogleBot не учитывает директивы `Host` и `Crawl-Delay`; YandexDirect игнорирует общие директивы (заданные как `User-agent: *`), но учитывает правила, заданные специально для него. Проверить созданный `robots.txt` можно в вебмастер-сервисах [Yandex](https://webmaster.yandex.ru/tools/robotstxt/) или [Google](https://search.google.com/search-console/welcome) или в других подобных сервисах в сети. ## Используемые директивы ### User-agent Все блоки правил начинаются с директивы `User-agent`, в которой указывается название робота, для которого задается правило. Запись вида `User-agent: *` означает, что правило задается для всех поисковых роботов. Например, при следующей записи правило будет применено только к основному индексирующему боту Яндекса: ```shell User-agent: YandexBot ``` Правило будет применено ко всем роботам Яндекса и Google: ```shell User-agent: Yandex User-agent: Googlebot ``` Правило будет применено вообще ко всем роботам: ```shell User-agent: * ``` ### Disallow и Allow Директивы используются, чтобы запретить и разрешить доступ к определенным разделам сайта. Например, можно запретить индексацию всего сайта (`Disallow: /`), кроме определенного каталога (`Allow: /catalog`): ```shell User-agent: имя_бота Disallow: / Allow: /catalog ``` Запретить индексацию страниц, начинающихся с `/catalog`, но разрешить для страниц, начинающихся с `/catalog/auto` и `/catalog/new`: ```shell User-agent: имя_бота Disallow: /catalog Allow: /catalog/auto Allow: /catalog/new ``` В каждой строке указывается только одна директория. Для запрещения (или разрешения) доступа к нескольким каталогам, для каждого требуется отдельная запись. С помощью `Disallow` можно ограничить доступ к сайту для нежелательных ботов, тем самым снизив создаваемую ими нагрузку. Например, чтобы запретить доступ ко всему сайту для MJ12bot и AhrefsBot — ботов сервиса majestic.com и ahrefs.com — используйте: ```shell User-agent: MJ12bot User-agent: AhrefsBot Disallow: / ``` Аналогичным образом устанавливается блокировка и для других ботов (скажем, DotBot, SemrushBot и других). Примечания: - Пустая директива `Disallow:` равнозначна `Allow: /`, то есть «не запрещать ничего». - В директивах может использоваться символ `$` для обозначения точного соответствия указанному параметру. Например, запись `Disallow: /catalog` аналогична `Disallow: /catalog *` и запретит доступ ко всем страницам с `/catalog` (/catalog, /catalog1, /catalog-new, /catalog/clothes и др.). Использование `$` это изменит. `Disallow: /catalog$` запретит доступ к `/catalog`, но разрешит /catalog1, /catalog-new, /catalog/clothes и др. ### Sitemap При использовании файла `sitemap.xml` для описания структуры сайта, можно указать путь к нему с помощью соответствующей директивы: ```shell User-agent: * Disallow: Sitemap: https://mydomain.com/путь_к_файлу/mysitemap.xml ``` Можно перечислить несколько файлов `Sitemap`, каждый в отдельной строке. ### Host Директива используется для указания роботам Яндекса основного зеркала сайта и полезна, когда сайт доступен по нескольким доменам. ```shell User-agent: Yandex Disallow: /catalog1$ Host: https://mydomain.com ``` Примечания: - Директива `Host` может быть только одна; если в файле указано несколько, роботом будет учтена только первая. - Необходимо указывать протокол HTTPS, если он используется. Если вы используете HTTP, зеркало можно записать в виде mydomain.com - Для корректного прочтения директивы, ее нужно указывать в блоке правил `User-agent` после директив `Disallow` и `Allow`. ### Crawl-delay Директива устанавливает минимальный интервал в секундах между обращениями робота к сайту, что может быть полезно для снижения создаваемой роботами нагрузки. Чем выше указанное значение, тем меньше страниц робот загрузит за сессию. Значения можно указывать целыми или дробными числами (разделитель — точка). ```shell User-agent: Yandex Disallow: Crawl-delay: 0.5 ``` Примечания: - Для корректного прочтения директивы, ее нужно указывать в блоке правил `User-agent` после директив `Disallow` и `Allow`. - Для Яндекса максимальное значение в `Crawl-delay` — 2. Более высокое значение можно установить инструментами [Яндекс.Вебмастер](https://yandex.ru/support/webmaster/service/crawl-rate.html#crawl-rate). - Для Google-бота установить частоту обращений можено в панели вебмастера [Search Console](https://search.google.com/search-console/welcome). ### Clean-param Директива используется для робота Яндекса. Она позволяет исключить из индексации страницы с динамическими параметрами в URL-адресах (это могут быть идентификаторы сессий, пользователей, рефереров), чтобы робот не индексировал одно и то же содержимое повторно, повышая тем самым нагрузку на сервер. Например, на сайте есть страницы: ```shell www.mydomain.ru/news.html?&parm1=1&parm2=2 www.mydomain.ru/news.html?&parm2=2&parm3=3 ``` По факту по обоим адресам отдается одна и та же страница — `www.mydomain.ru/news.html`, при этом в URL присутствуют дополнительные динамические параметры. Чтобы робот не индексировал каждую подобную страницу, можно использовать директиву: ```shell User-agent: Yandex Disallow: Clean-param: parm1&parm2&parm3 /news.html ``` Через знак `&` указываются параметры, которые робот должен игнорировать. Далее указывается страница, для которой применяется данное правило С более подробной информацией о настройке директивы `Clean-param` рекомендуем ознакомиться в [справочнике Яндекса](https://yandex.ru/support/webmaster/controlling-robot/robots-txt.html#clean-param). # Настройка Cloudflare Source: https://timeweb.cloud/docs/general/nastrojka-cloudflare Cloudflare — это сервис, который специализируется на предоставлении услуг сети CDN (Content Delivery Network), защите от DDoS-атак и сетевой безопасности (проксирование). Если вы используете защиту от DDoS от Cloudflare, вы сможете выполнить необходимые настройки по этой инструкции. Дополнительную информацию о настройке можно получить в поддержке провайдера Cloudflare. ## Подключение домена к проксированию Домен подключается к услуге сразу после регистрации аккаунта либо в разделе «Domains» → «Onboard domain». Для начала работы понадобится делегировать домен на NS-серверы Cloudflare. Смена NS займет от 3 до 24 часов. Включить или отключить прокси, а также отредактировать ресурсные записи можно в разделе «DNS» → «Records». Нажмите на «Edit» рядом с А-записью. ![4ea846ce 1fae 4b86 993e 77ef06c5f701](https://content.timeweb.com/assets/6a66eb54-2c5d-4da0-ab00-7a3d3b225169.png?width=1901&height=793) _Раздел «DNS» в интерфейсе [Cloudflare](https://www.cloudflare.com/ru-ru/)_ Переключите тумблер в нужное положение. A-запись обновится в течение 1-3 часов. ![C3638279 Ac06 4b37 817a 6d792435951d](https://content.timeweb.com/assets/0d9f1cff-18ba-494b-bf15-24d338b4851a.png?width=1851&height=797) _Раздел «DNS» в интерфейсе [Cloudflare](https://www.cloudflare.com/ru-ru/)_ ## Установка SSL Чтобы выпустить бесплатный SSL-сертификат от Cloudflare для последующей установки на сервере, перейдите в раздел «SSL/TLS» → «Origin Server» и нажмите «Create Certificate». ![E7f0179f 16f9 4a17 Bdb3 62e441f3d75b](https://content.timeweb.com/assets/78378821-cf71-4c15-a204-e51c284c1197.png?width=1815&height=796) _Раздел «SSL/TLS» в интерфейсе [Cloudflare](https://www.cloudflare.com/ru-ru/)_ В разделе «SSL/TLS» → «Overview» можно выбрать подходящий принцип работы сертификата. ![Ff1f71fb D42c 4842 A1db C4c7fb2ad1c1](https://content.timeweb.com/assets/80aa566d-df3a-4016-848e-a0e124f6baaf.png?width=1892&height=1046) _Раздел «SSL/TLS» в интерфейсе [Cloudflare](https://www.cloudflare.com/ru-ru/)_ - **Flexible** — данные шифруются только между клиентом и Cloudflare. В таком случае установка сертификата на сервер не требуется, но нужно отключить все способы переадресации сайта на HTTPS в рамках сервера и сайта. - **Full** — данные шифруются как между клиентом и Cloudflare, так и между Cloudflare и сервером, на сервере может быть установлен самоподписанный сертификат. Этот способ подойдёт, если на стороне сервера будет устанавливаться Let’s Encrypt. - **Full (strict)** — данные шифруются как между клиентом и Cloudflare, так и между Cloudflare и сервером, на сервере должен быть установлен CA-сертификат. Этот способ нужно выбрать, если на стороне сервера устанавливается платный сертификат. Выберите один из принципов работы сертификата. Дополнительные настройки вносить не требуется, так как со стороны Cloudflare SSL-сертификат уже будет активен. ## Нюансы ### Let's Encrypt и проксирование Если на домене включено проксирование, для него будет невозможно выпустить Let's Encrypt на сервере, так как это противоречит одному из условий выпуска сертификата. Кроме того, автопродление SSL также не сработает при включенном проксировании. ### Платные сертификаты и проксирование Выпуск платного сертификата через нашу панель при включенном проксировании возможен, однако автопродление для SSL не сработает. После выпуска сертификата мы предоставим вам его файлы для установки SSL на стороне Cloudflare. Обратите внимание, что установить свой сертификат можно только на платных тарифах Cloudflare (Business и Enterprise). # FileZilla Source: https://timeweb.cloud/docs/general/filezilla FileZilla — простой в использовании бесплатный FTP-клиент, предназначенный для загрузки и скачивания файлов с FTP-серверов. С помощью данного инструмента вы сможете разместить файлы вашего сайта на сервере Timeweb Cloud, подключившись по протоколу FTP или SFTP. FileZilla может использоваться в Microsoft Windows, Mac OS X, FreeBSD и Linux. FileZilla имеет удобный интерфейс с русскоязычной локализацией, поддерживает drag & drop, настройку прав доступа chmod, удаленный поиск и редактирование файлов, многопоточную загрузку и докачку при обрыве соединения; и множество других опций. Более подробную информацию и инструкции по работе с данным приложением вы можете найти в [официальной документации](https://wiki.filezilla-project.org/Documentation), а также в свободных источниках в Сети. Скачать FileZilla можно на [официальном сайте проекта](https://filezilla-project.org/index.php). ## Использование FileZilla Чтобы работать с FileZilla, вам потребуются реквизиты доступа к серверу. Найти их можно на Дашборде сервера в вашей панели управления. ![Humble Finch 2026 07 03 13 35](https://content.timeweb.com/assets/c5324c6a-1f16-4b39-82b0-e85c5a2121b3.png?width=1415&height=1034) ### Установка соединения Запустите программу и введите реквизиты доступа к серверу: - **Хост / Host** — IP-адрес вашего сервера из поля «IPv4» на Дашборде сервера.Если используете IPv6-адрес, укажите его в квадратных скобках, например: `[295f:e05b:3dc5:bed2:2350:9648:ef5f:c304]`. - **Имя пользователя / Username** — `root` или имя другого пользователя, [созданного на сервере](https://timeweb.cloud/docs/unix-guides/adding-users). - **Пароль / Password** — пароль указанного пользователя. Для `root` скопируйте пароль с Дашборда, в поле «Root-пароль». - **Порт / Port** — 22 для SFTP (рекомендуется); 21 для FTP. Нажмите на кнопку **Быстрое соединение / Quickconnect**. При первом подключении к серверу FileZilla может показать предупреждение о неизвестном ключе. Отметьте галочку в пункте «Всегда доверять этому хосту» / «Always trust this host» и нажмите «OK». Если все данные указаны правильно, соединение будет установлено. ![2 Eap Xe Gi S2 2026 07 03 13 39](https://content.timeweb.com/assets/c6f684dd-ad59-4c35-9878-7f06a9aafe9a.png?width=1369&height=919) _Интерфейс [FileZilla](https://filezilla-project.org/)_ В правой части окна вы увидите корневую директорию аккаунта, слева доступна навигация по папкам вашего локального компьютера. Обратите внимание, что подключение по FTP невозможно при включенном шифровании: необходимо выбирать в настройках Filezilla варианты «Использовать явный FTP через TLS если доступен» (обычно установлен по умолчанию) или «Использовать обычный FTP». ### Загрузка файлов на сервер Чтобы загрузить файлы на сервер: 1. В правой части экрана перейдите в нужную директорию на сервере. 2. В левой части экрана найдите необходимые файлы или каталог на своем компьютере. 3. Перетащите их в директорию на сервере либо кликните на них правой кнопкой мыши и выберите «Загрузить на сервер». Процесс загрузки файлов отобразится в нижней части окна. ### Скачивание файлов с сервера Чтобы скачать файлы с сервера: 1. В левой части окна выберите директорию на компьютере, куда нужно сохранить файлы (например, «Загрузки»). 2. В правой части найдите файлы или папки на сервере, которые вы хотите скачать. 3. Перетащите их в директорию в левой части экрана либо кликните на них правой кнопкой мыши и выберите «Скачать». Файлы будут загружены в указанную директорию на вашем устройстве. ### Сохранение подключения в настройках Чтобы не вводить данные сервера заново перед каждым подключением, вы можете сохранить их в настройках. **Если подключение уже установлено:** 1. Кликните на «Файл» → «Копировать текущее соединение в Менеджер Сайтов». 2. Откроется окно Менеджера сайтов. Задайте имя подключения. 3. При настройке FTP-подключения убедитесь, что в пункте «Шифрование» выбран вариант «Использовать явный FTP через TLS если доступен». 4. Остальные настройки можно оставить по умолчанию. 5. Нажмите «Ок», чтобы сохранить подключение. Если подключение еще не установлено: 1. Кликните на «Файл» → «Менеджер Сайтов». 2. Кликните «Новый сайт». 3. Задайте имя для подключения. 4. Укажите [реквизиты доступа к серверу](https://timeweb.cloud/docs/general/filezilla#ustanovka-soedineniya): хост, порт, пользователь и пароль. 5. При настройке FTP-подключения убедитесь, что в пункте «Шифрование» выбран вариант «Использовать явный FTP через TLS если доступен». Также выберите режим «Пассивный» на вкладке «Настройки передачи». 6. Нажмите «Ок», чтобы сохранить подключение в настройках, либо «Соединиться», чтобы сохранить и сразу подключиться к серверу. В дальнейшем вы сможете подключаться к указанному серверу одним кликом, просто выбрав заданное имя в списке сохраненных сайтов: ![Ms](https://content.timeweb.com/assets/aace9dfa-1449-4da6-81e4-ac1533bc5c7f?width=449&height=174) _Сохраненные подключения в интерфейсе [FileZilla](https://filezilla-project.org/)_ # PuTTY Source: https://timeweb.cloud/docs/general/putty PuTTY — это бесплатный клиент для различных протоколов удаленного доступа, в том числе SSH. С помощью PuTTY вы сможете удаленно подключиться к серверу, на котором располагаются ваши сайты, и управлять файлами и директориями аккаунта с помощью специальных команд. В пакет PuTTY, помимо самого клиента для Telnet и SSH, входит несколько полезных утилит, которые позволяют существенно упростить работу: - PSCP: клиент для SCP (копирование файлов по шифрованному протоколу с управлением из командной строки); - PSFTP: клиент для SFTP; - Pageant: агент SSH-аутентификации для PuTTY, PSCP, PSFTP и Plink; - PuTTYgen: утилита для генерации SSH-ключей, и др. Возможно установить как полный пакет, так и только необходимые для работы модули. На [официальным сайте проекта](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) представлены англоязычные версии PuTTY для Microsoft Windows и Linux; но также существуют сборки сторонних разработчиков под другие платформы и на других языках. ## Подключение по SSH с помощью PuTTY Запустите PuTTY и укажите в окне настроек необходимые реквизиты для соединения с сервером: ![Putty](https://content.timeweb.com/assets/982b521a-37bd-4459-ac68-ab9233e16ca4?width=464&height=446) _Настройки подключения в интерфейсе [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) в ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ - **Host Name** — введите IP-адрес или имя сервера (указаны в панели управления аккаунтом); - **Port** — 22 (по умолчанию). Вы можете сохранить параметры данной сессии, чтобы упростить последующие подключения, задав любое удобное имя в поле **Saved Sessions** и нажав **Save**. После нажмите на кнопку **Open**. При первом подключении вы увидите дополнительное окно для подтверждения соединения — нажмите **Yes** / **Да**. Далее откроется консоль, где вам будет необходимо ввести логин и пароль: ![Win Vds 040](https://content.timeweb.com/assets/2dbc9795-6426-4212-a137-f19872de7207?width=674&height=424) _Консоль в интерфейсе [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) в ОС [Windows](https://www.microsoft.com/ru-ru/download/windows)_ - **login as** — укажите root или имя другого пользователя, созданного на сервере; - **password** — введите пароль указанного пользователя. Будьте внимательны при наборе, так как символы пароля не будут отражены на экране. После нажмите **Enter**. Если все данные указаны правильно, соединение будет установлено. Далее вы сможете вводить необходимые команды в окне консоли. Более подробная информация о базовых командах доступна в статье [Основные команды SSH](https://timeweb.cloud/docs/general/osnovnye-komandy-ssh). ### Копирование и вставка В окне консоли Putty невозможно использовать привычные сочетания Ctrl+C и Ctrl+V. - Чтобы вставить в консоль Putty скопированный текст (например, пароль или команду), просто кликните правой кнопкой мыши. Дополнительно ничего нажимать не требуется. - Чтобы скопировать текст из окна Putty, выделите его левой кнопкой мыши. Сам факт выделения скопирует его в буфер обмена. Дополнительную информацию и инструкции по работе с PuTTY, позволяющие сделать ее использование максимально удобным и эффективным, можно найти в [официальной документации](http://the.earth.li/~sgtatham/putty/0.66/htmldoc/), а также в многочисленных открытых источниках в сети. # WinMTR Source: https://timeweb.cloud/docs/general/winmtr WinMTR — бесплатная программа для диагностики сетевых соединений. Она совмещает в себе функции встроенных в Windows утилит `ping` и `tracert` и позволяет выполнять трассировку и отслеживать потери пакетов. Скачать программу можно со страницы проекта на [GitHub](https://github.com/White-Tiger/WinMTR) или, например, [здесь](https://sourceforge.net/projects/winmtr/). > [!NOTE] > Для MacOS воспользуйтесь [этой инструкцией](https://timeweb.cloud/docs/general/mtr-for-macos). ![Win Mtr Main Window](https://content.timeweb.com/assets/14f8f7b8-e829-4d53-a5f8-d5f1b965496e?width=599&height=380) _Интерфейс [WinMTR](https://winmtr.net/)_ WinMTR определяет маршрут, по которому передается трафик от вашего компьютера до выбранного хоста, и адрес каждого узла маршрута. После на каждый из них отправляются запросы ICMP-пакетами, чтобы определить узлы, на которых возникают задержки или потери данных. При этом накапливается полная статистика по каждому маршрутизатору: - Hostname — доменное имя или IP-адрес маршрутизатора. - No — порядковый номер маршрутизатора. - Loss % — процент потерянных ответов от данного маршрутизатора. - Sent — отправлено запросов данному маршрутизатору. - Recv — получено ответов от маршрутизатора. - Best — наименьшее (наилучшее) время задержки. - Avrg — среднее время задержки. - Worst — наибольшее (наихудшее) время задержки. - Last — время задержки последнего полученного пакета. ## Инструкция по работе с WinMTR Чтобы получить лог трассировки: 1. Запустите программу WinMTR от имени администратора. 2. В открывшемся окне в поле **Host** введите домен или IP-адрес сайта, маршрут до которого необходимо проверить. 3. Нажмите **Start**. 4. Дождитесь, когда количество пакетов в поле **Sent** будет больше 300. 5. Нажмите **Stop**. 6. Сохраните результат, нажав **Export Text** или **Export HTML**. Полученный лог вы можете передать для анализа нашим специалистам техподдержки, прикрепив его к своему обращению. # MTR для macOS Source: https://timeweb.cloud/docs/general/mtr-for-macos `mtr` — это сетевая утилита, которая сочетает в себе функциональность двух инструментов: `ping` и `traceroute`. Она используется для диагностики сетевых проблем и анализа соединений между вашим компьютером и удаленным сервером. Вот основные задачи, которые выполняет `mtr`: 1. **Диагностика сетевых маршрутов**: `mtr` отслеживает путь, по которому проходят пакеты данных от вашего устройства до целевого сервера. Это помогает выявить проблемы с определенными узлами или сегментами сети, где могут происходить задержки или потери пакетов. 2. **Измерение времени задержки**: Подобно утилите `ping`, `mtr` измеряет время, которое требуется для передачи пакетов до каждого промежуточного узла на пути к серверу. Это позволяет определить, где именно на маршруте возникают задержки. 3. **Обнаружение потерь пакетов**: Утилита также фиксирует процент потерянных пакетов на каждом узле. Потеря пакетов может указывать на проблемы с пропускной способностью сети или перегрузку на определенных сегментах. Использование `mtr` помогает более точно определить, где на маршруте сети возникают сбои или ухудшение качества связи. Наиболее удобный способ установки `mtr` на macOS — через Homebrew. Если Homebrew у вас уже установлен, вы можете сразу перейти к главе [Установка mtr](https://timeweb.cloud/docs/general/mtr-for-macos#ustanovka-mtr). ## Установка Homebrew Для начала установим менеджер пакетов Homebrew. Введите в терминале следующую команду: ```bash /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` Введите пароль пользователя и запустите установку. ![Image2](https://content.timeweb.com/assets/b6bd395c-947f-474b-9823-92f01f7ad449.png?width=747&height=109) _Окно терминала в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ Когда система запросит согласие на установку пакетов, нажмите Enter. ![Image1](https://content.timeweb.com/assets/78b4dae0-e86a-4b98-9bb8-0470e3e1d03e.png?width=749&height=470) _Окно терминала в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ После завершения процесса проверьте корректность установки Homebrew, выполнив команду: ```bash brew -v ``` ![Image5](https://content.timeweb.com/assets/b98713c4-58d5-4c7d-94a2-4791b496565a.png?width=773&height=89) _Окно терминала в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ ## Установка mtr 1. Установим утилиту `mtr` при помощи Homebrew. Введите следующую команду в терминале: ```bash brew install mtr ``` ![Image4](https://content.timeweb.com/assets/ccc14908-7b7e-47f0-8b7e-18221abbf39d.png?width=774&height=647) _Окно терминала в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ 2. Для корректной работы `mtr`, скопируйте файлы в системную директорию `/usr/local/bin`, выполнив команду: ```bash sudo cp $(brew --prefix mtr)/sbin/mtr /usr/local/bin && sudo cp $(brew --prefix mtr)/sbin/mtr-packet /usr/local/bin ``` ## Запуск тестирования Теперь можно запустить тестирование сети, используя команду: ```bash sudo mtr IP_или_домен ``` ![Image3](https://content.timeweb.com/assets/a92b857a-dfce-4587-b293-888d77da06d2.png?width=845&height=488) _Окно терминала в интерфейсе ОС [MacOS](https://www.apple.com/os/macos/)_ `mtr` определяет маршрут, по которому передаются данные от вашего компьютера до выбранного сервера, и отображает IP-адрес или доменное имя каждого узла на пути. Для каждого узла отправляются ICMP-пакеты, что помогает выявить узлы с задержками или потерями данных. Вывод mtr содержит следующую информацию: - `Host` — доменное имя или IP-адрес узла. - `Loss %` — процент потерянных пакетов для каждого узла. - `Snt` — количество отправленных пакетов. - `Last` — время задержки последнего пакета. - `Avg` — среднее время задержки. - `Best` — минимальное время задержки. - `Wrst` — максимальное время задержки. - `StDev` — стандартное отклонение времени отклика. При запуске `mtr` на macOS можно использовать несколько ключей для настройки работы утилиты: - `-r` — режим отчета, выводит результаты диагностики в виде отчета без интерактивного обновления. - `-c N` — количество запросов (пакетов), которые будут отправлены на каждый узел (например, -c 10 отправит 10 пакетов). - `-i X` — интервал между запросами в секундах (по умолчанию — 1 секунда). - `-p` — фиксирует маршруты, позволяя отслеживать все изменения пути. - `-b` — показывает IP-адреса вместе с именами хостов. - `-4` — использовать только IPv4. - `-6` — использовать только IPv6. - `-u` — использовать UDP-пакеты вместо ICMP. Полезно для тестирования сетей, где ICMP может быть заблокирован. - `-T` — использовать TCP-пакеты. Этот режим имитирует TCP-соединение, что помогает при диагностике проблем с доступом к конкретным сервисам Результат, полученный при выполнении тестирования, поможет выявить проблемные участки на маршруте и диагностировать сетевые сбои. Если у вас наблюдаются проблемы с одним из сервисов, расположенных на наших серверах, результат проверки вы можете прислать специалистам технической поддержки. # Поддержка облачных сервисов Source: https://timeweb.cloud/docs/general/cloud-services-support В статье приведены задачи, которые мы решаем в рамках технической поддержки облачных сервисов (DBaaS, App Platform, Kubernetes и др.). Вы можете отправить запрос поддержку, создав тикет из панели управления. В тикете подробно опишите, с какой проблемой вы столкнулись или что необходимо сделать. Время первоначального ответа на тикет составляет до 1 часа. Срок решения конкретной задачи может отличаться в зависимости от ее сложности. ## Базы данных - Все действия, выполняемые в панели управления [timeweb.cloud/my](https://timeweb.cloud/my) - Проверка доступности базы - Обновление прав в соответствии с запросом пользователя - Перенос данных из других DBaaS стандартными методами; до 3 баз [Документация по сервису](https://timeweb.cloud/docs/dbaas/dbaas-manage) ## App Platform - Все действия, выполняемые в панели управления [timeweb.cloud/my](https://timeweb.cloud/my) - Анализ логов деплоя приложений, рекомендации на основе логов - Проверка доступности приложений и платформы - Проверка работы контейнера в рамках сервиса App Platform - Настройка параметров приложения в панели [timeweb.cloud/my](https://timeweb.cloud/my) в соответствии с запросом пользователя Мы **не выполняем**: - Оптимизацию приложения под нашу платформу и настройку параметров приложения в коде [Документация по сервису](https://timeweb.cloud/docs/apps) ## Хранилище S3 - Все действия, выполняемые в панели управления [timeweb.cloud/my](https://timeweb.cloud/my) - Проверка данных хранилища на уровне панели управления - Проверка хранилища вручную через утилиты AWS CLI, s3cmd, Cyberduck и т.д. - Анализ проблем при взаимодействии сайта или сервера с нашим S3-хранилищем [Документация по сервису](https://timeweb.cloud/docs/s3-storage) ## Kubernetes - Все действия, выполняемые в панели управления [timeweb.cloud/my](https://timeweb.cloud/my) - Анализ и проверка конфигураций и работы внутренних сервисов в рамках Kubernetes Мы **не выполняем**: - Диагностику и исправление клиентских конфигураций. Сервис предоставляется «как есть» и постоянно дорабатывается. [Документация по сервису](https://timeweb.cloud/docs/k8s) ## Балансировщики нагрузки - Все действия, выполняемые в панели управления [timeweb.cloud/my](https://timeweb.cloud/my) - Проверка и анализ правил балансировщика, заданных в панели управления [timeweb.cloud/my](https://timeweb.cloud/my) - Корректировка правил в соответствии с запросом пользователя - Консультации по корректной настройке балансировщика [Документация по сервису](https://timeweb.cloud/docs/load-balancer) ## Сети - Добавление сервисов в приватную сеть, удаление сервисов из приватной сети - Настройка статичного IP в приватной сети - Проверка работы сети у добавленных сервисов - Проверка параметров и настроек виртуальных роутеров - Диагностика проблем с маршрутизацией - Проверка доступности сетевых дисков - Подключение и отключение сетевых дисков Документация по сервисам: - [Приватные сети](https://timeweb.cloud/docs/vpc) - [Виртуальные роутеры](https://timeweb.cloud/docs/virtual-routers) - [Сетевые диски](https://timeweb.cloud/docs/network-drives) # Timeweb Cloud CLI Source: https://timeweb.cloud/docs/twc-cli `twc` — утилита командной строки для управления сервисами Timeweb Cloud. Релизы и исходный код программы можно найти здесь: - [Список релизов CLI](https://github.com/timeweb-cloud/twc/releases) - [Исходный код программы на GitHub](https://github.com/timeweb-cloud/twc) - [Страница в PyPI](https://pypi.org/project/twc-cli/) Справочная информация и инструкции с примерами команд доступны в нашем профиле на GitHub: - [Руководство пользователя](https://github.com/timeweb-cloud/twc/blob/master/docs/ru/README.md) - [CLI Reference: Полный справочник по командам](https://github.com/timeweb-cloud/twc/blob/master/docs/ru/CLI_REFERENCE.md) # Установка и начало работы Source: https://timeweb.cloud/docs/twc-cli/twc-cli-start `twc` — утилита командной строки для управления сервисами Timeweb Cloud. Ниже рассмотрим, как установить `twc` и приступить к работе. > [!NOTE] > Актуальная документация по работе с twc, сценарии использования утилиты, способы конфигурации и некоторые полезные приемы [доступны на GitHub](https://github.com/timeweb-cloud/twc/tree/master/docs/ru). ## Установка Установить `twc` можно следующими способами. ### Установка с помощью pipx (рекомендованный способ) 1. Убедитесь, что на компьютер установлены Python не ниже версии 3.8 и пакетный менеджер `pipx` (см. [инструкцию](https://pipx.pypa.io/stable/how-to/install-pipx/)). 2. Установите пакет `twc-cli` с помощью `pip` командой: ```shell pipx install twc-cli ``` ### Установка из файла .tar.gz 1. Убедитесь, что на компьютер установлены Python не ниже версии 3.8 и пакетный менеджер `pipx` (см. [инструкцию](https://pipx.pypa.io/stable/how-to/install-pipx/)). 2. Скачайте пакет `twc-cli` в формате .`tar.gz` со [страницы загрузок](https://github.com/timeweb-cloud/twc/releases). 3. Перейдите в терминале в директорию, где расположен файл .`tar.gz`, и установите его с помощью `pip`: ```shell pipx install ./twc_cli-2.15.2.tar.gz ``` ## Обновление Рекомендуем регулярно обновлять `twc`. Команда для обновления: ``` pipx upgrade twc-cli ``` ## Начало работы 1. Прежде всего нужно получить токен доступа в панели управления Timeweb Cloud. Перейдите в раздел «[Токены API](https://timeweb.cloud/my/api-keys)» и выпустите новый токен с любым сроком действия. 2. Откройте терминал и запустите команду: ```shell twc config ``` 3. Введите токен и нажмите Enter. `twc` сохранит на вашем компьютере конфигурационный файл с токеном. На этом настройка утилиты завершена, вы можете начать управлять сервисами. `twc` содержит встроенную справку на английском языке. С ее помощью можно получить информацию обо всех доступных командах и опциях. Для вызова справки используйте: ```shell twc --help ``` `twc` имеет множество субкоманд с различной степенью вложенности. Опция `--help` доступна на каждом уровне вложенности для всех субкоманд. Например, так можно последовательно прочитать справку по командам для управления облачными серверами: ```shell twc server --help ``` ```shell twc server create --help ``` Для получения информации о доступных командах, субкомандах и опциях рекомендуем обращаться к справке. # Terraform Source: https://timeweb.cloud/docs/terraform Вы можете управлять своей облачной инфраструктурой, развернутой в Timeweb Cloud, с помощью утилиты Terraform. Terraform позволяет автоматизированно управлять ресурсами в Timeweb Cloud с помощью удобных файлов конфигурации формата HCL (HashiCorp Configuration Language) и детальных планов вносимых изменений. Дополнительную информацию о ресурсах провайдера можно получить в документации на [сайте Terraform](https://developer.hashicorp.com/terraform/docs). > [!NOTE] > Подробная документация по работе с Terraform доступна в [нашем профиле GitHub](https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud). **Управление сервисами через Terraform** - [Создание кластера баз данных](https://timeweb.cloud/docs/dbaas/dbaas-create) - [Управление Firewall](https://timeweb.cloud/docs/firewall/upravlenie-fajrvolom#sozdanie-fajrvola) # Начало работы с Terraform Source: https://timeweb.cloud/docs/terraform/nachalo-raboty-s-terraform Terraform — очень удобный инструмент для быстрого создания облачной инфраструктуры и управления ей при помощи конфигурационных файлов. Когда конфигурационные файлы изменяются, Terraform автоматически реагирует на это и отдает соответствующие команды на добавление или удаление нужных администратору ресурсов. В статье мы расскажем, как при помощи Terraform (также будем использовать сокращение TF) создать виртуальную инфраструктуру в Timeweb Cloud. > [!NOTE] > Подробная документация по работе с Terraform доступна в [нашем профиле GitHub](https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud). ## **Шаг 1. Устанавливаем Terraform** Terraform можно установить на Linux, macOS и Windows. Установка возможна двумя способами: - через пакетный менеджер; - вручную — загрузкой и распаковкой готового бинарного файла. Рассмотрим второй способ — установку вручную, с использованием предварительно собранного бинарного файла. HashiCorp, разработчик Terraform, ограничил доступ к своим репозиториям с IP-адресов из России. Для вашего удобства мы развернули зеркало: [http://terraform-mirror.timeweb.cloud/index.html](http://terraform-mirror.timeweb.cloud/index.html). Далее для установки клиента Terraform мы будем использовать именно это зеркало. Актуальную версию Terraform можно посмотреть на странице [http://terraform-mirror.timeweb.cloud/current/index.html](http://terraform-mirror.timeweb.cloud/current/index.html). Для примера рассмотрим установку версии `1.14.0`. Linux Скачайте архив с бинарным файлом: ```bash wget http://terraform-mirror.timeweb.cloud/1.14.0/terraform_1.14.0_linux_amd64.zip ``` Распакуйте архив: ```bash unzip ./terraform_1.14.0_linux_amd64.zip ``` Переместите файл в директорию `/usr/local/bin`: ```bash sudo mv ./terraform /usr/local/bin ``` Убедитесь, что Terraform установлен: ```bash terraform -v ``` macOS Скачайте архив с бинарным файлом: ```bash wget http://terraform-mirror.timeweb.cloud/1.14.0/terraform_1.14.0_darwin_arm64.zip ``` Распакуйте архив: ```bash unzip ./terraform_1.14.0_darwin_arm64.zip ``` Переместите файл в директорию `/usr/local/bin`: ```bash sudo mv ./terraform /usr/local/bin ``` Убедитесь, что Terraform установлен: ```bash terraform -v ``` Windows Перейдите на страницу релиза: [http://terraform-mirror.timeweb.cloud/current/index.html](http://terraform-mirror.timeweb.cloud/current/index.html). Скачайте версию `terraform_1.14.0_windows_amd64.zip`. Распакуйте архив. Внутри будет файл `terraform.exe`. Чтобы запускать Terraform из командной строки, добавьте путь к папке с `terraform.exe` в переменную окружения `PATH`. Для этого: 1. В строке поиска Windows введите «Переменные среды» и откройте соответствующий пункт. 2. В разделе «Системные переменные» найдите переменную `Path` и нажмите «Изменить». 3. Нажмите «Создать» и укажите путь к директории, куда вы распаковали Terraform. 4. Нажмите «ОК» во всех окнах, чтоб применить настройки. Теперь проверьте установку в командной строке: ```bash terraform -v ``` ## **Шаг 2. Создаем конфигурационный файл .tf** Файлы конфигураций в Terraform имеют расширение `.tf`. При этом их название может быть произвольным — программа всё равно сможет извлечь из них нужную информацию. Теперь давайте создадим новый каталог (назовем его `timeweb_project`), а затем добавим туда файл конфигураций, к примеру, `twcproject.tf`. Чтобы получить файл с таким расширением, можно сначала создать обычный текстовый файл, а затем изменить его расширение на `.tf`. Отметим, что в одном каталоге может быть несколько конфигурационных файлов, связанных с одним проектом. Например, можно создать файл `vars.tf` для описания переменных, `nginx.tf` для настройки веб-сервера Nginx и так далее. В дальнейшем при выполнении команды `terraform plan` все `.tf`\-файлы будут «склеены» в один. Однако в рамках данной статьи мы будем использовать один общий конфигурационный файл `twcproject.tf`. ## **Шаг 3. Настраиваем провайдера** Настройка провайдера через конфигурационный файл выполняется следующим образом. В начало нашего файла `twcproject.tf` добавляем следующие строки: ```shell terraform { required_providers { twc = { source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud" } } required_version = ">= 1.4.4" } ``` В `source` указывается адрес провайдера (в примере указан адрес Timeweb Cloud), а номер версии Terraform вы можете узнать при скачивании (мы указали самую свежую на момент написания инструкции). Также учитывайте, что провайдер поддерживает только версии Terraform 0.13 и выше. Теперь введите в папке с конфигурационным файлом следующую команду, которая установит провайдера: ```shell terraform init ``` Можно приступать к следующему шагу. Если же у вас возникла проблема с установкой провайдера, вы всегда можете обратиться к специалистам нашей службы поддержки прямо в чате. ## **Шаг 4. Создаем и указываем токен** Чтобы появилась возможность работать с установленным провайдером, нам понадобится API-токен, который можно получить в [разделе «API и Terraform»](https://timeweb.cloud/my/api-keys) панели Timeweb Cloud (вы должны быть залогинены, чтобы попасть в этот раздел). Допустим мы получили токен `fb246030216d5g30b1g6228e3071037g` (это значение здесь только в качестве примера, вам необходимо будет вводить свой токен, который будет сгенерирован для вас). Добавляем его в файл `twcproject.tf` следующим образом: ```shell provider "twc" { token = "fb246030216d5g30b1g6228e3071037g" } ``` Если нужна возможность удаления сервисов, необходимо [отключить Telegram-подтверждения](https://timeweb.cloud/docs/account-management/notifications#otkluchenie-uvedomlenij-pri-udalenii-servisov-cherez-api) их удаления, отметив соответсвующий чекбокс в настройках токена: ![8a2b7af7 A5c2 4b7f B41b 657b869f4e74](https://content.timeweb.com/assets/1bca3811-2b63-4fc5-b65d-fa80221b55e4?width=1458&height=884) ## **Шаг 5. Готовим конфигурацию** С помощью Terraform вы сможете управлять разнообразными типами ресурсов в своем облаке Timeweb Cloud. Рассмотрим пример создания виртуальной машины (далее ВМ) с диском SSD емкостью 100 ГБ, 2 ядрами и 4 ГБ оперативной памяти. В качестве операционной системы будем использовать Ubuntu 20.04, а наш сервер назовем, допустим, `my-timeweb-server` (вы можете заменить на свое имя). Сервер мы будем создавать в локации `ru-1`. Весь список локаций и соответствующих им зон доступности можно найти [здесь](https://timeweb.cloud/docs/zony-dostupnosti/servisy-i-zony-dostupnosti). Для этого в конфигурационном файле `twcproject.tf` прописываем следующее: ```shell terraform { required_providers { twc = { source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud" } } required_version = ">= 1.4.4" } provider "twc" { token = "fb246030216d5g30b1g6228e3071037g" } data "twc_configurator" "configurator" { location = "ru-1" preset_type = "premium" } data "twc_os" "os" { name = "ubuntu" version = "20.04" } resource "twc_server" "my-timeweb-server" { name = "My Timeweb Server" os_id = data.twc_os.os.id configuration { configurator_id = data.twc_configurator.configurator.id disk = 102400 cpu = 2 ram = 1024 * 4 } } ``` Также для дальнейшей работы вам понадобится пароль, он будет выслан вам на электронную почту сразу после создания ресурса. Важно: если ВМ не создалась, проверьте, корректно ли указан токен (см. Шаг 4). Также стоит обратить внимание на ошибку, которую вывел Terraform: зачастую из нее понятна причина, по которой ВМ не создалась. Кроме того, можно настроить доступ через SSH-ключи. Если вы не знаете, как генерировать SSH-ключи, воспользуйтесь [этой инструкцией](https://timeweb.cloud/docs/cloud-servers/manage-servers/ssh-keys). Для загрузки SSH-ключа добавьте следующий блок в конфигурационный файл `twcproject.tf`: ```shell resource "twc_ssh_key" "your-key" { name = "Your key" body = file("~/.ssh/your-key.pub") } ``` А в этом блоке `resource` пропишите строку `ssh_keys_ids`: ```shell resource "twc_server" "my-timeweb-server" { name = "My Timeweb Server" os_id = data.twc_os.os.id ssh_keys_ids = [twc_ssh_key.your-key.id] } ``` Обратите внимание, что указывать нужно **только публичный** ключ SSH. В итоге у нас получится следующий файл конфигурации: ```shell terraform { required_providers { twc = { source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud" } } required_version = ">= 1.4.4" } provider "twc" { token = "fb246030216d5g30b1g6228e3071037g" } data "twc_configurator" "configurator" { location = "ru-1" preset_type = "premium" } data "twc_os" "os" { name = "ubuntu" version = "20.04" } resource "twc_ssh_key" "your-key" { name = "Your key" body = file("~/.ssh/your-key.pub") } resource "twc_server" "my-timeweb-server" { name = "My Timeweb Server" os_id = data.twc_os.os.id ssh_keys_ids = [twc_ssh_key.your-key.id] configuration { configurator_id = data.twc_configurator.configurator.id disk = 102400 cpu = 2 ram = 1024 * 4 } } ``` На этом подготовка завершена, осталось выполнить пару простейших шагов. ## **Шаг 6. Проверяем конфигурацию** Это делает команда: ```shell terraform validate ``` При правильных настройках вы получите сообщение о том, что конфигурация корректна (*valid*). Если возникла ошибка, проверьте настройки еще раз. Теперь осталось применить конфигурацию. ## **Шаг 7. Применяем конфигурацию** Сначала вводим следующую инструкцию: ```shell terraform plan ``` Она не применяет изменения, а только выводит список ресурсов для проверки настроек. При обнаружении ошибок Terraform не просто выдаст дежурное сообщение, но и укажет, где эти ошибки допущены. Если же всё в порядке, вводим: ```shell terraform apply ``` Эта инструкция применяет созданные конфигурации, так что ваши ресурсы готовы, и с ними уже можно будет работать. Но для применения изменений их сначала нужно будет подтвердить, поэтому в строке: ```shell Enter a value: ``` вводим *yes* и нажимаем *Enter*. Теперь можно проверить созданные ресурсы через [панель управления](https://timeweb.cloud/my). Если же по каким-то причинам вы решите удалить их, это можно сделать при помощи инструкции: ```shell terraform destroy ``` Операцию также нужно будет подтвердить, введя *yes* и нажав на клавишу *Enter*, чтобы подтвердить удаление. ## **Заключение** Итак, мы научились создавать конфигурационные файлы Terraform, настраивать провайдера, а также добавлять ресурсы и настраивать их конфигурацию, чтобы можно было работать с ними на своем сервере Timeweb Cloud. Если же вы хотите узнать об инструкциях Terraform больше, ознакомиться с ними можно в [официальной документации](https://developer.hashicorp.com/terraform/cli). # Как добавить правило балансировщика через Terraform Source: https://timeweb.cloud/docs/terraform/dobavit-pravilo-balansirovshchika-cherez-terraform Terraform — это инструмент для управления инфраструктурой с помощью кода, созданный компанией HashiCorp. С его помощью можно автоматизировать создание и изменение ресурсов инфраструктуры с использованием декларативного языка конфигурации HCL. Возможности Terraform: - Управление инфраструктурой с помощью единого инструмента - Контроль версий и повторное использование конфигураций - Возможность отслеживать текущее состояние инфраструктуры В инструкции рассмотрим, как управлять правилами балансировщика нагрузки с помощью Terraform. ## Зачем нужен балансировщик? Сетевой балансировщик дает возможность равномерно распределить входящий трафик по нескольким серверам для улучшения доступности и надежности вашего сервиса. Он является незаменимым инструментом при реализации горизонтального масштабирования сервисов. Горизонтальное масштабирование — это процесс добавления дополнительных узлов или машин к существующей инфраструктуре для увеличения её возможностей и обработки большего количества трафика. Основные преимущества, которые предоставляет балансировщик: - Балансировка нагрузки для TCP-сессий, обеспечивающая оптимальное использование ресурсов серверов. - Поддержка различных протоколов HTTP, HTTP2, HTTPS, TCP. - Отказоустойчивость сервера приложений, позволяющая избежать проблем с доступностью и работоспособностью сервиса. - Возможность настраивать правила маршрутизации трафика, чтобы направлять запросы к определенным портам на серверах. - Возможность настройки SSL и переадресации на протокол HTTPS. ## Создаем сетевой балансировщик Для начала определимся с требованиями к балансировщику нагрузки: 1. У нас будет два сервера, у которых на 80-м порту будет развернут сайт. 2. Обращаясь по 80 порту к адресу балансировщика, мы должны будем попадать на наш сайт, на один из серверов. 3. Алгоритм — Round robin. 4. Дополнительных параметров нет. Чтобы добавить правило к нашему балансировщику, нам нужно создать его и настроить балансировку серверов. Мы добавили два сервера для того, чтобы настроить для них балансировку нагрузки. ![Image5](https://content.timeweb.com/assets/6bb8b154-adf1-432c-910c-705a29ad0b86?width=325&height=213) Теперь добавим проект на terraform. Подробнее об установке и настройке провайдера можно прочитать [тут](https://timeweb.cloud/docs/terraform/nachalo-raboty-s-terraform). Сначала необходимо создать папку, где будут находиться конфигурации: ```shell mkdir timeweb-lb cd timeweb-lb ``` Общая структура файлов получилась следующей: ```shell ├── timeweb-lb │ ├── main.tf │ ├── variables.tf ``` В файле `variables.tf` укажем переменные для токена провайдера и IP-адресов для балансировки: ```shell variable "tw_token" { type = string sensitive = true } variable "lb-ips" { type = set(string) } ``` В файле `main.tf` добавим информацию о провайдере: ```shell terraform { required_providers { twc = { source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud" } } required_version = ">= 1.5.3" } provider "twc" { token = var.tw_token } ``` Когда мы описываем конфигурацию Terraform, мы используем два основных типа сущностей — это источники данных (`data`) и ресурсы (`resources`). - Источники данных предназначены для того, чтобы определять различные переменные и настройки, которые доступны в рамках выбранного провайдера. К таким источникам данных могут относиться, например, пресеты, проекты и другие параметры. - Ресурсы — это те элементы инфраструктуры, которые мы хотим создать с помощью Terraform — например, серверы, базы данных, балансировщики нагрузки и другие компоненты. В файле `main.tf` укажем пресет для настройки: ```shell data "twc_lb_preset" "lb-preset" { requests_per_second = "10K" price_filter { from = 100 to = 200 } } ``` Если в [панели управления](https://timeweb.cloud/my/projects/) вы используете проекты, то можно указать конкретный проект, в котором будут созданы ресурсы. Например, добавим проект с названием «Articles»: ```shell data "twc_projects" "articles" { name = "Articles" } ``` Ресурс, который мы будем создавать, называется `twc_lb`. При его создании мы можем указать множество опциональных параметров, например настройки healthcheck, выбор алгоритма балансировки. Возьмем самую простую настройку: ```shell resource "twc_lb" "load-balancer" { name = "load-balancer" algo = "roundrobin" project_id = data.twc_projects.articles.id preset_id = data.twc_lb_preset.lb-preset.id ``` Вот какие параметры мы можем еще указать: - `ips` — список IP-адресов для балансировки - `is_keepalive` — флаг, который указывает на поддержание TCP-соединения с сервером - `is_ssl` — автоматический редирект на протокол HTTPS - `is_sticky` — сохранять пользовательскую сессию для одного бэкэнд-сервера Также в проект мы добавили файл `.tfvars`, где указали значения переменных из `variables.tf`: ```shell tw_token = "<тут api key для провайдера>" lb-ips = [ "<тут ip-адрес для первого сервера>", "<тут — для второго>" ] ``` Далее выполним команду: ```shell terraform validate ``` Если всё хорошо, вы должны увидеть сообщение, как на скриншоте. ![Image1](https://content.timeweb.com/assets/f2d5fb45-1a13-4e7f-84f3-7e84aeacc43c?width=616&height=73) Теперь можно выполнить следующую команду, чтобы посмотреть, какие ресурсы будут созданы: ```shell terraform plan -var-file=.tfvars ``` Флаг `-var-file=.tfvars` позволяет нам указать на файл с переменными, которые необходимо будет подставить при применении этого кода. ![Image8](https://content.timeweb.com/assets/43ccbb4f-623f-48f4-b596-799da0fd9447?width=678&height=537) Помимо определения переменных в файле, указать их можно следующими способами: 1. С помощью параметра `-var`, например `-var="tw_token=243453452345235456643"` 2. C помощью переменных окружения — `export TF_VAR_tw_token=243453452345235456643` ## Добавляем правила к балансировщику Правилом в балансировщике будем называть настройку перенаправления портов. В правиле, независимо от способа создания, необходимо указать: 1. Порт, на который мы будем обращаться по адресу балансировщика. 2. Порт, на который мы будем перенаправляться на конкретных серверах. Добавим новый ресурс в нашу конфигурацию, в файл `main.tf`: ```shell resource "twc_lb_rule" "lb-rule" { lb_id = resource.twc_lb.load-balancer.id balancer_proto = "http" balancer_port = 80 server_proto = "http" server_port = 80 } ``` Снова выполним команды: ```shell terraform validate ``` ```shell terraform plan -var-file=.tfvars ``` ```shell terraform apply -var-file=.tfvars ``` Подтвердим применение команды, введя `yes`. ![Image2](https://content.timeweb.com/assets/dc074089-d13c-4097-883a-394de0855215?width=543&height=281) В панели управления видим созданные ресурсы: - Балансировщик ![830daf03 83ea 443c 939b 0187dd70a249](https://content.timeweb.com/assets/0dde03ae-3805-42c0-9182-9e71ff8bd6eb?width=958&height=242) - Правило ![Image10](https://content.timeweb.com/assets/3a20d7ff-c654-4451-bc4d-4e065686fbee?width=626&height=460) Перейдем по адресу нашего балансировщика (два раза, чтобы попасть на разные серверы): - Первый сервер, указанный в переменных: ![Image3](https://content.timeweb.com/assets/622d9eee-c700-4a65-83f4-242d9c51a991?width=472&height=226) - Второй сервер, указанный в переменных: ![Image6](https://content.timeweb.com/assets/1271de9b-f5b9-40f8-81df-34877b5d2ec4?width=475&height=260) Что делать, если нам потребовалось добавить второе правило? Например, на серверах мы развернули новое приложение на порту 81. Просто добавим еще один блок `resource` для правила: ```shell resource "twc_lb_rule" "lb-second-rule" { # таким образом мы укажем идентификатор балансировщика, созданного ранее lb_id = resource.twc_lb.load-balancer.id balancer_proto = "http" balancer_port = 81 server_proto = "http" server_port = 81 } ``` Снова выполним команду ниже, чтобы посмотреть на изменения: ```shell terraform plan -var-file=.tfvars ``` ![Image4](https://content.timeweb.com/assets/ed6b1c07-70f1-40fa-9ef4-bdf30db7c027?width=993&height=469) Мы видим информацию о том, что один балансировщик и одно правило уже созданы, а новое правило будет добавлено. Выполним команду: ```shell terraform apply -var-file=.tfvars ``` При запросе согласимся на применение конфигурации: ![Image9](https://content.timeweb.com/assets/86398b87-cace-496b-95d0-a70e12baa2f7?width=506&height=211) Теперь заглянем в панель управления — у нас настроены два правила: ![Image11](https://content.timeweb.com/assets/269094ad-2a56-426d-bb60-e12883b2ec20?width=602&height=662) Обратимся по адресу балансировщика, чтобы проверить, что всё работает корректно: ![Image12](https://content.timeweb.com/assets/2a4bbf30-813b-4144-99b7-b14089217e48?width=438&height=214) ## Заключение В этой статье мы научились создавать сетевые балансировщики и правила с помощью Terraform. Помимо использования этого инструмента, балансировщиками можно управлять с помощью [CLI](https://github.com/timeweb-cloud/twc/blob/master/docs/ru/CLI_REFERENCE.md) и [API](https://timeweb.cloud/api-docs#tag/Balansirovshiki). Все примеры из статьи доступны на [Гитхабе](https://github.com/DmitryBahtenkov/timeweb-load-balancer). Полезные ссылки: - [Документация терраформ-провайдера Timeweb Cloud](https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud) - [Документация Terraform CLI](https://developer.hashicorp.com/terraform/cli/run) - [Синтаксис Terraform](https://developer.hashicorp.com/terraform/language/syntax/configuration) # Загрузка состояний Terraform в Object Storage Source: https://timeweb.cloud/docs/terraform/zagruzka-sostoyanij-v-object-storage Terraform — это средство для создания и управления инфраструктурой в коде, которое дает возможность развертывать, модифицировать и удалять разнообразные ресурсы в облачных сервисах, такие как виртуальные сервера, сетевые элементы, хранилища данных и т.д. Он применяет язык настроек HCL (HashiCorp Configuration Language), который имеет декларативный и понятный человеку синтаксис. HCL позволяет задавать требуемое состояние инфраструктуры с помощью секций, параметров и формул. Преимущества использования: - Вы можете запустить одинаковый код Terraform на различных платформах и получать одинаковые результаты. - Вы можете разделять свою инфраструктуру на отдельные модули и использовать их в разных задачах. - Вы можете работать с разными облачными провайдерами и услугами с помощью единого интерфейса. - Вы можете сохранять свой код настроек в системе управления версиями и отслеживать изменения по времени. - Вы можете работать над своей инфраструктурой в команде и согласовывать свои действия с помощью удаленного хранилища состояний. ## Remote State По умолчанию Terraform сохраняет своё состояние в локальном файле `.tfstate`. Однако при работе в команде использование локального файла усложняет работу с этим инструментом — каждый пользователь должен убедиться, что у него наиболее свежая версия файла с состоянием и что никто другой в данный момент времени не запускает создание ресурсов с аналогичным провайдером. Механизм Remote State позволяет хранить файлы состояния в удалённом хранилище, что позволяет пользователям работать с самой свежей версией состояния и не думать о синхронизации. Terraform поддерживает следующие хранилища: - Terraform Cloud - HashiCorp Consul - Amason S3 (или другое S3-совместимое хранилище) - Google Cloud Storage - Azure Blob Storage - многие другие Хранение состояния настраивается в конфигурации в блоке `backend`, например: ```shell backend "s3" { endpoint = "" bucket = "" … } ``` Подробнее о конфигурации бэкэнда можно прочитать на сайте Terraform: [Backend Configuration](https://developer.hashicorp.com/terraform/language/settings/backends/configuration). > [!NOTE] > На данный момент Timeweb Cloud не поддерживает загрузку состояний в S3 для версий Terraform 1.6.0 и выше из-за [изменений в структуре конфигурации](https://github.com/hashicorp/terraform/releases/tag/v1.6.0). ## Подготовка Предварительные шаги для создания инфраструктуры. ### Необходимые платные ресурсы В этой статье будут созданы: - Две виртуальные машины ([тарифы](https://timeweb.cloud/services/vds-vps)) - Один бакет Object Storage ([тарифы](https://timeweb.cloud/services/s3-storage)) - Одна локальная сеть ### Создаём бакет Чтобы использовать S3 в качестве хранилища состояния, нам необходимо создать бакет. Для этого перейдём в панель управления, в раздел «Хранилище S3». ![Image6](https://content.timeweb.com/assets/ee140d2b-b93a-431e-9151-5824dab1db79?width=1264&height=376) Нажмём на кнопку «Заказать». Для примера возьмём минимальную конфигурацию: ![Screenshot 04 17 25 16:47:13](https://content.timeweb.com/assets/f3b37b0b-4fb4-4e58-b171-abc23994d714.png?width=1019&height=955) На вкладке «Дашборд» бакета, который мы только что создали, отображаются настройки, которые позже укажем в файле `.tf`: ![Selection 255](https://content.timeweb.com/assets/3258ff3a-733e-4d6d-97ee-d5900f99bf2d.png?width=1008&height=941) ### Пишем конфигурацию Теперь приступим к написанию конфигурации. 1. Добавляем папку `terraform_s3`, в которой будет наш проект. 2. Создаём там файл `main.tf`. 3. По [инструкции](https://timeweb.cloud/docs/terraform/nachalo-raboty-s-terraform) заполняем информацию о провайдере. Должна получиться следующая структура файлов: ```shell ├── terraform_s3 │ ├── main.tf ``` И следующее содержимое файла `main.tf`: ```shell terraform { required_providers { twc = { source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud" } } required_version = ">= 1.5.3" } provider "twc" { token = "" } ``` Теперь добавим настройки бэкенда в блок `terraform`. ```shell backend "s3" { endpoint = "https://s3.twcstorage.ru" region = "ru-1" bucket = "" key = "states/terraform.tfstate" access_key = "" secret_key = "" skip_region_validation = true skip_credentials_validation = true skip_metadata_api_check = true skip_requesting_account_id = true skip_s3_checksum = true } ``` Параметры: 1. `endpoint` — адрес S3-хранилища из панели управления. 2. `region` — регион из панели управления. 3. `bucket` — название бакета, где буду храниться наши конфигурации. 4. `key` — путь к файлу в бакете вместе с названием файла. Например, `states/<название файла>.tfstate`. 5. `access_key` и `secret_key` — ключи для доступа к бакету. Их можно получить в панели управления, на странице созданного ранее бакета 6. `skip_region_validation` и `skip_credentials_validation` — флаги, с помощью которых мы пропускаем валидацию региона и ключей доступа на стороне AWS. Они нужны, так как мы используем не оригинальный AWS S3, а другое облако. Вот пример, как должен выглядеть полный код файла `main.tf`: ```shell terraform { required_providers { twc = { source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud" } } required_version = ">= 1.5.3" backend "s3" { endpoint = "s3.twcstorage.ru" region = "ru-1" bucket = "" key = "states/terraform.tfstate" access_key = "" secret_key = "" skip_region_validation = true skip_credentials_validation = true } } provider "twc" { token = "" } ``` После всех настроек выполним команду `terraform init`: ![Image1](https://content.timeweb.com/assets/d025f014-2cf3-4ff9-93ad-7d9a12c2363a?width=767&height=395) ### Защита данных В конфигурации бэкэнда параметры `access_key` и `secret_key` содержат чувствительные данные, которые не должны быть доступны посторонним лицам. Их не рекомендуется хранить в явном виде в файле конфигурации. 1. Можно установить переменные окружения `AWS_ACCESS_KEY_ID` и `AWS_SECRET_ACCESS_KEY` с соответствующими значениями ключей доступа к бакету. Тогда Terraform будет автоматически читать эти переменные при работе с бэкэндом. 2. Использование параметров командной строки. Можно использовать параметр `-backend-config` при выполнении команды `init`: ```shell terraform init -backend-config="access_key=1234" -backend-config="secret_key=1234" ``` ## Создаём инфраструктуру В файле `main.tf` опишем создание виртуальной машины и локальной сети: 1. Укажем ОС. ```shell data "twc_os" "example-os" { name = "ubuntu" version = "22.04" } ``` 2. Укажем пресет. ```shell data "twc_presets" "example-preset" { price_filter { from = 300 to = 400 } } ``` 3. Добавим VPC. ```shell resource "twc_vpc" "example-vpc" { name = "Example VPC" description = "Some example VPC" subnet_v4 = "192.168.0.0/24" location = "ru-1" } ``` 4. Опишем конфигурацию сервера. ```shell resource "twc_server" "example-server-with-local-network" { name = "Example server with local network" os_id = data.twc_os.example-os.id preset_id = data.twc_presets.example-preset.id local_network { id = twc_vpc.example-vpc.id } } ``` 5. Добавим идентификатор приватной сети в выходные параметры, чтобы мы могли использовать его в других конфигурациях ```shell output "tw-vpc" { value = twc_vpc.example-vpc.id } ``` Содержимое конфигурации `main.tf` будет выглядеть так: ```shell terraform { required_providers { twc = { source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud" } } required_version = ">= 1.5.3" backend "s3" { endpoint = "s3.twcstorage.ru" region = "ru-1" bucket = "" key = "states/terraform.tfstate" access_key = "" secret_key = "" skip_region_validation = true skip_credentials_validation = true } } provider "twc" { token = "" } data "twc_os" "example-os" { name = "ubuntu" version = "22.04" } data "twc_presets" "example-preset" { price_filter { from = 300 to = 400 } } resource "twc_vpc" "example-vpc" { name = "Example VPC" description = "Some example VPC" subnet_v4 = "192.168.0.0/24" location = "ru-1" } resource "twc_server" "example-server-with-local-network" { name = "Example server with local network" os_id = data.twc_os.example-os.id preset_id = data.twc_presets.example-preset.id local_network { id = twc_vpc.example-vpc.id } } output "tw-vpc" { value = twc_vpc.example-vpc.id } ``` Выполним команду `terraform validate`: ![D067189e 35ec 4bc3 8060 765d5f9ffb79](https://content.timeweb.com/assets/ec95b966-f322-4472-9cf0-6a5ba9d22337?width=565&height=49) Затем `terraform plan`: ![A8ecc713 91cf 44ab 9110 E1fd97806e32](https://content.timeweb.com/assets/4b070049-6849-490b-922f-6cc9e6b6bff8?width=436&height=58) И `terraform apply`: ![41ef13cf F6e3 42c9 B98b 0ceacdb3b9dd](https://content.timeweb.com/assets/a846d8b4-d34f-4af0-ab69-cf7166d5b15b?width=576&height=169) После применения конфигурации в бакете автоматически будет создан файл состояния. ## Проверка и использование состояния В панели управления можно проверить наличие файла состояния в бакете: ![Image7](https://content.timeweb.com/assets/b503b873-4ae5-4ca4-a468-65fd64cd4b3d?width=877&height=130) Теперь попробуем использовать сохранённое состояние в другой конфигурации. Добавим новую папку `remote-state`: ```shell mkdir remote-state cd remote-state ``` Добавим файл `remote-state.tf` и заполним его следующим образом: ```shell terraform { required_providers { twc = { source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud" } } required_version = ">= 1.5.3" } provider "twc" { token = "" } data "terraform_remote_state" "vpc" { backend = "s3" config = { endpoint = "s3.twcstorage.ru" region = "ru-1" bucket = "" key = "states/terraform.tfstate" skip_region_validation = true skip_credentials_validation = true access_key = "" secret_key = "" } } data "twc_os" "example-os" { name = "ubuntu" version = "22.04" } data "twc_presets" "example-preset" { price_filter { from = 300 to = 400 } } resource "twc_server" "example-server-with-local-network" { name = "Example server with local network" os_id = data.twc_os.example-os.id preset_id = data.twc_presets.example-preset.id local_network { id = data.terraform_remote_state.vpc.outputs.tw-vpc } } ``` В этом примере мы используем outputs из предыдущего файла `main.tf` для получения идентификатора локальной сети, и добавляем в эту сеть новый VPS. Выполним команды: - `terraform init` - `terraform validate` - `terraform plan` - `terraform apply` Будет создан второй сервер в нужной локальной сети: ![Image4](https://content.timeweb.com/assets/a3146efa-f83b-4cf9-abe0-ec783b383cc8?width=307&height=187) Чтобы удалить созданные ресурсы, выполните команду `terraform destroy` сначала во второй конфигурации, а затем в первой. ## Полезные ссылки - [Документация терраформ-провайдера Timeweb](https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud) - [Документация Terraform CLI](https://developer.hashicorp.com/terraform/cli/run) - [Remote State](https://developer.hashicorp.com/terraform/language/state) # Шифрование секретов в Hashicorp Terraform Source: https://timeweb.cloud/docs/terraform/shifrovanie-sekretov-v-hashicorp-terraform Шифрование приватных данных в HashiCorp Terraform является важным аспектом работы в этом инструменте. И существует методы, которые позволяют безопасно хранить конфиденциальные данные в зашифрованном виде и передавать их в безопасном режиме при необходимости. В этой статье рассмотрим, как безопасно хранить секреты в Terraform, и методы их шифрования, которые помогут улучшить безопасность при работе с инфраструктурой в облаке. ## Почему нельзя хранить чувствительную информацию в виде текста Пользователи Terraform иногда сталкиваются с необходимостью обработать чувствительную информацию. Например, API-ключи или логин и пароль пользователя для БД. Вот пример кода для создания базы данных в Timeweb Cloud (более подробный гайд о работе с Terraform и Timeweb Cloud размещен [на GitHub](https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud)): ```shell resource "twc_db_mysql_8" 'my_db' { name = "mysql_8_database' # Имя пользователя и пароль login = password = preset_id = data.twc_db_preset.example-db-preset.id } ``` Чтобы код работал, в переменных `username` и `password` необходимо указать имя пользователя и пароль. Также наша задача — надежно обработать эти учетные данные и предотвратить их случайное раскрытие. Самый простой вариант — сразу присвоить переменным текстовые значения: ```shell resource "twc_db_mysql_8" 'my_db' { name = "mysql_8_database' # Имя пользователя и пароль login = "root" password = "admin" preset_id = data.twc_db_preset.example-db-preset.id } ``` Но это плохой путь, который вредит информационной безопасности всей системы, даже если вы используете частный репозиторий Git для хранения проекта. Дело в том, что любой пользователь с доступом к системе контроля версий также будет иметь доступ к секретам. Кроме этого, многие инструменты, имеющие доступ к репозиторию, такие как Jenkins, CircleCI или GitLab, сохраняют копию репозитория перед сборкой кода. Также, храня чувствительную информацию в виде обычного текста, вы рискуете, что одна из программ на вашем компьютере получит доступ к этим файлам, а значит и к секретам . В общем, хранение конфиденциальной информации в виде обычного текста сильно упрощает доступ к ним, чем, например, могут воспользоваться злоумышленники. Что, в целом, актуально для любых инструментов, а не только Terraform. Поэтому главное правило шифрования секретов в инфраструктуре как код — это хранение конфиденциальной информации не в виде открытого текста. К чему могут привести незащищенная информация: - **Нарушения комплаенса**. Многие отрасли работают с чувствительной информацией, например персональными данными, которые регулируются законодательством. Несоблюдение надлежащего процесса работы с конфиденциальной информацией может привести к крупным штрафам, а также к репутационному ущербу. - **Несанкционированный доступ к данным.** Из-за незащищенной должным образом информации, лица без соответствующего допуска могут получить доступ к конфиденциальной информации. - **Нарушения информационной безопасности.** Раскрытые данные могут быть использованы злоумышленниками для кражи, изменения информации или даже для полной компрометации целых систем. ## Файл состояния terraform.tfstate У Terraform есть один изъян, который снижает безопасность системы. Каждый раз, когда пользователь использует Terraform для развертывания своей инфраструктуры, он сохраняет большое количество информации о ней, в том числе и предоставленные параметры для подключения к базе данных, в файле состояния `terraform.tfstate` в виде обычного текста. Этот файл сохраняется в той директории, в которой пользователь выполнял команду `apply`. Это приводит к тому, что даже если использовать любой из методов, приведенных в данной статье, чувствительная информация все равно будет доступна в виде обычного текста в файле состояния. [Об этой проблеме](https://github.com/hashicorp/terraform/issues/516) известно уже больше девяти лет, но до сих пор нет какого-то общего решения. Существуют временные фиксы, которые удаляют секреты из файлов состояния, но они недостаточно надежно работают и могут перестать быть совместимы после очередного обновления. Поэтому на текущий момент, вне зависимости от того, какой метод используется для шифрования, самым важным аспектом безопасности данных является безопасность файла состояния. Не рекомендуется хранить его в локальной части системы и репозитории, а использовать для этого хранилища, которые поддерживают шифрование. Например, в объектном хранилище S3 с контролем доступа к нему. ## Переменные окружения для шифрованию ключей Terraform поддерживает чтение переменных окружения, и это можно использовать для шифрования ключей. Для начала создадим несколько переменных в каталоге проекта `variables.tf`: ```shell variable "username" { description = "Имя пользователя" type = string sensitive = true } variable "password" { description = "Пароль пользователя" type = string sensitive = true } ``` Параметр `type` определяет тип переменных, а параметр `sensitive` помечает, что в переменной хранится конфиденциальная информация. Когда его значение равно `true`, данные переменной не отразятся в логах, в том числе при выполнении команд `plan` и `apply`. Теперь заменим в коде `resources` переменные: ```shell resource "twc_db_mysql_8" 'my_db' { name = "mysql_8_database' # Имя пользователя и пароль login = var.username password = var.password preset_id = data.twc_db_preset.example-db-preset.id } ``` И установим значение переменных через терминал. В терминале к их имени необходимо добавлять `TF_VAR_`: `username` → `TF_VAR_username`. ```shell export TF_VAR_username="root" export TF_VAR_password="admin" ``` Когда пользователь выполнит команду `terraform apply`, Terraform будет использовать значение переменных среды. **Важно**: после выполнения Bash-команды сохраняются в истории. Чтобы в ней не сохранились конфиденциальные данные, такие как пароль и логин, воспользуйтесь переменной окружения `HISTCONTROL`. Задайте ей значение `ignorespace` — в таком случае команды, которые начинаются с пробела, сохранятся в истории не будут: ```shell export HISTCONTROL=ignorespace ``` ## Шифрование конфиденциальных данных в Terraform с помощью GPG Благодаря переменным окружения в коде Terraform не будет конфиденциальных данных, указанных в виде текста. Однако они не полностью решают проблему шифрования секретов — в некотором смысле переменные окружения «переносят» проблему из области инструмента в область операционной системы, в которой эти конфиденциальные данные также необходимо защитить. Популярный подход к решению этой проблемы — это хранение конфиденциальных данных в виде зашифрованных файлов с помощью GPG. Для этого можно использовать для этого можно использовать «чистый» GPG, а можно воспользоваться менеджером паролей, который реализует такую же логику. Например, Pass. ### Менеджер паролей Pass В нём данные хранятся в виде GPG-зашифрованных файлов. Они организованы в виде иерархии каталогов, которые могут быть скопированы с одного устройства на другое, а управлять Pass можно с помощью стандартных команд терминала. Руководство по установке инструмента на разные операционные системы размещено [на его официальном сайте](https://www.passwordstore.org/). Вот код для инсталляции на Ubuntu: ```shell sudo apt update sudo apt install pass ``` Для работы с Pass понадобится GPG-ключ. Для его генерации в первую очередь необходимо установить GPG: ```shell sudo apt install gpg ``` После — сгенерировать ключ: ```shell gpg --full-generate-key ``` Выберите размер ключа и его тип (например «RSA and RSA»), а также укажите данные для генерации. После генерации в выводе терминала будет GPG-ключ: ![Image1](https://content.timeweb.com/assets/8d8741e9-3ee5-4704-b80f-57325f6f3198?width=731&height=188) Скопируйте GPG-ключ и используйте его для инициализации Pass: ```shell pass init ``` Зашифруем с помощью Pass уже упомянутые переменные — `username` и `password`: ```shell pass insert username ``` После выполнения дважды введите значение переменной. Аналогичным образом поступаем с `password`: ```shell pass insert password ``` Чтобы получить доступ к секретам из командной строки, используйте команду `pass` и имя секрета: ```shell pass username ``` Введите кодовую фразу, которую указали при генерации GPG-ключа, и секрет будет отображен в консоли в виде обычного текста. Теперь, чтобы использовать зашифрованные данные, установите их в качестве переменных окружения: ```shell export TF_VAR_username=$(pass username) export TF_VAR_password=$(pass password) ``` В чём плюсы и минусы использовать для шифрования секретов переменные окружения: | **Плюсы** | **Минусы** | | --- | --- | | Секреты остаются вне кода, а значит, не отражаются в репозитории. | Инфраструктура не полностью описывается в коде Terraform — это усложняет его поддержку и снижает читаемость. | | Легко использовать: для начала работы не требуется высокой квалификации. | Требуются дополнительные шаги для работы с таким решением. | | Переменные окружения можно интегрировать со многими менеджерами паролей, как в примере с Pass. | Поскольку вся работа с секретами происходит за пределами Terraform, на неё не распространяется средства безопасности, заложенные в коде. | | Подходит для тестовых запусков: в качестве переменных окружения легко установить фиктивные значения. | | ## Шифрование секретов с помощью HashiCorp Vault Vault — это внешнее хранилище с открытым исходным кодом для хранения чувствительной информации. Его также, как и Terraform, разработала компания HashiCorp. Vault позволяет реализовать централизованное зашифрованное хранилище для секретов. Вот его ключевые функции: - **Хранение чувствительной информации**. Базовая функция Vault — шифрование и хранение секретов: паролей, API-ключей, сертификатов, токенов и других данных. - **Аутентификация пользователей**. Для получения доступа к секретам пользователь или приложение должен аутентифицироваться. В инструменте поддержано несколько методов: от классической связки пароля и логина до интеграции с другими система аутентификации. - **Контроль доступа.** В Vault можно гибко настроить, какие пользователи и приложения могут иметь доступ к тем или иным секретам. Это реализуется через политики доступа, в которых описываются разрешения на просмотр и другие операции с секретами. - **Аудит запросов.** С помощью инструмента можно отслеживать, кто и когда обращался к данным в хранилище. ### Установка Vault — это внешнее хранилище, и взаимодействие с ним осуществляется через сеть. Поэтому его можно установить как на локальное устройство и обращаться к нему через localhost, так и на удаленный сервер. В этом материале расскажем, как установить его на Ubuntu: 1. Обновите индексы пакетов и установите GPG. ```shell sudo apt update && sudo apt install gpg ``` 2. Загрузите GPG-ключ. Для загрузки необходимо воспользоваться нероссийским IP-адресом. ```shell wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list ``` 3. Установите Vault: ```shell sudo apt update && sudo apt install vault ``` 4. Чтобы убедиться, что установка прошла успешно, проверьте версию программного обеспечения: ```shell vault version ``` Если установка завершилась успешно, в терминале будет отображена последняя версия хранилища ключей. ### Настройка После установки инструмент необходимо настроить. Мы будем использовать его в режиме сервера. Запустим его: ```shell vault server -dev ``` **Важно:** здесь мы запускаем сервер в режиме разработки. Это означает, что в таком режиме работы, он будет хранить все данные, в том числе ключи, в оперативной памяти. При перезапуске сервера все данные будут потеряны, поэтому для в продакшене желательно использовать обычный режим работы сервера. Режим разработки подходит для учебных целей, как этот материал. Во время выполнения команды в терминале будет отображаться детали ее прогресса, а после — URL-адрес, на котором работает сервер, и токен для авторизации. К нему можно подключиться даже через браузер, введя в поисковой строке URL-адрес сервера. Для дальнейшей работы с сервером в режиме разработки необходимо создать переменную окружения с его URL-адресом. Если вы устанавливали Vault на локальном компьютере, то команда будет выглядеть так: ```shell export VAULT_ADDR='http://127.0.0.1:8200' ``` Проверить состояние хранилища можно следующим образом: ```shell vault status ``` Команда вернет информацию о нём: дата создания, версию программного обеспечения и другое. Для хранения конфиденциальной информации воспользуемся хранилищем «ключ-значение». Для начала создадим его: ```shell vault secrets enable -path=db_data kv ``` После добавим в хранилище секреты: ```shell vault kv put db_data/secret_tf username=root password=admin ``` Проверить результат можно прямо в браузере. ### Как использовать HashiCorp Vault для хранения секретов в Terraform В Main-файле Terraform укажем Vault как провайдера: ```shell terraform { required_providers { vault = { source = "hashicorp/vault" version = "3.23.0" } twc = { source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud" } } required_version = ">= 0.13" } ``` В конфигурационном файле Terraform также необходимо прописать инструмент как провайдера: ```shell provider "vault" { address = "http://127.0.0.1:8200" token = "Токен Vault" } ``` А также реализовать метод для чтения данных из хранилища: ```shell data "vault_generic_secret" "secret_credentials" { path = "db_data/secret_tf" } resource "twc_db_mysql_8" 'my_db' { name = "mysql_8_database' # Имя пользователя и пароль login = data.vault_generic_secret.secret_credentials.data["username"] password = data.vault_generic_secret.secret_credentials.data["password"] preset_id = data.twc_db_preset.example-db-preset.id } ``` ## Как автоматизировать шифрование секретов в Terraform Шифрование секретов в Terraform можно автоматизировать, чтобы обеспечить масштабируемый и безопасный процесс управления конфиденциальными данными. Ниже — некоторые способы автоматизации: - **Скрипты.** С помощью них можно автоматически передавать секреты Terraform. Это можно реализовать с помощью GPG или OpenSSL. - **CI/CD инструменты.** Во многие CI/CD инструменты, например GitLab CI/CD или Jenkins, встроено шифрование, которое можно использовать в автоматическом режиме вместе с Terraform. ## Заключение В этой статье мы рассмотрели вопрос безопасности чувствительной информации, к чему может привести её хранение в незащищенном виде, обсудили, почему нужно бережно хранить файл состояния, а также привели примеры шифрования секретов в Terraform с помощью Hashicorp Vault, переменных сред и GPG. # Оплата Source: https://timeweb.cloud/docs/service-payments - [Пополнение баланса и скидки при оплате](https://timeweb.cloud/docs/service-payments/balance-top-up) - [Способы оплаты](https://timeweb.cloud/docs/service-payments/payment-methods) - [Условия привязки счета или карты](https://timeweb.cloud/docs/service-payments/usloviya-privyazki-karty-dlya-avtomaticheskogo-popolneniya-balansa) - [Отложенный платеж](https://timeweb.cloud/docs/service-payments/otlozhennyj-platezh) - [Детализация списаний](https://timeweb.cloud/docs/service-payments/billing-details) - [Автоматическая отправка счетов](https://timeweb.cloud/docs/service-payments/automatic-invoices) - [Оплата по счету с разным НДС](https://timeweb.cloud/docs/service-payments/oplata-po-schetu-s-raznym-nds) - [Возврат средств](https://timeweb.cloud/docs/service-payments/refund) - [Перенос средств между аккаунтами](https://timeweb.cloud/docs/service-payments/funds-transfer-between-accounts) - [Создание или изменение плательщика](https://timeweb.cloud/docs/service-payments/adding-new-payer) - [Удаление данных при нулевом балансе](https://timeweb.cloud/docs/service-payments/service-deletion) # Пополнение баланса Source: https://timeweb.cloud/docs/service-payments/balance-top-up Все сервисы на аккаунте, за исключением лицензий, SSL-сертификатов или доменов, оплачиваются почасовыми списаниями с баланса аккаунта. > [!NOTE] > Списания выполняются за каждый существующий сервис, даже если он выключен. ## Как пополнить баланс 1. Перейдите в раздел «Баланс и платежи» → «Оплата». 2. Выберите период оплаты (1/3/6/12 месяцев) или опцию «Произвольная сумма», чтобы ввести любую сумму. 3. Выберите [способ оплаты](https://timeweb.cloud/docs/service-payments/payment-methods). Платежи по банковским картам, СБП, ЮMoney или SberPay зачисляются мгновенно. 4. Выполните платеж. ## Скидки при оплате При пополнении баланса на длительные периоды предоставляются скидки: - 3 месяца — 5% - 6 месяцев — 7% - 12 месяцев — 10% Сумма, необходимая для оплаты конкретного периода (3/6/12 месяцев), рассчитывается **из текущего объема трат** на аккаунте. Средства расходуются каждый час, и в течение оплаченного периода расход может как увеличиться (например, если вы добавили новые сервисы или перевели сервис на тариф выше), так и уменьшиться (например, если вы удалили сервис), а значит, период оплаты также изменится. Скидка при этом сохранится — но средств будет хватать на больший или меньший период, в зависимости от изменений в тратах. > [!NOTE] > Это же касается повышения стоимости сервисов. Если вы пополнили баланс на 3, 6 или 12 месяцев до повышения, то у вас сохранится скидка 5, 7, 10%, однако в связи с изменением стоимости, этих денег хватит на меньший срок. При оплате после повышения стоимости для получения скидки нужно будет заплатить большую сумму. # Способы оплаты Source: https://timeweb.cloud/docs/service-payments/payment-methods Мы предоставляем несколько способов оплаты сервисов — вы можете выбрать удобный и пополнить баланс аккаунта. > [!NOTE] > Если у вас возникают сложности с оплатой, напишите в поддержку [из своей панели управления](https://timeweb.cloud/my/support/help-question) или на емейл [billing@timeweb.cloud](mailto:billing@timeweb.cloud). ## Банковские карты Один из самых удобных методов оплаты. Оплата производится через процессинговые центры Uniteller или Сбербанк; зачисление происходит через несколько минут после оплаты. В отдельных случаях средства могут поступать с задержкой до 3-24 часов. При оплате через сайт в качестве реквизитов необходимо указать доменное имя или логин аккаунта. > [!NOTE] > Пожалуйста, учитывайте, что при оплате сервисов корпоративной картой бухгалтерские документы предоставлены не будут, так как держателем карты всегда является физическое лицо. Для получения закрывающих документов для юрлица необходимо производить [оплату по счету](https://timeweb.cloud/docs/service-payments/payment-methods#kvitanciya-v-bank-schet-na-oplatu) — безналичным переводом с расчетного счета организации на наш расчетный счет. При оплате из панели управления вы можете привязать карту для удобной оплаты и для автоматического пополнения баланса (предварительно ознакомьтесь с [условиями](https://timeweb.cloud/docs/service-payments/usloviya-privyazki-karty-dlya-avtomaticheskogo-popolneniya-balansa)). После привязки карты она будет доступна вам в разделе «Баланс и платежи» и вы сможете оплачивать любые услуги с этой карты в один клик, без дополнительного ввода данных. Если платеж не поступил на баланс аккаунта, напишите обращение из панели управления аккаунтом и предоставьте отчет платежной системы. ## Система быстрых платежей Безопасная и удобная оплата через систему быстрых платежей. Для оплаты через СБП вам не нужно вводить никаких данных: 1. В разделе «Баланс и платежи» выберите способ оплаты «СБП». 2. Кликните «Перейти к оплате». 3. Отсканируйте QR-код камерой или банковским приложением и выполните платеж. Средства поступают мгновенно, в редких случаях — в течение нескольких часов. Если платеж не поступил, напишите обращение из панели управления и приложите к нему чек по операции. Вы также можете привязать счет для автоматического пополнения баланса и оплаты услуг в один клик, отметив соответствующий чекбокс в панели управления. Условия привязки счета — [здесь](https://timeweb.cloud/docs/service-payments/usloviya-privyazki-karty-dlya-avtomaticheskogo-popolneniya-balansa). > [!NOTE] > Обратите внимание, что не все банки поддерживают возможность привязки счета СБП для автосписаний. Например, такой опции нет у Сбербанка. Если вы отметили галочку «Привязать счет», то провести оплату через Сбер или другой банк, не поддерживающий автосписания по СБП, не получится. Отвязать счет можно будет в любой момент, в разделе «Баланс и платежи» — «Управление». ## ЮMoney При совершении оплаты электронными деньгами через сайт в качестве реквизитов необходимо указать доменное имя или логин аккаунта. Процесс оплаты происходит на стороне платежной системы. Средства поступают в режиме on-line. Если платеж не поступил на баланс аккаунта, необходимо написать обращение из панели управления и предоставить отчет платежной системы для проверки поступления средств. Отчет платежной системы можно найти в архиве операций на стороне платежной системы. ## Sber Pay При оплате вы будете перенаправлены на страницу процессингового центра Uniteller, где сможете произвести платеж при помощи вашей платежной системы. Средства поступают в режиме on-line. При совершении оплаты электронными деньгами через сайт в качестве реквизитов необходимо указать доменное имя или логин аккаунта. ## Квитанция в банк, счет на оплату Для оплаты через банк вам необходимо выписать квитанцию (для физических лиц) или счет на оплату (для юридических лиц) в панели управления аккаунтом. При формировании квитанции или счета через сайт в качестве реквизита для оплаты необходимо указать доменное имя или логин аккаунта. Обратите внимание, что закрывающие документы для плательщика — юридического лица будут сформированы на основании указанных вами реквизитов. Будьте внимательны при заполнении данных плательщика. Платежи через банк поступают в период от 1 до 3 банковских дней. Средства зачисляются на баланс аккаунта автоматически при условии, если: - в платежном поручении указан номер выписанного счета или квитанции; - фактическим плательщиком является лицо, на данные которого выписан счет или квитанция; - оплачен новый счет или квитанция, которые ранее не оплачивались. Если платеж не поступил на баланс аккаунта, необходимо написать обращение из панели управления аккаунтом и предоставить скан-копию платежного документа с отметкой банка. ## Иностранная банковская карта Возможность оплаты услуг зарубежными банковскими картами для наших клиентов — нерезидентов РФ. При выборе способа «Иностранная банковская карта» конвертация будет идти через казахстанский тенге. Если при оплате возникнет ошибка — напишите в поддержку. Мы поможем разобраться, а также добавим отложенный платеж до устранения проблемы с оплатой, чтобы сервисы работали без перебоев. Обратите внимание! Возврат средств для этого способа оплаты невозможен. # Привязка счета / карты для автоматических списаний Source: https://timeweb.cloud/docs/service-payments/usloviya-privyazki-karty-dlya-avtomaticheskogo-popolneniya-balansa Привязать счет к аккаунту вы можете при выборе способа оплаты «Российская банковская карта» или «СБП» в панели управления — карта или счет будут привязаны автоматически после совершения платежа. После привязки карты/счета списания для пополнения баланса аккаунта будут выполняться автоматически. Также с привязанной картой или счетом вы сможете удобно оплачивать сервисы в один клик из панели управления. ## Списания вручную Чтобы вручную списать средства с привязанной карты или счета: - В разделе «Баланс и платежи» выберите способ оплаты «Российская банковская карта» или «Система быстрых платежей» и выполните платеж. - С привязанной карты/счета будет списана необходимая сумма. Вводить данные карты или счета при этом не потребуется. ## Автоматические списания - Списание с карты или счета будет происходить за 7 дней до окончания средств на балансе. Сумма списания равна платежу за 1 месяц предоставления сервиса или услуги. - Уведомление о каждом списании (успешном или неуспешном) отправляется по e-mail и СМС. Предварительное уведомление по e-mail и СМС об окончании средств на балансе больше не производится. - В случае, если автоматическое списание не удалось, то повторное списание будет произведено через 6 часов. Дальнейшие попытки будут повторяться каждые 6 часов, пока баланс не будет пополнен (автоматически или ручным платежом на период от 7 дней) или пока аккаунт не будет заблокирован. - Если с момента последнего автоматического списания прошло 179 дней, то будет произведен перепривязочный платеж на 90 копеек. Средства будут возвращены на карту в течение 4-7 рабочих дней. ## Автоматические продления Отдельные услуги (например, домены, SSL-сертификаты, права на программное обеспечение третьих лиц) могут продлеваться автоматически. В случае таких продлений: - Денежные средства списываются с вашего баланса автоматически. - Применяется [соглашение о новации](https://st.timeweb.com/cloud-static/legal-info/innovation-agreement.pdf). Если вы не выразили несогласие или не отключили автоматическое продление какой-либо услуги, это означает, что вы согласны с условиями соглашения о новации. ## Отвязка карты/счета Отвязать карту или счет можно в любой момент в панели управления: в разделе «Баланс и платежи» → [«Управление»](https://timeweb.cloud/my/finances). ![Group 1321314411 05 08 2026 11 50 Am](https://content.timeweb.com/assets/fe255aae-8100-4436-bdba-448a8c32a7da.png?width=1574&height=792) # Отложенный платеж Source: https://timeweb.cloud/docs/service-payments/otlozhennyj-platezh Если на балансе аккаунта заканчиваются средства, и вы не успеваете внести оплату, вы можете воспользоваться опцией «Отложенного платежа». Отложенный платеж позволит продлить работу аккаунта на срок до 5 дней. Максимальная сумма отложенного платежа — 3000 руб. Подключить отложенный платеж можно в разделе «Баланс и платежи» — «Управление» не ранее, чем за 7 дней до истечения средств на аккаунте. ![E719d78b 3ace 4275 Bd86 17e6e3daf49e](https://content.timeweb.com/assets/9135e277-c4ca-4785-bc2e-b06201e5136d?width=1429&height=928) Все заказанные сервисы будут предоставляться в полном объеме. Дополнительная плата за предоставление отложенного платежа не взимается; стоимость будет равна стандартной стоимости по вашему тарифу. Отложенный платеж будет погашен при следующем пополнении баланса. > [!NOTE] > Отложенный платеж доступен при условии, что ранее сервисы были оплачены как минимум на 35 дней. > > Воспользоваться отложенным платежом можно не чаще одного раза в месяц. # Детализация списаний Source: https://timeweb.cloud/docs/service-payments/billing-details Получить подробную информацию о стоимости заказанных сервисов и движении средств на балансе можно в разделах «Подключенные сервисы» и «История операций». ## Подключенные сервисы В [«Подключенных сервисах»](https://timeweb.cloud/my/finances/services) вы найдете полный список сервисов с почасовой оплатой и их стоимость за месяц. ![Подключенные сервисы](https://content.timeweb.com/assets/ab7b3121-9199-473a-9703-43d669ff7d53.png?width=1560&height=1420) **Важно**: сюда не включаются опции с разовыми списаниями, таких как домены или SSL-сертификаты. Списания за них можно найти в разделе «История операций». Для наглядности все существующие на аккаунте сервисы группируются по проектам. Это позволяет оценивать бюджет каждого проекта отдельно. Чтобы увидеть стоимость конкретных сервисов, выберите в таблице отображение «Сервисы по одному». ![Отображение по проектам или сервисам](https://content.timeweb.com/assets/97409b24-6ff2-493d-a06e-ed82fd779120.png?width=1549&height=1278) **Важно:** В блоке с графиком вы видите стоимость сервисов с учетом примененных скидок. В блоке ниже, со списком, отображается стандартная стоимость сервисов без скидок. Размер скидки и период ее действия можно найти внизу списка. ![B2d08f8c A500 48ea 8a6d 3d455cf44e9c](https://content.timeweb.com/assets/bf1091e8-dc0a-4314-9354-a989d28258cc.png?width=1547&height=1288) ## История операций Просмотреть все списания и пополнения можно на вкладке [«История операций»](https://timeweb.cloud/my/finances/history). ![Df815e80 Bbd1 43ab 8fed 7bffb6e89047](https://content.timeweb.com/assets/564c494e-f234-41ac-9f8e-1a291703995f.png?width=1542&height=1176) Здесь доступна как визуализация в виде графика, так и привычная таблица со всеми списаниями и поступлениями. Ее также можно скачать в виде .csv-файла. График можно отобразить в удобном для вас виде: ![E2eafcf5 A400 480e Bd87 82328d4da5e2](https://content.timeweb.com/assets/ef661ec4-526a-45be-8333-b4da60f8e376.png?width=1550&height=1173) Здесь вы увидите итоговую сумму списаний за выбранный период, с учетом всех примененных скидок. По умолчанию отображены все типы заказанных сервисов. Общую стоимость для каждого типа можно посмотреть под графиком в расшифровке. ![9b2fe247 Cd4d 433b A086 9208570460a9](https://content.timeweb.com/assets/bae55190-879b-4119-8be8-fef80b4ae3fb.png?width=1382&height=828) При наведении курсора на конкретный пункт графика вы также увидите подробную расшифровку: ![889c7b50 95fb 4246 8c1d F7f5b9a00795](https://content.timeweb.com/assets/cf7f0d21-0629-4517-97b2-e563d5101cf5.png?width=1386&height=829) Вы также можете гибко настроить отображение данных, чтобы получить необходимую информацию: отфильтровать по типу операций, сервисам или нужному периоду. #### Тип операций По умолчанию отображается история всех операций — как пополнения баланса, так и списания с него. Вы также можете отобразить только поступления на баланс: ![De33c0e2 5acb 4544 8c40 09c0331df1c3](https://content.timeweb.com/assets/9a8b7527-9746-45bc-affd-ed9d5021aa43.png?width=1373&height=827) В этом случае вы увидите обновленный график и таблицу с датами и способами внесения платежей. ![43d4744d 7745 41ce Ad71 Cbaade208fad](https://content.timeweb.com/assets/a9567983-43e2-4551-8da9-c9d311ef28c8.png?width=1542&height=1146) #### Фильтр по сервисам По умолчанию отображаются операции по всему аккаунту в целом. Вы можете отфильтровать, какие сервисы вам нужно просмотреть: например, только базы данных или серверы и хранилища. Кликните на «Все сервисы» и выберите нужные: ![30aeab09 6b68 4d60 9f4e 287fe98254a9](https://content.timeweb.com/assets/8b9db85b-38c3-4d7c-88a0-700bfedb27e5.png?width=1376&height=830) > [!NOTE] > В этом разделе невозможно увидеть списания за конкретный сервис, только за определенный тип сервиса. Стоимость конкретных сервисов можно просмотреть на вкладке [«Подключенные сервисы»](https://timeweb.cloud/docs/service-payments/billing-details#podkluchennye-servisy). #### Период операций По умолчанию мы отображаем операции за последние 30 дней. Вы можете изменить отображение на необходимый вам период, выбрав один из готовых вариантов или указав любой период вручную: ![04a7ee21 6f5d 4c81 Bd44 0dc0b6f958eb](https://content.timeweb.com/assets/5062b701-8904-495b-a991-281bbe93b970.png?width=1379&height=829) #### Группировка по дням, неделям, месяцам По умолчанию график отображает операции за выбранный период по дням. Эту настройку также можно изменить. Например, можно выбрать период операций «последние 3 месяца» и сгруппировать их по неделям: ![Cf3d3960 B8da 41d4 837e 19e5fc63a119](https://content.timeweb.com/assets/b9094b87-6fd2-4fd5-af21-342784baa6fd.png?width=1373&height=824) Отметим, что если выбран период больше одного года, то группировка по дням будет доступна только за год. При работе с большими периодами мы рекомендуем использовать группировку по неделям или месяцам. # Автоматическая отправка счетов Source: https://timeweb.cloud/docs/service-payments/automatic-invoices Плательщикам — юридическим лицам мы автоматически отправляем счета на электронную почту за 7 дней до истечения средств на балансе аккаунта. Уведомление об истечении баланса в этом случае не направляется. Если у вас настроено [получение документов через ЭДО](https://timeweb.cloud/docs/electronic-document-management/receiving-electronic-documents) или ранее при формировании счета вы отмечали соответствующий пункт в панели, новый счет также автоматически поступит в вашу систему ЭДО. Автоматическая отправка сработает при условии, что на аккаунте есть плательщик — юридическое лицо. Счет выставляется сроком на 1 месяц. Если плательщиков несколько, используются реквизиты плательщика, который последним совершал оплату. Если оплат еще не было, используются реквизиты последнего созданного плательщика. # Оплата по счету с разным НДС Source: https://timeweb.cloud/docs/service-payments/oplata-po-schetu-s-raznym-nds Начиная с января 2025 года мы начали выставлять счета, которые могут содержать разные ставки НДС для разных сервисов или услуг. Например: ![Ac9336c4 3c2b 4525 B650 95635a3d5a66](https://content.timeweb.com/assets/9b7ed0d5-a41e-490b-831c-51cfac2d2f6f.png?width=1342&height=362) Если вы оплатите такой счет двумя разными платежами, только первый из них будет зачислен на аккаунт автоматически. Зачисление второго платежа может задержаться, так как нам потребуется обработать его вручную. Мы настоятельно рекомендуем оплачивать такие счета **одним платежом** — с корректировкой НДС. В этом случае вся сумма будет зачислена на аккаунт автоматически. Для этого: 1. Откройте форму платежного поручения в 1С или другой программе, через которую вы проводите платежи. 2. Укажите ставку НДС 20%. 3. Введите сумму оплаты. НДС автоматически пропишется в графе «Сумма НДС». ![Image1](https://content.timeweb.com/assets/d941ffa7-0037-4a6d-8245-ab8cc7c5d997.png?width=657&height=499) _Создание платежного поручения в интерфейсе [«1C:Бухгалтерия»](https://1c.ru/)_ 4. Удалите автоматически указанную сумму НДС и пропишите нужную, взяв ее из счета. ![Image2](https://content.timeweb.com/assets/ed125ce4-5a7e-42d3-8632-d830265fa541.png?width=575&height=601) _Создание платежного поручения в интерфейсе [«1C:Бухгалтерия»](https://1c.ru/)_ 5. Сохраните платежное поручение. > [!NOTE] > Если после корректировки НДС вы выберете договор или счет в графе «Договор», ставку НДС нужно будет скорректировать заново, так как сумма НДС изменится. # Возврат средств Source: https://timeweb.cloud/docs/service-payments/refund Процедура возврата средств отличается в зависимости от того, кто произвел платеж: физическое или юридическое лицо. Возврат выполняется именно *плательщику*, а не владельцу аккаунта, если они отличаются. ## Возврат физическим лицам Для возврата средств: 1. [Отправьте обращение в поддержку](https://timeweb.cloud/my/support/help-question) с запросом на возврат и уточнением причины. 2. Если планируется вернуть все неизрасходованные средства с баланса, подтвердите блокировку аккаунта. В большинстве случаев этого достаточно. Возврат будет выполнен на ту же карту, счет СБП или кошелек ЮMoney, с которых была произведена оплата. **Исключения**: - Если платеж проводился по банковской квитанции - Если платеж поступил больше 1 года назад - Если карта или счет, с которых поступил платеж, недоступны В этих случае возврат возможен только на банковские реквизиты. Специалисты поддержки предоставят вам шаблон заявления. - Если владельцем аккаунта является другое лицо В этом случае потребуется предоставить платежный документ (чек, квитанцию) или переоформить аккаунт. ## Возврат юридическим лицам Для возврата средств: 1. [Отправьте обращение в поддержку](https://timeweb.cloud/my/support/help-question) с запросом на возврат и уточнением причины. 2. Если планируется вернуть все неизрасходованные средства с баланса, подтвердите блокировку аккаунта. 3. Специалисты поддержки сообщат сумму к возврату и предоставят вам акт сверки и шаблон заявления. 4. Подпишите документы со своей стороны, заверьте печатью и отправьте их скан-копии в ответном сообщении. Документы должны быть оформлены от имени юридического лица, совершившего платеж. Если вы возвращаете не все средства с баланса, а только часть, в том числе ошибочный платеж, акт сверки не потребуется. # Перенос средств между аккаунтами Source: https://timeweb.cloud/docs/service-payments/funds-transfer-between-accounts Если вы решили перейти к работе на другом аккаунте, вам может понадобиться перенос средств. Перевести между аккаунтами можно как все средства, так и их часть. Для переноса средств [создайте тикет](https://timeweb.cloud/my/support/help-question) из панели управления аккаунтом. Если у вас нет возможности создать тикет из аккаунта, с которого нужно перенести средства, или написать с его контактной почты, поддержка может дополнительно запросить следующие документы: - платежное поручение, - ИНН организации, - квитанции с отметкой банка или скриншот отчета платежной системы, - скан-копию свидетельства ИНН плательщика, - скан-копию паспорта. ## Перенос всех средств на аккаунте Для переноса средств необходимо: 1. Удалить все сервисы на аккаунте (серверы, базы данных и пр.). 2. Подтвердить блокировку аккаунта, написав обращение в службу поддержки из панели управления. Мы перенесем средства на указанный вами аккаунт. ## Перенос части средств Для переноса части средств необходимо: - Создать тикет в службу поддержки с запросом на перенос. - В обращении указать аккаунт, на который необходимо перевести средства, и сумму. Мы перенесем средства на указанный вами аккаунт. # Создание и изменение плательщика Source: https://timeweb.cloud/docs/service-payments/adding-new-payer В панели управления вы можете добавить нового плательщика и скорректировать данные существующего. ## Создание нового плательщика Создать нового плательщика или изменить данные уже созданного вы можете в панели управления аккаунтом. 1. Перейдите в раздел «[Баланс и платежи](https://timeweb.cloud/my/finances)». 2. Выберите способ оплаты «Счет». 3. В поле «Плательщик» выберите «Добавить нового плательщика». Если на аккаунте нет плательщиков, форма добавления откроется по умолчанию. 4. Укажите реквизиты плательщика. 5. Нажмите «Выписать счет». После выставления счета плательщик будет автоматически создан. ## Изменение данных плательщика Для корректировки данных существующего плательщика: 1. Перейдите в раздел «[Баланс и платежи](https://timeweb.cloud/my/finances/payment)». 2. Выберите способ оплаты «Счет». 3. Выберите нужного плательщика в выпадающем списке и нажмите «Редактировать». 4. Обновите данные и нажмите «Выписать счет». Новые данные будут сохранены. ![863d1f0c 0b40 4419 Bb5f Cf929c688175](https://content.timeweb.com/assets/de6c5bd0-35b9-479d-ab65-77620e981ab6?width=664&height=704) Если нужно внести изменения в уже выставленные акты и счета-фактуры, воспользуйтесь нашей [инструкцией](https://timeweb.cloud/docs/accounting-documents/correcting-accounting-documents). > [!NOTE] > Изменить название организации и ИНН невозможно. Если вам необходимо сменить эти данные, потребуется создать нового плательщика. # Удаление данных при нулевом балансе Source: https://timeweb.cloud/docs/service-payments/service-deletion При исчерпании средств на балансе данные сервисов остаются доступными в течение 7 дней, после чего удаляются. Уведомления об окончании средств на балансе будут отправляться на ваш e-mail, а также по смс, в Telegram или Макс, если такие уведомления [подключены](https://timeweb.cloud/docs/account-management/notifications). # Отчетные документы Source: https://timeweb.cloud/docs/accounting-documents Для клиентов — юридических лиц мы ежемесячно выставляем закрывающие документы. Копии документов можно получать на электронную почту, оригиналы — через [систему электронного документооборота](https://timeweb.cloud/docs/electronic-document-management). - [Получение закрывающих документов](https://timeweb.cloud/docs/accounting-documents/receiving-accounting-documents) - [Внесение изменений в закрывающие документы](https://timeweb.cloud/docs/accounting-documents/correcting-accounting-documents) - [Акт сверки](https://timeweb.cloud/docs/accounting-documents/akt-sverki) > [!NOTE] > Если вы не получили какие-либо документы, вы можете: > > - Запустить их повторную отправку через [Timeweb.Документы](https://timeweb.com/ru/documents/). > - Написать нам на [billing@timeweb.cloud](mailto:billing@timeweb.cloud) — обязательно поможем. # Получение закрывающих документов Source: https://timeweb.cloud/docs/accounting-documents/receiving-accounting-documents Закрывающие документы (УПД — универсальные передаточные акты) формируются при оплате юридическими лицами через безналичный расчет. - Документы формируются на основании данных плательщика, указанных при формировании счета. У одного аккаунта может быть неограниченное число плательщиков. [Добавить еще одного плательщика](https://timeweb.cloud/docs/service-payments/adding-new-payer) вы можете в панели управления. - Закрывающие документы **не будут сформированы** **при оплате корпоративной картой**; такой платеж поступит к нам как платеж от физического лица. Чтобы получать закрывающие документы на имя юрлица, необходимо проводить оплату с расчетного счета организации на наш расчетный счет. ## Сервис Timeweb.Документы С помощью сервиса Timeweb.Документы ваши бухгалтеры могут: - скачивать закрывающие документы; - формировать акты сверки; - повторно отправлять оригиналы по ЭДО, если вы не получили какой-то документ, а также акты сверки. Для этого не требуется доступ к панели управления аккаунтом; нужны только реквизиты из платежного поручения. 1. Перейдите на страницу [Timeweb.Документы](https://timeweb.com/ru/documents/) и заполните открывшуюся форму, указав: - - ИНН компании-плательщика. - Номер платежного поручения, по которому прошла оплата. - Номер счета, по которому сформировалось платежное поручение. Если у вас нет номера счета, его можно запросить у системного администратора или другого сотрудника компании, который имеет доступ в панель управления аккаунтом. - Дату платежа из платежного поручения. - Точную сумму с копейками (через точку или запятую). ![927b8a88 Ff16 4474 82bc Fc5dc47e078f](https://content.timeweb.com/assets/e1cc491e-513f-47dd-99f8-d5d4de2b58e6?width=1673&height=793) Откроется личный кабинет со всеми документами, выставленными по этому плательщику. 2. Чтобы скачать нужный документ, наведите курсор на него и нажмите «Скачать PDF». Документ будет загружен на ваше устройство. 3. Чтобы повторно выслать документ по ЭДО, нажмите «Отправить по ЭДО». ![Group 1321314242](https://content.timeweb.com/assets/8ee1a6a8-67e7-4a73-8296-ca52cd09798b.png?width=1280&height=954) 4. Чтобы получить акт сверки, кликните «Сформировать акт сверки» справа вверху и укажите нужный период. Далее вы можете скачать его в формате .PDF на свое устройство либо отправить по ЭДО. ## Копии документов в панели управления Вы можете скачивать копии отчетных документов из панели управления. 1. В разделе «Баланс и платежи» перейдите на вкладку «Документы». ![73840cfa 08dc 43f8 Bd4c 4b1fa5551fa6](https://content.timeweb.com/assets/b0621c46-5c3e-4fae-a0cb-4853f816c6b8.png?width=1535&height=983) 2. Кликните «Перейти» в блоке «Счета» или «УПД» и наведите курсор на строку с документом. 3. Кликните на формат: при выборе HTML документ будет открыт в браузере, при выборе PDF — скачан на ваш компьютер. ![8e5207a8 D0ba 4914 A7a8 858dc5ed4d47](https://content.timeweb.com/assets/8b2e89e9-95a4-46fc-9913-a69997df20ef.png?width=1535&height=826) ## **Email-рассылка копий документов** При подписке на рассылку мы будем ежемесячно отправлять копии документов на указанный вами email. Например, вы можете указать для рассылки email вашей бухгалтерии, чтобы они получали документы напрямую. Документы формируются и отправляются в первых числах месяца; как правило, до 5 числа каждого месяца, следующего за отчетным. Возможность скачивать документы из панели при этом также сохранится. 1. В разделе «Баланс и платежи» перейдите на вкладку «Документы». 2. Нажмите «Настроить» в строке «Получение копий документов на email». ![A63ef1f9 81d0 45b9 92ff Aca35bbe700d](https://content.timeweb.com/assets/4d5ea74b-a7ed-4642-82ea-2c393adc7d57.png?width=1535&height=983) 3. Включите опцию отправки документов и укажите email (или несколько), на который вы хотите получать документы. ![Docs Cloud3](https://content.timeweb.com/assets/7e796d0f-ea35-400b-8e0b-23d6f9d8f60b?width=637&height=550) 4. Нажмите «Сохранить». ## Оригиналы документов Мы предоставляем оригиналы отчетных документов через [электронный документооборот](https://timeweb.cloud/docs/electronic-document-management). Документы выставляются ежемесячно для любого сервиса или услуги, в первые 5 рабочих дней месяца, следующего за отчетным. > [!NOTE] > Если вы не получили какой-либо документ по ЭДО, вы можете самостоятельно повторить отправку [через Timeweb.Документы](https://timeweb.cloud/docs/accounting-documents/receiving-accounting-documents#servis-timeweb-dokumenty). Мы работаем с оператором ЭДО Saby (ранее «СБИС») от компании «Тензор». Если вы подключены к другому оператору, потребуется настроить роуминг. Для этого напишите нам из панели управления аккаунтом или на email [billing@timeweb.cloud](mailto:billing@timeweb.cloud) и укажите: - наименование вашей компании, ее ИНН и КПП; - наименование оператора; - контакты лица (ФИО и номер телефона/email), ответственного за электронный документооборот в вашей организации. Чтобы настроить получение документов по ЭДО: 1. В разделе «Баланс и платежи» перейдите на вкладку «Документы». 2. Нажмите «Настроить» в строке «Получение оригиналов документов». ![Ba6aa9a6 4bed 49ee 99d0 B20a5d6c6398](https://content.timeweb.com/assets/6abe86f6-6608-4658-ae2e-ee5f175c19af.png?width=1535&height=983) 3. Выберите, нужно ли отправлять документы, и сохраните изменения. # Внесение изменений в закрывающие документы Source: https://timeweb.cloud/docs/accounting-documents/correcting-accounting-documents Внести изменения в закрывающие документы можно через обращение в службу поддержки. В зависимости от того, что требуется исправить, будет нужно предоставить определенную информацию. ### **Ошибка, опечатка в реквизитах** Если вы обнаружили ошибку в реквизитах (например, опечатку в названии), достаточно отправить обращение из панели управления или на ящик [billing@timeweb.cloud](mailto:billing@timeweb.cloud). В обращении уточните, в чем именно допущена ошибка и за какой период необходимо перевыставить отчетные документы. ### **Изменение реквизитов организации** Если у вашей компании изменились реквизиты (юридический адрес, КПП, наименование), то для внесения изменений потребуется предоставить скан-копию официального письма, в котором будут указаны: - дата смены реквизитов; - новые реквизиты организации; - печать организации и подпись уполномоченного лица. Письмо можно отправить на e-mail: [billing@timeweb.cloud](mailto:billing@timeweb.cloud) или через панель управления. После его получения мы внесем необходимые изменения. ### **Реорганизация** В случае реорганизации будет необходимо предоставить скан-копии следующих документов: - Официальное письмо о реорганизации. В письме должны быть указаны старые и новые реквизиты юридического лица, дата проведения реорганизации и информация о том, что новое юридическое лицо является правопреемником прежнего юридического лица. - Выписку из ЕГРЮЛ на новое юридическое лицо. В выписке должно быть отражено, что новое юридическое лицо образовано в результате реорганизации прежнего юридического лица. - Акт сверки на дату реорганизации. Документы можно отправить на e-mail: [billing@timeweb.cloud](mailto:billing@timeweb.cloud) или через панель управления. # Акт сверки Source: https://timeweb.cloud/docs/accounting-documents/akt-sverki Акт сверки — это документ, отображающий расчеты двух организаций за определенный срок. Сформировать его можно через Timeweb.Документы или в панели управления аккаунтом ## Акт сверки в Timeweb.Документы Timeweb.Документы — это сервис для получения отчетных документов, для входа в который не требуются логин и пароль от панели управления; достаточно ИНН плательщика и данных одного из платежных поручений. 1. Авторизуйтесь в сервисе [Timeweb.Документы](https://timeweb.com/ru/documents/) по [инструкции](https://timeweb.cloud/docs/accounting-documents/receiving-accounting-documents#servis-timeweb-dokumenty). 2. Кликните «Сформировать акт сверки» справа вверху. 3. Укажите нужный период и нажмите «Сформировать PDF». Акт сверки будет создан и загружен на ваше устройство. ![A6a5795c Cc0e 4161 8a6a 3e521405dc73](https://content.timeweb.com/assets/3a24b803-b9cd-4dee-aad1-03f41da76392?width=1217&height=869) ## Акт сверки в панели управления В панели управления вы можете сформировать акт сверки в разделе «Баланс и платежи» → «**Документы**». Для этого кликните на «Сформировать» в пункте «Сформировать акт сверки». ![A674e12c A391 4c5b 9a8b 2cd9b4aa5c21](https://content.timeweb.com/assets/1f51cda4-db5b-4c36-87f9-889a94d3c518.png?width=1535&height=983) Далее вы сможете выбрать плательщика и период для сверки. Для получения электронной версии акта сверки в строке «Тип документа» выберите вариант «Электронная копия» и нажмите на кнопку «Сформировать в PDF». Если вам необходимо получить оригинал документа с печатью и подписью нашей компании в строке «Тип документа» выберите вариант «Оригинал документа» и нажмите «Запросить оригинал акта». ## Содержание акта сверки - В поле **Дебет** отображается ваша оплата. - Поле **Кредит** содержит все акты оказанных услуг, выставленные компанией Timeweb Cloud. - **Конечное сальдо** в дебете показывает, на какую сумму наша компания должна еще предоставить услуги. - **Остаток по кредиту** говорит о том, что наша компания выставила актов на большую сумму чем было оплачено. # Договор Source: https://timeweb.cloud/docs/contract В соответствии с ГК РФ (п. 2 ст.437), ООО «ТАЙМВЭБ.КЛАУД» предоставляет свои сервисы и услуги на основании публичной оферты. В этом случае договор считается заключенным при выполнении клиентом действий, указанных в оферте (акцепте оферты). Текст оферты можно найти на [нашем сайте](https://timeweb.cloud/records). - [Заключение договора в письменной форме](https://timeweb.cloud/docs/contract/written-contract) - [Внесение изменений в договор](https://timeweb.cloud/docs/contract/contract-changes) # Заключение договора в письменной форме Source: https://timeweb.cloud/docs/contract/written-contract В соответствии с Гражданским кодексом РФ (п. 2, ст. 437) наша компания предоставляет свои сервисы и услуги **на основании публичной оферты**. В этом случае договор считается заключенным при выполнении клиентом действий, указанных в оферте (акцепте оферты). Другими словами, договор заключается в момент заказа сервиса / регистрации аккаунта — на соответствующем шаге вам требуется отметить свое согласие с условиями оферты. Если вам необходимо заключение письменного договора, форму договора можно найти на [нашем сайте](https://timeweb.cloud/records). Отправить договор можно через систему [электронного документооборота](https://timeweb.cloud/docs/electronic-document-management). Дату и номер в договоре указывать не нужно. Эта информация заполняется нами при получении договора. Договор является типовым. Мы не сможем подписать его, если с вашей стороны были внесены не согласованные заранее изменения. Для внесения корректировок в договор свяжитесь с нашей службой поддержки. Если для подписания договора вам необходимы копии учредительных документов нашей компании или коммерческие предложения, вы можете запросить их в поддержке. # Внесение изменений в договор Source: https://timeweb.cloud/docs/contract/contract-changes Если вы хотите внести изменения в договор (исправить допущенные ошибки в реквизитах, изменить условия сотрудничества), вам необходимо связаться со службой поддержки. Изменения вносятся в договор путем подписания Дополнительного соглашения. Дополнительное соглашение составляется к уже имеющемуся у клиента договору. После обсуждения изменений и составления текста дополнительного соглашения его будет необходимо подписать электронной подписью с вашей стороны и отправить в ООО «ТАЙМВЭБ.КЛАУД» через [оператора ЭДО](https://timeweb.cloud/docs/electronic-document-management). # Электронный документооборот Source: https://timeweb.cloud/docs/electronic-document-management Электронный документооборот (ЭДО) — это система работы с юридическими и финансовыми документами, при которой вместо бумажных оригиналов документов используются их электронные аналоги, заверенные цифровой электронной подписью. По текущему законодательству созданные и подписанные таким образом электронные документы приравниваются к оригиналам и принимаются к рассмотрению в различных органах, в том числе ИФНС, Социальном фонде, в судах и пр. Используя ЭДО, вы можете не только предоставлять отчетность в ИФНС в электронном виде, но также и обмениваться финансовыми и юридическими документами с партнерами и контрагентами. ## Как перейти на ЭДО Для того, чтобы получать оригиналы отчетных и иных документов от Timeweb Cloud через ЭДО, вам необходимо: 1. [Включить получение документов через ЭДО в панели управления](https://timeweb.cloud/docs/accounting-documents/receiving-accounting-documents#poluchenie-dokumentov-cherez-ehdo); 2. [Зарегистрировать учетную запись в системе Saby (СБИС)](https://timeweb.cloud/docs/electronic-document-management/registration-in-sbis) или подключить роуминг по инструкции ниже. ## Если вы уже работаете с ЭДО Если вы уже работаете с каким-либо оператором ЭДО, вы можете настроить роуминг для получения документов. Для подключения к роумингу направьте приглашение со стороны вашего оператора ЭДО и далее напишите нам из панели управления или на e-mail: [billing@timeweb.cloud](mailto:billing@timeweb.cloud), чтобы мы могли завершить настройку. Наши данные для отправки приглашения: > [!NOTE] > ООО «ТАЙМВЭБ.КЛАУД» > > ИНН: 7810945525 > > КПП: 168301001 > > Оператор Saby, идентификатор 2BE78a827d5b760422bad51883ea9a03790 Либо пришлите ваш идентификатор на [billing@timeweb.cloud](mailto:billing@timeweb.cloud), и мы отправим приглашение со своей стороны. Идентификатор для отправки приглашения должен быть указан без дополнительных пробелов и тире, чтобы приглашение было обработано корректно. > [!NOTE] > Обратите внимание, пожалуйста, что мы не отслеживаем комментарии к документам, которые отправляются по ЭДО. По любым вопросам о документах необходимо обращаться в нашу службу поддержки. # Регистрация в системе Saby (СБИС) Source: https://timeweb.cloud/docs/electronic-document-management/registration-in-sbis Мы используем систему электронного документооборота Saby (ранее — СБИС), предоставляемую оператором «Тензор». Для обмена электронными документами вам необходимо иметь учетную запись в данной системе. Если вы планируете использовать СБИС только для получения отчетных документов, работа с системой будет для вас бесплатной. **Обратите внимание**, пожалуйста, что по любым вопросам по предоставляемым документам необходимо обращаться в нашу службу поддержки; мы не отслеживаем получение комментариев в системе Saby. > [!NOTE] > Если **вместо Saby вы работаете с другим оператором ЭДО**, вы можете подключиться к роумингу для дальнейшего обмена документами с нашей компанией. > > Для этого вам необходимо отправить заявку из панели управления аккаунтом или по e-mail [billing@timeweb.cloud](mailto:billing@timeweb.cloud). В заявке укажите наименование вашей компании, ее ИНН, КПП и идентификатор. Пройти регистрацию в системе Saby можно на [официальном сайте](https://sso.saby.ru/auth-online/online.saby.ru/?ret=online.saby.ru/) или используя ссылки из письма-приглашения, отправленного в ваш адрес со стороны Timeweb Cloud. Подробные инструкции по регистрации можно найти в [Базе знаний Saby](https://saby.ru/help/start/reg_sys). 1. Выберите способ регистрации: по телефону, емейлу, электронной подписи, временному логину, через Госуслуги или соцсети. 2. При регистрации по электронной подписи вставьте носитель с электронной подписью в компьютер и нажмите «По электронной подписи». Если носитель содержит более одной подписи, вам будет предложено выбрать нужную. 3. Заполните необходимые данные, следуя форме регистрации для выбранного способа. Для работы с электронными документами необходима цифровая электронная подпись. В личном кабинете в системе Saby вы можете зарегистрировать уже имеющуюся подпись, продлить ее, а также оформить заявку на выпуск новой подписи. Подробнее [в Базе знаний Saby](https://saby.ru/help/ep). # Получение электронных документов от Timeweb Cloud Source: https://timeweb.cloud/docs/electronic-document-management/receiving-electronic-documents Для получения отчетных документов от Timeweb в электронном виде, вам необходимо: 1. выбрать ЭДО в качестве желаемого способа получения документов, как описано ниже; 2. подключиться к нашему оператору ЭДО (Saby, он же СБИС) или [подключить роуминг](https://timeweb.cloud/docs/electronic-document-management/registration-in-sbis). ## Выбор способа получения документов Чтобы настроить получение документов: 1. В разделе «Баланс и платежи» перейдите на вкладку «Документы». 2. Нажмите «Настроить» в строке «Получение оригиналов документов». ![Ba6aa9a6 4bed 49ee 99d0 B20a5d6c6398](https://content.timeweb.com/assets/6abe86f6-6608-4658-ae2e-ee5f175c19af.png?width=1535&height=983) 3. В открывшемся окне выберите вариант «ЭДО» и нажмите «Сохранить». При выборе этого способа вы будете получать отчетные документы ежемесячно с помощью системы электронного документооборота. # Отправка электронных документов в Timeweb Cloud Source: https://timeweb.cloud/docs/electronic-document-management/sending-electronic-documents С помощью ЭДО вы можете не только получать отчетные документы, но и направлять оригиналы документов нам. Это могут быть договоры или заявления, которые требуются для различных процедур, например: - редактирование идентификационных данных администратора; - отказ от домена; - смена администратора. Обратите внимание, что для подписи и отправки документов по ЭДО требуется квалифицированная электронная подпись (КЭП), простая электронная подпись (ПЭП) в этом случае не подойдет. Подробнее об электронных подписях — в документации [Saby](https://saby.ru/help/ep) и [Контур.Диадок](https://www.diadoc.ru/docs/faq/faq-159). ## Отправка через Saby На текущий момент функционал отправки документов по ЭДО доступен **только для ИП и юридических лиц**. Если вы сотрудничаете с нами как физическое лицо и у вас есть возможность обмениваться документами по ЭДО, пожалуйста, напишите нам из панели управления или на e-mail: [billing@timeweb.cloud](mailto:billing@timeweb.cloud). Чтобы отправить документ, необходимо: 1. Зарегистрировать аккаунт в системе Saby (если вы пока не работаете с ЭДО) или настроить роуминг (если вы работаете с другим оператором ЭДО). - - Зарегистрироваться в Saby можно по [инструкции на сайте Saby](https://saby.ru/help/start/reg_sys). - Для настройки роуминга необходимо отправить заявку из панели управления аккаунтом или по e-mail [billing@timeweb.cloud](mailto:billing@timeweb.cloud). В заявке укажите наименование вашей компании, ее ИНН, КПП и идентификатор. 2. Создать, подписать и отправить документ по [инструкции на сайте Saby](https://saby.ru/help/edo/make_doc). 3. Оповестить нас об отправке документа через обращение из панели управления. ## Отправка через Контур.Диадок Отправка документов доступна как для юридических, так и для физических лиц. ### Для юридических лиц Для отправки документа необходимо: 1. [Подключиться](https://www.diadoc.ru/docs/faq/faq-189) к системе Контур.Диадок или настроить [роуминг](https://www.diadoc.ru/roaming) (если вы работаете с другим оператором ЭДО). Роуминг подключается оператором по вашему обращению. - - Для настройки роуминга необходимо отправить заявку из панели управления аккаунтом или по e-mail [billing@timeweb.cloud](mailto:billing@timeweb.cloud). В заявке укажите наименование вашей компании, ее ИНН и КПП, наименование оператора, к которому уже подключена компания, и контакты лица (ФИО и номер телефона), ответственного за электронный документооборот в вашей организации. 2. Добавить ТАЙМВЭБ.КЛАУД к своим [контрагентам](https://www.diadoc.ru/docs/faq/faq-192). 3. Создать, подписать и отправить документ по [инструкции](https://www.diadoc.ru/docs/faq/faq-193). 4. Оповестить нас об отправке документа через обращение из панели управления. ### Для физических лиц Все шаги от регистрации в системе до подписания и отправки документа подробно описаны в [инструкции Контур.Диадок](https://support.kontur.ru/diadoc/40429-kak_fizlicu_podpisat_dokumenty_v_diadoke). После отправки документа сообщите нам об этом через обращение из панели управления. # Учредительные документы Source: https://timeweb.cloud/docs/uchreditelnye-dokumenty - [Карточка ООО «ТАЙМВЭБ.КЛАУД»](https://content.timeweb.com/assets/26ee43e4-9cd9-433c-8980-e30d61a7c309.pdf?download) - [Свидетельство ОГРН](https://content.timeweb.com/assets/4073d1fe-6a96-4d4d-bf81-9ddc7280411e?download) - [Устав ООО «ТАЙМВЭБ.КЛАУД»](https://content.timeweb.com/assets/c3077c43-b8e8-4fa0-b9a0-c415a40e436b.pdf?download) - [Свидетельство о регистрации Платформы в Реестре программ для ЭВМ](https://content.timeweb.com/assets/cdd928ec-13d7-4358-a6a2-8a815b634929?download) > [!NOTE] > Если у вас возникнут вопросы или потребуются иные документы — [свяжитесь с поддержкой](https://timeweb.cloud/my/support/help-question). # Справка о местоположении сервера Source: https://timeweb.cloud/docs/server-location-certificate Справка о местоположении сервера подтверждает, что сервер, на котором размещен ваш проект, находится на территории Российской Федерации. Справка содержит сведения об IP-адресе сервера и фактическом адресе его размещения. Такой документ может потребоваться при регистрации проекта в Роскомнадзоре, внесении программного обеспечения в реестр российского ПО Минцифры, отчетности перед иными регуляторами, для участия в закупках и т.д. > [!NOTE] > Получить справку можно для облачных серверов, выделенных серверов и облачных сервисов **с российскими IP-адресами**. ## Оформление справки 1. Перейдите в раздел «Баланс и платежи» и откройте вкладку [«Документы»](https://timeweb.cloud/my/documents). 2. Нажмите «Получить» в строке «Справка о местоположении сервера». ![Баланс 1 178 ₽ 06 25 2026 08 40 Am](https://content.timeweb.com/assets/6bacabf6-4c0f-4928-a0e3-ad7b771b76ba.png?width=1574&height=798) 5. В открывшемся окне выберите один или несколько IP-адресов, для которых нужно получить справку. Документ будет содержать информацию по всем выбранным адресам. 6. Проверьте данные владельца аккаунта. Они будут указаны в справке. Все поля формы должны быть заполнены. - Если данные неверны, измените их в настройках аккаунта: на вкладке [«Информация»](https://timeweb.cloud/my/account) нажмите «Изменить» в строке «Личные данные» и внесите правки. 8. Установите флажок «Данные верны». 9. Нажмите «Выписать справку». Начнется формирование справки. Когда документ будет готов, он загрузится на ваше устройство автоматически. ![Справка О Местоположении Сервера 06 25 2026 08 41 Am](https://content.timeweb.com/assets/4ba2128b-09bc-4589-8bf6-01d1f9364c91.png?width=1574&height=1157) ## Просмотр выданных справок Вы можете просмотреть список выданных справок и повторно скачать их в своей панели управления. 1. Перейдите в раздел «Баланс и платежи» и откройте вкладку [«Документы»](https://timeweb.cloud/my/documents). 2. Кликните «Просмотр» в блоке «Ранее выданные справки». ![Баланс 1 178 ₽ 06 25 2026 08 43 Am](https://content.timeweb.com/assets/87e0ce96-6d80-4fbf-897c-53117a61d68c.png?width=1576&height=794) 3. Чтобы скачать справку, наведите курсор на нужную справку и кликните на «PDF». Файл будет загружен на ваше устройство. ![Ранее Выданные Справки 06 25 2026 08 43 Am](https://content.timeweb.com/assets/af18f368-5f78-42a1-835b-47ecdb19eaff.png?width=1584&height=797) # Подтверждение статуса налогового резидента РФ Source: https://timeweb.cloud/docs/podtverzhdenie-statusa-nalogovogo-rezidenta-rf - [Документ, подтверждающий статус налогового резидента, Азербайджан, 2026.pdf](https://content.timeweb.com/assets/b0be0585-36b6-4a1e-94e8-4edf2dd27e6e?download) - [Документ, подтверждающий статус налогового резидента, Армения, 2026.pdf](https://content.timeweb.com/assets/49a55c1c-7b80-48f0-b84b-5d24eee73f03?download) - [Документ, подтверждающий статус налогового резидента, Беларусь, 2026.pdf](https://content.timeweb.com/assets/cda17fa7-0ede-487e-a69b-9ac6af02a2c0?download) - [Документ, подтверждающий статус налогового резидента, Казахстан, 2026.pdf](https://content.timeweb.com/assets/a792072c-1d2c-4bbd-974d-41468bd88090?download) - [Документ, подтверждающий статус налогового резидента, Кыргызстан, 2026.pdf](https://content.timeweb.com/assets/dec2ed16-c599-4616-be37-79a007217019?download) - [Документ, подтверждающий статус налогового резидента, Литва, 2026.pdf](https://content.timeweb.com/assets/83f9e495-1991-4315-9a04-2a4ef5888a58?download) - [Документ, подтверждающий статус налогового резидента, Молдова, 2026.pdf](https://content.timeweb.com/assets/61e339c7-f3f0-4198-904e-5b285aa58d9c?download) - [Документ, подтверждающий статус налогового резидента, Польша, 2026.pdf](https://content.timeweb.com/assets/2a891ae8-89fd-4f3e-bb6d-aedfb671c8a2?download) - [Документ, подтверждающий статус налогового резидента, Турция, 2026.pdf](https://content.timeweb.com/assets/eb43f67c-92c5-4ce2-8ae3-039bb5eb06fc?download) - [Документ, подтверждающий статус налогового резидента, Узбекистан, 2026.pdf](https://content.timeweb.com/assets/c155ea65-b132-4055-b7f5-f3f65f3d1bff?download) - [Документ, подтверждающий статус налогового резидента, Чехия, 2026.pdf](https://content.timeweb.com/assets/c85f0e34-83b0-47f5-9532-ae8663eaf30e?download) # Результаты проведения специальной оценки условий труда Source: https://timeweb.cloud/docs/rezultaty-provedeniya-specialnoj-ocenki-uslovij-truda - [Перечень рекомендуемых мероприятий по улучшению условий труда, 2023 г.](https://content.timeweb.com/assets/76254084-51e6-45ac-9ff5-1f28160fc2d7?download) - [Сводная ведомость результатов проведения специальной оценки условия труда, 2023 г.](https://content.timeweb.com/assets/025135a9-303a-4ff3-a688-6944b60aa415?download) # Работа с аккаунтом Timeweb Cloud Source: https://timeweb.cloud/docs/account-management - [Регистрация на сайте и создание аккаунта](https://timeweb.cloud/docs/account-management/creating-account) - [Восстановление доступа к панели управления](https://timeweb.cloud/docs/account-management/access-restore) - [Смена пароля](https://timeweb.cloud/docs/account-management/password-change) - [Редактирование данных в профиле, смена владельца аккаунта](https://timeweb.cloud/docs/account-management/changing-profile) - [Двухфакторная аутентификация](https://timeweb.cloud/docs/account-management/two-factor-authentication) - [Авторизация с помощью Passkey](https://timeweb.cloud/docs/account-management/passkey) - [Уведомления](https://timeweb.cloud/docs/account-management/notifications) - [Управление аккаунтом при помощи Telegram](https://timeweb.cloud/docs/account-management/telegram-bot) - [Ограничение доступа в ПУ](https://timeweb.cloud/docs/account-management/restricting-access) - [Логи входа в ПУ и управление сессиями](https://timeweb.cloud/docs/account-management/authorization-logs) - [Привязка аккаунтов](https://timeweb.cloud/docs/account-management/connecting-accounts) - [Токены API и Terraform](https://timeweb.cloud/docs/account-management/token) - [Обращение в поддержку](https://timeweb.cloud/docs/account-management/contact-support) - [Общая информация о безопасности](https://timeweb.cloud/docs/account-management/obshchaya-informaciya-o-bezopasnosti) - [Удаление аккаунта](https://timeweb.cloud/docs/account-management/delete-account-and-personal-data) # Регистрация на сайте и создание аккаунта Source: https://timeweb.cloud/docs/account-management/creating-account При заказе любого сервиса на сайте [Timeweb Cloud](https://timeweb.cloud/) для вас будет зарегистрирована учетная запись и создана панель управления по адресу [https://timeweb.cloud/my/](https://timeweb.cloud/my/), где вы сможете управлять выбранным сервисом и заказывать дополнительные. ## Регистрация аккаунта При регистрации необходимо указать: - Тип пользователя: физическое или юридическое лицо / ИП - Название компании (для юрлиц) - ФИО - Email - Контактный телефон Рекомендуем при регистрации указывать корректные имя и фамилию — без этих данных будет невозможно [восстановить доступ к аккаунту](https://timeweb.cloud/docs/account-management/access-restore), если он окажется утерян. После нажмите на кнопку «Зарегистрироваться», и вы будете переадресованы в свою панель управления. Мы отобразим ваш пароль от панели во всплывающем окне. Вы можете сохранить предложенный пароль или сразу задать собственный. > [!NOTE] > Обратите внимание: в целях безопасности мы не отправим вам этот пароль на email. ![8e928af7 5b68 486f B62b 3a81a85b8bdf](https://content.timeweb.com/assets/e39bc7de-077f-4f74-859c-058472b657e1?width=1451&height=891) # Восстановление доступа к панели управления Source: https://timeweb.cloud/docs/account-management/access-restore Если доступ к панели управления утерян, вы можете восстановить его по этой инструкции. ## Восстановление пароля 1. Зайдите на страницу авторизации [https://timeweb.cloud/my/login](https://timeweb.cloud/my/login). 2. Нажмите на ссылку «Забыли?» в поле для ввода пароля. 3. Введите логин аккаунта или доменное имя. Ссылка для восстановления доступа будет отправлена на контактный e-mail, который был указан при регистрации аккаунта. ## Смена e-mail В случае, если доступ к контактному e-mail утерян, вы можете изменить его на другую электронную почту. Для этого выполните описанные ниже действия. ### **Для юридических лиц** Направьте запрос на смену e-mail в службу поддержки по e-mail [info@timeweb.cloud](mailto:info@timeweb.cloud), приложив к нему документы: - [скан-копию заявления](https://content.timeweb.com/assets/958514bf-1492-4ea0-bba7-05424984876f?download) с печатью и подписью уполномоченного лица (генерального директора или лица, имеющего доверенность на право подписи); - скан-копию свидетельства ИНН и ОГРН (либо листа записи о регистрации). ### **Для физических лиц** Для смены e-mail нам потребуется верифицировать владельца аккаунта. Верификация происходит в два этапа: 1. Запрос на смену e-mail. Отправьте запрос на ящик [info@timeweb.cloud](mailto:info@timeweb.cloud), укажите в нем новый емейл и прикрепите фото владельца аккаунта с паспортом (со страницей с основными данными и фотографией). ФИО владельца должны совпадать с данными, указанными в аккаунте. 2. Видеозвонок в [talk.timeweb.com](https://talk.timeweb.com/). Для подключения к звонку достаточно перейти по ссылке-приглашению, которую мы отправим перед встречей. В запросе на смену e-mail вы можете сразу указать удобное время для видеозвонка — часовой промежуток по московскому времени; например, с 16 до 17 часов. Видеозвонок можно провести в будние дни с 09:00 до 18:00 по Москве. В указанное время сотрудник свяжется с владельцем аккаунта и пришлет ссылку на встречу. Процедура займет не более 5 минут. Перед созвоном убедитесь, пожалуйста, что на видео вас будет хорошо видно и паспортные данные будут читаемы. # Смена пароля Source: https://timeweb.cloud/docs/account-management/password-change Вы можете в любой момент изменить пароль доступа в панель управления аккаунтом. Чтобы сохранить свои данные в безопасности, мы рекомендуем менять пароль как минимум 1 раз в год. Для смены пароля: 1. Нажмите на логин аккаунта слева внизу и перейдите в раздел «Настройки аккаунта». ![Переход в настройки аккаунта](https://content.timeweb.com/assets/26c26607-93bd-4027-976c-6528a282af69.png?width=1571&height=861) 2. На вкладке «Безопасность и вход» кликните «Изменить» в блоке с паролем. ![Безопасность и вход](https://content.timeweb.com/assets/fec80d98-bc8e-4e4f-a4fe-94e584fe001b.png?width=1571&height=867) 3. Укажите старый пароль и введите или сгенерируйте новый. В качестве пароля вы можете использовать комбинацию из 8-30 знаков, состоящую из букв латинского алфавита, цифр и спецсимволов. 4. Нажмите «Изменить». Пароль изменен. [Все сессии](https://timeweb.cloud/docs/account-management/authorization-logs#upravlenie-aktivnymi-sessiyami), кроме текущей, будут завершены. # Изменение данных в профиле, смена владельца аккаунта Source: https://timeweb.cloud/docs/account-management/changing-profile Вы можете самостоятельно менять данные в профиле аккаунта, в том числе, менять основной контактный e-mail и владельца аккаунта (однако если вы являетесь клиентом интегратора, для смены данных в профиле аккаунта необходимо обратиться к интегратору). > [!NOTE] > Для внесения изменений нужен доступ к текущему контактному емейлу аккаунта. Если он недоступен, измените его по [этой инструкции](https://timeweb.cloud/docs/account-management/access-restore#smena-e-mail). Для смены данных выполните следующее: 1. Кликните на логин слева внизу и перейдите в раздел «Настройки аккаунта». 2. На вкладке «Информация» кликните «Изменить» у «Личных данных». 3. Укажите необходимые сведения и нажмите «Сохранить». На основной контактный e-mail аккаунта будет отправлена ссылка для подтверждения. 4. Перейдите по ссылке, после чего данные будут изменены. > [!NOTE] > Смена данных **владельца** аккаунта не означает смену данных **плательщика**. Для изменения данных плательщика воспользуйтесь нашей [инструкцией](https://timeweb.cloud/docs/service-payments/adding-new-payer). # Двухфакторная аутентификация Source: https://timeweb.cloud/docs/account-management/two-factor-authentication Для повышения безопасности вы можете включить двухфакторную аутентификацию. В этом случае для входа в панель управления помимо ввода логина и пароля будет необходимо дополнительно ввести проверочный код. Мы предлагаем несколько методов двухфакторной аутентификации, и вы можете выбрать удобный способ получения проверочного кода: - по смс; - через Telegram или Макс; - по email; - с помощью приложений-аутентификаторов, таких как Google Authenticator, 1Password, Authy и т.д. > [!NOTE] > Если у вас настроена [авторизация с помощью Passkey](https://timeweb.cloud/docs/account-management/passkey), двухфакторная аутентификация не будет работать, даже если она включена. Для включения двухфакторной аутентификации: 1. Кликните на логин аккаунта слева внизу и перейдите в раздел «Настройки аккаунта». 2. На вкладке «Безопасность и вход» привяжите номер телефона, аккаунт Телеграм или приложение-аутентификатор. ![2FA](https://content.timeweb.com/assets/a7bee4d4-b91e-486d-b2e2-da4e47141a93.png?width=1111&height=651) 3. В пункте «Предпочитаемый метод» выберите нужный способ получения кода. Вы сможете в любой момент изменить способ получения кода, выбрав другой метод, либо отключить двухфакторную аутентификации совсем. В последнем случае потребуется ввести проверочный код, полученный текущим выбранным методом. # Авторизация с помощью Passkey Source: https://timeweb.cloud/docs/account-management/passkey Для удобного и безопасного входа в панель управления Timeweb Cloud вы можете настроить авторизацию в панель с помощью технологии Passkey. В этом случае при входе в панель с вашего устройства (компьютера, смартфона, планшета) вместо ввода логина и пароля будет использоваться авторизация с помощью биометрических данных, зашифрованных открытым ключом, например: - сканирование отпечатка пальца; - сканирование лица; - ввод пин-кода или пароля. Конкретный метод зависит от возможностей вашего устройства, используемого ПО и ваших предпочтений при настройке. > [!NOTE] > Биометрические данные хранятся только на ваших устройства и никуда не передаются. Авторизация через Passkey недоступна для [дополнительных пользователей](https://timeweb.cloud/docs/iam/upravlenie-polzovatelyami) аккаунта. ## Подключение авторизации через Passkey Чтобы настроить авторизацию в панель с помощью Passkey: 1. [Авторизуйтесь в панели управления](https://timeweb.cloud/my/login) как обычно: с помощью логина и пароля или через соцсети. 2. Кликните на логин слева внизу и перейдите в раздел «[Настройки аккаунта](https://timeweb.cloud/my/account)». 3. На вкладке «Безопасность и вход» кликните «Управлять» в блоке «Авторизация через Passkey». 4. Нажмите «Привязать устройство» или «Привязать аппаратный ключ». Если вы привязываете аппаратный ключ, система предложит подключить USB-устройство с ключом. Если вы привязываете устройство, откроется интерфейс настройки Passkey вашего устройства. Это может быть ПИН-код, FaceID, TouchID и др. Доступные методы будут зависеть от вашего устройства и используемого ПО. При сохранении Passkey в «Google Менеджере паролей» учитывайте, что использовать этот способ входа вы сможете, только когда авторизованы в своем Google-аккаунте. Для сохранения Passkey в Windows у вас должен быть настроен хотя бы один из способов входа Windows Hello: PIN, распознавание лица или распознавание отпечатка. 5. После успешной настройки вы увидите сообщение «Устройство привязано», а ваше устройство отобразится в списке привязанных устройств в панели управления. ![Елена 04 17 2026 12 52 Pm](https://content.timeweb.com/assets/b8777e52-242d-499b-81da-35f3b09333df.png?width=656&height=465) При последующих входах в панель управления с этого устройства мы будем по умолчанию предлагать авторизацию через Passkey. При этом вы всегда сможете выбрать другой способ авторизации. > [!NOTE] > Если для устройства настроена авторизация через Passkey, двухфакторная аутентификация для входа в панель (отправка кодов в смс или Телеграм) не будет применяться, даже если она включена в панели. ## Как входить в панель через Passkey? Все очень просто: [при логине](https://timeweb.cloud/my/login) достаточно выбрать способ входа через Passkey, после чего авторизоваться выбранным методом — например, ввести пин-код или отсканировать отпечаток пальца. ## Как отвязать устройство? Любое из устройств, для которого настроена авторизация через Passkey, можно отвязать в пару кликов: 1. Войдите в панель управления с любого из привязанных устройств. 2. Кликните на логин слева внизу и перейдите в раздел «[Настройки аккаунта](https://timeweb.cloud/my/account)». 3. В блоке «Авторизация через Passkey» кликните «Управлять». 4. Кликните на три точки справа от нужного устройства и нажмите «Удалить». 5. Подтвердите удаление. ![95070284 F7e9 4305 A052 4458994f86bd](https://content.timeweb.com/assets/911c4d76-9a79-4fbe-83f4-ea15b026d787?width=1695&height=869) Вы всегда сможете заново настроить авторизацию через Passkey для этого устройства. ## Почему нет кнопки «Привязать устройство»? Опция привязки устройства недоступна для дополнительных пользователей. Если вы входите под основным пользователем, но в «Настройках аккаунта» нет опции «Привязать устройство», значит, для этого устройства Passkey уже настроен. Чтобы привязать другое устройство, необходимо войти в панель управления с нужного устройства, авторизовавшись стандартным способом, а затем настроить Passkey в «Настройках аккаунта». ## Почему я получаю ошибку авторизации? При попытке логина через Passkey может выдаваться ошибка вида: ![Image5](https://content.timeweb.com/assets/2e44c2d2-eb53-426d-8f2e-454b1bdf2d67?width=1400&height=852) Причин этому может быть несколько. 1. **Для этого устройства еще не настроена авторизация через Passkey.** Войдите в панель другим способом (через логин-пароль или с помощью соцсети), а затем настройте Passkey для этого устройства в «Настройках аккаунта». 2. **Вы вводите неверный пин-код или пароль.** Проверьте вводимые данные. Если вы не помните пинкод, можно отвязать устройство и после настроить Passkey заново. Для этого войдите в панель любым другим способом (через логин-пароль или с помощью соцсети). 3. **На устройстве не работает функция распознавания лица или отпечатка.** Необходимо устранить проблему на устройстве. 4. **В процессе авторизации вы нажали «Отмена» на устройстве вместо ввода Passkey (ввода пин-кода, сканирования отпечатка и пр.).** Кликните «Попробовать повторно» и пройдите процедуру авторизации заново. # Уведомления Source: https://timeweb.cloud/docs/account-management/notifications Подключить и настроить информирование по email, смс или через мессенджеры Telegram и Макс можно в разделе «Настройки аккаунта» → «Уведомления». ![06 10 2026 09 31 Am 06 10 2026 09 32 Am](https://content.timeweb.com/assets/f56ba736-753b-41b9-948f-ef69b3cf356f.png?width=1419&height=803) ## Подключение номера телефона Чтобы привязать номер телефона к аккаунту: 1. Перейдите в раздел «Настройки аккаунта» — «Уведомления». 2. Кликните «Добавить» в блоке «Номер телефона». 3. Введите номер телефона в формате 89xxxxxxxxx и нажмите «Получить код подтверждения». 4. На указанный номер придет код, введите его в этом же окне и нажмите «Привязать». ## Подключение Telegram или Макс Чтобы привязать аккаунт в мессенджере: 1. Перейдите в раздел «Настройки аккаунта» — «Уведомления». 2. Нажмите «Подключить» в блоке «Телеграм» или «Макс». 3. Отсканируйте QR-кода или перейдите по предложенной ссылке. Ваш аккаунт будет подключен. Отключить его будет можно здесь же. ## Выбор уведомлений После того, как номер или аккаунт в мессенджере привязан, выберите уведомления, которые вы хотите получать. ![06 10 2026 09 33 Am](https://content.timeweb.com/assets/255a9693-c667-4764-8cc4-142a043dee33.png?width=1573&height=1875) Уведомления распределены по тематическим блокам. ![Мониторинг 06 10 2026 09 34 Am](https://content.timeweb.com/assets/fa0adccb-5d13-4b43-a0cf-7f3d05df4fd0.png?width=1582&height=672) Уведомления по смс доступны только для некоторых событий (например, в биллинге и управлении серверами). Для части событий включены email-уведомления по умолчанию, которые не могут быть отключены. ## Уведомления при удалении сервисов Перед [удалением сервера](https://timeweb.cloud/docs/cloud-servers/manage-servers/delete-server) или любого облачного сервиса мы запросим у вас подтверждение одним из способов: - ввести имя удаляемого сервиса; - ввести код подтверждения из Telegram или Макс. По умолчанию мы будем запрашивать ввод имени удаляемого сервиса. Чтобы вместо этого удалять по кодам подтверждения через мессенджер, сделайте следующее: 1. [Подключите Telegram или Макс](https://timeweb.cloud/docs/account-management/notifications#podkluchenie-telegram-ili-maks). 2. В разделе «Настройки аккаунта» — «Уведомления» перейдите в блок «Безопасность». 3. Включите оповещение через удобный мессенджер для опции «Подтверждение удаления сервисов». ![Безопасность 06 10 2026 09 35 Am](https://content.timeweb.com/assets/6f4089d2-4bdd-4dc2-b3ae-b7d5d9478e01.png?width=1577&height=628) ### Отключение уведомлений при удалении сервисов через API Если вы работаете с нашими сервисами через API, вы можете отключить подтверждение удаления через Telegram для конкретного токена вместо того, чтобы отключать эту опцию безопасности для всего аккаунта в целом. Чтобы это сделать: 1. Перейдите в раздел [API и Terraform](https://timeweb.cloud/my/api-keys). 2. Кликните на три точки у нужного токена и выберите «Редактировать». 3. Отметьте опцию «Удалять сервисы по API без кода в Телеграме». 4. Сохраните изменения. ![Изменить Токен 05 29 2026 12 17 Pm](https://content.timeweb.com/assets/9d3a9db2-34d3-4315-9190-541dffc8a007.png?width=1568&height=712) # Вебхук-уведомления Source: https://timeweb.cloud/docs/account-management/webhook-notification - [Настройка вебхук-уведомлений](https://timeweb.cloud/docs/account-management/webhook-notification/configure-webhooks) - [События безопасности](https://timeweb.cloud/docs/account-management/webhook-notification/security-events) - [События биллинга](https://timeweb.cloud/docs/account-management/webhook-notification/billing-events) - [События облачных серверов](https://timeweb.cloud/docs/account-management/webhook-notification/cloud-server-events) - [События баз данных](https://timeweb.cloud/docs/account-management/webhook-notification/database-events) - [События S3-хранилища](https://timeweb.cloud/docs/account-management/webhook-notification/s3-events) - [События лицензий](https://timeweb.cloud/docs/account-management/webhook-notification/license-events) - [События доменов](https://timeweb.cloud/docs/account-management/webhook-notification/domain-events) - [События SSL-сертификатов](https://timeweb.cloud/docs/account-management/webhook-notification/ssl-events) - [События идей и комментариев](https://timeweb.cloud/docs/account-management/webhook-notification/idea-comment-events) - [События AI-агентов](https://timeweb.cloud/docs/account-management/webhook-notification/ai-agent-events) # Настройка вебхук-уведомлений Source: https://timeweb.cloud/docs/account-management/webhook-notification/configure-webhooks Вебхук — это способ автоматически отправлять уведомления во внешний сервис при наступлении определенного события. Вместо того чтобы вручную проверять изменения в панели управления или периодически опрашивать API, система сама отправляет POST-запрос на указанный вами URL. Такой формат удобно использовать для интеграции с: - внутренними сервисами; - корпоративными чатами; - системами мониторинга; - helpdesk-платформами; - собственными сценариями автоматизации. Например, вы можете автоматически получать уведомления о списаниях, окончании срока действия SSL-сертификата или событиях безопасности. ## Как работают уведомления через вебхуки После настройки вебхука при наступлении выбранного события сервис отправляет HTTP POST-запрос на указанный URL-адрес. Для успешной доставки обработчик должен: - быть доступен из интернета по публичному URL; - иметь валидный SSL-сертификат; - принимать POST-запросы; - возвращать HTTP-код 2xx. Если конечная точка недоступна или возвращает ошибку, уведомление считается недоставленным. Для аккаунта можно создать до 20 вебхуков. Для каждого вебхука отдельно выбираются категории уведомлений: - Безопасность - Биллинг - Облачные сервисы - Базы данных - S3 - Лицензии - Домены - SSL-сертификаты - Идеи и комментарии - AI-агенты - Остальное Это позволяет направлять разные типы событий в разные системы. Например, уведомления о биллинге можно направлять в бухгалтерию, события безопасности — в SIEM-систему, а инфраструктурные уведомления — в чат команды DevOps. ## Настройка вебхуков Для настройки вебхуков перейдите в раздел «Уведомления» панели управления аккаунтом и нажмите кнопку «Настроить» напротив строки «Вебхуки». ![06 10 2026 09 46 Am](https://content.timeweb.com/assets/b034a95d-3916-4fc9-9a23-27a79e8d2530.png?width=1416&height=813) В открывшемся окне укажите: - имя вебхука; - URL обработчика; - при необходимости — ключ подписи; - категории уведомлений. Для проверки адреса можно использовать кнопку «Отправить тест». ## Ключ для подписи заголовков Ключ подписи используется не для шифрования данных, а для проверки подлинности запроса. Без проверки любой пользователь может отправить POST-запрос на ваш URL, имитируя уведомление. Если на такие события завязаны автоматические действия, злоумышленник сможет запускать их вручную. Чтобы избежать этого, запрос подписывается с использованием вашего секретного ключа. В результате вместе с уведомлением передается специальный заголовок с цифровой подписью. Ваш обработчик может проверить ее и убедиться, что запрос действительно отправлен сервисом, а содержимое не было изменено. В качестве ключа можно использовать любую строку, однако рекомендуется использовать случайное значение достаточной длины. Для генерации ключа можно выполнить команду: ```bash openssl rand -base64 32 ``` Пример результата: ```bash K1nL9sVx3Qp8mRzY2uT7cAaB0eHkLmNoPqRsTuVw= ``` ### Пример использования подписи При получении вебхук-запроса необходимо взять тело запроса в исходном виде, вычислить для него подпись с использованием заданного ключа и сравнить результат со значением из заголовка `X-Timeweb-Cloud-Signature`. Если значения совпадают, запрос можно считать подлинным. Важно использовать тело запроса в исходном строковом виде. Даже незначительные изменения форматирования JSON (например, пробелы или переносы строк) приведут к несовпадению подписи. Пример проверки подписи на Node.js: ```js import crypto from 'crypto'; function verifyWebhookSignature(rawBody, secret, signatureHeader) { if (!signatureHeader?.startsWith('sha256=')) { return false; } const receivedSignature = signatureHeader.slice('sha256='.length); const expectedSignature = crypto .createHmac('sha256', secret) .update(rawBody, 'utf8') .digest('hex'); return crypto.timingSafeEqual( Buffer.from(receivedSignature, 'hex'), Buffer.from(expectedSignature, 'hex') ); } const rawBody = '{"event_group":"cloud_servers","event":"server_cloning","created_at":"2026-04-23T14:40:46.339Z","account_id":"nt94542","data":{"vds_id":7665237}}'; const secret = '9BjJ3WUEZNnNF/0fS969BC7Hqo66ro/uen5pTAQIh6I='; const signature = 'sha256=34f1ff761e625cb12b36b1775ebcc7fd77d93888876472542c93744e99f09bb2'; console.log(verifyWebhookSignature(rawBody, secret, signature)); ``` В примере вычисленная подпись совпадает со значением из заголовка, значит запрос не был изменен и действительно отправлен сервисом. Любое изменение тела запроса или использование другого ключа приведет к несовпадению подписи и результату `false`. ## Формат событий вебхуков Каждое уведомление отправляется в виде JSON-объекта. Все события содержат общие обязательные поля верхнего уровня: ```js { "event_group": "security", "event": "db_deletion_confirmation", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": {} } ``` Где: - `event_group` — группа события; - `event` — конкретный тип события; - `created_at` — дата и время создания уведомления в формате ISO 8601; - `account_id` — идентификатор аккаунта; - `data` — объект с дополнительными данными события. Содержание `data` зависит от типа уведомления. Описание событий каждой группы доступно в отдельных статьях: - [Безопасность](https://timeweb.cloud/docs/account-management/webhook-notification/security-events) - [Биллинг](https://timeweb.cloud/docs/account-management/webhook-notification/billing-events) - [Облачные сервисы](https://timeweb.cloud/docs/account-management/webhook-notification/cloud-server-events) - [Базы данных](https://timeweb.cloud/docs/account-management/webhook-notification/database-events) - [S3](https://timeweb.cloud/docs/account-management/webhook-notification/s3-events) - [Лицензии](https://timeweb.cloud/docs/account-management/webhook-notification/license-events) - [Домены](https://timeweb.cloud/docs/account-management/webhook-notification/domain-events) - [SSL-сертификаты](https://timeweb.cloud/docs/account-management/webhook-notification/ssl-events) - [Идеи и комментарии](https://timeweb.cloud/docs/account-management/webhook-notification/idea-comment-events) - [AI-агенты](https://timeweb.cloud/docs/account-management/webhook-notification/ai-agent-events) - [Остальные события](https://timeweb.cloud/docs/account-management/webhook-notification/other-events) # События безопасности Source: https://timeweb.cloud/docs/account-management/webhook-notification/security-events События этой группы относятся к операциям безопасности. ### Событие control_panel_login Новый вход в панель управления: ```js { "event_group": "security", "event": "control_panel_login", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "auth_log_id": 101 } } ``` Поля `data`: - `auth_log_id` — идентификатор записи журнала авторизации. # События биллинга Source: https://timeweb.cloud/docs/account-management/webhook-notification/billing-events События этой группы относятся к балансу аккаунта, оплате услуг, автоплатежам и ограничениям, связанным с задолженностью. ## Событие low_balance_info Низкий баланс аккаунта: ```js { "event_group": "billing", "event": "low_balance_info", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "hours_left": 18, "monthly_fee": 1490 } } ``` Поля `data`: - `hours_left` — количество часов до исчерпания средств. - `monthly_fee` — ежемесячная стоимость услуг. ## Событие account_blocked Блокировка аккаунта: ```js { "event_group": "billing", "event": "account_blocked", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "servers_will_be_deleted_at": "2026-02-20T00:00:00.000Z", "monthly_fee": 1490 } } ``` Поля data: - `servers_will_be_deleted_at` — дата и время удаления серверов при неоплате. - `monthly_fee` — ежемесячная стоимость услуг. ## Событие money_transfer Пополнение аккаунта: ```js { "event_group": "billing", "event": "money_transfer", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "balance": "5200.00", "money_replenished": "1000.00", "payment_type": "bank_card" } } ``` Поля `data`: - `balance` — баланс после пополнения. - `money_replenished` — сумма пополнения. - `payment_type` (опционально) — способ оплаты. ## Событие auto_payment_success Успешный автоплатеж: ```js { "event_group": "billing", "event": "auto_payment_success", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "balance": "5200.00", "money_replenished": "1000.00", "payment_type": "bank_card" } } ``` Поля `data`: - `balance` — баланс после успешного списания. - `money_replenished` — сумма автоплатежа. - `payment_type` (опционально) — способ оплаты. ## Событие auto_payment_error Ошибка автоплатежа: ```js { "event_group": "billing", "event": "auto_payment_error", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "balance": "120.00", "money_replenished": "1000.00", "payment_type": "bank_card" } } ``` Поля `data`: - `balance` — текущий баланс аккаунта. - `money_replenished` — сумма попытки автоплатежа. - `payment_type` (опционально) — способ оплаты. ## Событие data_will_be_deleted_soon Данные скоро будут удалены: ```js { "event_group": "billing", "event": "data_will_be_deleted_soon", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "days_before_deletion": "3", "monthly_fee": 1490 } } ``` Поля `data`: - `days_before_deletion` — количество дней до удаления данных. - `monthly_fee` — ежемесячная стоимость услуг. # События облачных серверов Source: https://timeweb.cloud/docs/account-management/webhook-notification/cloud-server-events События этой группы относятся к облачным серверам: использованию диска, резервному копированию, восстановлению и установке сервера. ## Событие server_disk_almost_filling_up Диск облачного сервера почти заполнен: ```js { "event_group": "cloud_servers", "event": "server_disk_almost_filling_up", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 67 } } ``` Поля `data`: - `vds_id` — идентификатор сервера. ## Событие server_disk_filling_up Диск облачного сервера заполнен: ```js { "event_group": "cloud_servers", "event": "server_disk_filling_up", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 67 } } ``` Поля `data`: - `vds_id` — идентификатор сервера. ## Событие server_backup_created Резервная копия сервера создана: ```js { "event_group": "cloud_servers", "event": "server_backup_created", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77 } } ``` Поля `data`: - `vds_id` — идентификатор сервера. ## Событие server_backup_creation_error Ошибка создания резервной копии сервера: ```js { "event_group": "cloud_servers", "event": "server_backup_creation_error", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77 } } ``` Поля `data`: - `vds_id` — идентификатор сервера. ## Событие server_restore_point_creation_error Ошибка создания точки восстановления сервера: ```js { "event_group": "cloud_servers", "event": "server_restore_point_creation_error", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77 } } ``` Поля `data`: - `vds_id` — идентификатор сервера. ## Событие server_install Облачный сервер установлен: ```js { "event_group": "cloud_servers", "event": "server_install", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77, "vds_password": "StrongPassword123", "admin_login": "root", "extra_fields": { "software_name": "WordPress", "software_params": { "ip_addr": "192.0.2.10", "password": "InstallPass123", "mysql_password": "MysqlPass123" } } } } ``` Поля `data`: - `vds_id` — идентификатор сервера. - `vds_password` — пароль сервера. - `admin_login` — имя администратора для входа. - `extra_fields` (опционально) — дополнительные параметры установленного ПО. Поля `extra_fields`: - `software_name` (опционально) — название установленного программного обеспечения. - `software_params` (опционально) — дополнительные параметры установленного ПО. Возможные поля `software_params`: - `ip_addr` — IP-адрес. - `password` — пароль. - `cp_mysql_password` — пароль MySQL панели управления. - `mailman` — параметры Mailman. - `ispconfig` — параметры ISPConfig. - `mysql_password` — пароль MySQL. - `fp_password` — пароль FastPanel. - `ipsec` — параметры IPsec. - `psql_password` — пароль PostgreSQL. - `db_password` — пароль базы данных. - `admin_password` — пароль администратора. - `user_pwd` — пароль пользователя. - `mariadb_password` — пароль MariaDB. - `wg_password` — пароль WireGuard. - `neomsa_password` — пароль NeoMSA. ## Событие server_reinstall Облачный сервер переустановлен: ```js { "event_group": "cloud_servers", "event": "server_reinstall", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77, "vds_password": "StrongPassword123", "admin_login": "root", "extra_fields": { "software_name": "Ubuntu 24.04", "software_params": { } } } } ``` Поля `data`: - `vds_id` — идентификатор сервера. - `vds_password` — пароль сервера. - `admin_login` — имя администратора для входа. - `extra_fields` (опционально) — дополнительные параметры установленного ПО. Поля `extra_fields`: - `software_name` (опционально) — название установленного программного обеспечения. - `software_params` (опционально) — дополнительные параметры установленного ПО. Возможные поля `software_params`: - `ip_addr` — IP-адрес. - `password` — пароль. - `cp_mysql_password` — пароль MySQL панели управления. - `mailman` — параметры Mailman. - `ispconfig` — параметры ISPConfig. - `mysql_password` — пароль MySQL. - `fp_password` — пароль FastPanel. - `ipsec` — параметры IPsec. - `psql_password` — пароль PostgreSQL. - `db_password` — пароль базы данных. - `admin_password` — пароль администратора. - `user_pwd` — пароль пользователя. - `mariadb_password` — пароль MariaDB. - `wg_password` — пароль WireGuard. - `neomsa_password` — пароль NeoMSA. ## Событие server_reset_password_success Пароль облачного сервера сброшен: ```js { "event_group": "cloud_servers", "event": "server_reset_password_success", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77, "vds_password": "StrongPassword123", "admin_login": "root" } } ``` Поля `data`: - `vds_id` — идентификатор сервера. - `vds_password` — новый пароль сервера. - `admin_login` — имя администратора для входа. ## Событие server_reset_password_error Ошибка сброса пароля облачного сервера: ```js { "event_group": "cloud_servers", "event": "server_reset_password_error", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77, "vds_password": "StrongPassword123", "admin_login": "root" } } ``` Поля `data`: - `vds_id` — идентификатор сервера. - `vds_password` — пароль сервера. - `admin_login` — имя администратора для входа. ## Событие server_cloning Клонирование облачного сервера: ```js { "event_group": "cloud_servers", "event": "server_cloning", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77 } } ``` Поля `data`: - `vds_id` — идентификатор сервера. ## Событие vds_drive_removed Диск облачного сервера удален: ```js { "event_group": "cloud_servers", "event": "vds_drive_removed", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77, "block_date": "2026-02-20T00:00:00.000Z", "vds_name": "cloud-server-1" } } ``` Поля `data`: - `vds_id` — идентификатор сервера. - `block_date` — дата блокировки сервера. - `vds_name` — название сервера. ## Событие ddos_attack Блокировка IP-адреса из-за DDoS-атак: ```js { "event_group": "cloud_servers", "event": "ddos_attack", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "ip": "192.0.2.10", "service": "server", "status": "ban", "service_id": 77, "service_name": "cloud-server-1", "service_location": "ru-1", "thread_message": "Зафиксирована DDoS-атака на ресурс.", "thread_id": 12345 } } ``` Поля `data`: - `ip` — IP-адрес ресурса. - `service` — тип сервиса: `server`, `dbaas`, `balancer` или `k8s`. - `status` — статус блокировки: `ban` или `unban`. - `service_id` — идентификатор сервиса. - `service_name` — название сервиса. - `service_location` — локация сервиса (например, `ru-1`). - `thread_message` (опционально) — сообщение в обращении. - `thread_id` (опционально) — идентификатор обращения. # События баз данных Source: https://timeweb.cloud/docs/account-management/webhook-notification/database-events События этой группы относятся к состоянию облачных баз данных: использованию ресурсов, высокой нагрузке и автоматическому масштабированию диска. ## Событие database_disk_almost_filling_up Диск базы данных почти заполнен: ```js { "event_group": "databases", "event": "database_disk_almost_filling_up", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77, "vapi_cluster_id": 15 } } ``` Поля data: - `vds_id` — идентификатор сервера базы данных. - `vapi_cluster_id` — идентификатор кластера базы данных. ## Событие database_disk_filling_up Диск базы данных заполнен: ```js { "event_group": "databases", "event": "database_disk_filling_up", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77, "vapi_cluster_id": 15 } } ``` Поля `data`: - `vds_id` — идентификатор сервера базы данных. - `vapi_cluster_id` — идентификатор кластера базы данных. ## Событие database_ram_almost_filling_up Оперативная память базы данных заканчивается: ```js { "event_group": "databases", "event": "database_ram_almost_filling_up", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77, "vapi_cluster_id": 15 } } ``` Поля `data`: - `vds_id` — идентификатор сервера базы данных. - `vapi_cluster_id` — идентификатор кластера базы данных. ## Событие database_cpu_high_load Высокая нагрузка на процессор базы данных: ```js { "event_group": "databases", "event": "database_cpu_high_load", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77, "vapi_cluster_id": 15 } } ``` Поля `data`: - `vds_id` — идентификатор сервера базы данных. - `vapi_cluster_id` — идентификатор кластера базы данных. ## Событие database_oom_killed Процесс базы данных завершен из-за нехватки памяти (OOM): ```js { "event_group": "databases", "event": "database_oom_killed", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "vds_id": 77, "vapi_cluster_id": 15 } } ``` Поля `data`: - `vds_id` — идентификатор сервера базы данных. - `vapi_cluster_id` — идентификатор кластера базы данных. ## Событие database_disk_autoscaling Автоматическое увеличение диска базы данных: ```js { "event_group": "databases", "event": "database_disk_autoscaling", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "database_id": 30, "database_name": "production-db", "percent_used": 95, "scaled_size_gb": 10, "from_size_gb": 50, "to_size_gb": 60 } } ``` Поля `data`: - `database_id` — идентификатор базы данных. - `database_name` — название базы данных. - `percent_used` — процент занятого дискового пространства на момент масштабирования. - `scaled_size_gb` — размер увеличения диска в ГБ. - `from_size_gb` — исходный размер диска в ГБ. - `to_size_gb` — новый размер диска в ГБ. # События S3-хранилища Source: https://timeweb.cloud/docs/account-management/webhook-notification/s3-events События этой группы относятся к использованию трафика и дискового пространства S3-хранилища, а также автоматическому изменению параметров хранения. ## Событие s3_traffic_approaching_limit_notification Трафик S3-хранилища приближается к лимиту: ```js { "event_group": "s3", "event": "s3_traffic_approaching_limit_notification", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "limit": "1000 GB" } } ``` Поля `data`: - `limit` — установленный лимит трафика. ## Событие s3_traffic_exceeded_limit_notification Превышен лимит трафика S3-хранилища: ```js { "event_group": "s3", "event": "s3_traffic_exceeded_limit_notification", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "limit": "1000 GB" } } ``` Поля `data`: - `limit` — установленный лимит трафика. ## Событие s3_traffic_exceeded_quota_notification Превышена квота трафика S3-хранилища: ```js { "event_group": "s3", "event": "s3_traffic_exceeded_quota_notification", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "quota": "2000 GB" } } ``` Поля `data`: - `quota` — доступная квота трафика. ## Событие s3_disk_approaching_limit_notification Использование диска S3-бакета приближается к лимиту: ```js { "event_group": "s3", "event": "s3_disk_approaching_limit_notification", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "bucket_name": "media-backup", "bucket_id": 23, "is_pay_as_you_go": false } } ``` Поля `data`: - `bucket_name` — имя бакета. - `bucket_id` — идентификатор бакета. - `is_pay_as_you_go` — признак использования поресурсной модели оплаты. ## Событие s3_disk_upgraded_notification Размер диска S3-бакета увеличен: ```js { "event_group": "s3", "event": "s3_disk_upgraded_notification", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "bucket_name": "media-backup", "bucket_id": 23, "real_used_gb": "98.5", "new_size_gb": "150", "new_cost": "590" } } ``` Поля `data`: - `bucket_name` — имя бакета. - `bucket_id` — идентификатор бакета. - `real_used_gb` — фактически занятый объем в ГБ. - `new_size_gb` — новый размер хранилища в ГБ. - `new_cost` — новая стоимость хранения. ## Событие s3_disk_pay_as_you_go_activated_notification Для S3-бакета активирована поресурсная модель оплаты: ```js { "event_group": "s3", "event": "s3_disk_pay_as_you_go_activated_notification", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "bucket_name": "media-backup", "bucket_id": 23 } } ``` Поля `data`: - `bucket_name` — имя бакета. - `bucket_id` — идентификатор бакета. # События лицензий Source: https://timeweb.cloud/docs/account-management/webhook-notification/license-events События этой группы относятся к лицензиям, их автопродлению, окончанию срока действия и завершению пробного периода. ## Событие isp_autoprolong_success Лицензия успешно продлена автоматически: ```js { "event_group": "licenses", "event": "isp_autoprolong_success", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "ip": "192.0.2.10", "license_name": "ISPmanager Lite", "service_period": "1 month", "end_date": "2026-03-16", "vds_id": 77 } } ``` Поля `data`: - `ip` — IP-адрес сервера. - `license_name` — название лицензии. - `service_period` — период продления лицензии. - `end_date` — новая дата окончания действия лицензии. ## Событие isp_autoprolong_insufficient_funds Недостаточно средств для автопродления лицензии ispmanager: ```js { "event_group": "licenses", "event": "isp_autoprolong_insufficient_funds", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "ip": "192.0.2.10", "license_name": "ISPmanager Lite", "end_date": "2026-02-16" } } ``` Поля `data`: - `ip` — IP-адрес сервера. - `license_name` — название лицензии. - `end_date` — дата окончания действия лицензии. ## Событие isp_soon_expires Срок действия лицензии ispmanager заканчивается: ```js { "event_group": "licenses", "event": "isp_soon_expires", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "ip": "192.0.2.10", "license_name": "ISPmanager Lite", "autoprolong_date": "2026-02-15", "end_date": "2026-02-16", "vds_id": 77, "license_cost": "299" } } ``` Поля `data`: - `ip` — IP-адрес сервера. - `license_name` — название лицензии. - `autoprolong_date` — дата попытки автопродления. - `end_date` — дата окончания действия лицензии. - `vds_id` — идентификатор сервера. - `license_cost` — стоимость лицензии. ## Событие isp_trial_soon_expires Пробный период лицензии ispmanager скоро завершится: ```js { "event_group": "licenses", "event": "isp_trial_soon_expires", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "ip": "192.0.2.10", "vds_name": "cloud-server-1", "end_date": "2026-02-16", "vds_id": 77 } } ``` Поля `data`: - `ip` — IP-адрес сервера. - `vds_name` — название сервера. - `end_date` — дата окончания пробного периода. - `vds_id` — идентификатор сервера. # События доменов Source: https://timeweb.cloud/docs/account-management/webhook-notification/domain-events События этой группы относятся к регистрации, продлению, переносу и изменению параметров доменных имен. ## Событие domain_register_low_payment Недостаточно средств для регистрации домена: ```js { "event_group": "domains", "event": "domain_register_low_payment", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "fqdn": "example.com" } } ``` Поля `data`: - `fqdn` — полное доменное имя. ## Событие domain_register_low_balance Недостаточно средств на балансе для регистрации домена: ```js { "event_group": "domains", "event": "domain_register_low_balance", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "fqdn": "example.com" } } ``` Поля `data`: - `fqdn` — полное доменное имя. ## Событие domain_register_low_free_funds Недостаточно свободных средств для операции с доменом: ```js { "event_group": "domains", "event": "domain_register_low_free_funds", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "fqdn": "example.com", "request_action": "register", "free_funds": "120.00" } } ``` Поля `data`: - `fqdn` — полное доменное имя. - `request_action` — выполняемое действие с доменом. - `free_funds` — сумма доступных средств. ## Событие prolong_ok_new Домен успешно продлен: ```js { "event_group": "domains", "event": "prolong_ok_new", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "expiry_date": "2027-02-16", "fqdn": "example.com" } } ``` Поля `data`: - `expiry_date` — новая дата окончания регистрации домена. - `fqdn` — полное доменное имя. ## Событие drop_old_request Удалена устаревшая заявка на регистрацию домена: ```js { "event_group": "domains", "event": "drop_old_request", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "domain": "example.com" } } ``` Поля `data`: - `domain` — доменное имя. ## Событие domain_updated_virtreg Изменены данные домена: ```js { "event_group": "domains", "event": "domain_updated_virtreg", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "domain_changes": "Изменены DNS-серверы", "fqdn": "example.com", "person_contact_name": "Иван Иванов" } } ``` Поля `data`: - `domain_changes` — список внесенных изменений. - `fqdn` — полное доменное имя. - `person_contact_name` — имя контактного лица владельца домена. ## Событие domain_transfer_error_auth_code Ошибка переноса домена: неверный auth-code: ```js { "event_group": "domains", "event": "domain_transfer_error_auth_code", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "fqdn": "example.com" } } ``` Поля `data`: - `fqdn` — полное доменное имя. ## Событие domain_transfer_error_general Ошибка переноса домена: ```js { "event_group": "domains", "event": "domain_transfer_error_general", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "fqdn": "example.com" } } ``` Поля `data`: - `fqdn` — полное доменное имя. ## Событие domain_transfer_error_person Ошибка переноса домена из-за данных владельца: ```js { "event_group": "domains", "event": "domain_transfer_error_person", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "fqdn": "example.com" } } ``` Поля `data`: - `fqdn` — полное доменное имя. # События SSL-сертификатов Source: https://timeweb.cloud/docs/account-management/webhook-notification/ssl-events События этой группы относятся к выпуску, установке, удалению и окончанию срока действия SSL-сертификатов. ## Событие ssl_request_sent Заявка на SSL-сертификат отправлена: ```js { "event_group": "ssl", "event": "ssl_request_sent", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "request_action": "issue", "certificate_name": "Let's Encrypt", "fqdn": "example.com" } } ``` Поля `data`: - `request_action` — выполняемое действие с сертификатом. - `certificate_name` — название сертификата. - `fqdn` — доменное имя, для которого выпущен сертификат. ## Событие ssl_installed SSL-сертификат установлен: ```js { "event_group": "ssl", "event": "ssl_installed", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "certificate_name": "Let's Encrypt", "fqdn": "example.com" } } ``` Поля `data`: - `certificate_name` — название сертификата. - `fqdn` — доменное имя. ## Событие ssl_deleted_no_ip SSL-сертификат будет удален из-за отсутствия IP-адреса: ```js { "event_group": "ssl", "event": "ssl_deleted_no_ip", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "expiry_date": "2026-03-01", "certificate_name": "Let's Encrypt", "fqdn": "example.com" } } ``` Поля data: - `expiry_date` — дата окончания действия сертификата. - `certificate_name` — название сертификата. - `fqdn` — доменное имя. ## Событие ssl_soon_expires Срок действия SSL-сертификата скоро истекает: ```js { "event_group": "ssl", "event": "ssl_soon_expires", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "expiry_date": "2026-03-01", "certificate_name": "Let's Encrypt", "fqdn": "example.com" } } ``` Поля `data`: - `expiry_date` — дата окончания действия сертификата. - `certificate_name` — название сертификата. - `fqdn` — доменное имя. ## Событие ssl_expired Срок действия SSL-сертификата истек: ```js { "event_group": "ssl", "event": "ssl_expired", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "expiry_date": "2026-02-16", "certificate_name": "Let's Encrypt", "fqdn": "example.com", "days_before_deletion": "30", "deletion_date": "2026-03-18" } } ``` Поля `data`: - `expiry_date` — дата окончания действия сертификата. - `certificate_name` — название сертификата. - `fqdn` — доменное имя. - `days_before_deletion` — количество дней до удаления сертификата. - `deletion_date` — дата удаления сертификата. # События идей и комментариев Source: https://timeweb.cloud/docs/account-management/webhook-notification/idea-comment-events События этой группы относятся к идеям, комментариям, лайкам и изменениям статуса идей. ## Событие idea_comment_created Добавлен комментарий к идее: ```js { "event_group": "ideas_and_comments", "event": "idea_comment_created", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "idea_id": 125, "idea_title": "Добавить IPv6 для VDS", "comment": "Поддерживаю идею, очень нужно." } } ``` Поля `data`: - `idea_id` — идентификатор идеи. - `idea_title` — название идеи. - `comment` — текст комментария. ## Событие idea_likes_1 Идея получила 1 лайк: ```js { "event_group": "ideas_and_comments", "event": "idea_likes_1", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "idea_id": 125, "idea_title": "Добавить IPv6 для VDS" } } ``` Поля `data`: - `idea_id` — идентификатор идеи. - `idea_title` — название идеи. ## Событие idea_likes_5 Идея получила 5 лайков: ```js { "event_group": "ideas_and_comments", "event": "idea_likes_5", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "idea_id": 125, "idea_title": "Добавить IPv6 для VDS" } } ``` Поля `data`: - `idea_id` — идентификатор идеи. - `idea_title` — название идеи. ## Событие idea_likes Идея получила новое количество лайков: ```js { "event_group": "ideas_and_comments", "event": "idea_likes", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "idea_id": 125, "idea_title": "Добавить IPv6 для VDS", "num_likes": 12 } } ``` Поля `data`: - `idea_id` — идентификатор идеи. - `idea_title` — название идеи. - `num_likes` — количество лайков. ## Событие idea_status_in_work Идея взята в работу: ```js { "event_group": "ideas_and_comments", "event": "idea_status_in_work", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "idea_id": 125, "idea_title": "Добавить IPv6 для VDS" } } ``` Поля `data`: - `idea_id` — идентификатор идеи. - `idea_title` — название идеи. ## Событие idea_status_realize Идея реализована: ```js { "event_group": "ideas_and_comments", "event": "idea_status_realize", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "idea_id": 125, "idea_title": "Добавить IPv6 для VDS" } } ``` Поля `data`: - `idea_id` — идентификатор идеи. - `idea_title` — название идеи. ## Событие idea_status_realize_non_author Идея реализована другим способом: ```js { "event_group": "ideas_and_comments", "event": "idea_status_realize_non_author", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "idea_id": 125, "idea_title": "Добавить IPv6 для VDS" } } ``` Поля `data`: - `idea_id` — идентификатор идеи. - `idea_title` — название идеи. ## Событие idea_status_rejected Идея отклонена: ```js { "event_group": "ideas_and_comments", "event": "idea_status_rejected", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "idea_id": 125, "idea_title": "Добавить IPv6 для VDS" } } ``` Поля `data`: - `idea_id` — идентификатор идеи. - `idea_title` — название идеи. ## Событие idea_comment_answer Получен ответ на комментарий к идее: ```js { "event_group": "ideas_and_comments", "event": "idea_comment_answer", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "idea_id": 125, "idea_title": "Добавить IPv6 для VDS" } } ``` Поля `data`: - `idea_id` — идентификатор идеи. - `idea_title` — название идеи. ## Событие site_comment_answer Получен ответ на комментарий на сайте: ```shell { "event_group": "ideas_and_comments", "event": "site_comment_answer", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "comment": "Спасибо за обратную связь!", "resource_type": "article", "resource_title": "Уведомления", "page_url": "https://timeweb.cloud/docs/account-management/notifications" } } ``` Поля `data`: - `comment` — текст ответа. - `resource_type` — тип ресурса. - `resource_title` — название ресурса. - `page_url` — ссылка на страницу ресурса. # События AI-агентов Source: https://timeweb.cloud/docs/account-management/webhook-notification/ai-agent-events События этой группы относятся к AI-агентам и базам знаний: использованию токенов, продлению подписки, блокировке и нехватке средств. ## Событие agents_80_percent_of_remaining_tokens Использовано 80% доступных токенов AI-агента: ```js { "event_group": "ai", "event": "agents_80_percent_of_remaining_tokens", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "remaining_tokens": 20000, "total_tokens": 100000, "agent_name": "Support Agent", "renewal_date": "2026-03-01", "renewal_cost": "990", "agent_id": 15 } } ``` Поля `data`: - `remaining_tokens` — оставшееся количество токенов. - `total_tokens` — общее количество токенов в пакете. - `agent_name` — название AI-агента. - `renewal_date` (опционально) — дата продления подписки. - `renewal_cost` (опционально) — стоимость продления. - `agent_id` (опционально) — идентификатор агента. ## Событие agents_buy_additional_token_package_insufficient_funds Недостаточно средств для покупки дополнительного пакета токенов AI-агента: ```js { "event_group": "ai", "event": "agents_buy_additional_token_package_insufficient_funds", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "required_amount": 490, "agent_name": "Support Agent", "token_package_size": 50000 } } ``` Поля `data`: - `required_amount` — необходимая сумма пополнения. - `agent_name` — название AI-агента. - `token_package_size` — размер пакета токенов. ## Событие agents_subscription_renewal_insufficient_funds Недостаточно средств для продления AI-агента: ```js { "event_group": "ai", "event": "agents_subscription_renewal_insufficient_funds", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "required_amount": 990, "agent_name": "Support Agent" } } ``` Поля `data`: - `required_amount` — необходимая сумма пополнения. - `agent_name` — название AI-агента. ## Событие knowledgebases_80_percent_of_remaining_tokens Использовано 80% доступных токенов базы знаний: ```js { "event_group": "ai", "event": "knowledgebases_80_percent_of_remaining_tokens", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "remaining_tokens": 10000, "total_tokens": 50000, "knowledgebase_name": "Product Docs", "renewal_date": "2026-03-01", "renewal_cost": "590", "ai_dbid": 22 } } ``` Поля `data`: - `remaining_tokens` — оставшееся количество токенов. - `total_tokens` — общее количество токенов в пакете. - `knowledgebase_name` — название базы знаний. - `renewal_date` (опционально) — дата продления подписки. - `renewal_cost` (опционально) — стоимость продления. - `ai_dbid` (опционально) — идентификатор базы знаний. ## Событие knowledgebases_buy_additional_token_package_insufficient_funds Недостаточно средств для покупки дополнительного пакета токенов базы знаний: ```js { "event_group": "ai", "event": "knowledgebases_buy_additional_token_package_insufficient_funds", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "required_amount": 390, "knowledgebase_name": "Product Docs", "token_package_size": 25000 } } ``` Поля `data`: - `required_amount` — необходимая сумма пополнения. - `knowledgebase_name` — название базы знаний. - `token_package_size` — размер пакета токенов. ## Событие knowledgebases_subscription_renewal_insufficient_funds Недостаточно средств для продления базы знаний: ```js { "event_group": "ai", "event": "knowledgebases_subscription_renewal_insufficient_funds", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "required_amount": 590, "knowledgebase_name": "Product Docs" } } ``` Поля `data`: - `required_amount` — необходимая сумма пополнения. - `knowledgebase_name` — название базы знаний. ## Событие agents_blocked AI-агент заблокирован: ```js { "event_group": "ai", "event": "agents_blocked", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "agent_name": "Support Agent", "renewal_date": "2026-03-01", "renewal_cost": "990", "agent_id": 15 } } ``` Поля `data`: - `agent_name` — название AI-агента. - `renewal_date` (опционально) — дата продления. - `renewal_cost` (опционально) — стоимость продления. - `agent_id` (опционально) — идентификатор агента. ## Событие knowledgebases_blocked База знаний заблокирована: ```js { "event_group": "ai", "event": "knowledgebases_blocked", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "knowledgebase_name": "Product Docs", "renewal_date": "2026-03-01", "renewal_cost": "590", "ai_dbid": 22 } } ``` Поля `data`: - `knowledgebase_name` — название базы знаний. - `renewal_date` (опционально) — дата продления. - `renewal_cost` (опционально) — стоимость продления. - `ai_dbid` (опционально) — идентификатор базы знаний. ## Событие agents_token_limit_80_percent Использовано 80% лимита токенов AI-агента: ```js { "event_group": "ai", "event": "agents_token_limit_80_percent", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "agent_name": "Support Agent", "tokens_used": 80000, "tokens_limit": 100000, "agent_id": 15 } } ``` Поля `data`: - `agent_name` — название AI-агента. - `tokens_used` — использовано токенов. - `tokens_limit` — установленный лимит токенов. - `agent_id` (опционально) — идентификатор агента. ## Событие agents_token_limit_exceeded Превышен лимит токенов AI-агента: ```js { "event_group": "ai", "event": "agents_token_limit_exceeded", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "agent_name": "Support Agent", "tokens_used": 105000, "tokens_limit": 100000, "agent_id": 15 } } ``` Поля `data`: - `agent_name` — название AI-агента. - `tokens_used` — использовано токенов. - `tokens_limit` — установленный лимит токенов. - `agent_id` (опционально) — идентификатор агента. # Прочие события Source: https://timeweb.cloud/docs/account-management/webhook-notification/other-events События этой группы относятся к прочим уведомлениям, не вошедшим в другие категории. ## Событие ticket_response Получен новый ответ в тикете: ```js { "event_group": "other", "event": "ticket_response", "created_at": "2026-02-16T10:21:30.000Z", "account_id": 42, "data": { "ticket_id": 15428, "ticket_comment_id": 98211, "comment": "Здравствуйте! Мы проверили ситуацию и внесли изменения.", "abuse_incident": false, "from": "support@example.com", "comment_posted_on_ticket_create": false, "is_from_customer_by_employee": false } } ``` Поля `data`: - `ticket_id` — идентификатор тикета. - `ticket_comment_id` — идентификатор комментария в тикете. - `comment` — текст ответа. - `abuse_incident` — признак обращения, связанного с нарушениями. - `from` (опционально) — отправитель сообщения. - `comment_posted_on_ticket_create` (опционально) — комментарий был добавлен при создании тикета. - `is_from_customer_by_employee` (опционально) — сообщение отправлено сотрудником от имени клиента. # Управление аккаунтом при помощи Telegram Source: https://timeweb.cloud/docs/account-management/telegram-bot С помощью Telegram-бота можно управлять облачными серверами, создавать и получать ответы в тикетах, а также просматривать и пополнять баланс аккаунта. ## Подключение бота Бот поддерживает подключение как в личный, так и в групповой чат. К одному аккаунту Timeweb Cloud можно привязать несколько Telegram-аккаунтов, и наоборот — к одному Telegram-аккаунту можно подключить несколько аккаунтов Timeweb Cloud. Чтобы подключить бота: 1. Перейдите в раздел «Настройки аккаунта» → [«Уведомления»](https://timeweb.cloud/my/account/notifications). 2. В строке «Телеграм» выберите пункт «Подключить». 3. В открывшемся окне выберите тип подключения: «Личный чат» или «Групповой чат». 4. Отсканируйте QR-код или перейдите по ссылке. ![Selection 127](https://content.timeweb.com/assets/83223027-f3a8-4e78-925e-16da7f30d34d.png?width=1026&height=577) 5. В Telegram откроется чат с ботом. Нажмите «Запустить», чтобы завершить привязку вашего аккаунта к боту. ## Настройка функционала По умолчанию через бота доступны только базовые функции: получение кодов и уведомлений. Для активации расширенных возможностей управления аккаунтом необходимо настроить разрешения. Для этого: 1. Перейдите в раздел «Настройки аккаунта» → [«Уведомления»](https://timeweb.cloud/my/account/notifications). 2. В строке «Телеграм» нажмите «Настроить». 3. Включите необходимые возможности. ![Selection 126](https://content.timeweb.com/assets/b4f8d6ae-8682-417a-bbd0-6ca8767655f3.png?width=1534&height=956) ## Возможности бота С помощью бота вы можете: - Получать информацию о балансе: остаток на счете, сумму ежедневных и ежемесячных списаний. - Просматривать открытые тикеты и создавать новые. - Управлять серверами: включать, выключать и перезагружать сервер, получать данные для подключения по SSH, управлять бэкапами. Полный список команд доступен через кнопку «Меню» или команду `/help` в чате с ботом. ![Screenshot 12 10 24 14:36:09](https://content.timeweb.com/assets/d34724e3-bc42-4ce5-a468-664fd1c8a1d8.png?width=450&height=283) _Опции бота в интерфейсе [Telegram](https://telegram.org/)_ # Ограничение доступа в панель Source: https://timeweb.cloud/docs/account-management/restricting-access Для дополнительной защиты аккаунта вы можете ограничить доступ в панель управления — разрешить авторизацию только с определенных IP-адресов или из определенных стран. ### Разрешить доступ из определенных стран 1. Кликните на логин аккаунта слева внизу и перейдите в раздел «Настройки аккаунта». 2. На вкладке «Безопасность и вход» кликните «Настроить» в блоке «Разрешить доступ только для выбранных стран». ![Выбор стран](https://content.timeweb.com/assets/5bd3cf4e-91a5-4c77-a4a4-379e16b33d15.png?width=1113&height=447) 3. Выберите из списка страны, из которых должен быть разрешен доступ в панель. 4. Сохраните изменения. 5. Чтобы применить ограничение, переведите тумблер в положение «Включено». ![A5bb31c0 5f53 4095 A94b 0837541a2cd0](https://content.timeweb.com/assets/1b5a2441-1c40-4bcc-8d38-66d5dbc73f69?width=1115&height=475) Если в текущей сессии вы авторизовались из страны, которая не указана в вашем списке разрешенных стран, система предупредит вас об этом перед включением ограничения. ### Разрешить доступ с определенных IP-адресов 1. Кликните на логин аккаунта слева внизу и перейдите в раздел «Настройки аккаунта». 2. На вкладке «Безопасность и вход» кликните «Настроить» в блоке «Разрешить доступ только с указанных IP-адресов». ![Выбор IP](https://content.timeweb.com/assets/154d6c0f-70f8-4f55-983d-a1ac78b7497a.png?width=1115&height=450) 3. Введите IP-адреса, с которых должен быть разрешен доступ в панель. 4. Сохраните изменения. 5. Чтобы применить ограничение, переведите тумблер в положение «Включено». ![0ee0958d Cf5a 4706 Abba Cbe70026dfae](https://content.timeweb.com/assets/60cfa7ca-0d68-4748-97cf-aa8f12b883ab?width=1119&height=480) Если в текущей сессии вы авторизовались с IP-адреса, который не указан в вашем списке разрешенных адресов, система предупредит вас об этом перед включением ограничения. > [!NOTE] > Чтобы удалить или изменить ограничения стран или IP-адресов, кликните «Настроить», внесите правки и нажмите «Сохранить». # Логи входа в ПУ и управление сессиями Source: https://timeweb.cloud/docs/account-management/authorization-logs Мы логируем все авторизации в учетную запись и выводим их в панели управления. Вы можете просматривать историю входов в панель, а также управлять активными сессиями. ## Логи входа в панель управления Вы можете просмотреть историю входа в разделе «Настройки аккаунта» → «Безопасность и вход». ![Login and Security 06 15 2026 10 18 Am](https://content.timeweb.com/assets/38ed75bd-5d60-46ae-952e-d88b17887420.png?width=1410&height=1537) Мы отображаем дату и время авторизации, устройство и IP-адрес, с которых был выполнен вход, а также страну и город. ![962fcdd6 353d 43aa 9323 A9054249410f](https://content.timeweb.com/assets/55c80b08-8c43-4e19-b70a-c07f9aa4b7e2?width=1502&height=1152) ## Управление активными сессиями Вы также можете просматривать и при необходимости завершать активные авторизационные сессии. Для этого откройте раздел «Настройки аккаунта» — «Безопасность и вход» и кликните «Перейти» в блоке «Активные сессии». ![Login and Security 06 15 2026 10 19 Am](https://content.timeweb.com/assets/d9cb6dd1-b10c-457f-aa52-e6e743ed4a97.png?width=1410&height=1537) Здесь вы можете просмотреть все активные сессии и завершить отдельные из них или сразу все, кроме текущей. ![2334030b 4a80 434f Be5a 9244bdbd7725](https://content.timeweb.com/assets/e890d1a4-ee51-4c4e-bad6-08c22c3044a7?width=750&height=483) При смене пароля к аккаунту все сессии, кроме текущей, будут завершены автоматически. # Привязка аккаунтов Source: https://timeweb.cloud/docs/account-management/connecting-accounts Объединение, или привязка, аккаунтов — это простой и удобный способ управлять несколькими учетными записями в панели управления Timeweb Cloud. С помощью привязки вы сможете переключаться между вашими аккаунтами одним нажатием кнопки без ввода пароля. Вы можете объединять аккаунты любых сервисов Timeweb и Timeweb Cloud; например, можно привязать к аккаунту хостинга ваш аккаунт Timeweb Cloud, аккаунт Конструктора сайтов и т.д. 1. Для привязки аккаунта нажмите на логин слева внизу и выберите «Добавить аккаунт». ![Проекты 2026 09 15 14 26](https://content.timeweb.com/assets/17670f94-e930-4f9c-9233-39eb2a718901.png?width=1567&height=869) 2. Укажите логин аккаунта, который вы хотите привязать, и его пароль. Дополнительно можно добавить комментарий. Максимальная длина комментария — 30 символов. 3. Нажмите «Сохранить». ![Привязать Аккаунт 2026 09 15 14 30](https://content.timeweb.com/assets/1c15d91f-e744-4c92-95ce-dbe6211886cb.png?width=1500&height=777) После вы сможете переключаться между аккаунтами в один клик: ![Проекты 2026 09 15 14 32](https://content.timeweb.com/assets/77b637b1-5266-419a-8de6-ec3716a6b853.png?width=1562&height=869) Чтобы отвязать аккаунт, нажмите на значок минуса рядом с ним: ![Проекты 2026 09 15 14 33](https://content.timeweb.com/assets/3a4de5de-087b-451d-8dda-e4932acd7dac.png?width=1565&height=867) # Токены API и Terraform Source: https://timeweb.cloud/docs/account-management/token Токен необходим для взаимодействия с API, предоставляя доступ к управлению сервисами без использования логина и пароля. Он позволяет автоматизировать процессы, такие как создание, редактирование и удаление ресурсов, и задает ограничения прав доступа для дополнительной безопасности. ## Создание токенов Создать токен вы можете во вкладке «[API и Terraform](https://timeweb.cloud/my/api-keys)». Для создания токена нажмите на кнопку «Добавить токен». ![Image3](https://content.timeweb.com/assets/24bf4255-b8ac-44dd-aad5-a4c1ba604f10.png?width=1046&height=496) Укажите следующие данные: - **Имя токена** — укажите имя токена. Имя будет отображаться на странице «API и Terraform». - **Срок действия** — выберите срок, через который токен перестанет работать. Если токен не должен истекать, выберите «Бессрочно». - **Удалять сервисы по API без кода в Телеграме** — если у вас настроено подтверждение удаления сервисов через Телеграм, при установке этой настройки подтверждение не потребуется при запросе удаления с токеном. - **Скрывать пароли и другие чувствительные данные** — при включении этой опции в ответах API пароли, секреты и приватные ключи будут заменяться строкой `hidden-by-api-key-policy`. Например, при создании S3-бакета в ответе API значение `secret_key` заменится на `hidden-by-api-key-policy`. - **Ограниченные права для токена** — при включении настройки появится возможность выбрать сервисы, с которыми можно будет работать с помощью токена. Настройка доступна только для основного пользователя. У дополнительных пользователей будут установлены те же права, что и у самого пользователя. ![Создание токена](https://content.timeweb.com/assets/a330c413-6937-4f26-af2a-f68e477b1cd7.png?width=2312&height=1844) После нажатия на кнопку «Выпустить» откроется окно с указанием токена. Токен необходимо сохранить локально, так как повторно отобразить его нельзя. ![Image5](https://content.timeweb.com/assets/b541d267-f0b3-4aee-b4b8-189f1d3e59d3.png?width=437&height=314) ## Управление токенами На странице «[API и Terraform](https://timeweb.cloud/my/api-keys)» отображаются все выпущенные токены, включая имя токена, дату выпуска, срок действия и пользователя, выпустившего токен. При наведении курсора на токен пользователь, выпустивший его, может перевыпустить токен. При этом сохранятся все разрешения, установленные для токена. После перевыпуска старый токен перестанет работать. ![Image4](https://content.timeweb.com/assets/ca80a6d4-8798-4304-a798-4abd6088e230.png?width=1043&height=441) При наведении на три точки появится возможность удалить токен или отредактировать его. При редактировании можно изменить имя токена, выбрать опцию «Удалять сервисы по API без кода в Телеграме» и установить необходимые права. ![Image1](https://content.timeweb.com/assets/741d2268-867e-4091-9e67-305e34a1ddd8.png?width=1043&height=440) # Обращение в поддержку Source: https://timeweb.cloud/docs/account-management/contact-support Вы можете связаться с поддержкой Timeweb Cloud несколькими способами. В отдельных случаях, когда вы обращаетесь в поддержку по телефону или через чат, сотрудники попросят вас создать [тикет из панели управления](https://timeweb.cloud/docs/account-management/contact-support#tiket) (или сделают это за вас) — это необходимо, если запрос не может быть решен мгновенно в формате чата/звонка и требует подключения технических специалистов. ## Телефон *Ежедневно с 8 утра до 20 вечера по Москве* Вы можете связаться с нами по телефонам: - 8 800 700 32 92 — бесплатный номер по России - 8 812 470 71 92 — прямой городской номер в Санкт-Петербурге Наш основной номер всегда можно найти [на сайте](https://timeweb.cloud/contacts) или в панели управления: ![4a52cba6 37de 42f8 Be84 1aee7ccdf549](https://content.timeweb.com/assets/384815be-b25f-4780-bb1e-d2d3157501f8.png?width=1535&height=775) ## Тикет *Круглосуточно* Создать тикет (обращение из панели управления) можно через раздел «Поддержка» → «Центр поддержки» → «Создать тикет». ![997177cf D775 4a05 94e1 Bbc26b7c4b27](https://content.timeweb.com/assets/61cb7a3b-cc1e-43cd-9b24-efc87959735b.png?width=1535&height=775) Или нажав на «Поддержка» → «Написать в поддержку». ![Scr 20251111 Nmdz](https://content.timeweb.com/assets/2385602f-43d1-497b-8e8e-b953a57b98bf.png?width=2008&height=1438) На следующем этапе выберите характер обращения, чтобы оно сразу попало к нужным специалистам. - **По общему вопросу** — если вам нужно уточнить информацию по таким вопросам, как: - заказ и настройка облачных сервисов, - работа доменов и DNS, - работа почты, - заказ или установка SSL, - проблемы в работе панелей ispmanager, Fastpanel и др., - оплата, договоры, закрывающие документы. Вы можете сразу выбрать сервис, о котором идет речь, а также дать поддержке SSH-доступ к серверу. - **По техническому вопросу** — если что-то не работает и нужна помощь технических специалистов: - есть проблемы в работе сервера, сайта, базы данных и др., - требуется установка и настройка дополнительного ПО, - нужна помощь в рамках бесплатного [администрирования](https://timeweb.cloud/docs/admin). Вы можете сразу выбрать сервис, о котором идет речь, а также дать поддержке SSH-доступ к серверу. - **Для отработки претензии** — если у вас есть жалоба. Такие обращения отправляются напрямую менеджеру, а их обработка может занимать до 30 дней. - **Для переноса проекта в облако** — если вы переносите данные от другого провайдера. Заполните предложенную форму данными, которые у вас есть, — это ускорит процесс переноса. Если вы не уверены, какой вариант подходит, выбирайте общий или технический вопросы — мы в любом случае передадим ваше обращение в нужный отдел. > [!NOTE] > Чтобы мы смогли как можно быстрее продиагностировать и устранить вашу проблему, в обращении подробно опишите ситуацию, укажите IP-адрес или название сервиса, дату и время возникновения проблемы. ## Email *Круглосуточно* По всем основным вопросам можно обращаться на email: info@timeweb.cloud. Если напишите сразу с ящика, который указан контактным в панели управления, не придется дополнительно проходить верификацию — сможем сразу ответить на все вопросы. ## Чат *Круглосуточно* На нашем сайте и в панели управления есть иконка чата в правом нижнем углу — кликните на нее, чтобы оперативно задать вопрос специалистам. ![Group 1 2 2026 09 15 13 15](https://content.timeweb.com/assets/da6535c4-1074-4457-8e5c-deb1da881180.png?width=1594&height=868) Вы также можете воспользоваться ИИ-агентом TimewebGPT, чтобы быстро получить информацию от искусственного интеллекта. ![Проекты 2026 09 15 12 57](https://content.timeweb.com/assets/f1d4e67c-efb6-4a87-a187-cb28e4a064f4.png?width=1515&height=863) # Общая информация о безопасности Source: https://timeweb.cloud/docs/account-management/obshchaya-informaciya-o-bezopasnosti Чтобы сохранить ваши данные в безопасности и предотвратить возможные нежелательные действия с вашим аккаунтом, рекомендуем вам регулярно (не реже одного раза в год) [менять пароль](https://timeweb.cloud/docs/account-management/password-change) от панели управления. Использование одного и того же пароля на протяжении длительного времени дает злоумышленникам возможность постоянного доступа к вашему аккаунту, если пароль стал им каким-либо образом известен. ## Как пароль может оказаться скомпрометирован? Пользователи сети зачастую назначают одинаковые пароли для нескольких сервисов (социальных сетей, электронной почты, мессенджеров и пр.), и если хотя бы один из них оказался взломан, все остальные аккаунты, где используется данный пароль, тоже находятся под угрозой. Пароль может попасть в руки третьих лиц не только в результате взлома: - пароль могли подобрать или подсмотреть его, когда вы набирали его на клавиатуре; - пароль мог остаться сохраненным на чужом устройстве, на котором вы его когда-то вводили; - устройство, где вводился пароль, могло быть заражено вредоносным ПО. ## Рекомендации по безопасности Основные рекомендации по безопасности достаточно просты: - меняйте пароль хотя бы 1 раз в год; - не сообщайте реквизиты доступа третьим лицам; - не используйте один и тот же пароль для нескольких сайтов и сервисов; - используйте актуальные версии антивирусного ПО на ваших устройствах; - используйте сложные пароли, содержащие заглавные буквы, специальные символы и цифры. Для получения сложных паролей можно воспользоваться любым генератором паролей в сети. # Удаление аккаунта и персональных данных пользователей Source: https://timeweb.cloud/docs/account-management/delete-account-and-personal-data Вы можете в любой момент запросить удаление своего аккаунта и персональных данных. Для этого потребуется создать **запрос в поддержку** удобным для вас способом: - из [панели управления](https://timeweb.cloud/my/support/help-question/other), - через мобильное приложение, - по email: [info@timeweb.cloud](mailto:info@timeweb.cloud). Удалить аккаунт самостоятельно (без запроса в службу поддержки) невозможно. При обработке персональных данных мы руководствуемся [Политикой конфиденциальности ООО «ТАЙМВЭБ.КЛАУД»](https://timeweb.cloud/personal-data-apps). # Управление доступом Source: https://timeweb.cloud/docs/iam Вы можете управлять доступом к аккаунту Timeweb Cloud, создавая дополнительных пользователей панели и выдавая им необходимые права и уровни доступа. Это позволит разделить доступы для разных сотрудников или даже команд, работающих над разными проектами, обеспечить удобство работы и безопасность ваших данных. Дополнительный пользователь может иметь полный доступ ко всему аккаунту или ограниченный — только к конкретным проектам или ресурсам, в зависимости от ваших настроек. Например, бухгалтеру можно выдать доступ к оплате и документам, команде разработке — к конкретному проекту, над которым она работает, сетевому администратору — доступ к управлению сетями и IP-адресами, и так далее. В дальнейшем мы также реализуем раздельный баланс для проектов, чтобы управлять ресурсами на аккаунте было еще удобнее. # Особенности настройки доступов Source: https://timeweb.cloud/docs/iam/osobennosti-nastrojki-dostupov При настройке доступов для дополнительных пользователей необходимо учитывать определенные нюансы. Ниже рассказываем о них подробнее. ## Комбинации доступов Часть функционала панели управления тесно связана с определенными типами сервисов (например, SSH-ключи — с облачными серверами). Когда вы выдаете доступ к разделу, для которого в панели есть смежный функционал, пользователь получит доступ того же уровня к этому функционалу. Все комбинации доступов перечислены ниже. **Облачные серверы:** - Облачные серверы - SSH-ключи - Образы - Лицензии - Приватные сети - Firewall - Публичные IP **Базы данных:** - Базы данных - Приватные сети - Firewall - Публичные IP **Балансировщики:** - Балансировщики - Приватные сети - Firewall - Публичные IP **Сети:** - Приватные сети - Firewall - Публичные IP **Домены и SSL-сертификаты:** - Домены - SSL-сертификаты - Администраторы доменов **Финансы:** - Просмотр баланса - Баланс и платежи - Оплата сервисов - Отложенный платеж - Документы > [!NOTE] > Доступ к «Финансам» всегда выдается для всего аккаунта. Даже если пользователь ограничен отдельными проектами, в разделе «Баланс и платежи» будут отображаться все сервисы аккаунта. ## Доступно всем Каждому дополнительному пользователю доступна персонализация аккаунта: выбор светлой или темной темы, языка интерфейса и внешнего вида панели (обычная/широкая). Настройки будут применены только для конкретного пользователя. Также всем пользователям доступен раздел «API и Terraform». Токен, выпущенный под дополнительным пользователем, будет иметь те же права, что и сам пользователь. ## Доступно только владельцу Следующие разделы и опции всегда доступны только владельцу аккаунта: - Уведомления - Пользователи - Пригласи друга - Управление проектами: создание и удаление проектов, перенос сервисов между проектами. ## Доступ «Только просмотр» Важно учитывать, что опция «Только просмотр» разрешает пользователю просматривать всю информацию в разделе, **включая пароли**. Например, пользователь с доступом «Только просмотр» в разделы «Базы данных» и «Облачные серверы» не сможет создавать или удалять серверы или базы в панели, но сможет получить реквизиты доступа и подключиться к серверу или базе стандартным образом, например, по SSH. ## Создание сервисов без доступа к «Финансам» Пользователи с доступом «Управление» к конкретному разделу смогут создавать новые сервисы в этом разделе, даже при отсутствии доступа к «Финансам» и просмотру баланса. Если фактически на балансе аккаунта достаточно средств — сервис будет создан. ## Доступ к Timeweb.AI Внешний чат Timeweb.AI — это интерфейс для работы с AI-агентами вне панели управления. Выдать пользователю доступ к Timeweb.AI можно [по этой инструкции](https://timeweb.cloud/docs/ai-agents/manage-agents/external-chat#nastrojka-dostupov). ## Доступ к разделу «Поддержка» Вы можете открыть доступ дополнительному пользователю к разделу «Поддержка». Доступные варианты прав: 1. **Только просмотр** — пользователь сможет просматривать открытые и закрытые тикеты. 2. **Управление** — пользователь, помимо просмотра, сможет создавать тикеты. 3. **Нет доступа** — у пользователя нет доступа к разделу «Поддержка» > [!NOTE] > Дополнительный пользователь с правами «Только просмотр» или «Управление»: > > - видит все тикеты на аккаунте; > - получает уведомления на емейл об ответах на любые тикеты. При создании обращения в поддержку от дополнительного пользователя учитываются его права на доступ к разделу, по которому задается вопрос: 1. **Управление** — поддержка может выполнять все действия, доступные для сервера или сервиса, кроме удаления, которое осуществляется клиентом самостоятельно. 2. **Только просмотр** — поддержка не может выполнять какие-либо действия с сервером или сервисом без разрешения от основного аккаунта. В этом случае потребуется дополнительная верификация пользователя как владельца аккаунта или переадресация запроса на обращение от основного аккаунта. 3. **Нет доступа** — информация о сервисе не разглашается. Для решения вопроса потребуется верификация пользователя как основного или обращение напрямую от владельца аккаунта. #### Ограничения: - **Перенос сервера между аккаунтами** — запросы могут отправлять только основные пользователи. - **Удаление и восстановление из бэкапов** — эти действия не выполняются поддержкой. - **Настройка дополнительного пользователя** — доступна только владельцу аккаунта. - **Проблемы с доступом** — в случае затруднений у дополнительного пользователя с доступом к аккаунту или разделам, он должен обратиться напрямую к владельцу аккаунта для решения проблемы. # Управление пользователями Source: https://timeweb.cloud/docs/iam/upravlenie-polzovatelyami Создание дополнительных пользователей аккаунта и управление их настройками. ## Создание пользователя Для создания нового пользователя: 1. Кликните на логин аккаунта слева внизу и перейдите в «Настройки аккаунта» → «[Пользователи](https://timeweb.cloud/my/account/users)». 2. Нажмите «Создать». 3. Заполните необходимые параметры: ### Данные пользователя ![3181f156 Cf12 4d31 8b44 877048e46f98](https://content.timeweb.com/assets/4c36d5bb-2b31-4889-a855-e54255acf5ea?width=1466&height=859) - Имя — укажите имя пользователя, скажем, «Андрей Иванов» или «Команда разработки». Имя будет отображаться в вашей панели и в панели пользователя. - Емейл — укажите актуальный емейл, на который пользователь получит ссылку для входа в панель. Изменить емейл невозможно — если вы ошиблись в указании ящика, создайте нового пользователя. - Пароль — оставьте сгенерированный пароль или введите собственный. Мы отобразим пароль пользователю при первом входе в панель. - Комментарий — можно указать дополнительную информацию о пользователе. Комментарий будет виден только вам. Дополнительно вы можете добавить аватарку для пользователя — она также будет видна только владельцу аккаунта. Редактирование этих данных, как и прав доступа, будет доступно только владельцу аккаунта. ### Проекты Выберите, куда пользователь должен иметь доступ: - Все проекты — доступ ко всем проектам на аккаунте. - Выбрать проекты — доступ только к конкретным проектам. Вы сможете указать один или несколько проектов. ![Image6](https://content.timeweb.com/assets/35beb7fb-524a-472f-9140-0019f764aadf?width=782&height=695) ### Доступы Откройте доступ к нужным ресурсам и разделам аккаунта. Для этого кликните на «Нет доступа» в строке с нужным ресурсом и выберите тип доступа: - Управление — пользователь будет иметь полный доступ к разделу, точно такой же, как владелец аккаунта. - Только просмотр — пользователь сможет просматривать содержимое раздела, но не сможет вносить изменения через панель. - Нет доступа — в разделе будет отображаться уведомление о недостаточных правах доступа; пользователь не будет видеть содержимое раздела. При выдаче доступа к определенным разделам будет автоматически выдан такой же уровень доступа к связанным разделам. Например, если вы выдаете доступ к «Облачным серверам», пользователь также получит доступ к разделам «Приватные сети», «Лицензии» и др. Подробнее смотрите [здесь](https://timeweb.cloud/docs/iam/osobennosti-nastrojki-dostupov#kombinacii-dostupov). После настройки всех необходимых прав нажмите «Создать». Созданный пользователь отобразится в панели, а на email пользователя придет письмо со ссылкой для входа в панель управления. ## Редактирование пользователей Вы можете изменить имя, пароль или комментарий для пользователя, а также перенастроить его права доступа. Перейти к редактированию пользователей (их данных и прав доступа) можно: - Через раздел «[Пользователи](https://timeweb.cloud/my/account/users)» — здесь будут отображены **все** дополнительные пользователи аккаунта. ![Ffaac407 9732 4e5b B623 57002c845477](https://content.timeweb.com/assets/12e14154-1360-40a0-bdd1-0a4d28cba2e8?width=1466&height=825) - Через раздел «Проекты» — нужный проект — вкладка «Пользователи». Здесь будут отображены пользователи, имеющие доступ к конкретному проекту. ![De58a8ac 021d 4379 Bdc3 2f4ccec9d88d](https://content.timeweb.com/assets/72f0a838-9117-44de-aa88-2f85d98c42c8?width=1475&height=816) ### Смена пароля 1. Перейдите в раздел «Настройки аккаунта» → «[Пользователи](https://timeweb.cloud/my/account/users)». 2. Кликните на нужного пользователя. 3. Задайте новый пароль и сохраните изменения. 4. Сообщите новый пароль пользователю — он не будет отправлен с нашей стороны. ![Image5](https://content.timeweb.com/assets/86378db1-809b-4e87-a73d-2c3819f54868?width=1462&height=862) ### Изменение прав 1. Перейдите в раздел «Настройки аккаунта» → «[Пользователи](https://timeweb.cloud/my/account/users)». 2. Кликните на нужного пользователя. 3. Перейдите на вкладку «Права и доступы» и отредактируйте доступы пользователя. Настройка выполняется так же, как [при создании пользователя](https://timeweb.cloud/docs/iam/upravlenie-polzovatelyami#dostupy). ![Screenshot 01 15 25 17:04:48](https://content.timeweb.com/assets/b534839d-e6c7-4a62-89c6-50b596407e1e.png?width=872&height=934) ## Пользователи и проекты В разделе «Проекты» вы можете: - посмотреть, какие пользователи имеют доступ к конкретным проектам; - добавить существующих пользователей в новый проект; - добавить существующих пользователей в уже созданный проект; - редактировать пользователей; - заблокировать пользователей; - удалить пользователей из проекта; - удалить пользователей с аккаунта. Когда вы создаете новый проект, вы можете сразу выбрать пользователей, которые должны иметь к нему доступ: ![Image7](https://content.timeweb.com/assets/906c351c-dd44-4b27-8c10-172a4ca1cb6e?width=1456&height=825) На главной странице раздела «Проекты» мы отобразим аватарки пользователей, добавленных в каждый проект — наведите курсор на аватар, чтобы просмотреть имя. ![Image9](https://content.timeweb.com/assets/a9fe600a-cb83-45e7-8704-6985523d3d17?width=1472&height=716) Чтобы поменять настройки, кликните на проект и перейдите на вкладку «Пользователи». Будет отображен список всех дополнительных пользователей панели, которые имеют доступ к этому проекту. Кликнув на строку с пользователем, вы сможете изменить его данные или права доступа. ![Image3](https://content.timeweb.com/assets/1da52859-ce92-47d2-bb2a-80671481d4bd?width=1463&height=821) Вы можете добавить других пользователей или удалить пользователей из проекта. ### Выдача доступа к проекту 1. Кликните на нужный проект и перейдите на вкладку «Пользователи». 2. Кликните «Добавить». 3. Выберите нужных пользователей. 4. Нажмите «Сохранить». ![Image1](https://content.timeweb.com/assets/96b25937-27f0-4151-a74c-f52ad137a601?width=1470&height=739) ### Запрет доступа к проекту 1. Кликните на нужный проект и перейдите на вкладку «Пользователи». 2. Кликните «Добавить». 3. Удалите пользователя из списка. 4. Нажмите «Сохранить». ![Image8](https://content.timeweb.com/assets/21a8feff-654d-4afa-a281-00ed70782ea4?width=1478&height=865) Обратите внимание, что при удалении пользователя через опцию «Удалить», **он будет удален со всего аккаунта в целом**, а не только из конкретного проекта: ![D61ecb75 525f 4159 8d0d 081896c22596](https://content.timeweb.com/assets/31670e35-5959-4a71-ac0e-1ddd392aebf0?width=1488&height=626) ## Блокировка пользователя Если вам нужно временно ограничить доступ пользователя в панель, вы можете заблокировать его. Это можно сделать в разделе «[Пользователи](https://timeweb.cloud/my/account/users/)» или «Проекты». Все настройки доступа при этом сохранятся, и после снятия блокировки пользователь сможет работать с панелью и ее разделами так же, как раньше. Для блокировки пользователя: 1. Перейдите в раздел «Пользователи» или «Проекты». 2. Наведите курсор на нужного пользователя и кликните на значок замка. 3. Подтвердите действие. ![94e608d2 76fc 4496 Bdad 3ec8297b97a6](https://content.timeweb.com/assets/ffea846f-54b8-4d40-97b2-d230d4515a45?width=1462&height=822) Пользователь будет отображаться в списке пользователей аккаунта с отметкой о блокировке. ![7ef5c7bd 39cf 4126 Bc1b 5c9db7147357](https://content.timeweb.com/assets/2ac67b55-00e0-416f-aec0-a597597953fd?width=1455&height=787) При попытке авторизации в панель пользователь будет получать сообщение о неверном логине и пароле. Вы можете редактировать данные пользователей и их права доступа, даже когда они заблокированы. В этом случае после снятия блокировки пользователь получит права в соответствии с обновленными настройками. Чтобы снять блокировку, также кликните на значок замка и подтвердите действие. ![Ce0beb0e 6696 4a0b 9438 4167c7c3b69c](https://content.timeweb.com/assets/0be0c25b-7017-489c-aeb8-015facac48c3?width=1462&height=821) ## Удаление пользователя > [!NOTE] > Чтобы **временно** ограничить доступ в панель, вы можете [заблокировать пользователя](https://timeweb.cloud/docs/iam/upravlenie-polzovatelyami#blokirovka-polzovatelya), не удаляя его. Чтобы удалить пользователя: 1. Перейдите в раздел «Пользователи» или «Проекты». 2. Наведите курсор на нужного пользователя и кликните на три точки справа. 3. Кликните «Удалить». 4. Подтвердите действие. ![251486ed Ee17 442f 847d C305a05b26be](https://content.timeweb.com/assets/4951397e-0efa-4844-a43a-72431b2d3fde?width=1463&height=815) При попытке авторизации в панель пользователь будет получать сообщение о неверном логине и пароле. Для удаления вы также можете кликнуть на пользователя в списке, а затем — на значок удаления справа вверху. ![Без Названия (1)](https://content.timeweb.com/assets/3bcab2f9-121d-4776-bf6f-453190ead842?width=1457&height=863) # Работа из-под пользователя Source: https://timeweb.cloud/docs/iam/rabota-iz-pod-polzovatelya В этой статье коротко расскажем, как дополнительные пользователи аккаунта будут видеть панель управления и ее разделы. ## Авторизация в панель Сразу после того, как вы создали нового пользователя, на указанный вами емейл пользователя будет отправлено письмо со ссылкой для входа в панель. ![Image2](https://content.timeweb.com/assets/02b22d7c-07ce-4c3f-bb48-1f5d06bd9bb4?width=785&height=685) При первом логине мы отобразим логин и пароль для входа, чтобы пользователь сохранил эти данные. В дальнейшем для авторизации в панель пользователю будет нужно указывать свой email и пароль. ## Доступ «Управление» Разделы, к которым пользователь имеет доступ «Управление», будут выглядеть точно так же, как у владельца аккаунта. Пользователь сможет выполнять любые действия: создавать новые сервисы, удалять имеющиеся, менять их настройки и конфигурацию. ![330309c9 95ea 4328 9f9c 2b48e3131293](https://content.timeweb.com/assets/92b17632-9adb-454f-8596-977de8b22700?width=1487&height=1005) ## Доступ «Только просмотр» Разделы с правами «Только просмотр» можно будет просматривать, но вносить изменения через панель не получится — этот функционал будет отсутствовать. ![7fdbe9aa 22cf 475b Bdd7 B9b4e32d4b0d](https://content.timeweb.com/assets/cae8d1da-b710-4c14-be20-964d0b79bb04?width=1456&height=966) > [!NOTE] > Обратите внимание: опция «Только просмотр» дает право на просмотр всей информации раздела, **включая пароли к сервисам**. > > Например, пользователь с уровнем доступа «Только просмотр» к облачным серверам не сможет удалять серверы или создавать новые — но сможет подключаться к имеющимся серверам по SSH и выполнять с ними любые действия. ## Нет доступа В разделах, к которым у пользователя нет доступа, будет отображаться уведомление о недостаточных правах доступа. Если в разделе нет созданных сервисов: ![Beaa4d01 Eeb9 4cec 821a 09b2526d6d95](https://content.timeweb.com/assets/de4c8170-eba6-492a-8811-2c79f6a185c9?width=1480&height=921) Если в разделе созданы сервисы: ![2a3462a3 3adc 41eb 9b02 39386b7ec335](https://content.timeweb.com/assets/86ccebe0-d502-4e13-8f45-4fbbdefd09b1?width=1470&height=900) ## Настройки аккаунта и интерфейса В разделе «Настройки аккаунта» пользователь с любым уровнем доступа будет видеть только свои данные. ![E3c5563b 2612 4e1b 856d A9d8b623c366](https://content.timeweb.com/assets/358bef80-d725-4013-a4ce-dd80cd637aee?width=1474&height=860) При этом он сможет изменить внешний вид интерфейса для себя, а именно включить/отключить темную тему и выбрать язык интерфейса. Эти изменения будут применены только для конкретного пользователя. # Проекты Source: https://timeweb.cloud/docs/projects [Проекты](https://timeweb.cloud/my/projects) — это логические подразделы панели управления, которые позволяют объединять сервисы по смыслу и назначению. ![5f0e2f28 0495 4913 Bcb4 Ee234e25d46c](https://content.timeweb.com/assets/87fa78f7-fe17-4367-93ac-9dc193dc08a0.png?width=1563&height=915) Проекты не влияют на техническую работу сервисов: они не настраивают их взаимодействие и не изменяют конфигурации. Их задача — навести порядок в панели управления и дать наглядное представление о том, что к чему относится. В проекты можно добавлять серверы, облачные сервисы, почтовые ящики и домены. По умолчанию на аккаунте создан «Общий проект», куда автоматически добавляются все сервисы, при создании которых вы не выбрали какой-то другой проект. ### Для чего нужны проекты - **Логическая группировка сервисов** Проекты помогают собирать сервисы в тематические общности. Например, в проект «Сайт» можно добавить относящиеся к вашему сайту сервер, облачную базу данных, S3‑хранилище, домен и почтовые ящики. Так инфраструктура становится понятнее: видно, какие ресурсы относятся к конкретному продукту, приложению или задаче. - **Разграничение доступа** Проекты упрощают управление правами доступа внутри команды. Если вы размещаете несколько приложений в Timeweb Cloud и над каждым работает своя команда, вы можете сгруппировать сервисы каждого приложения в отдельный проект и [выдать доступ](https://timeweb.cloud/docs/iam/upravlenie-polzovatelyami) к проекту только тем сотрудникам, которые работают с этим приложением. Это позволяет ограничить доступ к чужим ресурсам и снизить риск ошибок. - **Визуализация инфраструктуры** В каждом проекте доступна [схема инфраструктуры](https://timeweb.cloud/docs/projects/infrastructure-diagram), которая показывает связи между добавленными сервисами. Схема помогает быстрее разобраться в устройстве проекта, что может быть особенно полезно при работе в команде или передаче задач. - **Прозрачность расходов** Проекты упрощают контроль расходов и планирование бюджета. В разделе [«Подключенные сервисы»](https://timeweb.cloud/my/finances/services) мы отображаем [детализацию расходов](https://timeweb.cloud/docs/service-payments/billing-details) в том числе по каждому проекту. Это позволяет видеть, сколько стоит конкретный проект, сравнивать бюджеты проектов, а также контролировать и планировать расходы. ### Сортировка проектов Проекты можно расставлять в удобном порядке, перемещая их с помощью drag-and-drop, как в боковом меню, так и на главной странице раздела [«Проекты»](https://timeweb.cloud/my/projects): ![Проекты 04 10 2026 10 53 Am](https://content.timeweb.com/assets/a5268123-863d-4975-aa76-2b6b9113a8d7.png?width=1590&height=757) # Добавление сервисов в проекты Source: https://timeweb.cloud/docs/projects/adding-services Добавить сервис в нужный проект можно в любой момент — как при его создании, так и уже после, в настройках существующего сервиса. ## Для новых сервисов При создании сервиса выбор проекта доступен на последнем шаге: ![0bd5654b E185 4283 Adde D2c50d7f3965](https://content.timeweb.com/assets/14d8cdf4-e224-4784-b24e-2f3746f8b5e0.png?width=731&height=567) Вы также можете начать создание сервиса сразу со страницы проекта — в этом случае нужный проект будет выбран в форме создания автоматически. ![B50ba4c2 262c 4652 Ba13 0cd3f1aac25e](https://content.timeweb.com/assets/11a73f07-50ea-446a-b8a6-edbdf917fd5f.png?width=1561&height=869) ## Для существующих сервисов Самый простой способ добавить сервис в проект — сделать это на странице нужного проекта. 1. Кликните на нужный проект в меню слева. 2. Нажмите «Добавить в проект» сверху страницы. ![Ed5e942c 0db2 44c1 B114 F59588aa4648](https://content.timeweb.com/assets/82c9271f-acd9-4813-b67e-692a68e0bea2.png?width=1550&height=869) 3. Выберите сервис или сервисы, которые нужно добавить в этот проект. ![4894e926 5ef5 4934 9769 5874a0f4f6d4](https://content.timeweb.com/assets/ca7b5478-1aea-46c3-b659-0887961bb4da.png?width=1555&height=814) 4. Сохраните изменения. Другой вариант — изменить проект в настройках сервиса. Например, для серверов это можно сделать на вкладке «Конфигурация»: ![Fdf87b22 Df4e 4f18 Ac25 Ee9a16d6f3db](https://content.timeweb.com/assets/0cef9894-c34e-4a67-a27a-994641fce3e1.png?width=1561&height=869) # Настройка доступов Source: https://timeweb.cloud/docs/projects/access-setup Вы можете создавать пользователей и выдавать им доступы к сервисам внутри конкретных проектов. ![B5f79d64 68bb 44ac 8e57 76f51a3418b4](https://content.timeweb.com/assets/48648f0a-3f23-46e4-9d77-cf3e4dff996d.png?width=1562&height=807) Чтобы разрешить доступ к проекту определенным сотрудникам: 1. Создайте необходимых [дополнительных пользователей](https://timeweb.cloud/my/account/users) панели, если они еще не созданы. 2. При создании или редактировании пользователя выберите проект, к которому у пользователя должен быть доступ. 3. Определите тип доступа к нужным сервисам (управление или только просмотр). Подробную информацию по настройке доступов можно найти в статье [«Управление пользователями»](https://timeweb.cloud/docs/iam/upravlenie-polzovatelyami). # Схема инфраструктуры Source: https://timeweb.cloud/docs/projects/infrastructure-diagram Схема инфраструктуры позволяет визуализировать взаимосвязь сервисов, расположенных в рамках одного проекта. Чтобы открыть схему, перейдите [в раздел проектов](https://timeweb.cloud/my/projects) или разверните список проектов, выберите нужный проект и перейдите на вкладку «Схема инфраструктуры». ![Scr 20250617 Qipd](https://content.timeweb.com/assets/fae14f9d-8baf-422f-8dad-4cd5ebbe355c.png?width=2030&height=1618) На схеме по умолчанию отображаются все сервисы, добавленные в проект. При добавлении нового сервиса он автоматически появится на схеме. Интерфейс редактора поддерживает различные функции. С помощью меню слева вы можете: - Добавить текстовый блок; - Добавить комментарий; - Создать новый облачный сервер, облачную базу, балансировщик или бакет S3. Вы сможете сразу разместить создаваемый сервис в нужном месте схемы и задать параметры в открывшемся окне. ![New Project 04 10 2026 11 22 Am](https://content.timeweb.com/assets/64ec0c1f-0de2-4b68-8b4f-01af6cadc591.png?width=1745&height=869) В меню под схемой доступно: - Масштабирование - Блокировка схемы - Центрирование схемы - Скачивание схемы в формате .png - Полноэкранный режим ![New Project 04 10 2026 11 24 Am](https://content.timeweb.com/assets/f7f424f8-c884-4629-bc0b-bea68593aa3b.png?width=2549&height=2046) Сервисы, объединенные в одну приватную сеть, группируются в общий блок. Для отображения связи между сервисами можно соединить их стрелкой. Чтобы это сделать, нажмите на нужный сервис и потяните за одну из синих точек. При подведении курсора к одной из сторон другого блока стрелка автоматически «примагнитится» к нему. Удалить стрелку, комментарий или текстовый блок можно с помощью клавиши Backspace — выделите элемент и нажмите клавишу на клавиатуре. Нажав на три точки возле любого сервиса, вы можете перейти на его страницу. Для облачных серверов также доступен переход в консоль. ![Scr 20250617 Qjzc](https://content.timeweb.com/assets/14bb2db2-f02a-4802-b73a-6e9153981574.png?width=1992&height=1618) # TimewebGPT Source: https://timeweb.cloud/docs/timewebgpt TimewebGPT — это инструмент, реализующий модель языкового прогнозирования на основе нейронных сетей. TimewebGPT внедрен в панель управления Timeweb Cloud (в настоящий момент — в «Проекты», «Домены и SSL» и онлайн-чат) и предоставляет вам доступ к искусственному интеллекту, с помощью которого вы можете: - подобрать инфраструктуру для бизнеса; - подобрать домен для проекта; - решить разнообразные технические задачи (например, настроить сервер), задавая вопросы в онлайн-чат TimewebGPT. Для работы с TimewebGPT не требуются какие-либо технические навыки: достаточно своими словами (но как можно подробнее) описать свой запрос — и нейросеть предложит вам сгенерированные варианты решений. > [!NOTE] > Информация, которую вы указываете в запросе для TimewebGPT, значительно влияет на качество получаемых результатов. > > TimewebGPT анализирует введенные вами данные и генерирует ответ на основе шаблонов, которые он усвоил в ходе обучения. > > Чем подробнее и точнее вы опишите свой проект, тем лучше будет качество получаемых результатов. Ниже мы подробнее расскажем, как использовать TimewebGPT в панели и как формулировать запросы (промпты), чтобы получать наилучшие результаты. ## Подбор инфраструктуры с помощью TimewebGPT TimewebGPT поможет подобрать инфраструктуру для вашего бизнеса на основании описания проекта. ### Как это работает? Чтобы подобрать сервисы с помощью нейросети: 1. Откройте любой проект в разделе «[Проекты](https://timeweb.cloud/my/projects/)» и нажмите на кнопку «Подобрать с помощью ИИ». ![A95cd95a 57e0 46fa Ad97 Baa31259a4be](https://content.timeweb.com/assets/9018633d-55ea-4461-b576-41eac6f00a3b?width=1483&height=1111) Либо, если в проекте уже есть сервисы, «Создать» → «Подобрать с помощью ИИ»: ![3142b671 A546 4e0b 897e 500726facd6b](https://content.timeweb.com/assets/7f36a274-2b4b-459b-b4cb-977a28495eb4?width=1521&height=842) 2. Опишите ваш проект с учетом рекомендаций ниже и нажмите «Подобрать сервисы». ### Рекомендации по написанию промпта - Подробно опишите тематику вашего сайта или нюансы проекта, которые стоит учесть при подборе сервисов. Например: требуемый объем дискового пространства под ваш проект, количество посетителей в день, минимальные системные требования, какая операционная система или ПО вам нужны. Опишите ваш проект так, как будто вы общаетесь с реальным специалистом и перечисляете факторы, которые нужно учесть, прежде чем порекомендовать вам услугу. Чем подробнее и конкретнее описание — тем лучше. - Формулируйте запрос четко и конкретно. Чем детальнее промпт, тем лучше будет результат. - Избегайте двусмысленности и неопределенности в формулировках. Соблюдение этих рекомендаций поможет вам сформировать максимально корректный запрос и получить наиболее точный и полезный ответ от TimewebGPT. ### Примеры запросов **Запрос**: У меня веб-приложение, которое анализирует рынок недвижимости и помогает пользователям арендовать или купить жилье. Количество посещений в сутки около 10 000 пользователей, база данных MySQL 8, под системные файлы необходимо 100 ГБ диска. Подбери мне сервисы для размещения приложения. **Ответ TimewebGPT:** ![7b35a4a1 Bd51 4347 Bfa4 A093929703c4](https://content.timeweb.com/assets/3dbe11a6-e50a-478a-a969-c3ff821b0dc4?width=934&height=939) **Запрос**: У меня Telegram-бот, он помогает пользователям получать новости с разных сайтов с помощью RSS-лент. Количество запросов на сайты около 50000 в сутки. Информация о сайтах и пересланных новостях хранится в БД MySQL, под файлы хватит 20 ГБ. Подбери сервисы с учетом будущего масштабирования проекта **Ответ TimewebGPT**: ![Без Названия](https://content.timeweb.com/assets/24c08a9d-515c-4da5-bc27-f14589b520a0?width=946&height=854) **Запрос**: Мы крупная корпорация с 5 офисами по всему миру. Подбери нам сервисы и объем хранилища для создания отказоустойчивой системы резервного копирования с возможностью быстрого восстановления в случае сбоя. Ежедневно генерируется около 2 ТБ новых данных для резервного копирования, используется БД MySQL **Ответ TimewebGPT:** ![B5a73da2 5352 4779 9674 16387d001761](https://content.timeweb.com/assets/90650e23-3dc8-4f57-92a2-b2361787cb13?width=945&height=875) **Запрос**: Мы разработали высоконагруженный мобильный мессенджер с функционалом голосовых и видеозвонков. Приложение должно поддерживать свыше 100 000 активных пользователей в сутки. База данных будет использовать MongoDB для хранения сообщений и медиаконтента 3 ТБ. Подбери нам сервисы для размещения проекта. **Ответ TimewebGPT:** ![2b44df55 E919 4a4b B6a7 3d9427bb2ad6](https://content.timeweb.com/assets/d6f8e9b1-d634-4c0b-a647-aeb4c1c768a6?width=942&height=853) ## Генератор доменных имен TimewebGPT С помощью нейросети TimewebGPT можно подбирать доменные имена. Вы описываете свой сайт или проект — и TimewebGPT генерирует уникальные и **свободные** домены, подходящие именно под ваш бизнес. Благодаря этому вы значительно сэкономите время и усилия, затрачиваемые при традиционном подборе доменных имен. Сервис ищет домены во всех 350+ зонах, которые поддерживает Timeweb Cloud, в том числе в самых популярных: .RU, .РФ, .COM, .SITE и т.д. ### Как подбирать домены? - В разделе «[Домены и SSL](https://timeweb.cloud/my/domains/)» кликните «Купить домен» и перейдите на вкладку «[ИИ-генератор](https://timeweb.cloud/my/domains/registration/gpt)». ![F53b012a 63ea 4679 9376 868a9721f0f5](https://content.timeweb.com/assets/e64d6c08-06bc-4e18-b803-07f3a4e88236.png?width=1532&height=867) - Опишите ваш проект, следуя рекомендациям ниже, и нажмите «Сгенерировать». ### Рекомендации по написанию промпта для доменов - Опишите свой проект или компанию. Укажите ключевые слова или фразы, характеризующие вашу деятельность. Чем подробнее и конкретнее описание — тем качественнее результат. - Добавьте в запрос название вашего бренда или компании. - Задайте длину домена и укажите ключевое слово, которое необходимо использовать в названии домена. - Не указывайте названия конкурентов — TimewebGPT может использовать их в предложенных вариантах. - Экспериментируйте с описанием, чтобы подобрать наиболее подходящий домен, который будет полностью отражать суть вашего проекта. Нейросеть предложит вам список рекомендованных доменных имен, созданных по вашему запросу. Если вам нужны еще варианты — кликните «Перегенерировать». Предварительно можно внести уточнения в промпт, если необходимо. Если вы нашли подходящий домен — кликните «В корзину». Вы можете сразу перейти к покупке, нажав «Оплатить», или продолжить генерировать домены для других проектов. > [!NOTE] > Яркие и запоминающиеся домены «разлетаются» очень быстро. Если вы нашли свой идеальный домен, не рекомендуем откладывать покупку надолго — он может быть занят в любой момент. ### Примеры запросов для доменов **Запрос**: Мы предлагаем услуги DevOps-инженеров для сопровождения жизненного цикла любого сервиса. Наш аутсорсинг DevOps подходит как для стартапов, так и для существующих проектов любого размера бизнеса. Подбери нам домен, можно состоящий из 2 слов. **Ответ TimewebGPT**: ![E440956c E20c 4d69 8b71 D3720230cf6e](https://content.timeweb.com/assets/94170af3-c6b3-4478-a85c-bef5ef7b00d3.png?width=1535&height=1223) **Запрос**: Веб-приложение для изучения английского языка. Предлагает разнообразные тренировки для расширения словарного запаса и развития навыков чтения, письма и аудирования. Возможность изучать лексику по трекам, фильмам и книгам, доступно общение с другими пользователями. **Ответ TimewebGPT**: ![Eb47afc3 877a 4488 B7f2 Ed86edecc19d](https://content.timeweb.com/assets/4cbc50b1-66f8-47f7-93ac-39657ce82d0c.png?width=1543&height=1361) **Запрос**: Интернет-магазин по продаже чехлов для мобильных телефонов. Мы предоставляем большой выбор чехлов с разными принтами, а также есть возможность заказать печать своего принта. Подбери мне домен, использовав ключевое слово case, длина домена не должна превышать 15 символов. **Ответ TimewebGPT**: ![839fadc0 40fc 44b1 Bf37 Fa926b054461](https://content.timeweb.com/assets/943311ae-aa7e-4ef1-a5e8-217958404159.png?width=1541&height=1363) # Приложение Timeweb Cloud Source: https://timeweb.cloud/docs/app Приложение Timeweb Cloud — полноценная панель управления облачными сервисами в вашем смартфоне. ![App1](https://content.timeweb.com/assets/6be797c3-e65b-4f76-b229-f78c7998eafb?width=2560&height=1800) ### **Возможности приложения** Мобильное приложение Timeweb Cloud поддерживает весь функционал браузерной версии панели управления — всё, что вы делали на десктопе, теперь можно делать со смартфона или планшета. В том числе: - Пополнять счет - Отслеживать потребление ресурсов - Добавлять или удалять сервисы - Менять конфигурацию - Регистрировать домены - Управлять проектами - Управлять пользователями и доступом - Связываться с поддержкой - Задавать вопросы TimewebGPT - Читать новости и предлагать новые идеи - И даже управлять серверами через консоль Установите приложение Timeweb Cloud и управляйте своей инфраструктурой с любого устройства и в любой момент времени. ### **Установка приложения** - [Google Play](https://play.google.com/store/apps/details?id=cloud.timeweb.app) - [App Store](https://apps.apple.com/us/app/timeweb-cloud/id6477579420?platform=iphone) - [AppGallery](https://appgallery.huawei.com/#/app/C110804955) - [RuStore](https://www.rustore.ru/catalog/app/cloud.timeweb.app)