『香橙派』基于Orange Pi AIpro打造高效个人云存储解决方案

读完这篇文章里你能收获到
- 了解Orange Pi AIpro硬件优势,为构建高效云存储基础设施的理想平台。
- 学会使用Orange Pi AIpro硬件平台,搭载Ubuntu Server系统,打造云存储环境。
- 掌握利用Kodbox软件,享受文件管理、多格式预览及编辑的全方位云服务体验。
- 一键部署Kodbox,实现服务容器化,提升系统稳定性和安全性。
- 通过花生壳内网穿透,无论身处何地,都能轻松访问家中搭建的私有云盘。

文章目录
- 一、引言
- 1.1 整体技术架构概览
- 1.2 Orange Pi AIpro简介
- 1.2.1 昇腾AI技术
- 1.2.2 高性能硬件配置
- 1.2.3 海量数据存储空间
- 1.3 Kodbox简介
- 1.3.1 核心功能
- 1.3.2 协作与分享
- 二、准备工作
- 2.1 Orange Pi AIpro开箱与基础设置
- 2.2 在Orange Pi AIpro上安装Ubuntu
- 2.3 确保本地网络能联网
- 三、Kodbox部署实战
- 3.1 更新必要软件包
- 3.2 Docker环境安装
- 3.3 环境文件准备
- 3.4 容器编排脚本编写
- 3.5 启动服务
- 四、玩转个人云盘
- 4.1 系统登陆
- 4.2 桌面管理
- 4.3 文件管理
- 4.3.2 视频播放
- 4.3.1 外链分享
- 4.4 后台管理
- 五、内网穿透实战
- 5.1 安装工具包
- 5.2 安装花生壳phddns
- 5.3 通过SN码登陆
- 5.4 创建内网穿透映射
- 5.5 通过外网访问
- 六、总结
- 6.1 开发者的友好性
- 6.2 应用场景的广泛性
- 6.3 操作与体验

一、引言
在数字化时代,个人数据的存储与管理成为了日常生活的关键一环。随着高清照片、视频文件的增多以及远程办公的普及,对可靠、便捷的个人云存储需求日益增长。面对市面上高昂的商业云存储服务费用,以及对数据隐私的担忧,越来越多的用户开始探索自建个人云存储的可能性。本项目旨在利用Orange Pi AIpro的强大硬件能力,结合Kodbox的成熟软件框架,打造出一个既安全又高效的个人网盘系统。
1.1 整体技术架构概览
| 资源 | 组件 | 功能 |
|---|---|---|
| 硬件平台 | Orange Pi AIpro | 利用其内置的昇腾AI技术、高性能硬件配置(8GB至16GB LPDDR4X内存、M.2接口支持等),为个人云存储提供物理基础 |
| 操作系统 | Ubuntu | 文中提到使用此操作系统作为基础软件环境,通过MicroSD卡安装,配置网络与系统基础设定 |
| 容器技术 | Docker | 用于轻量级、可移植的软件打包方案,以及Docker Compose,用于定义和运行多容器的分布式应用 |
| 云存储应用 | Kodbox | 这是一个开源的私有云存储软件,提供文件管理、多终端同步、在线预览编辑、项目协作、文件分享等功能,强调数据隐私和自定义能力 |
| 数据库 | MariaDB | 作为Kodbox后端数据存储的核心,通过Docker容器部署,配置了数据持久化、安全性和自动升级策略。 |
| 网络穿透工具 | 花生壳Phddns | 用于实现内网穿透,使得外部网络可以访问到内部部署的服务,通过简单的SN码登录和配置即可创建外网访问映射 |

1.2 Orange Pi AIpro简介
1.2.1 昇腾AI技术
Orange Pi AIpro,作为业界首款基于昇腾深度研发的AI开发板,集创新设计、卓越性能与全面技术支持于一体,树立了AI开发领域的全新标杆。这款开发板深度融合昇腾AI技术,搭载高效能图形处理器,并配备8GB至16GB LPDDR4X内存,外加灵活的32GB至256GB eMMC扩展选项,展现了其强大的数据处理与存储能力。凭借8/20 TOPS的强大AI运算能力,Orange Pi AIpro轻松应对各类复杂计算需求。

