Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

Я долго искал движок с удобным редактором, чтобы собрать все свои проекты, заметки и контакты в одном месте. И искал редактор простой и понятный, в идеале как у Notion: с возможностью Markdown, загрузкой изображений прямо из буфера обмена и минималистичным интерфейсом.

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

И нашел идеальный движок для сайта-портфолио Ghost, но мне не понравилась цена — почти 25 тысяч рублей в год. Затем выяснил, что его можно поднять бесплатно на арендованном сервере, введя несколько команд в терминале. Делюсь пошаговой инструкцией, как это сделать.

Почему устарели WordPress, Эгея и остальные классические движки

Мои две главные претензии к популярным движкам это

  • сложный админский интерфейс
  • отсутствие wysiwyg-редактора

Чтобы написать короткий текст в Wordpress-е требуется куча телодвижений, нельзя просто открыть и начать писать. Когда движок предлагает вручную писать HTML-теги и по сто раз переключаются между превью и исходным кодом, заливать картинки на хостинг, а потом вставлять ссылки я чувствую боль.

Когда поработаешь в Notion, возвращаться к старым редакторам кажется такой же потерей в комфорте, как внезапно получить Nokia 5300 после большого экрана одиннадцатого айфона.

Update
С 2018 года Wordpress использует новый крутой редактор Gutenberg который не хуже Notion. На момент написания статьи я не знал об этом.

Что такое wysiwyg редактор и почему я готов работать только с ним

wysiwyg (what you see is what you get) — это тип редактора, в котором текст форматируется сразу, без переключения между исходным кодом и финальной версией.

Именно такой редактор используется на vc.ru, и такого же удобства можно достичь на собственном сайте-визитке, если правильно выбрать движок

Сравнил Notion с Эгеей

C какими требованиями я искал идеальный движок

  • Держать контент на своем хостинге — сервисы закрываются (от narod.ru до google+), рано или поздно все становится недоступным, контент лучше держать у себя. Также я не хочу зависеть от правил и админов площадки: кейс или статью легко могут удалять по каким-то фейковым жалобам, как это происходит на Medium и LiveJournal
  • Возможность подключить свой домен
  • Минимум интерфейса — в идеале интерфейса CMS вообще не должно быть видно, админская панель не нужна, посты должны редактироваться, создаваться и просматриваться в одном месте
  • Полноценный wysiwyg редактор — поддержка разметки Markdown и обработка её в реальном времени, подсветка кода, вставка картинок из буфера обмена
  • Минималистичный внешний вид — я не хочу заниматься версткой и темами, подходящее оформление должно быть из коробки

Расскажу, с чем я сравнивал Ghost и как пришел к идее, хочу визитку именно на нем.

Notion — современный вариант Evernote

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

Я огромный фанат Notion. Это самый продвинутый инструмент для заметок, создания wiki, простых списков задач и многого другого.

В Notion можно работать командой, есть огромная библиотека шаблонов: таблицы, календари, галерея, даже списки наподобие Trello.

Notion можно превратить в движок для публичного блога, но к сожалению, для этого он плохо приспособлен. Да, вы можете опубликовать все страницы в интернет как обычный сайт, вот даже пример сайта на notion.

Но к нему нельзя прикрутить свой домен, перемещение по страницам выглядит странно, иногда они открываются в виде попапов, а не отдельных страниц.

Плюсы/минусы Notion:

✅ Идеальный редактор

✅ Умеет сложное форматирование

✅ Поддержка шаблонов страниц

❌ Нет self-hosted версии

❌ Плохо подходит для сайта

❌ Нельзя подключить свой домен

❌ Мусор в URL, нельзя задать адрес страницы самостоятельно

❌ Неудобная навигация, попапы вместо отдельных страниц

❌ Нет комментариев

Teletype.in — минималистичный сервис для блогов

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

Teletype.in очень похож на Medium, он минималистичен, поддерживает markdown и создается русскими разработчиками.

По стилю напоминает telegra.ph, сервис от команды Telegram, но в отличие от телеграф в нем можно зарегистрироваться и вести цельный блог от своего аккаунта. Можно подключить свой домен.

