Ubuntu20.04でMonicaを使用してパーソナルCRMを設定する方法
序章
従来の顧客関係管理( CRM )モデルのデータ管理は、企業から多くの顧客の関係に合わせて調整されています。 CRMソフトウェアは、企業が顧客から収集する大量のデータを整理および分析すると同時に、通信チャネルの調整を支援するよう努めています。 CRMソフトウェアは、企業が多くの個々の顧客との関係を強化するのを支援するために、顧客満足度、顧客維持、売上成長などを改善することを目的とした洞察を生成します。
モニカの背後にあるチームは、自社の製品を「パーソナルCRM」と呼んでいます。 モニカは、前述のビジネス原則を採用し、日常の人々の個人的な関係に適用します。 友達や家族について覚えておきたいことはすべて、モニカに保管して整理することができます。
このチュートリアルでは、Monicaの完全な手動インストールについて説明します。 このバージョンのMonicaは、完全な機能を備え、完全に無料でオープンソースであり、セットアップを最もきめ細かく制御できます。
前提条件
開始する前に、次のものが必要です。
- 少なくとも1.5GBのRAMを搭載したUbuntu20.04サーバー。Ubuntu20.04の初期サーバーセットアップガイドに従ってセットアップされ、root以外のユーザーが
sudo
特権とファイアウォールが有効になっています。
警告:サーバーのRAMが1.5 GB未満の場合、このインストールチュートリアル内のYarnタスクは非常に時間がかかるだけでなく、完了に失敗する可能性があります。 これにより、インストールを完了できなくなります。 そのシナリオでは、RAMの量が多いサーバーに切り替えることが唯一の解決策です。
- サーバーにインストールされているLAMPスタック。 これを設定するには、 Ubuntu 20.04 にLinux、Apache、MySQL、PHP(LAMP)スタックをインストールする方法のステップ1から3に従います。
- Ubuntu 20.04にNode.jsをインストールする方法のオプション2で詳しく説明されているように、NodeSourcePPAを使用してサーバーにインストールされたNode.jsの最新バージョン。
ステップ1—永続ストレージ用のMySQLデータベースとユーザーの作成
Monicaには、入力されたすべてのデータを保存する場所が必要です。Monicaの背後にあるチームは、MySQLの使用を推奨しています。 MySQLは多くの実稼働環境で信頼できることが証明されており、Monicaが採用している LAMP (Linuxオペレーティングシステム、Apache Webサーバー、MySQLデータベース、PHPプログラミング言語)技術スタックの一部です。
Monicaで使用するデータベースとMySQLユーザーを作成してから、そのユーザーに適切な権限を付与する必要があります。
MySQLコンソールにログインすることから始めます。
- sudo mysql
Monicaのデータを処理するように構成されたデータベースを作成し、希望のデータベース名に置き換えます。
- CREATE DATABASE monicadb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
選択したユーザー名とパスワードで新しいユーザーを作成します。 Monicaでコミットするすべてのデータベースアクションはこのユーザーを介して実行されるため、選択したユーザー名とパスワードを覚えておいてください。
- CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'strong_mysql_password';
作成したばかりの新しいデータベースに対して、この新しいユーザー権限を付与します。
- GRANT ALL ON monicadb.* TO 'sammy'@'localhost';
付与したばかりの新しい権限を有効にするには、MySQLの付与テーブルをリロードします。
- FLUSH PRIVILEGES;
これで、次のように入力してMySQLコンソールを終了できます。
- exit
これでデータベースの準備が完了し、Monicaに入力したすべてのデータが保持されるようになりました。
ステップ2—Monicaのクローン作成と構成
Monicaをインストールするには、公式のMonicaコードリポジトリからクローンを作成する必要があります。
まず、git
を使用してMonicaをデフォルトのApacheサイトディレクトリに複製するための適切な権限が必要です。 chown
を使用して、現在のLinuxユーザーをこのディレクトリの所有者として設定し、適切な権限を取得します。
- sudo chown -R $USER:$USER /var/www
Ubuntuのデフォルトでは、Apacheは/var/www/html/
ディレクトリからコンテンツを提供します。 次のコマンドは、git
を使用して、Monicaリポジトリを/var/www/monica/
という名前のディレクトリに複製します。 このガイドの後半で、このディレクトリからMonicaにサービスを提供するようにApache仮想ホストを設定します。
- git clone https://github.com/monicahq/monica.git /var/www/monica
このコマンドを実行すると、/var/www/monica
に公式のMonicaリポジトリのクローンが作成されます。 これで実行可能なクローンができましたが、最新バージョンのMonicaを選択する必要があります。 git
からfetch
まで、最新バージョンのMonicaを指すgitタグを含む最新のメタデータを使用し、checkout
を使用して使用するバージョンを選択します。
まず、複製されたリポジトリに移動します。
- cd /var/www/monica
次に、fetch
git
からの最新データ:
- git fetch
次に、checkout
はgit
を使用した最新バージョンのMonicaで、fetch
から取得したgitタグでマークされています。 最新バージョンを選択するには、モニカリリースページを確認してください。 執筆時点では、モニカの最新バージョンは 3.7.0 ですが、それに応じて置き換えてください。
- git checkout tags/v3.7.0
最新バージョンを入手したので、Monicaの構成を開始できます。 Monicaは、構成を環境変数に依存しています。 設定ファイルの例はMonicaチームから提供されていますが、直接編集することはありません。 代わりに、次のコマンドを実行して、この構成ファイルの独自のコピーを作成します。
- cp .env.example .env
新しくコピーした構成ファイルをnano
またはお好みのテキストエディターで開きます。
- nano .env
このファイルで、MySQLクレデンシャルを設定します。 ステップ1でデータベースを設定する方法が正確であることを確認してください。 次の行が見つかるまでファイルを下にスクロールし、それに応じてデータを置き換えます。
. . .
DB_DATABASE=monicadb
DB_USERNAME=sammy
DB_PASSWORD=strong_mysql_password
. . .
挿入したら、テキストエディタを保存して終了します。 nano
を使用している場合は、CTRL+O
を押してファイルを保存し、CTRL+X
を押して終了します。
ステップ3—PHPプラグインとパッケージマネージャーのインストール
Monicaが構成され、データベースに関連付けられたので、次に、実際にMonicaと対話するためのフロントエンドをセットアップします。 このチュートリアルの前提条件として、PHPとNode.jsがすでにインストールされています。 また、PHPプラグイン、Laravelフレームワークを備えたComposer、およびYarnをインストールして、Monicaに適したフロントエンドを構築する必要があります。
Monicaに必要なPHPプラグインをインストールすることから始めます。
- sudo apt install php-bcmath php-cli php-curl php-common \
- php-fpm php-gd php-gmp php-intl php-json php-mbstring \
- php-mysql php-opcache php-redis php-xml php-zip
次に、PHPの依存関係マネージャーとして機能するComposerをインストールします。 Composerは、PHPを使用してMonicaを強化するWebフレームワークであるLaravelの優先依存関係マネージャーでもあります。
公式のComposerインストーラーを/tmp
にダウンロードします。これは、サーバーが乱雑にならないように、使い捨てのインストールファイルを配置するのに適した一時フォルダーです。
- curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
--install-dir
フラグと--filename
フラグを使用して、実際のインストール場所と命名規則を指定して、Composerをインストールします。
- sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin/ --filename=composer
Composerをインストールしたら、別の依存関係マネージャーYarnをインストールする必要があります。 ComposerはPHPの依存関係マネージャーですが、YarnはJavaScriptの依存関係を処理します。 Node.jsが前提条件にすでにインストールされている場合、npmを介してYarnをインストールするための推奨される方法にアクセスできます。
npm
もJavaScriptパッケージマネージャーであり、Yarnとnpm
の機能は重複していますが、Yarnはさまざまなニーズに対応するために構築されました。 これには、npm
の安定性とセキュリティに関する懸念への対処が含まれます。
Yarnをインストールする従来の方法は、グローバルにインストールすることです。 これにより、プロジェクト内のすべてのテストおよび自動化ツールがまったく同じバージョンのYarnを使用するようになり、不整合が防止されます。 次のように入力して、Yarnをインストールします。
- sudo npm install --global yarn
パッケージマネージャーをインストールしたら、次のステップは、ComposerとYarnに管理するパッケージとアセットを実際にインストールさせることです。
ステップ4—依存関係パッケージのインストールとアセットの準備
Composerは、Monicaが必要とするすべてのPHP依存関係パッケージのインストールを処理します。 次のコマンドでは、インストールする依存関係が扱いにくいため、--no-interaction
はプロセス中の確認プロンプトをスキップします。 --no-dev
は、不要な開発ツールのインストールをスキップします。 Composerをインストールするには、次のように入力します。
- composer install --no-interaction --no-dev
コマンドが正常に完了する限り、出力が次の例とまったく同じでなくても問題ありません。
OutputInstalling dependencies from lock file
Verifying lock file contents can be installed on current platform.
Package operations: 183 installs, 0 updates, 0 removals
. . .
Package manifest generated successfully.
92 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> Illuminate\Foundation\ComposerScripts::postInstall
次に、Yarnを使用して、Monicaに必要なJavaScriptフロントエンドパッケージをインストールします。
- yarn install
インストールが完全に完了する限り、依存関係の警告は正常であり、重大ではありません。
Outputyarn install v1.22.18
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
[4/5] Linking dependencies...
warning " > [email protected]" has unmet peer dependency "@babel/core@^7.15.8".
. . .
Done in 5.85s.
Done in 80.32s.
Monicaには、フォント、画像、JavaScript、CSSファイルなどの静的アセットが付属しており、Monicaフロントエンドサイトで提供する前に準備する必要があります。 また、このプロセスを自動化するproduction
スクリプトが付属しています。 yarn run
コマンドを使用します。このコマンドは、引数としてスクリプト名を取ります。 静的アセットの準備が必要になるため、これには長い時間がかかる場合があります。
- yarn run production
繰り返しになりますが、複数の依存関係と非推奨の警告があるのは正常です。 コマンドが完了する限り、これは無視しても問題ありません。
Outputyarn run v1.22.18
$ php artisan lang:generate -vvv
Created: public/js/langs/vi.json
Created: public/js/langs/es.json
Created: public/js/langs/tr.json
. . .
webpack compiled successfully
Done in 79.24s.
ComposerとYarnによって依存関係が設定されているので、Laravelフレームワークのセットアップを完了する必要があります。 すべてのLaravelプロジェクトでは、APP_KEY
環境変数を設定する必要があります。 これは通常、従来のLaravelプロジェクトで自動的に実行されますが、Monicaリポジトリから既存のLaravelプロジェクトのクローンを作成しているため、手動で実行する必要があります。
これは非常に一般的なタスクであるため、Laravelチームはアプリケーションキーを生成および設定するために次のコマンドを提供しました。
- php artisan key:generate
アプリケーションキーセットを使用して、特にMonicaで使用するためにLaravelを準備できます。 次のコマンドは、本番環境用にLaravelをセットアップします。 Laravelは、必要なデータベース移行を初期化し、キャッシュをクリアし、データベースをシードし、シンボリックリンクを設定し、最初のMonicaアカウントを作成します。
次のように入力し、最初のMonicaアカウントを希望のメールアドレスとパスワードに置き換えます。
- php artisan setup:production --email=your_email_address --password=your_password -v
プロンプトが表示されたら、yes
と入力してセットアップを確認し、ENTER
を押して続行します。
Output You are about to setup and configure Monica. Do you wish to continue? (yes/no) [no]:
> yes
✓ Maintenance mode: on
'/usr/bin/php7.4' 'artisan' down --retry="10"
✓ Clear config cache
'/usr/bin/php7.4' 'artisan' config:clear
. . .
Setup is done. Have fun.
これでMonicaの依存関係が完全にインストールされ、最初のMonicaアカウントが作成されました。
ステップ5—バックグラウンドプロセスを実行し続けるためのcronジョブの設定
Monicaでは、常にいくつかのバックグラウンドプロセスを実行する必要があります。 これにより、スケジュールされたリマインダーや定期的な統計の計算などの機能が提供され、包括的なリストがここにあります。
Monicaは、スケジュールされたタスクまたは定期的なタスクの処理を専門とするcron
を使用してこれを管理します。 これらを追加するには、最初に次のように入力します。
- sudo crontab -u www-data -e
crontab
を初めて使用する場合は、お好みのテキストエディタを選択するように求められます。 nano
を選択するには、1
と入力し、ENTER
を押します。 これで、Monicaの定期的なLaravelタスクをスケジュールされたcron
として追加できます。 これらのスケジュールされたタスクの出力ログとエラーログは必要ないため、/dev/null
を宛先として設定できます。これは、破棄されるデータに相当します。 ファイルの最後に以下を挿入します。
* * * * * php /var/www/monica/artisan schedule:run >> /dev/null 2>&1
完了したら、テキストエディタを保存して終了します。 これにより、Monicaがバックグラウンドで定期的にタスクを実行できるようにすることで、常に最新の統計とリマインダーを提供できるようになりました。
ステップ6—Monicaフロントエンドにサービスを提供するようにApacheを構成する
Monicaのフロントエンドがセットアップされたので、ディレクトリのアクセス許可を変更し、必要なモジュールを有効にすることで、ApacheWebサーバーを準備できます。
まず、サーバーの www-data ユーザーとグループに静的アセットへのアクセスを許可して、インターネット経由でサービスを提供できるようにします。
- sudo chown -R www-data:www-data /var/www/monica/storage
次に、Apache Webサーバーを、Monicaが現在システム上に存在する場所にポイントします。 これにはApache構成ファイルを設定する必要がありますが、そのファイルではrewrite
モジュールを有効にする必要があります。 このモジュールを使用すると、設定した条件に基づいて、URLをよりクリーンで読みやすいパスに書き換えることができます。
次のように入力して、Apacherewrite
モジュールを有効にします。
- sudo a2enmod rewrite
これで、Apache構成ファイルでrewrite
モジュールを使用できます。 次のように入力して、MonicaのメインApache構成ファイルを作成します。
- sudo nano /etc/apache2/sites-available/monica.conf
新規インストールの場合、Monicaチームは次のApache構成をお勧めします。 この構成は、Monica Webページの要求の処理、JavaScript、CSS、画像などの静的アセットの提供、エラーおよびアクセスログの構成など、Apacheの基本的なセットアップを提供します。
Monicaは、サーバーIP、またはセットアップされている場合はサーバードメイン名のいずれかを受け入れるように構成されています。 次のファイルをApache構成ファイルに挿入し、server_domain_or_IPの代わりに次のいずれかを使用します。
<VirtualHost *:80>
ServerName server_domain_or_IP
ServerAdmin webmaster@localhost
DocumentRoot /var/www/monica/public
<Directory /var/www/monica/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
完了したら、テキストエディタを保存して終了します。
Monicaサイトの使用を開始するには、最初に新しいサイトを有効にしてから、すべてのApacheインストールに付属するデフォルトサイトを無効にします。
まず、新しいMonicaサイトを有効にします。
- sudo a2ensite monica.conf
次に、デフォルトのApacheランディングページを無効にします。
- sudo a2dissite 000-default.conf
これで、Webサーバーを起動する準備が整いました。 ページをより最適に提供するために、Monicaチームは、PHPとApache Webサーバー間の相互作用を最適化するPHPのFPM(FastCGI Process Manager)を使用することをお勧めします。 FPMは、PHP用の元のFastCGI実装と比較して、Webサーバーへの要求から生成されたプロセスの処理においてはるかにパフォーマンスが高くなります。
FastCGIを使用するには、最初にFastCGIを有効にしてから、FastCGIモジュールに送信する変数を設定します。 次のように入力して、ApacheでFastCGIを有効にします。
- sudo a2enmod proxy_fcgi setenvif
FPMを有効にするには、最初にその構成ファイルを有効にします。 このファイルは、現在実行しているPHPバージョンを含む名前で存在します。 次のように入力すると、PHPの現在のバージョンを確認できます。
- php -v
応答として、PHPバージョンが出力されます。 PHPバージョン番号の最初の2つの番号に注意する必要があります。
OutputPHP 7.4.3 (cli) (built: Mar 2 2022 15:36:52) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
このバージョン番号を使用すると、次のように入力してFPMを有効にできます。それに応じて、PHPのバージョンを置き換えます。
- sudo a2enconf php7.4-fpm
FPMを機能させるには、次のように再起動する必要があります。
- sudo systemctl restart php7.4-fpm
変更を加えたら、Apache構成ファイルを検証します。
- sudo apache2ctl configtest
Syntax OK
行が出力されている限り、他の警告は無視できます。 最後に、Apacheを再起動して、以前のすべての変更を有効にします。
- sudo systemctl restart apache2
Webブラウザーを開き、サーバーのドメイン名またはIPをアドレスバーに入力します。
http:
次のモニカの画面は、それに応じて読み込まれます。
これで、以前に作成したMonicaアカウントにyour_email_addressおよびyour_passwordでログインして、Monicaホームページにアクセスできます。
ステップ7—CertbotのインストールとTLS証明書の設定
Monicaサイトは現在運用可能ですが、サーバードメインを使用してインターネット経由でデータにアクセスできるようにすることを計画している場合は、TLS暗号化でデータを保護することを強くお勧めします。 現在、ローカルマシンでのテストと使用に適したHTTPを介してサイトにアクセスできます。
それを保護するには、MonicaサイトへのHTTPSトラフィックのみを許可するようにMonicaの設定を変更する必要があります。 HTTPSにはTLS証明書が必要なため、Certbotをインストールして、Let’sEncryptの無料認証局からTLS証明書を取得します。
まず、.env
を開きます。
- nano .env
変更する必要のある設定はAPP_ENV
です。 デフォルトでは、HTTPトラフィックを許可するためにlocal
に設定されています。 トラフィックをHTTPSのみに制限するには、production
に変更します。 行を見つけて編集します。
. . .
APP_ENV=production
. . .
完了したら、テキストエディタを保存して終了します。
Apacheをインストールするための前提条件に従っていると仮定すると、ファイアウォールはHTTPトラフィックのポート80
での接続のみを許可します。 HTTPSトラフィックも許可するには、次のファイアウォールルールを追加します。
- sudo ufw allow 'Apache Full'
さらに、以前に適用されていた、現在は冗長になっているApacheファイアウォールルールを削除する必要があります。
- sudo ufw delete allow 'Apache'
ファイアウォールの準備ができたら、CertbotとそれをApacheと統合するCertbotプラグインをインストールします。
- sudo apt install certbot python3-certbot-apache
このApacheプラグインを使用すると、CertbotはApache構成ファイルを調べて、monica.conf
で既に設定したサーバードメインをインタラクティブに表示できます。 ドメインのTLS証明書を作成する対話型プロセスを開始するには、次のコマンドを実行します。
- sudo certbot --apache
有効なメールアドレスを入力し、利用規約に同意してください。 Certbotは、以前にmonica.conf
で設定されたserver_domain を検出し、すべてのHTTPトラフィックをHTTPSにリダイレクトするかどうかを尋ねます。 MonicaはHTTPSトラフィックのみを許可するように設定されているため、このリダイレクトオプションを受け入れます。
Certbotは証明書をダウンロードし、Apacheに新しい構成と証明書を自動的にリロードします。
OutputCongratulations! You have successfully enabled https://test.do-community.com
. . .
もう一度Webサイトにアクセスすると、HTTPからHTTPSに自動的にリダイレクトされます。 これで、サイトはTLS暗号化で保護されます。
結論
これでMonicaのセットアップが完了し、使用を開始する準備が整いました。 Monicaは、直感的に使用できるように設計されたWebインターフェイスを中心に構築されています。 Monicaの詳細については、公式Monicaリポジトリを確認してください。
実際にビジネス向けの他のセルフホストツールに興味がある場合は、Dockerを使用してUbuntu20.04にOdooをインストールする方法を確認してください。 Odooはオープンソースのエンタープライズリソースプランニング(ERP)ツールであり、会計、給与、在庫管理などのビジネスニーズに対応します。