Как запустить личный CRM Моники на Dokku

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

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

Мне нужна была персональная CRM.

Персональная CRM Monica

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


Monica CRM (из штаб-квартиры Monica)

(Нажмите для увеличения скриншота)

Если вы такой же старый человек, как и я, то, возможно, использовали Facebook для таких вещей, как дни рождения в десятилетии 2008-2018 годов, но большинство из нас удалили свои данные оттуда или готовы это сделать.

Monica заменяет эту функцию, ориентируясь на конфиденциальность. Она убирает последний блокиратор и позволяет вам удалить свои аккаунты в социальных сетях.

Самостоятельный хостинг Dokku

Dokku — это платформа PaaS, похожая на heroku, которую вы можете запустить на своем собственном сервере. Это идеальный вариант для одиночного разработчика, который может запускать несколько приложений на виртуальной машине, а безопасность, сетевое взаимодействие, развертывание в режиме 0-downtime, шифрование https и т.д. не требуют больших усилий!

Heroku только что объявил, что убирает свой бесплатный план, так что сейчас самое время попробовать Dokku на дроплете Digital Ocean за $5.

Я размещаю 3 приложения на своем экземпляре Dokku на Digital Ocean, все они имеют разные базы данных и URL. Единственная работа с инфраструктурой, которую мне приходится делать, это раз в квартал заходить в систему и обновлять пакеты apt и сам Dokku.

У меня есть статья на https://www.darraghoriordan.com/2021/12/29/run-node-app-postgres-dokku-digital-ocean/, в которой описано, как настроить инстанс Dokku. Вы можете следовать ей, чтобы настроить Dokku, а затем вернуться сюда. На сайте Digital Ocean также есть отличная документация, описывающая настройку Dokku.

Вам понадобится настроенный url, если вы хотите установить tls для приложения Monica (вы должны это сделать).

Итак, для следующих шагов я предполагаю, что у вас есть экземпляр Dokku, запущенный на сервере, и вы вошли в него по ssh.

Следующие шаги описывают, как настроить Monica на вашем экземпляре Dokku.

1. Добавьте файл подкачки на ваш хост Dokku.

Примечание: Эти команды выполняются на вашем сервере Dokku.

Процесс сборки Monica занимает немного памяти. Если вы работаете на дешевом сервере, например, на дроплете Digital Ocean за $4, вы можете получить ошибку о том, что сборка не удалась, без каких-либо подробностей. Скорее всего, это проблема нехватки памяти, и Digital Ocean не настраивает своп для вас по умолчанию.

Сначала проверьте, настроен ли у вас файл подкачки. Если команда swapon show ничего не выдает, значит, у вас нет файла подкачки, и вам следует его добавить.

# check if a swap file is set
sudo swapon --show

# check how much free space you have
free -h
Вход в полноэкранный режим Выйдите из полноэкранного режима

Выполните эти команды, чтобы настроить файл подкачки на ubuntu. Я установил файл подкачки размером 1 ГБ на моем дроплете.

# create the allocation
sudo fallocate -l 1G /swapfile

# change permissions for swap
sudo chmod 600 /swapfile

# make it a swap file
sudo mkswap /swapfile

# turn it on
sudo swapon /swapfile
Войти в полноэкранный режим Выйдите из полноэкранного режима

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

sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo sysctl vm.swappiness=10
Войдите в полноэкранный режим Выйдите из полноэкранного режима

В статье Digital Ocean рекомендуется отключить своппинг по умолчанию, потому что это сервер, а не настольный компьютер. Звучит как отличная идея, так что давайте так и сделаем.

sudo nano /etc/sysctl.conf
ADD: vm.swappiness=10
Вход в полноэкранный режим Выход из полноэкранного режима

В Digital Ocean есть подробная статья о настройке файла подкачки здесь.

2. Добавьте Monica в качестве приложения Dokku

Примечание: Эти команды выполняются на вашем сервере Dokku.

Первое, что нам нужно, это приложение Dokku.

dokku apps:create monica-crm
Войдите в полноэкранный режим Выйти из полноэкранного режима

3. Добавьте базу данных для Моники

Далее нам нужна база данных. Monica построена на базе MySQL, но я предпочитаю использовать MariaDB вместо MySQL. Сначала мы установим плагин MariaDB, а затем создадим и привяжем новый экземпляр базы данных.

# install the MariaDB plugin
dokku plugin:install https://github.com/dokku/dokku-mariadb.git mariadb

# create the database instance
dokku mariadb:create monica-crm-db

# link the Dokku database to the Dokku application
dokku mariadb:link monica-crm-db monica-crm
Вход в полноэкранный режим Выйдите из полноэкранного режима

4. Добавление сети для приложения Dokku

Далее нам нужно настроить сетевое взаимодействие для нашего приложения. Я предполагаю, что вы установили домен при настройке вашего экземпляра Dokku, и что вы уже настроили плагин letsencrypt.

# set a domain for the app (the default will be app-name.yourdomain.com e.g. monica-crm.yourdomain.com)
dokku domains:set monica-crm monica.yourdomain.com

