IT Хасслер
Ну что, экстеншен доступен в сторе уже 3 дня, я успел за это время парочку багов поправить и уже пройти новую модерацию. 👉 Email Signature Generator 👈 Получается, это мой первый продукт в направлении Chrome Extensions! Сейчас на очереди реклама - кампания…
Небольшой апдейт по экстеншену.
Есть органический рост, цифры небольшие пока, но уже что-то! Очень радует, что за последние несколько дней увеличилось количество установок, а количество удалений ощутимо снизилось ☺️
Ещё не открутили рекламу — у меня так и не получилось убедить поддержку Google в том, что они неадекватны: не одобряют объявления, потому что получают ошибку 302, а ссылка ведёт на сайт Chrome Web Store. Продолжают писать: «напишите своему разработчику», а я пишу: «разработчик это и есть Google».
Рекламу на FB мне помогут запустить кураторы буткемпа, на днях должна пойти.
После этого все необходимые действия будут завершены. Я ещё подумываю добавить пару полезных функций типа изменения цвета подписи, может ещё парочку шаблонов новых сделать. Но в общем - как я и говорил - отдаю проект в тёплые руки гугл поиска и SEO и наблюдаю 😏
Есть органический рост, цифры небольшие пока, но уже что-то! Очень радует, что за последние несколько дней увеличилось количество установок, а количество удалений ощутимо снизилось ☺️
Ещё не открутили рекламу — у меня так и не получилось убедить поддержку Google в том, что они неадекватны: не одобряют объявления, потому что получают ошибку 302, а ссылка ведёт на сайт Chrome Web Store. Продолжают писать: «напишите своему разработчику», а я пишу: «разработчик это и есть Google».
Рекламу на FB мне помогут запустить кураторы буткемпа, на днях должна пойти.
После этого все необходимые действия будут завершены. Я ещё подумываю добавить пару полезных функций типа изменения цвета подписи, может ещё парочку шаблонов новых сделать. Но в общем - как я и говорил - отдаю проект в тёплые руки гугл поиска и SEO и наблюдаю 😏
👍8🔥3👀1
IT Хасслер
Теперь немного и об успехах 😏 В посте про замороженный проект писал, что немного обучался крипто-трейдингу. И вот на протяжении всего процесса меня не покидало желание создать какой-то автоматизированный способ торговли. Я знал, что это точно возможно (знаю…
Криптобот минус 🤷♂️
Небольшой апдейт по этой ситуации решил сделать.
Как-то так получилось, что не довели бота до той степени, когда за ним можно вообще не следить, и всё будет ОК. Иногда он всё же давал неправильную инфу, и некоторые из этих случаев были особо сливными 🌚
Мы как-то закопались в своих проектах, перестали его контролировать. Он не слил много денег, но и особо не заработал — всё потому, что мы так и не решились торговать с плечом, оно всегда было 1x, и хотя было много прибыльных сделок, все они были копеечными по прибыли.
И мы решили его отключить, т.к. поняли, что всё равно не будем им заниматься в ближайшее время. Не то чтобы он был плох, или довести до идеала невозможно — я думаю, всё возможно при должном старании. Видимо просто интересы направлены в другую сторону сейчас.
Так что не быть мне пока криптомиллионером 😄
Небольшой апдейт по этой ситуации решил сделать.
Как-то так получилось, что не довели бота до той степени, когда за ним можно вообще не следить, и всё будет ОК. Иногда он всё же давал неправильную инфу, и некоторые из этих случаев были особо сливными 🌚
Мы как-то закопались в своих проектах, перестали его контролировать. Он не слил много денег, но и особо не заработал — всё потому, что мы так и не решились торговать с плечом, оно всегда было 1x, и хотя было много прибыльных сделок, все они были копеечными по прибыли.
И мы решили его отключить, т.к. поняли, что всё равно не будем им заниматься в ближайшее время. Не то чтобы он был плох, или довести до идеала невозможно — я думаю, всё возможно при должном старании. Видимо просто интересы направлены в другую сторону сейчас.
Так что не быть мне пока криптомиллионером 😄
👍1🔥1🤔1😢1🙈1
Про парадигму «проблема — решение»
Я раньше в намерении создать какой-то продукт всегда исходил из таких стремлений, как «создать что-то крутое», «интересно было бы сделать», «может стать масштабным». Даже если я не осознавал это и думал, что есть реальная перспектива у продукта, сейчас понимаю, что в мозге были именно эти мотивации.
Да и вообще я обычно представлял свои будущие IT-бизнесы как какие-то сложные большие проекты. Наверно поэтому и простые, эффективные решения пролетали мимо меня незамеченными. По сути я сам искал себе что-то сложное и большое.
Уже некоторое время я работаю над тем, чтобы это изменить: стараюсь думать в парадигме «проблема — решение», то есть просто найти и решить проблему (быстро и просто), которая реально есть у ощутимого числа людей.
И я продолжаю удивляться, что в реальности существуют такие проблемы, о которых иногда даже не догадываешься! Посмотрел вот это видео и офигел: чел сделал софт для создания email-рассылок с ChatGPT. Я даже не думал, что у людей, кто делает свои рассылки, есть проблемы в их создании. А сейчас понимаю, что если даже и несложно написать страницу текста и сделать нужную структуру, то видя заготовку от ChatGPT, проще довести её до ума, чем всё писать с нуля. Особенно если делаешь регулярно кучу писем, либо несколько рассылок.
Я всё больше смотрю на вещи с другой стороны: не со стороны продукта, а со стороны запроса пользователей. Надо просто находить реальные запросы людей, и, как хорошо сказал Богдан, постараться максимально быстро и просто замкнуть цепочку обратной связи с миром — т.е. создать это решение максимально простым способом с минимумом функций и свистелок и посмотреть, зайдёт ли им.
💡 Также полезно оценивать все идеи, задавая вопросы «а насколько долго/дорого и сложно мне будет это сделать? а насколько хороший выхлоп я могу получить?»
Я раньше в намерении создать какой-то продукт всегда исходил из таких стремлений, как «создать что-то крутое», «интересно было бы сделать», «может стать масштабным». Даже если я не осознавал это и думал, что есть реальная перспектива у продукта, сейчас понимаю, что в мозге были именно эти мотивации.
Да и вообще я обычно представлял свои будущие IT-бизнесы как какие-то сложные большие проекты. Наверно поэтому и простые, эффективные решения пролетали мимо меня незамеченными. По сути я сам искал себе что-то сложное и большое.
Уже некоторое время я работаю над тем, чтобы это изменить: стараюсь думать в парадигме «проблема — решение», то есть просто найти и решить проблему (быстро и просто), которая реально есть у ощутимого числа людей.
И я продолжаю удивляться, что в реальности существуют такие проблемы, о которых иногда даже не догадываешься! Посмотрел вот это видео и офигел: чел сделал софт для создания email-рассылок с ChatGPT. Я даже не думал, что у людей, кто делает свои рассылки, есть проблемы в их создании. А сейчас понимаю, что если даже и несложно написать страницу текста и сделать нужную структуру, то видя заготовку от ChatGPT, проще довести её до ума, чем всё писать с нуля. Особенно если делаешь регулярно кучу писем, либо несколько рассылок.
Я всё больше смотрю на вещи с другой стороны: не со стороны продукта, а со стороны запроса пользователей. Надо просто находить реальные запросы людей, и, как хорошо сказал Богдан, постараться максимально быстро и просто замкнуть цепочку обратной связи с миром — т.е. создать это решение максимально простым способом с минимумом функций и свистелок и посмотреть, зайдёт ли им.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Making $50,000 Ai SaaS in Minutes (No Code)
Learn How to Build Software with No Code - https://www.wgmiacademy.io/?via=Youtube
Timestamps:
0:00 - Context
2:45 - The New System
4:49 - Important Warning
5:16 - Make any software in Minutes
9:00 - Be Careful
Timestamps:
0:00 - Context
2:45 - The New System
4:49 - Important Warning
5:16 - Make any software in Minutes
9:00 - Be Careful
👍4🔥3
Немного гиковства 🤓
Вчера пришла моя долгожданная TheModularBottle 🎉 Поддержал проект на Kickstarter ещё в конце 2022 года, очень уж понравилась концепция и то, как она выглядит. Ждал доставку больше года 🤯 уже начал думать, что это скам)
Фичи:
- Внутренняя колба из стекла, внешняя из пластика. Легко мыть, по сути всего 3 части: колба и 2 части крышки. Если в неё налить что-то цветное, выглядит красиво 😄
- 3 варианта крышки: с вентилем, как на первом фото, сдвигающаяся и откидная (на втором), для разных случаев. Я пока юзаю вентиль в домашних условиях, удобно.
- Небольшой отсек в донышке для всякого: кто на спорте — для витаминов, кто как я — для вкусняшек 😁
- Дополнительная колба меньшего размера: можно убрать вот эту тёмно-серую часть и вставить колбу поменьше, если берёшь с собой.
- Инфьюзер (на 2-м фото): можно положить туда ягоды, фрукты, листья какие-нибудь, чтобы они отдавали вкус в воду.
- Алюминиевая соломинка и ёршик (!) для неё, чтоб чистить внутри.
- Фигня для размешивания протеина: интересной формы пластмассовая хрень, которую надо кидать в колбу и взбалтывать, ну как обычно качки делают. Вернусь в спортзал — обязательно попробую.
По первым ощущениям могу сказать, что сама бутылка мне нравится: удобная, увесистая такая, с прорезиненными частями (и на дне тоже, чтоб не падала). Хотя на фото она казалась чуть лучше и качественнее, чем в жизни, всё равно достойно. Есть ещё небольшой минус — маленькая трещина на нижней части пластиковой, которая никак не помешает при использовании, но всё же. Написал в поддержку, вдруг отправят замену 🤔
Не хватает к ней кончено удобной сумки, чтоб хранить все неиспользуемые в данный момент части, ну да ладно.
Попробую походить с ней на прогулки и в зал, попробую засовывать мяту и всякое такое в инфьюзер. Вообще можно было давно купить обычную спортивную бутылку, и польза в быту была бы примерно такая же, но как-то зацепила именно эта бутылка, захотелось иметь у себя её. Думаю, теперь буду с ней выглядеть максимальным задротом 😆
Вчера пришла моя долгожданная TheModularBottle 🎉 Поддержал проект на Kickstarter ещё в конце 2022 года, очень уж понравилась концепция и то, как она выглядит. Ждал доставку больше года 🤯 уже начал думать, что это скам)
Фичи:
- Внутренняя колба из стекла, внешняя из пластика. Легко мыть, по сути всего 3 части: колба и 2 части крышки. Если в неё налить что-то цветное, выглядит красиво 😄
- 3 варианта крышки: с вентилем, как на первом фото, сдвигающаяся и откидная (на втором), для разных случаев. Я пока юзаю вентиль в домашних условиях, удобно.
- Небольшой отсек в донышке для всякого: кто на спорте — для витаминов, кто как я — для вкусняшек 😁
- Дополнительная колба меньшего размера: можно убрать вот эту тёмно-серую часть и вставить колбу поменьше, если берёшь с собой.
- Инфьюзер (на 2-м фото): можно положить туда ягоды, фрукты, листья какие-нибудь, чтобы они отдавали вкус в воду.
- Алюминиевая соломинка и ёршик (!) для неё, чтоб чистить внутри.
- Фигня для размешивания протеина: интересной формы пластмассовая хрень, которую надо кидать в колбу и взбалтывать, ну как обычно качки делают. Вернусь в спортзал — обязательно попробую.
По первым ощущениям могу сказать, что сама бутылка мне нравится: удобная, увесистая такая, с прорезиненными частями (и на дне тоже, чтоб не падала). Хотя на фото она казалась чуть лучше и качественнее, чем в жизни, всё равно достойно. Есть ещё небольшой минус — маленькая трещина на нижней части пластиковой, которая никак не помешает при использовании, но всё же. Написал в поддержку, вдруг отправят замену 🤔
Не хватает к ней кончено удобной сумки, чтоб хранить все неиспользуемые в данный момент части, ну да ладно.
Попробую походить с ней на прогулки и в зал, попробую засовывать мяту и всякое такое в инфьюзер. Вообще можно было давно купить обычную спортивную бутылку, и польза в быту была бы примерно такая же, но как-то зацепила именно эта бутылка, захотелось иметь у себя её. Думаю, теперь буду с ней выглядеть максимальным задротом 😆
👍4❤1😁1🤔1🍾1
Дорогие женщины!
С праздником вас ❤️
Желаю чтобы ваши гражданские и конституционные права никогда не нарушались, давление общества на вашу личную жизнь постепенно сошло на нет, а само патриархальное устройство в конечном итоге изменилось в сторону равных прав и свобод 🌷
Нет гендерным стереотипам, разрыву в зарплатах, харрассменту, нет репродуктивному насилию, насилию в семье! Всем женщинам равные мужским возможности учиться и работать, уважение к ним и к их телу, отсутствие внутренней и внешней мизогинии 🌹
Будьте такими, какими хотите быть! ✨
С праздником вас ❤️
Желаю чтобы ваши гражданские и конституционные права никогда не нарушались, давление общества на вашу личную жизнь постепенно сошло на нет, а само патриархальное устройство в конечном итоге изменилось в сторону равных прав и свобод 🌷
Нет гендерным стереотипам, разрыву в зарплатах, харрассменту, нет репродуктивному насилию, насилию в семье! Всем женщинам равные мужским возможности учиться и работать, уважение к ним и к их телу, отсутствие внутренней и внешней мизогинии 🌹
Будьте такими, какими хотите быть! ✨
❤8🔥4🤔2
Преимущества маленьких продуктов 🤏
И так понятно, что маленький продукт сделать и запустить проще: меньше времени и/или денег на разработку, меньше сил потратишь, быстрее запустишь — profit!
Но хочу подсветить это с другой стороны:
Чем дольше делаешь продукт и больше в него вкладываешь (не только времени и денег, но и собственного труда, внимания, нервов), тем страшнее его запускать — выкладывать на Product Hunt к примеру, да и просто рассказывать о нём в публичном поле. Страшно, что он не зайдёт, и очень сложно признать, что он не удался, и отказаться от него.
С другой стороны, маленький продуктик на недельку-две работы: сделал без напряга, зарелизил где хотел, дал трафа немножко. Пошло — супер! Не пошло — пох*й. Сделал выводы, отдохнул, через недельку новый стартанул🕺
Этот небольшой инсайтик получил не так давно, и теперь уже как-то не хочется делать большие штуки... 🤔 возможно это и хорошо — теперь даже в потенциально больших проектах буду думать, как его дробить на части и по кусочкам создавать и релизить. А возможно я больше никогда ничего крутого так и не сделаю 🥲
И так понятно, что маленький продукт сделать и запустить проще: меньше времени и/или денег на разработку, меньше сил потратишь, быстрее запустишь — profit!
Но хочу подсветить это с другой стороны:
Чем дольше делаешь продукт и больше в него вкладываешь (не только времени и денег, но и собственного труда, внимания, нервов), тем страшнее его запускать — выкладывать на Product Hunt к примеру, да и просто рассказывать о нём в публичном поле. Страшно, что он не зайдёт, и очень сложно признать, что он не удался, и отказаться от него.
С другой стороны, маленький продуктик на недельку-две работы: сделал без напряга, зарелизил где хотел, дал трафа немножко. Пошло — супер! Не пошло — пох*й. Сделал выводы, отдохнул, через недельку новый стартанул
Этот небольшой инсайтик получил не так давно, и теперь уже как-то не хочется делать большие штуки... 🤔 возможно это и хорошо — теперь даже в потенциально больших проектах буду думать, как его дробить на части и по кусочкам создавать и релизить. А возможно я больше никогда ничего крутого так и не сделаю 🥲
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🤔2
На прошлой неделе решил втопить в направлении непубличного проекта, почти всё время уходило на него.
И, собственно, возник вопрос: А кто как деплоит и запускает свои небольшие продукты на node.js?
Раньше я выкачивал git-репозиторий на сервере, запускал
Затем я выучил новую схему — это Kubernetes и Terraform. Но это лакшери-схема, для бутстрапа небольшого проекта это дорого и неоправдано технически.
Сейчас делаю так: собираю билд с помощью rollup, на VPS-ке настраиваю nginx, гружу файлы, пишу systemd-скрипт, в котором просто
Может кто поделится каким-то простым и удобным CI-решением для такого?
И, что самое интересное — как вы настраиваете VPS, если надо несколько одинаковых? Просто руками, с помощью Ansible, или пишете себе .sh-скрипт?
И, собственно, возник вопрос: А кто как деплоит и запускает свои небольшие продукты на node.js?
Раньше я выкачивал git-репозиторий на сервере, запускал
npm install, запускал всё это с помощью pm2.Затем я выучил новую схему — это Kubernetes и Terraform. Но это лакшери-схема, для бутстрапа небольшого проекта это дорого и неоправдано технически.
Сейчас делаю так: собираю билд с помощью rollup, на VPS-ке настраиваю nginx, гружу файлы, пишу systemd-скрипт, в котором просто
node index.js и Restart=OnFailure.Может кто поделится каким-то простым и удобным CI-решением для такого?
И, что самое интересное — как вы настраиваете VPS, если надо несколько одинаковых? Просто руками, с помощью Ansible, или пишете себе .sh-скрипт?
👍4❤2😱1
Горы и хассл 🤓
Последние 2 недели пролетели на одном дыхании. Практически всё время посвящал непубличному проекту, а ещё прилетала подруга, и мы сгоняли в горы 🗻
Это было офигенно, но я всё никак не найду времени, чтобы разобрать все фотки и видео — хотел смонтировать рилс, забрать пару подписчиков у тревел-блогеров 😄
Вместе с тем регулярно работал над проектом, потому что уже давно пора было запускать сам продукт. И вот наконец вчера ночью это свершилось 🎉
Но не без багов конечно, и часть функций пришлось закрыть, потому что сразу это не заработало, а запустить уже хотелось.
Вообще сейчас отложил все другие проекты, даже интересные, потому что понял, что не вывожу, поэтому разрываться смысла нет — всё равно больше часов в сутках я не получу.
Апдейты по статистике уже имеются, думаю скоро выложу📈
Последние 2 недели пролетели на одном дыхании. Практически всё время посвящал непубличному проекту, а ещё прилетала подруга, и мы сгоняли в горы 🗻
Это было офигенно, но я всё никак не найду времени, чтобы разобрать все фотки и видео — хотел смонтировать рилс, забрать пару подписчиков у тревел-блогеров 😄
Вместе с тем регулярно работал над проектом, потому что уже давно пора было запускать сам продукт. И вот наконец вчера ночью это свершилось 🎉
Но не без багов конечно, и часть функций пришлось закрыть, потому что сразу это не заработало, а запустить уже хотелось.
Вообще сейчас отложил все другие проекты, даже интересные, потому что понял, что не вывожу, поэтому разрываться смысла нет — всё равно больше часов в сутках я не получу.
Апдейты по статистике уже имеются, думаю скоро выложу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2❤1
Как задеплоить не очень сложный продукт на VPS: Часть 1
Возник у меня такой вопрос пару недель назад, потому что не хотелось сразу заморачиваться с k8s, а облака не подходят для моей архитектуры.
Спасибо Роману — он сразу поделился своим подходом и скриптами, и с его же разрешения буду публиковать их здесь. Это доработанные мною его скрипты и мои собственные, их я дописал, вдохновившись скриптами Ромы.
Я сам сейчас юзаю CentOS 9 Stream, поэтому писал всё под него, но если шарите, несложно будет адаптировать под любую другую *nix. Для CentOS 8 кажется тоже должно подойти сразу, без правок 🤔 После выполнения скриптов VPS будет настроен согласно этому мануалу, также будет установлен и запущен Docker.
В общем, схема такая:
1️⃣ Арендуем VPS (про shared хостинг не пишу, т.к. там часто бывают ограничения по настройке системы)
2️⃣ Генерируем публичный и приватный ключ. Если вы на Mac/Linux, то OpenSSH, если Windows — то PuTTYgen. Размер можно сделать 2048, остальное — как хотите.
Если юзаете PuTTYgen, то после генерации и сохранения ключа нужно из поля «Public key for pasting into OpenSSH» скопировать всё, что там есть, и вставить в новый файл - этот файл надо будет указывать на следующем шаге.
3️⃣ Запускаем у себя на ПК скрипт для создания юзера, из-под которого будем всё устанавливать и запускать (для безопасности):
Где:
При запуске скрипт попросит ввести пароль root-пользователя для подключения. С винды можно через git bash запускать.
Когда он завершится, можно будет подключаться к VPS под новым юзером и с приватным ключом, без ввода пароля. Скрипт добавит этого пользователя в sudoers, Но не запретит вход по паролю. Если нужно, можно это сделать уже потом.
4️⃣ Логинимся в VPS обязательно под новым пользователем, загружаем туда скрипт setup_centos9.sh для дальнейшей настройки.Да, может стоило заморочиться и сделать всё в одном скрипте, но я с ходу не разобрался, как запустить все команды через SSH с sudo 😅
5️⃣ Запускаем скрипт (понадобится ввести пароль нового пользователя):
Он установит firewalld, удалит ненужные пакеты и установит докер.
Всё, теперь ваш VPS настроен. В следующей части напишу про изи-запуск приложений на нём❤️
P.S. Если есть критика, пожелания, предложения по скриптам, пишите 🙌
Возник у меня такой вопрос пару недель назад, потому что не хотелось сразу заморачиваться с k8s, а облака не подходят для моей архитектуры.
Спасибо Роману — он сразу поделился своим подходом и скриптами, и с его же разрешения буду публиковать их здесь. Это доработанные мною его скрипты и мои собственные, их я дописал, вдохновившись скриптами Ромы.
Я сам сейчас юзаю CentOS 9 Stream, поэтому писал всё под него, но если шарите, несложно будет адаптировать под любую другую *nix. Для CentOS 8 кажется тоже должно подойти сразу, без правок 🤔 После выполнения скриптов VPS будет настроен согласно этому мануалу, также будет установлен и запущен Docker.
В общем, схема такая:
1️⃣ Арендуем VPS (про shared хостинг не пишу, т.к. там часто бывают ограничения по настройке системы)
2️⃣ Генерируем публичный и приватный ключ. Если вы на Mac/Linux, то OpenSSH, если Windows — то PuTTYgen. Размер можно сделать 2048, остальное — как хотите.
Если юзаете PuTTYgen, то после генерации и сохранения ключа нужно из поля «Public key for pasting into OpenSSH» скопировать всё, что там есть, и вставить в новый файл - этот файл надо будет указывать на следующем шаге.
3️⃣ Запускаем у себя на ПК скрипт для создания юзера, из-под которого будем всё устанавливать и запускать (для безопасности):
./setup_auth.sh -h <host> -u <username> -p <password> -k <keyfile>
Где:
<host> — IP-адрес вашего VPS<username> — имя пользователя, которого мы создадим<password> — его пароль<keyfile> — это путь до файла с публичным ключомПри запуске скрипт попросит ввести пароль root-пользователя для подключения. С винды можно через git bash запускать.
Когда он завершится, можно будет подключаться к VPS под новым юзером и с приватным ключом, без ввода пароля. Скрипт добавит этого пользователя в sudoers, Но не запретит вход по паролю. Если нужно, можно это сделать уже потом.
4️⃣ Логинимся в VPS обязательно под новым пользователем, загружаем туда скрипт setup_centos9.sh для дальнейшей настройки.
5️⃣ Запускаем скрипт (понадобится ввести пароль нового пользователя):
sudo bash ./setup_centos9.sh
Он установит firewalld, удалит ненужные пакеты и установит докер.
Всё, теперь ваш VPS настроен. В следующей части напишу про изи-запуск приложений на нём
P.S. Если есть критика, пожелания, предложения по скриптам, пишите 🙌
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2👌2
IT Хасслер
Как задеплоить не очень сложный продукт на VPS: Часть 1 Возник у меня такой вопрос пару недель назад, потому что не хотелось сразу заморачиваться с k8s, а облака не подходят для моей архитектуры. Спасибо Роману — он сразу поделился своим подходом и скриптами…
Как задеплоить не очень сложный продукт на VPS: Часть 2
Сервер настроенный у нас есть, теперь надо как-то запустить на нём ваше творение. Я поначалу думал nodejs-сервер собрать с помощью Rollup в готовый js-скрипт, который просто запущу с помощью systemd-сервиса. Но меня убедили юзать докер и не париться, поэтому приложу Dockerfile для абстрактного nodejs-приложения, (собранного также с Rollup, поэтому не требующего установки npm-пакетов).
Продолжение схемы:
6️⃣ В папку с вашим приложением кладём файлик deploy.json — в нём заменяем:
Это просто конфиг, указывающий, куда деплоить приложение. Далее:
7️⃣ В эту же папку с приложением кладём скрипт build.sh. Он выполнит сборку приложения, сборку docker-образа, загрузит этот образ на VPS и перезапустит docker compose (или запустит его, если это первый раз). Выполним его позже.
Особенно интересный в нём метод доставки образа в докер на VPS. Я о нём не знал, как ни странно, и думал, что придётся поднимать свой docker registry, но это решение (спасибо Роман!) — просто спасение 😁
Также скрипт использует pnpm. Если у вас другой менеджер пакетов, замените
8️⃣ На VPS в папку
9️⃣ Ну и теперь финалочка! Запускаем build.sh:
Где
Скрипт в качестве версии приложения берёт версию из package.json, а при создании docker-образа сохраняет его как .tar.gz архив в папку /images внутри вашего проекта (её стоит добавить в .gitignore). И если в этой папке уже есть образ с такой версией, он выдаст ошибку. Поэтому при каждом билде можно или повышать версию в package.json, или добавить второй аргумент к скрипту (любой):
Тогда он просто заменит архив и образ на VPS. При этом будет запущен именно новый образ, даже если версия осталась такой же.
Ну теперь, если всё сделано правильно(и я в скриптах не накосячил) , ваше приложение должно заработать на VPS, и последующий билд и деплой делается одной командой 🎉
Если будут вопросы, пожелания, предложения, или найдёте косяки в скриптах — пишите 🤜🤛
Сервер настроенный у нас есть, теперь надо как-то запустить на нём ваше творение. Я поначалу думал nodejs-сервер собрать с помощью Rollup в готовый js-скрипт, который просто запущу с помощью systemd-сервиса. Но меня убедили юзать докер и не париться, поэтому приложу Dockerfile для абстрактного nodejs-приложения, (собранного также с Rollup, поэтому не требующего установки npm-пакетов).
Продолжение схемы:
6️⃣ В папку с вашим приложением кладём файлик deploy.json — в нём заменяем:
<vps_ip> — на IP-адрес вашего VPS;<username> — на имя вашего юзера, которого мы создали на VPS в первой части;<keyfile> — на путь до публичного ключа, который мы создавали, в формате OpenSSH.Это просто конфиг, указывающий, куда деплоить приложение. Далее:
7️⃣ В эту же папку с приложением кладём скрипт build.sh. Он выполнит сборку приложения, сборку docker-образа, загрузит этот образ на VPS и перезапустит docker compose (или запустит его, если это первый раз). Выполним его позже.
Особенно интересный в нём метод доставки образа в докер на VPS. Я о нём не знал, как ни странно, и думал, что придётся поднимать свой docker registry, но это решение (спасибо Роман!) — просто спасение 😁
Также скрипт использует pnpm. Если у вас другой менеджер пакетов, замените
pnpm build на соответствующую команду.8️⃣ На VPS в папку
~/ (то есть /home/<username>) загружаем файл docker-compose.yml. Там только одно приложение описано, впишите туда всё что хотите запускать.9️⃣ Ну и теперь финалочка! Запускаем build.sh:
./build.sh <app>
Где
<app> - название вашего приложения, оно же должно быть указано и в deploy.json.Скрипт в качестве версии приложения берёт версию из package.json, а при создании docker-образа сохраняет его как .tar.gz архив в папку /images внутри вашего проекта (её стоит добавить в .gitignore). И если в этой папке уже есть образ с такой версией, он выдаст ошибку. Поэтому при каждом билде можно или повышать версию в package.json, или добавить второй аргумент к скрипту (любой):
./build.sh <app> f
Тогда он просто заменит архив и образ на VPS. При этом будет запущен именно новый образ, даже если версия осталась такой же.
Ну теперь, если всё сделано правильно
Если будут вопросы, пожелания, предложения, или найдёте косяки в скриптах — пишите 🤜🤛
👍5❤3