莫妮卡 – 个人关系经理

在Docker上部署个人关系管理工具Monica

在快节奏的现代社会,我们不断接收来自新闻和社交媒体的信息,即使担心错过任何事情(FOMO),也很容易被日常琐事淹没,而忘记重要的日期和事件。

随着我们外出活动增加,参加更多聚会,结识新朋友,日常生活变得更加丰富多彩,有时我们可能会忘记刚认识的人的一些细节,甚至是对我们已经很熟悉的人。

Monica 的出现让追踪所有这些信息变得更加容易。 它是一款开源的个人客户关系管理(CRM)工具。

Monica 可以帮助你管理与亲朋好友的社交互动。

接下来,我们将探讨如何在 Linode 上的 Docker 中部署 Monica 个人 CRM 实例。

在Docker中部署Monica的先决条件

首先,你需要搭建一个 Docker 服务器。Linode 使这个过程变得非常简单,你只需每月支付几美元就可以搭建一个,并且可以添加一个私有 IP 地址(免费)和备份,只需额外支付几美元/月。

你还需要一个域名,你可以从几乎任何在线平台购买,具体价格取决于你选择的购买渠道。 请确保将域名的 DNS 设置指向你的 Linode 服务器。 你可以在此处获取更多信息

此外,你还需要在 Docker 服务器上设置反向代理,以便执行流量路由和管理 SSL 等操作。我曾制作过一个关于如何使用 Portainer 和名为 Nginx Proxy Manager 的反向代理来设置 Docker 服务器的视频教程。你可以在第一篇博文以及本系列视频中找到相关内容。

设置好 Docker 服务器后,你就可以开始在该服务器上设置 Monica 实例。

主要有两种方法可以实现:

  • 通过 SSH 在命令行中进行操作。
  • 通过 Portainer 仪表板在 Portainer 中进行操作。

我们将重点介绍如何在 Portainer 中进行操作,这样我们可以通过图形界面进行操作。

访问 http://your-server-ip-address:9000,并使用之前设置的凭据登录到 Portainer。

在屏幕左侧,点击“Stacks”链接,然后在下一页点击“+ Add stack”按钮。

这将打开一个页面,你可以在其中输入堆栈的名称。 然后,你可以复制并粘贴以下内容:

version: "3.4"
services:
  monica:
    image: monica
    networks:
      - nginxproxymanager_default
    depends_on:
      - monicadb
    ports:
      - 8456:80
    environment:
      - APP_KEY=idYyiD2Dj3yMqoyi3EpcnHWC2GxzSAS5
      - DB_HOST=monicadb
      - DB_USERNAME=monica
      - DB_PASSWORD=b2fWAfbyQuopHH9nD738x6o9TC9S8LM6
      - APP_ENV=production
    volumes:
      - /home/docker/monica/config:/var/www/html/storage
    restart: always

  monicadb:
    image: mysql:5.7
    networks:
      - nginxproxymanager_default
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=true
      - MYSQL_DATABASE=monica
      - MYSQL_USER=monica
      - MYSQL_PASSWORD=b2fWAfbyQuopHH9nD738x6o9TC9S8LM6
    volumes:
      - /home/docker/monica/db:/var/lib/mysql
    restart: always
    
networks:
  nginxproxymanager_default:
    external: true
  

这个 Docker compose 文件/堆栈指示系统从 Docker 服务器下载最新的官方 Monica 镜像,将容器命名为“monica”,将其附加到“nginxproxymanager_default”网络,将其挂载到“home/docker/monica”目录,并在 docker 服务器的 8456 端口上使其可用。

你可以根据需要修改 Monica 数据存储的路径。 确保该文件夹具有正确的写入权限。

请务必更改数据库密码以确保安全性。

此外,“APP_KEY”应该更改为不同的随机长字符串。

一旦你对这里的设置感到满意,就可以通过点击“Deploy the stack”按钮来部署容器。

这将开始在你的服务器上下载和部署 Monica 的过程。 当页面重新加载并且你可以看到所有正在运行的容器时,表示容器已经部署成功。

