站内搜索
发作品签到
专业版

我用树莓派CM0搭建一个超级小巧的个人web站点!

工程标签

294
0
0
0

简介

搭建一个超小型的web站点到CM0上,利用512MB的内存和它小巧的2.4GHz Wi-Fi 搭建一个内网的超小型的个人资料整理站。

简介:搭建一个超小型的web站点到CM0上,利用512MB的内存和它小巧的2.4GHz Wi-Fi 搭建一个内网的超小型的个人资料整理站。
复刻成本:242

开源协议

GPL 3.0

创建时间:2026-01-20 16:36:11更新时间:2026-01-20 17:05:16

描述

在我写这篇文章的时候,已经是2025年12月31日,是2025年的最后一天,在下班前,我突然想着这个基础文档不要拖到年后了,争取在年前再发布一篇,也算是对自己有个交代。

这次的内容非常简单,就是搭建一个超小型的web站点到CM0上,利用512MB的内存和它小巧的2.4GHz Wi-Fi 搭建一个内网的超小型的个人资料整理站,不仅可以做为博客平台,也可以通过学习markdown语法,实现简单的技术站点部署。

 

一、设备准备

* 1 x CM0 Dev Kit / Nano Kit 也可以

* 1 x MicroUSB 电源5v @3A

就这些,要简单, 简单,再简单,不然新手不会跟着做。

 

二、烧录系统

详细参考我第一篇帖子:

https://mp.weixin.qq.com/s/4C-LEV1Gh357opEdLT0L4A?scene=1&click_id=3

 

三、配置环境

先说明一下,整体思路,是通过mkdocs包和nginx服务器(web)来搭建一个属于自己的web小站,用markdown语法记录一下自己的学习CM0的学习笔记,然后顺便搭建一个git服务器,让CM0成为最小的web服务器和git代码仓库。

操作步骤如下:

1. 创建一个项目目录,我这里无异于一个曼哈顿计划,所以起名manhattan.

2. 进入目录:

3. 安装mkdocs 和nginx包

sudo apt update

sudo apt -y install virtualenv git nginx

sudo apt -y install vim vim-youcompleteme

4. 创建虚拟环境

创建一个干净的虚拟环境,这样不会收到PEP868的影响,安装python的第三方模块也非常顺利。

virtualenv -p python3 venv

激活环境:

source venv/bin/activate

可以看到这里出现虚拟环境的提示,每次重启后记得使用激活环境的命令哦,不然下次启动会提示没有对应的库,你们如果安装opencv也是这样操作。

安装mkdocs的库:

pip install mkdocs

如果看到Successfully就是说明安装成功了。

5. 创建新项目

我想创建的是CM0的学习知识站点,所以我起名为LearningCM0

mkdocs new learningCM0

sudo apt -y install tree

安装个tree,方便给你们看文件结构。

让我们简单操作一下看看效果:

cd learningCM0

ls

mkdocs serve

可以看到我们本地的8000端口开放了一个服务,直接通过浏览器访问http://127.0.0.1:8000/ 端口,就可以看到页面,但是我们是字符界面,怎么会有桌面呢?所以我们先ctrl+C 终止。

先回到终端,然后输入下面的命令:

mkdocs serve -a 0.0.0.0:8000

就会发现,地址变为了任意地址,可以通过查看当前树莓派的IP地址来访问。

查看本机IP:

ifconfig wlan0

实际上我的ip在重启后成为了192.168.3.64,所以下面我打开浏览器访问一下:

是不是挺好看的?也容易实现啊?

接下来让我们atl+F2 打开另外一个终端,或者你可以直接通过远程终端软件例如mobaxterm去连接我们的CM0,然后编辑文件:

这里需要注意的是:开发服务器支持自动重新加载,当配置文件、文档目录或主题目录中的任何内容发生更改时,它将重新构建你的文档,所以只要开着浏览器时时刻刻修改保存就会发生变化。

docs/index.md用你选择的文本编辑器打开文档,将初始标题更改为”CM0学习笔记小站“,然后保存更改。浏览器将自动重新加载,你应该会立即看到更新后的文档,就是这么丝滑~

现在尝试编辑配置文件:将设置mkdocs.yml更改 site_name为”CM0学习笔记小站” 并保存文件。

保存退出后,你刷新网页:

