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

нотатки на різні теми
Щотижневий подкаст
Підкаст Радіо-Т
Теорія та практика звукозапису
Свій блог на ghost+buster для майже простих смертних

Нашою метою є власний блог, незалежний від волі господарів ЖЖ, Blogger та інших Medium. Ця невелика інструкція дозволить завести блогове господарство за кілька хвилин і отримати:
- приємний та необтяжливий спосіб написання статей
- маркдаун скрізь
- непоганий зовнішній вигляд блогу та можливість проявити індивідуальність з вибором оформлення
- бути готовим до сплеску популярності та вижити при практично будь-якому навантаженні
Крім того, для тих, хто хоче копнути глибше:
Ось короткий опис того, що ми робитимемо:
- заведемо docker droplet у digital oclean
- доставимо туди все, що треба з мого репозиторію
- підготуємо дроплет для розгортання контейнерів
- побудуємо та піднімемо все це господарство
Піднімаємо дроплет
Насамперед треба завести собі екаунт на DigitalOcean. Це можна (і потрібно;) зробити за моїм реферальним посиланням і отримати 2міс безкоштовно, або прямо з їхнього сайту. Ціна питання – $5/міс. За ці гроші ви отримаєте 1Т трафіку на місяць, що на практиці більш ніж достатньо.
Далі запускаємо новий дроплет, клікнувши на зелений "CREATE". Даємо йому якесь ім'я (будь-яке) на ваш смак. Я, наприклад, дав своєму ghost-buster-test. Вибираємо (у "Select Size") 512MB/1CPU, а в "Select Region" те місце, де ви хочете розмістити свій блог.

Далі в секції "Select Image" переходимо до "Applications" і там вибираємо "Docker 1.8.1 on Ubuntu"

Після цього тиснемо на "CreateDroplet" і чекаємо на хвилину (іноді трохи більше) поки воно створюється.
Попереднє налаштування
Дістаємо docker-compose і встановлюємо на нашому дроплеті:
Беремо з мого репозиторію:
І на цьому попереднє налаштування завершено. Погодьтеся, чи не так все страшно? Адже ми вже пройшли найскладнішу частину процесу.
Налаштовуємо та запускаємо блог
Зберігаємо файл (F2, Y) та виходимо (ESC)
Перший запуск
Тепер ми запустимо все, що треба. Якщо вам цікаві деталі, то подивіться в репозиторії, а для решти - ми запустимо 2 контейнери:
- ghost-buster - це сам движок блогу плюс автоматична генерація статистичних сторінок
- ghost-nginx - веб-сервер для статики та проксі-сервер для управління блогом.
Робиться це так:
Виконання docker-compose займе кілька хвилин, не заважайте йому. Коли все закінчиться, ми отримаємо майже готовий блог.
Заводимо користувача та починаємо писати шедеври.

Як додати теми оформлення
На просторах інтернету можна знайти багато різних тем оформлення для ghost. Щоб вони з'явилися у вашому блозі, їх треба покласти у /srv/ghost-buster-docker/data/content/themes. Ось так, наприклад, я додам тему crisp
Встановлення оновлень
Для того, щоб дістати оновлену конфігурацію треба зробити таке:
Ця процедура завантажить свіжий образ із docker-hub, перебудує та перезапустить контейнери. Вона безпечна для ваших даних і не торкнеться постів, тим оформлення та інших установок вашого блогу.
додаткова інформація
- Після кожної зміни контенту блогу всі документи автоматично публікуються в /srv/ghost-buster-docker/static і nginx віддає їх.
- Кожна змінагенерує всі посади в md форматі. Вони будуть в /srv/ghost-buster-docker/export.md і мета їх створення - про всяк випадок.
- Після перезавантаження дроплета, все має піднятися саме
- Дані блогу, статті та налаштування зберігаються поза контейнером прямо на дроплеті в /srv/ghost-buster-docker/data . Якщо ви ділите бекап, то достатньо скопіювати лише цей каталог.
- При необхідності, ви можете додати публікацію статики в будь-яке зовнішнє місце, на ваш вибір. Все в build/ghost-buster/publish.sh
- У цьому publish.sh є пара "милиць" для обходу проблем buster з RSS і лічильником disqus.
- Якщо, з якоїсь причини, вам потрібно перезапустити ghost (наприклад, він може хотіти перезапуску щоб побачити нову тему) робимо так: cd /srv/ghost-buster-docker && docker-compose restart
Можливі проблеми та методи їх вирішення
Після початкового встановлення блогу та реєстрації користувача сайт недоступний.
Можливо, ви просто недочекалися, генерація може зайняти кілька секунд. Другий варіант ремонту: перевантажте контейнери `/srv/ghost-buster-docker && docker-compose restart
Немає доступу до сайту та адмінської (/ghost) частини.
Мабуть, на вашому дроплеті запущений файрвол (UFW). За замовчуванням його там немає, але якщо ви ставите це на один із ваших створених заздалегідь дроплетів, то все може бути. Потрібно дозволити доступ до 80 порту - sudo ufw allow 80/tcp
Спроба запустити docker-compose падає з повідомленням Unsupported config option for nginx service: 'container_name'
Це означає, що у вас вже встановлено стару версію docker-compose . Найпростіше його оновити зробивши sudo pip install-U docker-compose. Якщо ви не хочете або не можете цього зробити, просто додайте /usr/local/bin докоманда docker-compose, тобто. /usr/local/bin/docker-compose up -d
Виникло бажання зібрати образ самому, замість використання готового
- Додаємо swap, він потрібен для збирання контейнера на дрібних дроплетах - fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
- Змінюємо в docker-compose.yml рядок image: umputun/ghost-buster-docker на build: build/ghost-buster