Подключение к базе
Базы данных и Data API открыты пока не всем: раздел проходит закрытый пилот на нескольких аккаунтах. Если в меню панели нет пункта «Базы данных» — доступа у вас ещё нет, и создать базу не получится ни из панели, ни из CLI.
Чтобы попасть в пилот, напишите нам в чат «💬» в правом нижнем углу панели — включим вручную. Другого способа получить доступ сейчас нет.
Всё, что описано на этих страницах, уже работает — но названия, кнопки и ответы ручек ещё меняются. Страница может отстать от продукта на несколько дней; заметили расхождение — напишите тем же чатом, это помогает.
Строка подключения лежит в панели, на странице базы, и выглядит так:
postgresql://<роль>:<пароль>@db.layero.ru:5432/<база>?sslmode=verify-full
db.layero.ru — единый вход для всех баз Layero. Адрес сервера, на котором
лежит именно ваша база, наружу не выдаётся: он может смениться, а строка
подключения — нет.
Приложениям, задеплоенным на Layero, эта строка приезжает сама в переменной
LAYERO_DATABASE_URL, как только вы подключите базу к проекту. Вписывать её
руками нужно только там, где приложение живёт не у нас.
Вторая база того же проекта получает суффикс по слагу —
LAYERO_DATABASE_URL_<СЛАГ>, — чтобы две строки не спорили за одно имя.
:::note Почему не DATABASE_URL
Так называется переменная у половины хостингов и библиотек, и подставленная
нами она молча перекрывала бы ту, что человек задал сам. Связи, заведённые до
этого правила, своё прежнее имя сохраняют — в карточке проекта видно, какое
имя приезжает вашему приложению.
:::
Шифрование обязательно
Шифрование — не рекомендация: подключение без TLS сервер отклоняет. Это относится и к psql, и к любому драйверу. Вопрос только в том, проверяет ли клиент, чей сертификат ему предъявили, — об этом ниже.
require шифрует канал, но не проверяет собеседника
Разница неочевидна.
require— трафик зашифрован, но клиент не проверяет, чей сертификат ему предъявили. От чтения на промежуточном узле защищает, от подмены сервера — нет.verify-full— клиент проверяет и подпись сертификата, и совпадение имени. Защищает и от подмены.
По умолчанию мы выдаём verify-full — самый строгий режим.
⚠️ Кроме принесённой базы. Про чужой сервер мы не знаем ни кто его подписал, ни лежит ли у вас его корень, — проверять нечем и советовать нечего. Панель говорит об этом прямо в окне подключения, а переключатель там погашен.
До 06.09.2026 то же самое относилось и к выделенному инстансу: его строка
вела прямо на кластер поставщика с самоподписанным сертификатом. Теперь она
ведёт на общий вход db.layero.ru, шифрование заканчивается на нашем
сертификате — и verify-full работает на любом размещении, кроме принесённой
базы.
⚠️ И у него есть цена, о которой надо знать заранее. verify-full требует,
чтобы у клиента был корневой сертификат в том месте, где его ищет библиотека.
libpq ищет его в ~/.postgresql/root.crt и в системное хранилище не смотрит,
а sslrootcert=system понимают не все драйверы — asyncpg, например, не
понимает. То есть без шага ниже строка не подключится у части клиентов, и
выглядеть это будет как «база не работает».
Рецепт — следующим разделом, он занимает одну команду. Если корень положить
некуда (чужой контейнер, managed-раннер), режим переключается на require в
панели: канал останется зашифрованным, проверки подлинности сервера не будет.
Приложениям, задеплоенным на Layero, платформа подставляет require сама:
класть корневой сертификат в образ, который собираете вы, мы не можем.
Как включить verify-full
Сертификат db.layero.ru выпущен Let's Encrypt, корень — ISRG Root X1.
1. Положить корень туда, где его ищет клиент
mkdir -p ~/.postgresql
curl -fsSL https://letsencrypt.org/certs/isrgrootx1.pem -o ~/.postgresql/root.crt
Проверьте, что файл действительно корневой сертификат:
openssl x509 -in ~/.postgresql/root.crt -noout -subject
# subject=C = US, O = Internet Security Research Group, CN = ISRG Root X1
2. Поменять строку подключения
postgresql://<роль>:<пароль>@db.layero.ru:5432/<база>?sslmode=verify-full
Драйверы
| Клиент | Что нужно |
|---|---|
psql, libpq | шаг 1 выше, дальше sslmode=verify-full работает |
asyncpg | шаг 1 обязателен: sslrootcert=system не понимает |
node-pg | берёт системные корни сам, шаг 1 не нужен |
Prisma | sslmode=verify-full в DATABASE_URL, корень по шагу 1 |
Drizzle | зависит от драйвера под ним — смотрите его строку в этой таблице |
В контейнере, где нет домашнего каталога
Положите корень в образ и укажите путь явно:
postgresql://<роль>:<пароль>@db.layero.ru:5432/<база>?sslmode=verify-full&sslrootcert=/etc/ssl/certs/isrgrootx1.pem
Кого пускать к базе
На странице базы, во вкладке «Сеть», три режима:
| Режим | Кто может подключиться |
|---|---|
| Только ресурсы Layero | приложения, подключённые к этой базе, и сервисы платформы |
| Список адресов | они же плюс адреса, которые вы перечислили |
| Открыто всем | кто угодно, если знает пароль |
Новые базы заводятся в режиме «Только ресурсы Layero»: приложение работает сразу, а доступ снаружи — с ноутбука, из CI, из чужого хостинга — вы открываете сами и осознанно.
У правила в списке адресов может быть срок: удобно, когда доступ нужен подрядчику на неделю, а не навсегда.
:::tip Не знаете свой адрес Домашний и офисный адреса обычно меняются. Если подключение перестало проходить после смены провайдера или переезда, сначала проверьте, что ваш текущий адрес всё ещё в списке. :::
Если подключение не проходит
| Что говорит клиент | Что это значит |
|---|---|
login rejected | ваш адрес не подходит ни под одно правило — проверьте вкладку «Сеть» |
SASL authentication failed | адрес разрешён, не подошёл пароль |
no such user | опечатка в имени роли |
| ошибка проверки сертификата | вы включили verify-full, но не положили корень — см. шаг 1 |
| соединение висит и отваливается | слишком много подключений с одного адреса; закройте лишние |