内网穿透服务器搭建入门

我的这个小网站在一两年前就已经搭建了出来

但是当时买到的服务器的配置过低,只有1H1G,因为运行内存太低,所以经常导致nginx崩溃

虽然当时想提升配置,但是其他云服务器要么价格太高,要么需要备案

中间找了很长时间,服务器也宕机了很长时间

最终搞了个natapp的内网穿透,搭配自己买的开发板,总算是稳定了下来

以下是关于在orangepi上面搭建halo、配合natapp内网穿透,以及阿里云免费ssl证书申请及安装的整体流程

orange pi

如果只是做网站的话,建议直接选择orangepi 4或者orangepi 5的4G版本,价格在200-400元之间

系统盘的话,我选择了一个64G的SD卡来作系统盘

当然,orangepi也支持nvme的固态硬盘,如果你有需要的话,也可以使用

刷写系统

刷写系统的操作流程很简单,而且orangepi官方提供了相关的刷写工具——SDCardFormatter、win32diskimager

具体流程如下↓

  1. 将SD卡连接电脑,通过SDCardFormatter将SD卡格式化为标准的系统卡

  2. 然后通过win32diskimager将选择好的系统刷写进去(镜像文件在www.orangepi.cn)

另外需要注意的是:orangepi使用的芯片为arm架构,非平常的amd架构

而arm架构在使用时相较于平常会有一定的限制,例如↓

  1. 需要选择arm的镜像,并且使用相关的镜像源,否则无法运行(ubuntu的arm镜像源为ubuntu-ports)

  2. 部分第三方软件并没有支持arm架构,或者并没有支持orangepi的官方arm镜像(todesk、docker中的halo等等)

当然这只是一些小问题,在安装或设置的时候稍微注意点就好

在选择安装镜像的时候,我比较推荐直接使用官方提供的ubuntu-server镜像

因为官方的镜像里设置了自动获取ip地址,并且配置好了华为云的镜像源

在刚开始安装的时候,只需要连接路由器,然后通过内网地址直接xshell连接就行

如果你没有散热器的话,使用server镜像对于开发板的散热也有帮助

修改镜像源:vim /etc/apt/sources.list

ubuntu-ports镜像源推荐:

中科大:https://mirrors.ustc.edu.cn/

阿里云:https://developer.aliyun.com/mirror/
华为云:https://mirrors.huaweicloud.com/home

清华:https://mirrors.tuna.tsinghua.edu.cn/

南京大学:https://mirrors.nju.edu.cn/

halo

因为arm架构的原因,docker中的halo并不能直接的在orangepi上面安装使用

所以建议直接使用docker compose的安装方式来安装

另外需要注意:

在v2版本中,docker compose的命令从之前的docker-compose更改为了docker compose

在运行命令时注意修改

docker compose安装

以下为具体安装步骤:

1、卸载系统内老版docker或其他冲突包:

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

2、安装必要的系统工具:

sudo apt-get update

#以上镜像可以选择其中一个,也可以都写
#上面的账号密码等信息可自行选择,不要使用默认

3、启动halo服务

docker-compose up -d

以上即安装好halo,可以通过http://内网ip/8090,或http://内网ip/8090/console访问自己的网站了

网络设置

因为这一次的网站,我是搭建在自己的orangepi开发板,并且连的是没有公网ip的家庭宽带

所以在网络设置上面,我选择了natapp的内网穿透,搭配上阿里云申请到的免费ssl证书,实现https访问

是的,骑着单车去酒吧,该省省该花花

ssl证书自行去阿里云申请(当然也可以去淘宝找找),并放在orangepi中任意位置,这里不再赘述

nginx反代

因为我们这一次的安装是基于内网,而且后面要添加ssl证书实现443端口访问

所以此处的nginx反代和halo官方的设置并不相同

1、安装nginx

sudo apt-get update
sudo apt-get install nginx -y

2、配置nginx反代

编辑nginx配置文件:

sudo vim /etc/nginx/sites-available/default

将server块修改为如下内容:

server {
listen 80;
server_name yourdomain.com;

location / {
    proxy_pass http://127.0.0.1:8090;
    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_set_header X-Forwarded-Proto $scheme;
}

}

3、测试并重启nginx

sudo nginx -t
sudo systemctl restart nginx

natapp内网穿透

1、前往natapp官网注册账号,购买隧道(免费隧道也可以,但域名随机且不稳定)

2、下载natapp客户端,放到orangepi中

chmod +x natapp
./natapp -authtoken=你的authtoken

3、将natapp设置为开机自启,可以使用systemd服务

sudo vim /etc/systemd/system/natapp.service

写入以下内容:

[Unit]
Description=natapp
After=network.target

[Service]
Type=simple
ExecStart=/path/to/natapp -authtoken=你的authtoken
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl enable natapp
sudo systemctl start natapp

SSL证书配置

1、将阿里云申请的SSL证书(.pem和.key文件)放到orangepi中,例如放在 /etc/nginx/ssl/ 目录下

2、修改nginx配置,添加443端口监听:

server {
listen 443 ssl;
server_name yourdomain.com;

ssl_certificate /etc/nginx/ssl/yourdomain.pem;
ssl_certificate_key /etc/nginx/ssl/yourdomain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

location / {
    proxy_pass http://127.0.0.1:8090;
    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_set_header X-Forwarded-Proto $scheme;
}

}

server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}

3、测试并重启nginx

sudo nginx -t
sudo systemctl restart nginx

总结

以上就是一套完整的基于Orange Pi + Halo + natapp + nginx + SSL的内网穿透建站方案

整体成本极低,适合个人博客、测试站点等场景

当然,如果网站流量较大或者对稳定性要求较高,还是建议购买正规的云服务器


内网穿透服务器搭建入门
https://manafeng.com/2023/08/03/intranet-penetration/
作者
ManaFeng
发布于
2023年8月3日
许可协议