前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >The Things Network LoRaWAN Stack V3 学习笔记 2.1 运行准备

The Things Network LoRaWAN Stack V3 学习笔记 2.1 运行准备

作者头像
twowinter
发布2020-04-17 18:20:03
8850
发布2020-04-17 18:20:03
举报
文章被收录于专栏:twowintertwowinter

1 证书准备

为了让内容可以使用 TLS 进行传输,整个 Stack 需要 cert.pemkey.pem

实际上 在 make init 之后,已经自动创建了。

代码语言:javascript
复制
lorawan-stack  Generating certificates
2019/03/15 15:24:06 wrote cert.pem
2019/03/15 15:24:06 wrote key.pem
make[1]: Leaving directory '/home/ubuntu/lorawan-stack'

自签名证书会出现浏览器和OS不信任的情况,导致一些警告或者错误。可以考虑使用 Let’s Encrypt 申请免费的 TLS 证书。

2 频点计划配置

By default, frequency plans are fetched by the stack from the TheThingsNetwork/lorawan-frequency-plans repository. To set a new source:

  • TTN_LW_FREQUENCY_PLANS_URL allows you to serve frequency plans fetched from a HTTP server.
  • TTN_LW_FREQUENCY_PLANS_DIRECTORY allows you to serve frequency plans from a local directory.

配置其实支持3种方式:

  • 启动时的命令参数
  • -c 选项解析 yml文件
  • 环境变量

3 数据库启动

3.1 CockroachDB

CockroachDB 是一个分布式数据库,被用在了项目中的 Identity Server。

具体安装方法 点击这里

代码语言:javascript
复制
cockroach start --http-port 26256 --insecure

3.2 Redis

Redis 是个比较流行的内存数据存储的数据库,在这个项目中也有用到。

具体安装方法 点击这里

代码语言:javascript
复制
redis-server --appendonly yes

4 Identity Server 的初始化及用户创建

必须保证 cockroach 先运行起来。

代码语言:javascript
复制
$ ./ttn-lw-stack is-db init
  INFO Connecting to Identity Server database...
  INFO Detected database CockroachDB CCL v2.1.6 (x86_64-unknown-linux-gnu, built 2019/03/04 23:21:07, go1.10.7)
  INFO Creating database "ttn_lorawan_dev"...
  INFO Creating tables in "ttn_lorawan_dev"...
  INFO Successfully initialized
代码语言:javascript
复制
$ ./ttn-lw-stack is-db create-admin-user --id admin --email admin@localhost
  INFO Connecting to Identity Server database...
Please enter user password:**
Please repeat user password:**
  INFO Creating user...
  INFO Created user

5 OAUTH 客户端注册

5.1 CLI 注册 OAUTH 客户端

代码语言:javascript
复制
$ ./ttn-lw-stack is-db create-oauth-client \
  --id cli \
  --name "Command Line Interface" \
  --owner admin \
  --no-secret \
  --redirect-uri 'local-callback' \
  --redirect-uri 'code'

5.2 Console 注册 OAUTH 客户端

代码语言:javascript
复制
$ ./ttn-lw-stack is-db create-oauth-client \
   --id console --name "Console" \
   --owner admin \
   --redirect-uri 'http://example.com:1885/console/oauth/callback' \
   --redirect-uri 'https://example.com:8885/console/oauth/callback'
  INFO Connecting to Identity Server database...
  INFO Creating OAuth client...
  INFO Created OAuth client                     secret=TQVLMKM2RR26VDCEXSWWEM7CKNS7T4GPB67L32SVXQHW24QGLY7Q

// 这里的 redirect-uri 没想好怎么用,得再深入研究下 OAuth。

6 环境变量

在 docker yaml 文件内,还可以看到定义了一些环境变量。

代码语言:javascript
复制
      - TTN_LW_HTPP_COOKIE_HASH_KEY
      - TTN_LW_HTTP_COOKIE_BLOCK_KEY
      - TTN_LW_CLUSTER_KEYS
      - TTN_LW_FREQUENCY_PLANS_URL
      - TTN_LW_CONSOLE_OAUTH_CLIENT_SECRET
	  
      - TTN_LW_IS_DATABASE_URI=postgres://root@cockroach:26257/${DEV_DATABASE_NAME:-ttn_lorawan}?sslmode=disable
      - TTN_LW_REDIS_ADDRESS=redis:6379
	  
      - TTN_LW_TLS_CERTIFICATE=/run/secrets/cert.pem
      - TTN_LW_CA=/run/secrets/cert.pem
      - TTN_LW_TLS_KEY=/run/secrets/key.pem

为了简单方便,写个脚本。重点把 CONSOLE_OAUTH_CLIENT_SECRET 配置下,以及把证书文件的路径调整一下。

代码语言:javascript
复制
export TTN_LW_COOKIE_HASHKEY=
export TTN_LW_COOKIE_BLOCKKEY=
export TTN_LW_CLUSTER_KEYS=
export TTN_LW_FREQUENCY_PLANS_URL=
export TTN_LW_CONSOLE_OAUTH_CLIENT_SECRET=TQVLMKM2RR26VDCEXSWWEM7CKNS7T4GPB67L32SVXQHW24QGLY7Q

export TTN_LW_IS_DATABASE_URI=postgres://root@localhost:26257/ttn_lorawan_dev?sslmode=disable
export TTN_LW_REDIS_ADDRESS=localhost:6379
export TTN_LW_TLS_CERTIFICATE=/home/ubuntu/lorawan-stack/cert.pem
export TTN_LW_CA=/home/ubuntu/lorawan-stack/cert.pem
export TTN_LW_TLS_KEY=/home/ubuntu/lorawan-stack/key.pem

7 运行

代码语言:javascript
复制
./ttn-lw-stack start

可以在脚本里加上这一句,一起跑起来。

代码语言:javascript
复制
ubuntu@VM-0-6-ubuntu:~/lorawan-stack$ ./run.sh
  INFO Setting up core component
  WARN No cookie hash key configured, generated a random one hash_key=37588D493A48C90BC9F9BFB2D54B3940F8B0BF79934C30DFA5E1E412E0F2D09B904554FCE192B3C4FF7B7FB11F564DD805DBD730B7244189B651C4B3BC5CD569 namespace=web
  WARN No cookie block key configured, generated a random one block_key=88DAC6E8003625D5F200CF969BAB793DCD3D735E2E73531F6BAE2D800D33DEEC namespace=web
  INFO Setting up Identity Server
  INFO Setting up Gateway Server
  INFO Setting up Network Server
  INFO Setting up Application Server
  INFO Setting up Join Server
  INFO Starting...
  INFO Listening for gRPC connections           address=:1884 namespace=grpc
  INFO Listening for gRPC/tls connections       address=:8884 namespace=grpc
  INFO Listening for HTTP connections           address=:1885 namespace=web
  INFO Listening for HTTPS connections          address=:8885 namespace=web
  WARN No cluster key configured, generated a random one key=c9c8fe8eaae03f4f044c64868ee5316e93e935552bd344fb65a6deecaa0d32df

END

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 证书准备
  • 2 频点计划配置
  • 3 数据库启动
    • 3.1 CockroachDB
      • 3.2 Redis
      • 4 Identity Server 的初始化及用户创建
      • 5 OAUTH 客户端注册
        • 5.1 CLI 注册 OAUTH 客户端
          • 5.2 Console 注册 OAUTH 客户端
          • 6 环境变量
          • 7 运行
          • END
          相关产品与服务
          访问管理
          访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档