Пока я тестировал Teletype, вылезли его проблемы: я подключил домен и попробовал перенести туда пару статей, но случайно сломал верстку и получил неработающую страницу поста. Так что продукт пока сыроват.

Это компенсируется тем, что разработчики говорят на русском и быстро отвечают на баг-репорты в Telegram: они почти сразу приняли мои запросы и за пару дней их исправили.

Редактор пока не настолько удобный и выверенный в мелочах, как Notion, в комментариях нельзя писать анонимно или через соцсети.

Плюсы/минусы Teletype:

✅ Нормальный редактор

✅ Можно подключить свой домен

✅ Удобно добавлять и редактировать посты

✅ Можно задать свой URL для каждого поста

❌ Нельзя использовать другой хостинг

❌ Редактор тем не менее сыроват

❌ Почти невозможно настроить профиль

❌ Баги в проекте

Ghost — и почему я остановился именно на нем

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

Ghost — современная и симпатичная CMS с мощным редактором, почти таким же, как в Notion: нормальная поддержка рендера markdown в реальном времени, картинки вставляются простым Ctrl+V, чистый кайф.

Ghost был бы идеальный движком, если бы не проблемы с оформлением и внешним видом сайта. Тема по умолчанию не настраивается так же просто, как в Wordpress, в ней вообще нет настроек: нельзя, например, отключить меню или футер.

Есть галерея официальных тем, также можно поискать в Theme Forest, там есть еще порядка полторы сотни свежих. Я пока не нашел свою идеальную, поэтому мой вариант — сверстать свою тему самостоятельно один раз, а затем наслаждаться удобным редактором.

В Ghost есть много интересных функций прямо из коробки и плагинов, например платные подписки на закрытый контент (как на Patreon). Он очень популярен у компаний, которые ведут там корпоративные блоги, среди клиентов Ghost ведут Tinder, Revolut и Nasa.

Движок активно дорабатывается разработчиками, это можно увидеть по их Github.

Плюсы и минусы Ghost:

✅ Идеальный редактор

✅ Полный контроль над сайтом и оформлением

✅ Можно хостить самостоятельно

✅ Легко подключить собственный домен

✅ Можно подключить любой сервис комментариев

❌ Темы нельзя настроить без правки кода и исходников

❌ Создавать и редактировать посты приходится через админку

Лайфхак: как пользоваться Ghost почти бесплатно

Сколько я на самом сэкономил?

Как я уже говорил, Ghost — платный движок и стоимость начинается от $29 в месяц, это 2047 рублей в месяц или 24 541 рублей в год.

Если у вашего блога больше 100 000 просмотров, цена уже растет до 66930 рублей в год.

Я нашел способ развернуть свой блог, заплатив только за хостинг — вместе со всеми скидками, он обходится в 5529.6 рублей в год.

Итого 19011.4 рублей экономии в год


Как это работает без взлома системы?

Дело в том, что Ghost — это опенсорсный проект, значит его исходный код доступен всем бесплатно и его можно запускать, дорабатывать и создавать свои модификации.

Создатели Ghost не просто выложили исходный код проекта, но и упаковали его в docker-контейнер, чтобы люди могли быстро поднять рабочую версию.

Я не буду углубляться в технические детали и просто покажу, как запустить из этого контейнера Ghost на арендованном VPS-сервере.

Это занимает где-то 20 минут времени, но экономия в 17 тысяч стоит моих 20 минут.

Пошаговая инструкция: как поставить Ghost почти бесплатно

Для начала вам понадобится VPS-сервер с Docker.

Что такое VPS-сервер: это вид хостинга, в котором вы полностью управляете настройками сервера.

От обычного shared-хостинга он отличается также, как хостел отличается от собственной квартиры — кроме вас никого на вашей территории нет, вы сами настраиваете все, как пожелаете

Я покажу, как запустить Ghost-блог на примере VPS-ки от ruvds, там можно заказать сервер сразу с предустановленным Docker — он включен в маркетплейс и при настройке движка будет меньше хлопот.

1. Заказываем сервер с Docker. Для этого жмем на маркетплейс, затем выбираем дата-центр.

Дата-центр лучше выбирать географически ближний к вашему ядру аудитории — так выше отклик сайта. Берем rucloud в Москве

