開発者ドキュメント

Ubuntu20.04でMonicaを使用してパーソナルCRMを設定する方法

序章

従来の顧客関係管理 CRM )モデルのデータ管理は、企業から多くの顧客の関係に合わせて調整されています。 CRMソフトウェアは、企業が顧客から収集する大量のデータを整理および分析すると同時に、通信チャネルの調整を支援するよう努めています。 CRMソフトウェアは、企業が多くの個々の顧客との関係を強化するのを支援するために、顧客満足度、顧客維持、売上成長などを改善することを目的とした洞察を生成します。

モニカの背後にあるチームは、自社の製品を「パーソナルCRM」と呼んでいます。 モニカは、前述のビジネス原則を採用し、日常の人々の個人的な関係に適用します。 友達や家族について覚えておきたいことはすべて、モニカに保管して整理することができます。

このチュートリアルでは、Monicaの完全な手動インストールについて説明します。 このバージョンのMonicaは、完全な機能を備え、完全に無料でオープンソースであり、セットアップを最もきめ細かく制御できます。

前提条件

開始する前に、次のものが必要です。

警告:サーバーのRAMが1.5 GB未満の場合、このインストールチュートリアル内のYarnタスクは非常に時間がかかるだけでなく、完了に失敗する可能性があります。 これにより、インストールを完了できなくなります。 そのシナリオでは、RAMの量が多いサーバーに切り替えることが唯一の解決策です。

ステップ1—永続ストレージ用のMySQLデータベースとユーザーの作成

Monicaには、入力されたすべてのデータを保存する場所が必要です。Monicaの背後にあるチームは、MySQLの使用を推奨しています。 MySQLは多くの実稼働環境で信頼できることが証明されており、Monicaが採用している LAMP (Linuxオペレーティングシステム、Apache Webサーバー、MySQLデータベース、PHPプログラミング言語)技術スタックの一部です。

Monicaで使用するデータベースとMySQLユーザーを作成してから、そのユーザーに適切な権限を付与する必要があります。

MySQLコンソールにログインすることから始めます。

  1. sudo mysql

Monicaのデータを処理するように構成されたデータベースを作成し、希望のデータベース名に置き換えます。

  1. CREATE DATABASE monicadb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

選択したユーザー名とパスワードで新しいユーザーを作成します。 Monicaでコミットするすべてのデータベースアクションはこのユーザーを介して実行されるため、選択したユーザー名とパスワードを覚えておいてください。

  1. CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'strong_mysql_password';

作成したばかりの新しいデータベースに対して、この新しいユーザー権限を付与します。

  1. GRANT ALL ON monicadb.* TO 'sammy'@'localhost';

付与したばかりの新しい権限を有効にするには、MySQLの付与テーブルをリロードします。

  1. FLUSH PRIVILEGES;

これで、次のように入力してMySQLコンソールを終了できます。

  1. exit

これでデータベースの準備が完了し、Monicaに入力したすべてのデータが保持されるようになりました。

ステップ2—Monicaのクローン作成と構成

Monicaをインストールするには、公式のMonicaコードリポジトリからクローンを作成する必要があります。

まず、gitを使用してMonicaをデフォルトのApacheサイトディレクトリに複製するための適切な権限が必要です。 chownを使用して、現在のLinuxユーザーをこのディレクトリの所有者として設定し、適切な権限を取得します。

  1. sudo chown -R $USER:$USER /var/www

Ubuntuのデフォルトでは、Apacheは/var/www/html/ディレクトリからコンテンツを提供します。 次のコマンドは、gitを使用して、Monicaリポジトリを/var/www/monica/という名前のディレクトリに複製します。 このガイドの後半で、このディレクトリからMonicaにサービスを提供するようにApache仮想ホストを設定します。

  1. git clone https://github.com/monicahq/monica.git /var/www/monica

このコマンドを実行すると、/var/www/monicaに公式のMonicaリポジトリのクローンが作成されます。 これで実行可能なクローンができましたが、最新バージョンのMonicaを選択する必要があります。 gitからfetchまで、最新バージョンのMonicaを指すgitタグを含む最新のメタデータを使用し、checkoutを使用して使用するバージョンを選択します。

まず、複製されたリポジトリに移動します。

  1. cd /var/www/monica

次に、fetch gitからの最新データ:

  1. git fetch

次に、checkoutgitを使用した最新バージョンのMonicaで、fetchから取得したgitタグでマークされています。 最新バージョンを選択するには、モニカリリースページを確認してください。 執筆時点では、モニカの最新バージョンは 3.7.0 ですが、それに応じて置き換えてください。

  1. git checkout tags/v3.7.0

最新バージョンを入手したので、Monicaの構成を開始できます。 Monicaは、構成を環境変数に依存しています。 設定ファイルの例はMonicaチームから提供されていますが、直接編集することはありません。 代わりに、次のコマンドを実行して、この構成ファイルの独自のコピーを作成します。

  1. cp .env.example .env

新しくコピーした構成ファイルをnanoまたはお好みのテキストエディターで開きます。

  1. nano .env

