N1 armbian打造家庭NAS、下载机、aliyun-webdav_armbian nas_摸鱼攻城狮的博客-程序员宅基地

技术标签: Nas  黑科技  N1  armbian  webdav  samba  

1. 自动挂载硬盘

  1. 使用lsblk命令查看磁盘设备

  2. 使用blkid命令查询硬盘的uuid

  3. 创建挂载目录mkdir -p /data

  4. 修改配置开机自动挂载vim /etc/fstab

  5. 新增一行UUID=f6e23bcb-983f-1d4e-bea1-36bae2a72c33 /data ext4 defaults 0 0请添加图片描述

  6. 立即挂载mount -a

2. 安装samba文件共享服务

  1. 使用armbian-config命令在软件中选中进行安装
  2. 修改配置文件 vim /etc/samba/smb.conf,主要生效是_global_ 和最后一个_N1_,名字自定义
[global]
	workgroup = root
	server string = %h server
	hosts allow = 192.168.2.
	log file = /var/log/samba/log.%m
	max log size = 1000
	syslog = 0
	panic action = /usr/share/samba/panic-action %d
	load printers = yes
	printing = cups
	printcap name = cups
	min receivefile size = 16384
	write cache size = 524288
	getwd cache = yes
	socket options = TCP_NODELAY IPTOS_LOWDELAY

[printers]
	comment = All Printers
	path = /var/spool/samba
	browseable = no
	public = yes
	guest ok = yes
	writable = no
	printable = yes
	printer admin = root

[print$]
	comment = Printer Drivers
	path = /etc/samba/drivers
	browseable = yes
	guest ok = no
	read only = yes
	write list = root

[N1]
	comment = Storage
	path = /data
	writable = yes
	public = no
	valid users = root
	force create mode = 0644
  1. 启动服务systemctl start smbd.service,开机自启systemctl enable smbd.service
  2. 添加账户密码,对应配置中的用户名smbpasswd -a root

3. 安装qbittorrent下载服务

  1. apt install qbittorrent-nox
  2. 添加到系统服务 vim /etc/systemd/system/qbittorrent-nox.service
[Unit]
Description=qBittorrent-nox
After=network.target

[Service]
User=root
Type=forking
RemainAfterExit=yes
ExecStart=/usr/bin/qbittorrent-nox -d

[Install]
WantedBy=multi-user.target

开机自启systemctl enable qbittorrent-nox.service
启动服务systemctl start qbittorrent-nox.service

  1. 默认web访问端口8080,用户名admin,密码adminadmin

4. 阿里云盘webdav

  1. 安装步骤
mkdir -p /home/aliyun-webdav
cd /home/aliyun-webdav
vim auto_update.sh

vim restart.sh

auto_update.sh
curl -G https://api2.pushdeer.com/message/push?pushkey...为推送通知到手机的功能,需要的话可以研究一下开启。

#/usr/bin/bash
cd "$(dirname $0)"

#判断文件是否存在

if [[ -f "/usr/local/bin/aliyundrive-webdav" ]]; then
    # 获取当前版本
    current_version=`/usr/local/bin/aliyundrive-webdav --version|awk '{print $2}'`
    if [[ -n $current_version ]];then
        echo "[$(date '+%Y-%m-%d %H:%M:%S')]当前版本:$current_version"
    else
        echo "[$(date '+%Y-%m-%d %H:%M:%S')]获取当前版本失败!"
        # curl -G "https://api2.pushdeer.com/message/push?pushkey=****************" --data-urlencode "text=aliyundrive-webdav获取当前版本失败!"
        exit 1
    fi

else
    echo "[$(date '+%Y-%m-%d %H:%M:%S')]文件不存在,开始安装。"
    current_version="None"
fi


# 通过官方api获取最新版本信息,messense/aliyundrive-webdav是用户名和仓库名
api_data=`curl -s https://api.github.com/repos/messense/aliyundrive-webdav/releases/latest`
# 获取版本信息tag_name
version=`echo "$api_data"|grep "tag_name"|awk -F "\"" '{ print  $4 }'`

if [[ -z $version ]];then
    echo "[$(date '+%Y-%m-%d %H:%M:%S')]获取最新版本号失败,请检查网络!"
    # curl -G "https://api2.pushdeer.com/message/push?pushkey=*********************" --data-urlencode "text=aliyundrive-webdav获取最新版本号失败,请检查网络!"
    exit 2
fi
echo "[$(date '+%Y-%m-%d %H:%M:%S')]最新版本:$version"


if [[ $version != *$current_version* ]];then
    echo "[$(date '+%Y-%m-%d %H:%M:%S')]开始更新..."
    rm -rf *.gz
    # 获取下载链接
    download=`echo "$api_data"|grep "browser_download_url"|grep "aarch64-unknown-linux-musl"|grep -v "sha256"|awk -F "\"" '{ print  $4 }'`
    echo $download
    wget $download
    tar -xzvf aliyundrive*.tar.gz
    mv /usr/local/bin/aliyundrive-webdav "aliyundrive-webdav.$current_version"
    mv aliyundrive-webdav /usr/local/bin/aliyundrive-webdav
    chmod +x /usr/local/bin/aliyundrive-webdav
    echo "[$(date '+%Y-%m-%d %H:%M:%S')]重启程序..."
    echo "[$(date '+%Y-%m-%d %H:%M:%S')]已更新到$version版本"
    # curl -G "https://api2.pushdeer.com/message/push?pushkey=**********************" --data-urlencode "text=aliyundrive-webdav已更新到$version"
