# Getting Started with Ubuntu

Ubuntu에서 OvenMediaEngine Enterprise를 시작하려면 아래 [전제 조건](#undefined)을 확인한 후 [설치 방법](#undefined-2)을 따라 진행하십시오.

## 전제 조건

### OS 요구사항

OvenMediaEngine Enterprise를 설치하려면 아래 Ubuntu 버전 중 하나가 필요합니다.

* Ubuntu 24.04 LTS
* Ubuntu 22.04 LTS
* Ubuntu 20.04 LTS

## 설치  경로

기본적으로 OvenMediaEngine Enterprise는 다음 경로에 설치 됩니다.

* 설치 경로: `/usr/share/ovenmediaengine`
* 로그 경로: `/var/log/ovenmediaengine`

## 설치 방법

### `apt` Repository를 사용하여 설치

새로운 서버에 OvenMediaEngine Enterprise를 처음 설치 할 때, `apt` Repository를 먼저 설정해야 합니다. 그 이후 Repository를 통해 지속적인 설치 및 업데이트를 할 수 있습니다.

#### OvenMediaEngine 설치용 `apt` Repository 설정

Repository를 설정하려면 유효한 License Key가 필요합니다.

{% code overflow="wrap" fullWidth="false" %}
```bash
# You may need to install curl and/or gpg first, if you're on a very minimal host
sudo apt update
sudo apt install curl gpg -y

VALID_LICENSE_KEY="Your.License.Key"

# Install the registry signing key
curl -fsSL "https://buildkite:$VALID_LICENSE_KEY@packages.buildkite.com/ovenmediaengine/ubuntu/gpgkey" | sudo gpg --dearmor -o /etc/apt/keyrings/ovenmediaengine_ubuntu-archive-keyring.gpg

# Stash the private registry credentials into apt auth.conf
echo "machine https://packages.buildkite.com/ovenmediaengine/ubuntu/ login buildkite password $VALID_LICENSE_KEY" | sudo tee /etc/apt/auth.conf.d/ovenmediaengine_ubuntu.conf
sudo chmod 600 /etc/apt/auth.conf.d/ovenmediaengine_ubuntu.conf

# Configure the source
echo -e "deb [signed-by=/etc/apt/keyrings/ovenmediaengine_ubuntu-archive-keyring.gpg] https://packages.buildkite.com/ovenmediaengine/ubuntu/any/ any main\ndeb-src [signed-by=/etc/apt/keyrings/ovenmediaengine_ubuntu-archive-keyring.gpg] https://packages.buildkite.com/ovenmediaengine/ubuntu/any/ any main" | sudo tee /etc/apt/sources.list.d/buildkite-ovenmediaengine-ubuntu.list
```
{% endcode %}

#### 패키지 설치

{% tabs %}
{% tab title="최신 버전" %}
다음 명령어들을 통해 최신 버전을 설치 할 수 있습니다.

```bash
sudo apt update
sudo apt install ovenmediaengine
```
{% endtab %}

{% tab title="특정 버전" %}
특정 버전의 OvenMediaEngine Enterprise를 설치하려면, 먼저 Repository에서 사용 가능한 버전을 확인 하세요.

```bash
# List the available versions
apt-cache madison ovenmediaengine | awk '{ print $3 }'

0.17.2.4-1
...
```

원하는 버전을 선택 한 후 설치하세요.

```bash
VERSION=0.17.2.4-1
sudo apt update
sudo apt install ovenmediaengine=$VERSION
```
{% endtab %}
{% endtabs %}

{% hint style="success" %}
설치가 완료되면 [설치 후 단계](#undefined-12)를 확인해 주세요.
{% endhint %}

#### 패키지 삭제

다음 명령어를 통해 OvenMediaEngine Enterpirse를 삭제 할 수 있습니다.

```bash
sudo apt purge ovenmediaengine
```

### 패키지 파일로 설치

#### 다운로드

OvenMediaEngine Enterprise는 `deb` 패키지로 제공됩니다. OME Enterprise 팀으로부터 `deb` 패키지를 다운로드 받을 수 있는 링크를 전달 받았다면, 해당 파일을 다운로드 한 후 아래 가이드를 따라 설치 및 실행하십시오.

#### 설치

다음 명령어를 통해 OvenMediaEngine Enterpirse를 설치 할 수 있습니다.

```bash
sudo dpkg -i <ovenmediaengine-enterprise-package>.deb
Selecting previously unselected package ovenmediaengine.
(Reading database ... 72282 files and directories currently installed.)
Preparing to unpack <ovenmediaengine-enterprise-package>.deb ...
Unpacking ovenmediaengine (<version>) ...
Setting up ovenmediaengine (<version>) ...

# If you are upgrading, please run "systemctl daemon-reload"
sudo systemctl daemon-reload
```

{% hint style="info" %}
**`/usr/share/ovenmediaengine`** 경로에 이미 OvenMediaEngine이 설치되어 있는 경우 자동 업그레이드 되며, 기존 설정 파일 또한 유지됩니다.
{% endhint %}

{% hint style="success" %}
설치가 완료되면 [설치 후 단계](#undefined-12)를 확인해 주세요.
{% endhint %}

#### 삭제

다음 명령어를 통해 OvenMediaEngine Enterpirse를 삭제 할 수 있습니다.

```bash
dpkg -r ovenmediaengine

# 설정 파일 포함 삭제
dpkg -P ovenmediaengine
```

{% hint style="info" %}
수정 된 각종 설정 파일들은 수동으로 삭제해야 합니다.
{% endhint %}

## 설치 후 단계

### License Key 등록

OvenMediaEngine을 실행하기 전, 유효한 License Key를 등록해야 합니다.

```bash
echo 'Your.License.Key' | sudo tee /usr/share/ovenmediaengine/conf/License
```

### Host IP 설정

Web Console (ovenstudio)을 원활하게 사용하기 위해서는 서버의 Host IP를 설정해야 합니다.

자세한 설정 방법은 [여기](../../web-console/getting-started-with-web-console)를 확인해 주세요.

```bash
echo -e '\nOME_HOST_IP=Your.HOST.IP.Address' | sudo tee -a /usr/share/ovenmediaengine/ovenstudio/system.env
```

### 실행

다음 명령어들을 통해 OvenMediaEngine Enterprise를 실행 할 수 있습니다.

```bash
# Start OvenMediaEngine
sudo systemctl start ovenmediaengine
# Start Web Console (OvenStudio)
sudo systemctl start ovenstudio
# Start OvenMediaEngine Delivery Module
sudo systemctl start ovenmediaengine-delivery

# If you want to auto-start on boot
sudo systemctl enable ovenmediaengine
sudo systemctl enable ovenstudio
sudo systemctl enable ovenmediaengine-delivery
```

## 기본 설정 포트

OvenMediaEngine Enterprise는 기본적으로 아래 나열된 포트를 사용하므로 방화벽 설정이 필요합니다.

### OvenMediaEngine

<table><thead><tr><th width="200">Port</th><th>Purpose</th></tr></thead><tbody><tr><td>1935/TCP</td><td>RTMP Input</td></tr><tr><td>9999/UDP</td><td>SRT Input</td></tr><tr><td>4000/UDP</td><td>MPEG-2 TS Input</td></tr><tr><td>9000/TCP</td><td>Origin Server (OVT)</td></tr><tr><td><p>3333/TCP</p><p>3334/TLS</p></td><td><p>Low Latency HLS (LLHLS) Streaming</p><p><em><mark style="color:red;">* Streaming over non-TLS is not allowed with modern browsers.</mark></em></p></td></tr><tr><td><p>3333/TCP</p><p>3334/TLS</p></td><td>WebRTC Signaling (both ingest and streaming)</td></tr><tr><td>3478/TCP</td><td>WebRTC TCP relay (TURN Server, both ingest and streaming)</td></tr><tr><td>10000 - 10009/UDP</td><td>WebRTC Ice candidate (both ingest and streaming)</td></tr><tr><td><p>20080/TCP</p><p>20081/TLS</p></td><td>Thumbnail Extraction</td></tr></tbody></table>

### Web Console (OvenStudio)

<table><thead><tr><th width="200">Port</th><th>Purpose</th></tr></thead><tbody><tr><td>8080/TCP</td><td>Running Web Console</td></tr></tbody></table>

### 방화벽 설정 예제

다음 예제와 같이 방화벽을 열 수 있습니다.

```bash
sudo ufw allow from any to any port 3333 proto tcp
sudo ufw allow from any to any port 3334 proto tcp
sudo ufw allow from any to any port 1935 proto tcp
sudo ufw allow from any to any port 9999 proto udp
sudo ufw allow from any to any port 4000 proto udp
sudo ufw allow from any to any port 3478 proto tcp
sudo ufw allow from any to any port 9000 proto tcp
sudo ufw allow from any to any port 10000:10009 proto udp
sudo ufw allow from any to any port 8080 proto tcp
```
