NocoDB с нуля
Пошаговый курс для новичков: от установки до REST API и автоматизаций. Ничего не нужно знать заранее — идите по разделам сверху вниз или ищите нужную тему в поиске.
Что такое NocoDB и зачем он нужен
NocoDB — это бесплатная open-source платформа, которая превращает обычную базу данных (MySQL, PostgreSQL, SQLite, MS SQL) в удобную «умную таблицу» — что-то среднее между Excel и Airtable, но с настоящей БД внутри и своим API.
Проще говоря: вы создаёте таблицы визуально, как в Google Таблицах, а NocoDB сама превращает их в полноценную реляционную базу данных с готовым REST API — программировать для этого не нужно.
Зачем это нужно
Без кода
Создавайте таблицы, связи, формы и автоматизации мышкой, без единой строчки кода.
Свои данные
Можно развернуть у себя (self-hosted) — данные остаются под вашим контролем, а не в чужом облаке.
Готовый API
Для каждой таблицы автоматически появляется REST и GraphQL API — удобно для интеграций и своих приложений.
Бесплатно
Open-source ядро можно использовать бесплатно неограниченно, в отличие от платных лимитов Airtable.
Для каких задач подходит
- CRM для малого бизнеса — учёт клиентов и сделок
- Трекер задач и проектов
- Учёт склада и инвентаря
- База контента (статьи, товары, каталоги)
- Формы сбора заявок с автоматической записью в таблицу
Установка и развёртывание
Есть два пути: воспользоваться облаком NocoDB (быстрее всего) или развернуть свою копию (полный контроль над данными). Для обучения хватит любого — рекомендуем начать с облака, а Docker освоить, когда захотите независимость от сервиса.
Вариант A — облако (самый быстрый старт)
- Зайдите на официальный сайт NocoDB и зарегистрируйтесь (есть бесплатный план).
- Создайте Workspace (рабочее пространство) — это контейнер для ваших баз.
- Внутри Workspace создайте Base (базу) — с ней и будете работать в следующих уроках.
Вариант B — свой сервер через Docker (self-hosted)
Самый простой запуск одной командой (данные хранятся в volume nc_data):
docker run -d --name nocodb \
-p 8080:8080 \
-v "$(pwd)"/nocodb-data:/usr/app/data \
nocodb/nocodb:latest
После запуска откройте http://localhost:8080 — при первом входе NocoDB попросит создать учётную запись супер-администратора (email + пароль).
Вариант B+ — docker-compose с PostgreSQL
Для «боевого» использования лучше подключить внешнюю БД, а не встроенный SQLite:
version: "3"
services:
nocodb:
image: nocodb/nocodb:latest
ports:
- "8080:8080"
environment:
NC_DB: "pg://postgres:5432?u=postgres&p=mypassword&d=nocodb"
depends_on:
- postgres
volumes:
- nc_data:/usr/app/data
postgres:
image: postgres:15
restart: always
environment:
POSTGRES_PASSWORD: mypassword
POSTGRES_DB: nocodb
volumes:
- pg_data:/var/lib/postgresql/data
volumes:
nc_data:
pg_data:
Запуск: docker compose up -d. Такой вариант надёжнее для продакшена — данные живут в отдельной СУБД, а не в файле SQLite.
Первый запуск и интерфейс
Структура NocoDB строится по цепочке: Workspace → Base → Table → View.
| Уровень | Что это |
|---|---|
| Workspace | Рабочее пространство — верхний уровень, объединяет базы одной команды/проекта |
| Base | База данных — набор связанных таблиц (например, «CRM» или «Склад») |
| Table | Таблица — как лист в Excel, хранит записи (строки) |
| View | Представление — способ показать одни и те же данные (таблица, канбан, календарь и т.д.) |
Создание первой базы
- Нажмите «+ New Base» в Workspace.
- Дайте базе название, например «Мой первый проект».
- Внутри автоматически появится пустая таблица — можно переименовать и начать добавлять поля.
- Данные можно и импортировать: кнопка Import поддерживает CSV, Excel, а также прямой импорт баз Airtable.
Основные зоны экрана
- Левая панель — список Workspace, Base и таблиц внутри них.
- Верхняя панель таблицы — переключение Views, поиск, фильтры, сортировка, группировка.
- Рабочая область — сама сетка данных (или канбан/календарь — зависит от View).
- Правая часть строки — иконка расширения записи (открыть карточку целиком).
Таблицы и типы полей
Каждая таблица состоит из полей (столбцов), и у каждого поля есть тип — от этого зависит, что можно в него вводить и как NocoDB будет это отображать.
Самые используемые типы полей
| Тип | Для чего |
|---|---|
| Single Line Text | Короткий текст — имя, заголовок |
| Long Text | Многострочный текст — описание, заметки |
| Number / Decimal | Целые и дробные числа |
| Currency / Percent | Деньги и проценты с автоформатированием |
| Date / DateTime | Дата и дата+время |
| Checkbox | Да/нет, галочка |
| Single Select / Multi Select | Выбор одного или нескольких значений из списка (статус, теги) |
| Attachment | Файлы и картинки |
| Email / URL / Phone | Поля со встроенной валидацией формата |
| Rating | Звёздный рейтинг |
| User | Ссылка на пользователя базы (например, «Ответственный») |
| Formula | Вычисляемое поле (см. урок 07) |
| Linked Record | Связь с записью другой таблицы (см. урок 06) |
| Lookup / Rollup | Подтягивание и агрегация данных из связанной таблицы |
| Created/Updated Time | Автоматическая метка создания/изменения записи |
| Auto Number / ID | Автоинкрементный идентификатор записи |
Как добавить поле
Нажмите «+» справа от последнего столбца → выберите тип → задайте название и, если нужно, дополнительные настройки (например, список вариантов для Select).
Представления (Views)
View — это просто другой способ посмотреть на те же данные таблицы. Данные общие, а фильтры/сортировка/группировка у каждого View — свои.
Grid
Стандартная таблица — вид по умолчанию, как в Excel.
Gallery
Карточки с превью вложений — удобно для каталогов товаров, портфолио.
Kanban
Колонки-карточки, сгруппированные по полю Select (например, по статусу задачи).
Calendar
Записи на календарной сетке по полю даты — удобно для событий и дедлайнов.
Form
Форма для сбора данных — отдельно разбираем в уроке 08.
Как создать View
В левой панели таблицы нажмите «+» рядом со списком Views → выберите тип → настройте фильтры, сортировку и (для Kanban) поле группировки.
Общий доступ к View
Любой View можно расшарить публичной ссылкой (кнопка Share View) — по желанию с паролем и запретом скачивания. Получатель ссылки увидит только этот View, без доступа к остальной базе.
Связи между таблицами
Связи — это то, что превращает набор таблиц в настоящую базу данных, а не просто набор несвязанных списков.
Linked Record (связь)
Поле типа Linked Record связывает запись одной таблицы с записью (или несколькими) другой. Например, таблица «Заказы» связана с таблицей «Товары» — в заказе можно выбрать один или несколько товаров из справочника.
- Has Many / Many to Many — одна запись может ссылаться на несколько записей другой таблицы.
- Has One — связь один-к-одному.
Lookup
Поле Lookup «подтягивает» значение конкретного поля из связанной записи. Например, в «Заказах» можно показать «Цену товара», не заходя в таблицу «Товары» — просто настроить Lookup на поле Linked Record.
Rollup
Rollup агрегирует данные по связанным записям: сумма, среднее, количество, минимум/максимум. Например, в таблице «Заказы» можно посчитать Rollup «Сумма заказа» = SUM цен связанных товаров.
Формулы
Поле Formula вычисляет значение на основе других полей той же записи — по формуле, похожей на Excel.
Частые функции
| Функция | Пример | Результат |
|---|---|---|
| SUM / AVG | SUM({Цена}, {Скидка}) | Сумма значений полей |
| IF | IF({Статус}='Оплачено', 'Готово', 'Ждём') | Условное значение |
| CONCAT | CONCAT({Имя}, ' ', {Фамилия}) | Склейка текста |
| DATEADD | DATEADD({Дата заказа}, 7, 'day') | Дата + 7 дней (например, дедлайн доставки) |
| ROUND | ROUND({Цена} * 1.2, 2) | Округление числа |
Пример: расчёт итоговой цены со скидкой
ROUND({Цена} * (1 - {Скидка,%} / 100), 2)
Просто выберите тип поля Formula, начните вводить название нужного поля в фигурных скобках — появится автоподсказка.
Формы
Form View превращает таблицу в веб-форму — удобно для сбора заявок, анкет, обратной связи: заполнивший форму человек не видит саму таблицу, а данные попадают прямо в неё новой строкой.
Как создать форму
- Создайте новый View типа Form.
- Для каждого поля настройте: показывать/скрывать, обязательное или нет, текст подсказки.
- Настройте заголовок и приветственный текст формы.
- Нажмите Share → скопируйте публичную ссылку (или получите код для встраивания на сайт через iframe).
Полезные настройки
- Сообщение после отправки — что увидит пользователь после заполнения.
- Уведомления — email при каждой новой отправке формы.
- Ограничение на одну отправку — по email/устройству, если форма не должна принимать дубликаты.
Права доступа и совместная работа
NocoDB поддерживает роли на уровне Workspace/Base — это позволяет приглашать коллег с разным уровнем доступа.
| Роль | Что может |
|---|---|
| Owner | Полный доступ, включая удаление базы и управление участниками |
| Creator | Создавать/менять таблицы, поля, Views, но не управлять биллингом |
| Editor | Добавлять и редактировать записи, без изменения структуры таблиц |
| Commenter | Только просмотр и комментирование записей |
| Viewer | Только просмотр, без изменений |
Как пригласить участника
Workspace → Members → Invite → указать email и роль. Также можно расшарить отдельную Base или View отдельной ссылкой без приглашения в Workspace.
Комментарии к записям
Откройте запись (expand row) → вкладка Comments — удобно для обсуждения конкретной задачи/заказа прямо внутри базы, без переписки в мессенджерах.
REST API
Одна из главных фишек NocoDB: для каждой базы автоматически генерируется REST API (и GraphQL) — без единой строчки бэкенд-кода с вашей стороны.
Получение токена доступа
- Откройте иконку профиля → Account Settings → Tokens.
- Создайте новый токен (API Token).
- Используйте его в заголовке
xc-tokenкаждого запроса.
Пример запроса — получить записи таблицы
curl -X GET "https://your-nocodb.com/api/v2/tables/<TABLE_ID>/records" \
-H "xc-token: YOUR_API_TOKEN"
Пример — добавить запись
curl -X POST "https://your-nocodb.com/api/v2/tables/<TABLE_ID>/records" \
-H "xc-token: YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"Название": "Новая задача", "Статус": "В работе"}'
Пример на JavaScript (fetch)
const res = await fetch("https://your-nocodb.com/api/v2/tables/TABLE_ID/records", {
headers: { "xc-token": "YOUR_API_TOKEN" }
});
const data = await res.json();
console.log(data.list); // массив записей
ID таблицы (TABLE_ID) можно найти в адресной строке при открытой таблице, либо через встроенную Swagger-документацию API: кнопка «API Docs» в интерфейсе базы.
Автоматизации и интеграции
Webhooks
Вебхук — это правило «когда в таблице происходит X, отправить HTTP-запрос на URL Y». Настраивается в разделе Details таблицы → Webhooks.
- Событие: After Insert, After Update, After Delete.
- Можно добавить условие (например, только если поле «Статус» = «Оплачено»).
- URL получателя — например, адрес чат-бота, Zapier/Make webhook-приёмник или ваш сервер.
Готовые интеграции
Slack / Discord / MS Teams
Уведомления в чат при изменении данных.
Zapier / Make (Integromat)
Связка NocoDB с сотнями других сервисов без кода.
n8n
Open-source альтернатива Zapier, отлично сочетается с self-hosted NocoDB.
Email-уведомления
Встроенная отправка письма по событию в таблице.
Пример сценария
Новая заявка через Form → запись создаётся в таблице «Заявки» → срабатывает Webhook на After Insert → запрос уходит на Zapier/n8n → оттуда сообщение улетает в Telegram-чат менеджера.
Мини-проект: трекер задач
Соберём простой, но полноценный трекер задач — на нём закрепится всё пройденное.
Шаг 1. Таблица «Задачи»
| Поле | Тип |
|---|---|
| Название | Single Line Text (Display Value) |
| Описание | Long Text |
| Статус | Single Select: «Новая», «В работе», «Готово» |
| Приоритет | Single Select: «Низкий», «Средний», «Высокий» |
| Срок | Date |
| Ответственный | User |
Шаг 2. Kanban-доска
Создайте View типа Kanban, сгруппированный по полю «Статус» — получится доска в стиле Trello, где карточки можно перетаскивать между колонками.
Шаг 3. Форма для новых задач
Создайте Form View с полями «Название», «Описание», «Срок» — поделитесь ссылкой с командой, чтобы задачи заводились без доступа к самой базе.
Шаг 4. Уведомление в чат
Добавьте Webhook на After Insert в таблице «Задачи», чтобы при появлении новой задачи менеджер сразу получал сообщение (через Slack/Telegram-интеграцию из урока 11).
Шаг 5. Формула «Просрочено»
IF(AND({Срок} < NOW(), {Статус} != 'Готово'), '⚠️ Просрочено', '')
Добавьте это как поле Formula — задачи с истёкшим сроком и незавершённым статусом сразу подсветятся.
Шпаргалка и FAQ
Частые вопросы
Чем NocoDB отличается от Airtable? Похожий подход к интерфейсу, но NocoDB — open-source, можно развернуть у себя бесплатно и без лимитов на записи, а данные хранятся в обычной SQL-базе, которой вы владеете.
Можно ли подключить NocoDB к уже существующей базе данных? Да — при создании Base можно указать подключение к внешней MySQL/PostgreSQL/MSSQL базе вместо создания новой.
Как сделать резервную копию? Для self-hosted — обычный бэкап volume/БД (pg_dump для PostgreSQL). Для облака — экспорт таблиц в CSV или использование снапшотов сервиса.
Формулы не считают — в чём проблема? Проверьте, что названия полей в фигурных скобках совпадают точно (включая регистр), и что типы данных совместимы (нельзя складывать текст напрямую как число).
Полезные ссылки
- Официальная документация: docs.nocodb.com
- GitHub проекта: github.com/nocodb/nocodb