# Секреты

URL: https://docs.nolay.ru/guides/secrets/
Updated: 2026-09-23

> Передать проекту пароли и ключи так, чтобы их значения не хранились в панели и не попадали в репозиторий.

Секрет это переменная окружения со значением, которое нельзя класть в репозиторий: пароль базы, ключ API, токен. После этой страницы секреты будут у проекта, а их значения только на вашем сервере.

## Как задать

1. Откройте проект в панели, вкладка «Секреты».
2. В блоке «Добавить или заменить» впишите ключ и значение, «Добавить строку» даёт следующую. Можно вставить в поле ключа целый файл `.env` или переключиться в режим «.env».
3. Нажмите «Сохранить секреты». Над кнопкой видно, сколько ключей добавится, изменится и удалится. Панель отправит набор агенту, и проект перезапустится с новыми переменными. Образ при этом не пересобирается.

![Сохранённые ключи видны только именами, значение можно лишь заменить новым.](https://docs.nolay.ru/shots/ru/project-secrets-light.png)

> **Значения не показываются**
>
> Панель не знает прежних значений: сохранённый ключ можно заменить новым значением или удалить, но не посмотреть. Если на странице есть пометка о старой версии агента, удалить ключ можно только вместе с новыми значениями остальных.

## Где хранятся значения

| Где | Что там |
|---|---|
| Панель | Только имена ключей и отпечаток набора. Значений нет ни в базе, ни в журнале действий |
| Hub | Значение проходит транзитом: в очереди команд оно лежит зашифрованным до доставки агенту |
| Ваш сервер | Значения зашифрованы AES-256-GCM ключом `/etc/nolay/agent.key` в базе агента |

Посмотреть значение повторно после сохранения нельзя нигде, даже командой `nolay-agent status`: она печатает только имена.

## Секреты и `[env]`

Несекретные переменные можно держать в `nolay.toml`:

```toml
[env]
NODE_ENV = "production"
LOG_LEVEL = "info"
```

Секреты и `[env]` попадают в контейнер вместе. Если ключ есть и там, и там, побеждает секрет. Ключи пишутся заглавными латинскими буквами, цифрами и `_`.

## Служебные ключи `NOLAY_*`

Ключи с приставкой `NOLAY_` нужны самому агенту и в контейнер приложения не попадают никогда:

| Ключ | Зачем |
|---|---|
| `NOLAY_GIT_TOKEN` | доступ к закрытому репозиторию по HTTPS |
| `NOLAY_GIT_SSH_KEY` | доступ к закрытому репозиторию по SSH, многострочным значением |
| `NOLAY_GIT_SSH_KNOWN_HOSTS` | ключи хоста Git; без него агент запоминает ключ хоста при первом подключении и дальше сверяет с ним |
| `NOLAY_S3_ENDPOINT`, `NOLAY_S3_BUCKET`, `NOLAY_S3_ACCESS_KEY`, `NOLAY_S3_SECRET_KEY` | хранилище для бэкапов |

## Если не получилось

| Что видно | Почему | Что сделать |
|---|---|---|
| Приложение не видит переменную | Ключ начинается с `NOLAY_` | Переименуйте ключ |
| Код `no_secrets_key` | На сервере нет ключа шифрования | Запустите команду установки ещё раз |
| Нужно узнать сохранённое значение | Панель его не хранит | Возьмите значение из источника (менеджер паролей, консоль сервиса) и при необходимости задайте заново |

## Что дальше

Прочитайте, [что хранится и где](/concepts/data/).
