Ниже приведена пошаговая инструкция по созданию сайта с помощью генератора статических сайтов Quartz, применением платформы для хранения Git-репозиториев GitFlic и редактора/приложения для ведения базы знаний Obsidian.
В качественной операционной системы используется macOS Ventura, в других системах пути и команды могут отличаться.
Инициализация Quartz
Будем создавать сайт, сохраняя сохраняя локальную копию репозитория Quartz в пользовательской папке ~/Git/k0mar0v.ru. Предполагается, что папка Git уже создана ранее. Второй параметр (k0mar0v.ru) команды git clone устанавливает папку, в которую будет клонирован репозиторий. По умолчанию, если не указать второй параметр, в качестве названия папки для клонирования будет использовано имя самого репозитория (quartz).
cd ~/Git git clone https://github.com/jackyzha0/quartz.git k0mar0v.rucd k0mar0v.runpm inpx quartz create
Опции, предлагаемые после запуска последней команды, можно выбрать дефолтные:
● Empty Quartz
● Treat links as shortest path ((default))
Посмотреть на получившийся результат можно сразу, запустив локальную версию сайта:
npx quartz build --serve
Сайт будет доступен по ссылке: http://localhost:8080/. Прервать работу локальной версии сайта можно в любой момент сочетанием клавиш ctrl+c в терминале.
Создание удалённого репозитория на GitHub
Теперь нам нужен удалённый репозиторий для кода самого Quartz и контента.
В принципе, можно оставить файлы Quartz (и контент) только локально. Публиковать (на хостинге) можно только сам сгенерированный статичный сайт. Удобство удалённых репозиториев в полной мере раскрывается, когда:
есть потребность работы одновременно с разных рабочих мест и не хочется каждый раз думать о проблемах с синхронизацией;
есть необходимость ведения работы в команде;
присутствует желание сделать свою работу публично доступной;
хочется дать другим людям возможность предлагать правки (через pull request).
В качестве платформы для хранения репозиториев можно выбрать любую удобную. GitHub позволяет полностью автоматизировать процесс генерации и публикации сайта, поэтому для простоты будем использовать именно её.
Входим в свой аккаунт (или сначала регистрируемся) и создаём новый репозиторий:
- Repository name: k0mar0v.ru
- Тип: ● Private
Больше ничего не меняем и нажимаем Create repository.
Подсказка
На GitHub в названиях репозиториев можно использовать точки.
Ссылка на репозиторий будет такой: https://github.com/zlonov/k0mar0v.ru.git
Подключение удалённого репозитория Quartz к локальному
Дальнейшую синхронизацию можно продолжать выполнять через команды для Терминала, но для удобства можно использовать какой-либо клиент (редактор) Git с графическим интерфейсом: Git GUI clients.
В Git-клиент нужно добавить наш репозиторий через Add Existing Repository... или подобную команду меню, для которой указать путь к ~/Git/k0mar0v.ru/.
Удобство клиента, помимо наглядности, в том числе в автоматическом запросе и сохранении на будущее данных учётной записи для доступа к удалённому репозиторию.
Теперь можно синхронизировать контент и загрузить его в свой репозиторий. Данная команда выполнит первоначальную отправку контента:
npx quartz sync --no-pull
Вывод результата работы команды должен быть примерно таким:
Quartz v4.2.3
Backing up your content
[v4 cd15cda] Quartz sync: Mar 4, 2024, 10:38 AM
2 files changed, 6 insertions(+)
delete mode 100644 content/.gitkeep
create mode 100644 content/index.md
Pushing your changes
Enumerating objects: 8388, done.
Counting objects: 100% (8388/8388), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3027/3027), done.
Writing objects: 100% (8388/8388), 6.33 MiB | 9.22 MiB/s, done.
Total 8388 (delta 5277), reused 8360 (delta 5253), pack-reused 0
remote: Resolving deltas: 100% (5277/5277), done.
To https://github.com/zlonov/k0mar0v.ru.git
* [new branch] v4 -> v4
branch 'v4' set up to track 'origin/v4'.
Done!
Идеология Quartz предполагает, что весь контент редактируется с помощью Obsidian. Для этого надо открыть папку content как хранилище Obsidian. Как вариант, можно создать символьную ссылку на эту папку и разместить её внутри другого хранилища.
Такой подход удобен, когда вы хотите работать в одном запущенном окне Obsidian сразу и с контентом, публикуемым на сайте, и с другими своими заметками, которые не планируете делать публичными. Всё публичное будет находиться просто в отдельной собственной папке внутри хранилища Obsidian. При этом будут работать все внутренние ссылки, а граф связей строится единый. Важно только следить, чтобы не возникала путаница при использовании одинаковых названий заметок - желательно стремиться, чтобы они оставались уникальными.
После внесения требуемых изменений переходим в локальный клон репозитория.
cd ~/Git/k0mar0v.ru/
Добавляем все файлы в отслеживаемые:
git add .
Убеждаемся, что нужные нам файлы проиндексированы:
git status
Файлы должны оказаться в разделе “Changes to be committed”:
On branch main
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: index.md
Коммитим (вносим) изменения, указав комментарий к нему сразу в командной строке, и отправляем их в удалённый репозиторий:
git commit -m "Комментарий к коммиту"git push
Подсказка
Дальнейшую синхронизацию можно продолжать выполнять через команды для Терминала, но для удобства можно использовать какой-либо клиент (редактор) Git с графическим интерфейсом: Git GUI clients.
В Git-клиент нужно добавить наш репозиторий через Add Existing Repository... или подобную команду меню, для которой указать путь к ~/Git/k0mar0v.ru/.
Удобство клиента, помимо наглядности, в том числе в автоматическом запросе и сохранении на будущее данных учётной записи для доступа к удалённому репозиторию.
Чтобы использовать GitHub pages для публикации своего сайта нужно:
Перейти в Settings своего репозитория.
В разделе Code and automation в боковом меню выбрать Pages.
В поле Custom Domain, написать адрес своего домена и нажать Save.
Следующие шаги зависят от используемого домена - Apex (example.com) или Subdomain (subdomain.example.com).
If you are using an apex domain, navigate to your DNS provider and create an A record that points your apex domain to GitHub’s name servers which have the following IP addresses:
185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
If you are using a subdomain, navigate to your DNS provider and create a CNAME record that points your subdomain to the default domain for your site. For example, if you want to use the subdomain quartz.example.com for your user site, create a CNAME record that points quartz.example.com to <github-username>.github.io.
hub.zlonov.ru. 3600 IN CNAME zlonov.github.io.
zlonov.github.io. 3600 IN A 185.199.108.153
zlonov.github.io. 3600 IN A 185.199.111.153
zlonov.github.io. 3600 IN A 185.199.109.153
zlonov.github.io. 3600 IN A 185.199.110.153
k0mar0v.ru. 3547 IN A 185.199.111.153
k0mar0v.ru. 3547 IN A 185.199.110.153
k0mar0v.ru. 3547 IN A 185.199.109.153
k0mar0v.ru. 3547 IN A 185.199.108.153