现在你可以访问 http://your-server-ip-address:8456,你应该能够看到 Monica 的登录界面。

此时,你可以登录并开始使用。但为了能够通过子域名访问,我们还需要进行进一步设置。

设置域名和SSL

返回 Linode 仪表板,进入“Domains”部分。 找到你添加到帐户的域名并点击它,然后找到域名管理的 CNAME 部分。

通过输入你希望使用的子域的主机名条目,将 CNAME 添加到你的域名。 在示例视频中,我输入了“monica”(不含引号)。 在此下方,我在“Alias to”框中输入 @ 符号,然后点击“Save”。

完成后,我们可以访问 Nginx Proxy Manager 并设置 SSL 和域名。

现在你可以访问 http://your-server-ip-address:81,你应该可以看到 Nginx Proxy Manager 的登录页面。

Nginx Proxy Manager 的默认凭据是:

Email: [email protected]
Password: changeme
  

输入这些凭据(或者你的自定义凭据,如果你已经更新了它们)以登录到 Nginx Proxy Manager 实例。

点击页面顶部显示“SSL Certificates”的选项卡,然后点击页面右上角附近的“Add SSL Certificate”按钮。

接下来,点击“Let’s Encrypt”选项。

在弹出的窗口中,输入你需要保护的完整域名,然后按下键盘上的“Enter”键。

例如,你可能需要输入 https://monica.yourdomain.com

输入 URL 后,点击其下方的“Test Server Reachability”按钮。 如果你收到错误信息,请确保解决问题后重试。 如果没有返回错误,请确认页面上的电子邮件地址正确无误,然后阅读并同意 Let’s Encrypt 的服务条款,最后点击“Save”按钮。

系统生成并安装密钥可能需要一两分钟,完成后,页面将会重新加载,你就可以在 Nginx Proxy Manager 中看到所有可用的 SSL。

现在我们已经在系统上设置了 SSL,可以点击页面顶部的“Hosts”选项卡。 然后点击子菜单中显示的“Proxy Hosts”选项。

找到页面右上角附近的“Add Proxy Host”按钮并点击它。

将会弹出一个新窗口,你需要在其中填写一些选项来配置你的域名。

输入你刚为其创建 SSL 的域名或子域名。

将 Scheme 保留为 HTTP。

输入容器的 IP 地址。 你可以在 Portainer 中找到:

在 “Forward Port” 文本框中,输入容器的端口。 在本例中,它是 80。上图中 “Published Port” 部分显示的 8456 是我们所说的 Docker 端口。 我们需要的是容器端的端口,因此我们需要使用冒号右边的数字。

勾选 “Cache Assets”、“Block Common Exploits” 和 “Websockets Support” 选项。

现在,点击弹出窗口顶部的“SSL”选项卡。

你会看到一个下拉菜单,显示“SSL Certificate”,其下方是“None”。

点击 “None”,然后选择你在前面步骤中创建的 SSL。

现在勾选下面的 4 个选项,然后阅读并同意 Let’s Encrypt 的服务条款,最后点击“Save”。

稍等片刻,页面将会重新加载,你将在 Nginx Proxy Manager 的 Proxy Hosts 页面上看到你的新条目。

首次登录

现在你可以在浏览器中访问新的 URL。

你应该看到一个如下所示的登录页面:

填写注册表,勾选有关服务条款的复选框,然后点击“Register”按钮。

登录后,你就可以开始创建或导入你的联系人。 但在此之前,请务必进入右上角的设置图标(齿轮)并根据你的需求调整设置。 特别要注意屏幕左侧的“Personalization”选项卡,以便你拥有所需的数据字段。

你可以随时返回并在以后根据需要更改/更新这些设置,所以不必担心第一次登录时是否设置正确。

开始添加联系人

现在你的 Monica 实例已经启动并运行,你可以开始更好地追踪你的日常互动、人际关系等等。 你永远不知道记住周年纪念日、生日或其他任何特殊事件会给他人留下多么深刻的印象!

或者,如果你还没有准备好自行安装和管理,或者需要更多功能,你可以尝试基于云的 CRM。