家庭数据中心

私人数据越来越多(如照片),网盘越来越小,并且不是关闭就是被墙。决定搭建自己的家庭数据中心。 计划&预算 硬件:群晖218+(加一条8g内存),希捷酷狼4T*2,玩客云,希捷移动硬盘2T(玩客云用),4T(群晖用)各一个,小米盒子国际版,斐讯k2p路由器(刷官改rom) 预算:8k 目的:数据备份,家庭影视 其实黑群也可以,价格更便宜。最好4盘位,2盘位还是少了点。 家庭网络改造 通过 搬瓦工 安装ss,并在k2p设置ss服务和frp服务 可以无缝访问google 小米盒子(原生android tv)可以访问youtube 家庭网络设备可以通过frp对外访问 群晖外网访问 全球访问,frp速度更快,并且黑群也能用 quickconnect frp 数据备份(多种备份方式,稳如磐石) Drive 多平台同步数据 DS Photo、Moments 多平台同步照片 Cloud Sync 同步下载百度网盘资源 同步下载Dropbox资源 将照片同步上传一份至onedrive和腾讯云cos(免费额度50G),即使本地硬盘挂了,也有网络备份 Hyper Backup 定期将Drive数据和photo数据备份至移动硬盘。 快照 重要文件定期快照,随时恢复 家庭影视 玩客云负责下载电影(24小时下载电影) 手动通过smb将玩客云下载的电影移动到群晖的移动硬盘(群晖空间不大,只有4T,影视资源存至移动硬盘) 手机安装ds vedio、vlc;电视安装kodi、vlc; kodi通过局域网共享方式,可以将群晖的影视目录,照片目录,音乐目录,玩客云的影视目录加载进来,以后开机就可以直接看; 电视可以用VLC播放局域网视频资源 手机可以通过ds vedio直接看(外网也能访问),局域网可以vlc 家庭照片 手机可以用ds photo,Monents同步上传照片,也可以全球查看。 电视可以通过kodi查看 web station 部署web服务,默认安装的php缺少很多模块,基本上当作静态站点使用(静态blog可以使用hexo,也可以使用MWeb生成) Docker 服务扩展 迅雷远程下载 可以通过迅雷远程下载文件。 lnmp 可以部署运行php程序。 gogs 部署git服务,sqlite数据库,部署方便,占资源少。 Virtual Machine Manager 安装虚拟机,装了一个windows 2016,群晖需要8G内存以上才能安装。 ...

April 22, 2018 · 1 min · 78 words · jabin

在Coding部署Hexo

网上的Hexo教程大多是部署在Github,在实际的使用中,Github速度比较满,有时更新还会抽风一下,于是想在国内找个替代方案。 目前来说,Coding从体验和速度来说,都是国内比较好的选择,阿里云虽然也有代码库,但是刚开始起步,很多都还不完善,但是如果做下去,未来看好。 下面以Coding为例,说一下部署的步骤。 注册 这个就不多说了,常规按步骤注册即可。传送门 创建项目 我们要创建的是 用户Pages,项目名需要和用户名一样,这样我们就可以用{user_name}.coding.me 形式的 URL 直接访问,适合用作个人或组织的演示网站。 在新建项目里创建一个 coding-pages 分支,Coding默认是用 coding-pages 分支作为Pages的文件库。 开启项目的Pages服务。 Hexo配置 在Coding,我使用 coding-pages 分支发布Hexo,master 分支备份存储源文件。 备份Hexo我是用的插件是 hexo-git-backup 下面是我的配置文件,我是同时使用了Github和Coding服务,也可以只使用其中一个。 # 发布 deploy: - type: git repo: github: git@github.com:xuzhibin/xuzhibin.github.io.git,master coding: git@git.coding.net:xuzhibin/xuzhibin.git,coding-pages # 备份 backup: type: git repository: coding: git@git.coding.net:xuzhibin/xuzhibin-backup.git,master github: git@github.com:xuzhibin/hexo-blog-backup.git,master 发布 & 备份 发布 hexo d 备份 hexo b 预览 Github: xuzhibin.github.io Coding: xuzhibin.coding.me Coding注册链接 其他 域名绑定,在Coding的Pages标签页,是有域名绑定功能的,我目前的Hexo是用rsync方式发布在阿里云,所以没有具体测试。 Coding可以直接在仓库页打标签(Github没有这个功能),方便以后有需要时可以回滚。 Coding的Pages服务有几分钟的更新延迟。

