NocoDB с нуля

NocoDB с нуля

Пошаговый курс для новичков: от установки до REST API и автоматизаций. Ничего не нужно знать заранее — идите по разделам сверху вниз или ищите нужную тему в поиске.

13 уроков Уровень: с нуля Практический мини-проект внутри
Урок 01

Что такое 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 для малого бизнеса — учёт клиентов и сделок
  • Трекер задач и проектов
  • Учёт склада и инвентаря
  • База контента (статьи, товары, каталоги)
  • Формы сбора заявок с автоматической записью в таблицу
Совет
Если вы раньше пользовались Excel или Google Таблицами — считайте, что NocoDB это то же самое, но с «умными» связями между листами, готовым API и контролем доступа, как в настоящей базе данных.
Урок 02

Установка и развёртывание

Есть два пути: воспользоваться облаком NocoDB (быстрее всего) или развернуть свою копию (полный контроль над данными). Для обучения хватит любого — рекомендуем начать с облака, а Docker освоить, когда захотите независимость от сервиса.

Вариант A — облако (самый быстрый старт)

  1. Зайдите на официальный сайт NocoDB и зарегистрируйтесь (есть бесплатный план).
  2. Создайте Workspace (рабочее пространство) — это контейнер для ваших баз.
  3. Внутри 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 на своём сервере и хотите открыть доступ извне (не только localhost), настройте HTTPS через reverse-proxy (nginx/Caddy) и не публикуйте порт 8080 напрямую в интернет без пароля.
Урок 03

Первый запуск и интерфейс

Структура NocoDB строится по цепочке: Workspace → Base → Table → View.

УровеньЧто это
WorkspaceРабочее пространство — верхний уровень, объединяет базы одной команды/проекта
BaseБаза данных — набор связанных таблиц (например, «CRM» или «Склад»)
TableТаблица — как лист в Excel, хранит записи (строки)
ViewПредставление — способ показать одни и те же данные (таблица, канбан, календарь и т.д.)

Создание первой базы

  1. Нажмите «+ New Base» в Workspace.
  2. Дайте базе название, например «Мой первый проект».
  3. Внутри автоматически появится пустая таблица — можно переименовать и начать добавлять поля.
  4. Данные можно и импортировать: кнопка Import поддерживает CSV, Excel, а также прямой импорт баз Airtable.

Основные зоны экрана

  • Левая панель — список Workspace, Base и таблиц внутри них.
  • Верхняя панель таблицы — переключение Views, поиск, фильтры, сортировка, группировка.
  • Рабочая область — сама сетка данных (или канбан/календарь — зависит от View).
  • Правая часть строки — иконка расширения записи (открыть карточку целиком).
Урок 04

Таблицы и типы полей

Каждая таблица состоит из полей (столбцов), и у каждого поля есть тип — от этого зависит, что можно в него вводить и как 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Автоинкрементный идентификатор записи
Совет
У каждой таблицы есть «Display Value» — поле, которое показывается вместо ID записи при её упоминании в других таблицах (обычно название или имя). Выбирайте для этой роли самое понятное текстовое поле.

Как добавить поле

Нажмите «+» справа от последнего столбца → выберите тип → задайте название и, если нужно, дополнительные настройки (например, список вариантов для Select).

Урок 05

Представления (Views)

View — это просто другой способ посмотреть на те же данные таблицы. Данные общие, а фильтры/сортировка/группировка у каждого View — свои.

Grid

Стандартная таблица — вид по умолчанию, как в Excel.

Gallery

Карточки с превью вложений — удобно для каталогов товаров, портфолио.

Kanban

Колонки-карточки, сгруппированные по полю Select (например, по статусу задачи).

Calendar

Записи на календарной сетке по полю даты — удобно для событий и дедлайнов.

Form

Форма для сбора данных — отдельно разбираем в уроке 08.

Как создать View

В левой панели таблицы нажмите «+» рядом со списком Views → выберите тип → настройте фильтры, сортировку и (для Kanban) поле группировки.

Общий доступ к View

Любой View можно расшарить публичной ссылкой (кнопка Share View) — по желанию с паролем и запретом скачивания. Получатель ссылки увидит только этот View, без доступа к остальной базе.

Урок 06

Связи между таблицами

Связи — это то, что превращает набор таблиц в настоящую базу данных, а не просто набор несвязанных списков.

Linked Record (связь)

Поле типа Linked Record связывает запись одной таблицы с записью (или несколькими) другой. Например, таблица «Заказы» связана с таблицей «Товары» — в заказе можно выбрать один или несколько товаров из справочника.

  • Has Many / Many to Many — одна запись может ссылаться на несколько записей другой таблицы.
  • Has One — связь один-к-одному.

Lookup

Поле Lookup «подтягивает» значение конкретного поля из связанной записи. Например, в «Заказах» можно показать «Цену товара», не заходя в таблицу «Товары» — просто настроить Lookup на поле Linked Record.

Rollup