このファイルで、MySQLクレデンシャルを設定します。 ステップ1でデータベースを設定する方法が正確であることを確認してください。 次の行が見つかるまでファイルを下にスクロールし、それに応じてデータを置き換えます。

/var/www/monica/.env
. . .
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プラグインをインストールすることから始めます。

  1. sudo apt install php-bcmath php-cli php-curl php-common \
  2. php-fpm php-gd php-gmp php-intl php-json php-mbstring \
  3. php-mysql php-opcache php-redis php-xml php-zip

次に、PHPの依存関係マネージャーとして機能するComposerをインストールします。 Composerは、PHPを使用してMonicaを強化するWebフレームワークであるLaravelの優先依存関係マネージャーでもあります。

公式のComposerインストーラーを/tmpにダウンロードします。これは、サーバーが乱雑にならないように、使い捨てのインストールファイルを配置するのに適した一時フォルダーです。

  1. curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php

--install-dirフラグと--filenameフラグを使用して、実際のインストール場所と命名規則を指定して、Composerをインストールします。

  1. 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をインストールします。

  1. sudo npm install --global yarn

パッケージマネージャーをインストールしたら、次のステップは、ComposerとYarnに管理するパッケージとアセットを実際にインストールさせることです。

ステップ4—依存関係パッケージのインストールとアセットの準備

Composerは、Monicaが必要とするすべてのPHP依存関係パッケージのインストールを処理します。 次のコマンドでは、インストールする依存関係が扱いにくいため、--no-interactionはプロセス中の確認プロンプトをスキップします。 --no-devは、不要な開発ツールのインストールをスキップします。 Composerをインストールするには、次のように入力します。

  1. composer install --no-interaction --no-dev

コマンドが正常に完了する限り、出力が次の例とまったく同じでなくても問題ありません。

Output
Installing 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フロントエンドパッケージをインストールします。

  1. yarn install

インストールが完全に完了する限り、依存関係の警告は正常であり、重大ではありません。

Output
yarn install v1.22.18 [1/5] Validating package.json... [2/5] Resolving packages... [3/5] Fetching packages... [4/5] Linking dependencies... warning " > laravel-mix@6.0.41" has unmet peer dependency "@babel/core@^7.15.8". . . . Done in 5.85s. Done in 80.32s.

Monicaには、フォント、画像、JavaScript、CSSファイルなどの静的アセットが付属しており、Monicaフロントエンドサイトで提供する前に準備する必要があります。 また、このプロセスを自動化するproductionスクリプトが付属しています。 yarn runコマンドを使用します。このコマンドは、引数としてスクリプト名を取ります。 静的アセットの準備が必要になるため、これには長い時間がかかる場合があります。

  1. yarn run production

繰り返しになりますが、複数の依存関係と非推奨の警告があるのは正常です。 コマンドが完了する限り、これは無視しても問題ありません。

Output
yarn 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チームはアプリケーションキーを生成および設定するために次のコマンドを提供しました。

  1. php artisan key:generate

アプリケーションキーセットを使用して、特にMonicaで使用するためにLaravelを準備できます。 次のコマンドは、本番環境用にLaravelをセットアップします。 Laravelは、必要なデータベース移行を初期化し、キャッシュをクリアし、データベースをシードし、シンボリックリンクを設定し、最初のMonicaアカウントを作成します。

次のように入力し、最初のMonicaアカウントを希望のメールアドレスとパスワードに置き換えます。

  1. 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を使用してこれを管理します。 これらを追加するには、最初に次のように入力します。

  1. 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 ユーザーとグループに静的アセットへのアクセスを許可して、インターネット経由でサービスを提供できるようにします。

  1. sudo chown -R www-data:www-data /var/www/monica/storage

次に、Apache Webサーバーを、Monicaが現在システム上に存在する場所にポイントします。 これにはApache構成ファイルを設定する必要がありますが、そのファイルではrewriteモジュールを有効にする必要があります。 このモジュールを使用すると、設定した条件に基づいて、URLをよりクリーンで読みやすいパスに書き換えることができます。

次のように入力して、Apacherewriteモジュールを有効にします。

  1. sudo a2enmod rewrite

これで、Apache構成ファイルでrewriteモジュールを使用できます。 次のように入力して、MonicaのメインApache構成ファイルを作成します。

  1. sudo nano /etc/apache2/sites-available/monica.conf

新規インストールの場合、Monicaチームは次のApache構成をお勧めします。 この構成は、Monica Webページの要求の処理、JavaScript、CSS、画像などの静的アセットの提供、エラーおよびアクセスログの構成など、Apacheの基本的なセットアップを提供します。

Monicaは、サーバーIP、またはセットアップされている場合はサーバードメイン名のいずれかを受け入れるように構成されています。 次のファイルをApache構成ファイルに挿入し、server_domain_or_IPの代わりに次のいずれかを使用します。

/etc/apache2/sites-available/monica.conf
<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サイトを有効にします。

  1. sudo a2ensite monica.conf

