Перейти к основному содержимому

1 запись с тегом "alma-linux"

Посмотреть все теги

Как мы сломали Docusaurus и нашли выход: segfault, 1.7GB RAM и Podman

· 4 мин. чтения
OWIX AI Division
Команда экспертов по AI

12 февраля 2026

Оглавление

  1. Предыстория
  2. Что пошло не так
  3. Диагностика проблемы
  4. Попытки решения
  5. Решение: Podman
  6. Итоги и выводы
  7. Инструкция для пересборки

1. Предыстория

У нас есть сервер 31.42.190.97 (AlmaLinux 9.7) с ограниченными ресурсами:

ПараметрЗначение
CPU2 ядра
RAM1.7 GiB
Disk40GB

На этом сервере работает несколько проектов:

  • owix.net — документация на Docusaurus
  • blog.owix.net — авто-блог на Astro (sereja-blog-project)
  • brainy.owix.net — панель BrainyCP
  • opencode.owix.net — OpenCode CLI

Всё работало стабильно до 12 февраля 2026 года.


2. Что пошло не так

2.1 Ситуация

После очередного обновления контента потребовалось пересобрать сайт owix.net:

cd /var/www/owix-net
npm run build

Вместо успешной сборки мы получили:

Segmentation fault (core dumped)

Сайт перестал работать — 404 ошибка.

2.2 Причина

Docusaurus 3.9.2 с React 19 требует значительных ресурсов памяти для сборки:

  • Webpack bundle analysis
  • React hydration
  • MDX compilation
  • CSS optimization

При 1.7GB RAM + 2GB swap система не справлялась и падала с segfault.


3. Диагностика проблемы

3.1 Проверка системы

# Проверка памяти
free -h
# total used free shared buff/cache available
# Mem: 1.7Gi 570Mi 300Mi 67Mi 936Mi 1.1Gi
# Swap: 2.0Gi 2.0Mi 2.0Gi

# Проверка Node.js
node --version
# v20.10.0

3.2 Проверка Docusaurus

# Проверка версии
npm list @docusaurus/core
# @docusaurus/[email protected]

# Проверка React list react
npm react-dom
# [email protected]
# [email protected]

3.3 Логи ошибок

[INFO] [ru] Creating an optimized production build...
[WARNING] Tags [ai, технологии, тренды]...
bash: line 1: 211362 Segmentation fault (core dumped) npm run build

Проблема: segfault на этапе создания production build.


4. Попытки решения

4.1 Увеличение swap

Сначала добавили дополнительный swap:

# Создание 4GB swap
sudo fallocate -l 4G /swapfile2
sudo chmod 600 /swapfile2
sudo mkswap /swapfile2
sudo swapon /swapfile2

Результат: ❌ Не помогло — всё ещё segfault

4.2 Понижение React до версии 18

npm install react@^18 react-dom@^18

Результат: ❌ Не помогло

4.3 Ограничение памяти Node.js

NODE_OPTIONS="--max-old-space-size=256" npm run build

Результат: ❌ Не помогло

4.4 Очистка кэша и переустановка зависимостей

rm -rf node_modules/.cache
npm ci --prefer-offline

Результат: ❌ Не помогло

4.5 Создание fallback статического сайта

Пока искали решение, создали временный fallback:

<!-- Простой HTML с ссылками на разделы -->

Результат: ✅ Сайт работал, но без функционала Docusaurus


5. Решение: Podman

5.1 Почему Podman?

Podman — это container engine, который:

  • Использует cgroups v2 напрямую (без демона)
  • Можно выделить больше памяти для контейнера
  • Изолирует процесс сборки от хост-системы
  • Работает с обычными пользователями (без root)

5.2 Проверка Podman

podman --version
# 5.6.0

5.3 Сборка в контейнере

podman run --rm \
-v /var/www/owix-net:/app \
-w /app \
node:20 \
bash -c 'npm ci && npm run build'

Результат:Успешно!

5.4 Лог успешной сборки

[INFO] [ru] Creating an optimized production build...
[webpackbar] ℹ Compiling Client
[webpackbar] ℹ Compiling Server
[webpackbar] ✔ Server: Compiled successfully in 1.04m
[webpackbar] ✔ Client: Compiled successfully in 1.55m
[SUCCESS] Generated static files in "build".

6. Итоги и выводы

6.1 Текущая архитектура

КомпонентСтатусРасположение
owix.net (Docusaurus)✅ Работает/var/www/owix-net/
blog.owix.net (Astro)✅ Работает/opt/blog-system/

Docusaurus и Astro — отдельные проекты, не связанные между собой:

  • Docusaurus — документация и блог
  • Astro — авто-блог из сессий OpenCode

6.2 Преимущества изоляции

  1. Независимые обновления — можно обновлять один проект без другого
  2. Разные требования — Docusaurus требует больше ресурсов
  3. Разные домены — owix.net и blog.owix.net
  4. Гибкость — можно мигрировать один проект без другого

6.3 Что мы узнали

УрокДетали
Node.js + React 19 требовательныDocusaurus 3.9.2 с React 19 требует 3GB+ RAM
Swap не панацеяПриложения падают с segfault даже со swap
Контейнеры — решениеPodman изолирует и даёт больше ресурсов
Fallback — временное решениеСтатический HTML лучше, чем ничего

7. Инструкция для пересборки

7.1 Когда нужно пересобирать

После изменений в:

  • docs/**/*.md
  • blog/**/*.md
  • src/pages/**/*.md
  • docusaurus.config.ts
  • sidebars.ts

7.2 Команда для пересборки

# На сервере 31.42.190.97
ssh [email protected] -p 22022

# Пересборка
sudo podman run --rm \
-v /var/www/owix-net:/app \
-w /app \
node:20 \
bash -c 'npm ci && npm run build'

7.3 Автоматизация (опционально)

Можно создать alias в ~/.bashrc:

alias docusaurus-build='sudo podman run --rm -v /var/www/owix-net:/app -w /app node:20 bash -c "cd /app && npm ci && npm run build"'

Использование:

docusaurus-build

Итог

Мы успешно восстановили Docusaurus сайт используя Podman для сборки в контейнере. Теперь процесс сборки стабильный и надёжный.

Ключевые моменты:

  • ❌ Сервер с 1.7GB RAM не может собрать Docusaurus
  • ✅ Podman решает проблему изоляцией ресурсов
  • ✅ Docusaurus и Astro — отдельные проекты
  • ✅ Сайт полностью функционален

Дата: 12 февраля 2026
Автор: OWIX AI Division
Теги: docusaurus,运维, podman, alma-linux, troubleshooting