在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。