-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
102 lines (95 loc) · 4.29 KB
/
Copy pathdocker-compose.yml
File metadata and controls
102 lines (95 loc) · 4.29 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# InterView - full service stack.
#
# Works with `docker compose` and with `podman-compose` (the production host runs
# rootless podman). All published ports are >1024 so no root is needed.
#
# Not included, by design:
# - MongoDB. The logging backend points at an existing external instance.
# - TLS / vhosts. A reverse proxy in front of this stack terminates HTTPS and
# maps the public hostnames onto the ports below. See docs/setup.md.
#
# Copy .env.example to .env and fill it in before starting anything.
services:
# ---------------------------------------------------------------------------
# Janus - WebRTC SFU. Carries interviewer<->interviewee audio/video (videoroom)
# and the control channel (textroom).
#
# The image is built and documented separately:
# https://github.com/texttechnologylab/Janus-Gateway
# It ships Janus's stock configuration; ./janus/conf.d holds only the two files
# InterView actually changes, which are layered over the defaults at startup.
#
# network_mode: host is REQUIRED, not a shortcut. ICE has to see the real
# interface to build usable candidates, and the RTP range in janus.jcfg
# (20000-20100) would otherwise need to be published port by port.
# ---------------------------------------------------------------------------
janus:
image: ghcr.io/texttechnologylab/janus-gateway:${JANUS_TAG:-1.4.2}
container_name: interview-janus
network_mode: host
volumes:
- ./janus/conf.d:/etc/janus.d:ro
- ${RECORDINGS_DIR:-./data/recordings}:/mnt/recordings:z
restart: unless-stopped
# ---------------------------------------------------------------------------
# coturn - TURN relay. Optional: only needed when clients sit behind NATs that
# STUN cannot traverse. In practice the VR headsets on university wifi do need it.
# Also host-networked, for the same ICE reasons as Janus.
# ---------------------------------------------------------------------------
coturn:
image: docker.io/coturn/coturn:latest
container_name: interview-coturn
network_mode: host
volumes:
- ./coturn/turnserver.conf:/etc/coturn/turnserver.conf:ro
- coturn-data:/var/lib/coturn
command: ["-c", "/etc/coturn/turnserver.conf"]
restart: unless-stopped
# ---------------------------------------------------------------------------
# Ubiq - room/session server for the VR side. Keeps avatar, transform and
# ownership state in sync between headsets. Not involved in audio/video.
# 8009 = TCP room server (what the Unity client connects to)
# 8011 = status/metrics
# ---------------------------------------------------------------------------
ubiq:
image: docker.texttechnologylab.org/vasili/ubiq-server:latest
container_name: interview-ubiq
ports:
- "${UBIQ_TCP_PORT:-16485}:8009"
- "${UBIQ_STATUS_PORT:-16486}:8011"
restart: unless-stopped
# ---------------------------------------------------------------------------
# Va.Si.Li-Lab database API - scene definitions plus the logging endpoints that
# every tracking sample, event and questionnaire answer is written through.
# Writes to an external MongoDB.
# ---------------------------------------------------------------------------
database-api:
image: docker.texttechnologylab.org/vasili/database-api:0.2
container_name: interview-database-api
environment:
PORT: 16481
DB_SERVER: ${DB_SERVER}
DB_PORT: ${DB_PORT}
DB_NAME: ${DB_NAME}
DB_USERNAME: ${DB_USERNAME}
DB_PASSWORD: ${DB_PASSWORD}
X_API_KEY: ${X_API_KEY}
ports:
- "${DATABASE_API_PORT:-16481}:16481"
restart: unless-stopped
# ---------------------------------------------------------------------------
# Web client - static nginx serving the interviewer and interviewee pages.
# Source lives in ./website. Janus and TURN endpoints are configured in
# website/janus-html/settings.js - see docs/services/web_client.md. It is a
# static file, so changing it requires rebuilding this image.
# ---------------------------------------------------------------------------
website:
build:
context: ./website
image: interview/website:local
container_name: interview-website
ports:
- "${WEBSITE_PORT:-18800}:80"
restart: unless-stopped
volumes:
coturn-data: