828华为云征文|部署全平台实时协作 Markdown 笔记平台 CodiMD

828华为云征文|部署实时协作 Markdown 笔记平台 CodiMD

  • 一、Flexus云服务器X实例介绍
    • [1.1 云服务器介绍](#1.1 云服务器介绍)
    • [1.2 性能模式](#1.2 性能模式)
    • [1.3 核心竞争力](#1.3 核心竞争力)
  • 二、Flexus云服务器X实例配置
    • [2.1 重置密码](#2.1 重置密码)
    • [2.2 服务器连接](#2.2 服务器连接)
    • [2.3 安全组配置](#2.3 安全组配置)
  • [三、部署 CodiMD](#三、部署 CodiMD)
    • [3.1 CodiMD 介绍](#3.1 CodiMD 介绍)
    • [3.2 Docker 环境搭建](#3.2 Docker 环境搭建)
    • [3.3 CodiMD 部署](#3.3 CodiMD 部署)
    • [3.4 CodiMD 使用](#3.4 CodiMD 使用)
  • 四、总结

一、Flexus云服务器X实例介绍

1.1 云服务器介绍

云服务器通常采用按需付费模式,用户可以根据实际需求灵活调整计算资源,避免了前期高昂的硬件投资成本。这种模式特别适用于业务量波动较大的场景,例如电商平台在促销季节期间。而且通常会在多个地理位置设立数据中心,这使得即使某一个数据中心出现故障,其他数据中心仍然能够继续提供服务。这种地理分布提高了服务的可用性和容错能力。

华为云下一代云服务器Flexus X实例焕新上线,新产品具备柔性算力,六倍性能,旗舰体验,覆盖高科技、零售、金融、游戏等行业大多数通用工作负载场景,从而帮您快速上云!

Flexus X实例通过和其他服务组合,具备计算、镜像安装、网络、存储、安全等能力,您可根据业务需要灵活配置各资源。


本次测评使用的规格是:4核12G-100G-3M规格的Flexus X实例基础模式

1.2 性能模式

为了满足此类业务场景需要,Flexus云服务器X实例推出了性能模式。开启性能模式后,Flexus云服务器X实例采取底层物理绑核技术,提供极致稳定的QoS保障能力,您可以获得非常稳定的性能保障。

关闭性能模式后的规格信息 开启性能模式后的规格信息
CPU/内存配比:支持灵活自定义vCPU和内存配比,您可基于业务资源需要选择合适规格,节省资源开销。 CPU/内存配比:支持灵活自定义vCPU和内存配比,您可基于业务资源需要选择合适规格,节省资源开销。
vCPU/内存范围:vCPU最大范围为1~16,内存最大范围为1GiB~128GiB。 vCPU/内存范围:vCPU最大范围为2~32,内存最大范围为2GiB~256GiB。
处理器:第三代英特尔® 至强® 可扩展处理器。基频/睿频:2.8GHz/3.5GHz。 基频/睿频:2.45GHz/3.5GHz。

1.3 核心竞争力

  • 柔性算力随心配

    基于用户业务负载动态和内存峰值画像,动态推荐规格,减少算力浪费,提升资源利用率

  • 一直加速一直快

    首创大模型加持,智能全域调度;X-Turbo加速,常见应用性能最高可达业界同规格6倍

  • 越用越省降本多

    按照算力规格变化,精准计算用量,按需灵活计费,搭配智能推介,始终确保成本更优

  • 安全可靠更放心

    提供旗舰级安全品质,跨AZ 99.995%可用性,100+全球权威合规认证

二、Flexus云服务器X实例配置

2.1 重置密码

购买完成后,会短信通过你的云服务器信息,重点是公网IP地址和用户名。首先我们需要打开你的服务器控制台,完成重置密码

勾选自动重启,点击确定即可。

2.2 服务器连接

  • 方式一:使用控制台提供的VNC方式登录

  • 方式二 :使用Putty、Xshell等工具登录Linux弹性云服务器,

    a) 下载安装登录工具,例如Putty。

    b) 输入弹性公网IP。

    c) 输入用户名:root、密码,单击"确定"。

  • 方式三 :使用Linux/Mac OS系统主机登录Linux弹性云服务器。

    a) 执行连接命令。

    ssh 弹性公网IP

    例如:ssh 123.xxx.xxx.456

    b) 输入用户名:root、密码,登录服务器。

我个人习惯使用 MobaXterm 这款软件,添加SSH连接,输出公网IP、用户名和端口(默认22),连接即可。

2.3 安全组配置

安全组是一个逻辑上的分组,为同一个VPC内的云服务器提供访问策略。用户可以在安全组中定义各种访问规则,当云服务器加入该安全组后,即受到这些访问规则的保护。

系统为每个网卡默认创建一个默认安全组,默认安全组的规则是对出方向上的数据报文全部放行,入方向访问受限。您可以使用默认安全组,也可以根据需要创建自定义的安全组

主要需要填写优先级(默认填1即可)、协议端口信息(一般选择你项目需要暴露的端口即可),其他默认点击确定即可。安全组配置主要是暴露端口可以给外网访问。

如果还不清楚可以参考文档:安全组配置示例

三、部署 CodiMD

3.1 CodiMD 介绍

CodiMD 源自于 HackMD 的开源版本,结合了Markdown的简易与流行趋势,专为需要加强团队协作的用户设计。Markdown因其轻量级标记语言的特性在技术社群中广受欢迎。借助 CodiMD,团体可以在一个共享空间中实时撰写和编辑文本,从而让信息获取和处理更加透明高效。此外,用户能够自主选择托管,确保对所有内容拥有完全的控制权和管理权限。这为需要高保密性和可定制化解决方案的公司提供了绝佳选择。

CodiMD 之所以成为众多开发者和团队青睐的工具,不仅在于它的开源和免费,还因为其独特且高效的功能设计。

  1. 实时协作

    CodiMD 的实时协作功能让团队成员无论身在何处都能立即参与文档编辑。编辑过程支持多用户同时操作,减少沟通滞后与版本差异。团队成员能够即时查看彼此的修改内容,从而更加高效地协调工作。

  2. Markdown 支持

    Markdown语法简单易懂,使得文档撰写过程轻便快捷,同时又能确保高度的格式化支持,包括HTML、幻灯片模式和书籍模式等多种展示形式,为复杂文档的呈现提供多样选择。

  3. 独立自主的存储解决方案

    与大多数依赖于云端存储的工具不同,CodiMD 允许用户自主管控所有数据。通过选择适合的托管解决方案,用户可根据需求设计专属的安全性与隐私策略。

  4. 广泛的浏览器支持

    CodiMD 兼容主要浏览器,包括 Chrome、Safari 和 Firefox 等,使用户在不同的设备和操作系统上均可获得流畅体验。

作为 markdown 笔记重度使用者,我需要就是一种全平台基于浏览器WEB的在线 markdown 编辑器,并且支持实时渲染预览,支持超多的富文本格式,比如常用的图片、表格、emoji表情和代码段,此外还有各种图表和数学公式,虽然本人平时使用不多,但是肯定是有需求的人。CodiMD 以其出色的实时协作能力、强大的Markdown支持、多样的部署配置和开源的思想,成为了提高团队协作效率的不二选择。

3.2 Docker 环境搭建

本次服务器环境是ubuntu系统镜像,需要自己安装docker环境

服务器类别 系统镜像 内网IP地址 Docker版本 操作系统版本
Flexus云服务器X实例 Ubuntu 192.168.0.168 27.2.0 Ubuntu 22.04.4 LTS

使用apt-get命令安装docker及其配置

bash 复制代码
# 安装必要工具包
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# 添加Docker GPG秘钥
$ sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# 配置仓库源
$ sudo add-apt-repository \
      "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
      $(lsb_release -cs) \
      stable"	

# 更新apt包索引
$ sudo apt-get update

# 安装docker
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

# 添加docker镜像源
$ sudo vim /etc/docker/daemon.json

{
    "registry-mirrors": [
        "https://ustc-edu-cn.mirror.aliyuncs.com/",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn",
        "https://ccr.ccs.tencentyun.com/",
        "https://docker.m.daocloud.io/",
        "https://dockerproxy.com",
    ]
}
# 重启
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

测试docker安装是否成功

bash 复制代码
root@flexusx-c6b3:~# docker -v
Docker version 27.2.0, build 3ab4256```

检查docker服务状态

bash 复制代码
root@flexusx-c6b3:~# systemctl status docker
* docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-08-30 15:53:45 CST; 17h ago
TriggeredBy: * docker.socket
       Docs: https://docs.docker.com
   Main PID: 24912 (dockerd)
      Tasks: 13
     Memory: 24.7M
        CPU: 3.778s
     CGroup: /system.slice/docker.service
             `-24912 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

检查docker compose版本

bash 复制代码
root@flexusx-c6b3:~# docker compose version
Docker Compose version v2.29.2

3.3 CodiMD 部署

  • 创建 docker-compose.yml
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: nabo.codimd.dev/hackmdio/hackmd:2.5.4
    environment:
      - CMD_DB_URL=postgres://codimd:change_password@database/codimd
      - CMD_USECDN=false
    depends_on:
      - database
    ports:
      - "3000:3000"
    volumes:
      - upload-data:/home/hackmd/app/public/uploads
    restart: always
volumes:
  database-data: {}
  upload-data: {}
  • volumes:映射容器内部文件路径到本地
  • ports:配置访问端口

如果将上述代码片段保存在名为 docker-compose.yml 的文件中,则只需从同一文件夹中运行 docker compose up -d 即可自动拉取 CodiMD 镜像,并创建并启动一个容器。 up 表示启动服务,-d 表示在后台执行。docker-compose down 命令用于停止和清理由 docker-compose up 启动的服务。

  • 配置安全组

在Flexus云服务器X实例的安全组管理页面,添加入方向规则,接下来我们启动服务需要监听3000端口,所以添加安全组为TCP:3000协议端口。

  • 启动服务

进入项目目录,执行docker compose up -d启动命令,会自动拉取容器并运行

从 docker hub 拉取 CodiMD 镜像,地址:https://hub.docker.com/r/hackmdio/hackmd

bash 复制代码
root@flexusx-c6b3:~/codimd# docker-compose up -d
Creating network "codimd_default" with the default driver
Creating volume "codimd_database-data" with default driver
Creating volume "codimd_upload-data" with default driver
Pulling database (postgres:11.6-alpine)...
11.6-alpine: Pulling from library/postgres
c9b1b535fdd9: Pull complete
d1030c456d04: Pull complete
d1d0211bbd9a: Pull complete
07d0560c0a3f: Pull complete
ce7fd4584a5f: Pull complete
63eb0325fe1c: Pull complete
b67486507716: Pull complete
f58de2b85820: Pull complete
ca982626dd56: Pull complete
Digest: sha256:c132d7802dcc127486a403fb9e9a52d9df2e3ab84037c5de8395ed6ba2743e20
Status: Downloaded newer image for postgres:11.6-alpine
Pulling codimd (nabo.codimd.dev/hackmdio/hackmd:2.5.4)...
2.5.4: Pulling from hackmdio/hackmd
311da6c465ea: Pull complete
7e9bf114588c: Pull complete
ffd9397e94b7: Pull complete
513d77925604: Pull complete
ae3b95bbaa61: Pull complete
0e421f66aff4: Pull complete
ca266fd61921: Pull complete
ee7d78be1eb9: Pull complete
3658276aee6a: Pull complete
0423a96ab029: Pull complete
f67c2e66f325: Pull complete
bf9d6202b80c: Pull complete
4f4fb700ef54: Pull complete
f54fcc61c4b7: Pull complete
6e0261793f63: Pull complete
Digest: sha256:5a589717f430bd63eb953eabe7e8aedf1df3063f1d26532879390dcb9c6886d0
Status: Downloaded newer image for nabo.codimd.dev/hackmdio/hackmd:2.5.4
Creating codimd_database_1 ... done
Creating codimd_codimd_1   ... done
  • 检查容器状态

检查 CodiMD 容器状态,确保容器正常启动

bash 复制代码
root@flexusx-c6b3:~/codimd# docker ps
CONTAINER ID   IMAGE                                   COMMAND                  CREATED         STATUS         PORTS                                       NAMES
f1e2e6d4d369   nabo.codimd.dev/hackmdio/hackmd:2.5.4   "/home/hackmd/app/do..."   9 minutes ago   Up 9 minutes   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   codimd_codimd_1
070b2d0d5ccd   postgres:11.6-alpine                    "docker-entrypoint.s..."   9 minutes ago   Up 9 minutes   5432/tcp                                    codimd_database_1
  • 访问地址

内网:http://localhost:3000

外网:http://公网IP:3000

  • 访问结果

若出现此页面,则部署 codimd server 成功。

3.4 CodiMD 使用

修改语言为简体中文:主页面下滑到底部有语言选项

点击探索所有功能:这是一篇介绍 CodiMD 的介绍和功能点以及 markdwon 用法的官方文档,这个文档没有进行官方的翻译,所以都是英文,除了菜单是中文名。同时这也一个 CodiMD 的编辑界面,我们后续使用添加新 markdown 文档时候,编辑界面就是这个样子,右侧还显示文章目录

我们可以选择分割视图,查看编辑器和结果

切换主题,浅色模式或者深色模式

查看帮助,快速获取速查表,或者报告问题等功能

右上角的功能栏,包含新建、发表和附加功能、导入、下载(支持导出 markdown、HTML、PDF文件格式),还可以查看在线阅读这篇文档的人员

再回到主页,点击登录,输出邮箱和密码,点击注册,完成帐号注册

再次输出注册时的帐号和密码,点击登录

查看简介栏,CodiMD 的特点是实时协助、支持图表和MathJax、支持幻灯模式

帐号管理:可以导出用户数据、删除账号和退出登录

历史功能:选择标签、搜索关键词、标题排序、时间排序、导出历史、导入文件、清空历史、刷新历史

新建笔记,随便拷贝一些内容

点击发表就会出现在首页的历史列表了,我测试了一些,没有点击发表,也会自动保存内容

点击这篇笔记,可以修改查看、编辑权限和删除笔记,点击发表后可以将链接分享给其他人员查看或编辑

CodiMD 的入门级别使用就是这些了,CodiMD的核心功能当然的 markdown 的编辑功能了,可以查看官方文档来学习,稍微看了一些,功能太多了,对我本人有点多余,我主要是码字,图表、公式这些没有用过,那些语法还需要仔细学习下。当然CodiMD的还有个重要功能点就是实时协作,更适合团队使用,还有更多的功能和配置就需要自行探索了。

四、总结

CodiMD 以其出色的实时协作能力、强大的Markdown支持、多样的部署配置和开源的思想,成为了提高团队协作效率的不二选择。无论你是小型初创企业还是大型组织用户,CodiMD 都能为你的团队协作带来持续的效率提升和用户满意度。此次使用的Flexus X实例配置还是很高的4核12G-100G-3M规格基础模式,CodiMD 的对服务器配置要求不高,但是没有测试过多人同时在线协作过程,个人使用很流畅丝滑,就和本地部署的项目一样。

个人使用云服务器部署开源项目不仅可以享受到高效、灵活和经济的服务,还可以将更多精力集中在开发和创新上,而不必担心底层基础设施的问题。华为云正在举行828 B2B企业节,华为云凭借其稳定的服务质量和全面的产品线,成为了众多企业和个人用户的首选。不论是新创企业还是个人开发者,都可以借此良机享受到高性能的计算资源和支持,比如Flexus X实例,它不仅能满足高强度的算力需求,还能完美支持自建各种主流底层网络框架和应用。

快来体验华为云带来的无限可能吧!立即体验

相关推荐
爱吃番茄的小狐狸5 小时前
Docker镜像下载-使用github action- 解决无法下载docker镜像的问题
docker·容器·github
Linux猿6 小时前
828华为云征文 | 云服务器Flexus X实例:部署 Gitea,拥有自己的Git仓库,管理本地代码
服务器·华为云·gitea·云服务器·git仓库·flexus云服务器x实例·华为云服务器
andy7_6 小时前
运行在docker环境下的图片压缩小工具
运维·docker·容器
bestcxx7 小时前
(十六)、把镜像推送到私有化 Docker 仓库
docker
汪公子4927 小时前
k8s的配置
java·linux·docker
Cloud Traveler8 小时前
828华为云征文 | 解锁企业级邮件服务,在华为云fFlexus x实例上部署Mailcow开源方案
华为云
.生产的驴9 小时前
Docker 消息队列RabbitMQ 安装延迟消息插件
运维·spring boot·后端·docker·容器·rabbitmq·java-rabbitmq
爱吃香蕉的阿豪10 小时前
828华为云征文|Flexus X实例Docker+Jenkins+gitee实现CI/CD自动化部署-解放你的双手~
ci/cd·docker·gitee·华为云·jenkins
Aileen_0v021 小时前
【Java宝典】——探索数组的奥秘之旅
java·运维·开发语言·windows·后端·docker·golang
吴半杯1 天前
Docker安装SVN,搭建自己的本地版本仓库
docker·svn·容器