← Усі шаблони · Продуктивність
Задеплойте NocoDB в один клік
No-code база даних: таблиці у вигляді електронних таблиць, форми, канбан-дошки й календарі, з API
Альтернатива Airtable на вашій машині.
Що таке NocoDB?
NocoDB — no-code платформа баз даних: таблиці виглядають і працюють як електронна таблиця, а кожну з них можна також показати як форму, галерею, канбан-дошку, календар, мапу чи діаграму Ганта. Поля містять текст, числа, дати, варіанти вибору, вкладення, формули й зв’язки з іншими таблицями, а також бувають типів «Пошук» і «Накопичення». Кожна таблиця має REST API, вебхуки спрацьовують, коли записи створюються, оновлюються чи видаляються, а таблиці можна імпортувати з Airtable, CSV, Excel і JSON.
Команди використовують NocoDB замість Airtable, щоб вести CRM, облік запасів, контент-календар чи будь-який спільний список у базі даних під своїм контролем. Цей шаблон запускає безкоштовну редакцію Community з PostgreSQL, створює головного адміністратора з полів ще до того, як NocoDB комусь відповість, і закриває реєстрацію, тож люди приєднуються лише за запрошенням. Підводний камінь: ліцензія NocoDB Sustainable Use License дозволяє внутрішнє й особисте використання, але не перепродаж, а SSO і права доступу до окремих таблиць і полів є лише в платних self-hosted тарифах.
Хостинг NocoDB на Pethost
- Ви входите в Pethost — з ключем доступу, через GitHub або Google. Машини ще немає? Ви обираєте тариф, і посилання чекає, доки машина не буде готова.
- Вікно «Новий проєкт» відкривається на застосунку NocoDB. Ви заповнюєте те, що він просить, і натискаєте «Створити проєкт»: Електронна пошта, Пароль адміністратора.
- За хвилину-дві NocoDB працює за власною адресою з HTTPS. Секрети створюються випадково, а дані потрапляють у щонічний бекап.
- Це проєкт як будь-який інший: ви або ваш агент можете його змінити, відкотити або відновити.
Питання про NocoDB
NocoDB безкоштовний?
Self-hosted редакція Community безкоштовна, без обмежень на кількість записів і користувачів, за ліцензією NocoDB Sustainable Use License: її можна використовувати всередині своєї компанії або для себе, але не продавати іншим. Платні self-hosted тарифи коштують від 24 $ за користувача на місяць з оплатою за рік і додають SSO та права доступу до окремих таблиць і полів.
NocoDB чи Airtable: у чому різниця?
Обидва показують таблиці як електронні таблиці, з формами, канбаном і галереями. Airtable працює лише у своїй хмарі, з оплатою за кожного користувача, а NocoDB — там, де ви його задеплоїте, і його редакція Community не обмежує кількість записів.
Чи можна імпортувати бази Airtable в NocoDB?
Так. NocoDB імпортує базу за її спільним посиланням з особистим токеном доступу Airtable, який може читати записи, і переносить таблиці, вигляди й записи. Поля з формулами не переносяться, а посилання на спільний вигляд переносить лише одну цю таблицю.
Чи є в NocoDB API?
Так. Кожна таблиця має REST API, до якого звертаються з API-токеном, а вебхуки надсилають запит, коли запис створюється, оновлюється чи видаляється, тож інші застосунки й скрипти можуть читати й записувати дані.
Як додати людей у NocoDB?
У розділі «Members & teams» кнопкою «Додати учасників» — поштою або за приватним посиланням-запрошенням, з вибором ролі. Цей шаблон закриває публічну реєстрацію, тож без запрошення ніхто не приєднається. Запрошення поштою NocoDB надсилає, щойно в .env проєкту з’являться NC_SMTP_HOST та інші налаштування NC_SMTP_.
Скільки пам’яті й диска потрібно NocoDB?
NocoDB займає близько 800 MB пам’яті разом із Postgres, а його база даних росте з вашими записами; вкладення займають стільки, скільки їхні файли. На Pethost йому вистачить тарифу Starter, і поруч залишиться місце для інших застосунків.
NocoDB: файл Docker Compose
Шаблон — це цей compose.yaml і змінні, які записуються в .env проєкту під час його створення. Pethost запускає файл так, як його написано.
Контейнери: nocodb (nocodb/nocodb:2026.10.0), postgres (postgres:18-alpine).
Томи, у щонічному бекапі: data, db.
services:
nocodb:
image: nocodb/nocodb:2026.10.0
restart: unless-stopped
# Any setting of NocoDB can be added to the project's .env, such as NC_SMTP_HOST and the other
# NC_SMTP_ settings, which send its invitations and password resets by email.
env_file: .env
environment:
NC_DB: pg://postgres:5432?u=nocodb&p=${POSTGRES_PASSWORD}&d=nocodb
NC_AUTH_JWT_SECRET: ${JWT_SECRET}
NC_SITE_URL: ${URL}
# The super admin is made from these at the first start, before NocoDB answers anyone, and
# its email and password are set again from them at every start: change them here.
NC_ADMIN_EMAIL: ${ADMIN_EMAIL}
NC_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
# Uploaded files are served only to those signed in, through links that expire.
NC_SECURE_ATTACHMENTS: "true"
# A new NocoDB lets anyone sign up, and only its super admin closes that, in Account → Setup.
# So until that setting has been saved once, NocoDB runs on port 8081, which nobody reaches,
# and the super admin closes sign-up there; only then does it answer on 8080. Turned on again
# in NocoDB later, sign-up stays open.
command:
- sh
- -c
- |
set -e
cd /usr/src/app
if ! node -e '
const { Client } = require("pg");
const url = new URL(process.env.NC_DB);
const params = url.searchParams;
const connection = { host: url.hostname, port: Number(url.port), user: params.get("u"), password: params.get("p"), database: params.get("d") };
(async () => {
for (let i = 0; i < 60; i++) {
const db = new Client(connection);
try {
await db.connect();
const result = await db.query("select 1 from nc_store where key = $$1", ["nc-app-settings"]);
process.exit(result.rowCount > 0 ? 0 : 1);
} catch (error) {
// No such table: a new database, which the migrations of NocoDB have yet to fill.
if (error.code === "42P01") process.exit(1);
await db.end().catch(() => {});
await new Promise((done) => setTimeout(done, 1000));
}
}
process.exit(1);
})();
'; then
PORT=8081 node --no-wasm-dynamic-tiering --no-wasm-tier-up docker/index.js &
setup=$$!
node -e '
const base = "http://127.0.0.1:8081";
const call = async (path, body, token) => {
const response = await fetch(base + path, {
method: "POST",
headers: { "content-type": "application/json", ...(token ? { "xc-auth": token } : {}) },
body: JSON.stringify(body)
});
if (!response.ok) throw new Error(path + ": " + response.status + " " + (await response.text()));
return response.json();
};
const closeSignUp = async () => {
const { token } = await call("/api/v1/auth/user/signin", { email: process.env.NC_ADMIN_EMAIL, password: process.env.NC_ADMIN_PASSWORD });
await call("/api/v1/app-settings", { invite_only_signup: true }, token);
};
(async () => {
let failure;
for (let i = 0; i < 300; i++) {
try {
return await closeSignUp();
} catch (error) {
failure = error;
await new Promise((done) => setTimeout(done, 1000));
}
}
console.error(failure);
process.exit(1);
})();
'
kill $$setup
wait $$setup || true
fi
exec /usr/src/appEntry/start.sh
volumes:
- data:/usr/app/data
depends_on:
postgres:
condition: service_healthy
# The port listens before NocoDB is ready: the deploy waits for its health.
healthcheck:
test: ["CMD-SHELL", "wget -q --tries=1 --spider http://127.0.0.1:8080/api/v1/health || exit 1"]
interval: 5s
timeout: 5s
retries: 5
start_period: 120s
postgres:
image: postgres:18-alpine
restart: unless-stopped
environment:
POSTGRES_DB: nocodb
POSTGRES_USER: nocodb
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- db:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U nocodb -d nocodb"]
interval: 5s
timeout: 5s
retries: 10
start_period: 30s
volumes:
data:
db:
Ще в категорії «Продуктивність»
- MealieМенеджер рецептів і планувальник харчування
- RyotТрекер фільмів, серіалів, книжок, ігор і тренувань
- VikunjaСписки завдань і проєкти, з канбаном і діаграмою Ганта
- ExcalidrawДошка для діаграм і ескізів від руки зі спільною роботою наживо
- OdooБізнес-застосунки в одному: CRM, продажі, рахунки, склад, вебсайт, проєкти та інше
- PLANKAКанбан-дошки для проєктів і команд, що оновлюються для всіх у реальному часі