Rollup агрегирует данные по связанным записям: сумма, среднее, количество, минимум/максимум. Например, в таблице «Заказы» можно посчитать Rollup «Сумма заказа» = SUM цен связанных товаров.

Пример связки
Таблица «Клиенты» ← Linked Record → «Заказы» ← Linked Record → «Товары». В «Клиентах» через Rollup можно показать «Общая сумма покупок клиента», просуммировав его заказы.
Урок 07

Формулы

Поле Formula вычисляет значение на основе других полей той же записи — по формуле, похожей на Excel.

Частые функции

ФункцияПримерРезультат
SUM / AVGSUM({Цена}, {Скидка})Сумма значений полей
IFIF({Статус}='Оплачено', 'Готово', 'Ждём')Условное значение
CONCATCONCAT({Имя}, ' ', {Фамилия})Склейка текста
DATEADDDATEADD({Дата заказа}, 7, 'day')Дата + 7 дней (например, дедлайн доставки)
ROUNDROUND({Цена} * 1.2, 2)Округление числа

Пример: расчёт итоговой цены со скидкой

ROUND({Цена} * (1 - {Скидка,%} / 100), 2)

Просто выберите тип поля Formula, начните вводить название нужного поля в фигурных скобках — появится автоподсказка.

Урок 08

Формы

Form View превращает таблицу в веб-форму — удобно для сбора заявок, анкет, обратной связи: заполнивший форму человек не видит саму таблицу, а данные попадают прямо в неё новой строкой.

Как создать форму

  1. Создайте новый View типа Form.
  2. Для каждого поля настройте: показывать/скрывать, обязательное или нет, текст подсказки.
  3. Настройте заголовок и приветственный текст формы.
  4. Нажмите Share → скопируйте публичную ссылку (или получите код для встраивания на сайт через iframe).

Полезные настройки

  • Сообщение после отправки — что увидит пользователь после заполнения.
  • Уведомления — email при каждой новой отправке формы.
  • Ограничение на одну отправку — по email/устройству, если форма не должна принимать дубликаты.
Идея использования
Форма обратной связи на сайте → ответы сразу попадают в таблицу NocoDB → оттуда можно триггерить вебхук в Telegram/почту (см. урок 11).
Урок 09

Права доступа и совместная работа

NocoDB поддерживает роли на уровне Workspace/Base — это позволяет приглашать коллег с разным уровнем доступа.

РольЧто может
OwnerПолный доступ, включая удаление базы и управление участниками
CreatorСоздавать/менять таблицы, поля, Views, но не управлять биллингом
EditorДобавлять и редактировать записи, без изменения структуры таблиц
CommenterТолько просмотр и комментирование записей
ViewerТолько просмотр, без изменений

Как пригласить участника

Workspace → Members → Invite → указать email и роль. Также можно расшарить отдельную Base или View отдельной ссылкой без приглашения в Workspace.

Комментарии к записям

Откройте запись (expand row) → вкладка Comments — удобно для обсуждения конкретной задачи/заказа прямо внутри базы, без переписки в мессенджерах.

Урок 10

REST API

Одна из главных фишек NocoDB: для каждой базы автоматически генерируется REST API (и GraphQL) — без единой строчки бэкенд-кода с вашей стороны.

Получение токена доступа

  1. Откройте иконку профиля → Account Settings → Tokens.
  2. Создайте новый токен (API Token).
  3. Используйте его в заголовке 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» в интерфейсе базы.

Важно
Никогда не публикуйте API-токен в клиентском (браузерном) коде, который виден всем — он даёт полный доступ к данным согласно правам владельца токена. Для фронтенда используйте отдельный бэкенд-прокси.
Урок 11

Автоматизации и интеграции

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-чат менеджера.

Урок 12

Мини-проект: трекер задач

Соберём простой, но полноценный трекер задач — на нём закрепится всё пройденное.

Шаг 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 — задачи с истёкшим сроком и незавершённым статусом сразу подсветятся.

Урок 13

Шпаргалка и FAQ

Частые вопросы

Чем NocoDB отличается от Airtable? Похожий подход к интерфейсу, но NocoDB — open-source, можно развернуть у себя бесплатно и без лимитов на записи, а данные хранятся в обычной SQL-базе, которой вы владеете.

Можно ли подключить NocoDB к уже существующей базе данных? Да — при создании Base можно указать подключение к внешней MySQL/PostgreSQL/MSSQL базе вместо создания новой.

Как сделать резервную копию? Для self-hosted — обычный бэкап volume/БД (pg_dump для PostgreSQL). Для облака — экспорт таблиц в CSV или использование снапшотов сервиса.

Формулы не считают — в чём проблема? Проверьте, что названия полей в фигурных скобках совпадают точно (включая регистр), и что типы данных совместимы (нельзя складывать текст напрямую как число).

Полезные ссылки

Что дальше
Лучший способ закрепить материал — повторить мини-проект из урока 12 на своей теме: учёт клиентов, каталог товаров или личный трекер привычек.