首先,感谢 @神雕 开发的海纳思(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架构,下载好相应固件放好位置后,删除多余文件,保留 frpcfrpc.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

全文完 [ 喜欢本文,打赏作者! ]