Quantcast
Channel: 懒得折腾
Viewing all articles
Browse latest Browse all 764

基于Ngrok端口转发实现storjshare和siacoin farming

$
0
0

基于Ngrok端口转发实现storjshare和siacoin farming(上)

WHY?

在我们进行Siacoin、storj和burst的Hosting(或者叫HDD farming)时,都会遇到需要端口转发的问题,原因要么缺乏公网ip,要么所谓公网ip还是个大局域网,解决方法有:

  1. 让电信等服务商调整为真实的公网ip,进行路由器的端口转发,然后申请一个域名,实时绑定公网ip到DNS,比如No-ip;
  2. 进行内网穿透。

准备

服务器域名,阿里云需要在安全组策略开放端口4000-4002和9981-9982VULTR主机商相对便宜,可以使用支付宝,按小时计费并且可以摧毁服务器以更换ip,支持快照,可以很快完成服务器更换;软件需求:putty和SecureFXPortable。

ngrok

什么是ngrok?ngrok通过安全隧道暴露本地服务器(如你自己的电脑或内网服务器,处于NAT环境和防火墙内)至公共网络。网上教程很多(比如Sunny ngrok教程并不能成功,他应该是使用的github上面一个项目,叫做Lanproxy,https://github.com/ffay/lanproxy),大多没有附带依赖包,对于没有linux经验的朋友基本难以实现,但此处给出的都是具有依赖包,按顺序安装能够实现,CENTOS6、7,Ubuntu16.04、17.10和树莓派Jessie,服务端和客户端都已经测试,没有问题。

  • 添加域名解析,需要设置ngrok服务的域名和子域名都要添加解析,例如设置后面的ngrok.yourdomain.com,那么ngrok和*.ngrok的解析均需要添加A记录:
  • 根据自己主机平台下载对应的go安装包,使用putty登录后:
  • 配置go环境变量:
  • 下载ngrok源代码:
  • 这里说明一下自定义密钥的原因,文档中说明ngrok only makes TLS-encrypted connections,客户端的合法连接依靠证书体系来确定,可以认为服务端和客户端的二进制文件是一一对应的,不过服务端在运行时可以指定证书(server.crt)和私钥(server.key),如果不指定将会使用编译时的证书和私钥(位于assets/server),而rootCA.pem(根证书)编译进客户端是不能与我们的域名完成匹配的,所以我们继续有(下面代码,只用把ngrok.yourdomain.com替换成你自己的域名就可以了):

 

  • 此处该进行编译了,直接编译会报错,我们先执行一下,看看报什么错:
  • 上述问题是由于进行无法交叉编译,需要去掉$GOBIN的变量声明,解决方法如下:
  • 好了,开始进行服务端编译:
  • 编译客户端:
  • 全部编译完成,再在服务器内输入(端口可以根据需要任意修改,但是tunnelAddr 17543端口,客户端和服务端要保持一致):
  • 在使用SecureFXPortable登陆我们的主机,在文件夹ngrok/bin中,可以下载到对应用于运行storjshare和siacoin的服务器、树莓派或电脑的ngrok,下载后,在我们运行storjshare和siacoin的机器上,ngrok所在文件夹,还需要一个ngrok.conf文件,storjshare默认端口4000-4002,siacoin是9981-9982(不要开放9980,如果开放端口9980,其他节点可以偷取你的siacoin):
  • windows下使用.bat启动ngrok(ngrok.exe -config=ngrok.conf start-all),使用软件SecureFXPortable传输到非windows系统一定使用二进制方式传输ngrok程序,linux命令为(注意ngrok路径对不对):
  • 正常情况,应该呈现:

转载请注明出处,源自密币之家

基于Ngrok端口转发实现storjshare farming和siacoin farming(下)

前序

  1. 比较siacoin(sc)和storjshare(storj),密币之家曾经认为,具有自有区块链的sc会远胜于使用ERC20的storj,然而目前看来,这一切变得更微妙;
    SC优点
    对于存储空间需求方是几乎没有什么费用的,相当便宜的单价,需求方可以很容易在sc自有区块链找到持续时间26周、50sc/TB或者更便宜的合约;
    SC致命弱点
    对于存储空间需求方来说,最头疼的是同步日益扩大的钱包区块链数据,目前已经超过8个GB,这是个弊病,需求方本是属于自有存储空间很少,还让需求方首先同步几个GB的数据,并且这会越来越大;
    此外,对于存储空间提供商,不仅需要付出购买机器的成本、网费和2000sc的抵押金(collateral),提供商目前还不能获得任何来自合约的收益;
    同时密币之家也注意到,storj在discord上的社区用户活跃度日益减少,sc团队将大量时间用于矿机预售,并且传言说好赠送给购买矿机的用户的T-shirt也没有发货,整个矿机官网除了一种神秘感之外没有任何技术公开,密币之家发现其重大的一次更新仅仅是在原有矿机图片上Photoshop上去一些散热孔;
    sc钱包由于仅仅支持64位系统,对32位系统或ARM架构的IoT设备的支持力度不够;
    损耗,sc的区块链日益不断出现新的区块,自然会不断的周期性读取和写入数据,移动硬盘不到半年基本会罢工,机械硬盘不是红盘,损耗也会很大,这一点可以通过长期I/O读写日志数据来获得证实;
    关于SC在线存储空间提供商也近乎半年多没有任何增长,数据是通过Siahub进行统计,用户可以自行观察,当你的存储提供平台正常上线后,siahub都会显示你所提供的空间信息;
    最后,没有集成内网穿透功能,没有公网ip的用户在sc钱包host界面会显示(红叉)”host is unreachable“或者(黄叉)”host is inactive
    sc正在被很多交易所下架,例如http://www.cryptopia.co.nz,也有很多交易所不再考虑上架sc,例如okex.com
    storj优点
    对于存储空间需求方来说,较为便宜的单价,不需要任何区块链同步(依赖以太坊Ethereum的区块链),使用方便;
    可以使用API进行OSS和FTP存储,有心的用户还可以到Github上寻找一下,社区的一个用户开发了的存储空间需求方具有UI的程序,storj社区极为活跃,技术不断进步,目前提供商的版本也越来越流畅,加入Bridge之后,连接更加稳定;
    storjshare是没有抵押金的,选择硬盘即用,即使你所分享的数据被你丢失(类似于采样定理,只要保持网络节点的一定比例数据冗余率,所有数据都是可恢复的),存储空间需求用户也不会因此丢失数据,你也不会被扣费,快速再次上线即可;
    没有周期性读写硬盘,损耗相对sc减少非常多,即使频繁接收合约数据,一旦完成该合约数据同步,你的平台马上都会进入休眠;
    storjshare正被很多交易所上架,起初只有bittrex参与,后来Poloniex也上架了,更值得注意的是,okex.com最近也将storj上架了。
    storj蹩脚
    很遗憾地是,也因为没有自有区块链进行合约费用算法控制,对于存储空间提供商合约费用支付是通过社区每月中旬集体由storj团队手工发送(打工资?),但团队保证后期会引入mini fee payout算法机制,通过storjshare进行自动实时付费,这一功能将在后期storjshare版本中看到;
    和sc一样,不具有内网穿透功能,bridge的生效必须是你曾经与外网发生了链接,对于没有公网ip用户都会显示Tunnel
  2. 现在给出storj如何进行HDD farming硬盘出租(或许国内第一篇),并不是像百度“storj”出来内容中“简书”上的一个用户所说,storj只针对部分用户开放,而现在storj是对每个人开放的,大家都可以进行参与存储空间分享。
  3. By the way, Siacoin farming,在linux 64位和windows 64位系统中很容易实现,在官网获取具有GUI的钱包之后,完成钱包区块链同步,存入2000个sc,即刻开始分享存储空间或者存储内容到区块链,在IoT设备中,如树莓派,社区的一个用户基于GENtoo 64位linux写入了siacoin钱包,并命名为siaberry,大家有兴趣可以烧录到树莓派,实践一下,siacoin的介绍就到此,资料内容均可在上文找到。

步骤一、Check!

一定在进行下面步骤之前,保证用于storj的平台,已经进行内网穿透或者(拥有公网ip)路由端口转发,二者一定需要做一个,这非常重要,相关内容请看上篇

步骤二、系统

 

(最廉价)方案 1. 树莓派系统

 

storj支持很多系统与架构,甚至IoT设备,如对于树莓派,官方给出了详细的手把手教程,硬件选择也很简单,树莓派+装在硬盘盒子内的机械硬盘(推荐),或者是,树莓派+移动硬盘,长期读写的应用场景不适合使用移动硬盘,鉴于成本考虑,不建议使用SSD,没有必要像官方那样组装硬盘,直接使用硬盘盒子,请自行京东,下面以两块硬盘为例(再次重申,确保你已经进行了内网穿透或者拥有公网ip的用户进行了路由端口转发);

  • 创建硬盘挂载目录和设置访问权限,不能使用root用户,storjshare只能由非root用户使用,例如我们假如使用demo,demo用户拥有sudo权限
  • fdisk对两块硬盘分区之后(略),再进行格式化,命令如下
  • 安装用于聚合存储空间为一个挂载点的mergerfs
  • 使用sudo blkid命令查看机械硬盘UUID号后,修改fstab,使得硬盘能开机自动挂载,注意修改UUID为你自己的号码,以及注意fsname是合并存储空间的挂载点目录
  • 重启后,输入命令df -h能看到如下合并的空间就是正常的了
  • 使用demo用户输入以下命令
  • 上个命令完成后,退出这个命令输入终端Terminal,然后再开启一个新的命令输入终端Terminal,还是使用demo登入,输入以下命令
  • 上个命令完成后,退出这个命令输入终端Terminal,然后再开启一个新的命令输入终端Terminal,还是使用demo登入,输入以下命令
  • npm install命令可能会运行很久,喝一杯咖啡,然后看到结果中有很多黄色ip地址加@的节点信息就证明已经安装成功,下面我们需要使用你自己的storj地址,okex.com上或者myetherwallet可以获得,不能使用其他没有上架storj的交易所或者不支持ERC20的以太坊地址
  • 会得到以下的结果
  • 上句命令也是启动命令,但是我们需要先等等,修改一下配置文件再启动,47cc82204e418626993257eb4c19c6031eb5e569即是你的节点号码nodeID,我们先看看配置文件,别被吓到,其实大部分是解释内容,实际填写很简单
  • 更改一下目录权限,正式进行storjshare运行时这个目录/home/demo/.config/storjshare里面会有三个文件,分别是configs、shares和logs
  • 启动storjshare
  • 常见问题是当输入storjshare start时提示daemon没有启动,但当再次启动daemon又说daemon已经运行,此时通常是由于运行storjshare的用户没有目录权限或者daemon没有存储目录/mnt/s的读写权限造成的,其他问题可以查看日志,正常情况下,你已经可以观看当前状态,命令为storjshare status,下图是二十多个小时后的状态

  • storjshare的常用控制命令有如下,更多命令可以使用help命令发现

(最具扩展性) 方案 2. Linux64位系统

 

密币之家通过多次实践和尝试后,使用了该种方案,树莓派虽然很优秀,但是性能上还是有所欠缺,特别是要进行搭建多项服务时,资源局限性更会凸显

密币之家安装的linux系统为64位ubuntu 16.04LTS版本,上述步骤,完全可以适用,除了挂载硬盘时所用mergerfs聚合硬盘不同,具体可以参看github页面mergerfs,命令为

然后按照方案1的方法成功设置后,输入storjshare status,可以看到

 

由于之前密币之家重装系统,所以时间上只有10天,其实密币之家参与storjshare已经数月有余,上月获得了17个多一点的storj,每月可以到storj社区查看自己storj地址收入多少storj币,社区访问不需要VPN,但是他们的payouts表格是通过google表格进行分享,所以你需要VPN才能访问payouts表格,然后Ctrl+F,查找自己的地址,结算日期为上月1日至上月最后一天,每月中旬进行结算,具体请常常访问社区,如下

 

(最简单) 方案 3. windows系统

 

一般都作为日常工作娱乐的平台,很少会让其24小时开机,所以windows系统方案作为最后推出,但是实现很简单

  • 首先到storj官网(storj.io)下载新版钱包,我们选择win64.exe

  • 安装完成后,需要net time辅助时间同步,微软自带时间同步工具无法满足storjshare的应用,时间同步后在启动storjshare,第一步填地址

  • 选择存储目录后,设置分享的存储空间大小,再选择你的端口,密币之家提前做了内网穿透,然后需要勾选reachable,下步填写你的内网穿透所用域名即可,对于有公网ip用户,填路由所转发的端口,没有绑定公网ip至域名则填写你的公网ip

  • 大功告成!

验证:

需要注意的是:如果你的节点一切正常,但就是没有获得任何Allocs或者Shared,那么首先去https://api.storj.io/contacts/Nodeid,nodeid换成你自己的,本文是47cc82204e418626993257eb4c19c6031eb5e569(非本文作者真实nodeid,仅为举例),那么https://api.storj.io/contacts/47cc82204e418626993257eb4c19c6031eb5e569,点开该链接会获得一个节点信息,里面必须有一项参数response time ,响应时间,如果不存在该项参数,只能回到步骤storjshare create –storj=填写你自己的storj地址 –storage=/mnt/s ,再次重新创建,直到成功为止,这是官方BUG,目前没有修复,这也是Storj官方给出的解决办法,亲测有效。

步骤三、运维

  • 官方推荐了grafana,监控节点的网络数据,其实有更接地气的面板,宝塔面板,bt.cn,Ubuntu/Deepin系统安装命令为

 

 

 

  • 打开数据监控之后,隔几天就能看到有意思的数据出现

步骤四、整合

有了宝塔面板,该平台不仅可以用于storjshare,大家还可以考虑安装一个nextcloud/owncloud在上面,nextcloud为免费使用,有PC平台/手机平台,其他后续内容将在未来公布。


Viewing all articles
Browse latest Browse all 764

Trending Articles