Frequently Asked Questions

Installation Questions

Display shows “Error response from daemon: toomanyrequests: Rate exceeded”

Question: I’m getting an error when retrieving Docker images.

Answer: There’s congestion when retrieving the Docker image. Wait for a while and then re-run the installer shell script.


Unable to Pull Container Image via Proxy

Question: I cannot retrieve container images via proxy internet connection.

Answer: You’ll need to add the proxy settings to the Docker daemon.

  1. Docker Daemon Configuration
    Create an http-proxy.conf file inside the /etc/systemd/system/docker.service.d/ directory.

    sudo mkdir -p /etc/systemd/system/docker.service.d/
    sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
    

    Add the following content to the file:

    [Service]
    Environment="HTTP_PROXY=http://your-proxy-server:3128"
    Environment="HTTPS_PROXY=http://your-proxy-server:3128"
    Environment="NO_PROXY=localhost,127.0.0.1"
    

    Replace your-proxy-server with the hostname or IP address of your proxy server.

  2. Reload Docker Daemon
    To apply the changes, reload the Docker daemon.

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

Unable to install due to other displayed errors

Question: I’m getting errors and cannot install.

Answer:

  • You might be running out of storage space. Please check your available storage.
  • If an error message appears while executing the installer shell script, record that message and contact support.

Installation completed but unable to access

Question: Installation completed but I cannot access the Web UI.

Answer: Ensure Docker is running correctly. Execute the following command to verify that Docker is functioning properly:

sudo docker ps

If it’s working correctly, you’ll see a list of running containers.
If nothing appears or an error message is shown, recheck your Docker installation and settings.

CONTAINER ID   IMAGE                                      COMMAND                  CREATED          STATUS         PORTS                                                  NAMES
ea5b30e0d8f7   public.ecr.aws/mediaharbor/stream:latest   "/usr/local/bin/janu…"   45 seconds ago   Up 10 seconds                                                          stream
30b909ec82b7   public.ecr.aws/mediaharbor/mhb:latest      "/bin/bash /mnt/run.…"   45 seconds ago   Up 10 seconds                                                          mhb
e4cead5b7988   public.ecr.aws/mediaharbor/ui:latest       "/nodejs/bin/node se…"   45 seconds ago   Up 10 seconds   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp              ui
9c79d6582467   public.ecr.aws/mediaharbor/api:latest      "docker-entrypoint.s…"   45 seconds ago   Up 11 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              api
714364d2acaf   public.ecr.aws/mediaharbor/proxy:latest    "/docker-entrypoint.…"   45 seconds ago   Up 42 seconds                                                          proxy
590ca661bf7b   mariadb:11                                 "docker-entrypoint.s…"   45 seconds ago   Up 43 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   db
  • If installed on a cloud service, please check the security group settings.

Playback Questions

Can be played with regular latency, but not with low latency.

Question: I can play with regular latency mode but not with low latency mode.

Answer: In a NAT traversal environment, if the global IP address changes after installation, WebRTC connectivity will be lost. Run installer.sh again to update the settings with the current global IP address.


Cannot play when a high-bitrate stream is input.

Question: I cannot play when a high-bitrate stream is input.

Answer: Open the advanced settings of the input source and increase the probe size setting.


Network Questions

Unable to Receive Multicast Signals in an IGMPv2 Environment

Question: I cannot receive multicast signals in an IGMPv2 environment.

Answer: On Linux, IGMPv3 is often enabled by default, but some multicast environments require switching to IGMPv2.

How to Configure IGMPv2

1. Temporarily Apply IGMPv2 for Testing

You can switch to IGMPv2 using the following command:

sudo sysctl -w net.ipv4.conf.<interface_name>.force_igmp_version=2

Example for receiving multicast on eth1:

sudo sysctl -w net.ipv4.conf.eth1.force_igmp_version=2

Once you confirm that multicast joins are occurring using IGMPv2, you can make this setting persistent.

2. Making the Setting Persistent

To retain the IGMPv2 setting after a reboot, add the following line to /etc/sysctl.conf:

echo "net.ipv4.conf.<interface_name>.force_igmp_version=2" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Example for eth1:

