4. 环境准备:Ubuntu 22.04 LTS安装、Docker与Docker Compose安装、防火墙与端口规划

好,咱们正式开始动手了。这一章我带你把地基打牢。说白了,后面所有的LoRaWAN服务——ChirpStack、Node-RED、数据库——都得跑在咱们今天搭的环境上。环境稳了,后面才省心。

我个人习惯,服务器操作系统首选Ubuntu 22.04 LTS。为什么?因为它的软件源新,社区活跃,遇到坑了随便一搜就有答案。你想想看,要是用个冷门发行版,出问题了连个问的人都没有,多耽误事。

4.1 Ubuntu 22.04 LTS 安装要点

安装过程其实不复杂,但有几个地方我建议你多留个心眼。

  • 镜像下载:去官网或者阿里云镜像站下载 ubuntu-22.04.3-live-server-amd64.iso。别下Desktop版,咱们跑服务用Server版,没图形界面,省资源。
  • 磁盘分区:我建议用LVM逻辑卷管理。为什么?因为LoRaWAN网关数据会不断写入,日志也会增长。用LVM,以后磁盘不够了,直接加块硬盘扩一下就行,不用重装系统。我在项目中遇到过,一开始分区给小了,半年后日志把根目录撑爆,服务全挂。从那以后,我所有服务器都用LVM。
  • 网络配置:安装时设置静态IP。别用DHCP,因为后面Docker容器、端口映射都依赖固定IP。万一DHCP给你换个IP,所有配置都得改,太折腾。
  • SSH服务:安装过程中勾选安装OpenSSH server。装好后,你就可以从你的笔记本远程连过去操作了,不用一直蹲在服务器面前。
小技巧:安装完成后,第一时间执行 sudo apt update && sudo apt upgrade -y,把系统包更新到最新。这一步能避免很多因为系统组件过旧导致的兼容性问题。

4.2 Docker 与 Docker Compose 安装

好,系统装好了,接下来装Docker。Docker这东西,说白了就是把你的应用连同它的运行环境打包成一个“集装箱”。咱们后面部署ChirpStack,用Docker一键启动,比手动装依赖、配环境变量省心一百倍。

安装Docker,我推荐用官方脚本,一行命令搞定:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

脚本跑完后,验证一下:

sudo docker version

能看到Client和Server版本信息,就说明装好了。

接下来装Docker Compose。Docker Compose是用来定义和运行多容器Docker应用的工具。咱们后面要同时启动ChirpStack的多个服务(网关桥接、网络服务器、应用服务器),用Compose一个文件全搞定。

安装Docker Compose,我建议用官方GitHub Release下载二进制文件:

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

验证:

docker-compose --version
注意:如果你用的是非root用户,记得把用户加入docker组,否则每次执行docker命令都要加sudo。命令如下:
sudo usermod -aG docker $USER
然后退出重新登录,或者执行 newgrp docker 使组生效。

4.3 防火墙与端口规划

环境搭好了,接下来是防火墙。很多新手在这一步翻车——服务明明跑起来了,但就是连不上。一查,防火墙没放行端口。

Ubuntu 22.04默认用的是ufw(Uncomplicated Firewall)。名字就叫“不复杂的防火墙”,确实简单。

先启用ufw:

sudo ufw enable

然后放行SSH端口(否则你远程会断连,我曾经犯过这个错,尴尬得很):

sudo ufw allow 22/tcp

接下来,咱们规划一下LoRaWAN服务器需要用到的端口。我整理了一张表,你照着放行就行:

端口 协议 用途 说明
1700 UDP LoRa网关数据上行 网关通过这个端口向服务器发送数据
8080 TCP ChirpStack应用服务器Web界面 你通过浏览器访问这个端口管理设备
8081 TCP ChirpStack应用服务器API 供外部程序调用,比如Node-RED
1883 TCP MQTT Broker 设备上下行数据通过MQTT转发
5432 TCP PostgreSQL数据库 ChirpStack使用PostgreSQL存储数据

放行这些端口的命令:

sudo ufw allow 1700/udp
sudo ufw allow 8080/tcp
sudo ufw allow 8081/tcp
sudo ufw allow 1883/tcp
sudo ufw allow 5432/tcp

查看防火墙状态:

sudo ufw status verbose

嗯,到这里,你的服务器环境就准备好了。Ubuntu系统跑起来了,Docker和Compose装好了,防火墙也按需放行了端口。后面咱们就可以放心地部署LoRaWAN服务了。

核心逻辑总结:本章节的知识体系可以用下面这张图来概括。它展示了从操作系统到容器化环境,再到网络策略的完整链路。
环境准备知识体系 Ubuntu 22.04 LTS 操作系统基础 Docker 容器化运行环境 Docker Compose 多容器编排 防火墙与端口规划 (ufw) 1700/UDP | 8080/TCP | 8081/TCP | 1883/TCP | 5432/TCP LoRaWAN 服务器运行环境就绪

这张图把咱们今天做的事串起来了。从最底层的Ubuntu系统,到Docker容器引擎,再到Docker Compose编排工具,最后用防火墙把端口规划好。一层叠一层,最终得到一个干净、可用的LoRaWAN服务器运行环境。

避坑指南:我曾经在部署完所有服务后,发现网关死活连不上服务器。排查了半天,最后发现是防火墙只放行了TCP端口,忘了放行1700/UDP。LoRa网关用的是UDP协议,这个端口不放行,数据根本进不来。所以,端口协议类型一定要看清楚。

好了,环境准备好了。下一章咱们就开始部署ChirpStack,把LoRaWAN网络服务器真正跑起来。


专注资料整理