使用家用电脑作为服务器·2023年新版
在19年,我写过一篇使用家用电脑作为服务器的文章,那时候没有解决ddns问题,目前已经解决
为什么要用家用电脑做服务器
1:跑满家用带宽(上行30M-50M,有的100M,阿里云4000-1万一个月),下行100M-1000M(看自己)
2:成本低,服务器2核2g就得几百一年,自己电脑随便加内存,随便加硬盘
3:装逼,别人没有你有
4:服务器集群测试,学习服务器运维最好的帮手
5:出租,出租给别人用,美滋滋
6:做游戏私服
7:做私有网盘
8:做代码备份
.....
开通公网
必须要找运营商开通公网ip,我家是电信的,找电信人工服务开通公网,重启路由器就行,免费的!免费的!免费的!免费的!免费的!
免费的!免费的!免费的!
如何判断开通了公网ip?
需要在拨号的路由器上查看ip地址,如果ip地址和对外访问的ip地址一致 (或者ip地址不是内网ip地址) 则是开通了公网
百度ip:则可以知道自己的ip地址是什么
路由器设置方案
现在大多数家庭都是光纤->光猫,所以如果需要配置路由器的话,还需要配置光猫
分为2种方案:
- 光猫拨号,路由器dhcp作为光猫的副路由
- 光猫做桥接模式,光猫只负责做光信号转换,用路由器拨号并负责网络
本人建议使用光猫做桥接模式,光猫性能较差,用路由器可以压榨极致性能,通过有些地区可以桥接多个路由器,做多拨,带宽翻倍!
光猫如何做桥接模式?
这里又有两种方案,
你可以通过打电话给运营商,让客服远程帮你修改光猫的模式,修改完重启即可让路由器拨号 (一般只有21年新开通的宽带才有这功能)
如果没法远程修改光猫的模式,你可以通过破解光猫的超级管理员账号,进入后台自己修改
服务器相关
选择硬件
我们选择服务器,个人建议使用N5105小主机,性能够,功耗极低,不费电!
要知道,服务器是24小时运行的,一般台式机待机功率就有100w以上了,加上满载,一天5度电,电费就吃不消了
N5105性能不错,功率低,但是价格要1000多,本人买不起,所以选择了闲鱼花500买笔记本
值得一提的是,家用服务器,cpu性能不用太强,又不是打游戏办公,主要是低功耗,加上3G以上的睿频就非常好用了,硬盘和内存可以多一点
有条件的还可以研究下bios里面的网络唤醒功能,只要有网络即可自动开关机,非常好用
选择系统
在这里,本人选择的是ubuntu22系统,直接去官网下载镜像,然后U盘安装即可,装系统不发教程
另外,前阵子了解到了另一个牛逼的系统:pve系统,个人建议安装这个,自己百度看看
网络配置
要注意的是,服务器网络配置,需要使用路由器的 mac地址绑定+dmz主机功能
mac地址绑定
在路由器绑定mac地址和ip地址,才能让服务器的ip不至于一直被dhcp更改,
dmz主机功能
dmz主机功能,可以将访问到路由器的流量全部中转到服务器上,也就是相当于直接访问的服务器
如果你是光猫dhcp给路由器的,需要做双重dmz主机,光猫dmz主机到路由器,然后路由器dmz到服务器,如果你路由器还dhcp了路由器,以此类推
DDNS
到这步,你已经可以通过外网ip直接访问到服务器了,但是,由于运营商限制,端口80,443,8080,都被禁止,但是你可以通过其他端口来访问服务器,例如22 ssh,或者自定义9999,8888作为网页访问:
但是,由于这个ip是运营商拨号后给你分配的,每次重新拨号,或者运营商不定时网络波动,都会造成ip变更,此时你在公司,家里的ip变更了,你怎么知道变更的ip呢?
这个问题你们可以自己思考下,变更后发邮件什么都可以,最简单的方案就是DDNS 动态域名解析方案
动态域名解析方案
阿里云云解析
首先,我们需要有个域名,最好是直接阿里云买一个,然后找到云解析:
如果不是阿里云买的域名,也可以在这里添加解析,然后在自己购买的运营商后台修改DNS服务器为阿里云DNS服务器:
此时就可以在阿里云云解析操作解析的域名了
在阿里云新增解析,a记录,*,\@ 2个解析记录(随你选择):
打开f12控制台,找到
这个是阿里云的云解析记录资源id
执行脚本
由于阿里云的资源管理比较牛逼,全部可以使用api方式请求变更,找到云解析的api文档,根据文档写代码:https://help.aliyun.com/document_detail/29774.html
本人使用的go代码
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
alidns "github.com/aliyun/alibaba-cloud-sdk-go/services/alidns"
)
func main() {
config := sdk.NewConfig()
credential := credentials.NewAccessKeyCredential("accessid", "accesskey")//这里填自己的
/* use STS Token
credential := credentials.NewStsTokenCredential("<your-access-key-id>", "<your-access-key-secret>", "<your-sts-token>")
*/
client, err := alidns.NewClientWithOptions("cn-qingdao", config, credential)
if err != nil {
panic(err)
}
request := alidns.CreateUpdateDomainRecordRequest()
request.Scheme = "https"
//填自己的资源id
request.RR = "*"
request.Type = "A"
request.Value = getIp()
response, err := client.UpdateDomainRecord(request)
if err != nil {
fmt.Print(err.Error())
}
fmt.Printf("response is %#v\n", response.GetHttpContentString())
}
func getIp() string {
// 基本get请求
resp, err := http.Get("http://ifconfig.me")
if err != nil {
log.Println("err")
}
defer resp.Body.Close()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println("err")
}
return string(b)
}
然后,通过crontab 定时任务,设置每分钟执行一次,如果ip发生变化,就会自动修改ip
再然后,我们以后只需要根据自己的域名来访问自己的服务器即可,不需要记ip了
其他
推荐个网盘工具,可以部署到自己服务器:
推荐宝塔,可以部署到自己服务器,反正是自己服务器,不怕安全问题
有些地区,光猫桥接之后,多插几个路由器可以实现多拨,也就是说一个宽带账号,可以搞多个网络出来,再加个牛逼的交换机,给服务器多倍带宽,嘎嘎猛
自己想在服务器干啥就干啥
- 本文标签: 操作系统 服务架构 插件分享
- 本文链接: https://www.php20.cn/article/414
- 版权声明: 本文由仙士可原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权