Как мы сломали Docusaurus и нашли выход: segfault, 1.7GB RAM и Podman
· 4 мин. чтения
12 февраля 2026
Оглавление
- Предыстория
- Что пошло не так
- Диагностика проблемы
- Попытки решения
- Решение: Podman
- Итоги и выводы
- Инструкция для пересборки
1. Предыстория
У нас есть сервер 31.42.190.97 (AlmaLinux 9.7) с ограниченными ресурсами:
| Параметр | Значение |
|---|---|
| CPU | 2 ядра |
| RAM | 1.7 GiB |
| Disk | 40GB |
На этом сервере работает несколько проектов:
- 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