echo "net.ipv4.conf.eth1.force_igmp_version=2" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

This ensures IGMPv2 remains applied after a reboot.


Multicast Packets Are Received but Not Processed

Question: Multicast packets are arriving but not being received.

Answer: On Linux, rp_filter (reverse path filtering) is enabled by default. Depending on the routing configuration, multicast packets may be mistakenly dropped.
Disabling this filter can allow proper reception of multicast packets.

1. Checking the Current State of rp_filter

cat /proc/sys/net/ipv4/conf/<interface_name>/rp_filter

Output meanings:

  • 1Strict filtering (default)
  • 2Less strict filtering
  • 0Filtering disabled

Example for checking eth1:

cat /proc/sys/net/ipv4/conf/eth1/rp_filter

2. Temporarily Disabling rp_filter

You can disable rp_filter (0) with the following command:

sudo sysctl -w net.ipv4.conf.<interface_name>.rp_filter=0

Example for eth1:

sudo sysctl -w net.ipv4.conf.eth1.rp_filter=0

Once you confirm that multicast reception works, you can make this setting persistent.

3. Making the Setting Persistent

To retain rp_filter=0 after a reboot, add the following line to /etc/sysctl.conf:

echo "net.ipv4.conf.<interface_name>.rp_filter=0" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Example for eth1:

echo "net.ipv4.conf.eth1.rp_filter=0" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

This ensures rp_filter=0 remains applied after a reboot.


License & Authentication Questions

“API KEY MISSING or WRONG API CONFIG” message displayed over the video

Question: I see “API KEY MISSING or WRONG API CONFIG” displayed over the video.

Answer: The API key you entered during installation may be incorrect.
Please run installer.sh again and re-enter the API key.

APIKEYMISSING


“NO LICENSE or LICENSE EXPIRED” message displayed over the video

Question: I see “NO LICENSE or LICENSE EXPIRED” displayed over the video.

Answer:

  • There’s a possibility that the MediaHarbor server is unable to communicate with the license management system.
    Please check if you are connected to the internet.
  • You might be running low on points.
    Log into the License Management System and check if you have any points remaining.

NOLICENSE


Configuration & Management Questions

If You Forgot the Password Set in the Security Configure Page

Question: I forgot the password set in the security configure page.

Answer: First, ensure that MediaHarbor is stopped. If it is running, stop it using the following command:

docker-compose down

Once you’ve confirmed that MediaHarbor is stopped, run the following command to reset the password:

docker-compose run --rm api node reset_password.js

After the password reset is complete, start MediaHarbor.

docker-compose up -d

Connecting MediaHarbor to the Internal Zabbix Server

Question: I want to connect MediaHarbor to our internal Zabbix server.

Answer: MediaHarbor has a Zabbix agent installed. By configuring the firewall to open TCP port 10050, you can add MediaHarbor to the Zabbix server and monitor it.

# For AlmaLinux / Rocky Linux
sudo firewall-cmd --add-port=10050/tcp --zone=public --permanent
sudo firewall-cmd --reload

# For Ubuntu
sudo ufw allow 10050/tcp
sudo ufw reload

How to Migrate Settings to Another Server or Backup Settings

Question: I want to migrate settings to another server or backup settings.

Answer: You can copy the entire settings by copying the DB folder.

# Stop MediaHarbor (if it's running)
sudo docker-compose down

# Compress the DB folder into a tar.gz file
sudo tar -zcvf backup.tar.gz DB

# Start MediaHarbor (if needed)
sudo docker-compose up -d

# Copy the backup file to the new server
# Example: If you want to copy it to /home/user on 192.168.XXX.XXX
scp backup.tar.gz user@192.168.XXX.XXX:/home/user

# Log in to the new server and extract the transferred backup file
# Example: If you copied it to /home/user on 192.168.XXX.XXX
ssh user@192.168.XXX.XXX
cd /home/user
sudo tar -zxvf backup.tar.gz

Support Information

If the problem persists or you need further support, please reach out through the contact details below:

Inquiry Form

For conducting pilot tests in preparation for full-scale implementation, you can apply for trial points.

Trial Point Application Form