1.2.2 高性能硬件配置
在物理接口配置上,Orange Pi AIpro展现出前所未有的灵活性与扩展潜力。它不仅拥有双路4K高清视频输出能力,还配备了多样化的端口:双HDMI接口、GPIO接口、Type-C供电接口、支持SATA/NVMe SSD的M.2插槽、TF卡插槽、千兆以太网接口、双USB 3.0、USB Type-C 3.0、Micro USB接口,以及专为摄像头和显示屏设计的MIPI接口,还预留了电池连接口,极大地方便了开发者进行多样化项目部署。

1.2.3 海量数据存储空间
Orange Pi AIpro更进一步集成了先进的M.2接口,全面支持SATA及NVMe协议的SSD 2280规格固态硬盘,这一设计极大地拓宽了存储解决方案的可能性。通过接入高速SSD,用户不仅能够享受到TB级的海量数据存储空间,还确保了数据的快速读写访问能力,这对于需要处理大规模数据集的云计算应用、边缘计算场景及高清多媒体内容创作而言,无疑是至关重要的加速器。它不仅提升了系统响应速度,也优Q化了大数据处理和存储效率,从而将Orange Pi AIpro塑造成为构建高效云存储基础设施的理想平台。

1.3 Kodbox简介
Kodbox,作为一个成熟且开源的私有云存储解决方案,提供了文件管理、多终端同步、在线预览与编辑等一系列功能,旨在帮助用户轻松建立自己的私有云存储服务。它不仅支持高度自定义,还强调数据隐私保护,让用户的数据掌握在自己手中,而非第三方云服务商。对于追求数据自主控制权和灵活性的技术爱好者而言,可道云无疑是构建个人网盘的优选工具。
1.3.1 核心功能
- 文件操作:支持新建、删除、复制、移动、粘贴和上传下载等操作,与本地文件管理无异。
- 快捷键支持:用户可以根据需要自定义文件排序、视图和分类等快捷键设置。
- 多格式预览:支持数百种常见格式的文档预览,包括图片、音乐、视频、Office文档、PDF、OFD、XPS、PhotoShop、Illustrator文件等,无需下载或安装额外软件。

1.3.2 协作与分享
- 项目协作:快速发起项目协作,向系统内成员或部门分配不同权限。
- 文档讨论:基于文件或文件夹发起交流讨论,提高协作效率。
- 文件动态:提供文档所有事件流的记录,清晰展示文档生命周期。
- 历史版本:自动生成文件的历史版本,并支持预览回溯和备注。


二、准备工作
2.1 Orange Pi AIpro开箱与基础设置
在正式开始之前,首先需要对Orange Pi AIpro进行开箱检查,确保所有配件齐全,包括主板、电源适配器、MicroSD卡、HDMI线(如果计划连接显示器)、USB键盘和鼠标等。

接下来,遵循以下步骤进行基础设置:
- MicroSD卡准备:使用SD卡读卡器,将Ubuntu镜像写入MicroSD卡中。推荐使用官方工具完成镜像烧录过程,以确保操作的简便性。
- 连接硬件:将MicroSD卡插入Orange Pi AIpro的相应插槽,连接电源适配器、HDMI线(如果需要直接查看启动过程),以及USB键盘和鼠标。
- 首次启动:按下电源键启动设备,如果连接了显示器,你将看到Ubuntu的安装界面或直接进入系统(取决于你的SD卡是否已预装系统并设置了自动启动),由于我拿到的板子已经烧录好了系统,因此直接上电即自动开机。

2.2 在Orange Pi AIpro上安装Ubuntu
默认登陆密码:Mind@123
若SD卡未预装系统,你需要通过显示器和键盘执行Ubuntu的安装程序。按照屏幕提示,选择语言、设置网络、分配硬盘空间、设置用户名和密码等步骤完成安装。
2.3 确保本地网络能联网
- 连接wifi,点击右上角的wifi按钮,选择wifi并输入密码