Чем ближе дата-центр к пользователю сайта, тем быстрее отклик
Чем ближе дата-центр к пользователю сайта, тем быстрее отклик

2. Выбираем из маркетплейса Docker

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

3. Чтобы получить максимальную скидку в 40%, я беру оплату за год.

30% из них за предоплату и плюс 10% по промокоду vc10 — если ввести его на этапе оплаты

Выходит всего 460 рублей в месяц за хостинг, вместо 2047 рублей ежемесячных платежей разработчикам Ghost. Скидка в 30% будет продолжаться весь июнь, потом снова станет 20%
Выходит всего 460 рублей в месяц за хостинг, вместо 2047 рублей ежемесячных платежей разработчикам Ghost. Скидка в 30% будет продолжаться весь июнь, потом снова станет 20%

4. Затем переходим во вкладку мои серверы. Ждем минут 5-10, чтобы сервер создался.

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

5. Дальше будем работать в терминале. Найдите Launchpad, начните вводить Termial и откройте программу. Если у вас windows, жмите Win + X.

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

6. Подключаемся к серверу по SSH. Для этого вводим в терминале команду

ssh root@194.87.102.150

Где вместо 194.87.102.150 надо ввести ip-адрес сервера, который вы создали. Найти ip-адрес и пароль в личном кабинете

пароль тоже сохраните, он понадобится
пароль тоже сохраните, он понадобится

Дальше терминал запросит пароль, вводим.

7. Теперь надо установить на сервере Apache. Он позволит картинке с блогом появиться в браузере. Вводим в терминале команды

sudo apt update sudo apt install apache2 ufw allow "apache full"

8. Теперь устанавливаем сам Ghost. Не забудьте заменить ip-адрес 194.87.102.150 в команде на ip-адрес вашего сервер

docker run -d -e url=http://194.87.102.150:2368 -p 2368:2368 ghost

Вы не поверите, но это все

Теперь, если вы откроете в браузере страничку http://ваш-ip:2368, то увидите приветственную страницу движка Ghost

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

Остались только детали настройки сервера:

  • привязать доменное имя
  • настроить SSL-сертификат
  • сделать так, чтобы блог открывался сразу на главной

Заканчиваем настройку сайта

Привязываем к блогу доменное имя

Я купил самое дешевое доменное имя vctestaccount.club за доллар. Покажу на его примере, как привязать к VPS доменное имя

1. В настройках ns-записей регистратора, добавляем A-запись с значением нашего IP

В host указываем @, в value — ip-адрес и сохраняем
В host указываем @, в value — ip-адрес и сохраняем

2. Удаляем остальные записи, они не нужны

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

3. Дальше открываем терминал. Вводим там команды (вместо example.com вводите свое доменное имя)

mkdir -p /var/www/example.com/ chown -R $USER:$USER /var/www/example.com

4. Затем открываем этот файл с помощью редактора nano этой командой

nano /var/www/example.com/index.htm

Прямо в терминале откроется файл — содержимое главной страницы вашего сайта. Напишите в нем любой текст, я написал hello world.

Этот файл — содержимое главной страницы сайта
Этот файл — содержимое главной страницы сайта

Затем нажмите Сtrl + X, редактор спросит сохранить ли файл. Введите Y и нажмите Enter

5. Дальше вводим команды

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf nano /etc/apache2/sites-available/example.com.conf

6. И снова открылся редактор.

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

Вам нужно заменить выделенуню эту строчку на

/var/www/example.com/index.html​

добавить в файл строчку

ServerName example.com

Вот так будет выглядеть готовый файл

Заменили одну строчку, добавили новую. Не забывайте вместо example.com вводить свое доменное имя
Заменили одну строчку, добавили новую. Не забывайте вместо example.com вводить свое доменное имя

Выходим из редактора, нажав CTRL + X, вводим Y (на запрос, сохранить ли файл) и жмем Enter

7. Активируем изменения командами

a2ensite example.com systemctl reload apache2

Ура, теперь сайт начал открываться по нашему доменному имени, а в нем — то, что вы написали в файле главной страницы