June 1, 2016 · 1 min · 65 words · jabin

Hexo安装记

Hexo是啥 Hexo 是由 Node.js 驱动的一款快速、简单且功能强大的博客框架。可以快速将 Markdown 格式的文档生成静态页面。是越来越笨重的 Wordpress 和麻烦的空间管理的替代方案。 安装 Hexo 首先翻看一遍 Hexo 官方文档 环境准备 安装 Node.js & Git 该命令执行后,自动装好node和npm。 brew install node 配置 Git 按照Github提示,创建SSH秘钥: $ mkdir ~/.ssh #创建ssh命令 $ cd ~/.ssh $ ssh-keygen -t rsa -C "your_email@example.com" #注意更改Email地址 $ pbcopy < ~/.ssh/id_rsa.pub 此时,pdcopy命令已经将id_rsa.pub内容复制到剪切板。 登录 github:https://github.com/settings/ssh 点击Add an SSH Key,Title 部分填写一个所用电脑的名称,然后在Key部分填写之前通过pdcopy命令复制的内容。生成 key https://help.github.com/articles/generating-ssh-keys/ $ git config --global user.name "yourusername" $ git config --global user.email "youremail" 测试 可以输入下面的命令,看看设置是否成功,git@github.com的部分不要修改: $ ssh -T git@github.com 如果是下面的反馈: The authenticity of host 'github.com (207.97.227.239)' can't be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)? 不要紧张,输入yes就好,然后会看到: ...

May 30, 2016 · 5 min · 896 words · jabin

npm小结

随着一系列基于nodes的应用/工具的出现,无论在node应用的开发,还是使用中,包管理都扮演着一个很重要的作用。NPM(node package manager),作为node的包管理工具,极大地便利了我们的开发工作,很有必要了解一下。 NPM是什么 NPM(node package manager),通常称为node包管理器。顾名思义,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。 npm的背后,是基于couchdb的一个数据库,详细记录了每个包的信息,包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加专注于功能的开发。 npm官网:https://npmjs.org/ npm官方文档:https://npmjs.org/doc/README.html 我们需要了解什么 npm的安装、卸载、升级、配置 npm的使用:package的安装、卸载、升级、查看、搜索、发布 npm包的安装模式:本地 vs 全局 package.json:包描述信息 package版本:常见版本声明形式 npm的安装 Mac 该命令执行后,自动装好node和npm。 brew install node npm包安装模式 在具体介绍npm包的管理之前,我们首先得来了解一下npm包的两种安装模式。 本地安装 vs 全局安装(重要) node包的安装分两种:本地安装、全局安装。两者的区别如下,后面会通过简单例子说明 本地安装:package会被下载到当前所在目录,也只能在当前目录下使用。 全局安装:package会被下载到到特定的系统目录下,安装的package能够在所有目录下使用。 npm install pkg – 本地安装 运行如下命令,就会在当前目录下安装grunt-cli(grunt命令行工具) npm install grunt-cli 安装结束后,当前目录下回多出一个node_modules目录,grunt-cli就安装在里面。同时注意控制台输出的信息: grunt-cli@0.1.9 node_modules/grunt-cli ├── resolve@0.3.1 ├── nopt@1.0.10 (abbrev@1.0.4) └── findup-sync@0.1.2 (lodash@1.0.1, glob@3.1.21) 简单说明一下: grunt-cli@0.1.9:当前安装的package为grunt-cli,版本为0.19 node_modules/grunt-cli:安装目录 resolve@0.3.1:依赖的包有resolve、nopt、findup-sync,它们各自的版本、依赖在后面的括号里列出来 npm install -g pkg- 全局安装 上面已经安装了grunt-cli,然后你跑到其他目录下面运行如下命令 grunt 果断提示你grunt命令不存在,为什么呢?因为上面只是进行了本地安装,grunt命令只能在对应安装目录下使用。 -bash: grunt: command not found 如果为了使用grunt命令,每到一个目录下都得重新安装一次,那不抓狂才怪。肿么办呢? 很简单,采用全局安装就行了,很简单,加上参数-g就可以了 npm install -g grunt-cli 于是,在所有目录下都可以无压力使用grunt命令了。这个时候,你会注意到控制台输入的信息有点不同。主要的区别在于安装目录,现在变成了/usr/local/lib/node_modules/grunt-cli,/usr/local/lib/node_modules/也就是之前所说的全局安装目录啦。 ...