# set a config variable for email address. This is required by lets encrypt
dokku config:set --no-restart monica-crm DOKKU_LETSENCRYPT_EMAIL=your.email@somedomain.com

# now register a new domain with letsencrypt and install the certificate
dokku letsencrypt:enable monica-crm
Войдите в полноэкранный режим Выйдите из полноэкранного режима

5. Добавьте параметры конфигурации Моники

Прежде чем запустить Monica в производственной среде, вам нужно будет настроить некоторые параметры приложения. Они задаются с помощью переменных окружения.

# APP_URL is used in emails sent by monica so that links work as expected
# APP_DISABLE_SIGNUP blocks anyone from signing up to your instance. We will set this to true later!
# APP_KEY is a security key and you should generate a random set of 32 alphanumeric characters
# APP_ENV tells the application to use tls if set to production - we want this because we have tls with lets encrypt
dokku config:set --no-restart monica-crm APP_URL=https://monica.yourdomain.com APP_DISABLE_SIGNUP=false APP_KEY=MUvCHANGETORANDOMALPHAmbG APP_ENV=production
Войти в полноэкранный режим Выход из полноэкранного режима

6. Настройка отправки электронной почты для Monica

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

Это необязательно, но очень полезно.

У меня есть почтовая служба SMTP, за которую я плачу, поэтому я использую именно ее. Вы можете использовать других провайдеров, таких как mailgun или AWS SES. На сайте документации Monica есть более подробная информация о том, как настроить других провайдеров отправки электронной почты.

Настройки электронной почты также являются переменными окружения.

# Set the various environment variables for email. These are fairly self-explanatory.
dokku config:set --no-restart monica-crm MAIL_MAILER=smtp MAIL_HOST=smtp.mysmtpprovider.com MAIL_PORT=587 MAIL_USERNAME=myusername@mysmtpprovider.com MAIL_PASSWORD=mysmtppassword MAIL_ENCRYPTION=tls

Вход в полноэкранный режим Выход из полноэкранного режима

7. Создайте и клонируйте приложение Monica

ПРИМЕЧАНИЕ: Эти команды выполняются на вашей локальной машине!

Мы форкнем Monica на Github или с помощью gh cli, а затем клонируем нашу копию Monica в локальную папку. Это необходимо для того, чтобы мы могли внести некоторые изменения в код для Dokku.

# if you have gh cli you can fork (and clone - it will ask you) from your terminal
gh repo fork monicahq/monica

# clone Monica - change the username (skip if you already cloned)
git clone git@github.com:mygithubusername/monica.git
Вход в полноэкранный режим Выход из полноэкранного режима

Monica создана для запуска непосредственно из репозитория на Heroku, но мы должны внести небольшие изменения для Dokku.

Первый файл — это новый файл .buildpacks в корне с таким содержимым: список buildpacks для использования.

https://github.com/heroku/heroku-buildpack-php
https://github.com/heroku/heroku-buildpack-nodejs
Вход в полноэкранный режим Выйти из полноэкранного режима

Далее редактируем существующий файл app.json, где добавляем cron.

"cron": [
     {
         "command": "php artisan schedule:run",
         "schedule": "*/10 * * * *"
     }
 ],
Вход в полноэкранный режим Выйти из полноэкранного режима

Теперь зафиксируйте и добавьте эти 2 изменения в ваш форкнутый экземпляр Monica.

8. Соберите Monica на Dokku в первый раз!

Примечание: Эти команды выполняются на вашей локальной машине

# you have to add a remote to the local repository that points to your dokku server
git remote add dokku dokku@the_ip_or_hostname_of_your_dokku_server:monica-crm

# and push the code! This will take a while because it kicks off a build of the application
git push dokku main:master
Войти в полноэкранный режим Выйти из полноэкранного режима

Если все сработало, как ожидалось, то в конце будут выведены строки следующего содержания

======> Application deployed:
        http://monica.yourdomain.com
        https://monica.yourdomain.com
Войти в полноэкранный режим Выйти из полноэкранного режима

Перейдите по url! Моника попросит вас создать учетную запись.


Экран входа в систему Моники

9. Окончательная очистка безопасности для Моники

Помните о переменной APP_DISABLE_SIGNUP. Теперь, когда вы создали свой аккаунт, вы, вероятно, не хотите, чтобы кто-то еще регистрировал аккаунт на вашем сервере. Поэтому давайте закроем эту возможность.

На вашем сервере Dokku:

dokku config:set monica-crm APP_DISABLE_SIGNUP=true
Войдите в полноэкранный режим Выйти из полноэкранного режима

Резюме

Я только начал использовать Monica и пока что наслаждаюсь им. У нее простой интерфейс, который просто идеален. Время покажет, поможет ли она мне в качестве личного CRM!

Dokku представляет собой хорошую альтернативу бесплатному уровню Heroku. Хотя он и не бесплатный, его можно запустить на очень дешевом хосте, например, на дроплете Digital Ocean за 5 долларов.

После настройки экземпляра Dokku вы сможете очень быстро добавлять новые приложения, и Dokku облегчает одиночному разработчику управление несколькими приложениями. Рекомендую ознакомиться!

Оцените статью
devanswers.ru
Добавить комментарий