Пока сайт будет открываться только по адресу <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fvctestaccount.club%2F&postId=130558" rel="nofollow noreferrer noopener" target="_blank">http://vctestaccount.club/</a>
Пока сайт будет открываться только по адресу http://vctestaccount.club/

Пока сайт будет открываться только по адресу http://ваш-домен.com/

Стоит попытаться войти через безопасное соединение https://ваш-домен.com/, как страница будет выводить ошибку. Чтобы починить это, вам надо настроить SSL-сертификат.

Настраиваем SSL-сертификат

1. Вводим команды

add-apt-repository ppa:certbot/certbot apt install python-certbot-apache certbot --apache -d example.com

На этом этапе у вас попросят email. Смело вводите, затем вводите букву А и нажимайте enter

2. Теперь у вас спросят, надо ли переадресовывать весь трафик на безопасное соединение. Говорите «да», то есть вводите 2 и жмите enter

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

Вуаля! Теперь сайт откроется и через HTTPS, а сверху появится значок

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

Делаем так, чтобы блог открывался на главной

Возвращаемся в терминал вводим команду

nano /etc/apache2/sites-available/example.com-le-ssl.conf

Откроется файл, куда надо вставить текст

<Proxy *> Order deny,allow Allow from all </Proxy> SSLProxyEngine On ProxyRequests Off ProxyPreserveHost On ProxyPass / http://localhost:2368/ ProxyPassReverse / http://localhost:2368/

Вот как это должно получиться

Проследите, чтобы текст вставился до закрывающих тегов  &lt;/VirtualHost&gt; и  &lt;/IfModule&gt;
Проследите, чтобы текст вставился до закрывающих тегов  </VirtualHost> и  </IfModule>

Теперь закрываем файл через CTRL + X, вводим Y и нажимаем enter

4. Вводим команды

systemctl reload apache2 a2enmod proxy a2enmod proxy_http a2enmod proxy_ajp a2enmod rewrite a2enmod deflate a2enmod headers a2enmod proxy_balancer a2enmod proxy_html a2enmod proxy_ftp a2enmod proxy_connect a2enmod ssl systemctl reload apache2

Все. Блог открылся на главной по вашему домену

Как я сэкономил 20 тысяч рублей на движке Ghost, потратив 20 минут времени

Выводы

Некоторые платные SaaS-версии продуктов доступны бесплатно и даже легально, если копнуть чуть глубже. Если вы видите слова OpenSource и Docker, то вероятно все получится.

Если у вас не работают какие-то команды или вы запутались в процессе — пишите в комментарии и я постараюсь помочь.

2020
43 комментария

Судя по имени автора и выбранному хостингу со ссылками, статья больше похожа на рекламу серваков. Тонкий хитрый план, но нет.

10
Автор

Конечно не без рекламы, тем более в корпоративном аккаунте.
Но инструкция сработает и для других VPS, тоже будет дешевле, чем напрямую платить Ghost

5

Реклама не реклама, но статья полезная.
Зачастую нехватает таких разжеванных мануалов на vc.

Уже пошел смотреть особенности cms.

6
Автор

Спасибо, рад, что понравилось

2

Если выбрать Digital Ocean, не придется возиться с Апаче, сертификатом, гонять туда-сюда .conf и вот это всё. Может, получится сократить этот гайд аж втрое или вчетверо. А цена останется такая же, примерно 5-6 $ в месяц.

https://marketplace.digitalocean.com/apps/ghost

4

Есть опыт с Ghost, использовал для коммерческих проектов. Могу сказать, что у Ghost есть два серьезных недостатка, которые делают его слабо применимым для крупных проектов. 

Во-первых, сколько-либо серьезно расширять функционал Ghost нереально без изменения исходного кода Ghost, так как система дополнений крайне ограничена.

Во-вторых, у Ghost есть техническое ограничение - он может работать только на одном сервере. Если вы захотите развернуть кластер из Ghost‘ов, вам это не удастся без серьезных изменений в исходном коде. Без изменений, часть серверов будет просто периодически валиться и выдавать 50x-ые или 405-ую ошибки.

Wordpress, сколько бы я его не ненавидел, более пригоден для применения в кластере, хоть и там есть подвохи (но минимальные)

3