May 29, 2016 · 2 min · 410 words · jabin

Git 常用命令速查表

配置 $ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com 创建版本库 $ git clone [url] #克隆远程版本库 $ git clone git://github.com/schacon/grit.git $ git clone git://github.com/schacon/grit.git mygrit $ git clone --bare my_project my_project.git #创建纯仓库 $ git init #初始化本地版本库 $ git init --bare #创建纯仓库 修改和提交 $ git status #查看状态 $ git diff #查看变更内容 $ git diff --cached #查看已经暂存起来的文件和上次提交时的快照之间的差异 $ git diff master...contrib #特性分支contrib和它同master分支的共同祖先之间的差异(合并时实际将要引入的新代码) $ git add . #跟踪所有改动过的文件 $ git add [file] #跟踪指定的文件 $ git mv [old] [new] #文件改名 $ git rm [file] #删除文件 $ git rm --cached [file] #停止跟踪文件但不删除 $ git commit -m "commit message" #提交所有更新过的文件 $ git commit --amend #修改最后一次提交 $ git commit -a -m 'added new benchmarks' #跳过暂存区域直接提交 查看提交历史 $ git log #查看提交历史 $ git log --pretty=oneline $ git log -p [file] #查看指定文件的提交历史 $ git log master..experiemnt #所有可从experiment分支中获得而不能从master分支中获得的提交 $ git blame [file] #以列表方式查看指定文件的提交历史 $ git log origin/featureA ^featureA #比较origin/featureA及featureA分支,查看origin/featureA更新了哪些内容 撤消 $ git reset --hard HEAD #撤消工作目录中所有未提交文件的修改内容 $ git reset --hard [commit] #会退到某个[commit] $ git reset HEAD [file] #取消已经暂存的文件 $ git checkout HEAD [file] #撤消指定的未提交文件的修改内容[已暂存] $ git checkout -- benchmarks.rb #取消对文件的修改[未暂存] $ git revert [commit] #撤消指定的提交 分支与标签 $ git branch #显示所有本地分支 $ git checkout [branch/tag] #切换到指定分支或标签 $ git checkout -b featureB origin/master #从分支origin/master克隆并创建分支featureB,切换至featureB $ git branch [new-branch] #创建新分支 $ git branch sc/ruby_client master #从master分支克隆一个sc/ruby_client分支 $ git branch -d [branch] #删除本地分支 $ git branch --merged #查看哪些分支已被并入当前分支 $ git branch --no-merged #查看哪些分支未被并入当前分支 $ git tag #列出所有本地标签 $ git tag [tagname] #基于最新提交创建标签 $ git tag -d [tagname] #删除标签 合并与衍合 $ git merge [branch] #合并指定分支到当前分支 $ git rebase [branch] #衍合指定分支到当前分支 远程操作 $ git remote -v #查看远程版本库信息 $ git remote show [remote] #查看指定远程版本库信息 $ git remote add [remote] [url] #添加远程版本库 $ git remote rename [old-remote-name] [new-remote-name] #远程仓库的重命名 $ git remote rm [remote] #远程仓库的删除 $ git fetch [remote] #从远程库获取代码 $ git pull [remote] [branch] #下载代码及快速合并至当前分支 $ git push [remote] [branch] #上传代码及快速合并 $ git push origin featureB[本地分支]:featureBee[远程分支] #推送本地分支至指定的远程分支 $ git push [remote] :[branch/tag-name] #删除远程分支或标签 $ git push --tags #上传所有标签 其他 $ git describe master #生成内部版本号 $ git archive master --prefix='project/' | gzip > 'git describe master'.tar.gz #打包成tar $ git archive master --prefix='project/' --format=zip > 'git describe master'.zip #打包成zip $ git stash #储藏 $ git stash list #查看储藏列表 $ git stash apply stash@2 #应用名为stash@2 的储藏。如果你不指明,Git 默认使用最近的储藏并尝试应用它 $ git stash drop stash@{0} #移除名为stash@{0}的储藏 $ git blame -L 12,22 simplegit.rb #文件标注 Git文件 .gitattributes #属性文件 ...

November 7, 2013 · 2 min · 402 words · jabin