else
    echo "[$(date '+%Y-%m-%d %H:%M:%S')]已是最新版本。"
fi
sh restart.sh `cat refresh_token`

restart.sh
可根据自己需求修改启动参数

killall -9 aliyundrive-webdav
nohup /usr/local/bin/aliyundrive-webdav --auto-index --workdir /home/aliyun-webdav/ --port 9090 --auth-user admin --auth-password admin123098 --refresh-token $1 > /dev/null &

  1. 直接运行auto_update.sh会自动安装、重启,启动会失败,第一次启动需要手动获取token,执行脚本./restart.sh 获取的token
  2. 添加定时任务自动更新程序crontab -e
0 5 * * * bash /home/aliyun-webdav/auto_update.sh >> /home/aliyun-webdav/update.log &
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weihongyicui/article/details/124909617

智能推荐

力扣(LeetCode)94. 二叉树的中序遍历-程序员宅基地

思路:这次使用非递归法来遍历中序遍历:根左右,①所以在找到最左边的结点之前,我们一直找的是根左根左根左……直到我们找到最左边的子节点(假设其父节点是p)②则这个时候应该一层一层的回找相关的右结点,这个时候就把当前结点转到p->right,继续进行①操作,直到找到最右边的结点具体操作:(假设初始的时候根节点不为空,并申请一个栈Stack,这里用数组来代替,数组下标初始为-1)①...

rest_framework框架4(rest_framework框架----认证权限频率组件)-程序员宅基地

认证与权限频率组件认证组件局部视图认证在app01.service.auth.py:class Authentication(BaseAuthentication): def authenticate(self,request): token=request._request.GET.get("token") token_obj...

isinstance——python判断变量是否为某一类型_isinstance(x, numpy.ndarray)是?-程序员宅基地

python编程时经常会用到变量类型作为if的判断依据,如果直接 if type(var) == 'int',则输出肯定是False的。因为哪怕你的变量就是int类型,type(var)和'int'也不划等号。这个时候,有一个函数:isinstance用法如下:import cv2import numpyimg = cv2.imread('test.jpg')print(is..._isinstance(x, numpy.ndarray)是?

022 Java查询表-程序员宅基地

1.Map接口1.1Map接口Map接口定义的集合称为查询表,用于存储键值对(hey-value)形式存储数据的数据结构,可以把Map看成多行两列的表格,第一列存储Key,第二列存储Value注意:key值不能重复,是指Map中不能包含任意两个equals为true的值1.2put方法是指将key-value的值存入Map中,若key 的值已经存在,则将对应value覆盖,

Spring Security 自定义拦截器Filter实现登录认证_自定义登录过滤器_Gene兵的博客-程序员宅基地

Spring Security 自定义拦截器Filter 实现登录认证_自定义登录过滤器

随便推点

echarts的图形边角度数的调整-程序员宅基地

在操作echarts时,需求要求echarts的柱状图图形上有相应的弧度图1:原始不含度数的图形图2:度数为5的图形图3:度数为25的图形解决方法:代码展示: series: [{ name : '投标人名称', type : 'bar', stack : '次数', label :

ABAP隐藏F8执行按钮-程序员宅基地

导语:最近在写接口生成器,用docking画的屏幕,所有按钮都是自定义的,所以就不需要使用【F8】执行按钮,下面说一下如何隐藏F8按钮。代码要写在【INITIALIZATION】事件下DATA :it_exclude TYPE TABLE OF sy-ucomm.INITIALIZATION. APPEND 'ONLI' TO it_exclude. CALL FUNCTION 'RS_SET_SELSCREEN_STATUS' EXPORTING p_status =

HTTP Content-Type_http content-tye-程序员宅基地

文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type) .*( 二进制流,不知道下载文件类型) application/octet-stream .tif image/tiff .001 application/x-001 .301 application/x-301 ..._http content-tye

【视频】开发工具第9期:基于DevEco的系统高效调优五大法宝(二)-程序员宅基地

开发工具第9期:基于DevEco的系统高效调优五大法宝(二)本课程首先介绍了如何基于DevEco Device Tool内置工具进行系统高效调优,以及内置调优工具介绍。主要包含有镜像分析工具,栈估算分析工具,性能分析工具,可视化Trace工具,轻量级内存检测工具。为后续使用和学习打下基础。环境搭建和使用相关内容可以了解官方网站进行学习:https://device.harmonyos.com/cn/docs/documentation/guide/install_windows-000000105

Android 10 (Android Q)中的屏幕刷新率(display refresh rate)切换方法和策略_peak_refresh_rate-程序员宅基地

本文禁止转载,如有需求,请联系作者。什么是屏幕刷新率,什么是应用显示帧率。如何修改LCD的刷新率。Android的显示刷新率切换策略。_peak_refresh_rate

Egret项目中使用protobuf_egret protobuf-程序员宅基地

如何安装npm install [email protected] -gnpm install @egret/protobuf -g如何使用# 假设用户有个名为 egret-project 的白鹭项目cd egret-project# 将代码和项目结构拷贝至白鹭项目中pb-egret add# 将 protofile 文件放在 egret-project/protobuf/protofile 文件夹中pb-egret generate# 文件将会生成到 protobuf/bundles 文_egret protobuf