基于 halo 搭建你的个人网站

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

导读

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

给网站定个小目标

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

美好的诉求

想必有些爱折腾的小伙伴,在刚开始的时候,热情似火,各种高端 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 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    491 引用 • 917 回帖

相关帖子

欢迎来到这里!

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

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