# Переменные окружения и секреты

Курс: Claude Code и терминал: с 0 — https://zero2claude.ru/learn/code-terminal
Канонический URL: https://zero2claude.ru/learn/code-terminal/14-4-peremennye-okruzheniya

Ключи и пароли нельзя писать прямо в коде — их хранят в переменных окружения: секретных настройках на хостинге. Код берёт их оттуда, а в Git и чужие глаза секрет не попадает.

На уровне 11 ты уже усвоил важное правило: ключи доступа и пароли — это секреты, и их нельзя писать прямо в коде. Но тогда возникает законный вопрос: а где же их держать, если коду они всё-таки нужны? Сейчас, когда мы готовимся выкладывать проект на хостинг, ответ становится особенно важным. И ответ этот — **переменные окружения**.

## Почему ключ в коде — это плохо

Вспомним, почему секрет нельзя вписывать в код. Когда ты коммитишь проект в Git и подключаешь его к хостингу, **весь код уезжает в репозиторий**. И если ключ написан прямо в файле, он уедет вместе с ним. Дальше его может увидеть кто угодно с доступом к репозиторию — а значит, воспользоваться им от твоего имени.

Это как написать пароль от карты прямо на самой карте. Карту ты кому-то показал — и пароль тут же ушёл вместе с ней. Секрет, который лежит в коде, перестаёт быть секретом.

## Переменные окружения — секретный «сейф» рядом с кодом

Решение — хранить секреты **отдельно от кода**. Для этого и придуманы **переменные окружения**: это секретные настройки, которые лежат рядом с программой, но *вне* самого кода. У каждой такой настройки есть имя и значение — например, имя `API_KEY` и значением твой ключ.

Работает это так:

- ты кладёшь ключ в переменную окружения, **а не в код**;
- код, когда ему нужен ключ, **берёт его оттуда** по имени;
- в Git уезжает только код — **без секрета внутри**.

Получается аккуратно: код можно спокойно показывать и выкладывать, а ключ остаётся в защищённом «сейфе» отдельно.

## На хостинге для этого есть специальное место

Самое удобное, что хостинг — например, Vercel — заранее знает про эту проблему. У него есть специальный раздел, куда ты вписываешь свои переменные окружения: имя и значение. Хостинг хранит их в секрете и подставляет в проект уже на сервере, когда тот работает. В код они при этом не попадают, а в Git — тем более.

Если не знаешь, какие переменные окружения нужны твоему проекту, спроси Claude: он подскажет, какие секреты используются в коде и под какими именами их завести на хостинге. Так ничего не забудешь и не оставишь случайно ключ в коде.

## Попробуй

Терминального задания нет. Запомни цепочку: ключи и пароли **в код не пишут**; их хранят в **переменных окружения** — секретных настройках рядом с программой; на хостинге для этого есть отдельное защищённое место. Так твои секреты не попадут ни в Git, ни в чужие руки — и проект можно спокойно выкладывать в мир.
