大切なことを忘れないために:Monica CRMをDockerでセルフホストする方法

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

些細なことを覚えることの難しさ

以前の私は、自分の記憶力には自信がある方でした。しかし、生活が忙しくなるにつれ、状況は変わりました。上司の子供の名前が思い出せなくなったり、親しい友人がピーナッツアレルギーだったことを忘れたり、2022年に勧められた本のタイトルを失念したりするようになったのです。Slackの通知やソーシャルメディアの喧騒の中で、最も意味のある人とのやり取りが、忙しい一週間の混乱の中に消えてしまうことがよくあります。

FacebookやLinkedInのようなソーシャルメディアプラットフォームは、深い個人的な関係管理のために作られているわけではありません。それらは真のつながりよりも、エンゲージメントや広告収入を優先します。恩師が電話よりもメールを好むことや、いとこが新しい仕事を始めたばかりであることを覚えておきたいなら、専用のシステムが必要です。ここで、パーソナルCRM(顧客関係管理)が大きな力を発揮します。

なぜ人間関係は疎遠になってしまうのか

私たちが連絡を取り合わなくなるのは、単なる怠慢ではなく「認知のオーバーロード(過負荷)」が原因です。人間の脳は、150人もの人々に関する何千もの断片的な詳細を記憶するようにはできていません。これは一般に「ダンバー数」と呼ばれる限界です。記憶だけに頼っていると、どうしても「親近効果」に陥ってしまいます。つまり、過去7日間に話した人とだけ連絡を取り、古い友人との関係は次第に薄れていってしまうのです。

バラバラのツールがこの状況をさらに悪化させます。連絡先には電話番号があり、Googleカレンダーには誕生日があり、WhatsAppのどこかにはチャット履歴が埋もれているでしょう。「信頼できる唯一の情報源(Single Source of Truth)」が存在しないのです。中心となるハブがなければ、長期的な関係の維持は「受動的」なものになります。自分から主体的に動くのではなく、通知を見た時だけ連絡を取るようになってしまうのです。

選択肢の検討

解決策を探し始めたとき、私は主に3つの道を検討しました。

  • スプレッドシート方式 ExcelやGoogle Sheets。無料ですが、スマートフォンでの操作は非常に不便で、自動リマインダーもありません。手動のデータ入力作業のように感じられ、1ヶ月も経たないうちに挫折してしまいます。
  • エンタープライズCRM: SalesforceやHubSpot。これらは強力ですが、冷たい印象を与えます。親友が「セールスパイプライン」の「リード」としてリストされているのを見るのは、あまりに奇妙です。
  • 商用パーソナルCRM: ClayやDexなどのアプリ。洗練されていて使いやすいですが、通常、月額15〜20ドルのサブスクリプション料金がかかり、最も機密性の高いデータが他社のサーバーに保存されます。

HomeLabを運用している人にとって、選択は明らかです。自分たちの手元でデータを管理でき、人間関係のために構築されたツールが必要です。そこで行き着いたのが Monica です。

解決策:Docker上のMonica CRM

Monicaは、オープンソースのパーソナル関係管理システムです。友人の好みのウィスキーから、最後にコーヒーを飲みに行った日まで、あらゆることを記録できます。Dockerを介してセルフホストすることで、データは自分のハードウェア内に留まります。ターゲティング広告を売るために連絡先リストをマイニングされる心配もありません。

私はこの構成を1年以上運用していますが、驚くほど安定しています。Monicaは軽量で、通常150MBから200MB程度のRAMしか消費しません。Docker Composeを使用することで、デプロイの再現性が高まりバックアップも容易になります。これは、将来的に何年分もの履歴を保持することになるシステムにとって非常に重要です。

前提条件

始める前に、サーバー(Ubuntu 22.04など)の準備ができていることを確認してください:

  • DockerおよびDocker Composeがインストールされていること。
  • ターミナルの基本的な操作ができること。
  • アクセス用のローカルIPまたはドメイン名があること。

ステップ1:ディレクトリの作成

整理整頓を心がけましょう。すべてのDockerプロジェクト用に専用のフォルダを作成することをお勧めします。

