Публичный шаблон для создания корпоративной wiki на базе Quartz v4
Этот репозиторий представляет собой готовое к развёртыванию решение для создания wiki-системы с использованием Docker, поддержкой HTTPS и автоматическим обновлением контента.
- Возможности
- Быстрый старт
- Для разработчиков
- Развёртывание на сервере
- Автоматизация
- Управление контентом
- Troubleshooting
- Безопасность
- Roadmap
- ✅ Docker-based развёртывание - нет необходимости устанавливать Node.js на сервер
- ✅ Автоматическое HTTPS - интеграция с Let's Encrypt
- ✅ Автообновление контента - синхронизация с GitHub через cron
- ✅ Markdown-based - простое создание контента
- ✅ Zero-downtime updates - обновления без простоя
- ✅ Healthchecks - автоматический мониторинг состояния
Для редактирования контента локально вам нужен только текстовый редактор:
# Клонирование репозитория
git clone <your-repo-url> my-wiki
cd my-wiki
# Редактирование контента
cd content
# Создавайте и редактируйте .md файлы# Запуск локально
DOMAIN_NAME=localhost docker-compose up -d --build
# Сайт доступен по адресу http://localhost- Git
- Docker и Docker Compose
- Текстовый редактор (VS Code, Vim, etc.)
.
├── content/ # Контент wiki (Markdown файлы)
├── quartz/ # Движок Quartz (не трогать без необходимости)
├── nginx/ # Конфигурация Nginx
│ ├── entrypoint.sh
│ ├── http-only.conf.template
│ └── default.conf.template
├── docker-compose.yml # Docker Compose конфигурация
├── Dockerfile.app # Dockerfile для Quartz приложения
├── Dockerfile.nginx # Dockerfile для Nginx
└── https.sh # Скрипт настройки HTTPS
-
Создание новой страницы:
cd content touch new-page.md -
Формат Markdown файла:
--- title: Название страницы --- # Заголовок Ваш контент здесь...
-
Коммит изменений:
git add content/ git commit -m "Add new page" git push origin main -
Автоматическое обновление: Если настроен cron (см. раздел "Автоматизация"), изменения появятся на сервере в течение минуты.
Для крупных изменений используйте ветки:
# Создание новой ветки
git checkout -b feature/new-section
# Внесение изменений
# ...
# Коммит и push
git add .
git commit -m "Add new section"
git push origin feature/new-section
# Создайте Pull Request на GitHub
# После ревью и merge изменения автоматически попадут на сервер- Сервер с Ubuntu/Debian (минимум 1GB RAM, 1 CPU)
- Доменное имя, указывающее на IP сервера
- Открытые порты: 80, 443, 22 (SSH)
# Обновление системы
sudo apt update && sudo apt upgrade -y
# Установка Docker
sudo apt install docker.io git -y
# Добавление текущего пользователя в группу docker
sudo usermod -aG docker $USER
newgrp docker
# Включение Docker при старте системы
sudo systemctl enable docker.servicecd ~
git clone <your-repo-url> quartz-wiki
cd quartz-wiki# Скопировать шаблон
cp .env.example .env
# Отредактировать домен
nano .envВ файле .env замените your.domain.com на ваш реальный домен:
DOMAIN_NAME=my-awesome-wiki.commkdir -p letsencrypt var/logsВажно: Замените your.domain.com на ваш домен и your@email.com на ваш email.
chmod +x https.sh
./https.sh your.domain.com your@email.comСкрипт автоматически:
- Получит SSL сертификат от Let's Encrypt
- Настроит автообновление сертификатов (каждую ночь в 2:00)
- Запустит приложение с HTTPS
# Если https.sh уже запустил приложение, пропустите этот шаг
# Иначе:
DOMAIN_NAME=your.domain.com docker-compose up -d --build# Проверка статуса контейнеров
docker-compose ps
# Просмотр логов
docker-compose logs -f
# Ваш сайт должен быть доступен по адресу:
# https://your.domain.comНастройка автоматической синхронизации с GitHub:
# Сделать скрипт исполняемым
chmod +x quartz-update.sh
# Добавить задачу в crontab
crontab -eДобавьте следующую строку (замените путь на ваш):
* * * * * cd /home/ubuntu/quartz-wiki && ./quartz-update.sh >> var/logs/quartz-update.log 2>&1Как это работает:
- Каждую минуту проверяется наличие изменений в
content/на GitHub - При обнаружении изменений автоматически выполняется
git mergeиdocker-compose up -d --build - Домен автоматически загружается из
.envфайла - Лог сохраняется в
var/logs/quartz-update.log
Для предотвращения переполнения диска:
# Сделать скрипт исполняемым
chmod +x docker-cleanup.sh
# Добавить задачу в crontab
crontab -eДобавьте следующую строку:
0 */6 * * * cd /home/ubuntu/quartz-wiki && ./docker-cleanup.sh >> var/logs/docker-cleanup.log 2>&1Что очищается (каждые 6 часов):
- Остановленные контейнеры
- Неиспользуемые образы
- Неиспользуемые volumes
- Неиспользуемые сети
- Клонируйте репозиторий локально
- Создайте
.mdфайл в директорииcontent/ - Напишите контент в формате Markdown
- Закоммитьте и запушьте изменения
- Сервер автоматически обновится (если настроен cron)
content/
├── index.md # Главная страница
├── docs/ # Документация
│ ├── getting-started.md
│ └── api.md
└── projects/ # Проекты
└── project-1.md
Симптомы:
dependency failed to start: container quartz-app is unhealthy
Решение:
-
Проверьте логи:
docker logs quartz-app
-
Увеличьте таймауты healthcheck в
docker-compose.yml:healthcheck: start_period: 120s # Увеличьте с 60s
-
Проверьте доступность приложения:
docker exec quartz-app curl -f http://localhost:8080/
Проблема: Сайт недоступен по http://localhost
Симптомы:
- Браузер не открывает страницу
- "Connection refused" или "ERR_CONNECTION_REFUSED"
Решение:
-
Проверьте, запущены ли контейнеры:
docker-compose ps
-
Проверьте логи Nginx:
docker logs quartz-nginx
-
Проверьте конфигурацию Nginx:
docker exec quartz-nginx cat /etc/nginx/conf.d/default.conf -
Проверьте доступность app из nginx:
docker exec quartz-nginx curl http://app:8080/
Симптомы:
- "Your connection is not private"
- Сертификат не найден
Решение:
-
Проверьте наличие сертификата:
ls -la letsencrypt/live/your.domain.com/
-
Перезапустите получение сертификата:
./https.sh your.domain.com your@email.com
-
Убедитесь, что домен указывает на ваш сервер:
nslookup your.domain.com
Симптомы:
- Изменения на GitHub не появляются на сайте
Решение:
-
Проверьте логи автообновления:
tail -f var/logs/quartz-update.log
-
Проверьте crontab:
crontab -l
-
Проверьте права на скрипт:
chmod +x quartz-update.sh
-
Запустите скрипт вручную для проверки:
DOMAIN_NAME=your.domain.com ./quartz-update.sh
Симптомы:
- "No space left on device"
Решение:
-
Проверьте использование диска:
df -h
-
Очистите Docker:
./docker-cleanup.sh
-
Удалите старые логи:
truncate -s 0 var/logs/*.log
# Установка UFW (если не установлен)
sudo apt install ufw -y
# Разрешить необходимые порты
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# Включить firewall
sudo ufw enable
# Проверить статус
sudo ufw status-
Регулярное обновление:
sudo apt update && sudo apt upgrade -y -
Мониторинг логов:
# Логи Nginx docker exec quartz-nginx tail -f /var/log/nginx/access.log # Логи приложения docker logs -f quartz-app
-
Backup контента:
# Создать backup tar -czf wiki-backup-$(date +%Y%m%d).tar.gz content/ # Восстановить из backup tar -xzf wiki-backup-20240101.tar.gz
- Авторизация пользователей (JWT)
- Админ-панель для управления пользователями
- Rate limiting в Nginx
- Fail2Ban для защиты от brute-force
- Docker-based развёртывание
- HTTPS поддержка
- Автообновление контента
- Healthchecks
- Авторизация пользователей (JWT токены)
- Админ-панель для управления:
- Создание/удаление пользователей
- Управление правами доступа
- Просмотр статистики
- Share функционал (цепочки статей)
- Комментарии к статьям
- Версионирование контента
- Поиск по контенту
- Мониторинг (Prometheus + Grafana)
- Multi-tenancy (несколько wiki на одном сервере)
- API для интеграций
- Webhooks для уведомлений
- Экспорт в PDF/EPUB
Этот проект является форком Quartz v4. Для внесения вклада:
- Форкните репозиторий
- Создайте ветку для ваших изменений
- Внесите изменения
- Создайте Pull Request
Этот репозиторий поддерживает синхронизацию с оригинальным Quartz v4:
# Добавить upstream (один раз)
git remote add upstream https://github.com/jackyzha0/quartz.git
# Получить последние изменения
git fetch upstream
# Влить изменения в main
git checkout main
git merge upstream/v4
# Разрешить конфликты (если есть)
# ...
# Запушить обновления
git push origin mainЭтот проект лицензирован под MIT License.
Quartz v4 лицензирован под MIT License © jackyzha0.