Đừng để những điều nhỏ nhặt bị lãng quên: Tự host Monica CRM trên Docker

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

Khó khăn khi phải ghi nhớ những điều nhỏ nhặt

Tôi từng tự hào mình có trí nhớ sắc bén. Nhưng rồi cuộc sống cuốn đi. Đột nhiên, tôi quên mất tên con của sếp, quên rằng một người bạn thân bị dị ứng đậu phộng, hay thất lạc một gợi ý sách từ năm 2022. Giữa vô vàn thông báo Slack và sự ồn ào của mạng xã hội, những tương tác ý nghĩa nhất thường bị nhấn chìm trong mớ hỗn độn của một tuần bận rộn.

Các nền tảng mạng xã hội như Facebook hay LinkedIn không được xây dựng để quản lý cá nhân chuyên sâu. Chúng ưu tiên sự tương tác và doanh thu quảng cáo hơn là sự kết nối chân thành. Nếu bạn muốn nhớ rằng người cố vấn của mình thích email hơn là gọi điện, hay người em họ vừa bắt đầu công việc mới, bạn cần một hệ thống chuyên dụng. Đây chính là lúc Personal CRM (Quản trị quan hệ cá nhân) thay đổi cuộc chơi.

Tại sao các vòng tròn xã hội của chúng ta dần phai nhạt

Không chỉ vì lười biếng mà chúng ta mất liên lạc; đó là do quá tải nhận thức. Não bộ con người không được thiết kế để lưu trữ hàng ngàn chi tiết rời rạc về 150 người khác nhau—một giới hạn thường được gọi là Con số của Dunbar. Việc chỉ dựa vào trí nhớ buộc chúng ta rơi vào “hiệu ứng gần đây” (recency effect). Chúng ta chỉ liên lạc với những người vừa trò chuyện trong bảy ngày qua, trong khi những tình bạn cũ dần phai nhạt.

Các công cụ phân mảnh làm tình hình tệ hơn. Bạn có thể có số điện thoại trong danh bạ, ngày sinh nhật trên Google Calendar và lịch sử trò chuyện bị vùi lấp đâu đó trong WhatsApp. Không có một nguồn dữ liệu tập trung duy nhất (single source of truth). Nếu không có một trung tâm điều phối, việc duy trì các mối quan hệ lâu dài trở nên thụ động. Bạn chỉ liên lạc khi thấy thông báo, thay vì chủ động tương tác.

Đánh giá các lựa chọn

Khi bắt đầu tìm kiếm giải pháp, tôi đã khám phá ba hướng đi chính:

  • Phương pháp bảng tính: Excel hoặc Google Sheets. Dù miễn phí nhưng việc thao tác trên điện thoại là một nỗi ác mộng và thiếu các lời nhắc tự động. Nó giống như việc nhập liệu thủ công, và điều đó dẫn đến sự chán nản chỉ sau một tháng.
  • Enterprise CRMs: Salesforce hoặc HubSpot. Chúng mạnh mẽ nhưng mang lại cảm giác lạnh lẽo. Việc thấy bạn thân của mình được liệt kê là một “Lead” (Khách hàng tiềm năng) trong một “Sales Pipeline” (Phễu bán hàng) thật sự rất kỳ cục.
  • Proprietary Personal CRMs: Các ứng dụng như Clay hoặc Dex. Chúng mượt mà và dễ dùng. Tuy nhiên, chúng thường yêu cầu phí thuê bao 15–20 USD mỗi tháng và lưu trữ dữ liệu nhạy cảm nhất của bạn trên máy chủ của họ.

Với những ai đang vận hành HomeLab, lựa chọn đã quá rõ ràng. Chúng ta muốn một công cụ được xây dựng cho các mối quan hệ nhưng vẫn giữ dữ liệu trong tầm kiểm soát của chính mình. Điều đó dẫn chúng ta đến với Monica.

Giải pháp: Monica CRM trên Docker

Monica là một hệ thống quản lý quan hệ cá nhân mã nguồn mở. Nó theo dõi mọi thứ, từ loại rượu whiskey yêu thích của một người bạn đến lần cuối cùng bạn đi uống cà phê với họ. Bằng cách tự host thông qua Docker, bạn đảm bảo dữ liệu nằm trên phần cứng của mình. Không ai khai thác danh sách liên lạc của bạn để bán quảng cáo mục tiêu cả.

Tôi đã chạy hệ thống này hơn một năm và nó cực kỳ ổn định. Monica rất nhẹ, thường chỉ tiêu tốn khoảng 150MB đến 200MB RAM. Sử dụng Docker Compose giúp việc triển khai có thể lặp lại và dễ dàng sao lưu, điều này rất quan trọng cho một hệ thống sẽ lưu giữ nhiều năm lịch sử của bạn.

Điều kiện tiên quyết

