sueta / deploy / deploy-server.sh
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env bash
# Deploys the signaling daemon + coturn config to the box.
# Usage: deploy/deploy-server.sh [host]   (default root@78.47.93.79)
# The shared secret is created once on the box and reused on redeploys.
set -euo pipefail
cd "$(dirname "$0")/.."

HOST="${1:-root@78.47.93.79}"

echo "== building linux/amd64 binary"
(cd server && GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o ../deploy/.out/sueta-signal .)

echo "== ensuring shared secret on $HOST"
SECRET=$(ssh "$HOST" 'f=/etc/sueta-signal.secret; [ -f $f ] || (umask 077; openssl rand -hex 32 > $f); cat $f')

echo "== rendering configs"
sed "s/__STATIC_AUTH_SECRET__/$SECRET/" deploy/turnserver.conf > deploy/.out/turnserver.conf
sed "s/__STATIC_AUTH_SECRET__/$SECRET/" deploy/sueta-signal.env.example > deploy/.out/sueta-signal.env

echo "== uploading"
scp -q deploy/.out/sueta-signal "$HOST:/usr/local/bin/sueta-signal.new"
scp -q deploy/.out/turnserver.conf "$HOST:/etc/turnserver.conf"
scp -q deploy/.out/sueta-signal.env "$HOST:/etc/sueta-signal.env"
scp -q deploy/sueta-signal.service "$HOST:/etc/systemd/system/sueta-signal.service"
rm -f deploy/.out/turnserver.conf deploy/.out/sueta-signal.env

echo "== activating"
ssh "$HOST" '
  set -e
  chmod 600 /etc/sueta-signal.env /etc/sueta-signal.secret
  mv /usr/local/bin/sueta-signal.new /usr/local/bin/sueta-signal
  chmod 755 /usr/local/bin/sueta-signal
  systemctl daemon-reload
  systemctl enable --now sueta-signal
  systemctl restart sueta-signal coturn
  sleep 1
  systemctl --no-pager --quiet is-active sueta-signal coturn && echo "both services active"
'
echo "== done"