基于 halo 搭建你的个人网站

本贴最后更新于 1105 天前,其中的信息可能已经渤澥桑田

导读

咱们这些个从事技术的,年轻时大多数应该都有一个爱好,那就是装逼,比如说搭个专属网站,哪怕没有啥内容,也得把架子搭好,似乎不整个拥有自己域名的网站就总感觉差点意思,那今天小易趁着即将解封的高兴劲,带大家伙重温下咱们年轻时的装逼梦吧,哈哈。

给网站定个小目标

目标不要太宏伟,流行跟风就好了,也不怎么费脑,咱就先实现个博客性质网站,比如,小易呢,想做个家庭网络方面的经验分享型网站,设定一个网站名称为 易雾山庄,主题为 家庭基建,生活乐享,当然,小易不太讲究,想的比较粗俗些,各位不要想的和小易一样就好了。

美好的诉求

想必有些爱折腾的小伙伴,在刚开始的时候,热情似火,各种高端 cms,花样主题,别样的秀,热情褪去后,直接就回归静态博客了,大道至简。小易也曾走到了这一步,以为就这么滴吧,直到我遇到了 halo ,精简而不失优雅,加上有 joe 2.0 这样的主题,更是锦上添花,巧好就在最好时候满足小易内心深处的几个基础需求。

  • 首先,必须得美,美的最大功劳要依靠主题来支撑,所以主题库丰富,很关键
  • 博客具有评论功能,评论且为自己所控制,如数据存储于自己指定的服务器,具有审核权等
  • 支持 markdown ,高效简洁必选项
  • 开源,必要的时候,有定制的可行性
  • 功能丰富且可定制化强,比如哪天不想清高了,想扔个广告在上边,甚至直接贴个收款二维码啥的,你能先到的主流的,halo 基本能满足的
  • 支持友链,最近发现这玩意挺有意思的,一方面可以交友,一方面能达到推广的效果,吸引跟你相同嗜好的友友。
  • 具有加密访问属性,这个嘛,可以在不宜广泛对外开放的内容方面,能派上用场,比如你眼里就有俩臭钱儿,可以对有些内容进行加密,得付费了给访问密码,哈哈

网站搭建

天下武功,唯快不破,如何能少了 docker 呢,上菜

git clone https://github.com/evling2020/halo.git docker-compose up -d

注意: 基础依赖 docker 和 docker-compose ,确保已安装

至此,网站已搭建完成。顺便贴一个 nginx 参考配置

map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; server_name www.evling.tech; rewrite ^ https://$server_name$request_uri? permanent; # enforce https } server { listen 443 ssl; server_name www.evling.tech; #modsecurity on; #modsecurity_rules_file /etc/nginx/modsec/main.conf; # You can increase the limit if your need to. client_max_body_size 4096M; access_log /var/log/nginx/www.evling.tech_access.log log_json; error_log /var/log/nginx/www.evling.tech_error.log; # ssl on; ssl_certificate /etc/letsencrypt/certs/fullchain.pem; ssl_certificate_key /etc/letsencrypt/certs/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE location / { proxy_pass http://127.0.0.1:8090; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

还要记得在 /etc/nginx/nginx.conf 里定义一个日志格式变量 log_json

...... log_format log_json '{ "@timestamp": "$time_iso8601",' '"@source": "$server_addr",' '"hostname": "$hostname",' '"http_x_forwarded_for": "$http_x_forwarded_for", ' '"remote_addr": "$remote_addr", ' '"remote_user": "$remote_user", ' '"request_method": "$request_method",' '"scheme": "$scheme",' '"domain": "$server_name",' '"http_referer": "$http_referer", ' '"request_uri": "$request_uri", ' '"args": "$args",' '"body_bytes_sent": "$body_bytes_sent", ' '"status": " $status", ' '"http_user_agent": "$http_user_agent", ' '"https": "$https", ' '"time_local": "$time_local", ' '"request_time": "$request_time", ' '"upstream_response_time": "$upstream_response_time",' '"upstream_addr": "$upstream_addr",' '"trace_id": "$http_trace_id", ' '"span_id": "$http_span_id" ' '}'; ......

官方在线体验

环境地址:https://demo.halo.run
后台地址:https://demo.halo.run/admin
用户名:demo
密码:P@ssw0rd123..
使用前请阅读:https://demo.halo.run/archives/tips

网站美化

初始化
假设小易得测试地址是 10.70.1.3,首次访问 http://10.7.1.3:8090 ,会进入安装向导,这里选择全新安装,输入必要信息

