blenders commited on
Commit
5dbd0ed
·
1 Parent(s): e688918
Files changed (1) hide show
  1. init.sh +38 -57
init.sh CHANGED
@@ -1,87 +1,68 @@
1
  #!/usr/bin/env bash
2
  set -euo pipefail
3
 
4
- KEY_PATH="/home/appuser/app/private.pem"
5
  SSH_USER="blendersb.turn"
6
  SSH_HOST="blendersb-45318.portmap.host"
7
  SSH_REMOTE_PORT=45318
8
  LOCAL_TARGET_PORT=7860
9
  SSH_LOG="/home/appuser/ssh-tunnel.log"
10
 
11
- # Ensure the app dir exists
12
- mkdir -p "$(dirname "$KEY_PATH")"
 
 
 
13
 
14
- write_key_from_env() {
15
- if [ -n "${PORTMAP_SECRET}" ]; then
16
- # Convert literal \n into real newlines
 
17
  printf '%b' "$PORTMAP_SECRET" > "$KEY_PATH"
18
- echo "$PORTMAP_SECRET"
19
- chmod 600 "$KEY_PATH" || true
20
- # chown may fail if not root; ignore errors
21
  chown appuser:appuser "$KEY_PATH" 2>/dev/null || true
22
  echo "Wrote private key to $KEY_PATH (from env var)."
23
- return 0
24
- fi
25
-
26
- return 1
27
- }
28
-
29
- # If the key already exists (e.g., mounted), keep it
30
- if [ -f "$KEY_PATH" ]; then
31
- echo "Found existing key at $KEY_PATH"
32
- chmod 600 "$KEY_PATH" || true
33
- chown appuser:appuser "$KEY_PATH" 2>/dev/null || true
34
- cat "$KEY_PATH"
35
- KEY_AVAILABLE=1
36
  else
37
- if write_key_from_env; then
38
- KEY_AVAILABLE=1
39
- else
40
- KEY_AVAILABLE=0
41
- fi
42
  fi
43
 
44
  SSH_PID=""
45
 
46
  start_ssh_tunnel() {
47
- if [ "$KEY_AVAILABLE" -eq 1 ]; then
48
- echo "Starting SSH reverse tunnel to ${SSH_HOST}:${SSH_REMOTE_PORT} -> localhost:${LOCAL_TARGET_PORT}"
49
- # Put ssh in background; redirect logs
50
- nohup ssh -i "$KEY_PATH" \
51
- "${SSH_USER}@${SSH_HOST}" \
52
- -N -R "${SSH_REMOTE_PORT}:localhost:${LOCAL_TARGET_PORT}" >"$SSH_LOG" 2>&1 &
53
- SSH_PID=$!
54
- echo "SSH tunnel started (pid=${SSH_PID}); logging to $SSH_LOG"
55
- else
56
- echo "No key available; skipping SSH tunnel."
57
- fi
58
  }
59
 
60
  stop_ssh_tunnel() {
61
- if [ -n "${SSH_PID:-}" ] && kill -0 "$SSH_PID" >/dev/null 2>&1; then
62
- echo "Stopping SSH tunnel (pid=${SSH_PID})..."
63
- kill "$SSH_PID" || true
64
- # give it a moment
65
- sleep 1
66
- if kill -0 "$SSH_PID" >/dev/null 2>&1; then
67
- echo "Killing SSH tunnel (pid=${SSH_PID})..."
68
- kill -9 "$SSH_PID" || true
69
  fi
70
- fi
71
  }
72
 
73
- # Trap signals to clean up background processes
74
  trap 'echo "Received SIGTERM/SIGINT, shutting down..."; stop_ssh_tunnel; exit 0' TERM INT
75
 
76
- # Start the tunnel if we have a key
77
  start_ssh_tunnel
78
 
79
- # Exec turnserver as PID 1 (foreground). If you prefer background + wait, change accordingly.
80
- echo "Starting turnserver..."
81
  exec turnserver -c /etc/coturn/turnserver.conf \
82
- --listening-port=7860 \
83
- --tls-listening-port=5349 \
84
- --user=myuser:mypassword \
85
- --log-file=stdout \
86
- --simple-log \
87
- --no-cli
 
1
  #!/usr/bin/env bash
2
  set -euo pipefail
3
 
4
+ # Variables
5
  SSH_USER="blendersb.turn"
6
  SSH_HOST="blendersb-45318.portmap.host"
7
  SSH_REMOTE_PORT=45318
8
  LOCAL_TARGET_PORT=7860
9
  SSH_LOG="/home/appuser/ssh-tunnel.log"
10
 
11
+ # Ensure ~/.ssh exists with correct permissions
12
+ SSH_DIR="/home/appuser/.ssh"
13
+ mkdir -p "$SSH_DIR"
14
+ chmod 700 "$SSH_DIR"
15
+ chown appuser:appuser "$SSH_DIR" 2>/dev/null || true
16
 
17
+ KEY_PATH="$SSH_DIR/private.pem"
18
+
19
+ # Write secret to key file if PORTMAP_SECRET env var exists
20
+ if [ -n "${PORTMAP_SECRET:-}" ]; then
21
  printf '%b' "$PORTMAP_SECRET" > "$KEY_PATH"
22
+ chmod 600 "$KEY_PATH"
 
 
23
  chown appuser:appuser "$KEY_PATH" 2>/dev/null || true
24
  echo "Wrote private key to $KEY_PATH (from env var)."
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  else
26
+ echo "No PORTMAP_SECRET provided; skipping PEM creation."
 
 
 
 
27
  fi
28
 
29
  SSH_PID=""
30
 
31
  start_ssh_tunnel() {
32
+ if [ -f "$KEY_PATH" ]; then
33
+ echo "Starting SSH reverse tunnel to ${SSH_HOST}:${SSH_REMOTE_PORT} -> localhost:${LOCAL_TARGET_PORT}"
34
+ nohup ssh -i "$KEY_PATH" \
35
+ "${SSH_USER}@${SSH_HOST}" \
36
+ -N -R "${SSH_REMOTE_PORT}:localhost:${LOCAL_TARGET_PORT}" >"$SSH_LOG" 2>&1 &
37
+ SSH_PID=$!
38
+ echo "SSH tunnel started (pid=${SSH_PID}); logging to $SSH_LOG"
39
+ else
40
+ echo "No private key found; skipping SSH tunnel."
41
+ fi
 
42
  }
43
 
44
  stop_ssh_tunnel() {
45
+ if [ -n "${SSH_PID:-}" ] && kill -0 "$SSH_PID" >/dev/null 2>&1; then
46
+ echo "Stopping SSH tunnel (pid=${SSH_PID})..."
47
+ kill "$SSH_PID" || true
48
+ sleep 1
49
+ if kill -0 "$SSH_PID" >/dev/null 2>&1; then
50
+ kill -9 "$SSH_PID" || true
51
+ fi
 
52
  fi
 
53
  }
54
 
55
+ # Trap termination signals
56
  trap 'echo "Received SIGTERM/SIGINT, shutting down..."; stop_ssh_tunnel; exit 0' TERM INT
57
 
58
+ # Start SSH tunnel
59
  start_ssh_tunnel
60
 
61
+ # Start coturn in foreground
 
62
  exec turnserver -c /etc/coturn/turnserver.conf \
63
+ --listening-port=7860 \
64
+ --tls-listening-port=5349 \
65
+ --user=myuser:mypassword \
66
+ --log-file=stdout \
67
+ --simple-log \
68
+ --no-cli