首先,感谢 @神雕
开发的海纳思(hinas)固件,感谢 @Fatedier
开发的Frp应用,感谢 @伊戈尔·赛索耶夫
开发的Nginx应用,感谢 @狗哥
帮忙给电视盒子刷好固件。
简单来说,在家的电视盒子刷成Ubuntu并且安装好Lnmp环境,通过frp映射到互联网上,再通过nginx反向代理提供一个80、443访问的端口,就基本可以了。如您所见,我新搭建的 巨齿鲨
就是一个这样的站点。
电视盒子是 华为悦盒ec6108v9c
,属于 hi3798mv100
芯片,恰好,在 @狗哥
的帮忙下,有了这么一个盒子。具体刷机流程可以参考 海纳思官网(ecoo.top)
。
由于宝塔面板官方不再支持 armv7-32 位 CPU 的安装,所以选择付费10元通过 @神雕
预制编译好的固件,直接运行宝塔,使对硬件的需求降低,可以流畅运行LNMP环境,至此本地站点的雏形基本好了。
在本地完成建设后,需要互联网访问,那么需要一台有独立IP的VPS,在 Github
上找到Frp项目,直接安装部署即可。
Frp中有四个文件:
-
frps
-
frpc
-
frps.toml
-
frpc.toml
其中 .toml
是配置文件。 frps
(在Windows下是 frps.exe
)是服务端用的, frpc
(在Windows下是 frpc.exe
)是客户端用的。华为悦盒这个电视盒子是arm32架构,下载好相应固件放好位置后,删除多余文件,保留 frpc
和 frpc.toml
即可。在 frpc.toml
写入以下内容即可:
serverAddr = "0.0.0.0"
serverPort = 7000
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 222
[[proxies]]
name = "web"
type = "http"
localPort = 80
customDomains = ["blog.jcs.moe"]
其中, 0.0.0.0
修改为服务器的IP地址。完成后通过 ./frpc -c ./frpc.toml
运行起来。如果需要更方便,可以通过 systemd
来控制。
如果您的 Linux 服务器上尚未安装 systemd
,可以使用包管理器如 yum
(适用于 CentOS/RHEL)或 apt
(适用于 Debian/Ubuntu)来安装它:
# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd
# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd
使用文本编辑器 (如 vim) 在 /etc/systemd/system
目录下创建一个 frps.service
文件,用于配置 frp服务。
vi /etc/systemd/system/frps.service
写入内容:
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frpc -c /path/to/frpc.toml
[Install]
WantedBy = multi-user.target
保存文件后设置 frps 开机自启动:
systemctl enable frps
如果以上操作出现问题,比如权限不足啥的,可能需要root权限执行。 完成后,就可以通过 systemd
命令管理 frp服务。
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
本地客户端配置好了,现在登录你的VPS,配置 frp ,在服务端保留 frps
和它的配置文件 frps.toml
即可。并在配置文件下写入以下内容:
bindPort = 7000
vhostHTTPPort = 8080
至此,通过 systemd
启动你的 frp
就OK了。
当你访问 blog.jcs.moe:8080
时,会通过 frp
这个访问到盒子上,同理,如果你想通过ssh登录管理,假设你的用户名是test,那么直接:
ssh -o Port=222 test@x.x.x.x
frp
将请求发送到 x.x.x.x:6000
的流量转发到内网机器的 22 端口。
由于VPS的80端口我默认给了nginx,那么我们可以通过nginx的反向代理来隐藏掉8080这个端口。新建一个nginx的配置文件,写入如下内容:
server {
listen 80;
listen [::]:80;
server_name blog.jcs.moe;
charset utf-8;
location / {
proxy_pass http://blog.jcs.moe:8080;
client_max_body_size 100M;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 避免超时
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
proxy_pass http://blog.jcs.moe:8080;
expires 30d;
}
location ~ .*\.(js|css)?$ {
proxy_pass http://blog.jcs.moe:8080;
expires 12h;
}
}
至此,搭建完成。
也许未来有一天,梦幻辰风也会完全搬家到这个电视盒子上。主要是,功耗真的很低,据作者 @神雕
实测功耗约为 3 瓦, 3x24x365÷1000x0.7≈18元/年,一杯奶茶钱,养活它一年。
虽然,有公网IP的服务器挺贵的,那为啥不直接把网站放在有公网IP的服务器上?
草率了。
演示站点:https://blog.jcs.moe