Индекс на дневникаDockup / бележка от практиката
Note / self-host-kanboard

Как да хоствате Kanboard самостоятелно през 2026 г.: SQLite, плъгини и безопасни надстройки

Практическо ръководство за самостоятелно хостване на Kanboard, което обхваща Docker, портове, постоянни данни, TLS, сигурност, резервни копия и проблемите, които възпрепятстват използването в production среда. С проверки.

Неуспешното внедряване на Kanboard не винаги води до срив. Възможно е приложението да показва страница за вход, докато SQLite не може да записва, защото монтираната директория с данни има неправилен owner. Вместо това започнете с цялостна проверка: заменете данните за вход по подразбиране, създайте проект и задача, преместете я между колоните, качете файл и проверете един инсталиран плъгин.

Тази проверка съответства на документираната цел на Kanboard: минимална kanban дъска, поддържана от SQLite. Тя също така разкрива липсващи зависимости, неправилни предположения за proxy конфигурацията и ефимерни данни по-рано, отколкото може да го направи uptime проверка.

Отделете Kanboard от зависимостите му

Най-малката отговорна топология за Kanboard съдържа един частен listener на порт 80, ingress маршрут и ясно документирана граница на състоянието. Локалното изискване към runtime средата е writable data volume и опционален SMTP. Поддържайте жизнения му цикъл изрично дефиниран, за да не променя преместването на Kanboard между хостове поведението му незабелязано.

Валидирайте топологията, като накарате чист client да замени данните за вход по подразбиране, да създаде проект и задача, да я премести между колоните, да качи файл и да провери един инсталиран плъгин. Наблюдавайте SQLite locking, attachment volume, background actions и поведението на плъгините при едновременни потребители, докато системата работи. Резултатът ще покаже дали следващото подобрение трябва да бъде в memory, storage, networking или отделен worker, вместо да насърчава произволно оразмеряване на container-а.

Домейни, proxy headers и порт 80

Издаването на TLS сертификат е само половината от маршрута към Kanboard. Предоставяйте дъската през HTTPS и задайте application URL, ако плъгините имат нужда от него. Изпращайте трафика вътрешно към порт 80 и препращайте външната схема, така че генерираните URL адреси и secure cookies да останат съгласувани.

Използвайте пълния Kanboard сценарий от чиста мрежа, а не само началната страница. Грешка 502 или проблем със сертификата може да бъде изолиран с автоматична настройка на домейн и TLS. Ако трафикът достига до процеса, но SQLite не може да записва, защото монтираната директория с данни има неправилен owner, диагностицирайте състоянието там, където възниква, вместо да добавяте още redirects.

Направете стартирането на Kanboard възпроизводимо

Стартирането, ориентирано към production среда, умишлено е скучно: именувано state, изрично зададен порт и никакъв secret в image-а.

docker run -d \
  --name kanboard \
  --restart unless-stopped \
  -p 127.0.0.1:80:80 \
  -v kanboard-data:/var/www/app/data \
  kanboard/kanboard:latest

Примерът е базова конфигурация, а не цялостен supporting stack. Потвърдете локалното изискване, преди да направите услугата достъпна: writable data volume и опционален SMTP. Проверете effective mounts и listener-а, след което опитайте да замените данните за вход по подразбиране, да създадете проект и задача, да я преместите между колоните, да качите файл и да проверите един инсталиран плъгин. Фиксирайте работещия image преди следващия restart.

Наблюдавайте workload-а, а не само container-а

При Kanboard наблюдавайте transaction, а не процес: заменете данните за вход по подразбиране, създайте проект и задача, преместете я между колоните, качете файл и проверете един инсталиран плъгин. Комбинирайте latency и error rate с SQLite locking, attachment volume, background actions и поведението на плъгините при едновременни потребители, така че alert-ът да идентифицира ограничения компонент.

Проверката на upgrade процеса трябва да обхваща факта, че database migrations и plugin compatibility изискват snapshot преди обновяване на Kanboard image-а. Възстановете, мигрирайте и изпълнете transaction-а преди замяната в production среда. Ако SQLite не може да записва, защото монтираната директория с данни има неправилен owner, не изтривайте данни, за да направите startup-а успешен; сравнете version, variables, mounts и достижимостта на зависимостите в този ред.

Докажете Kanboard deployment-а от край до край

Production gate за Kanboard трябва да може да бъде изпълнен от човек, който не е изградил deployment-а. Предоставете на този човек фиксираната версия, test account без чувствителни данни и следната задача: да замени данните за вход по подразбиране, да създаде проект и задача, да я премести между колоните, да качи файл и да провери един инсталиран плъгин. Ако инструкциите изискват недокументиран shell достъп, услугата все още не е operationally ready.

