背景
事情的起因是想在NAS部署一套markdown编辑器,经过比对选中开源的CodiMD软件,CodiMD 是一款开源的、基于 Markdown 的协作笔记和文档编辑工具,专注于团队实时协作和知识共享。通过威联通NAS Docker部署好CodiMD软件后,发现现在威联通NAS 5.x的系统不支持在Container station管理界面增加修改CodiMD Docker的环境变量。
一、CodiMD部署安装
1、通过直接在Container station应用中新建yml文件直接拉取镜像创建CodiMD应用
# yml文件
version: "3"
services:
database:
image: postgres:11.6-alpine
environment:
- POSTGRES_USER=codimd
# 这里需要改成自己的密码
- POSTGRES_PASSWORD=change_password
- POSTGRES_DB=codimd
volumes:
- "database-data:/var/lib/postgresql/data"
restart: always
codimd:
image: hackmdio/hackmd:2.5.4
environment:
# 这里需要改成自己的密码
- CMD_DB_URL=postgres://codimd:change_password@database/codimd
- CMD_USECDN=false
depends_on:
- database
ports:
# 前面的端口是要映射到外部的端口,后面的端口是docker里面运行的端口,不想用3000端口可以更改前面的端口。
- "3000:3000"
volumes:
- upload-data:/home/hackmd/app/public/uploads
restart: always
volumes:
database-data: {}
upload-data: {}
2、现在就可以通过http://IP:3000端口访问CodiMD
3、现在CodiMD已经部署好了,但是在注册功能(点击登录按钮即可看到)是放开的,任何人都可以注册使用。若是个人使用或小团队使用,应在创建好账号后即刻关闭注册功能,确保安全性,但威联通nas不能在web管理界面修改增加环境变量(如下图),这就需要我们用其他的方法来进行修改。
二、Docker应用环境变量修改
1、配置ssh登录
首先要打开威联通的ssh连接访问,通过连到命令行进行来修改。
通过命令行或者shell工具连接到nas后台,然后输入Q回车,然后输入Y回车进入命令行
# 命令行方式
ssh username@nas_ip
2、docker-compose安装
威联通nas本身不带docker-compose,可以通过以下命令来进行安装
sudo curl -SL "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/lib/docker-compose
3、查找docker目录
- 通过以下命令可以找到docker的目录
docker info | grep 'Docker Root'
- 可以得到以下结果
/share/CACHEDEV1_DATA/Container/container-station-data/lib/docker
- 得到上一个目录后,可以往上级目录找可以找到CodiMD的目录
/share/CACHEDEV1_DATA/Container/container-station-data/application/codimd
- 进入到CodiMD的目录后可以看到有一个docker-compose.yml文件,通过vim docker-compose.yml打开,可以看到内容就是我们安装CodiMD的yml文件内容,然后通过修改docker-compose.yml增加环境变量,然后退出编辑并保存。
codimd:
image: hackmdio/hackmd:2.5.4
environment:
# 这里需要改成自己的密码
- CMD_DB_URL=postgres://codimd:change_password@database/codimd
- CMD_USECDN=false
# 以下增加的环境变量,可以参考官方文档根据需要来添加
# 禁止匿名访问
- CMD_ALLOW_ANONYMOUS=false
# 禁止注册
- CMD_ALLOW_REGISTER=false
# 禁止邮件注册
- CMD_ALLOW_EMAIL_REGISTER=false
4、更新配置并重启服务
docker-compose up -d --force-recreate codimd
5、 验证禁止注册配置生效
docker-compose exec codimd sh -c 'echo $CMD_ALLOW_REGISTER'
# 得到输出结果false
...