次に、デフォルトのApacheランディングページを無効にします。

  1. sudo a2dissite 000-default.conf

これで、Webサーバーを起動する準備が整いました。 ページをより最適に提供するために、Monicaチームは、PHPとApache Webサーバー間の相互作用を最適化するPHPのFPM(FastCGI Process Manager)を使用することをお勧めします。 FPMは、PHP用の元のFastCGI実装と比較して、Webサーバーへの要求から生成されたプロセスの処理においてはるかにパフォーマンスが高くなります。

FastCGIを使用するには、最初にFastCGIを有効にしてから、FastCGIモジュールに送信する変数を設定します。 次のように入力して、ApacheでFastCGIを有効にします。

  1. sudo a2enmod proxy_fcgi setenvif

FPMを有効にするには、最初にその構成ファイルを有効にします。 このファイルは、現在実行しているPHPバージョンを含む名前で存在します。 次のように入力すると、PHPの現在のバージョンを確認できます。

  1. php -v

応答として、PHPバージョンが出力されます。 PHPバージョン番号の最初の2つの番号に注意する必要があります。

Output
PHP 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のバージョンを置き換えます。

  1. sudo a2enconf php7.4-fpm

FPMを機能させるには、次のように再起動する必要があります。

  1. sudo systemctl restart php7.4-fpm

変更を加えたら、Apache構成ファイルを検証します。

  1. sudo apache2ctl configtest

Syntax OK行が出力されている限り、他の警告は無視できます。 最後に、Apacheを再起動して、以前のすべての変更を有効にします。

  1. sudo systemctl restart apache2

Webブラウザーを開き、サーバーのドメイン名またはIPをアドレスバーに入力します。

http://server_domain_or_IP

次のモニカの画面は、それに応じて読み込まれます。

これで、以前に作成したMonicaアカウントにyour_email_addressおよびyour_passwordでログインして、Monicaホームページにアクセスできます。

ステップ7—CertbotのインストールとTLS証明書の設定

Monicaサイトは現在運用可能ですが、サーバードメインを使用してインターネット経由でデータにアクセスできるようにすることを計画している場合は、TLS暗号化でデータを保護することを強くお勧めします。 現在、ローカルマシンでのテストと使用に適したHTTPを介してサイトにアクセスできます。

それを保護するには、MonicaサイトへのHTTPSトラフィックのみを許可するようにMonicaの設定を変更する必要があります。 HTTPSにはTLS証明書が必要なため、Certbotをインストールして、Let’sEncryptの無料認証局からTLS証明書を取得します。

まず、.envを開きます。

  1. nano .env

変更する必要のある設定はAPP_ENVです。 デフォルトでは、HTTPトラフィックを許可するためにlocalに設定されています。 トラフィックをHTTPSのみに制限するには、productionに変更します。 行を見つけて編集します。

/var/www/monica/.env
. . .
APP_ENV=production
. . .

完了したら、テキストエディタを保存して終了します。

Apacheをインストールするための前提条件に従っていると仮定すると、ファイアウォールはHTTPトラフィックのポート80での接続のみを許可します。 HTTPSトラフィックも許可するには、次のファイアウォールルールを追加します。

  1. sudo ufw allow 'Apache Full'

さらに、以前に適用されていた、現在は冗長になっているApacheファイアウォールルールを削除する必要があります。

  1. sudo ufw delete allow 'Apache'

ファイアウォールの準備ができたら、CertbotとそれをApacheと統合するCertbotプラグインをインストールします。

  1. sudo apt install certbot python3-certbot-apache

このApacheプラグインを使用すると、CertbotはApache構成ファイルを調べて、monica.confで既に設定したサーバードメインをインタラクティブに表示できます。 ドメインのTLS証明書を作成する対話型プロセスを開始するには、次のコマンドを実行します。

  1. sudo certbot --apache

有効なメールアドレスを入力し、利用規約に同意してください。 Certbotは、以前にmonica.confで設定されたserver_domain を検出し、すべてのHTTPトラフィックをHTTPSにリダイレクトするかどうかを尋ねます。 MonicaはHTTPSトラフィックのみを許可するように設定されているため、このリダイレクトオプションを受け入れます。

Certbotは証明書をダウンロードし、Apacheに新しい構成と証明書を自動的にリロードします。

Output
Congratulations! You have successfully enabled https://test.do-community.com . . .

もう一度Webサイトにアクセスすると、HTTPからHTTPSに自動的にリダイレクトされます。 これで、サイトはTLS暗号化で保護されます。

結論

これでMonicaのセットアップが完了し、使用を開始する準備が整いました。 Monicaは、直感的に使用できるように設計されたWebインターフェイスを中心に構築されています。 Monicaの詳細については、公式Monicaリポジトリを確認してください。

実際にビジネス向けの他のセルフホストツールに興味がある場合は、Dockerを使用してUbuntu20.04にOdooをインストールする方法を確認してください。 Odooはオープンソースのエンタープライズリソースプランニング(ERP)ツールであり、会計、給与、在庫管理などのビジネスニーズに対応します。

モバイルバージョンを終了