mkdir -p ~/docker/monica
cd ~/docker/monica

ステップ2:環境設定

Monicaは、データベースの暗号化やセッションのセキュリティを処理するためにいくつかの変数を必要とします。.env ファイルを作成します:

nano .env

以下の内容を貼り付けます。APP_KEY とパスワードは必ず変更してください。APP_KEYは正確に32文字である必要があります。

# Monicaの設定
APP_KEY=32文字のシークレットキーに変更してください!!!
DB_USERNAME=monica
DB_PASSWORD=安全なパスワード

# データベースの設定
MYSQL_RANDOM_ROOT_PASSWORD=true
MYSQL_DATABASE=monica
MYSQL_USER=monica
MYSQL_PASSWORD=安全なパスワード

プロのヒント:echo -n "base64:$(openssl rand -base64 32)" を実行して、有効なキーを生成できます。

ステップ3:Docker Composeファイルの作成

次に、サービスを定義します。MonicaアプリとMySQLデータベースが必要です。docker-compose.yml を作成します:

version: '3.8'

services:
  app:
    image: monica:latest
    depends_on:
      - db
    ports:
      - 8080:80
    environment:
      - APP_KEY=${APP_KEY}
      - DB_USERNAME=${DB_USERNAME}
      - DB_PASSWORD=${DB_PASSWORD}
      - APP_ENV=production
    volumes:
      - monica_data:/var/www/html/storage
    restart: unless-stopped

  db:
    image: mysql:5.7
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=${MYSQL_RANDOM_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    volumes:
      - mysql_data:/var/lib/mysql
    restart: unless-stopped

volumes:
  monica_data:
  mysql_data:

ステップ4:コンテナの起動

コマンド一つでシステムを起動します:

docker-compose up -d

Monicaは初回起動時にデータベーススキーマの初期化を行うため、30秒から60秒ほどかかります。ログをチェックして進捗を確認できます:

docker-compose logs -f app

ステップ5:アクセスと初期設定

ブラウザで http://your-server-ip:8080 にアクセスします。Monicaの登録ページが表示されます。最初に作成したアカウントが管理者になります。

ログインしたら、すぐに次の3つのことを試してみてください:

  • 5人の主要な連絡先を追加する: 家族や最も親しい友人から始めましょう。
  • 定期的なリマインダーを設定する: 例えば、2週間ごとの「母に電話する」リマインダーなどです。
  • アクティビティを記録する: 最後に夕食に行った時の短いメモを記録してみましょう。タイムライン機能がどのように機能するかを確認するのに最適です。

さらに進む:リバースプロキシとセキュリティ

IPとポート経由でCRMにアクセスするのはテストには適していますが、日常的な使用には不便です。 外出先からもMonicaにアクセスしたい場合は、Nginx Proxy ManagerやCloudflare Tunnelsのようなリバースプロキシの背後に配置してください。これによりSSL証明書が追加され、接続が安全になります。

SSLの追加は単なるセキュリティチェック項目以上の意味があります。APIを利用して連絡先データを取得する Monicaモバイルアプリを使用する場合、よりスムーズな同期が可能になります。

バックアップを忘れずに

このデータベースには、最終的に何年分もの個人的な節目が記録されることになるため、失うわけにはいきません。シンプルなcronジョブで毎日データベースをダンプできます。手動バックアップをテストするには、次のコマンドを実行します:

docker-compose exec db mysqldump -u monica -p'安全なパスワード' monica > monica_backup_$(date +%F).sql

これらのファイルは、安全に保管するためにNASや暗号化されたクラウドストレージに移動してください。

最後に

Monicaをインストールすることは、単なる技術的なプロジェクトではありません。それは、より「今、そこにいる」友人やパートナーになろうとするコミットメントです。記憶という精神的な重労働を、自分がコントロールできるシステムにオフロードするのです。最初の十数人の連絡先を登録し、古い友人に連絡するリマインダーが届き始めれば、その効果をすぐに実感できるでしょう。それはあなたのソーシャルライフを「偶然」から「意図的」なものへと変えてくれます。

Share: