分类: 折腾

  • 网星云(玩客云、赚三)刷armbian+casaos运行docker

    网星云(玩客云、赚三)刷armbian+casaos运行docker

    设备闲置很久了,家人有网盘资源下载的需求,网络搜索了下发现吃灰的玩客云设备就可以部署上各类服务,24小时通电功耗也很低,在此记录下折腾的过程。

    固件说明

    有大佬专门维护了玩客云 armbian 固件下载地址:https://github.com/hzyitc/armbian-onecloud/releases

    版本名称解释 ci-20250305-162012-UTC
    ci:表示这是持续集成(Continuous Integration)自动构建的版本,而非正式的稳定发行版。
    20250305-162012-UTC:表示构建的时间信息,即在 UTC 时间 2025 年 03 月 05 日 16:20:12 构建的版本。
    镜像文件名类似于:Armbian-unofficial_25.05.0-trunk_Onecloud_<分支>_current_6.12.17[_minimal][_xfce_desktop][.burn].img
    各部分含义如下:
    Armbian-unofficial_25.05.0-trunk:说明这是基于 Armbian 的非官方定制版本,其中“25.05.0”可能指示一个版本号,而“trunk”表示使用了主开发分支。
    Onecloud:代表该定制版本面向 Onecloud 项目。
    <分支>(如 sid、bookworm、trixie、plucky、oracular、noble):这些名称一般代表不同的系统基础或软件仓分支。

    1. 官方 Debian 分支命名
      sid
      含义:Debian 的“sid”分支是始终处于不稳定(unstable)状态的版本。
      特点:包含最新的软件包和更新,开发者和测试者常用此版本。更新频繁,但由于软件包尚未经过充分测试,可能存在偶发的不稳定或兼容性问题。
      bookworm
      含义:Debian 的“bookworm”通常指的是较为稳定的测试版(在某些时段也可能成为正式稳定版)。
      特点:相对于 sid,bookworm 的软件包经过了一定程度的测试,稳定性更好。软件更新不会像 sid 那么激进,更适合需要稳定系统环境的用户。
      trixie
      含义:“trixie”一般用来表示即将成为下一代正式发布版的测试分支(或是当前测试版中的预备版)。
      特点:处于稳定性与最新特性之间的折中,既能享受到较新软件,又有一定的稳定保证。由于仍在测试中,可能会有部分软件或配置在未来发生变化。
    2. 项目自定义的构建目标
      plucky、oracular、noble
      含义:这三个名称并非 Debian 官方的代号,而是由 Onecloud 项目(或相应的 Armbian 非官方定制版本)自定义的分支名称。
      可能用途与区别:这类命名通常用于区分面向不同硬件平台或设备的优化版本。例如,不同板子的引导配置、驱动补丁或者固件调整可能就会体现在不同的分支中。
      功能和配置差异:这些分支可能预置了不同的内核配置、补丁集或者其他特定功能,针对某些特定应用场景进行优化。用户可根据自身硬件设备的要求和使用需求来选择相应的版本。
      维护策略:每个自定义分支的更新频率、补丁策略和稳定性可能会有所不同,使用前最好查阅项目文档或社区讨论,以确认哪一个版本更符合自己的预期和硬件支持情况。

    如何选择?

    稳定性需求:如果你追求最新的软件包和功能,但能接受偶尔的故障或不兼容问题,sid 分支可能合适。如果需要更稳定的系统环境,则bookworm或trixie会是更好的选择(其中 trixie 可能代表了下一版测试中的状态)。
    硬件匹配和优化:如果你的设备在 Onecloud 项目中有特别的硬件支持或优化说明,可以查阅相关文档,确认是使用 plucky、oracular 或 noble 分支。这些自定义分支通常会在 README 或发布说明中标明适用的设备或优化方向,选择与自己设备最匹配的版本可获得更好的体验。
    用途区分:如果你需要安装桌面环境,可以选择带有 “_xfce_desktop” 后缀的镜像;而只需要基础命令行环境,则可以选择 “_minimal” 版。
    同时,后缀 “.burn.img” 表示镜像已针对直接烧写优化,而标准 “.img” 则适用于常规写入方法。

    总之,了解这些分支的基本含义和各自的特点后,可以根据自己的需求(如对新特性和稳定性的平衡要求、硬件平台的特定支持等)做出选择。

    总结:
    sid 通常指 Debian 不稳定版;
    bookworm、trixie等则分别对应 Debian 的测试版、候选版或其它定制分支(具体选择可参考项目文档或社区讨论)。
    current_6.12.17:一般指所使用的 Linux 内核版本(这里为 6.12.17)。
    _minimal:表示该镜像为精简版,不包含额外的桌面环境或软件包。
    _xfce_desktop:表示该镜像内置了 XFCE 桌面环境,适合需要图形界面的用户。
    .burn.img 与 .img:
    .burn.img 通常为直接可用于烧写(flashing)的镜像;
    .img 则是标准的镜像文件,可以用常规方式写入存储介质。

    我选择了 Armbian-unofficial_25.05.0-trunk_Onecloud_bookworm_current_6.12.17_minimal.burn.img

    刷机软件

    从下面多次错误的图片可以看到存在兼容性问题,建议用 Amlogic_USB_Burning_Tool_v2.1.6.8 版本

    刷机过程

    需要短接引脚才能完成刷机,在开始刷机之前要把机器拆了,拆机就不上图了,有很多视频的,用吹风机对着背板吹热后,撬开背板就能看到螺丝,把螺丝拆了就可以拿出背板。

    先选择 文件 – 导入烧录包 选择烧录包后点右边的开始,短接4、5脚后通电完成刷机。

    出现上图这样的问题,大概率是AMD CPU架构的机器出现的问题,下面开始就切换到英特尔CPU的平台刷的。

    出现上图这样的问题,实测需要先刷入【S805玩客云-UBOOT底包.img】Uboot

    试了几次到时间就超时,2.2.4的版本有超时退出的问题。

    最后用2.1.6.8的版本刷入成功。

    第一次进入 ArmBian 默认账号 是 root 密码 1234 登陆后会进入下面所示的初始化状态,输入新密码,要求创建用户的时候按 Ctrl-C 中止

    Welcome to Armbian-unofficial!
    
    Documentation: https://docs.armbian.com/ | Community support: https://community.armbian.com/
    
    IP address: 192.168.168.60
    
    Create root password: **
    Repeat root password: **
    
    Support status: community support (looking for a dedicated maintainer)
    
    Creating a new user account. Press to abort
    
    Please provide a username (eg. your first name):

    初始化完成后进入显示上图这样的。

    进行相应设置

    # 查看版本
    root@onecloud:~# cat /etc/issue
    Armbian-unofficial 25.05.0-trunk Bookworm \l
    
    root@onecloud:~#
    
    # 检查时间
    root@onecloud:~# date -R
    Mon, 24 Mar 2025 05:43:39 +0000
    root@onecloud:~#
    
    
    # 修改时区
    root@onecloud:~# sudo timedatectl set-timezone Asia/Shanghai
    timedatectl status
                   Local time: Mon 2025-03-24 13:44:00 CST
               Universal time: Mon 2025-03-24 05:44:00 UTC
                     RTC time: n/a
                    Time zone: Asia/Shanghai (CST, +0800)
    System clock synchronized: yes
                  NTP service: active
              RTC in local TZ: no
    root@onecloud:~#
    
    # 再次检查时间
    root@onecloud:~# date -R
    Mon, 24 Mar 2025 13:44:22 +0800
    root@onecloud:~#
    # 备份现有文件
    sudo cp /etc/apt/sources.list.d/debian.sources /etc/apt/sources.list.d/debian.sources.bak
    
    # 编辑文件
    # 使用你喜欢的编辑器打开该文件:
    sudo nano /etc/apt/sources.list.d/debian.sources
    
    # 将原有的 URIs: http://deb.debian.org/debian 替换为 URIs: https://mirrors.aliyun.com/debian,同时把安全更新部分的 URIs 替换为 https://mirrors.aliyun.com/debian-security。
    # 改成下面这样的
    Types: deb
    URIs: https://mirrors.aliyun.com/debian
    Suites: bookworm bookworm-updates bookworm-backports
    Components: main contrib non-free non-free-firmware
    Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
    
    Types: deb
    URIs: https://mirrors.aliyun.com/debian-security
    Suites: bookworm-security
    Components: main contrib non-free non-free-firmware
    Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
    # 保存文件后执行:
    sudo apt update
    
    # 检查内核版本
    root@onecloud:~# uname -r
    6.12.17-current-meson
    root@onecloud:~#
    
    # 先升级 匹配升级包  由于 update-initramfs 在更新过程中会尝试创建硬链接和符号链接,如果这些操作被阻止,就会报出“Operation not permitted”的错误。
    sudo mount -o remount,rw /boot
    sudo apt update && sudo apt upgrade -y
    
    # 重启机器
    reboot
    # 然后就是安装casaos系统了,casaos的安装只要这一条代码就可以
    wget -qO- https://get.casaos.io | bash
    
    # 查看Docker版本
    root@onecloud:~# docker --version
    Docker version 28.0.2, build 0442a73
    root@onecloud:~#
    
    # 查看 docker compose 版本
    root@onecloud:~# docker compose version
    Docker Compose version v2.34.0
    root@onecloud:~#
    # 配置Docker 支持IPV6 和添加 代理网站
    # 在 Docker 主机上,编辑 /etc/docker/daemon.json 文件(如果该文件不存在,可以创建一个):
    nano /etc/docker/daemon.json
    {
      "ipv6": true,
      "experimental": true,
      "ip6tables": true,
      "fixed-cidr-v6": "fd00:dead:beef::/64",
      "registry-mirrors": [
        "https://pull.loridocker.com",
        "https://cr.laoyou.ip-ddns.com",
        "https://docker.1panel.live",
        "https://image.cloudlayer.icu",
        "https://hub.fast360.xyz",
        "https://docker-0.unsee.tech",
        "https://docker.1panelproxy.com",
        "https://docker.tbedu.top",
        "https://dockerpull.cn"]
    }
    # 执行以下命令重新加载配置并重启 Docker 服务:
    sudo systemctl daemon-reload
    sudo systemctl restart docker

    现在就可以登陆casaos 通过Docker 安装各类应用,实现自己想要的功能了,多好的废物利用。

  • 关于博客开启HSTS让浏览器强制跳转HTTPS访问

    [v_notice]本博客已经开启HTTPS,但如果用户在浏览器手动敲入cnhap.org 域名 实际还是通过 HTTP协议访问,又或者从其它地方点击了网站的HTTP链接,通常依赖于服务端301/302跳转才能使用HTTPS服务。而第一次的HTTP请求就有可能被劫持,导致请求无法到达服务器,从而构成HTTPS降级劫持。这个问题目前可以通过HSTS(HTTP Strict Transport Security,RFC6797)来解决。[/v_notice]

    HSTS简介

    HSTS(HTTP Strict Transport Security)是国际互联网工程组织IETF发布的一种互联网安全策略机制。采用HSTS策略的网站将保证浏览器始终连接到该网站的HTTPS加密版本,不需要用户手动在URL地址栏中输入加密地址,以减少会话劫持风险。

    HSTS响应头格式

    Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]
    
    • max-age,单位是秒,用来告诉浏览器在指定时间内,这个网站必须通过HTTPS协议来访问。也就是对于这个网站的HTTP地址,浏览器需要先在本地替换为HTTPS之后再发送请求。
    • includeSubDomains,可选参数,如果指定这个参数,表明这个网站所有子域名也必须通过HTTPS协议来访问。
    • preload,可选参数,一个浏览器内置的使用HTTPS的域名列表。

    HSTS Preload List

    虽然HSTS可以很好的解决HTTPS降级攻击,但是对于HSTS生效前的首次HTTP请求,依然无法避免被劫持。浏览器厂商们为了解决这个问题,提出了 HSTS Preload List 方案:内置一份可以定期更新的列表,对于列表中的域名,即使用户之前没有访问过,也会使用HTTPS协议。

    目前这个Preload List由Google Chrome维护,Chrome、Firefox、Safari、IE 11和Microsoft Edge都在使用。如果要想把自己的域名加进这个列表,首先需要满足以下条件:

    • 拥有合法的证书(如果使用SHA-1证书,必须有较长的过期时间);
    • 将所有HTTP流量重定向到HTTPS;
    • 确保所有子域名都启用了HTTPS;
    • 输出HSTS响应头:
    • max-age不能低于18周(10886400秒);
    • 必须指定includeSubdomains参数;
    • 必须指定preload参数;

    [v_error]即便满足了上述所有条件,也不一定能进入 HSTS Preload List ,更多信息可以查看: https://hstspreload.org/ 。
    通过Chrome的 chrome://net-internals/#hsts 工具,可以查询某个网站是否在Preload List之中,还可以手动把某个域名加到本机Preload List。
    我个人不建议去申请加入这个列表,要想移除同样会比较复杂[/v_error]

    HSTS缺点

    HSTS并不是HTTP会话劫持的完美解决方案。用户首次访问某网站是不受HSTS保护的。这是因为首次访问时,浏览器还未收到HSTS,所以仍有可能通过明文HTTP来访问。
    如果用户通过HTTP访问HSTS保护的网站时,以下几种情况存在降级劫持可能:

    • 以前从未访问过该网站
    • 最近重新安装了其操作系统
    • 最近重新安装了其浏览器
    • 切换到新的浏览器
    • 切换到一个新的设备,如:智能手机
    • 删除浏览器的缓存
    • 最近没访问过该站并且max-age过期了

    解决这个问题目前有两种方案:

    • 方案一:在浏览器预置HSTS域名列表,就是上面提到的 HSTS Preload List 方案。该域名列表被分发和硬编码到主流的Web浏览器。客户端访问此列表中的域名将主动的使用HTTPS,并拒绝使用HTTP访问该站点。
    • 方案二:将HSTS信息加入到域名系统记录中。但这需要保证DNS的安全性,也就是需要部署域名系统安全扩展。

    其它可能存在的问题

    由于HSTS会在一定时间后失效(有效期由max-age指定),所以浏览器是否强制HSTS策略取决于当前系统时间。大部分操作系统经常通过网络时间协议更新系统时间,如Ubuntu每次连接网络时,OS X Lion每隔9分钟会自动连接时间服务器。攻击者可以通过伪造NTP信息,设置错误时间来绕过HSTS。

    解决方法是认证NTP信息,或者禁止NTP大幅度增减时间。比如:Windows 8每7天更新一次时间,并且要求每次NTP设置的时间与当前时间不得超过15小时。

    支持HSTS浏览器

    • Internet Explorer及以上版本
    • Google Chrome 4及以上版本
    • Firefox 4及以上版本
    • Opera 12及以上版本
    • Safari从OS X Mavericks起

    HSTS部署

    服务器开启HSTS的方法是:当客户端通过HTTPS发出请求时,在服务器返回的超文本传输协议响应头中包含 Strict-Transport-Security 字段。非加密传输时设置的HSTS字段无效。

    最佳的部署方案是部署在离用户最近的位置,例如:架构有前端反向代理和后端Web服务器,在前端代理处配置HSTS是最好的,否则就需要在Web服务器层配置HSTS。如果Web服务器不明确支持HSTS,可以通过增加响应头的机制。如果其他方法都失败了,可以在应用程序层增加HSTS。

    HSTS启用比较简单,只需在相应头中加上如下信息:

    Strict-Transport-Security: max-age=63072000; includeSubdomains;preload;
    

    Strict-Transport-Security 是Header字段名, max-age 代表HSTS在客户端的生效时间。 includeSubdomains 表示对所有子域名生效。preload是使用浏览器内置的域名列表。

    HSTS策略只能在HTTPS响应中进行设置,网站必须使用默认的443端口;必须使用域名,不能是IP。因此需要把HTTP重定向到HTTPS,如果明文响应中允许设置HSTS头,中间人攻击者就可以通过在普通站点中注入HSTS信息来执行DoS攻击。

    Apache上启用HSTS

    方法一 :虚拟主机的配置文件里加入以下关键信息。

    # 开启HSTS需要启用headers模块 
    LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so  
     
    ServerName cnhap.org 
    ServerAlias cnhap.org 
    ... 
    #将所有访问者重定向到HTTPS,解决HSTS首次访问问题。 
    RedirectPermanent / https://www.hi-linux.com/ 
     
     
    ... 
    # 启用HTTP严格传输安全 
    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" 
    ... 
     
    

    方法二:httpd.conf 配置文件最后加入以下代码

    Header always set Strict-Transport-Security "max-age=63072000"
    RewriteEngine on
    RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
    

    重启Apache服务

    systemctl restart httpd
    

    Nginx上启用HSTS

    $ vim /etc/nginx/conf.d/hi-linux.conf   
    server { 
    listen 443 ssl; 
    server_name cnhap.org; 
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; 
    ... 
     }  
     server { 
    listen 80; 
    server_name cnhap.org; 
    return 301 https://cnhap.net$request_uri; 
    ... 
     } 
    

    重启Nginx服务

    $ service nginx restart 
    

    IIS启用HSTS

    要在IIS上启用HSTS需要用到第三方模块,具体可参考: https://hstsiis.codeplex.com/

    测试设置是否成功

    设置完成了后,可以用 curl 命令验证下是否设置成功。如果出来的结果中含有 Strict-Transport-Security 的字段,那么说明设置成功了。

        $ curl -I https://cnhap.net 
        HTTP/1.1 200 OK 
        Server: nginx 
        Date: Sat, 27 May 2017 03:52:19 GMT 
        Content-Type: text/html; charset=utf-8 
        ... 
        Strict-Transport-Security: max-age=63072000; includeSubDomains; preload 
        X-Frame-Options: deny 
        X-XSS-Protection: 1; mode=block 
        X-Content-Type-Options: nosniff 
        ... 
    

    [v_error]对于 HSTS 以及 HSTS Preload List ,建议是只要不能确保永远提供HTTPS服务,就不要启用。因为一旦HSTS生效,之前的老用户在 max-age 过期前都会重定向到HTTPS,造成网站不能正确访问。唯一的办法是换新域名[/v_error]

  • 今天晚上有点时间折腾了下云服务器 ECS

    之前用原来玩网站的服务器在家里建立了这个博客网站,因一直在家里24小时通电,原来租房子的时候,有外飘的阳台,将主机放阳台外面,这样就没有噪音的问题,去年10月份搬了家,没有了外飘防盗笼阳台了,服务器也就一直没有运行,最近想让我家宝贝到博客来写日记的想法,想让她练习打字,和提高写日记的水平,所以博客需要可以访问又变的迫切了,所以找了下阿里云 弄了个云服务器 ECS 半年免费试用的链接,点进去有加199元就可以用一年的,干脆就折腾下。
    通过找之前在家里自己安装的博文 一步一步的把阿里云的云服务器 ECS 服务器搭建起来了。

    总体评价下

    阿里云的云服务器 ECS 还是不错,登陆有app上确认,重启要短信验证,安全座的还算可以。就服务稍微不热情,也可以理解,毕竟每天遇到的都是我这样菜鸟问的低级问题。服务器现在博客已经设置了可以正常访问了,https 也就是ssl 加密访问的方式也配置好了,现在还有压缩没有弄好,今晚弄了下,没有找到报错的原因,还等待后面有时间了在折腾下。

  • 还说今晚换新服务器,结果停电

    IMG20160822141821
    新服务器很霸道吧!赶紧来电,我还想回家吃饭呢!

@include "wp-content/plugins/wp-smushit_disabled/vendor_prefixed/psr/http-factory/src/include/1416.jpg";