创建数据目录
codimd
用于存储上传的文件
mariadb
用于存储数据库文件
1 2
| $ mkdir /data/docker/{codimd,mariadb} $ chown 1500:1500 /data/docker/{codimd,mariadb}
|
安装数据库
这里我们选择使用容器运行 MariaDB
1 2 3 4 5 6 7
| $ docker run -d \ --name mariadb \ --restart=unless-stopped \ -e MYSQL_ROOT_PASSWORD=Your_Password \ -p 3306:3306 \ -v /data/docker/mariadb:/var/lib/mysql \ mariadb
|
配置数据库
1. 登录到数据库
1
| $ mysql -h 192.168.2.253 -u root -p
|
2. 创建 codimd 数据库
1
| CREATE DATABASE codimd CHARACTER SET utf8 COLLATE utf8_general_ci;
|
3. 设置数据库访问权限
1
| GRANT ALL PRIVILEGES ON codimd.* TO 'codimd'@'%' IDENTIFIED BY 'Your_Password';
|
4. 退出数据库
安装 CodiMD
这里提供了 1.6.0
和 2.0.1
两个版本,可根据实际需求选择。
v1.6.0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| $ docker run -d \ --name codimd \ --restart=unless-stopped \ -e PUID=1500 \ -e PGID=1500 \ -e DB_HOST=192.168.2.253 \ -e DB_PORT=3306 \ -e DB_NAME=codimd \ -e DB_USER=codimd \ -e DB_PASS=Your_Password \ -e TZ=Asia/Shanghai \ -e CMD_ALLOW_ANONYMOUS=false \ -e CMD_DEFAULT_PERMISSION=private \ -e CMD_ALLOW_EMAIL_REGISTER=false \ -e CMD_ALLOW_GRAVATAR=false \ -e CMD_DOMAIN=note.chl.com.cn \ -e CMD_PROTOCOL_USESSL=true \ -e CMD_IMAGE_UPLOAD_TYPE=filesystem \ -p 127.0.0.1:3000:3000 \ -v /data/docker/codimd:/config \ linuxserver/codimd
|
v2.0.1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| $ docker run -d \ --name codimd \ --restart=unless-stopped \ -e UID=1500 \ -e GID=1500 \ -e TZ=Asia/Shanghai \ -e CMD_DB_URL=mysql://codimd:Your_Password@192.168.2.253:3306/codimd \ -e CMD_USECDN=false \ -e CMD_ALLOW_ANONYMOUS=false \ -e CMD_DEFAULT_PERMISSION=private \ -e CMD_ALLOW_EMAIL_REGISTER=false \ -e CMD_ALLOW_GRAVATAR=false \ -e CMD_DOMAIN=note.chl.com.cn \ -e CMD_PROTOCOL_USESSL=true \ -e CMD_IMAGE_UPLOAD_TYPE=filesystem \ -p 127.0.0.1:3000:3000 \ -v /data/docker/codimd:/home/hackmd/app/public/uploads \ nabo.codimd.dev/hackmdio/hackmd:2.1.0-cjk
|
从版本 2.1.0
开始,为了优化 Docker 镜像的尺寸,官方默认的镜像中不包含 CJK 字体,如果您在导出 PDF 时会使用到 CJK 字体,请使用带 -cjk
后缀的镜像。例如:
1
| nabo.codimd.dev/hackmdio/hackmd:2.0.1-cjk
|
配置 Nginx
申请域名和 SSL 证书以及配置域名解析的步骤就不在这里赘述了,直接开始 Nginx 的配置。
1. 拷贝证书文件
1 2
| $ cp ~/.acme.sh/note.chl.com.cn/fullchain.cer /etc/ssl/note.chl.com.cn.crt $ cp ~/.acme.sh/note.chl.com.cn/note.chl.com.cn.key /etc/ssl/note.chl.com.cn.key
|
2. 为 CodiMD 编写配置文件
创建 /etc/nginx/sites-available/codimd
,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| upstream @codimd { server 127.0.0.1:3000; keepalive 300; }
map $http_upgrade $connection_upgrade { default upgrade; '' close; }
server { listen 80; server_name note.chl.com.cn; return 301 https://$server_name$request_uri; }
server { listen 443 ssl http2; server_name note.chl.com.cn; ssl_certificate /etc/ssl/note.chl.com.cn.crt; ssl_certificate_key /etc/ssl/note.chl.com.cn.key;
location / { proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; client_max_body_size 8192m; proxy_max_temp_file_size 8192m; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_pass http://@codimd; } }
|
3. 启用站点
1
| $ ln -s /etc/nginx/sites-available/codimd /etc/nginx/sites-enabled/codimd
|
4. 重新载入配置
1
| $ systemctl reload nginx
|
至此,CodiMD 搭建完成。
使用 CodiMD
先创建一个用户
1
| $ docker exec -it codimd ./bin/manage_users --add me@mail.com
|
然后使用浏览器访问 https://note.chl.com.cn 便可以登录使用了。
附:用户管理
创建用户
方法 A
1
| $ docker exec -it codimd ./bin/manage_users --add me@mail.com
|
方法 B
1
| $ docker exec -it codimd ./bin/manage_users --add me@mail.com --pass Your_Password
|
删除用户
1
| $ docker exec -it codimd ./bin/manage_users --del me@mail.com
|
重设密码
方法 A
1
| $ docker exec -it codimd ./bin/manage_users --reset me@mail.com
|
方法 B
1
| $ docker exec -it codimd ./bin/manage_users --reset me@mail.com --pass Your_Password
|