Fork me on GitHub

外贸盒子HK1Box搭建简易NAS

HK1Box搭建简易NAS

0.换源

vi /etc/apt/sources.list

deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

1.ipv6 ssh

vim /etc/ssh/sshd_config
AddressFamily any #enable ipv6
netstat -tupln

2.开机挂载USB

lsblk -f
sudo vi /etc/fstab
UUID="BC82-24CB" /USB exfat errors=remount-ro 0 1

/sbin/fdisk -l |grep NTFS |awk "{print \$1F}" 

3.安装docker

#!/bin/bash
apt update && \
apt install -y docker-ce docker-ce-cli containerd.io

4.zerotier内网穿透

#!/bin/bash
curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/master/doc/contact%40zerotier.com.gpg' | gpg --import && \
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

curl -s https://install.zerotier.com | sudo bash
sudo systemctl enable zerotier-one.service
sudo systemctl start zerotier-one.service
sudo zerotier-cli join 17d709436c5bf4d9
sudo zerotier-cli status

5.aria2

sudo docker pull p3terx/aria2-pro
sudo docker pull p3terx/ariang
sudo rm /root/aria2 -rf
docker run -d --name idm --restart unless-stopped --log-opt max-size=1m -e PUID=$UID -e PGID=$GID -e UMASK_SET=022 -e RPC_SECRET=idm -e RPC_PORT=6800 -e LISTEN_PORT=6888 -p 16800:6800 -p 16888:6888 -p 16888:6888/udp -v /root/aria2/config:/config -v /USB:/downloads p3terx/aria2-pro
docker run -d --name idm_ui --log-opt max-size=1m --restart unless-stopped -p 888:6880 p3terx/ariang
docker start idm
docker start idm_ui

6.samba

sudo docker pull dperson/samba:latest
docker run -it --name samba  -p 445:445 -v /USB:/mount -d dperson/samba -u "yhu;root" -r -s "Downloads;/mount/;yes;no;no;all;user"
sudo docker start samba

7.filebrowser

sudo docker pull filebrowser/filebrowser:latest
docker run -d --name=filebrowser -v /USB:/srv -p 8888:80 filebrowser/filebrowser
sudo docker start filebrowser

8.***

sudo docker pull dreamacro/***:latest
docker run -d --name=*** -v "$PWD/config.yaml:/root/.config/***/config.yaml" -p "7890:7890" -p "9090:9090" --restart=unless-stopped dreamacro/***
sudo docker start ***

sudo docker pull haishanh/yacd:latest
docker run -p --name yacd 1234:80 -d --rm haishanh/yacd

9.webdav-aliyundriver

docker run -d --name=webdav-aliyundriver --restart=always -p 798:8080  -v /etc/localtime:/etc/localtime -v /etc/aliyun-driver/:/etc/aliyun-driver/ -e TZ="Asia/Shanghai" -e ALIYUNDRIVE_REFRESH_TOKEN="XXXXXXXXXX" -e ALIYUNDRIVE_AUTH_PASSWORD="admin888" -e JAVA_OPTS="-Xmx1g" zx5253/webdav-aliyundriver
apt-get install davfs2
mkdir /AliyunNAS
mount -t davfs 127.0.0.1:798/ /AliyunNAS

10. alinyun-DNS

#!/usr/bin/env bash

# Author: tyasky

ak="XXXXXXXXXXXXXXXXXXXX"
sk="XXXXXXXXXX"
host="test"
domain="xxx.com"

runnum=10              # 最多尝试更新次数
rungap=60              # 尝试间隔秒数
type=AAAA              # 解析记录类型
downvalue=""           # 解析值,留空则动态获取

cmdlist=(
  'ip -6 addr|grep global|head -5|awk -F/ "{print \$1}"|awk "{print \$NF}" |head -5  | tail -1'
)

# 第二个参数指定额外不编码的字符
# 笔记:[-_.~a-zA-Z0-9$2] 中的-字符用于表示区间,放到中间会出意外结果
urlencode() {
    local string="${1}"
    local strlen=${#string}
    local encoded=""
    local pos c o
    for pos in $(awk "BEGIN { for ( i=0; i<$strlen; i++ ) { print i; } }")
    do
        c=${string:$pos:1}
        case $c in
            [-_.~a-zA-Z0-9$2] ) o="${c}" ;;
            * ) o=`printf '%%%02X' "'$c"`
        esac
        encoded="$encoded$o"
    done
    echo "${encoded}"
}

