如何让树莓派接入外网并自定义域名
示例
no BB,先上成果
http://cile.me
github:
https://github.com/sorcererxw/iloveworks
前言
520当天,本想给媳妇一个精喜,于是计划在云服务器上面部署一个node项目,但是部署过程服务器直接宕机,无奈重启,查询云服务器状态,发现内存只剩下可伶的几十M?
毕竟穷, 2g内存
于是打起了刚入手没多久树莓派的主意,毕竟可是台可运行linux的小电脑.
要解决的问题
公网ip
有钱的办法就是打电话给电信工作人员给你专门拉一条公网线给你接上
这还叫办法?
内网穿透
所谓的内网穿透就是通过软件的方式,给你映射一个公网ip,但该方式会有一些局限性,比如带宽小等.
能实现内网穿透的软件很多,这里我只说一些我用过的.
花生壳
花生壳是我用过最久,比较稳定的一款,而且支持的平台很多.有兴趣的可以前往了解一下
https://hsk.oray.com/
小蚂蚁
这款我在windows用过一次,免费试用5天,试用期带宽3M,后续要花钱开通.也是全平台支持
https://www.xiaomy.net/
安装花生壳
这里选择花生壳,主要也是因为是老牌,安全点.
下载
https://hsk.oray.com/download/
我们这边选择树莓派
deb安装包地址
http://download.oray.com/peanuthull/embed/phddns_3.0.4_systemd.deb
下载到树莓派
wget http://download.oray.com/peanuthull/embed/phddns_3.0.4_systemd.deb
安装
dpkg -i phddns_3.0.4_systemd.deb
安装完毕会显示SN码和默认密码admin(这里引用官方图)
然后将显示此树莓派的SN码、默认密码登录到远程管理地址
如何注册配置按照官方步骤即可(如果没有已经实名认证的花生壳帐号,激活的时候最好使用手机登录激活)
http://service.oray.com/question/2680.html
配置示例
内网主机ip就是树莓派的ip(ifconfig命令查询),以及启动服务端口(我这里启动的node服务端口是3000)
配置完成后,我们来启动花生壳
常用命令
phddns start(启动)| **stop**(停止)| **restart**(重启)
卸载
dpkg -r phddns
启动
phddns start
不出意外的话通过花生壳默认域名地址就可以访问到了.
自定义域名转发
我这里觉得花生壳的域名太长太丑了,正好手上也有几个me的域名,打算转发过去.
这里安利一个国外域名运营商,价格很便宜,域名还多.
https://www.gandi.net/zh-Hans
这里我就按gandi的域名管理为例
打开域名的网址转发功能,cile.me是我在gandi注册的域名,用cile.me替换花生壳默认的又长又丑的域名.
域名管理中有转发功能,当你访问cile.me的时候会自动跳转到设置的域名,这时候浏览器的域名会变成跳转后的域名.
这里要注意选择遮罩,这样浏览器的地址不会改变(目标地址不会显示给使用者)
注意事项
仅支持http转发
仅支持展示,如果页面内容有链接,用户点击会跳转到目标地址(即cile.me失效).
Tip
可以通过将域名生成二维码发给女票更有意外惊喜哦
草料二维码
https://cli.im/url/info?60aa13505e06ac1535add7ca7a2f85d3
- 深入理解 ButterKnife,让你的程序学会写代码
- JS+CSS让网站嗨起来,博客要被玩坏了!
- Linux系统zip压缩命令详细参数,附文件排除选项的正确用法
- 浅谈Android自定义锁屏页的发车姿势
- 移动App入侵与逆向破解技术-iOS篇
- 启用WP Super Cache纯代码版本之后的一些优化措施
- WP Super Cache静态缓存插件纯代码版(兼容多域名网站)
- 【Dev Club分享】React Native项目实战总结。
- HTML 5 视频直播一站式扫盲
- Golang之chan/goroutine
- 原创插件:WordPress博客友好对话框+文章随机推荐滚动条插件(附代码版)
- php平滑重启nginx,彻底清除WordPress的静态缓存
- 解耦---Hybrid H5跨平台性思考
- GO语言异常处理机制panic和recover分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 企业面试题|最常问的MySQL面试题集合(二)
- 值得一看的35个Redis面试题总结
- 容器技术|Docker三剑客之docker-machine
- 企业面试题|最常问的MySQL面试题集合(三)
- 「微服务架构」API版本控制最佳实践介绍
- 2020年最新字节、阿里、腾讯、爱奇艺等BAT Android社招高频面试题,押题99.98%!
- 使用镜像部署 Hexo 静态页面
- 基于zmq RPC简单C++实现
- App为什么会crash?一篇文章带你探究根本原因 ,事情没有你想得那么简单!
- MySQL 8.0新特性 — 用户管理
- Java15的新特性
- ZooKeeper到底为Kafka的做了什么牺牲?
- Flutter原理:三棵重要的树(渲染过程、布局约束、应用视图的构建等)
- FlutterDojo设计之道—状态管理之路(六)
- Day9.函数进阶