Свой блог на ghost+buster для почти простых смертных

Нашей целью является свой собственный блог, независимый от воли хозяев ЖЖ, Blogger и прочих Medium. Эта небольшая инструкция позволит завести блоговое хозяйство за несколько минут и получить:

  1. приятный способ написания статей
  2. неплохой внешний вид блога
  3. возможность проявить индивидуальность с выбором оформления
  4. быть готовым к всплеску популярности и выжить при практически любой нагрузке

Кроме того, для тех, кто хочет копнуть глубже:

  1. Возможность публикации блога на S3, Google Nearline или на любое подобное место
  2. Автоматически сохранять копии всех ваших постов в очень универсальном формате markdown

Вот краткое описание того, что мы будем делать:

  • заведем docker droplet в digital ocean
  • доставим туда все, что надо из моего репозитория
  • подготовим дроплет для разворачивания контейнеров
  • построим и поднимем все это хозяйство

Поднимаем дроплет

Первым делом надо завести себе экаунт на DigitalOcean. Это можно (и нужно ;) сделать по моей реферальной ссылке либо прямо с их сайта. Цена вопроса - $5/мес. За эти деньги вы получите 1Т трафика в месяц, что на практике более чем достаточно. В принципе и четверти от этого нормальному человеку хватит на месяц, а значит можно скооперироваться с друзьями/коллегами и использовать общий VPN дроплет для целой группы товарищей. И еще в сети можно найти вполне законные промо-коды для скидок и подарков, например у нас на радио-т есть такой на $10, что хватит на целых 2 месяца работы нашего VPN.

Далее запускаем новый дроплет кликнув на зеленый “CREATE”. Даем ему какое-нибудь имя (любое) на ваш вкус. Я, например, дал своему “ghost-buster-test”. Выбираем (в “Select Size”) 512MB/1CPU, а в “Select Region” то место, где вы хотите расположить свой VPN. Если вас не волнует доступ к ресурсам, которые работают только из США, то разумнее всего выбирать регион близкий к вам (Amsterdam или London для жителей бывшего СССР).

Далее в секции “Select Image” переходим в “Applications” и там выбираем “Docker 1.8.1 on Ubuntu”

После этого жмем на “Create Droplet” и ждем минуту (иногда чуть больше) пока оно создается.

Предварительная настройка

Достаем docker-compose и устанавливаем на нашем дроплете:

curl -L https://github.com/docker/compose/releases/download/1.4.0/docker-compose-'uname -s'-'uname -m' > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose`

Добавляем swap (понадобится для сборки контейнеров):

fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile

Берем из моего репозитория:

cd /srv 
git clone https://github.com/umputun/ghost-buster-docker.git

и на этом предварительная настройка завершена. Согласитесь, не так все страшно? А ведь мы уже прошли самую сложную часть процесса.

Настраиваем и запускаем блог

Зайдя в каталог с нашим ghost-buster (cd /srv/ghost-buster-docker) мы там обнаружим файл docker-compose.yml который надо немного поменять для вашего блога. Делаем nano /srv/ghost-buster-docker/docker-compose.yml находим там - BLOG_DOMAIN=http://p.umputun.com и меняем мой домен на ваш. Да, и важно, чтоб вы оставили начало с http://. Т.е. если ваш блог будет жить по адресу myblog.blah.ru то у вас должно получиться - BLOG_DOMAIN=http://myblog.blah.ru

Сохраняем файл (F2, Y) и выходим (ESC)

Первый запуск

Теперь мы запустим все, что надо. Если вам интересны детали, то посмотрите в репозитории, а для всех остальных - мы запустим 2 контейнера:

  1. ghost-buster - это сам движок блога плюс автоматическая генерация статистических страниц
  2. ghost-nginx - веб сервер для статики и прокси сервер для управления блогом.

Делается это так:

cd /srv/ghost-buster-docker
docker-compose up -d

Выполнение docker-compose займет несколько минут, не мешайте ему. Когда все закончится, мы получим почти готовый блог.

Заводим пользователя и начинаем писать шедевры.

К этому моменту вы должны заиметь работающий блог, но пока этого не видно. Для того, чтоб стало хорошо, надо зайти адрес/ghost (в моем случае это было http://162.243.228.100/ghost) и ghost попросит завести пользователя.

После завершения этого немудернного процесса у вас, по адресу http://<ваш-адрес>/ будет блог в который можно писать и который может кто и будет читать.

Для возврата в админскую часть, ту где вы будете писать, редактировать и настраивать, добавьте /ghost к адресу, и вы там.

Как добавить темы оформления

На просторах интернета можно найти много разных тем оформления для ghost. Чтоб они появились в вашем блоге, их надо положить в /srv/ghost-buster-docker/data/content/themes. Вот так, например я добавлю тему crisp

mkdir -p /srv/ghost-buster/data/content/themes
cd /srv/ghost-buster/data/content
git clone https://github.com/kathyqian/crisp-ghost-theme.git

Дополнительная информация

  • После каждого изменения контента блога, все документы автоматически публикуются в /static и nginx отдает их.
  • Каждое изменение генерирует все посты в md формате. Они будут в /srv/ghost-buster/export.md и цель их создания - на всякий случай, что было.
  • После перезагрузки дроплета, все должно подняться само
  • Данные блога, статьи и настройки хранятся вне контейнера, прямо на дроплете в /srv/ghost-buster/data. Если вы делете бэкап, то достаточно скопировать только этот каталог.
  • При необходимости, вы можете добавить публикацию статики в любою внешнее место, по вашему выбору. Все в build/ghost-buster/publish.sh