image.png

点击安装,等待其完成,即可登录后台地址 http://10.70.1.3:8090/admin/ ,如下图所示

image.png

主题安装
选择 外观/主题 进入到主题页面

image.png

点击安装,选择远程下载主题 joe 2.0 ,你可以选择自己的喜欢,不一定非得这个,其远程 git 地址为
https://github.com/qinhua/halo-theme-joe2.0

image.png

如果要是访问 github 仓库不好使的话,想办法下载离线包也行,这是最新 zip 包地址:

主题配置
点击 Joe 2.0 主题的 启用 按钮,即可。进行基本设置

image.png

需要注意的是 AccessKey 是需要 halo 后台配置的,如下图位置进行配置方可生效。

image.png

侧边栏,展示公告和二维码启用,可以贴上自己的公众号,或者个人微信二维码,凭喜好贴个吧

image.png

可以尝试启用标签云

image.png

博主信息

image.png

社交

image.png

排版首页布局
关于页面示例

## 简介 易雾山庄记录了家庭网络基础建设的种种实践,可以帮助更多有需要的人减少折腾。希望通过这个平台构建一只家庭基建小社群,共同优化我们的生活体验,增强个人数据安全保护意识,同时我们还要考虑环保节能问题,实实在在帮大家伙组建属于自己的家庭网络。 ## 自封称号 低级网络玩家 ## 一句话给自己 依心而行,无憾今生。 ## 几句话送大家 你认为快乐的, 就去寻找; 你认为值得的, 就去守候; 你认为幸福的, 就去珍惜。 ## 与我相关 **Email:** evling2020@gmail.com **Phone:** +1 (929) 357-4155 **Github:** https://github.com/evling2020/ **链滴:** https://ld246.com/member/evling **csdn:** https://blog.csdn.net/evling2020 **知乎:** https://www.zhihu.com/people/evling2020 **微信公众号:** ![qrcodeforghf959fbb94792258.jpg](https://b3logfile.com/file/2020/10/qrcodeforghf959fbb94792258-2f0bd676.jpg)

留言页面,需要新建一个页面,页面别名为 leaving

image.png

代码具体内容如下

<div class="joe_leaving"> <ul class="joe_leaving-list"> <#-- <li class="item"> <div class="user"> <img class="avatar lazyload" data-src="" src="" alt="用户头像" /> <div class="nickname">Jhon</div> <div class="date">2021-09-22</div> </div> <div class="wrapper"> <div class="content">太牛了</div> </div> </li> --> </ul> <div class="joe_loading"> <svg width="120" height="30" viewBox="0 0 120 30" xmlns="http://www.w3.org/2000/svg" fill="var(--main)"> <circle cx="15" cy="15" r="15"> <animate attributeName="r" from="15" to="15" begin="0s" dur="0.8s" values="15;9;15" calcMode="linear" repeatCount="indefinite" /> <animate attributeName="fill-opacity" from="1" to="1" begin="0s" dur="0.8s" values="1;.5;1" calcMode="linear" repeatCount="indefinite" /> </circle> <circle cx="60" cy="15" r="9" fill-opacity="0.3"> <animate attributeName="r" from="9" to="9" begin="0s" dur="0.8s" values="9;15;9" calcMode="linear" repeatCount="indefinite" /> <animate attributeName="fill-opacity" from="0.5" to="0.5" begin="0s" dur="0.8s" values=".5;1;.5" calcMode="linear" repeatCount="indefinite" /> </circle> <circle cx="105" cy="15" r="15"> <animate attributeName="r" from="15" to="15" begin="0s" dur="0.8s" values="15;9;15" calcMode="linear" repeatCount="indefinite" /> <animate attributeName="fill-opacity" from="1" to="1" begin="0s" dur="0.8s" values="1;.5;1" calcMode="linear" repeatCount="indefinite" /> </circle> </svg> </div> <div class="joe_leaving-none">暂无留言,期待第一个脚印。</div> </div>

菜单布局示例

image.png

分类目录示例

image.png

成果展示

首页

image.png

留言板

image.png

日志

image.png

关于

image.png

结语

至此,本期内容结束,可以安心的开始你的网站内容之旅,记得,一定要用心才行。去实践,去优化。

  • 网站建设
    4 引用 • 6 回帖
  • 家庭基建
    4 引用 • 12 回帖
  • Halo
    3 引用 • 33 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    494 引用 • 928 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...