1.前言
monica是一个个人小型crm,与手机中的通讯录类似,但需求围绕的不是手机等联络信息,侧重点是个人,也就是你可以在这个系统上记录某人的所有你了解的信息,除了联系信息等个人信息外,还能记录如何解释,与ta的一些特定的故事等。也可以简单理解为你的朋友建立一个你所了解到的关于他的档案。
monica官网:https://www.monicahq.com/
可以使用官方提供的服务:https://app.monicahq.com/
也可以自行搭建服务,自己搭建是全功能版本,官方的想要全功能是要付费的,下面我介绍我的搭建方法。
一种是使用docker搭建服务+数据库,另一种是只用docker搭建monica服务连接本机或远程数据库。
2.使用docker搭建服务以及数据库
我强烈建议使用Docker搭建服务,最开始我也以为只是php服务,跟wordpress一样放到宝塔的网站里就行,但实际上并不是,不像wp一样有安装程序,我参考文档后发现有点麻烦,需要php安装,还需要安装一些其他的。因此直接选择docker比较方便。
官方手册中数据库是一并用Docker启动的,使用Docker-compose。
services:
app:
image: monica
depends_on:
- db
ports:
- 8080:80
environment:
- APP_KEY= # Generate with `echo -n 'base64:'; openssl rand -base64 32`
- DB_HOST=db
- DB_USERNAME=monica
- DB_PASSWORD=secret
volumes:
- data:/var/www/html/storage
restart: always
db:
image: mariadb:11
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=true
- MYSQL_DATABASE=monica
- MYSQL_USER=monica
- MYSQL_PASSWORD=secret
volumes:
- mysql:/var/lib/mysql
restart: always
volumes:
data:
name: data
mysql:
name: mysql
其中APP_KEY,使用命令:echo -n ‘base64:’; openssl rand -base64 32
创建。
填写完成后使用docker compose up -d 来启动
或者不使用docker-compose使用docker命令也可以,直接执行:
mysqlCid="$(docker run -d \
-e MYSQL_RANDOM_ROOT_PASSWORD=true \
-e MYSQL_DATABASE=monica \
-e MYSQL_USER=homestead \
-e MYSQL_PASSWORD=secret \
"mysql:5.7")"
docker run -d \
--link "$mysqlCid":mysql \
-e DB_HOST=mysql \
-p 8080:80 \
monica
3.使用Docker搭建服务连接本地数据库
这是我的搭建方法,因为本机有博客,用宝塔直接在本机启动的mysql服务,再使用docker启动一个数据库的话,又占用资源又很蠢,因此我研究如何使用本地mysql作为monica的数据库,其中有一些难点需要注意,我会详细说明。
首先启动monica服务
我是直接用宝塔启动的,直接修改上面的官方Docker-compose启动命令即可,注意增加一些环境变量:
APP_KEY=base64:Q3ShEL6sYSaiMgsjCvtzqcxgulOpkBjbYQYm5h2JEbk=
DB_HOST= #你的数据库ip,本地数据库填写本机外网ip
DB_PORT=3306
DB_DATABASE=monica
DB_USERNAME=monica
DB_PASSWORD= #你的密码
APP_URL= #访问域名
TRUSTED_PROXIES=*
APP_ENV=production
其中:
APP_URL= #访问域名
TRUSTED_PROXIES=*
APP_ENV=production
是为了之后开启https准备的,如果有开启https的需求,建议添加,在群晖等内网的话就不必了。
然后我们配置本地的数据库
首先在宝塔的数据库中找到monica的数据库,点击权限,设置能够访问数据库的ip地址。我的是172.17.0.2,也就是monica这个容器的Dockerip地址,或者直接填写整个网段也行。
紧接着进入宝塔的安全选项中设置系统防火墙
添加规则,端口为3306,来选选择指定ip,172.17.0.0/16,放行整个Docker容器的网段。
如此设置我的monica能够正常连上数据库并正常工作。如果有阿里云等云服务厂商提供的数据库实例,将对应的信息填到monica的Docker-compose对应环境变量中即可。
4.使用https连接monica
这个基本就是常规NGINX配置即可,没有什么特别添加的,在Docker-compose的环境变量中添加我上面写的那三个参数,我就正常开启https了。用宝塔的话在网站中添加反向代理即可。