就看到效果了。那么剩下的就是自己编辑markdown文档了。

由于我们的文档网站将包含一些导航标题,我们就可以编辑配置文件,并通过添加设置来添加有关导航标题中每个页面的顺序、标题和嵌套的信息nav 就是表示导航栏:

 

然后我要在docs目录里面生成这几个markdown的文件,为了方便,我就用AI生成一堆介绍说明,放到里面去。

我们挨个修改一下内容:

vim index.md

这里就是markdown格式的内容了,直接根据需求修改一下。

我让AI帮我写了,我直接复制粘贴。

cm0 的也是一样。

其他的也一样,我就不赘述了。

另一个终端执行的时候如果发现下面报错,说明你缺少了一个kicad.md的文档。

然后去创建一个简单的就好, 在群里看到已经有人在cm0上跑起来ollama了,可以通过调用ollama api,直接生成markdown文本,然后就特喵的闭环了。

好的,目前都写好了,上传几个图片,然后放到文档里面,就齐活了,然后看看效果。

直接下载图片拖入对应的目录:

然后将图片插入到文档中,非常简单:

然后再执行看看效果:

浏览器访问一下:

再切换一下:

是不是突然感觉有点儿专业了呢?哈哈

好吧,也不能一直用mkdocs运行跑这个web服务吧。

我们再进一步。就可以让我们的nginx来对外提供服务了。

在项目目录中:

mkdocs build

就可以生成静态页。

然后把静态页直接同步到/var/www/html/目录中,就可以啦~

