第四章 环境准备:Linux服务器基础配置、Docker与Docker Compose安装、防火墙与端口规划、域名与SSL证书准备
好,咱们进入实战前的最后一道工序——环境准备。说实话,很多新手在这块栽跟头,不是服务器配置不对,就是端口没开,折腾半天连不上服务器。我刚开始搭LoRaWAN网络服务器时,就吃过这个亏,后来总结了一套标准流程,照着做基本不会出问题。
4.1 Linux服务器基础配置
我个人习惯用Ubuntu 20.04 LTS或22.04 LTS,稳定、社区活跃、遇到问题好搜解决方案。CentOS也行,但这两年转向Stream版本后,我建议还是用Ubuntu省心。
第一步:更新系统
拿到一台新服务器,第一件事就是更新包管理器。别偷懒,很多安全漏洞就是通过旧版本进来的。
sudo apt update && sudo apt upgrade -y
第二步:创建专用用户
我从来不用root直接操作。创建一个叫lorawan的用户,权限够用就行。
sudo useradd -m -s /bin/bash lorawan
sudo usermod -aG sudo lorawan
passwd lorawan
第三步:配置SSH密钥登录
密码登录?嗯,我建议你关掉。我在项目中遇到过暴力破解,一天几万次尝试,看着都吓人。
# 在本地生成密钥对
ssh-keygen -t ed25519 -C "lorawan-server"
# 将公钥复制到服务器
ssh-copy-id lorawan@你的服务器IP
# 修改SSH配置
sudo vim /etc/ssh/sshd_config
# 设置 PasswordAuthentication no
# 设置 PermitRootLogin no
sudo systemctl restart sshd
4.2 Docker与Docker Compose安装
LoRaWAN网络服务器用Docker部署是最省心的方式。说白了,就是把所有依赖打包好,你只管拉镜像、跑容器就行。
安装Docker
官方推荐用脚本安装,简单粗暴:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 将用户加入docker组,避免每次sudo
sudo usermod -aG docker lorawan
# 验证安装
docker --version
安装Docker Compose
现在Docker Compose已经集成到Docker CLI里了,但老版本还是得单独装。我建议直接用插件版:
# 安装docker-compose-plugin
sudo apt install docker-compose-plugin
# 验证
docker compose version
4.3 防火墙与端口规划
LoRaWAN网络服务器需要开放哪些端口?我整理了一张表,你照着配就行。
| 端口 | 协议 | 用途 | 说明 |
|---|---|---|---|
| 1700 | UDP | LoRaWAN网关上行数据 | 必须开放,否则网关连不上 |
| 8080 | TCP | Web管理界面 | 建议绑定域名后用HTTPS |
| 443 | TCP | HTTPS访问 | 生产环境必开 |
| 22 | TCP | SSH管理 | 建议修改默认端口 |
配置UFW防火墙
Ubuntu自带的UFW挺好用,我一般这么配:
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 开放必要端口
sudo ufw allow 1700/udp
sudo ufw allow 8080/tcp
sudo ufw allow 443/tcp
sudo ufw allow 2222/tcp # 假设SSH改成了2222端口
sudo ufw enable
sudo ufw status verbose
🔑 关键点: 1700端口是UDP协议,别写成TCP了。我见过有人配错,网关数据死活发不过来,排查了半天才发现是协议搞错了。
4.4 域名与SSL证书准备
生产环境一定要配HTTPS。为什么?因为LoRaWAN网络服务器涉及设备密钥和用户数据,明文传输等于裸奔。
域名解析
假设你买了example.com这个域名,需要添加一条A记录指向服务器IP:
# 在DNS管理后台添加
类型: A
主机记录: lorawan
记录值: 你的服务器公网IP
这样,你的Web管理界面就能通过https://lorawan.example.com访问了。
申请SSL证书
我推荐用Let's Encrypt的免费证书,配合Certbot自动续期,省心又安全。
# 安装Certbot
sudo apt install certbot python3-certbot-nginx
# 申请证书(需要先安装Nginx)
sudo certbot --nginx -d lorawan.example.com
# 测试自动续期
sudo certbot renew --dry-run
配置Nginx反向代理
有了证书,还得让Nginx把HTTPS请求转发到LoRaWAN网络服务器的Web端口。下面是一个典型的配置:
server {
listen 443 ssl;
server_name lorawan.example.com;
ssl_certificate /etc/letsencrypt/live/lorawan.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/lorawan.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
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;
}
}
# HTTP自动跳转HTTPS
server {
listen 80;
server_name lorawan.example.com;
return 301 https://$server_name$request_uri;
}
配置完记得重载Nginx:
sudo nginx -t # 测试配置是否正确
sudo systemctl reload nginx
proxy_pass要写Docker宿主机的IP,或者用Docker网络互通的方式。具体怎么配,咱们后面章节会细讲。
好了,环境准备这块就这些。你想想看,服务器配好了、Docker装上了、防火墙开了、域名证书也搞定了,接下来就可以正式部署LoRaWAN网络服务器了。下一章,咱们开始动手搭建ChirpStack,那才是真正的重头戏。