AIROBOT系统 之 私人存储 和 DLNA 智能电视云
需求背景
工作多年之后发现有太多的电子资料到处存放。个人电脑是Mac,硬盘都不大,放不了太多东西。并且有时候想随时随地存放一些东西。所有就有了大家一个私有存储的需求
个人休息在家经常喜欢看电影电视剧,所有就有个想法,上班空隙可以下载自己喜欢看的资源,然后晚上或者休息日可以直接在电视上看,这样就想到了通过DLNA服务来和私有云结合起来
效果图
私人存储
PC
手机端
DLNA智能电视
硬件准备
上图是我家的私人机房,是不是很牛逼。哈哈。我们整个系统都搭建在Mini PC(如果只是个人测试可以随便搞个虚拟机就行了)上,非常小。适合放在家里。本人在京东购买的,有需要的可以私聊具体信息。
硬件信息如下
操作系统:Ubuntu 18.04
硬件配置:8G内存 + 1T机械硬盘 + 4个CPU
环境:nginx + fpm
私人云:NextCloud
nextcloud简介
nextcloud 是一个php开发的软件,官网地址:https://nextcloud.com/ 。官网提供app方便移动上传。同时PC端提供了大量的插件方便扩展。
php源码下载地址:https://nextcloud.com/install/# ,下载server端的。
环境配置
#安装nginx
sudo apt-get install nginx #安装php-fpm 和 php 扩展。本人版本是7.2。
sudo apt-get install -y php7.2-fpm php7.2-mbstring php7.2-soap
php7.2-zip php7.2-xmlrpc php7.2-xml php7.2-readline php7.2-opcache
php7.2-mysql php7.2-json php7.2-gd php7.2-curl
php7.2-common php7.2-cli php7.2-cgi #安装数据库
sudo apt-get install mysql-server mysql-client
#nginx 虚拟主机的配置内容 upstream php-handler {
server 127.0.0.1:9001;
} server {
listen 80;
listen 10000;
server_name www.54php.cn;
root /data/xxxx/yyyy/nextcloud;
index index.php index.html;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none; location / {
rewrite ^ /index.php$uri;
} location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
} location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
} location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri/ =404;
index index.php;
} location ~ \.(?:css|js|woff|svg|gif)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=15778463";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
# Optional: Don't log access to assets
access_log off;
} location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
access_log off;
}
}
然后通过访问域名 第一次会 进入安装页面,大家填写具体信息就好了
配置文件优化
文件存储目录更改,默认存储在源码目录 data 目录。例如你的源码 /data/xxxx/yyyy/nextcloud 。
那么存储目录就是 /data/xxxx/yyyy/nextcloud/data。如下图
为什么要修改存储目录?
我认为不应该把存储的东西 和 源码 放在一起,因为源码部分可以被误删除,所以为了保证数据的安全要隔离所有私人云数据。
通过修改 config/config.php 中的 datadirectory ,例如我的就是
'datadirectory' => '/data/nextcloud_data',
大家注意这个 存放目录,接下来的DLNA 智能电视云就从这里来的。这样我就把存放的文件 和 php源码隔离开了。后面我做备份保证数据安全也好做了。
智能电视云:DLNA
智能电视
现在基本上家家都换上了智能电视,那么什么是智能电视?举个手机的例子,以前我前两个手机都是国产的普通手机,后来进入了智能手机时代。同理 电视也是一样,就是一个安装了操作系统的电视。可以理解为一个显示屏很大的电脑。
安装服务
sudo apt-get install minidlna
配置文件描述和优化
#文件路径 /etc/minidlna.conf
#port 服务端口,默认为8200
#media_dir 媒体目录可以设置多个,如:media_dir=V,/noah/videos(逗号前为类型标识:A音频,P图片,V视频)
#friendly_name 服务名称,在其它设备中看到的名称
#inotify 设置为true,将自动发现媒体目录中的新文件 #我的配置如下
port=8200
friendly_name=NasDLNA #认真看上面的截图,是不是就是显示的名称
inotify=yes
media_dir=V,/data/nextcloud_data/xxxxx/files/movie/bt
media_dir=V,/data/nextcloud_data/xxxxx/files/movie/大视频
重点讲解下 media_dir 和 port 。
port 配置的端口可以通过网页直接访问,会展示一些信息
media_dir 大家看到我配置的路径 是不是就是私人云存储文件的地方。下图是私有云截图
总结
根据上面的操作 ,本人将私人存储 和 智能电视云就都完成了。我就可以在公司,在外面 随时随地的存放东西到家里。家里来亲朋好友了,可以通过电视给大家播放一些视频和图片。
原文地址:AIROBOT系统 之 私人存储 和 DLNA 智能电视云
标签:cloud 私人云 nextcloud dlna 智能电视 airobot
智能推荐
AIROBOT系统 之 私人存储 和 DLNA 智能电视云的更多相关文章
- AIROBOT系统 之 踏浪而来
缘由 为什么要做AIROBOT?其实自从我知道智能家居这个领域之后,就一直想打造一个自己的智能家居控制平台,算是我的一个梦.最开始的项目还是在安居客当时工作的时候做的,项目地址:https://git ...
- AIROBOT系统 之 网络配置
需求背景 在上一个章节我们讲究了私有云的部署,但是会有一个问题,我如果在外面,如何访问家里电脑上部署的私有云服务?其实这个问题在扩大化说 就是 如何可以在家庭网络以外 可以访问到 家庭网络:公网 访问 ...
- 怎样通过 DLNA 将电脑上的媒体投射到智能电视上
DLNA 是一种网络设备间共享媒体的解决方案.从 Windows 7 开始就支持 DLNA,现在一些国产智能电视也已经支持 DLNA 了,这就为我们在电脑和电视之间方便地共享多媒体提供了条件. 工具/ ...
- 【开源项目】智能电视及电视盒子的控制应用TVRemoteIME的接口说明
一.APP项目介绍: APP名称:TVRemoteIME 功能说明:安卓智能电视或者安卓盒子的控制应用,可跨屏远程输入.远程遥控(代替遥控器)盒子.盒子应用及文件管理.HTTP/RTMP/MMS网络视 ...
- 远程控制你的智能电视,按键|输入|安装App等都已实现,已开源!
一.序 Hi,大家好,我是承香墨影! 智能电视或者智能盒子,不知道大家了解多少? 这两年各大厂商生产的电视设备,基本上都是搭载的 Android 系统.既然电视本身就是 Android 系统的,我们也 ...
- 安卓Tv开发(一)移动智能电视之焦点控制(触控事件)
前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验风格上有很大的区别,本系列博 ...
- 联发科发布全球首款搭载Android TV的智能电视系统芯片MT5595
联发科发布全球首款搭载Android TV的智能电视系统芯片MT5595 admin 资讯 01-07 1 1月7日消息,联发科宣布与Google共同开发出全世界第一个搭载Android TV操作系统 ...
- 智能电视TV开发---直播视频客户端结构设计和实现
在智能电视TV开发---客户端和服务器通信里面我们实现了客户端和服务端的简单通信,接下来我们做一个简单的客户端界面,来实现手机端来操控智能电视的TV端. 一.存储视频的结构设计 我们在做客户端的时候, ...
- 安卓Tv开发(二)移动智能电视之焦点控制(按键事件)
原文:http://blog.csdn.net/sk719887916/article/details/44781475 skay 前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家 ...
随机推荐
- Saltstack自动化操作记录(2)-配置使用
之前梳理了Saltstack自动化操作记录(1)-环境部署,下面说说saltstack配置及模块使用: 为了试验效果,再追加一台被控制端minion机器192.168.1.118需要在master控制 ...
- HDMI接口之HPD(热拔插)
HDMI (Pin 19)/DVI(Pin16)的功能是热插拔检测(HPD),这个信号将作为HDMI 源端(Source)是否发起EDID读,是否开始发送TMDS信号的依据.HPD是从HDMI显示器端 ...
- TCP-IP详解学习笔记2
TCP-IP详解学习笔记2 链路层 链路层的目的是为IP模块发送和接收IP数据报: TCP/IP支持多种不同的链路层,依赖于使用网络硬件类型:有线局域网(以太网,城域网(MAN),有线语音网络).无线 ...
- centos 搭建 leanote
centos 搭建leanote(蚂蚁笔记) 至于蚂蚁笔记是什么可以看官网的介绍,https://leanote.com/ ,我只能说 nice,你值得拥有. 开始搭建(源码安装,安装路径在 /et ...
- ROS-十步完成ROS-indigo安装
Ubuntu 版本是14.04.5.(这个版本的ubuntu的内核是V4.4的内核,长期维护到2019年,是14代比较稳定的,反正用这个安装就没有什么依赖的头疼的问题,安装ROS很方便,可以去清华的网 ...
- Java中输入判定的错误和纠正
在编程过程中,很多技术人员看重程序的简洁性,效率性和包容性.其中最容易问到的就是假如输入数据不符合要求时的程序处理,这也是很多公司的机试题中应聘人员写出了符合功能要求的程序却并未通过面试的原因.下面是 ...
- CentOS6配置Taiga
背景 企业项目管理是一个比较复杂的事情,这个市场需求非常大,目前市面上也存在着teambition,tower等平台,但是这些工具平台目前都是付费才能有完整的功能,免费版根本不能满足团队的需求.一番调 ...
- Windows Internals 笔记——CreateProcess
1.一个线程调用CreateProcess时,系统将创建一个进程内核对象,其初始使用计数为1.然后系统为新进程的主线程创建一个线程内核对象(使其计数为1). 2.CreateProcess在进程完全初 ...
- 修正锚点跳转位置 避免头部fixed固定部分遮挡
如下锚点标签: <div id="id1"> <span class="kkAnchor"></span> 正文正文正文正文 ...
- promise async
最简用 promise let res = function () { return new Promise((resolve, reject) => { // 返回一个promise set ...