Повторете gate проверката, след като замените само container-а. След това възстановете SQLite database, качените файлове, плъгините и конфигурацията в празна инфраструктура и докажете, че проектите, историята на задачите, потребителите, прикачените файлове и плъгините са възстановени и че възстановената дъска приема нова задача. Измервайте SQLite locking, attachment volume, background actions и поведението на плъгините при едновременни потребители и при двете успешни изпълнения; неочакваните разлики често разкриват липсващ cache, index, worker или data mount.

Добавете failure drill: изпратете безвреден input близо до resource или format limit-а, свързан с тази граница: SQLite не може да записва, защото монтираната директория с данни има неправилен owner. Kanboard трябва да генерира полезна грешка, да запази съществуващото state и да се възстанови, когато валидното условие се върне. Запазете timestamp-ите и съответните log редове, като заличите secret-ите. Тези данни ще служат като референция за следващата промяна в image-а или конфигурацията.

Volume-ите са само първият слой за възстановяване

Създайте recovery manifest за Kanboard: SQLite database, качени файлове, плъгини и конфигурация. Монтирайте /var/www/app/data преди bootstrap, запишете безвредни примерни данни и заменете container-а, за да докажете, че този path действително е persistent. Проверете ownership и свободното пространство още сега, защото монтиран, но unwritable path се държи така, сякаш изобщо няма persistence.

Правете backup в failure domain, отделен от работещия server. Създайте Kanboard от неговия фиксиран image и проверете дали проектите, историята на задачите, потребителите, прикачените файлове и плъгините са възстановени и дали възстановената дъска приема нова задача. Ръководството за persistent volume-и помага това упражнение да се превърне в snapshot и retention policy.

Защитете ценното в Kanboard

Сигурното внедряване на Kanboard започва с премахване на излишните права. Не оставяйте данните за вход по подразбиране admin/admin; вместо това незабавно премахнете admin/admin, ограничете достъпа до проектите и прегледайте плъгините, преди да им предоставите production данни.

В тази базова конфигурация Kanboard няма задължителен bootstrap secret; защитете действителния му administrator account или upstream authentication. Ограничете administrative routes, използвайте private DNS за зависимостите и прегледайте всеки bind mount. Когато логовете се изпращат към централизирана система, филтрирайте secret-ите и private content-а, преди да напуснат server-а.

Къде Dockup премахва работа при Kanboard

Dockup template трябва да описва image-а, порт 80, mount-овете, health timing, домейна, TLS и доставянето на secret-и. Dockup трябва да запази runtime настройките на Kanboard, докато операторът потвърди това локално изискване: writable data volume и опционален SMTP. Същият deployment може да бъде насочен към Dockup servers или към capacity, прикрепен от клиента.

След като маршрутът е активен, приложете public setting-а и опитайте да замените данните за вход по подразбиране, да създадете проект и задача, да я преместите между колоните, да качите файл и да проверите един инсталиран плъгин. Направете backup на SQLite database, качените файлове, плъгините и конфигурацията и включете упражнението за restore в operating plan-а; това са отговорности на Kanboard, които остават видими и след provision-ването на инфраструктурата.

Често задавани въпроси

Какво е необходимо на Kanboard за production deployment?

Насочете Kanboard container-а на порт 80 през един HTTPS origin. Локалното изискване към runtime средата е writable data volume и опционален SMTP. Не приемайте Kanboard за готов, докато не можете да замените данните за вход по подразбиране, да създадете проект и задача, да я преместите между колоните, да качите файл и да проверите един инсталиран плъгин.

Кои данни на Kanboard трябва да бъдат включени в backup?

Направете /var/www/app/data persistent и включете SQLite database, качените файлове, плъгините и конфигурацията в един и същ recovery manifest. Успешният restore на Kanboard е потвърден само когато проектите, историята на задачите, потребителите, прикачените файлове и плъгините са възстановени и възстановената дъска приема нова задача.

Изисква ли Kanboard HTTPS зад reverse proxy?

Използвайте HTTPS за публичния Kanboard origin и оставете порт 80 във вътрешния маршрут. Задайте правилно настройката на Kanboard: предоставяйте дъската през HTTPS и задайте application URL, ако плъгините имат нужда от него. При Kanboard HTTPS защитава credentials или user content при пренос и поддържа съгласувано client поведение, зависещо от origin-а.

Как трябва да се тества upgrade на Kanboard?

Възстановете текущото state на Kanboard в изолиран deployment, приложете candidate версията и повторете acceptance transaction-а. Обърнете специално внимание, защото database migrations и plugin compatibility изискват snapshot преди обновяване на Kanboard image-а. Запазете предишния Kanboard image, докато не изясните неговата граница за data migration и rollback.