- 测试网络连接:使用ping命令测试与外部网络的连通性,如
ping baidu.com,确保网络配置正确无误。


三、Kodbox部署实战
Kodbox开源地址:https://github.com/kalcaddle/kodbox
3.1 更新必要软件包
首先,更新系统软件包列表和系统内核,以获取最新的安全更新和补丁:
sudo apt update
sudo apt upgrade -y
3.2 Docker环境安装
- 安装并启动docker服务, 新版本docker会自动安装
docker-compose-plugin
sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyunsudo systemctl enable docker sudo systemctl start docker
提示:
若docker compose命令不存在,可手动安装二进制文件docker-compose并在后续命令中替换。
- curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
- chmod +x /usr/local/bin/docker-compose
3.3 环境文件准备
注意:首先创建一个目录作为项目目录,后面所有命令都在这个目录下执行
- 需在
db.env中设置数据库密码,还有yml中的MYSQL_ROOT_PASSWORD需补充.
sudo mkdir -p /data/kodbox
cd /data/kodbox
- 创建文件来设置数据库环境变量
sudo vim db.env
MYSQL_PASSWORD=kodbox123456
MYSQL_DATABASE=kodbox
MYSQL_USER=kodbox
3.4 容器编排脚本编写
创建docker-compose.yml 文件,在其中配置映射端口、持久化目录
sudo vim docker-compose.yml
version: '3.5'services:db:image: mariadb:10.6restart: alwayscommand: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROWvolumes:- "./db:/var/lib/mysql" #./db是数据库持久化目录,可以修改# - "./etc/mysql/conf.d:/etc/mysql/conf.d" #增加自定义mysql配置environment:- MYSQL_ROOT_PASSWORD=kodbox123456- MARIADB_AUTO_UPGRADE=1- MARIADB_DISABLE_UPGRADE_BACKUP=1env_file:- db.envapp:image: kodcloud/kodboxrestart: alwaysports:- 9980:80 #左边9980是使用端口,可以修改volumes:- "./site:/var/www/html" #./site是站点目录位置,可以修改environment:- MYSQL_HOST=db- REDIS_HOST=redisenv_file:- db.envdepends_on:- db- redisredis:image: redis:alpinerestart: always
3.5 启动服务
进入项目目录,执行docker compose up -d启动命令,会自动拉取容器并运行
sudo docker compose up -d


四、玩转个人云盘
4.1 系统登陆
- 登陆地址:ip:9980
- 可开放多个登陆账号,设置不同的角色权限


4.2 桌面管理
- 点击右边侧边栏的“桌面”进入

4.3 文件管理
- 支持托拉直接上传文件
- 支持多格式的文件在线预览编辑


4.3.2 视频播放

4.3.1 外链分享

4.4 后台管理



五、内网穿透实战
5.1 安装工具包
sudo -s
apt install net-tools wget
5.2 安装花生壳phddns
- 下载地址:https://hsk.oray.com/download
- 配置教程:https://service.oray.com/question/11630.html
- 选择Rasberry PI 64位的,该平台兼容Orange PI
# 1. 下载包
wget "https://dl.oray.com/hsk/linux/phddns_5.1.0_rapi_aarch64.deb" -O phddns_5.1.0_rapi_aarch64.deb# 2. 运行
phddns_5.1.0_rapi_aarch64.deb


5.3 通过SN码登陆
- 香橙派中的花生壳安装完成后,先复制生成的SN码。然后在浏览器中访问远程管理地址http://b.oray.com ,在登录页面中输入SN码与默认密码(admin)登录。
- 账号密码->SN码登陆

5.4 创建内网穿透映射
注意:网站应用映射HTTP需付费6元
- 添加内网穿透映射时,点击页面上的“增加映射”按钮,随后选择网页应用。

- 选择HTTP,填写内网主机,内网端口

5.5 通过外网访问
- 通过该地址即可在外网访问运行在Orange Pi AIpro的Kodbox私有网盘了


六、总结
使用Orange Pi AIpro开发板搭建个人云存储系统后,我对这款开发板有了更为深刻的理解。Orange Pi AIpro不仅仅是一款硬件产品,将高性能硬件与软件创新巧妙融合,满足了现代个人和家庭对数据存储日益增长的需求。在体验过程中,我深刻感受到它在以下几方面的优势:
6.1 开发者的友好性
Orange Pi AIpro的高性能硬件配置,特别是其对eMMC模块的支持和M.2 SSD扩展性,大大简化了存储空间的扩展过程。这对于开发者而言,意味着可以根据实际需求灵活调整存储规模,无需受限于固定的硬件限制,开发自由度大幅提升。
6.2 应用场景的广泛性
无论是个人媒体库的建立、家庭相册备份,还是远程工作文档的同步存储,Orange Pi AIpro均能游刃有余。其双HDMI接口和丰富的GPIO、USB接口,为多媒体中心搭建、智能家庭系统集成提供了便利,展现了其在多样化场景中的应用潜力。
6.3 操作与体验
从开箱到基础设置,再到Kodbox的部署,每一步都设计得相当人性化。尽管涉及较多的命令行操作,但详细的指南使得整个过程变得不那么生硬,反而像是一次对Linux系统管理的深度探索。
相关文章:
『香橙派』基于Orange Pi AIpro打造高效个人云存储解决方案
读完这篇文章里你能收获到 了解Orange Pi AIpro硬件优势,为构建高效云存储基础设施的理想平台。学会使用Orange Pi AIpro硬件平台,搭载Ubuntu Server系统,打造云存储环境。掌握利用Kodbox软件,享受文件管理、多格式预览及编辑的全…...
Sylvester矩阵、子结式、辗转相除法的三者关系(第二部分)
【三者的关系】 首先,辗转相除法可以通过Sylvester矩阵进行,过程如下(以 m 8 、 l 7 m 8、l 7 m8、l7为例子)。 首先调整矩阵中 a a a系数到最后面几行,如下所示: S ( a 8 a 7 a 6 a 5 a 4 a 3 a 2 …...
PyTorch的数据处理
💥今天看一下 PyTorch数据通常的处理方法~ 一般我们会将dataset用来封装自己的数据集,dataloader用于读取数据 Dataset格式说明 💬dataset定义了这个数据集的总长度,以及会返回哪些参数,模板: from tor…...
第14章-蓝牙遥控小车 手把手做蓝牙APP遥控小车 蓝牙串口通讯讲解
本文讲解手机蓝牙如何遥控小车,如何编写串口通信指令 第14章-手机遥控功能 我们要实现蓝牙遥控功能,蓝牙遥控功能要使用:1.单片机的串口、2.蓝牙通信模块 所以我们先调试好:单片机的串口->蓝牙模块->接到一起联调 14.1-电脑控制小车 完成功能…...
【补充1】字节对齐
文章目录 1.字节对齐的基本概念2.字节对齐规则3.实践出真知(加大难度)4 位域 1.字节对齐的基本概念 (1)现代计算机中内存空间都是按照byte划分的, 从理论上讲似乎对任何类型的变量的访问可以从任何地址开始࿰…...
Java数据库连接(JDBC)
一、引言 在Java应用程序中,经常需要与数据库进行交互以存储、检索和处理数据。Java数据库连接(JDBC)是Java平台中用于执行这一任务的标准API。JDBC允许Java程序连接到关系数据库,并使用SQL语句来执行查询和更新操作。本教程将详…...
记录一次cas单点登录的集成
主要思路:浏览器访问CAS服务器登录,拿到凭证给后端,后端用此凭证到CAS服务器验证登录并拿到用户信息,之后基于该凭证维持用户的登录状态。 主要流程: 1.浏览器访问后端需认证登录地址(不带ticket…...
【吊打面试官系列】Java高并发篇 - 什么是乐观锁和悲观锁?
大家好,我是锋哥。今天分享关于 【什么是乐观锁和悲观锁?】面试题,希望对大家有帮助; 什么是乐观锁和悲观锁? 1、乐观锁: 就像它的名字一样,对于并发间操作产生的线程安全问题持乐观状态, 乐观锁认为竞争…...
机器学习之词袋模型
目录 1 词袋模型基本概念 2 词袋模型的表示方法 2.1 三大方法 1 独热表示法(One-Hot) 2 词频表示法(Term Frequency, TF) 3 词频-逆文档频率表示法(TF-IDF) 2.2 例子 1 词袋模型基本概念 词袋模型&a…...
【C++/STL】vector(常见接口、模拟实现、迭代器失效)
🌈个人主页:秦jh_-CSDN博客🔥 系列专栏: https://blog.csdn.net/qinjh_/category_12575764.html?spm1001.2014.3001.5482 目录 简单使用 常见接口 find insert vector模板 模拟实现 尾插 构造 迭代器失效 使用memcpy拷贝问…...
Spring Boot Web 开发:MyBatis、数据库连接池、环境配置与 Lombok 全面解析
推荐一个AI网站,免费使用豆包AI模型,快去白嫖👉海鲸AI 1.0 MyBatis 概述 MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 可以帮助我们将数据库操作抽象出来,使得我们的代码更加简洁…...
【UE5.1 多线程 异步】“Async Blueprints Extension”插件使用记录
目录 一、异步生成Actor示例 二、异步计算示例 参考视频 首先需要在商城中下载“Async Blueprints Extension”插件 一、异步生成Actor示例 2. 创建一个线程类,这里要指定父类为“LongAsyncTask”、“InfiniteAsyncTask”、“ShortAsyncTask”中的一个 在线程类…...
【已解决】在jupyter里运行torch.cuda.is_available(),显示True,在pycharm中运行却显示false。
文章目录 问题概述1、在Jupyter中GPU运行true2、在pycharm中GPU运行false3、个人解决方案仅供参考 问题概述 在jupyter里运行torch.cuda.is_available(),显示True,在pycharm中运行却显示false。原因在于jupyter 运行环境和pycharm 运行环境不同…...
Flutter 中的 Scrollbar 小部件:全面指南
Flutter 中的 Scrollbar 小部件:全面指南 在Flutter中,滚动条(Scrollbar)是一种常见的UI组件,用于提供对滚动内容的快速访问和控制。Scrollbar 小部件可以附加到任何可滚动的widget上,如ListView、GridVie…...
【华为】将eNSP导入CRT,并解决不能敲Tab问题
华为】将eNSP导入CRT,并解决不能敲Tab问题 eNSP导入CRT打开eNSP,新建一个拓扑右键启动查看串口号关联CRT成功界面 SecureCRT连接华为模拟器ensp,Tab键不能补全问题选择Options(选项)-- Global Options (全局选项&#…...
实验二 电子传输系统安全-进展2
上周任务完成情况(代码链接,所写文档等) 重新调通电子公文传输系统部署gmssl学习生成SM2证书学习gmssl中的CTLS实现将数据库从SqlServer迁移到Mysql调试Mysql驱动学习Bouncy Castle 代码链接 Mysql表设计 /* Navicat MySQL Data Transfer…...
JavaScript 获取 HTML 中特定父元素下的子元素
JavaScript 获取 HTML 中特定父元素下的子元素 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>查找子元素示例</title> </head> <body><div id"parent"><p&…...
等保服务是一次性服务吗?为什么?怎么理解?
我国等保政策已经严格落地执行,但还有不少企业对于等保服务不是很了解。例如有人问,等保服务是一次性服务吗?为什么?怎么理解?今天我们就来简单回答一下,仅供参考哈! 等保服务是一次性服务吗&…...
全网首发UNIAPP功能多的iapp后台源码
全网首发UNIAPP功能多的iapp后台源码,众所周知UN Dev Assist 后台是一款既不免费又不好用的后台今天直接分享。 搭建教程在里面了,自己查看。 源码下载:https://download.csdn.net/download/m0_66047725/89291994 更多资源下载:…...
【搜索方法推荐】高效信息检索方法和实用网站推荐
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
