Как да хоствате Baserow самостоятелно през 2026 г.: данни, URL адреси и резервни копия на едно място
Практическо ръководство за самостоятелно хостване на Baserow с Docker, портове, постоянни данни, TLS, сигурност, резервни копия и проблемите, които възпрепятстват използването в production. Стъпка по стъпка.
Контейнерът на Baserow може да е в зелено, докато задачата, която е важна за потребителите, не работи. При Baserow този скрит проблем обикновено е промяната на публичния URL адрес, след като потребителите са генерирали линкове за споделяне и callback линкове. В това ръководство приемаме за acceptance test следното: „създаване на база данни и view, импортиране на CSV, редактиране на редове от две сесии и качване на файл преди рестартиране на all-in-one stack“, а deployment-ът се изгражда обратно от този резултат.
Baserow има конкретна роля в stack-а: бази данни в стил Airtable, поддържани от Postgres и Redis. Следователно production въпросът не е дали порт 80 отговаря веднъж, а дали състоянието, зависимостите и публичният адрес продължават да са съгласувани след рестартиране, update и restore.
От какво зависи Baserow
Здравето на процеса и здравето на продукта са различни неща при Baserow. Порт 80 може да отговаря, докато транзакцията, която потребителят извършва, все още се проваля. Локалното изискване за runtime е достатъчно памет за включените Postgres, Redis, backend и workers. Поддържайте lifecycle-а му изрично дефиниран, така че преместването на Baserow между хостове да не променя поведението му незабелязано.
Използвайте следното readiness упражнение след съществени промени в конфигурацията: създайте база данни и view, импортирайте CSV, редактирайте редове от две сесии и качете файл преди рестартиране на all-in-one stack. Не включвайте скъпи външни проверки в liveness probes, за да не предизвиква прекъсване при даден provider restart loop. Работата по капацитета трябва да следи включените Postgres, Redis и Celery workers, броя на редовете, размера на импорта и броя на едновременните редактори — това е по-близо до реалното натоварване на Baserow от заявките към страниците.
Docker baseline за Baserow
Следната команда прави границата на контейнера видима, без да претендира, че provision-ва всяка външна услуга.
docker run -d \
--name baserow \
--restart unless-stopped \
-p 127.0.0.1:80:80 \
-v baserow-data:/baserow/data \
-e SECRET_KEY=replace-with-a-long-random-value \
baserow/baserow:latest
Преди да отворите ingress, проверете разрешената environment конфигурация, mount-овете и listener-а. Потвърдете локалното изискване преди излагане: достатъчно памет за включените Postgres, Redis, backend и workers. Успешното стартиране е налице, когато можете да създадете база данни и view, да импортирате CSV, да редактирате редове от две сесии и да качите файл преди рестартиране на all-in-one stack, а не когато docker ps изведе Up.
Домейни, proxy headers и порт 80
Изложете един HTTPS hostname за Baserow, а суровия порт 80 оставете частен. Задайте BASEROW_PUBLIC_URL на точния външен origin. Така браузърите и API клиентите няма да научават два конкуриращи се адреса.
От чист клиент изпълнете транзакцията, за която знаете, че работи, и проверете първата заявка, която се проваля. Използвайте ръководството за custom domain, когато DNS или TLS не са конфигурирани правилно. Третирайте „публичният URL адрес се променя, след като потребителите са генерирали линкове за споделяне и callback линкове“ като отделна application диагноза, след като маршрутът е доказано работещ.
Архивирайте състоянието, което Baserow не може да пресъздаде
Определете recovery point и recovery time за Baserow по отношение на цялото дърво /baserow/data и периодичните logical database exports. Mount-нете /baserow/data преди bootstrap, запишете безвредни примерни данни и заменете контейнера, за да докажете, че този path действително е persistent. Named volume решава persistence при redeploy; не решава компрометиране или загуба на сървъра.
Изградете чиста restore среда, използвайте същата pinned application версия и докажете, че таблиците, view-тата, потребителите, automation-ите и файловете се възстановяват от пълното backup копие на /baserow/data. Запишете командите, корекциите на ownership-а и изминалото време. Ръководството за backup е полезен стандарт: на едно backup копие може да се разчита след restore, а не след upload.
Не давайте на Baserow целия хост
Направете threat model на действията, които Baserow изпълнява, а не само на login формата му. Тук високорисковата грешка е използването на all-in-one image без backup план за включените услуги. Реализирайте следната граница: затворете регистрацията, когато е подходящо, съхранявайте SECRET_KEY и ограничете публичните shared views до предвидените данни.
Генерирайте SECRET_KEY веднъж, дръжте го извън Git и го съхранявайте с recovery manifest-а, защото промяната му може да направи криптираното или подписаното application state невалидно. Не решавайте permission error, като стартирате контейнера като root или mount-вате хоста без ограничения. Resource limits също са част от security design-а, когато включените Postgres, Redis и Celery workers, броят на редовете, размерът на импорта и едновременните редактори могат да бъдат активирани от потребителите.
Логове, които дават отговор на следващия въпрос
Една idle health check проверка не казва много за Baserow. Наблюдавайте включените Postgres, Redis и Celery workers, броя на редовете, размера на импорта и броя на едновременните редактори, след което създайте alert за симптома, който потребителите изпитват: неуспешно изпълнение на действието „създаване на база данни и view, импортиране на CSV, редактиране на редове от две сесии и качване на файл преди рестартиране на all-in-one stack“. Поддържайте liveness локална и евтина; нека readiness отчита migrations или initialization, без да предизвиква restart storm.
Рисковата зона при upgrade е, че all-in-one image-ът премества няколко услуги едновременно, така че database и application migrations се нуждаят от rehearsal със snapshot. Прочетете release notes, направете snapshot на state-а, deploy-нете target версията спрямо възстановено копие и повторете acceptance действието. Ако публичният URL адрес се променя, след като потребителите са генерирали линкове за споделяне и callback линкове, свържете client заявката с първия релевантен application log, вместо да изтривате state или сляпо да добавяте redirects.
Пет проверки, по-силни от container health
Преди да дойдат реални потребители, създайте release worksheet за Baserow. Той трябва да посочва pinned image-а, порт 80, canonical origin-а, persistent paths и отговорника за достатъчната памет за включените Postgres, Redis, backend и workers. Добавете очаквания резултат от тази транзакция: създаване на база данни и view, импортиране на CSV, редактиране на редове от две сесии и качване на файл преди рестартиране на all-in-one stack.
Използвайте worksheet-а след нормална подмяна и след чист restore. Recovery се приема само ако таблиците, view-тата, потребителите, automation-ите и файловете се възстановят от пълното backup копие на /baserow/data. Съберете и кратък resource trace, обхващащ включените Postgres, Redis и Celery workers, броя на редовете, размера на импорта и броя на едновременните редактори; съхранявайте го заедно с release-а, за да могат бъдещите промени в капацитета да се сравняват със същото натоварване.
Включете един контролиран failure: изпратете безвреден input близо до resource или format лимита, свързан с тази граница: публичният URL адрес се променя, след като потребителите са генерирали линкове за споделяне и callback линкове. Потвърдете, че Baserow отчита проблема на правилната граница, върнете валидното условие и изпълнете транзакцията отново. Така проверявате видимостта на грешките, а не само успеха, и предотвратявате интерфейсът, който изглежда здрав, да прикрива повреден worker, callback или database connection.
Свържете Baserow с lifecycle-а на Dockup
One-click deployment-ът на Baserow в Dockup трябва да прави подмяната безопасна: маршрутът продължава да сочи към 80, secrets не са вградени в image-а и persistent paths се възстановяват в новия контейнер. Същият deployment може да работи върху compute в Dockup или върху свързана машина.
Завършете специфичната за приложението работа, като потвърдите локалното изискване — достатъчно памет за включените Postgres, Redis, backend и workers, приложите canonical публичния адрес и изпълните тази acceptance проверка: създайте база данни и view, импортирайте CSV, редактирайте редове от две сесии и качете файл преди рестартиране на all-in-one stack. Добавете резултата от restore към runbook-а, преди да дойдат реални потребители.
Често задавани въпроси
Какво е необходимо на Baserow за production deployment?
Маршрутизирайте контейнера на Baserow през порт 80 и един HTTPS origin. Локалното изискване за runtime е достатъчно памет за включените Postgres, Redis, backend и workers. Не обявявайте Baserow за готов, докато не можете да създадете база данни и view, да импортирате CSV, да редактирате редове от две сесии и да качите файл преди рестартиране на all-in-one stack.
Кои данни на Baserow трябва да бъдат включени в backup?
Направете /baserow/data persistent и включете цялото дърво /baserow/data и периодичните logical database exports в същия recovery manifest. Чистият Baserow restore е успешен само когато таблиците, view-тата, потребителите, automation-ите и файловете се възстановят от пълното backup копие на /baserow/data.
Изисква ли Baserow HTTPS зад reverse proxy?
Използвайте HTTPS за публичния Baserow origin и оставете порт 80 във вътрешния маршрут. Приложете правилно настройката на Baserow: задайте BASEROW_PUBLIC_URL на точния външен origin. При Baserow HTTPS защитава credentials или потребителското съдържание при пренос и поддържа последователно client поведението, зависещо от origin-а.
Как трябва да се тества upgrade на Baserow?
Възстановете текущото състояние на Baserow в изолиран deployment, приложете кандидат-версията и повторете acceptance транзакцията. Обърнете особено внимание, защото all-in-one image-ът премества няколко услуги едновременно, така че database и application migrations се нуждаят от rehearsal със snapshot. Запазете предишния Baserow image, докато не изясните границата на data migration-а и rollback-а.