sudo rsync -avz --progress site/* /var/www/html/

一秒结束。

然后删掉这个默认页。

重启nginx服务,然后访问IP的80端口就可以看到页面了。

这边用了

sudo systemctl restart nginx

sudo systemctl enable nginx (开机自动加载)

检查一下端口:

netstat -natp |grep 80

把原先的mkdocs开启的8000端口关闭,直接用80对局域网开启服务,如果想开到广域网, 你需要申请域名和备案,最好还得有个固定IP才好,不然也可以用花生壳绑定域名在路由器上开个端口转发或直接丢入DMZ,这个就是另一个故事了。

这么一弄,好了,这个CM0 可以一直开机了。低功耗的特性也不怕它把家里电用完,还能随时随地写记录,备注自己的技术小代码。是不是很简单?快去采购一个CM0 dev kit玩儿起来。

另外,说起代码,如果有人想要备份代码一想到github访问的时候就有点儿心里发怵,时而能行,时而不行,gitee虽然在国内,但是也得注册不是? 如果想把CM0打造成一个Git服务器行不行呢?

答案是:那必须行。

首先:什么是git?

Git就像是一个超级厉害的“文件时光机”。它能帮你记录文件(主要是代码)的每一次变化,就像你写作业时的“撤销”和“重做”,但功能强大得多。你可以随时看看以前的版本,对比不同版本的差别,要是发现哪里改错了,还能轻松回到之前的版本。

而且,Git是“分布式”的,就好比每个开发者都有一个自己的“文件宝库”,里面不仅有最新的文件,还有完整的修改历史。大家可以在自己的电脑上独立地做各种操作,比如修改代码、创建新的分支,最后再把成果跟团队合并。这比那种只有一个中心仓库的“集中式”系统要灵活、强大、安全得多。

用更通俗的话来说,Git的核心用途和解决的问题可以总结为以下几点:

1.备份与历史

Git就像一个“时间胶囊”,把项目的每一个版本都保存得清清楚楚,永远不会丢。不管你改了多少次,以前的版本都能找回来。

2. 协作开发

当很多人一起开发一个项目时,Git能保证大家互不干扰。每个人都可以在自己的电脑上修改代码,最后还能把修改的部分高效地合并在一起,不用担心互相覆盖。

3. 版本追踪

Git会把每次修改的细节都记录下来,比如是谁改的、改了什么、为什么改。这样,团队成员可以清楚地了解项目的进展,有问题也能快速找到原因。

4. 分支管理

Git允许你创建独立的“小世界”(分支),比如开发新功能或者修复Bug。开发完后,可以轻松地把新功能或修复合并回主项目,不影响其他部分。

5. 还原与回溯

如果新代码出了问题,Git可以快速帮你回到之前的稳定版本,不用担心项目崩溃或者数据丢失。

简单来说,Git就像是一个超级好用的“代码管理助手”,帮你备份、协作、追踪、开发新功能和修复问题,让开发过程更顺畅、更安全。

操作步骤:

1. 更新系统并安装git

sudo apt update

sudo apt upgrade -y

sudo apt -y install git

2. 创建一个专门用来管理git的用户

sudo adduser git

sudo su - git

3. 创建Git仓库并初始化

mkdir -pv codebase

cd codebase/

git init --bare democodes.git

这时候,CM0上的democodes.git就是一个项目仓库了,我们就可以去别的电脑上来操作这个仓库了。

例如,我现在在windows上,已经安装了git软件,我通过打开gitbash

我需要配置一下用户名和邮箱,然后克隆那个CM0上的远程仓库。

git config --global user.name “codemonkey”

git config --global user.email “codemonkey@codemonkey.com

git clone git@192.168.3.64:codebase/democodes.git

它默认是空的我们创建分支然后提交看看效果。

git checkout --orphan feature1

可能有人会问git checkout --orphan feature1中的 --orphan 参数是不是必须加呢?

它不是必须的,但它有特定的用途。

1. --orphan 的作用

--orphan 参数用于创建一个全新的分支,这个分支没有任何父分支(即它是一个“孤儿分支”)。它的主要用途是:

创建一个全新的分支,不继承任何历史记录:当你需要从头开始开发一个全新的功能或重构项目,但又不想保留当前分支的历史记录时,--orphan 是非常有用的。

2. 不加 --orphan 的情况

如果你不加 --orphan,git checkout feature1的行为会根据当前仓库的状态有所不同:

如果 feature1已经存在:Git 会切换到这个已存在的分支。

如果 feature1不存在:Git 会尝试从当前分支创建一个新分支 feature1,并且这个新分支会继承当前分支的所有历史记录。

3. 总结

如果你希望创建一个全新的分支,且不继承任何历史记录,那么 --orphan 是必须的。

如果你只是想创建一个新分支并继承当前分支的历史记录,那么不需要加 --orphan。

创建一个代码和Readme.md文档并提交到工作区,然后再提交记录

git add README.md

git commit -asm “update readme”

通过日志可以看到log信息。

好了,推送到CM0服务器上看看?

git push origin HEAD:refs/for/feature1

这里稍微提示一下:

  • origin:远程仓库的名称。
  • HEAD:当前分支的最新提交。
  • refs/for/feature1:目标路径,告诉 Gerrit 将这个提交作为代码审查请求推送到 feature1 , refs/for/:这是 Gerrit 的特定语法,用于触发代码审查流程。如果没有 refs/for/,代码会直接推送到目标分支,而不会触发代码审查。

下面再弄个直接推送代码的:

随便创建一个代码:

git add .

git commit -asm “update test_camera.py”

git push origin feature1

这会直接将代码推送到远程仓库的 feature1,不会触发代码审查。

如果使用下面的方法,就会触发代码审查。

git push origin HEAD:refs/for/feature1

然后我们看看cm0这边发生了什么?

然后我们看看我们的git log

说明我们的代码已经传到cm0上了,从此,cm0 就是我们的github的替代产品哈哈。

我们删除原先的代码再clone一次看看效果。

git clone git@192.168.3.64:codebase/democodes.git

然后查看所有分支:

git branch -a

切换到feature1分支

git checkout feature1

git status

嗯,完美实现,你还愣着干嘛?夹菜啊~下单啊,没有CM0你怎么玩儿?

如需了解Raspberry Pi CM0的详细规格、配置选项、使用文档及技术支持,请咨询上海晶珩。

树莓派CM0及CM0 Dev Board(https://so.szlcsc.com/global.html?k=C51966415)已通过立创商城正式发售!

树莓派CM0 Dev Board 视频介绍:https://www.bilibili.com/video/BV1F3nXzEEcf/

树莓派CM0 Dev Board 官方网站:https://edatec.cn/zh/cm0

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
cm0+cm0-dev-board-datasheet-zh.pdf
3
2
cm0-dev-board-usermanual-zh.pdf
3
3
CM0 IO Rev1 SCH.pdf
3
4
CM0 IO Board PCB图.png
2
5
CM0-IO-Board-revision-1-KiCAD-files.zip
3
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航