Docker + Caddy

Caddy 比 Nginx 更简单,因为它可以自动申请证书。

您需要先启动项目容器,然后再安装和配置 Caddy,否则证书申请可能会失败。

如何获得的key和secret?

1. 复制基础配置

以下是vocespace的基础配置,在启动容器前你需要将该配置复制并在启动时指定

1{
2  "livekit": {
3    "key": "devkey",
4    "secret": "secret",
5    "url": "wss://your.server.name"
6  },
7  "codec": "vp9",
8  "resolution": "1080p",
9  "maxBitrate": 3000000,
10  "maxFramerate": 30,
11  "priority": "medium",
12  "redis": { 
13    "enabled": true, 
14    "host": "your.ip", 
15    "port": 6379, 
16    "password": "vocespace", 
17    "db": 0 
18  },
19  "server_url": "your.server.name"
20}
WARNING

your.ip: 用户宿主机的IP地址,可以使用ifconfig | grep inet进行查看

1inet 127.0.0.1 netmask 0xff000000
2inet 192.168.31.138 netmask 0xffffff00 broadcast 192.168.31.255

在这个例子中 192.168.31.138 就是你的宿主机IP

your.server.name: 用于部署的域名

2. 使用 Docker 部署应用

获取 VoceSpace 镜像

VoceSpace含有两种镜像:

  • amd: privoce/vocespace:latest
  • arm: privoce/vocespace:latest_arm

所以您需要知道自己当前的服务器架构进行选择, 见: help-查看自己的linux架构

1# amd
2docker pull privoce/vocespace:latest
3# arm
4docker pull privoce/vocespace:latest_arm

启动容器

您需要先启动项目容器,然后再安装和配置 Caddy,否则证书申请可能会失败。

1docker run -d \
2  -p 3000:3000 \
3  -v ${PWD}/vocespace.conf.json:/app/vocespace.conf.json \
4  --name vocespace \
5  privoce/vocespace:latest
NOTE
  • -p 3000:3000:将容器的 3000 端口映射至宿主机 3000 端口。
  • -v ${PWD}/vocespace.conf.json:/app/vocespace.conf.json: 将配置进行映射
  • --name:给容器命名,便于后续管理。

3. 安装并配置Caddy

INFO

以下为 Ubuntu/Debian 安装方式

其他类型请参考:Caddy install

3.1 安装Caddy

1sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
2curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
3curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
4sudo apt update
5sudo apt install caddy

3.2 配置Caddy

Caddy支持多种方式进行配置,同时也直接支持使用nginx conf的方式

WARNING

请确保您已经购买了域名并进行了DNS解析

1vim /etc/caddy/Caddyfile
1your.server.name {
2    # webrtc
3    handle /rtc* {
4        reverse_proxy localhost:7880 {
5            header_up Host {host}
6            header_up Upgrade {http.request.header.Upgrade}
7            header_up Connection {http.request.header.Connection}
8            header_up X-Real-IP {remote_host}
9            header_up X-Forwarded-For {remote_host}
10            header_up X-Forwarded-Proto {scheme}
11        }
12    }
13
14    handle /socket.io/* {
15        reverse_proxy localhost:3000 {
16            header_up Host {host}
17            header_up Upgrade {http.request.header.Upgrade}
18            header_up Connection {http.request.header.Connection}
19            header_up X-Real-IP {remote_host}
20            header_up X-Forwarded-For {remote_host}
21            header_up X-Forwarded-Proto {scheme}
22        }
23    }
24
25    # main app https
26    handle {
27        reverse_proxy localhost:3000 {
28            header_up Host {host}
29            header_up Upgrade {http.request.header.Upgrade}
30            header_up Connection {http.request.header.Connection}
31            header_up X-Real-IP {remote_host}
32            header_up X-Forwarded-For {remote_host}
33            header_up X-Forwarded-Proto {scheme}
34        }
35    }
36
37    # log optional
38    #log {
39    #    output file /var/log/caddy/your.server.name.log
40    #    level DEBUG
41    #}
42}

4. 启动 livekit-server

和本地部署一样您同样需要启动livekit-server来支持webrtc, 您可以选择和本地部署一样下载livekit进行启动,也可以使用docker部署

本地
Docker

下载 livekit-server

1curl -sSL https://get.livekit.io | bash

完成下载后一般都会在/usr/local/bin/livekit-server

创建配置

我们提供了一份极简配置帮助您进行快速部署,首先创建配置文件vim /etc/livekit.yml

1port: 7880
2bind_addresses:
3    - "0.0.0.0"
4rtc:
5    tcp_port: 7881
6    port_range_start: 50000
7    port_range_end: 60000
8    use_external_ip: true
9    enable_loopback_candidate: false
10turn:
11    enabled: false
12    domain: turn.vocespace.xyz
13    tls_port: 5349
14    udp_port: 3478
15    external_tls: true
16keys:
17  devkey: secret

使用 nohup 后台启动

通过使用 nohup 您可以在后台启动livekit-server并将日志输出到/usr/local/bin/logs/livekit_output.log以便于查看

1nohup /usr/local/bin/livekit-server --config /etc/livekit.yml > /usr/local/bin/logs/livekit_output.log 2>&1 &

5. 下载并启动redis

Macos
Windows
Linux
1brew install redis
2brew services start redis -- --requirepass "vocespace" --bind 0.0.0.0 --protected-mode no

Caddy重启并开机自启动

1systemctl stop caddy
2systemctl enabled caddy
3systemctl start caddy

云服务器说明

配置安全组/防火墙

在使用云服务器时,例如:阿里云,腾讯云,Google Cloud等,您需要对服务器等安全组/防火墙进行相关配置

port type ingress/egress allow ip
3000 tcp ingress 0.0.0.0/0 Ipv4
3000 tcp egress 0.0.0.0/0 Ipv4
7880 tcp ingress 0.0.0.0/0 Ipv4
7881 tcp ingress 0.0.0.0/0 Ipv4
80 tcp ingress 0.0.0.0/0 Ipv4
443 tcp ingress 0.0.0.0/0 Ipv4
50000~60000 udp ingress 0.0.0.0/0 Ipv4

Caddy重启并开机自启动

1systemctl stop caddy
2systemctl enabled caddy
3systemctl start caddy