База знаний (цифровой суверенитет)
  • A
    1,168
    0
    root@incus-openvidu:~# apt update
    0% [Connecting to archive.ubuntu.com (2620:2d:4002:1::102)] [Connecting to security.ubuntu.com (2a06:bc80:0:1000::18)]^C
    root@incus-openvidu:~# ip addr add 10.134.96.51/24 dev eth0
    root@incus-openvidu:~# ip route add default via 10.134.96.1
    root@incus-openvidu:~# echo -e "nameserver 8.8.8.8\nnameserver 1.1.1.1" > /etc/resolv.conf
    root@incus-openvidu:~# apt update
    Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [128 kB]
    Hit:2 http://archive.ubuntu.com/ubuntu focal InRelease
    Get:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease [128 kB]
    Get:4 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [3564 kB]
    Get:5 http://security.ubuntu.com/ubuntu focal-security/main Translation-en [518 kB]
    Get:6 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [1040 kB]
    Get:7 http://security.ubuntu.com/ubuntu focal-security/universe Translation-en [221 kB]
    Get:8 http://security.ubuntu.com/ubuntu focal-security/universe amd64 c-n-f Metadata [22.4 kB]
    Get:9 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 Packages [26.6 kB]
    Get:10 http://security.ubuntu.com/ubuntu focal-security/multiverse Translation-en [6448 B]
    Get:11 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 c-n-f Metadata [604 B]
    Get:12 http://archive.ubuntu.com/ubuntu focal-backports InRelease [128 kB]
    Get:13 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages [8628 kB]
    Get:14 http://archive.ubuntu.com/ubuntu focal/universe Translation-en [5124 kB]
    Get:15 http://archive.ubuntu.com/ubuntu focal/universe amd64 c-n-f Metadata [265 kB]
    Get:16 http://archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages [144 kB]
    Get:17 http://archive.ubuntu.com/ubuntu focal/multiverse Translation-en [104 kB]
    Get:18 http://archive.ubuntu.com/ubuntu focal/multiverse amd64 c-n-f Metadata [9136 B]
    Get:19 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [3957 kB]
    Get:20 http://archive.ubuntu.com/ubuntu focal-updates/main Translation-en [600 kB]
    Get:21 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [1262 kB]
    Get:22 http://archive.ubuntu.com/ubuntu focal-updates/universe Translation-en [303 kB]
    Get:23 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 c-n-f Metadata [29.3 kB]
    Get:24 http://archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [29.7 kB]
    Get:25 http://archive.ubuntu.com/ubuntu focal-updates/multiverse Translation-en [8316 B]
    Get:26 http://archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 c-n-f Metadata [688 B]
    Get:27 http://archive.ubuntu.com/ubuntu focal-backports/main amd64 Packages [45.7 kB]
    Get:28 http://archive.ubuntu.com/ubuntu focal-backports/main Translation-en [16.3 kB]
    Get:29 http://archive.ubuntu.com/ubuntu focal-backports/main amd64 c-n-f Metadata [1420 B]
    Get:30 http://archive.ubuntu.com/ubuntu focal-backports/restricted amd64 c-n-f Metadata [116 B]
    Get:31 http://archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [25.0 kB]
    Get:32 http://archive.ubuntu.com/ubuntu focal-backports/universe Translation-en [16.3 kB]
    Get:33 http://archive.ubuntu.com/ubuntu focal-backports/universe amd64 c-n-f Metadata [880 B]
    Get:34 http://archive.ubuntu.com/ubuntu focal-backports/multiverse amd64 c-n-f Metadata [116 B]
    Fetched 26.4 MB in 40s (657 kB/s)
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    21 packages can be upgraded. Run 'apt list --upgradable' to see them.
    root@incus-openvidu:~# apt install curl wget htop mc nano lsof
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    htop is already the newest version (2.2.0-2build1).
    htop set to manually installed.
    curl is already the newest version (7.68.0-1ubuntu2.25).
    curl set to manually installed.
    lsof is already the newest version (4.93.2+dfsg-1ubuntu0.20.04.1).
    lsof set to manually installed.
    nano is already the newest version (4.8-1ubuntu1.1).
    nano set to manually installed.
    wget is already the newest version (1.20.3-1ubuntu2.1).
    wget set to manually installed.
    The following additional packages will be installed:
      libssh2-1 mc-data unzip
    Suggested packages:
      arj catdvi | texlive-binaries dbview djvulibre-bin epub-utils genisoimage gv imagemagick libaspell-dev links | w3m | lynx odt2txt poppler-utils python python-boto python-tz xpdf | pdf-viewer zip
    The following NEW packages will be installed:
      libssh2-1 mc mc-data unzip
    0 upgraded, 4 newly installed, 0 to remove and 21 not upgraded.
    Need to get 1986 kB of archives.
    After this operation, 8587 kB of additional disk space will be used.
    Do you want to continue? [Y/n] Y
    Get:1 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 libssh2-1 amd64 1.8.0-2.1ubuntu0.1 [75.5 kB]
    Get:2 http://archive.ubuntu.com/ubuntu focal/universe amd64 mc-data all 3:4.8.24-2ubuntu1 [1265 kB]
    Get:3 http://archive.ubuntu.com/ubuntu focal/universe amd64 mc amd64 3:4.8.24-2ubuntu1 [477 kB]
    Get:4 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 unzip amd64 6.0-25ubuntu1.2 [169 kB]
    Fetched 1986 kB in 0s (4243 kB/s)
    Selecting previously unselected package libssh2-1:amd64.
    (Reading database ... 32350 files and directories currently installed.)
    Preparing to unpack .../libssh2-1_1.8.0-2.1ubuntu0.1_amd64.deb ...
    Unpacking libssh2-1:amd64 (1.8.0-2.1ubuntu0.1) ...
    Selecting previously unselected package mc-data.
    Preparing to unpack .../mc-data_3%3a4.8.24-2ubuntu1_all.deb ...
    Unpacking mc-data (3:4.8.24-2ubuntu1) ...
    Selecting previously unselected package mc.
    Preparing to unpack .../mc_3%3a4.8.24-2ubuntu1_amd64.deb ...
    Unpacking mc (3:4.8.24-2ubuntu1) ...
    Selecting previously unselected package unzip.
    Preparing to unpack .../unzip_6.0-25ubuntu1.2_amd64.deb ...
    Unpacking unzip (6.0-25ubuntu1.2) ...
    Setting up unzip (6.0-25ubuntu1.2) ...
    Setting up mc-data (3:4.8.24-2ubuntu1) ...
    Setting up libssh2-1:amd64 (1.8.0-2.1ubuntu0.1) ...
    Setting up mc (3:4.8.24-2ubuntu1) ...
    Processing triggers for man-db (2.9.1-1) ...
    Processing triggers for mime-support (3.64ubuntu1) ...
    Processing triggers for libc-bin (2.31-0ubuntu9.18) ...
    root@incus-openvidu:~# nano /etc/systemd/system/static-ip.service
    root@incus-openvidu:~# nano /usr/local/sbin/set-static-ip.sh
    root@incus-openvidu:~# chmod +x /usr/local/sbin/set-static-ip.sh
    root@incus-openvidu:~# systemctl enable static-ip.service
    Created symlink /etc/systemd/system/multi-user.target.wants/static-ip.service → /etc/systemd/system/static-ip.service.
    root@incus-openvidu:~# systemctl start static-ip.service
    root@incus-openvidu:~# systemctl status static-ip.service
    ● static-ip.service - Set static IP for eth0
         Loaded: loaded (/etc/systemd/system/static-ip.service; enabled; vendor preset: enabled)
         Active: active (exited) since Sat 2026-03-14 19:28:40 UTC; 7s ago
        Process: 6116 ExecStart=/usr/local/sbin/set-static-ip.sh (code=exited, status=0/SUCCESS)
       Main PID: 6116 (code=exited, status=0/SUCCESS)
            CPU: 15ms
    Mar 14 19:28:40 incus-openvidu systemd[1]: Starting Set static IP for eth0...
    Mar 14 19:28:40 incus-openvidu systemd[1]: Finished Set static IP for eth0.
    root@incus-openvidu:~# sudo apt-get update
    Err:1 http://archive.ubuntu.com/ubuntu focal InRelease
      Temporary failure resolving 'archive.ubuntu.com'
    Err:2 http://security.ubuntu.com/ubuntu focal-security InRelease
      Temporary failure resolving 'security.ubuntu.com'
    Err:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease
      Temporary failure resolving 'archive.ubuntu.com'
    Err:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease
      Temporary failure resolving 'archive.ubuntu.com'
    Reading package lists... Done
    W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal/InRelease Temporary failure resolving 'archive.ubuntu.com'
    W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal-updates/InRelease Temporary failure resolving 'archive.ubuntu.com'
    W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal-backports/InRelease Temporary failure resolving 'archive.ubuntu.com'
    W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/focal-security/InRelease Temporary failure resolving 'security.ubuntu.com'
    W: Some index files failed to download. They have been ignored, or old ones used instead.
    root@incus-openvidu:~# apt update
    Err:1 http://archive.ubuntu.com/ubuntu focal InRelease
      Temporary failure resolving 'archive.ubuntu.com'
    Err:2 http://security.ubuntu.com/ubuntu focal-security InRelease
      Temporary failure resolving 'security.ubuntu.com'
    Err:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease
      Temporary failure resolving 'archive.ubuntu.com'
    Err:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease
      Temporary failure resolving 'archive.ubuntu.com'
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    21 packages can be upgraded. Run 'apt list --upgradable' to see them.
    W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal/InRelease Temporary failure resolving 'archive.ubuntu.com'
    W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal-updates/InRelease Temporary failure resolving 'archive.ubuntu.com'
    W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal-backports/InRelease Temporary failure resolving 'archive.ubuntu.com'
    W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/focal-security/InRelease Temporary failure resolving 'security.ubuntu.com'
    W: Some index files failed to download. They have been ignored, or old ones used instead.
    root@incus-openvidu:~# exit
    exit
    user@unoadmin:~$ sudo incus restart incus-openvidu
    [sudo] пароль для user:
    user@unoadmin:~$ sudo incus exec incus-openvidu -- bash
    root@incus-openvidu:~# apt update
    Err:1 http://archive.ubuntu.com/ubuntu focal InRelease
      Could not connect to archive.ubuntu.com:80 (2a06:bc80:0:1000::18), connection timed out Could not connect to archive.ubuntu.com:80 (2620:2d:4000:1::103), connection timed out Could not connect to archive.ubuntu.com:80 (2a06:bc80:0:1000::16), connection timed out Could not connect to archive.ubuntu.com:80 (2620:2d:4000:1::102), connection timed out Could not connect to archive.ubuntu.com:80 (2620:2d:4000:1::101), connection timed out Could not connect to archive.ubuntu.com:80 (2620:2d:4002:1::102), connection timed out Could not connect to archive.ubuntu.com:80 (2620:2d:4002:1::101), connection timed out Could not connect to archive.ubuntu.com:80 (2a06:bc80:0:1000::17), connection timed out
    Err:2 http://archive.ubuntu.com/ubuntu focal-updates InRelease
      Unable to connect to archive.ubuntu.com:http:
    Err:3 http://archive.ubuntu.com/ubuntu focal-backports InRelease
      Unable to connect to archive.ubuntu.com:http:
    Err:4 http://security.ubuntu.com/ubuntu focal-security InRelease
      Could not connect to security.ubuntu.com:80 (2620:2d:4002:1::102), connection timed out Could not connect to security.ubuntu.com:80 (2620:2d:4000:1::103), connection timed out Could not connect to security.ubuntu.com:80 (2a06:bc80:0:1000::17), connection timed out Could not connect to security.ubuntu.com:80 (2a06:bc80:0:1000::18), connection timed out Could not connect to security.ubuntu.com:80 (2a06:bc80:0:1000::16), connection timed out Could not connect to security.ubuntu.com:80 (2620:2d:4002:1::101), connection timed out Could not connect to security.ubuntu.com:80 (2620:2d:4000:1::102), connection timed out Could not connect to security.ubuntu.com:80 (2620:2d:4000:1::101), connection timed out
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    21 packages can be upgraded. Run 'apt list --upgradable' to see them.
    W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal/InRelease Could not connect to archive.ubuntu.com:80 (2a06:bc80:0:1000::18), connection timed out Could not connect to archive.ubuntu.com:80 (2620:2d:4000:1::103), connection timed out Could not connect to archive.ubuntu.com:80 (2a06:bc80:0:1000::16), connection timed out Could not connect to archive.ubuntu.com:80 (2620:2d:4000:1::102), connection timed out Could not connect to archive.ubuntu.com:80 (2620:2d:4000:1::101), connection timed out Could not connect to archive.ubuntu.com:80 (2620:2d:4002:1::102), connection timed out Could not connect to archive.ubuntu.com:80 (2620:2d:4002:1::101), connection timed out Could not connect to archive.ubuntu.com:80 (2a06:bc80:0:1000::17), connection timed out
    W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal-updates/InRelease Unable to connect to archive.ubuntu.com:http:
    W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal-backports/InRelease Unable to connect to archive.ubuntu.com:http:
    W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/focal-security/InRelease Could not connect to security.ubuntu.com:80 (2620:2d:4002:1::102), connection timed out Could not connect to security.ubuntu.com:80 (2620:2d:4000:1::103), connection timed out Could not connect to security.ubuntu.com:80 (2a06:bc80:0:1000::17), connection timed out Could not connect to security.ubuntu.com:80 (2a06:bc80:0:1000::18), connection timed out Could not connect to security.ubuntu.com:80 (2a06:bc80:0:1000::16), connection timed out Could not connect to security.ubuntu.com:80 (2620:2d:4002:1::101), connection timed out Could not connect to security.ubuntu.com:80 (2620:2d:4000:1::102), connection timed out Could not connect to security.ubuntu.com:80 (2620:2d:4000:1::101), connection timed out
    W: Some index files failed to download. They have been ignored, or old ones used instead.
    root@incus-openvidu:~#
    
  • A
    1,168
    0

    Проблема в твоём Incus-контейнере (Ubuntu 20.04) — после ручной установки статического IP (10.134.96.51/24) и дефолтного роута сломалось DNS-разрешение имён.
    Это классическая ситуация: когда ты вручную переписываешь /etc/resolv.conf и настраиваешь IP/route внутри контейнера, но не учитываешь, как Incus управляет сетью (особенно bridged или routed режимы).

    Из логов видно:

    • Сначала после ip addr add + ip route add + echo nameserver > /etc/resolv.confapt update прошёл успешно (DNS работал).
    • Потом после перезапуска контейнера (incus restart) — DNS полностью отвалился: "Temporary failure resolving 'archive.ubuntu.com'", и даже IPv6-таймауты (много IPv6-адресов в ошибках).

    Почему так происходит

    • Incus-контейнеры по умолчанию используют managed bridge (incusbr0 или подобный), где хост предоставляет DHCP/DNS через dnsmasq.
    • Когда ты вручную ставишь статический IP/route внутри контейнера — конфликт с Incus-управлением сетью (Incus может пытаться навязывать свой resolv.conf или route).
    • После рестарта контейнера Incus может перезаписывать resolv.conf (или systemd-resolved вмешивается), и твои 8.8.8.8/1.1.1.1 пропадают.
    • IPv6-ошибки (connection timed out на IPv6-адресах archive.ubuntu.com) — признак, что контейнер пытается использовать IPv6 (который часто не настроен/не работает в bridged Incus), и это замедляет/ломает соединения (apt предпочитает IPv6, если видит AAAA-запись).

    Как быстро пофиксить (самый простой способ — отключить IPv6 + вернуть DNS)

    1. Зайди в контейнер:

      sudo incus exec incus-openvidu -- bash
      
    2. Отключи IPv6 полностью (это часто решает таймауты на archive.ubuntu.com😞

      sysctl -w net.ipv6.conf.all.disable_ipv6=1
      sysctl -w net.ipv6.conf.default.disable_ipv6=1
      sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
      

      Чтобы сохранилось после рестарта:

      echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
      echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
      echo "net.ipv6.conf.eth0.disable_ipv6 = 1" >> /etc/sysctl.conf
      sysctl -p
      
    3. Верни нормальный DNS (самый надёжный — использовать публичные DNS напрямую):

      rm -f /etc/resolv.conf
      echo "nameserver 8.8.8.8" > /etc/resolv.conf
      echo "nameserver 1.1.1.1" >> /etc/resolv.conf
      echo "nameserver 8.8.4.4" >> /etc/resolv.conf  # запасной
      chattr +i /etc/resolv.conf   # чтобы systemd-resolved не перезаписывал (опционально, но полезно)
      
    4. Проверь связь:

      ping -c 3 8.8.8.8          # должен работать (IP-уровень)
      ping -c 3 google.com       # DNS должен работать
      curl -I https://archive.ubuntu.com   # должен ответить HTTP/1.1 200
      apt update                 # теперь должен пройти без ошибок
      
    5. Если всё ещё не работает — проверь маршрут и MTU:

      ip route show
      # Должен быть default via 10.134.96.1 dev eth0
      ping 10.134.96.1           # гейтвей должен пинговаться
      

      Если MTU проблема (редко, но бывает в Incus):

      ip link set eth0 mtu 1400   # или 1280, если 1500 не проходит
      

    Лучший долгосрочный способ (рекомендую вместо ручных ip addr)

    Не настраивай статический IP вручную внутри контейнера — делай это через Incus профиль или сеть (чтобы не ломалось после рестарта):

    • На хосте проверь текущую сеть контейнера:
      sudo incus config show incus-openvidu
      sudo incus network list
      
    • Если сеть bridged (incusbr0 или routed), настрой статический IP через Incus:
      sudo incus config device add incus-openvidu eth0 nic nictype=bridged parent=твой_бридж ipv4.address=10.134.96.51/24 ipv4.gateway=10.134.96.1
      sudo incus restart incus-openvidu
      
      Или создай routed-сеть для внешних IP (если нужно публичный IP).

    После фикса DNS и IPv6 — продолжи установку Docker по нашей предыдущей инструкции (для Ubuntu 20.04). Если после этих шагов apt update всё равно виснет — пришли вывод ip a, ip route, cat /etc/resolv.conf и ping 8.8.8.8 из контейнера. Разберём дальше. Удачи!

  • A
    1,168
    0
    Напоминаю про сервер со старым openvidu. Дай-ка ещё раз полную инструкцию, как скопировать контейнеры и настройки и перенести на другой сервер.
    vsmuser@host271:~$ cat /etc/os-release
    NAME="Ubuntu"
    VERSION="18.04.6 LTS (Bionic Beaver)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 18.04.6 LTS"
    VERSION_ID="18.04"
    HOME_URL="https://www.ubuntu.com/"
    SUPPORT_URL="https://help.ubuntu.com/"
    BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
    PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
    VERSION_CODENAME=bionic
    UBUNTU_CODENAME=bionic
    vsmuser@host271:~$ sudo docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    d2cc3c52ff58 openvidu/openvidu-server:2.19.0 "/usr/local/bin/entr…" 2 years ago Up 6 months openvidu_openvidu-server_1
    a429573679bb openvidu/openvidu-proxy:7.0.0 "/docker-entrypoint.…" 2 years ago Up 6 months openvidu_nginx_1
    a2c054c958b0 openvidu/openvidu-coturn:5.0.0 "docker-entrypoint.s…" 2 years ago Up 6 months openvidu_coturn_1
    7c30af1f67fa kurento/kurento-media-server:6.16.0 "/entrypoint.sh" 2 years ago Up 6 months (healthy) openvidu_kms_1
    3c2b4d790aaf openvidu/openvidu-redis:3.0.0 "docker-entrypoint.s…" 2 years ago Restarting (1) 35 seconds ago openvidu_redis_1
    ef32dba82193 b9cede6abb23 "bash" 5 years ago Exited (127) 5 years ago xenodochial_leakey
    1fbf87f8dd52 b9cede6abb23 "bash" 5 years ago Exited (127) 5 years ago wonderful_wilbur
    9664fc1ac1b7 b9cede6abb23 "bash" 5 years ago Exited (0) 5 years ago dazzling_wescoff
    vsmuser@host271:~$ docker -v
    Docker version 20.10.7, build 20.10.7-0ubuntu5~18.04.3
    vsmuser@host271:~$
    vsmuser@host271:~$ ls -la /opt/openvidu # или /usr/local/openvidu, или где у тебя лежит
    total 1175800
    drwxr-xr-x 10 root root 4096 Mar 14 19:20 .
    drwxr-xr-x 9 root root 4096 Oct 28 2021 ..
    drwxr-xr-x 2 root root 4096 Sep 7 2021 cdr
    drwxrwxrwx 9 root root 4096 Mar 14 14:00 certificates
    drwxr-xr-x 2 root root 4096 Sep 7 2021 custom-layout
    drwxr-xr-x 2 root root 4096 Sep 7 2021 custom-nginx-vhosts
    -rw-r--r-- 1 root root 4294 Sep 8 2021 docker-compose.yml
    -rw-r--r-- 1 root root 8828 Apr 26 2023 .env
    -rw-r--r-- 1 root root 8826 Apr 26 2023 .env2
    -rw-r--r-- 1 root root 16384 Feb 7 2022 .env.swp
    drwxr-xr-x 2 root root 4096 Sep 7 2021 kms-crashes
    drwxr-xr-x 2 root root 53248 Mar 14 02:00 kurento-logs
    -rw-r--r-- 1 root root 8828 Aug 21 2023 open_env
    -rwxr-xr-x 1 root root 9042 Sep 7 2021 openvidu
    -rw-r--r-- 1 root root 1203681626 Mar 14 19:22 openvidu-report-14-03-2026-19-20.txt
    drwxr-xr-x 2 root root 4096 Sep 7 2021 owncert
    drwxrwxrwx 1498 root root 163840 Oct 24 16:24 recordings
    vsmuser@host271:~$ cat /opt/openvidu/.env | grep -vE '^#|^$' # самые важные настройки
    DOMAIN_OR_PUBLIC_IP=media2.nbics.net
    OPENVIDU_SECRET=frogsEatenUnicornes
    CERTIFICATE_TYPE=letsencrypt
    LETSENCRYPT_EMAIL=ser1410u@yandex.ru
    OPENVIDU_RECORDING=true
    OPENVIDU_RECORDING_DEBUG=false
    OPENVIDU_RECORDING_PATH=/opt/openvidu/recordings
    OPENVIDU_RECORDING_CUSTOM_LAYOUT=/opt/openvidu/custom-layout
    OPENVIDU_RECORDING_PUBLIC_ACCESS=true
    OPENVIDU_RECORDING_NOTIFICATION=publisher_moderator
    OPENVIDU_RECORDING_AUTOSTOP_TIMEOUT=120
    OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH=2000
    OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH=75
    OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH=2000
    OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH=75
    OPENVIDU_STREAMS_FORCED_VIDEO_CODEC=VP8
    OPENVIDU_STREAMS_ALLOW_TRANSCODING=true
    OPENVIDU_WEBHOOK=false
    OPENVIDU_WEBHOOK_EVENTS=[sessionCreated,sessionDestroyed,participantJoined,participantLeft,webrtcConnectionCreated,webrtcConnectionDestroyed,recordingStatusChanged,filterEventDispatched,mediaNodeStatusChanged,nodeCrashed]
    OPENVIDU_SESSIONS_GARBAGE_INTERVAL=900
    OPENVIDU_SESSIONS_GARBAGE_THRESHOLD=3600
    OPENVIDU_CDR=false
    OPENVIDU_CDR_PATH=/opt/openvidu/cdr
    vsmuser@host271:~$ docker images | grep -E 'openvidu|kurento'
    Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json: dial unix /var/run/docker.sock: connect: permission denied
    vsmuser@host271:~$ sudo docker images | grep -E 'openvidu|kurento'
    openvidu/openvidu-server 2.19.0 fdaba96b7b5e 4 years ago 516MB
    openvidu/openvidu-coturn 5.0.0 72040febf801 4 years ago 32.2MB
    openvidu/openvidu-proxy 7.0.0 b5c9bcab046f 4 years ago 137MB
    openvidu/openvidu-recording 2.19.0 91eb86667498 4 years ago 1.09GB
    openvidu/openvidu-redis 3.0.0 fa510d55f34a 4 years ago 31.6MB
    kurento/kurento-media-server 6.16.0 63c5a7f5e0ba 5 years ago 675MB
    openvidu/openvidu-coturn 1.0.0 1f8dc80ef6f5 5 years ago 283MB
    openvidu/openvidu_coturn 1.0.0 51b569988a12 5 years ago 177MB
    openvidu/openvidu-call 2.15.0 442234dcff2c 5 years ago 99.2MB
    openvidu/openvidu-server 2.15.0 2742903db35c 5 years ago 481MB
    openvidu/openvidu-recording 2.15.0 48af9f7dad9d 5 years ago 908MB
    openvidu/openvidu-proxy 3.0.0 1bf7994b4926 5 years ago 93.9MB
    kurento/kurento-media-server 6.14.0 c195eb150fce 5 years ago 651MB
    openvidu/openvidu-redis 1.0.0 81db390c4d8f 5 years ago 31.6MB
    openvidu/openvidu-coturn <none> b9cede6abb23 5 years ago 177MB
    openvidu/openvidu-recording 2.9.0 5cd3d1a3e9c6 6 years ago 890MB
    vsmuser@host271:~$ cat /opt/openvidu/docker-compose.yml # или docker-compose.override.yml если есть
    # ------------------------------------------------------------------------------
    #
    # DO NOT MODIFY THIS FILE !!!
    #
    # Configuration properties should be specified in .env file
    #
    # Application based on OpenVidu should be specified in
    # docker-compose.override.yml file
    #
    # This docker-compose file coordinates all services of OpenVidu CE Platform
    #
    # This file will be overridden when update OpenVidu Platform
    #
    # Openvidu Version: 2.19.0
    #
    # Installation Mode: On Premises
    #
    # ------------------------------------------------------------------------------
    version: '3.1'
    services:
        openvidu-server:
            image: openvidu/openvidu-server:2.19.0
            restart: on-failure
            network_mode: host
            entrypoint: ['/usr/local/bin/entrypoint.sh']
            volumes:
                - /var/run/docker.sock:/var/run/docker.sock
                - $ {OPENVIDU_RECORDING_PATH}: ${OPENVIDU_RECORDING_PATH}
                - $ {OPENVIDU_RECORDING_CUSTOM_LAYOUT}: ${OPENVIDU_RECORDING_CUSTOM_LAYOUT}
                - $ {OPENVIDU_CDR_PATH}: ${OPENVIDU_CDR_PATH}
            env_file:
                - .env
            environment:
                - SERVER_SSL_ENABLED=false
                - SERVER_PORT=5443
                - KMS_URIS=["ws://localhost:8888/kurento"]
                - COTURN_REDIS_IP=127.0.0.1
                - COTURN_REDIS_PASSWORD=${OPENVIDU_SECRET}
                - COTURN_IP=${COTURN_IP:-auto-ipv4}
            logging:
                options:
                    max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}"
        kms:
            image: ${KMS_IMAGE:-kurento/kurento-media-server:6.16.0}
            restart: always
            network_mode: host
            ulimits:
              core: -1
            volumes:
                - /opt/openvidu/kms-crashes:/opt/openvidu/kms-crashes
                - $ {OPENVIDU_RECORDING_PATH}: ${OPENVIDU_RECORDING_PATH}
                - /opt/openvidu/kurento-logs:/opt/openvidu/kurento-logs
            environment:
                - KMS_MIN_PORT=40000
                - KMS_MAX_PORT=57000
                - GST_DEBUG=${KMS_DOCKER_ENV_GST_DEBUG:-}
                - KURENTO_LOG_FILE_SIZE=${KMS_DOCKER_ENV_KURENTO_LOG_FILE_SIZE:-100}
                - KURENTO_LOGS_PATH=/opt/openvidu/kurento-logs
            logging:
                options:
                    max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}"
        redis:
            image: openvidu/openvidu-redis:3.0.0
            restart: always
            network_mode: host
            environment:
                - REDIS_PASSWORD=${OPENVIDU_SECRET}
            logging:
                options:
                    max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}"
        coturn:
            image: openvidu/openvidu-coturn:5.0.0
            restart: on-failure
            network_mode: host
            environment:
                - REDIS_IP=127.0.0.1
                - DB_NAME=0
                - DB_PASSWORD=${OPENVIDU_SECRET}
            command:
                - --log-file=stdout
                - --listening-port=3478
                - --fingerprint
                - --lt-cred-mech
                - --min-port=57001
                - --max-port=65535
                - --realm=openvidu
                - --verbose
                - --user=abcdef:abcde
            logging:
                options:
                    max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}"
        nginx:
            image: openvidu/openvidu-proxy:7.0.0
            restart: on-failure
            network_mode: host
            volumes:
                - ./certificates:/etc/letsencrypt
                - ./owncert:/owncert
                - ./custom-nginx-vhosts:/etc/nginx/vhost.d/
                - ${OPENVIDU_RECORDING_CUSTOM_LAYOUT}:/opt/openvidu/custom-layout
            environment:
                - DOMAIN_OR_PUBLIC_IP=${DOMAIN_OR_PUBLIC_IP}
                - CERTIFICATE_TYPE=${CERTIFICATE_TYPE}
                - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
                - PROXY_HTTP_PORT=${HTTP_PORT:-}
                - PROXY_HTTPS_PORT=${HTTPS_PORT:-}
                - ALLOWED_ACCESS_TO_DASHBOARD=${ALLOWED_ACCESS_TO_DASHBOARD:-}
                - ALLOWED_ACCESS_TO_RESTAPI=${ALLOWED_ACCESS_TO_RESTAPI:-}
                - PROXY_MODE=CE
                - WITH_APP=true
                - SUPPORT_DEPRECATED_API=${SUPPORT_DEPRECATED_API:-true}
                - REDIRECT_WWW=${REDIRECT_WWW:-false}
                - WORKER_CONNECTIONS=${WORKER_CONNECTIONS:-10240}
                - PUBLIC_IP=${PROXY_PUBLIC_IP:-auto-ipv4}
            logging:
                options:
                    max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}"
    vsmuser@host271:~$ docker volume ls | grep openvidu
    Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/volumes: dial unix /var/run/docker.sock: connect: permission denied
    vsmuser@host271:~$ sudo docker volume ls | grep openvidu
    vsmuser@host271:~$ sudo docker inspect openvidu_openvidu-server_1 | grep -i mount # или любой другой контейнер
            "MountLabel": "",
            "Mounts": [
    vsmuser@host271:~$
    
  • A
    1,168
    0

    Вот полная, актуальная и пошаговая инструкция по переносу твоего OpenVidu 2.19.0 (на базе Kurento) с сервера Ubuntu 18.04 на другой сервер (в твоём случае — Ubuntu 20.04 в Incus-контейнере).

    Предварительные условия

    • Старый сервер: Ubuntu 18.04, OpenVidu 2.19.0 в /opt/openvidu, Docker 20.10.7
    • Новый сервер: Ubuntu 20.04 (уже настроен статический IP, но были проблемы с DNS — предполагаем, что ты их уже исправил)
    • Доступ по ssh к обоим серверам (root или sudo)
    • Достаточно места на диске (~3–5 ГБ для образов + размер recordings, если они большие)

    Шаг 1. На старом сервере — подготовка и экспорт

    1. Перейди в директорию OpenVidu

      cd /opt/openvidu
      
    2. Останови все контейнеры (чтобы данные были консистентными)

      sudo docker compose down
      
    3. Сохрани все нужные Docker-образы в один tar-файл
      (это самый надёжный способ — не зависеть от Docker Hub, где старые теги могут исчезнуть)

      sudo docker save \
        openvidu/openvidu-server:2.19.0 \
        openvidu/openvidu-proxy:7.0.0 \
        openvidu/openvidu-coturn:5.0.0 \
        openvidu/openvidu-recording:2.19.0 \
        openvidu/openvidu-redis:3.0.0 \
        kurento/kurento-media-server:6.16.0 \
        -o /tmp/openvidu-2.19-images.tar
      

      Размер файла ≈ 2.5–3 ГБ.

    4. Архивируй всю папку установки

      sudo tar -czf /tmp/openvidu-install.tar.gz /opt/openvidu
      
    5. Перенеси два файла на новый сервер
      Самый удобный способ — scp (с нового сервера тяни файлы):

      # На новом сервере:
      scp vsmuser@старый_IP:/tmp/openvidu-2.19-images.tar /tmp/
      scp vsmuser@старый_IP:/tmp/openvidu-install.tar.gz /tmp/
      

      Или rsync, если много файлов/большие recordings:

      rsync -avz --progress vsmuser@старый_IP:/opt/openvidu/ /opt/openvidu/
      

    Шаг 2. На новом сервере (Ubuntu 20.04) — подготовка

    1. Убедись, что Docker + docker compose установлены
      Если ещё не сделано — выполни:

      sudo apt update
      sudo apt install -y ca-certificates curl gnupg lsb-release
      sudo mkdir -p /etc/apt/keyrings
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
      echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      sudo apt update
      sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      sudo usermod -aG docker $USER
      newgrp docker
      
    2. Распакуй конфигурацию

      sudo mkdir -p /opt/openvidu
      sudo tar -xzf /tmp/openvidu-install.tar.gz -C /
      
    3. Загрузи сохранённые образы

      sudo docker load -i /tmp/openvidu-2.19-images.tar
      

      Проверь, что образы появились:

      docker images | grep -E 'openvidu|kurento'
      

    Шаг 3. Настройка перед запуском

    1. Перейди в директорию

      cd /opt/openvidu
      
    2. Обязательно проверь и поправь .env

      sudo nano .env
      

      Самые важные строки:

      DOMAIN_OR_PUBLIC_IP=media2.nbics.net          # или новый IP/домен, если изменился
      OPENVIDU_SECRET=frogsEatenUnicornes           # должен остаться тот же
      CERTIFICATE_TYPE=letsencrypt                  # если домен тот же — оставь, иначе временно selfsigned
      LETSENCRYPT_EMAIL=ser1410u@yandex.ru
      

      Если домен/IP изменился → Let's Encrypt не сработает → временно поставь:

      CERTIFICATE_TYPE=selfsigned
      
    3. Проверь порты (80, 443, 4443, 3478/udp, диапазон 40000–57000/udp)

      sudo ss -tuln | grep -E ':80|:443|:4443|:3478'
      

      Если заняты — останови конфликтующие сервисы.

    4. Firewall (если ufw включён)

      sudo ufw allow 80/tcp
      sudo ufw allow 443/tcp
      sudo ufw allow 4443/tcp
      sudo ufw allow 3478/udp
      sudo ufw allow 40000:57000/udp   # для RTP
      sudo ufw reload
      

    Шаг 4. Запуск

    sudo docker compose up -d
    

    Смотри статус:

    sudo docker compose ps
    sudo docker compose logs -f openvidu-server kms coturn nginx redis
    

    Что должно быть:

    • openvidu-server — Up, в логах "OpenVidu Server started"
    • kms — healthy
    • coturn — Up
    • nginx — Up
    • redis — Up (если restarting — нормально, он stateless)

    Проверь доступ:

    curl -k https://media2.nbics.net:4443   # или IP:4443 → должен быть "OK" или статус
    

    Шаг 5. После запуска — типичные фиксы

    • Let's Encrypt не обновился
      → Временно CERTIFICATE_TYPE=selfsigned, потом верни letsencrypt и перезапусти nginx.

    • KMS не стартует или high CPU
      Добавь в секцию kms в docker-compose.yml:

      ulimits:
        nofile: 65535:65535
        nproc: 65535:65535
      

      Затем:

      sudo docker compose up -d --force-recreate kms
      
    • WebRTC не работает (нет видео/аудио)
      Проверь:

      • DOMAIN_OR_PUBLIC_IP — публичный адрес, видимый клиентам
      • Порты 3478/udp и RTP-диапазон открыты
      • Логи coturn и kms

    Если что-то не стартует — пришли:

    • docker compose ps
    • docker compose logs kms (последние 20 строк)
    • docker compose logs openvidu-server

    Удачи с переносом! Это один из самых надёжных способов сохранить совместимость со старым клиентским кодом.

  • A
    1,168
    0
    scp -r -P 22 vsmuser@media2.nbics.net:/home/vsmuser/a/ /home/user/a/
    The authenticity of host 'media2.nbics.net (91.221.71.190)' can't be established.
    ED25519 key fingerprint is SHA256:i065Fvf0DCbkwv/1nKXfX23QKzr46dhDrVM2x3JGQ3M.
    This key is not known by any other names.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added 'media2.nbics.net' (ED25519) to the list of known hosts.
    vsmuser@media2.nbics.net's password:
    scp: mkdir /home/user/a/a: Permission denied
    
  • A
    1,168
    0

    Ошибка "scp: mkdir /home/user/a/a: Permission denied" означает, что scp пытается создать директорию /home/user/a/a на целевом сервере, но у пользователя user нет прав на создание поддиректорий внутри /home/user/a/.

    Почему так происходит

    Ты копируешь содержимое директории /home/vsmuser/a/ на старом сервере в /home/user/a/ на новом сервере.

    Команда scp -r при копировании директории с завершающим слешем (/home/vsmuser/a/) копирует содержимое директории, а не саму директорию.
    Поэтому scp пытается создать внутри /home/user/a/ все файлы и поддиректории, которые находятся в /home/vsmuser/a/.

    Но если в /home/vsmuser/a/ есть поддиректория с именем a, то scp пытается создать /home/user/a/a — и именно здесь возникает ошибка "Permission denied", потому что у пользователя user нет прав создавать что-либо внутри /home/user/a/.

    Самые вероятные причины

    1. Директория /home/user/a/ уже существует и принадлежит другому пользователю (например root) или имеет права 700/755 без права записи для user.
    2. /home/user/a/ не существует, но родительская директория /home/user/ не позволяет пользователю user создавать в ней новые директории.

    Решение — по шагам

    1. Проверь права и владельца на целевом сервере
      Зайди на новый сервер и выполни:

      ls -ld /home/user /home/user/a
      

      Если /home/user/a существует и владелец — не user, или права не позволяют запись (нет w для owner/group/other), то это причина.

    2. Исправь права (самый быстрый и частый фикс)

      sudo chown -R user:user /home/user/a
      sudo chmod -R u+rwX /home/user/a
      

      Или если директории /home/user/a ещё нет — создай её заранее от своего пользователя:

      mkdir -p /home/user/a
      chmod 700 /home/user/a   # или 755, как тебе удобно
      
    3. Повтори команду scp (безопасный вариант)

      scp -r -P 22 vsmuser@media2.nbics.net:/home/vsmuser/a/. /home/user/a/
      

      Точка после a/ (a/.) — это специальный синтаксис, который говорит scp: «скопировать содержимое директории a, но не создавать лишнюю вложенную папку».

      Альтернативно (ещё более надёжно):

      rsync -avz --progress -e "ssh -p 22" vsmuser@media2.nbics.net:/home/vsmuser/a/ /home/user/a/
      

      rsync обычно лучше справляется с правами, существующими файлами и прерываниями.

    4. Если хочешь скопировать саму папку a (а не её содержимое)
      Убери завершающий слеш на источнике:

      scp -r -P 22 vsmuser@media2.nbics.net:/home/vsmuser/a /home/user/
      

      Тогда получится /home/user/a (вместо содержимого в /home/user/a/).

    Рекомендуемый порядок действий прямо сейчас

    # На новом сервере:
    mkdir -p /home/user/a
    sudo chown user:user /home/user/a
    chmod 700 /home/user/a
    
    # Затем копирование
    scp -r -P 22 vsmuser@media2.nbics.net:/home/vsmuser/a/. /home/user/a/
    # или
    rsync -avz -e "ssh -p 22" vsmuser@media2.nbics.net:/home/vsmuser/a/ /home/user/a/
    

    После успешного копирования проверь:

    ls -la /home/user/a
    

    Если всё скопировалось — можно продолжать перенос OpenVidu (разархивировать, загружать образы и т.д.).

    Если ошибка сохраняется — покажи вывод ls -ld /home/user /home/user/a и точную команду, которую ты выполняешь.

  • A
    1,168
    0
    scp -r -P 22 vsmuser@media2.nbics.net:/home/vsmuser/a/. /home/user/a/
    vsmuser@media2.nbics.net's password:
    scp: remote open "/home/vsmuser/a/openvidu-2.19-images.tar": Permission denied
    scp: Download of file /home/vsmuser/a/openvidu-2.19-images.tar to /home/user/a/./openvidu-2.19-images.tar failed
    scp: open local "/home/user/a/./openvidu-install.tar.gz": Permission denied
    scp: Download of file /home/vsmuser/a/openvidu-install.tar.gz to /home/user/a/./openvidu-install.tar.gz failed
    
  • A
    1,168
    0

    Ошибка теперь другая:
    scp: remote open "/home/vsmuser/a/openvidu-2.19-images.tar": Permission denied
    scp: open local "/home/user/a/./openvidu-install.tar.gz": Permission denied

    Это значит, что scp не может прочитать файлы на удалённом сервере (remote open) и не может создать/записать файлы на локальном сервере (local open).

    Основные причины и решения

    1. На удалённом сервере (media2.nbics.net) — нет прав на чтение файлов
      Пользователь vsmuser не может прочитать файлы /home/vsmuser/a/openvidu-2.19-images.tar и /home/vsmuser/a/openvidu-install.tar.gz.

      Проверь и исправь на старом сервере (media2.nbics.net😞

      ls -l /home/vsmuser/a/openvidu-*.tar*
      # Если файлы принадлежат root или другой группе — увидишь это
      
      # Исправь права (чтобы vsmuser мог читать)
      sudo chown vsmuser:vsmuser /home/vsmuser/a/openvidu-2.19-images.tar
      sudo chown vsmuser:vsmuser /home/vsmuser/a/openvidu-install.tar.gz
      sudo chmod 644 /home/vsmuser/a/openvidu-*.tar*   # чтение для всех, запись только владельцу
      

      Или проще — дай временно 644 всем:

      sudo chmod 644 /home/vsmuser/a/*
      
    2. На локальном сервере (куда копируешь) — нет прав на запись в /home/user/a/
      Пользователь user не может создавать файлы в этой директории.

      Исправь на новом сервере:

      ls -ld /home/user /home/user/a
      # Если владелец не user или нет прав на запись (w) — проблема здесь
      
      sudo chown user:user /home/user/a
      sudo chmod 700 /home/user/a   # или 755, если нужно группе/всем
      

      Если директория принадлежит root — часто бывает после sudo-команд:

      sudo chown -R user:user /home/user/a
      
    3. Повтори копирование после исправлений
      Самый надёжный вариант (с точкой в конце источника):

      scp -P 22 vsmuser@media2.nbics.net:/home/vsmuser/a/openvidu-2.19-images.tar /home/user/a/
      scp -P 22 vsmuser@media2.nbics.net:/home/vsmuser/a/openvidu-install.tar.gz /home/user/a/
      

      Или всё сразу одной командой (если права уже поправили):

      scp -P 22 vsmuser@media2.nbics.net:/home/vsmuser/a/openvidu-* /home/user/a/
      

      Лучшая альтернатива — rsync (он лучше обрабатывает права и прерывания):

      rsync -avz --progress -e "ssh -p 22" vsmuser@media2.nbics.net:/home/vsmuser/a/openvidu-*.tar* /home/user/a/
      

    Полезные проверки перед повтором

    • На старом сервере:
      sudo -u vsmuser cat /home/vsmuser/a/openvidu-2.19-images.tar > /dev/null   # должен пройти без ошибок
      
    • На новом:
      touch /home/user/a/test.txt && rm /home/user/a/test.txt   # проверка на запись
      

    После успешного копирования:

    • Распакуй архив: sudo tar -xzf /home/user/a/openvidu-install.tar.gz -C /
    • Загрузи образы: sudo docker load -i /home/user/a/openvidu-2.19-images.tar
    • Продолжай настройку как в предыдущей инструкции (.env, docker compose up -d и т.д.)

    Если после правки всё равно Permission denied — пришли вывод ls -l /home/vsmuser/a/ (со старого) и ls -ld /home/user/a (с нового).

  • A
    1,168
    0
    root@incus-openvidu:/# sudo docker load -i /tmp/openvidu-2.19-images.tar
    878dab86cf0f: Loading layer [==================================================>] 65.51MB/65.51MB
    dd784dd6a282: Loading layer [==================================================>] 410.5MB/410.5MB
    a351d0d4ddd1: Loading layer [==================================================>] 45.68MB/45.68MB
    ff38628dc5e4: Loading layer [==================================================>] 4.096kB/4.096kB
    4247a18d953d: Loading layer [==================================================>] 6.656kB/6.656kB
    750d8dc64db0: Loading layer [==================================================>] 8.192kB/8.192kB
    Loaded image: openvidu/openvidu-server:2.19.0
    b2d5eeeaba3a: Loading layer [==================================================>] 5.88MB/5.88MB
    561d94cdc4d7: Loading layer [==================================================>] 18.2MB/18.2MB
    75642f4b5133: Loading layer [==================================================>] 3.072kB/3.072kB
    de4aa1659df8: Loading layer [==================================================>] 4.096kB/4.096kB
    dcb9f737fe15: Loading layer [==================================================>] 3.584kB/3.584kB
    7a54243e5443: Loading layer [==================================================>] 7.168kB/7.168kB
    85612a643a11: Loading layer [==================================================>] 119.6MB/119.6MB
    ecce0816a462: Loading layer [==================================================>] 3.584kB/3.584kB
    17861029e402: Loading layer [==================================================>] 29.18kB/29.18kB
    81c0287a4fd1: Loading layer [==================================================>] 6.656kB/6.656kB
    552557379942: Loading layer [==================================================>] 3.584kB/3.584kB
    edf108420a1e: Loading layer [==================================================>] 21.5kB/21.5kB
    1110fdc918f2: Loading layer [==================================================>] 29.18kB/29.18kB
    Loaded image: openvidu/openvidu-proxy:7.0.0
    72e830a4dff5: Loading layer [==================================================>] 5.865MB/5.865MB
    6e9cf5753cf3: Loading layer [==================================================>] 20.84MB/20.84MB
    c74a9124c1db: Loading layer [==================================================>] 4.161MB/4.161MB
    3173a21e9f0a: Loading layer [==================================================>] 1.351MB/1.351MB
    6b88f9fa19c7: Loading layer [==================================================>] 639kB/639kB
    73b44f6053ec: Loading layer [==================================================>] 6.656kB/6.656kB
    698b5d2c73f2: Loading layer [==================================================>] 3.584kB/3.584kB
    92632c1136e8: Loading layer [==================================================>] 6.144kB/6.144kB
    204515b0de3d: Loading layer [==================================================>] 11.78kB/11.78kB
    Loaded image: openvidu/openvidu-coturn:5.0.0
    feef05f055c9: Loading layer [==================================================>] 75.13MB/75.13MB
    2870db014303: Loading layer [==================================================>] 582.1MB/582.1MB
    b9d0c212b657: Loading layer [==================================================>] 29.31MB/29.31MB
    81bf40e8cfb6: Loading layer [==================================================>] 427.5MB/427.5MB
    4f5ba5058adc: Loading layer [==================================================>] 8.192kB/8.192kB
    e343da5f50b9: Loading layer [==================================================>] 9.216kB/9.216kB
    6960ddc3b2b8: Loading layer [==================================================>] 17.92kB/17.92kB
    46f39bf0e436: Loading layer [==================================================>] 4.096kB/4.096kB
    49c15b15749a: Loading layer [==================================================>] 21.5kB/21.5kB
    Loaded image: openvidu/openvidu-recording:2.19.0
    3e207b409db3: Loading layer [==================================================>] 5.879MB/5.879MB
    dafc08a3ced4: Loading layer [==================================================>] 11.78kB/11.78kB
    970c18d5ee5e: Loading layer [==================================================>] 2.21MB/2.21MB
    81c8f234f819: Loading layer [==================================================>] 24.69MB/24.69MB
    9a43d2d58f80: Loading layer [==================================================>] 1.536kB/1.536kB
    12eec953545f: Loading layer [==================================================>] 3.584kB/3.584kB
    7f37f512df6a: Loading layer [==================================================>] 4.096kB/4.096kB
    17f86ae99ddc: Loading layer [==================================================>] 4.096kB/4.096kB
    Loaded image: openvidu/openvidu-redis:3.0.0
    935c56d8b3f9: Loading layer [==================================================>] 135.8MB/135.8MB
    697949baa658: Loading layer [==================================================>] 15.87kB/15.87kB
    e6feec0db89a: Loading layer [==================================================>] 11.78kB/11.78kB
    5276d2b930fc: Loading layer [==================================================>] 3.072kB/3.072kB
    aebc01182f89: Loading layer [==================================================>] 4.096kB/4.096kB
    a3624d0646a1: Loading layer [==================================================>] 3.584kB/3.584kB
    88e621ef349a: Loading layer [==================================================>] 53.62MB/53.62MB
    f897c9b189e8: Loading layer [==================================================>] 37.38kB/37.38kB
    536ec674fb65: Loading layer [==================================================>] 379.3MB/379.3MB
    e1bb62b63fe2: Loading layer [==================================================>] 9.391MB/9.391MB
    6be33a8e9795: Loading layer [==================================================>] 115MB/115MB
    f0729868a7a2: Loading layer [==================================================>] 6.144kB/6.144kB
    03da7803dd00: Loading layer [==================================================>] 5.12kB/5.12kB
    879391b03474: Loading layer [==================================================>] 2.048kB/2.048kB
    Loaded image: kurento/kurento-media-server:6.16.0
    root@incus-openvidu:/# docker images | grep -E 'openvidu|kurento'
    openvidu/openvidu-server 2.19.0 fdaba96b7b5e 4 years ago 516MB
    openvidu/openvidu-coturn 5.0.0 72040febf801 4 years ago 32.2MB
    openvidu/openvidu-proxy 7.0.0 b5c9bcab046f 4 years ago 137MB
    openvidu/openvidu-recording 2.19.0 91eb86667498 4 years ago 1.09GB
    openvidu/openvidu-redis 3.0.0 fa510d55f34a 4 years ago 31.6MB
    kurento/kurento-media-server 6.16.0 63c5a7f5e0ba 5 years ago 675MB
    root@incus-openvidu:/# cd /opt/openvidu
    root@incus-openvidu:/opt/openvidu# sudo nano .env
    root@incus-openvidu:/opt/openvidu# sudo nano .env
    root@incus-openvidu:/opt/openvidu# sudo nano .env
    root@incus-openvidu:/opt/openvidu# sudo nano .env
    root@incus-openvidu:/opt/openvidu# sudo ss -tuln | grep -E ':80|:443|:4443|:3478'
    root@incus-openvidu:/opt/openvidu# sudo docker compose up -d
    WARN[0000] /opt/openvidu/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
    [+] Running 5/5
     ✔ Container openvidu-redis-1 Started 15.9s
     ✔ Container openvidu-nginx-1 Started 15.5s
     ✔ Container openvidu-openvidu-server-1 Started 14.9s
     ✔ Container openvidu-coturn-1 Started 14.5s
     ✔ Container openvidu-kms-1 Started 14.5s
    root@incus-openvidu:/opt/openvidu# docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    0c91d19737d0 kurento/kurento-media-server:6.16.0 "/entrypoint.sh" 37 seconds ago Up 25 seconds (healthy) openvidu-kms-1
    50191d31001b openvidu/openvidu-proxy:7.0.0 "/docker-entrypoint.…" 37 seconds ago Up 26 seconds openvidu-nginx-1
    26ae5989df6a openvidu/openvidu-coturn:5.0.0 "docker-entrypoint.s…" 37 seconds ago Up 25 seconds openvidu-coturn-1
    e390dd0d7656 openvidu/openvidu-redis:3.0.0 "docker-entrypoint.s…" 37 seconds ago Up 26 seconds openvidu-redis-1
    47c7ee368053 openvidu/openvidu-server:2.19.0 "/usr/local/bin/entr…" 37 seconds ago Up 25 seconds openvidu-openvidu-server-1
    ca08b8462466 hello-world "/hello" 11 hours ago Exited (0) 11 hours ago frosty_aryabhata
    root@incus-openvidu:/opt/openvidu# exit
    exit
    user@Piter3:~$ incus list
    +----------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
    | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
    +----------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
    | incus-jitsi | RUNNING | 172.18.0.1 (br-6e574b74fdbb) | fd42:5a20:88f:df57:1266:6aff:fe3d:a4b7 (eth0) | CONTAINER | 0 |
    | | | 172.17.0.1 (docker0) | | | |
    | | | 10.155.64.194 (eth0) | | | |
    +----------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
    | incus-openvidu | RUNNING | 172.17.0.1 (docker0) | fd42:5a20:88f:df57:1266:6aff:fec2:6446 (eth0) | CONTAINER | 0 |
    | | | 10.155.64.99 (eth0) | | | |
    +----------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
    | incus-yuno | RUNNING | 10.155.64.28 (eth0) | fd42:5a20:88f:df57:1266:6aff:fee5:f736 (eth0) | CONTAINER | 0 |
    +----------------+---------+------------------------------+-----------------------------------------------+-----------+-----------+
    user@Piter3:~$ incus exec incus-openvidu -- bash
    root@incus-openvidu:~# curl -k https://10.155.64.99:4443
    curl: (7) Failed to connect to 10.155.64.99 port 4443: Connection refused
    root@incus-openvidu:~# curl -k https://172.17.0.1:4443
    curl: (7) Failed to connect to 172.17.0.1 port 4443: Connection refused
    root@incus-openvidu:~# curl -k https://node13.nbics.net:4443
    curl: (7) Failed to connect to node13.nbics.net port 4443: Connection refused
    root@incus-openvidu:~# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
        link/ether aa:60:49:9f:9b:7c brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
           valid_lft forever preferred_lft forever
        inet6 fe80::a860:49ff:fe9f:9b7c/64 scope link
           valid_lft forever preferred_lft forever
    45: eth0@if46: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 10:66:6a:c2:64:46 brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet 10.155.64.99/24 metric 100 brd 10.155.64.255 scope global dynamic eth0
           valid_lft 3580sec preferred_lft 3580sec
        inet6 fd42:5a20:88f:df57:1266:6aff:fec2:6446/64 scope global mngtmpaddr noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80::1266:6aff:fec2:6446/64 scope link
           valid_lft forever preferred_lft forever
    root@incus-openvidu:~# curl -k https://127.0.0.1:4443
    curl: (7) Failed to connect to 127.0.0.1 port 4443: Connection refused
    root@incus-openvidu:~# docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    0c91d19737d0 kurento/kurento-media-server:6.16.0 "/entrypoint.sh" 6 minutes ago Up 6 minutes (healthy) openvidu-kms-1
    50191d31001b openvidu/openvidu-proxy:7.0.0 "/docker-entrypoint.…" 6 minutes ago Up 6 minutes openvidu-nginx-1
    26ae5989df6a openvidu/openvidu-coturn:5.0.0 "docker-entrypoint.s…" 6 minutes ago Up 6 minutes openvidu-coturn-1
    e390dd0d7656 openvidu/openvidu-redis:3.0.0 "docker-entrypoint.s…" 6 minutes ago Up 6 minutes openvidu-redis-1
    47c7ee368053 openvidu/openvidu-server:2.19.0 "/usr/local/bin/entr…" 6 minutes ago Up 6 minutes openvidu-openvidu-server-1
    ca08b8462466 hello-world "/hello" 11 hours ago Exited (0) 11 hours ago frosty_aryabhata
    root@incus-openvidu:~#
    
  • A
    1,168
    0

    Поздравляю, контейнеры успешно загружены и запущены!
    Все 5 основных сервисов OpenVidu (openvidu-server, kms, coturn, redis, nginx-proxy) в статусе Up, и kms даже healthy. Это уже большой прогресс.

    Но порт 4443 недоступен (Connection refused на всех адресах: 127.0.0.1, 10.155.64.99, node13.nbics.net и т.д.). Это значит, что nginx-proxy (который отвечает за внешний доступ и реверс-прокси на 4443) либо не смог привязаться к порту, либо не стартовал полностью, либо есть проблема с сетью Incus / firewall / host.

    Что проверить и как исправить (по приоритету)

    1. Посмотри логи всех контейнеров — особенно nginx и openvidu-server

      cd /opt/openvidu
      docker compose logs -f nginx openvidu-server
      
      • Ищи ошибки вида:
        • "bind() to 0.0.0.0:443 failed (98: Address already in use)" → порт 443 занят
        • "bind() to 0.0.0.0:80 failed" → порт 80 занят
        • "certificate" / "letsencrypt" ошибки → сертификаты невалидны
        • "nginx: [emerg]" или что-то про конфиг

      Также отдельно:

      docker logs openvidu-nginx-1 | tail -n 50
      docker logs openvidu-openvidu-server-1 | tail -n 50
      

      Это самый важный шаг сейчас — пришли эти логи (последние 30–50 строк), если там ошибки.

    2. Проверь, слушает ли кто-то порты 80/443/4443 на хосте контейнера

      ss -tuln | grep -E ':80|:443|:4443'
      
      • Если ничего нет → nginx не смог привязаться (скорее всего конфликт портов или ошибка в логах).
      • Если заняты другими процессами → нужно освободить.
    3. Проверь, какой внешний адрес используется в .env
      Открой .env:

      cat /opt/openvidu/.env | grep DOMAIN_OR_PUBLIC_IP
      

      Должно быть:

      DOMAIN_OR_PUBLIC_IP=media2.nbics.net   # или node13.nbics.net, или 10.155.64.99 для теста
      

      Если там старый адрес или не тот домен — nginx не сможет правильно обработать запросы.

      Если домен не резолвится снаружи или сертификат не подходит — временно поставь:

      DOMAIN_OR_PUBLIC_IP=10.155.64.99
      CERTIFICATE_TYPE=selfsigned
      

      Сохрани, перезапусти:

      docker compose down
      docker compose up -d
      
    4. Проверь доступ внутри контейнера на 4443

      curl -k http://127.0.0.1:4443
      curl -k https://127.0.0.1:4443
      

      Если внутри тоже refused — проблема в nginx-контейнере.

    5. Проверь firewall внутри контейнера

      ufw status
      iptables -L -n -v
      

      Если ufw active — разреши порты:

      ufw allow 80/tcp
      ufw allow 443/tcp
      ufw allow 4443/tcp
      ufw reload
      
    6. Проверь на хосте Incus (Piter3), а не внутри контейнера
      Зайди на хост-машину и проверь:

      sudo ss -tuln | grep -E ':80|:443|:4443|:3478'
      sudo iptables -L -n -v | grep 4443
      

      Incus по умолчанию может не пробрасывать порты автоматически, если сеть routed или bridged без port-forward.

      Если порты не видны на хосте — добавь port-forward в Incus:

      incus config device add incus-openvidu proxy4443 proxy listen=tcp:0.0.0.0:4443 connect=tcp:127.0.0.1:4443
      incus config device add incus-openvidu proxy443 proxy listen=tcp:0.0.0.0:443 connect=tcp:127.0.0.1:443
      incus config device add incus-openvidu proxy80 proxy listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80
      incus restart incus-openvidu
      

      После этого попробуй с хоста:

      curl -k https://10.155.64.99:4443
      
    7. Быстрый тест — временно запусти nginx отдельно

      docker compose stop nginx
      docker compose up -d nginx
      docker logs openvidu-nginx-1
      

    Самый вероятный виновник сейчас

    • Nginx не смог привязаться к 80/443 из-за занятых портов (возможно, другой сервис в Incus или на хосте).
    • Или ошибка с сертификатами Let's Encrypt (невалидный домен/IP).

    Пришли, пожалуйста:

    • Вывод docker compose logs nginx | tail -n 40
    • Вывод ss -tuln | grep -E ':80|:443|:4443'
    • Значение DOMAIN_OR_PUBLIC_IP из .env

    После этого сразу поймём, где именно засада.

  • A
    1,168
    0
    root@incus-openvidu:~# docker logs openvidu-nginx-1 | tail -n 50
    Generating a RSA private key
    .........................+++++
    .......+++++
    writing new private key to '/etc/letsencrypt/live/node13.nbics.net/privkey.pem'
    -----
    2026/03/15 07:12:35 [warn] 87#87: "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    nginx: [warn] "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    2026/03/15 07:12:35 [notice] 87#87: signal process started
    2026/03/15 07:12:35 [warn] 20#20: "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
      =======================================
      = INPUT VARIABLES =
      =======================================
      Config NGINX:
        - Http Port: 80
        - Https Port: 443
        - Worker Connections: 10240
        - Allowed Access in Openvidu Dashboard: all
        - Allowed Access in Openvidu API: all
        - Support deprecated API: true
        - Redirect www to non-www: false
      Config Openvidu Application:
        - Domain name: node13.nbics.net
        - Certificated: selfsigned
        - Letsencrypt Email: ser1410u@yandex.ru
        - Openvidu Application: true
        - Openvidu Application Type: CE
      =======================================
      = CONFIGURATION NGINX =
      =======================================
      Configure node13.nbics.net domain...
        - New configuration: selfsigned node13.nbics.net
        - Old configuration: letsencrypt media2.nbics.net
        - Restarting configuration... Removing old certificated...
        - Generating selfsigned certificate...
      =======================================
      = ALLOWED ACCESS =
      =======================================
      Adding rules...
        - Public IPv4 for rules: 95.31.38.30
      Finish Rules:
        Openvidu Dashboard:
    - allow all;
        Openvidu API:
    - allow all;
      =======================================
      = START OPENVIDU PROXY =
      =======================================
    root@incus-openvidu:~# docker logs openvidu-openvidu-server-1 | tail -n 50
    [WARN] 2026-03-15 07:12:37,387 [main] io.openvidu.server.rest.ApiRestPathRewriteFilter - Support for deprecated REST API paths enabled. Update your REST API clients to use the new paths
    [WARN] 2026-03-15 07:12:37,387 [main] io.openvidu.server.rest.ApiRestPathRewriteFilter - Deprecated path support will be removed in a future release. You can disable old path support to test compatibility with property SUPPORT_DEPRECATED_API=false
    [INFO] 2026-03-15 07:12:37,429 [main] io.openvidu.server.OpenViduServer - OpenVidu CDR service is disabled (may be enable with 'OPENVIDU_CDR=true')
    [INFO] 2026-03-15 07:12:37,429 [main] io.openvidu.server.OpenViduServer - OpenVidu Webhook service is disabled (may be enabled with 'OPENVIDU_WEBHOOK=true')
    [INFO] 2026-03-15 07:12:37,464 [main] io.openvidu.server.OpenViduServer - OpenVidu Server using one KMS: ws://localhost:8888/kurento
    [INFO] 2026-03-15 07:12:37,501 [main] org.kurento.jsonrpc.client.JsonRpcClientNettyWebSocket - Connecting native client
    [INFO] 2026-03-15 07:12:37,502 [main] org.kurento.jsonrpc.client.JsonRpcClientNettyWebSocket - Creating new NioEventLoopGroup
    [INFO] 2026-03-15 07:12:37,641 [nioEventLoopGroup-2-1] org.kurento.jsonrpc.client.JsonRpcClientNettyWebSocket - Initiating new Netty channel. Will create new handler too!
    [INFO] 2026-03-15 07:12:37,739 [AbstractJsonRpcClientWebSocket-reqResEventExec-e2-t0] io.openvidu.server.kurento.kms.KmsManager - Kurento Client "connected" event for KMS ws://localhost:8888/kurento [org.kurento.client.KurentoClient@68fe3333]
    [INFO] 2026-03-15 07:12:37,740 [main] io.openvidu.server.recording.service.RecordingManager - OpenVidu recording service is enabled
    [WARN] 2026-03-15 07:12:37,752 [main] com.github.dockerjava.core.DockerClientBuilder - 'dockerHttpClient' should be set.Falling back to Jersey, will be an error in future releases.
    [WARN] 2026-03-15 07:12:37,902 [main] com.github.dockerjava.core.DockerClientBuilder - 'dockerHttpClient' should be set.Falling back to Jersey, will be an error in future releases.
    [INFO] 2026-03-15 07:12:38,530 [main] io.openvidu.server.utils.DockerManager - Docker is installed and enabled
    [INFO] 2026-03-15 07:12:38,533 [main] io.openvidu.server.recording.service.RecordingManager - Initializing recording paths
    [INFO] 2026-03-15 07:12:38,533 [main] io.openvidu.server.recording.service.RecordingManager - OpenVidu Server has write permissions on recording path: /opt/openvidu/recordings/
    [INFO] 2026-03-15 07:12:39,084 [main] io.openvidu.server.recording.service.RecordingManager - Kurento Media Server has write permissions on recording path: /opt/openvidu/recordings/
    [INFO] 2026-03-15 07:12:39,090 [main] io.openvidu.server.recording.service.RecordingManager - OpenVidu Server has write permissions over files created by Kurento Media Server
    [INFO] 2026-03-15 07:12:39,090 [main] io.openvidu.server.recording.service.RecordingManager - OpenVidu Server has read permissions on custom layout path: /opt/openvidu/custom-layout/
    [INFO] 2026-03-15 07:12:39,090 [main] io.openvidu.server.recording.service.RecordingManager - Custom layouts path successfully initialized at /opt/openvidu/custom-layout/
    [INFO] 2026-03-15 07:12:39,090 [main] io.openvidu.server.recording.service.RecordingManager - Recording path successfully initialized at /opt/openvidu/recordings/
    [WARN] 2026-03-15 07:12:39,091 [main] com.github.dockerjava.core.DockerClientBuilder - 'dockerHttpClient' should be set.Falling back to Jersey, will be an error in future releases.
    [INFO] 2026-03-15 07:12:39,094 [main] io.openvidu.server.recording.service.RecordingManager - Recording module required: Downloading openvidu/openvidu-recording:2.19.0 Docker image (350MB aprox)
    [INFO] 2026-03-15 07:12:39,127 [main] io.openvidu.server.recording.service.RecordingManager - Docker image already exists locally
    [INFO] 2026-03-15 07:12:39,190 [main] io.openvidu.server.coturn.CoturnCredentialsService - COTURN IP: 95.31.38.30
    [INFO] 2026-03-15 07:12:39,191 [main] io.openvidu.server.coturn.CoturnCredentialsService - COTURN Redis DB accessible with string "ip=127.0.0.1 dbname=0 password=frogsEatenUnicornes connect_timeout=30"
    [INFO] 2026-03-15 07:12:39,191 [main] io.openvidu.server.coturn.CoturnCredentialsService - Cleaning COTURN DB...
    [INFO] 2026-03-15 07:12:39,191 [main] io.openvidu.server.coturn.CoturnCredentialsService - Path of COTURN log files: /var/log/
    [INFO] 2026-03-15 07:12:39,197 [main] io.openvidu.server.coturn.CoturnCredentialsService - COTURN DB is now empty
    [INFO] 2026-03-15 07:12:39,198 [main] io.openvidu.server.coturn.CoturnCredentialsService - Using COTURN credentials service for BASH environment
    [INFO] 2026-03-15 07:12:39,220 [main] io.openvidu.server.core.SessionManager - Garbage collector for non active sessions initialized. Running every 900 seconds and cleaning up non active Sessions more than 3600 seconds old
    [INFO] 2026-03-15 07:12:39,255 [main] org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler - Initializing ExecutorService 'jsonrpcTaskScheduler'
    [INFO] 2026-03-15 07:12:39,381 [main] org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
    [INFO] 2026-03-15 07:12:39,467 [main] org.springframework.boot.autoconfigure.web.servlet.WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html]
    [INFO] 2026-03-15 07:12:39,669 [main] org.springframework.security.web.DefaultSecurityFilterChain - Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2d23faef, org.springframework.security.web.context.SecurityContextPersistenceFilter@3874b815, org.springframework.security.web.header.HeaderWriterFilter@a33b4e3, org.springframework.web.filter.CorsFilter@66ce957f, org.springframework.security.web.authentication.logout.LogoutFilter@43a51d00, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@36fcf6c0, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@736048ed, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6940f685, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@7cb8437d, org.springframework.security.web.session.SessionManagementFilter@36b310aa, org.springframework.security.web.access.ExceptionTranslationFilter@41fed14f, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@58ec7116]
    [INFO] 2026-03-15 07:12:39,694 [main] org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-0.0.0.0-5443"]
    [INFO] 2026-03-15 07:12:39,707 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 5443 (http) with context path ''
    [INFO] 2026-03-15 07:12:39,713 [main] io.openvidu.server.OpenViduServer - Started OpenViduServer in 3.889 seconds (JVM running for 5.489)
    [INFO] 2026-03-15 07:12:39,715 [main] io.openvidu.server.OpenViduServer -
    ----------------------------------------------------
       OpenVidu is ready!
       ---------------------------
       * OpenVidu Server URL: https://node13.nbics.net/
       * OpenVidu Dashboard: https://node13.nbics.net/dashboard
    ----------------------------------------------------
    root@incus-openvidu:~# ss -tuln | grep -E ':80|:443|:4443'
    tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:*
    tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
    tcp LISTEN 0 511 [::]:443 [::]:*
    tcp LISTEN 0 511 [::]:80 [::]:*
    root@incus-openvidu:~# cat /opt/openvidu/.env | grep DOMAIN_OR_PUBLIC_IP
    DOMAIN_OR_PUBLIC_IP=node13.nbics.net
    # Allows any request to http://DOMAIN_OR_PUBLIC_IP:HTTP_PORT/ to be automatically
    # redirected to https://DOMAIN_OR_PUBLIC_IP:HTTPS_PORT/.
    root@incus-openvidu:~# curl -k http://127.0.0.1:4443
    curl: (7) Failed to connect to 127.0.0.1 port 4443: Connection refused
    root@incus-openvidu:~# curl -k https://127.0.0.1:4443
    curl: (7) Failed to connect to 127.0.0.1 port 4443: Connection refused
    root@incus-openvidu:~# ufw status
    Status: inactive
    root@incus-openvidu:~# iptables -L -n -v
    Chain INPUT (policy ACCEPT 4868 packets, 455K bytes)
     pkts bytes target prot opt in out source destination
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target prot opt in out source destination
        0 0 DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0
        0 0 DOCKER-FORWARD all -- * * 0.0.0.0/0 0.0.0.0/0
    Chain OUTPUT (policy ACCEPT 4882 packets, 399K bytes)
     pkts bytes target prot opt in out source destination
    Chain DOCKER (1 references)
     pkts bytes target prot opt in out source destination
        0 0 DROP all -- !docker0 docker0 0.0.0.0/0 0.0.0.0/0
    Chain DOCKER-BRIDGE (1 references)
     pkts bytes target prot opt in out source destination
        0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
    Chain DOCKER-CT (1 references)
     pkts bytes target prot opt in out source destination
        0 0 ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
    Chain DOCKER-FORWARD (1 references)
     pkts bytes target prot opt in out source destination
        0 0 DOCKER-CT all -- * * 0.0.0.0/0 0.0.0.0/0
        0 0 DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
        0 0 DOCKER-BRIDGE all -- * * 0.0.0.0/0 0.0.0.0/0
        0 0 ACCEPT all -- docker0 * 0.0.0.0/0 0.0.0.0/0
    Chain DOCKER-ISOLATION-STAGE-1 (1 references)
     pkts bytes target prot opt in out source destination
        0 0 DOCKER-ISOLATION-STAGE-2 all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
    Chain DOCKER-ISOLATION-STAGE-2 (1 references)
     pkts bytes target prot opt in out source destination
        0 0 DROP all -- * docker0 0.0.0.0/0 0.0.0.0/0
    Chain DOCKER-USER (1 references)
     pkts bytes target prot opt in out source destination
        0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
    root@incus-openvidu:~#
    
  • A
    1,168
    0

    Отлично, теперь ясно, в чём проблема!
    Твой OpenVidu стартовал успешно (все контейнеры Up, kms healthy, openvidu-server готов и слушает на внутреннем порту 5443), но внешний доступ на 4443 не работает, потому что:

    • Nginx-proxy (openvidu-nginx-1) не привязывается к порту 4443 вообще — в логах нет упоминания о listen на 4443.
    • В логах nginx видно: он генерирует selfsigned-сертификат для node13.nbics.net, переключается с letsencrypt, но не упоминает bind/listen на 4443.
    • ss показывает, что nginx слушает только 80 и 443 (tcp LISTEN на 0.0.0.0:80/443 и [::]:80/443), но не 4443.
    • В OpenVidu 2.x nginx-proxy — это фронтенд, который:
      • Слушает 80/443 (для HTTP → HTTPS редиректа + Let's Encrypt).
      • Проксирует запросы на внутренний порт openvidu-server (5443).
      • Сам не слушает 4443 — клиенты должны подключаться к https://domain:443 (или 80 с редиректом), а не к 4443!

    Ты тестируешь неправильный порт.
    В OpenVidu CE (включая 2.19) внешний доступ идёт через nginx на 443 (или 80 → редирект на 443), а не на 4443.
    Порт 4443 — это внутренний порт openvidu-server (SERVER_PORT=5443 в compose, но с редиректом/прокси через nginx).

    Что делать прямо сейчас

    1. Проверь правильный внешний порт — 443

      curl -k https://127.0.0.1
      curl -k https://10.155.64.99
      curl -k https://node13.nbics.net   # если DNS резолвится внутри
      

      Ожидаемый ответ:

      • OpenVidu dashboard (HTML страница) или редирект.
      • Или хотя бы "OpenVidu is ready!" / статус-страница.

      Если 443 открыт — увидишь что-то вроде:

      OpenVidu is ready!
      ---------------------------
      * OpenVidu Server URL: https://node13.nbics.net/
      * OpenVidu Dashboard: https://node13.nbics.net/dashboard
      
    2. Если на 443 Connection refused — nginx не смог привязаться к 80/443

      • Проверь логи nginx ещё раз на ошибки bind:

        docker logs openvidu-nginx-1 | grep -i "bind\|emerg\|error\|failed"
        
      • Если "bind() to 0.0.0.0:80 failed (98: Address already in use)" — порт занят другим процессом внутри контейнера или на хосте.
        Найди, кто занимает:

        ss -tuln p | grep ':80\|:443'
        

        (с флагом p покажет PID/процесс).

      • Если занят — останови конфликтующий сервис (возможно, apache/nginx на хосте или другой контейнер).

    3. Проверь с хоста Incus (Piter3), а не внутри контейнера
      На хосте (user@Piter3):

      curl -k https://10.155.64.99
      curl -k https://node13.nbics.net:443
      

      Если внутри контейнера работает, а с хоста — нет → проблема в Incus networking (bridged/routed не пробрасывает порты автоматически для host-exposed сервисов).

      Фикс для Incus — добавь proxy-устройства (проброс портов на хост):

      incus config device add incus-openvidu openvidu-http proxy listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80
      incus config device add incus-openvidu openvidu-https proxy listen=tcp:0.0.0.0:443 connect=tcp:127.0.0.1:443
      # Если нужно явно 4443 (хотя не требуется):
      incus config device add incus-openvidu openvidu-4443 proxy listen=tcp:0.0.0.0:4443 connect=tcp:127.0.0.1:4443
      incus restart incus-openvidu
      

      После этого порты 80/443 станут доступны на IP контейнера (10.155.64.99) с хоста и снаружи.

    4. Проверь сертификат и домен

      • В логах: "New configuration: selfsigned node13.nbics.net" — сейчас selfsigned.
      • Если хочешь Let's Encrypt — верни в .env:
        CERTIFICATE_TYPE=letsencrypt
        DOMAIN_OR_PUBLIC_IP=node13.nbics.net   # должен резолвиться на публичный IP хоста
        
        Перезапусти nginx:
        docker compose restart nginx
        
    5. Финальный тест

      • С любого браузера/машины: https://node13.nbics.net (или https://10.155.64.99 если selfsigned)
      • Должен открыться OpenVidu dashboard или welcome-страница.
      • Если selfsigned — браузер покажет предупреждение, но соединение пройдёт.

    Если после этих шагов 443 всё равно refused — пришли:

    • docker logs openvidu-nginx-1 | tail -n 50 (ещё раз, после перезапуска)
    • ss -tuln p | grep ':80\|:443' (с p — покажет, кто слушает)
    • Вывод incus config show incus-openvidu (с хоста)

    Ты уже на финишной прямой — проблема не в OpenVidu, а в том, какой порт тестировать и в Incus-пробросе.

  • A
    1,168
    0
    root@incus-openvidu:~# curl -k https://127.0.0.1
    <html>
    <head><title>502 Bad Gateway</title></head>
    <body>
    <center><h1>502 Bad Gateway</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
    root@incus-openvidu:~# curl -k https://10.155.64.99
    <html>
    <head><title>502 Bad Gateway</title></head>
    <body>
    <center><h1>502 Bad Gateway</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
    root@incus-openvidu:~# curl -k https://node13.nbics.net # если DNS резолвится внутри
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>nginx/1.22.1</center>
    </body>
    </html>
    root@incus-openvidu:~# docker logs openvidu-nginx-1 | grep -i "bind\|emerg\|error\|failed"
    Generating a RSA private key
    .........................+++++
    .......+++++
    writing new private key to '/etc/letsencrypt/live/node13.nbics.net/privkey.pem'
    -----
    2026/03/15 07:12:35 [warn] 87#87: "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    nginx: [warn] "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    2026/03/15 07:12:35 [notice] 87#87: signal process started
    2026/03/15 07:12:35 [warn] 20#20: "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    2026/03/15 07:27:21 [error] 89#89: *2 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: node13.nbics.net, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5442/", host: "127.0.0.1"
    2026/03/15 07:27:31 [error] 89#89: *4 connect() failed (111: Connection refused) while connecting to upstream, client: 10.155.64.99, server: node13.nbics.net, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5442/", host: "10.155.64.99"
    root@incus-openvidu:~# ss -tuln p | grep ':80\|:443'
    Error: an inet prefix is expected rather than "p".
    Cannot parse dst/src address.
    root@incus-openvidu:~#
    
  • A
    1,168
    0

    Проблема ясна: 502 Bad Gateway от nginx — это значит, что nginx (openvidu-proxy) успешно стартовал и слушает на 80/443, но не может подключиться к upstream (внутреннему openvidu-server).

    Из логов nginx:

    [error] 89#89: *2 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: node13.nbics.net, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5442/"
    
    • Nginx пытается проксировать запросы на http://127.0.0.1:5442 (это upstream для приложения / OpenVidu API).
    • Но соединение refused — т.е. никто не слушает на порту 5442 внутри контейнера (или на host-network).

    Почему так происходит

    В твоей версии OpenVidu 2.19:

    • openvidu-server слушает на SERVER_PORT=5443 (как указано в docker-compose.yml: SERVER_PORT=5443).
    • Но nginx-proxy настроен на проксирование на 5442 (это стандарт для некоторых конфигов, особенно если есть отдельное приложение типа OpenVidu Call или custom app на 5442).
    • В твоём случае нет отдельного приложения на 5442 — поэтому upstream refused.

    В стандартной OpenVidu CE 2.19 без custom app:

    • Nginx должен проксировать /openvidu и /api на http://127.0.0.1:5443 (порт openvidu-server).
    • А dashboard/root — на 5443 или внутренний путь.

    Твой nginx-контейнер (openvidu/openvidu-proxy:7.0.0) по умолчанию ожидает upstream на 5442 (это legacy/стандарт для OpenVidu Call интеграции), но в твоей конфигурации openvidu-server на 5443 → mismatch.

    Решение — поправить конфигурацию nginx

    1. Останови всё

      cd /opt/openvidu
      docker compose down
      
    2. Создай override-файл для nginx (чтобы не менять оригинальный docker-compose.yml)

      nano docker-compose.override.yml
      

      Вставь это:

      services:
        nginx:
          volumes:
            - ./nginx-custom.conf:/etc/nginx/conf.d/default.conf:ro   # монтируем кастомный конфиг
      
    3. Создай кастомный конфиг nginx

      mkdir nginx-custom
      nano nginx-custom/default.conf
      

      Вставь упрощённый рабочий конфиг (адаптированный под твою версию, прокси на 5443):

      server {
          listen 80;
          listen [::]:80;
          server_name node13.nbics.net;
      
          location / {
              return 301 https://$host$request_uri;
          }
      }
      
      server {
          listen 443 ssl http2;
          listen [::]:443 ssl http2;
          server_name node13.nbics.net;
      
          ssl_certificate /etc/letsencrypt/live/node13.nbics.net/fullchain.pem;
          ssl_certificate_key /etc/letsencrypt/live/node13.nbics.net/privkey.pem;
      
          # Прокси на openvidu-server (порт 5443)
          location / {
              proxy_pass http://127.0.0.1:5443/;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
          }
      
          # Для /openvidu и API (если нужно отдельно)
          location /openvidu/ {
              proxy_pass http://127.0.0.1:5443/openvidu/;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
          }
      
          location /dashboard/ {
              proxy_pass http://127.0.0.1:5443/dashboard/;
              # аналогичные headers
          }
      }
      

      Это базовый конфиг: всё на 443 проксирует на 5443. Добавь больше location'ов по логам, если нужно.

    4. Перезапусти

      docker compose up -d
      
    5. Проверь

      docker logs openvidu-nginx-1 | tail -n 30
      curl -k https://127.0.0.1
      curl -k https://10.155.64.99
      

      Должен появиться OpenVidu welcome или dashboard (HTML).

    Альтернатива — временно отключить nginx и тестировать напрямую

    В docker-compose.yml измени для openvidu-server:

        openvidu-server:
          # ...
          ports:
            - "4443:5443"   # проброси внутренний 5443 на внешний 4443
    

    Затем:

    docker compose up -d
    curl -k https://127.0.0.1:4443
    

    Это позволит проверить, работает ли сам сервер (да, по логам работает). Потом верни nginx.

    Дополнительно

    • Если домен node13.nbics.net резолвится на публичный IP хоста — Let's Encrypt должен сработать после правки (если порт 80 открыт снаружи).
    • Если 502 остаётся — пришли полный docker logs openvidu-nginx-1 или grep на "upstream".

    Это должно решить — mismatch портов upstream был основной причиной 502.

  • A
    1,168
    0

    Давай без этих ухищрений. Такая конфигурация на другом сервере работала

  • A
    1,168
    0

    Хорошо, давай упростим до предела.
    Раз на старом сервере всё работало именно с этой конфигурацией (docker-compose.yml + .env + те же образы), значит проблема в чём-то конкретном на новом сервере, а не в том, что нужно переписывать nginx.conf.

    Текущая ситуация:

    • openvidu-server стартовал и слушает 5443 внутри контейнера (это видно по логам)
    • nginx стартовал и слушает 80/443
    • запросы на 443 попадают в nginx → он пытается проксировать на 5442 → получает Connection refused → выдаёт 502

    Самый простой и честный способ — заставить nginx проксировать на правильный порт 5443, а не на 5442.

    Минимальное вмешательство (без переписывания всего конфига)

    1. Останови сервисы

      cd /opt/openvidu
      docker compose down
      
    2. Создай маленький override-файл только для изменения порта upstream

      nano docker-compose.override.yml
      

      Вставь ровно это (только одну переменную):

      services:
        nginx:
          environment:
            - OPENVIDU_SERVER_PORT=5443   # ← это заставит nginx проксировать на 5443 вместо дефолтных 5442
      

      Сохрани и выйди.

    3. Запусти заново

      docker compose up -d
      
    4. Подожди 20–30 секунд и проверь

      docker compose ps
      docker compose logs nginx | tail -n 30
      curl -k https://127.0.0.1
      curl -k https://10.155.64.99
      curl -k https://node13.nbics.net
      

      Если всё правильно — nginx теперь будет проксировать на 5443 → ты увидишь страницу OpenVidu (dashboard или welcome).

    Если после этого всё ещё 502

    Тогда смотрим, что именно пишет nginx в логах после перезапуска:

    docker logs openvidu-nginx-1 | grep -i "544\|upstream\|connect\|refused\|error"
    

    И пришли эти строки — там будет видно, на какой именно порт он пытается подключаться сейчас.

    Почему это должно сработать

    На старом сервере, судя по всему, либо:

    • переменная OPENVIDU_SERVER_PORT была выставлена в .env или где-то ещё,
    • либо в той версии прокси-образа upstream по умолчанию был 5443,
    • либо у тебя был дополнительный override-файл, который ты не заметил.

    В любом случае — добавление одной строки в override — самое чистое и минимальное изменение.

    Попробуй этот шаг и сразу напиши результат curl + последние 20–30 строк логов nginx после перезапуска.
    Должно заработать без лишних танцев.

  • A
    1,168
    0
    root@incus-openvidu:/opt/openvidu# docker compose ps
    WARN[0000] /opt/openvidu/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
    NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
    openvidu-coturn-1 openvidu/openvidu-coturn:5.0.0 "docker-entrypoint.s…" coturn 30 seconds ago Up 23 seconds
    openvidu-kms-1 kurento/kurento-media-server:6.16.0 "/entrypoint.sh" kms 30 seconds ago Up 23 seconds (healthy)
    openvidu-nginx-1 openvidu/openvidu-proxy:7.0.0 "/docker-entrypoint.…" nginx 30 seconds ago Up 23 seconds
    openvidu-openvidu-server-1 openvidu/openvidu-server:2.19.0 "/usr/local/bin/entr…" openvidu-server 30 seconds ago Up 23 seconds
    openvidu-redis-1 openvidu/openvidu-redis:3.0.0 "docker-entrypoint.s…" redis 30 seconds ago Up 24 seconds
    root@incus-openvidu:/opt/openvidu# docker compose logs nginx | tail -n 30
    WARN[0000] /opt/openvidu/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
    nginx-1 | = CONFIGURATION NGINX =
    nginx-1 | =======================================
    nginx-1 |
    nginx-1 | Configure node13.nbics.net domain...
    nginx-1 | - New configuration: selfsigned node13.nbics.net
    nginx-1 | - Old configuration: selfsigned node13.nbics.net
    nginx-1 |
    nginx-1 | - Selfsigned certificate already exists, using them...
    nginx-1 |
    nginx-1 | =======================================
    nginx-1 | = ALLOWED ACCESS =
    nginx-1 | =======================================
    nginx-1 |
    nginx-1 | Adding rules...
    nginx-1 | - Public IPv4 for rules: 95.31.38.30
    nginx-1 |
    nginx-1 | Finish Rules:
    nginx-1 | Openvidu Dashboard:
    nginx-1 | - allow all;
    nginx-1 | Openvidu API:
    nginx-1 | - allow all;
    nginx-1 |
    nginx-1 | =======================================
    nginx-1 | = START OPENVIDU PROXY =
    nginx-1 | =======================================
    nginx-1 |
    nginx-1 | 2026/03/15 07:33:26 [warn] 80#80: "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    nginx-1 | nginx: [warn] "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    nginx-1 | 2026/03/15 07:33:26 [notice] 80#80: signal process started
    nginx-1 | 2026/03/15 07:33:26 [warn] 17#17: "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    root@incus-openvidu:/opt/openvidu# curl -k https://127.0.0.1
    <html>
    <head><title>502 Bad Gateway</title></head>
    <body>
    <center><h1>502 Bad Gateway</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
    root@incus-openvidu:/opt/openvidu# curl -k https://10.155.64.99
    <html>
    <head><title>502 Bad Gateway</title></head>
    <body>
    <center><h1>502 Bad Gateway</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
    root@incus-openvidu:/opt/openvidu# curl -k https://node13.nbics.net
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>nginx/1.22.1</center>
    </body>
    </html>
    root@incus-openvidu:/opt/openvidu# docker logs openvidu-nginx-1 | grep -i "544\|upstream\|connect\|refused\|error"
        - Worker Connections: 10240
    2026/03/15 07:33:26 [warn] 80#80: "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    nginx: [warn] "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    2026/03/15 07:33:26 [notice] 80#80: signal process started
    2026/03/15 07:33:26 [warn] 17#17: "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    2026/03/15 07:34:12 [error] 82#82: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: node13.nbics.net, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5442/", host: "127.0.0.1"
    2026/03/15 07:34:22 [error] 82#82: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 10.155.64.99, server: node13.nbics.net, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5442/", host: "10.155.64.99"
    root@incus-openvidu:/opt/openvidu#
    
  • A
    1,168
    0

    Хорошо, давай без лишних экспериментов.
    Из логов видно, что nginx по-прежнему пытается проксировать на 5442 (upstream: "http://127.0.0.1:5442/"), а openvidu-server у тебя слушает 5443 (как и на старом сервере). Именно поэтому 502 Bad Gateway.

    На старом сервере это работало, потому что либо там upstream был настроен на 5443, либо использовался другой вариант прокси-конфига (возможно, переменная окружения или старый override). На новом — дефолт 5442.

    Самый простой и надёжный фикс (без переписывания конфигов)

    1. Останови всё

      cd /opt/openvidu
      docker compose down
      
    2. В файле .env добавь (или измени) одну строку в конец:

      sudo nano .env
      

      Добавь:

      OPENVIDU_SERVER_PORT=5443
      

      (или если уже есть — измени на 5443)

      Сохрани.

    3. Запусти заново

      docker compose up -d
      

      Подожди 20–30 секунд.

    4. Проверь

      curl -k https://127.0.0.1
      curl -k https://10.155.64.99
      curl -k https://node13.nbics.net   # если DNS работает внутри
      

      Теперь nginx должен подключаться к правильному порту → увидишь страницу OpenVidu (или хотя бы не 502).

    5. Посмотри логи nginx после запуска

      docker logs openvidu-nginx-1 | tail -n 30
      docker logs openvidu-nginx-1 | grep -i "544\|upstream\|connect\|refused\|error"
      

      Если увидишь upstream на 5443 вместо 5442 — всё ок.

    Почему это сработает

    • В образе openvidu-proxy:7.0.0 переменная OPENVIDU_SERVER_PORT (или аналогичная) управляет upstream-портом для проксирования на openvidu-server.
    • По дефолту она 5442 (legacy для OpenVidu Call / app), но у тебя чистый CE без app → нужно явно указать 5443.

    Если после этого всё равно 502

    Тогда посмотри, на какой порт теперь пытается nginx:

    docker logs openvidu-nginx-1 | grep upstream
    

    Если всё ещё 5442 — значит, переменная не подхватилась. Тогда сделаем override:

    nano docker-compose.override.yml
    

    Вставь:

    services:
      nginx:
        environment:
          OPENVIDU_SERVER_PORT: "5443"
    

    Затем docker compose up -d и проверь снова.

    Это 100% соответствует твоей старой конфигурации (без изменений в compose.yml или кастомных conf-файлах).

    Попробуй и сразу напиши:

    • результат curl на https://127.0.0.1
    • последние 20 строк логов nginx после перезапуска

    Должно заработать.

  • A
    1,168
    0
    root@incus-openvidu:/opt/openvidu# curl -k https://127.0.0.1
    <html>
    <head><title>502 Bad Gateway</title></head>
    <body>
    <center><h1>502 Bad Gateway</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
    root@incus-openvidu:/opt/openvidu# curl -k https://10.155.64.99
    <html>
    <head><title>502 Bad Gateway</title></head>
    <body>
    <center><h1>502 Bad Gateway</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
    root@incus-openvidu:/opt/openvidu# curl -k https://node13.nbics.net # если DNS работает внутри
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>nginx/1.22.1</center>
    </body>
    </html>
    root@incus-openvidu:/opt/openvidu# docker logs openvidu-nginx-1 | grep upstream
    2026/03/15 07:37:56 [warn] 80#80: "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    nginx: [warn] "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    2026/03/15 07:37:56 [notice] 80#80: signal process started
    2026/03/15 07:37:56 [warn] 17#17: "ssl_stapling" ignored, no OCSP responder URL in the certificate "/etc/letsencrypt/live/node13.nbics.net/fullchain.pem"
    2026/03/15 07:39:59 [error] 82#82: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: node13.nbics.net, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5442/", host: "127.0.0.1"
    2026/03/15 07:40:16 [error] 82#82: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 10.155.64.99, server: node13.nbics.net, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5442/", host: "10.155.64.99"
    root@incus-openvidu:/opt/openvidu#
    
  • A
    1,168
    0

    Да, именно так — на старом сервере это работало, потому что там nginx-proxy был настроен (или по умолчанию) на upstream 5443.
    В твоей текущей конфигурации на новом сервере nginx упорно использует 5442 (как видно из логов: upstream "http://127.0.0.1:5442/"), а openvidu-server слушает 5443 (SERVER_PORT=5443 в compose.yml).

    Это классическая несовместимость: в OpenVidu CE 2.19 без отдельного приложения (типа OpenVidu Call) upstream должен быть 5443, но дефолт в proxy-образе 7.0.0 — 5442 (для legacy-приложений на 5442).

    Быстрый фикс без ухищрений (одна строка в .env)

    1. Останови сервисы (если не остановлены):

      cd /opt/openvidu
      docker compose down
      
    2. Открой .env и добавь/измени строку:

      sudo nano .env
      

      Добавь в конец:

      OPENVIDU_SERVER_PORT=5443
      

      (или если уже есть что-то похожее — поставь 5443)

      Сохрани.

    3. Запусти:

      docker compose up -d
      

      Подожди 20–30 секунд.

    4. Проверь:

      curl -k https://127.0.0.1
      curl -k https://10.155.64.99
      

      Теперь nginx должен подключаться к 5443 → получишь OpenVidu-страницу (welcome или dashboard), а не 502.

    Проверка после запуска

    docker logs openvidu-nginx-1 | grep -i "upstream\|544\|connect\|refused\|error"
    

    Если увидишь upstream на 5443 и нет refused — успех.

    Почему это именно то, что работало на старом

    В старой установке (или в твоём случае) переменная OPENVIDU_SERVER_PORT (или аналогичная) подхватывалась из .env или дефолт был другим. На новом — дефолт 5442, поэтому 502. Добавление переменной — самое чистое решение без редактирования compose или создания override.

    Если после добавления всё ещё 502 — пришли:

    • grep OPENVIDU_SERVER_PORT .env (чтобы убедиться, что строка добавлена)
    • docker logs openvidu-nginx-1 | grep upstream (новый grep после перезапуска)

    Это должно решить проблему за 1 минуту. Удачи!