更换了Macbook pro,使用了近5年的Macbook Air终于宣告退役。最近将Air改造成一台私有服务器继续发挥它的价值。

所需要的配置和软件也很简单: 首先是SSH只要在Mac偏好设置>共享>远程管理中开启即可

由于一般宽带没有公网IP如果需要远程访问有三种方式:

  1. 联系运营商索要公网IP,也有网友破解光猫设置桥接方式获取到公网IP

  2. 使用花生壳等内网穿透服务

  3. 如果你有一台有公网IP的服务器可以使用frp

为了节省时间和自己服务灵活性我选择使用frp做内网穿透

  1. 从frp release 下载对应系统程序 解压后我们在需要做穿透的mac上编辑配置frpc.ini文件:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<span data-line-num="1">[common]</span>
<span data-line-num="2">server_addr = 公网服务器的ip</span>
<span data-line-num="3">server_port = 7000</span>
<span data-line-num="4">admin_addr = 127.0.0.1</span>
<span data-line-num="5">admin_port = 7400</span>
<span data-line-num="6">token = token</span>
<span data-line-num="7">tls_enable = <span>true</span></span>
<span data-line-num="8"></span>
<span data-line-num="9"><span>#下面是我需要开启的服务,按自己需求自定义</span></span>
<span data-line-num="10">[ssh]</span>
<span data-line-num="11"><span>type</span> = tcp</span>
<span data-line-num="12">local_ip = 127.0.0.1</span>
<span data-line-num="13">local_port = 22</span>
<span data-line-num="14">remote_port = 远程访问端口</span>
<span data-line-num="15"></span>
<span data-line-num="16">[mysql]</span>
<span data-line-num="17"><span>type</span> = tcp</span>
<span data-line-num="18">local_port = 3306</span>
<span data-line-num="19">remote_port = 远程访问端口</span>
<span data-line-num="20"></span>
<span data-line-num="21">[postgres]</span>
<span data-line-num="22"><span>type</span> = tcp</span>
<span data-line-num="23">local_port = 5432</span>
<span data-line-num="24">remote_port = 远程访问端口</span>
<span data-line-num="25"></span>
<span data-line-num="26">[mongo]</span>
<span data-line-num="27"><span>type</span> = tcp</span>
<span data-line-num="28">local_port = 27017</span>
<span data-line-num="29">remote_port = 远程访问端口</span>
<span data-line-num="30"></span>
<span data-line-num="31">[jenkins]</span>
<span data-line-num="32"><span>type</span> = tcp</span>
<span data-line-num="33">local_port = 9090</span>
<span data-line-num="34">remote_port = 远程访问端口</span>
<span data-line-num="35"></span>
<span data-line-num="36">[jupyter]</span>
<span data-line-num="37"><span>type</span> = tcp</span>
<span data-line-num="38">local_port = 8888</span>
<span data-line-num="39">remote_port = 远程访问端口</span>
<span data-line-num="40"></span>
<span data-line-num="41">[aria2]</span>
<span data-line-num="42"><span>type</span> = tcp</span>
<span data-line-num="43">local_port = 6800</span>
<span data-line-num="44">remote_port = 远程访问端口 </span>
<span data-line-num="45"></span>

这里我在Air上穿透了测试数据库,并将一些服务(jenkins,jupyter)从原有的云服务器中转移到Air上减少资源占用,还开启的aria2下载工具,这样可以随时随地远程下载文件到我的Air中

配置完成后在终端运行

开启服务 ./frpc -c frpc.ini

接下载同样在有公网IP的服务器上下载客户端,编辑frps.ini,配置相对简单

1
2
3
4
<span data-line-num="1">[common]</span>
<span data-line-num="2">bind_port = 7000</span>
<span data-line-num="3">allow_ports = 需要穿透的端口,对应frpc的remote_port</span>
<span data-line-num="4">token = 对应frpc的token</span>

同样在服务端运行

./frps -c frps.ini

这时就实现了内网穿透,Air已经基本是一台服务器了

这时还需要两个软件让Air变成完全体,就是 supervisornoSleep

在终端和公网服务器停掉之前运行的frpc和frps

Supervisor一个进程管理工具,它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能。

Supervisor的安装方式有很对这里不再赘述

安装完成后在配置文件夹下(一般是/supervisor.d/)

touch frp.inifrp.conf

具体使用那个后退需要在/etc/supervisord.conf中最后一行查看也可自行修改配置路径

1
2
<span data-line-num="1">[include]</span>
<span data-line-num="2">files = /etc/supervisor.d/*.conf</span>

编辑frp.conf

1
2
3
4
5
6
7
<span data-line-num="1">[program:frpc]</span>
<span data-line-num="2"><span>command</span>=/Users/***/frp_0.28.2_darwin_amd64/frpc -c /Users/***/frp_0.28.2_darwin_amd64/frpc.ini</span>
<span data-line-num="3">user=you mac username</span>
<span data-line-num="4">autostart=<span>true</span></span>
<span data-line-num="5">autorestart=<span>true</span></span>
<span data-line-num="6">startsecs=30</span>
<span data-line-num="7">startretries=5</span>

保存后运行 supervisorctl update 更新配置

supervisorctl status查看运行状态

这时当你的电脑重启或frp意外停止supervisor都会帮你重新启动frp

在公网服务器同样安装supervisor,添加配置frps.conf

1
2
3
4
5
6
7
<span data-line-num="1">[program:frps]</span>
<span data-line-num="2"><span>command</span>=/etc/frp/frps -c /etc/frp/frps.ini</span>
<span data-line-num="3">user=you ubuntu username</span>
<span data-line-num="4">autostart=<span>true</span></span>
<span data-line-num="5">autorestart=<span>true</span></span>
<span data-line-num="6">startsecs=30</span>
<span data-line-num="7">startretries=5</span>

执行

supervisorctl update

这时通过

ssh 公网user@公网IP -p 6000

就可以访问你的内网Air了,如果你还穿透了其他服务如jenkins remote_port = 19090,使用

公网ip:19090

就可以访问到Air中运行的jenkins服务

在实际使用过程中发现就算偏好设置>节能设置为永不休眠,盒盖也会发生断网情况,所以下载noSleep并运行可以保持Air待机状态,这样就算合盖可以顺畅访问Air了。

Air这时就是一台带有公网IP的服务器了,想做什么就可以自由发挥了。