内网穿透服务器搭建入门

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

但是当时买到的服务器的配置过低,只有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的内网穿透建站方案

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

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

GitHub Pages 纯静态网站搭建

除了使用 Orange Pi 自建服务器外,GitHub Pages 也是一个非常不错的选择,特别适合托管纯静态网站

GitHub Pages 完全免费,无需维护服务器,且自带 CDN 加速,适合个人博客、文档站点、项目展示等场景

创建仓库

1、登录 GitHub,点击右上角 "+" 号,选择 "New repository"

2、仓库名称格式为 username.github.io,其中 username 为你的 GitHub 用户名

3、选择公开仓库(Public),然后点击创建

上传网站文件

可以通过以下两种方式上传静态网站文件:

方式一:直接上传

  1. 进入仓库页面,点击 "Add file" → "Upload files"
  2. 拖拽或选择本地的 HTML/CSS/JS 文件上传
  3. 点击 "Commit changes" 提交

方式二:使用 Git 命令行

# 克隆仓库到本地
git clone https://github.com/username/username.github.io.git

进入仓库目录

cd username.github.io

添加你的静态网站文件(如 index.html)

然后提交并推送

git add .
git commit -m “Initial commit”
git push origin main

启用 GitHub Pages

1、进入仓库的 "Settings" 页面

2、左侧菜单选择 "Pages"

3、在 "Source" 部分,选择分支(通常为 main 或 master),文件夹选择 "/ (root)"

4、点击 "Save" 保存

5、等待几分钟后,访问 https://username.github.io 即可看到你的网站

自定义域名(可选)

如果你有自己的域名,可以绑定到 GitHub Pages:

  1. 在仓库根目录创建名为 CNAME 的文件,内容为你的域名(如 www.example.com
  2. 在你的域名 DNS 服务商处添加 CNAME 记录,指向 username.github.io
  3. 在 GitHub Pages 设置中,勾选 "Enforce HTTPS" 以启用 SSL

使用 Hexo/Hugo 等静态网站生成器

对于博客类网站,推荐使用静态网站生成器:

以 Hexo 为例:

# 安装 Hexo
npm install -g hexo-cli

初始化博客

hexo init blog
cd blog
npm install

创建新文章

hexo new “Hello World”

生成本地预览

hexo server

生成静态文件

hexo generate

部署到 GitHub Pages(需配置 _config.yml 中的 deploy 部分)

hexo deploy

Hexo 和 Hugo 都提供了丰富的主题,可以快速搭建美观的博客站点

GitHub Pages 方案的优势在于零成本、高可用、无需维护,但仅支持静态内容,无法运行动态程序

如果需要动态功能(如评论、搜索),可以配合 GitHub Issues、Giscus、Algolia 等第三方服务实现


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