send_request() {
    timestamp=`date -u +"%Y-%m-%dT%H:%M:%SZ"`
    # 服务器拒绝重放攻击(本次与前一次请求数据相同返回错误),SignatureNonce 需赋值随机数而不能是时间戳(可能同一秒两次请求)
    nonce=`openssl rand -base64 8 | md5sum | cut -c1-8`
    args="AccessKeyId=$ak&Format=json&SignatureMethod=HMAC-SHA1&SignatureNonce=$nonce&SignatureVersion=1.0&Timestamp=$timestamp&Version=2015-01-09&$1"
    # 签名要求参数按大小写敏感排序(sort 在本地语言环境可能会忽略大小写排序):LC_ALL=c sort
    args=`echo $args | sed 's/\&/\n/g' | LC_ALL=c sort | xargs | sed 's/ /\&/g'`
    CanonicalizedQueryString=$(urlencode $args "=&")
    StringToSign="GET&%2F&$(urlencode $CanonicalizedQueryString)"
    Signature=$(urlencode $(echo -n "$StringToSign" | openssl dgst -sha1 -hmac "$sk&" -binary | openssl base64))
    echo $(curl -k -s "https://alidns.aliyuncs.com/?$args&Signature=$Signature")
}

getValueFromJson() {
    local json="$1"
    local key="$2"
    echo $json | sed 's/":/:/g;s/"//g;s/,/\n/g' | grep $key | awk -F: '{ print $2 }'
}

DescribeSubDomainRecords() {
    send_request "Action=DescribeSubDomainRecords&SubDomain=$host.$domain&Type=$type"
}

UpdateDomainRecord() {
    local recordid=$(getValueFromJson `DescribeSubDomainRecords` "RecordId")
    send_request "Action=UpdateDomainRecord&RR=$host&RecordId=$recordid&Type=$type&Value=$downvalue"
}

AddDomainRecord() {
    send_request "Action=AddDomainRecord&DomainName=$domain&RR=$host&Type=$type&Value=$downvalue"
}

DeleteSubDomainRecords() {
    send_request "Action=DeleteSubDomainRecords&DomainName=$domain&RR=$host"
}

isCmdExist() {
    local ret=1
    if type $1 >/dev/null 2>&1;then
        ret=0
    fi
    return $ret
}

usage() {
    echo "Usage:"
    echo "-f file1  Read config from file1" 
    echo "-d test   DeleteSubDomainRecords of test.xx.com"
    echo "-h        Show usage"
    exit
}

set -- $(getopt -q hd:f: "$@")
while [ -n "$1" ]
do
    case "$1" in
        -h) usage;;
        -d) host=${2:1:!2-1};DeleteSubDomainRecords;exit;;
        -f) . ${2:1:!2-1};shift;;
        *);;
    esac
    shift
done

if [ "$type" = "AAAA" ];then
    iq=6
elif [ "$type" = "A" ];then
    iq=4
fi

if isCmdExist ipconfig;then
    get_downvalue() {
        local rst addr
        i=0
        while [ $i -lt ${#cmdlist[@]} ]
        do
            rst=$(eval ${cmdlist[i]})
            ipconfig | iconv -f gbk -t utf-8 | grep IPv$iq |grep ${rst} >/dev/null 2>&1
            if [ $? -eq 0 ];then
                addr=$rst
                break
            fi
            let i++
        done
        echo ${addr}
    }
elif isCmdExist ip;then
    get_downvalue() {
        local rst addr
        i=0
        while [ $i -lt ${#cmdlist[@]} ]
        do
            rst=$(eval ${cmdlist[i]})
            ip -$iq addr | grep ${rst} >/dev/null 2>&1
            if [ $? -eq 0 ];then
                addr=$rst
                break
            fi
            let i++
        done
        echo ${addr}
    }
fi

while [ $runnum -gt 0 ]
do
    runnum=$(expr $runnum - 1)
    datetime=$(date +%Y-%m-%d\ %T)
    echo 当前时间:$datetime

    rslt=`DescribeSubDomainRecords | grep TotalCount`
    if [ -z "$rslt" ];then
        echo "未获取到阿里云查询结果"
        sleep $rungap
        continue
    fi
    upvalue=$(getValueFromJson "$rslt" "Value")
    echo 域名指向:$upvalue

    downvalue=${downvalue:=`get_downvalue`}
    if [ -z "$downvalue" ]; then
        echo "未获取到本机地址"
        sleep $rungap
        continue
    fi
    echo 本机地址:$downvalue

    if [ "$upvalue" = "$downvalue" ]; then
        echo "已正确解析,无需更新。"
    elif [ -n "$upvalue" ]; then
        echo "更新解析记录..."
        UpdateDomainRecord
    else
        echo "添加解析记录..."
        AddDomainRecord
    fi
    break
done

11.gcc

docker pull gcc:latest

12.tools

Armbian_20.10_Aml-s9xxx_buster_5.4.108-flippy-56+o.img.xz
HK1 BOX 刷机工具包.rar
u219.HK1_BOX_1000M_9.0.2021.04.07.12.54.img
win32diskimager
posted @ 2022-05-03 22:31  yzhu798  阅读(2335)  评论(0)    收藏  举报