Trước khi bắt đầu, hãy đảm bảo máy chủ của bạn (Ubuntu 22.04 hoặc tương tự) đã sẵn sàng:

  • Docker và Docker Compose đã được cài đặt.
  • Làm quen cơ bản với terminal.
  • Một địa chỉ IP nội bộ hoặc tên miền để truy cập.

Bước 1: Thiết lập thư mục

Hãy giữ mọi thứ ngăn nắp. Tôi khuyên bạn nên dùng một thư mục riêng cho tất cả các dự án Docker.

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

Bước 2: Cấu hình môi trường

Monica cần một vài biến để xử lý mã hóa cơ sở dữ liệu và bảo mật phiên làm việc. Tạo tệp .env:

nano .env

Dán nội dung sau vào. Bạn phải thay đổi APP_KEY và mật khẩu. APP_KEY phải có độ dài chính xác là 32 ký tự.

# Cấu hình Monica
APP_KEY=ThayBangMotKhoaBiMat32KyTu!!!
DB_USERNAME=monica
DB_PASSWORD=mat_khau_bao_mat_cua_ban

# Cấu hình cơ sở dữ liệu
MYSQL_RANDOM_ROOT_PASSWORD=true
MYSQL_DATABASE=monica
MYSQL_USER=monica
MYSQL_PASSWORD=mat_khau_bao_mat_cua_ban

Mẹo nhỏ: Tạo một khóa hợp lệ bằng cách chạy lệnh: echo -n "base64:$(openssl rand -base64 32)".

Bước 3: Tệp Docker Compose

Tiếp theo, chúng ta sẽ định nghĩa các dịch vụ. Chúng ta cần ứng dụng Monica và cơ sở dữ liệu MySQL. Tạo 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:

Bước 4: Khởi chạy các Container

Kích hoạt hệ thống bằng một lệnh duy nhất:

docker-compose up -d

Monica sẽ mất khoảng 30 đến 60 giây để khởi tạo cấu trúc cơ sở dữ liệu trong lần chạy đầu tiên. Bạn có thể theo dõi tiến trình bằng cách kiểm tra log:

docker-compose logs -f app

Bước 5: Truy cập và thiết lập ban đầu

Truy cập http://your-server-ip:8080 trong trình duyệt. Bạn sẽ thấy trang đăng ký của Monica. Tài khoản đầu tiên bạn tạo sẽ trở thành quản trị viên.

Khi đã vào bên trong, hãy thử ngay ba điều sau:

  • Thêm 5 liên lạc quan trọng: Bắt đầu với gia đình hoặc bạn bè thân thiết nhất.
  • Đặt lời nhắc định kỳ: Có thể là lời nhắc “Gọi cho mẹ” mỗi hai tuần một lần.
  • Ghi lại một hoạt động: Lưu lại một ghi chú ngắn về lần cuối cùng bạn đi ăn tối. Đây là cách tuyệt vời để xem tính năng dòng thời gian (timeline) hoạt động như thế nào.

Nâng cao: Reverse Proxy và Bảo mật

Truy cập CRM qua IP và cổng là ổn khi thử nghiệm, nhưng khá bất tiện để dùng hàng ngày. Nếu bạn muốn truy cập Monica khi đang di chuyển, hãy đặt nó sau một reverse proxy như Nginx Proxy Manager hoặc Cloudflare Tunnels. Việc này sẽ bổ sung chứng chỉ SSL, giúp kết nối của bạn an toàn hơn.

Thêm SSL không chỉ là một bước kiểm tra bảo mật. Nó giúp việc đồng bộ hóa mượt mà hơn nếu bạn quyết định sử dụng ứng dụng di động Monica, vốn dựa vào API để lấy dữ liệu liên lạc của bạn.

Đừng quên sao lưu

Vì cơ sở dữ liệu này cuối cùng sẽ lưu giữ nhiều năm cột mốc cá nhân, bạn không được phép để mất nó. Một tác vụ cron đơn giản có thể sao lưu cơ sở dữ liệu của bạn hàng ngày. Chạy lệnh này để thử sao lưu thủ công:

docker-compose exec db mysqldump -u monica -p'mat_khau_bao_mat_cua_ban' monica > monica_backup_$(date +%F).sql

Di chuyển các tệp này sang NAS hoặc một kho lưu trữ đám mây được mã hóa để cất giữ an toàn.

Lời kết

Cài đặt Monica không chỉ là một dự án kỹ thuật; đó là một cam kết để trở thành một người bạn và người đồng hành chu đáo hơn. Nó giải phóng gánh nặng tinh thần cho một hệ thống mà bạn kiểm soát. Khi bạn đã có hàng chục liên lạc đầu tiên và bắt đầu nhận được lời nhắc liên lạc với những người bạn cũ, bạn sẽ thấy ngay tác động của nó. Nó biến cuộc sống xã hội của bạn từ ngẫu nhiên thành có chủ đích.

Share: