记录一下这几个月搭建的过程,以备未来需要时回看。

〇、

私人云盘、私人影院就是某某网盘的本地版,把本地的存储空间暴露给公网,使得任何能上网的设备都可以自由的获取该资源。然后再加一个前端管理界面,附带文件管理,视频切片播放,图片浏览,生成文件缩略图,pdf查看,word、ppt、excel在线编辑等功能。不仅包含目前市面网盘的一切功能,甚至还有超出他们的功能。

目前私有云盘的应用大多开源,如nextcloud,seafile等。国内国外有数十款相关的应用,如kodcloud等。其主要收入来源于企业的私有定制,对于个人开发者当然是尽可能的免费。私人云盘的应用本质上就是提供一个文件管理前端,后端的文件传输主要依靠各大web服务器如nginx,apache等。因此,本地私有网盘既不提供存储,也不提供带宽,性能自然比不上主流的网络云盘。当然,主流的网络云盘如百度云,阿里云,google drive,onedrive等,即提供存储,又提供带宽,自然质量、费用更高。

一、搭建过程

由于一般的nas性能不如win系统,wls又占用内存、cpu,自然想到用win端直接部署服务器。

现在有很多服务器环境管理软件,如宝塔面板,xx面板,可以直接接管服务器的运维管理。win端也有很多管理软件,比较好用的是phpstudy,中文名小皮面板小皮面板(phpstudy) - 让天下没有难配的服务器环境!

安装常用的后端软件,如mysql,nginx,php,redis,apache即可。

然后就是部署私有云盘,这里选择了kodcloud和h5ai,可道云是国内一家做的非常不错的私有云盘,功能非常多,支持很多文件的在线预览(甚至包含工程建模软件)。h5ai是一个多媒体播放器,主要用来预览图片和视频。h5ai有一个国人的修改版,可以支持hls切片播放+dplayer,直接秒杀xx云盘的在线播放功能,拖到哪都是秒播,不管你是4k还是8k的视频,只要把它切片成10s以内的几百kb片段,就算是2G网络也能看4k。。。甚至可以1s一个切片,只要不嫌文件数量多。

1. kodcloud部署

参考教程,可道云团队 - Powered by kodbox

(官方demo可道云-kodbox - Powered by kodbox)

下载服务端文件,并下载windows端客户端软件

​​​​​​下载 - 可道云-私有云存储&协同办公平台_企业网盘_企业云盘_网盘_云盘

解压到某目录,设置小皮面板路径

打开localhost:port,port就是设置的端口号。

然后进行相关设置。

上传下载优化

可道云KODExplorer-OpenAPI及开发文档_企业网盘_企业云盘_私有云_云盘_网盘

kodbox 可道云上传大文件(超过4G的)_可道云上传大文件失败_zhangbest5的博客-CSDN博客

封面生成 高级教程

其他相关功能安装相应插件。

最终效果

2. h5ai服务器部署

h5ai服务器是一个多媒体服务器,可以播放本地的图片、视频。光有这些功能实在是太简陋了,而且h5原生的video标签性能极其拉胯。好几年前有一个国人对h5ai进行了修改,添加了dplayer插件和hls流媒体功能,播放视频的性能大大提升。(dplayer也是一个国人开发的非常厉害的播放器插件)

H5AI 部署、配置与美化 - Cyrus's Blog

路径设置:

public/js/scripts.js 文件定制

该文件是h5ai的后端代码打包编译生成的,国人的h5ai改编版本就是给h5ai添加了hls插件,然后修改了该文件的部分逻辑。如果要定制相关的播放逻辑,则需要修改以下部分。(在文件中搜索关键词filename即可定位这段代码)

return new Promise(function(t) {var fileurl = e.absHref;console.log(fileurl);var filepath = fileurl.slice(0,fileurl.lastIndexOf('/'));var filename = fileurl.slice(fileurl.lastIndexOf('/')+1);var filenotype = fileurl.slice(fileurl.lastIndexOf('/')+1,fileurl.lastIndexOf('.'));var m3u8 = filepath+"/.contents"+'/__'+filename+'__/video.m3u8';var sub = filepath+'/'+filenotype+'.vtt';function loadXMLDoc() {var xmlhttp = new XMLHttpRequest();xmlhttp.onreadystatechange = function() {if (xmlhttp.readyState == 4) {if (xmlhttp.status == 200) {loadPlayer(m3u8);console.log('m3u8 yes');} else if (xmlhttp.status == 404) {console.log('m3u8 no');loadPlayer(fileurl);} else {console.log('other');}}}xmlhttp.open("GET", m3u8, true);xmlhttp.send();}

这段代码的功能就是,对于某目录下的filename文件,当他是mp4文件或者mkv文件时,点击播放的时候,首先播放./.contents/__filename__/video.m3u8视频文件,这是一种流媒体格式,播放的是视频文件的某段切片。如果该路径不存在,那就播放原视频。

如果要修改这段逻辑,那就修改上面这段代码即可。

给视频文件切片的sh程序:(windows端安装git后使用命令sh xx.sh可以运行shell文件)

#!/bin/bashBASEDIR="."function hlsfile(){file="$1"suffix="${file##*.}"filename="${file##*/}"curdir="${file%/*}"file_name_without_suffix="${filename%.*}"if [[ "${file##*.}" == "mp4" || "${file##*.}" == "mkv" ]]; thenm3u8dir="${curdir}/.contents/__${filename}__"if [[ ! -d "${m3u8dir}" && ! -f "${file}.aria2" ]]; thenmkdir -p "${m3u8dir}"ffmpeg -i "${file}" -c copy -bsf:v h264_mp4toannexb -hls_time 6 -hls_list_size 0 -hls_segment_filename "${m3u8dir}/%04d.ts" "${m3u8dir}/video.m3u8" > /dev/null 2>&1echo "${file}"# echo "${suffix}"# echo "${filename}"# echo "${curdir}"# echo "${file_name_without_suffix}"# echo " "# echo 'Rikka' > "${file}"# 截取原视频开头最长30s,并保留原视频的修改日期file30="${curdir}/_30s_${file_name_without_suffix}.${suffix}"file30temp="${curdir}/temp/_30s_${file_name_without_suffix}.${suffix}"if [[ ! -e "$file30" && "${filename:0:5}" != "_30s_" ]]; thenffmpeg -ss 0:00 -i "${file}" -t 30 -c:v copy -c:a copy "${file30}" > /dev/null 2>&1touch -amcr "${file}" "${file30}" mv -f "${file30}" "${file}"# touch -amcr "${file30temp}" "${file}"# rm -rf "${curdir}/temp"fi# 截取30s功能结束fi      fi
}function scandir(){for dirfile in "$1"/*doif [[ -d "${dirfile}" && "${dirfile:0-5}" != "_h5ai" && "${dirfile:0-2}" != "__" ]]; thenscandir "${dirfile}"elsehlsfile "${dirfile}"fidone
}
scandir "${BASEDIR}"echo "hls finish"

文件介绍

需要提前安装ffmpeg软件,并设置环境变量。

在某一路径下新建hls.sh文件,粘贴上述内容,然后powershell执行sh hls.sh后,执行视频切片功能。从当前目录开始,递归扫描所有的子目录,把所有存在的mp4文件和mkv文件切片,切片文件在当前目录的.contents文件夹里的同名文件夹下。

原文件会截取开头最长30s的部分,用于生成缩略图。截取功能是我自己添加的,原服务器附带的shell文件是没有这个功能的。这样会导致所有的视频都占用两份空间。当然,如果不需要这个功能,就把shell文件中的截取30s部分注释掉,然后在相应的目录执行shell文件即可。

执行效果:

切片文件是切成了12s一个片段,如果想要修改切片的参数,只需修改hls.sh中的代码

ffmpeg -i "${file}" -c copy -bsf:v h264_mp4toannexb -hls_time 6 -hls_list_size 0 -hls_segment_filename "${m3u8dir}/%04d.ts" "${m3u8dir}/video.m3u8" > /dev/null 2>&1

相关参数自行百度

3. win服务端设备获取公网ip并设置ddns

这个可以参考之前我写的博客,威海校区内的校园网,windows设备均可以获取ipv6的公网IP,linux端无法获取,需要安装某些软件。安卓端流量可以获取ipv6地址,root以后安装某些软件可以从校园网获取ipv6地址。苹果端手机使用流量无法获取ipv6地址,校园网也不行。mac使用校园网可以获取ipv6地址。

然后在win端本地写一个ddns脚本,设置定期运行,在阿里云几块钱买一个域名解析到本地即可。实现暴露到公网。

最终就可以通过域名访问本地的私有云盘了。

我的私有云盘域名是v6.zsq1.xyz:8080,有兴趣的可以使用能获取ipv6的设备访问这个域名,申请注册账号体验。

win11+kodcloud、h5ai+phpstudy+ipv6搭建私人云盘、私人影院相关推荐

  1. 搭建属于自己的私人云盘影音服务器(二)

    立场申明:仅供学习交流,不提倡使用非官方正版. 什么是nas? Nas 是Network Area Storage 三个英文单词的缩写,以字义上来解释,叫做「网路储存空间」,它就是一个让大家可以透过网 ...

  2. 树莓派64位系统_树莓派4b+Ubuntu server+Nextcloud搭建私人云盘(1):准备系统

    最近剁手买了一个4G版本的树莓派4b,并配了64g tf卡.我打算用它来搭建一个自己的私人服务器. 需求:树莓派4b+一部本地电脑+网线+路由器+一部有公网ip的云主机 首先,我们先到官方下载Ubun ...

  3. (Linux)私人云盘seafile搭建详解

    前言 随着时代的发展,我们的生活正越来越贴近互联网.我们会把自己创造出的数据上传到网络上,也会将网络上我们感兴趣的数据下载到我们的存储设备上.新媒体的发展,更是使得每分钟都会有大量依托于网络的作品被创 ...

  4. 百度云网速慢?普通VIP也限速?用户激励措施太套路?Pandownload被举报?这些统统没关系,我们自己搭建一个私人云盘服务器

    前言 前几天醒来后,照例耍手机看新闻.在疫情如此严重的档口,一则小小的新闻引起了我内心小小的波动:Pandownload作者被举报了....心里第一件事就是可惜了我盘上的那N多个T的小电影了,&quo ...

  5. 使用 Nextcloud 搭建私人云盘,并利用内网穿透实现公网远程访问

    文章目录 一.前言 二.环境搭建 三.测试局域网访问 四.执行内网穿透 4.1 ubuntu 本地安装 cpolar 4.2 创建隧道 4.3 测试公网访问 五.配置固定 http 公网地址 5.1 ...

  6. 在VMware Workstation软件内,使用CentOS 7系统搭建私人云盘owncloud

    在VMware Workstation软件内,使用CentOS 7系统搭建私人云盘owncloud 参考链接:私人云盘owncloud安装过程详解 1.关闭防火墙.SELINUX安全模式 system ...

  7. 搭建nextcloud私人云盘

    搭建nextcloud私人云盘 1. Linux发行版本 本人的设备是OragePi4,安装的是基于debian的Armbian Buster Server,树莓派,云主机等可以安装对应的版本. 2. ...

  8. linux免费私人云盘软件,私人云盘搭建教程 如何自己搭建云盘

    私人云盘搭建教程使用的是Linux的CentOS 6系统,首先登录ssh安装宝塔,根据购买的账号密码登录ssh. 然后安装宝塔面板,宝塔面板类似于虚拟主机,直接绑定域名上传就可以使用了.好处在于一个服 ...

  9. 闲置硬盘自制nas私有云_家里闲置硬盘怎么办?教你自己搭建一个私人云盘!

    原标题:家里闲置硬盘怎么办?教你自己搭建一个私人云盘! 最近在家比较闲,把家里之前电脑硬盘升级到固态硬盘的那个500G的机械硬盘翻出来,看看如何利用起来,在家里放着也是浪费.因为有好多个人资源需要,但 ...

最新文章

  1. page event
  2. java 自定义异常 未回滚_抛出自定义异常,spring AOP事务不回滚的解决方案
  3. git切换到旧版本_github上怎么切换到某次提交?
  4. Altiris 7.1 安装
  5. 《能源专业的展望及其未来择业方向的分析》
  6. 罗马数字转整数Python解法
  7. 比较完整的URL验证
  8. php -- PDO异常处理
  9. mysql5.7.11升级_MySQL升级从5.6.18到5.7.11
  10. php文字游戏寻仙记,【寻仙记H5】Win服务端+小白架设教程+文字游戏+小仙亲测
  11. [hgo学习]-tutorial 03
  12. 预编译stdafx.h,无法找到文件问题,红色波浪线
  13. 计算机自动设置开机,怎么设置电脑自动开机
  14. Rplidar A2 屏蔽固定角度
  15. CAD插件的安装和自动加载dll、arx
  16. 计算机x线成像检查,计算机X线成像(X光机成像)简述
  17. Redis Operator学习笔记
  18. 中国各大银行卡号查询
  19. Linux的基础知识(2)-权限命令
  20. 教育类电影:《爆裂鼓手》

热门文章

  1. JAVA名片注册_JavaWeb练习-网上名片管理系统
  2. 网页安全证书错误但无法安装证书的解决办法
  3. 咸鱼前端—CSS字体外观
  4. 已解决org.springframework.beans.factory.UnsatisfiedDependencyException异常的正确解决方法,亲测有效!!!
  5. 【openpyxl】过滤和排序
  6. 多元函数带 Peano余项的Taylor公式的推广 (原创)
  7. python竖着展示诗_竖着写诗的格式
  8. jquery保留两位小数方法,字符串保留两位小数
  9. 如何在不同的窗口中打开多个Excel
  10. 学计算机应用专业去当兵有前途么,大学生以哪个专业入伍,发展潜力大?