保姆级教程在Ubuntu 22.04上用Docker Compose一键部署UE5.3像素流送服务当开发者需要向客户展示虚幻引擎项目时传统的视频录制或屏幕共享往往无法展现交互特性。像素流送技术让用户通过浏览器就能实时操作3D应用而Docker Compose则将复杂的服务依赖打包成可复用的解决方案。本文将手把手带你在Ubuntu服务器上搭建完整的UE5.3流送环境从GPU驱动配置到最终的一键启动每个步骤都经过实测验证。1. 环境准备与基础配置1.1 硬件与系统要求确保云服务器满足以下条件GPUNVIDIA显卡如T4/V100/A10G并已安装驱动内存至少16GB运行UE5编辑器建议32GB存储100GB可用SSD空间容器镜像和项目文件占用较大验证GPU状态输出应显示显卡信息nvidia-smi1.2 安装Docker与NVIDIA容器工具包Ubuntu 22.04默认内核版本5.15已满足Docker要求执行以下命令安装最新Docker CEsudo apt-get update sudo apt-get install -y ca-certificates curl gnupg sudo install -m 0755 -d /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-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io配置NVIDIA容器运行时distribution$(. /etc/os-release;echo $ID$VERSION_ID) \ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ curl -fsSL https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed s#deb https://#deb [signed-by/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtimedocker sudo systemctl restart docker提示完成安装后运行docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi测试GPU访问是否正常2. 获取必要镜像与项目文件2.1 拉取官方容器镜像需要三个核心镜像UE5.3运行时镜像包含像素流送插件信令服务器版本必须与引擎严格匹配TURN服务器处理NAT穿透docker pull ghcr.io/epicgames/unreal-engine:5.3-runtime-pixel-streaming docker pull ghcr.io/epicgames/pixel-streaming-signalling-server:5.3 docker pull coturn/coturn:latest2.2 准备UE项目文件在Windows开发机上完成启用插件Pixel Streaming、WebSockets、AVEncoder打包Linux版本[Staging] TargetPlatformLinux BuildConfigurationDevelopment检查生成的文件结构MyProject/ ├── LinuxNoEditor/ │ ├── MyProject.sh │ ├── Engine/ │ └── Content/使用rsync上传到服务器保留文件权限rsync -avz -e ssh -i ~/.ssh/your_key.pem ./LinuxNoEditor/ userserver:/opt/ue_project3. 配置文件与权限设置3.1 调整Linux文件权限容器内用户需要访问项目文件sudo chmod -R 777 /opt/ue_project sudo chown -R 1000:1000 /opt/ue_project # 匹配容器内默认UID3.2 编写Dockerfile创建/opt/ue_project/DockerfileFROM ghcr.io/epicgames/unreal-engine:5.3-runtime-pixel-streaming COPY ./LinuxNoEditor /opt/ue_project WORKDIR /opt/ue_project ENTRYPOINT [./MyProject.sh, -RenderOffScreen, -PixelStreamingIP0.0.0.0, -PixelStreamingPort8888]3.3 配置docker-compose.yml创建/opt/ue_project/docker-compose.ymlversion: 3.8 services: turn_server: image: coturn/coturn:latest network_mode: host command: [ --verbose, --lt-cred-mech, --fingerprint, --no-multicast-peers, --realmue5, --external-ip你的服务器公网IP, --listening-port3478, --min-port60000, --max-port60010 ] signaling_server: image: ghcr.io/epicgames/pixel-streaming-signalling-server:5.3 ports: - 80:80 - 443:443 environment: - PS_LOGS1 - PS_CIRCLES1 volumes: - ./signalling:/config ue_app: build: . network_mode: host runtime: nvidia environment: - NVIDIA_DRIVER_CAPABILITIESall depends_on: - turn_server - signaling_server4. 一键启动与故障排查4.1 创建启动脚本/opt/ue_project/run.sh内容#!/bin/bash docker compose build docker compose up -d echo 访问 http://服务器IP 开始体验赋予执行权限chmod x run.sh4.2 常见问题解决方案Q1信令服务器报版本不匹配Error: Engine version 5.3 required but found 5.2检查所有镜像标签是否为5.3删除旧镜像docker rmi ghcr.io/epicgames/pixel-streaming-signalling-server:5.2Q2SDL初始化失败在Dockerfile的ENTRYPOINT添加ENTRYPOINT [./MyProject.sh, -RenderOffScreen]Q3TURN服务器无法连通测试STUN/TURN服务sudo apt install stun-client stun 服务器IP -v5. 高级配置与优化5.1 视频参数调整在项目配置中修改DefaultEngine.ini[PixelStreaming] EncoderRateControlVBR TargetBitrate5000000 MaxBitrate100000005.2 安全加固措施为信令服务器添加HTTPSopenssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /opt/ue_project/signalling/nginx.key -out /opt/ue_project/signalling/nginx.crt修改docker-compose.yml中端口映射为443:4435.3 性能监控方案使用Prometheus收集指标# 在docker-compose.yml中添加 monitor: image: prom/prometheus ports: - 9090:9090 volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml创建prometheus.yml配置scrape_configs: - job_name: ue5 static_configs: - targets: [ue_app:8888] - job_name: signalling static_configs: - targets: [signaling_server:80]
保姆级教程:在Ubuntu 22.04上用Docker Compose一键部署UE5.3像素流送服务
保姆级教程在Ubuntu 22.04上用Docker Compose一键部署UE5.3像素流送服务当开发者需要向客户展示虚幻引擎项目时传统的视频录制或屏幕共享往往无法展现交互特性。像素流送技术让用户通过浏览器就能实时操作3D应用而Docker Compose则将复杂的服务依赖打包成可复用的解决方案。本文将手把手带你在Ubuntu服务器上搭建完整的UE5.3流送环境从GPU驱动配置到最终的一键启动每个步骤都经过实测验证。1. 环境准备与基础配置1.1 硬件与系统要求确保云服务器满足以下条件GPUNVIDIA显卡如T4/V100/A10G并已安装驱动内存至少16GB运行UE5编辑器建议32GB存储100GB可用SSD空间容器镜像和项目文件占用较大验证GPU状态输出应显示显卡信息nvidia-smi1.2 安装Docker与NVIDIA容器工具包Ubuntu 22.04默认内核版本5.15已满足Docker要求执行以下命令安装最新Docker CEsudo apt-get update sudo apt-get install -y ca-certificates curl gnupg sudo install -m 0755 -d /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-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io配置NVIDIA容器运行时distribution$(. /etc/os-release;echo $ID$VERSION_ID) \ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ curl -fsSL https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed s#deb https://#deb [signed-by/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtimedocker sudo systemctl restart docker提示完成安装后运行docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi测试GPU访问是否正常2. 获取必要镜像与项目文件2.1 拉取官方容器镜像需要三个核心镜像UE5.3运行时镜像包含像素流送插件信令服务器版本必须与引擎严格匹配TURN服务器处理NAT穿透docker pull ghcr.io/epicgames/unreal-engine:5.3-runtime-pixel-streaming docker pull ghcr.io/epicgames/pixel-streaming-signalling-server:5.3 docker pull coturn/coturn:latest2.2 准备UE项目文件在Windows开发机上完成启用插件Pixel Streaming、WebSockets、AVEncoder打包Linux版本[Staging] TargetPlatformLinux BuildConfigurationDevelopment检查生成的文件结构MyProject/ ├── LinuxNoEditor/ │ ├── MyProject.sh │ ├── Engine/ │ └── Content/使用rsync上传到服务器保留文件权限rsync -avz -e ssh -i ~/.ssh/your_key.pem ./LinuxNoEditor/ userserver:/opt/ue_project3. 配置文件与权限设置3.1 调整Linux文件权限容器内用户需要访问项目文件sudo chmod -R 777 /opt/ue_project sudo chown -R 1000:1000 /opt/ue_project # 匹配容器内默认UID3.2 编写Dockerfile创建/opt/ue_project/DockerfileFROM ghcr.io/epicgames/unreal-engine:5.3-runtime-pixel-streaming COPY ./LinuxNoEditor /opt/ue_project WORKDIR /opt/ue_project ENTRYPOINT [./MyProject.sh, -RenderOffScreen, -PixelStreamingIP0.0.0.0, -PixelStreamingPort8888]3.3 配置docker-compose.yml创建/opt/ue_project/docker-compose.ymlversion: 3.8 services: turn_server: image: coturn/coturn:latest network_mode: host command: [ --verbose, --lt-cred-mech, --fingerprint, --no-multicast-peers, --realmue5, --external-ip你的服务器公网IP, --listening-port3478, --min-port60000, --max-port60010 ] signaling_server: image: ghcr.io/epicgames/pixel-streaming-signalling-server:5.3 ports: - 80:80 - 443:443 environment: - PS_LOGS1 - PS_CIRCLES1 volumes: - ./signalling:/config ue_app: build: . network_mode: host runtime: nvidia environment: - NVIDIA_DRIVER_CAPABILITIESall depends_on: - turn_server - signaling_server4. 一键启动与故障排查4.1 创建启动脚本/opt/ue_project/run.sh内容#!/bin/bash docker compose build docker compose up -d echo 访问 http://服务器IP 开始体验赋予执行权限chmod x run.sh4.2 常见问题解决方案Q1信令服务器报版本不匹配Error: Engine version 5.3 required but found 5.2检查所有镜像标签是否为5.3删除旧镜像docker rmi ghcr.io/epicgames/pixel-streaming-signalling-server:5.2Q2SDL初始化失败在Dockerfile的ENTRYPOINT添加ENTRYPOINT [./MyProject.sh, -RenderOffScreen]Q3TURN服务器无法连通测试STUN/TURN服务sudo apt install stun-client stun 服务器IP -v5. 高级配置与优化5.1 视频参数调整在项目配置中修改DefaultEngine.ini[PixelStreaming] EncoderRateControlVBR TargetBitrate5000000 MaxBitrate100000005.2 安全加固措施为信令服务器添加HTTPSopenssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /opt/ue_project/signalling/nginx.key -out /opt/ue_project/signalling/nginx.crt修改docker-compose.yml中端口映射为443:4435.3 性能监控方案使用Prometheus收集指标# 在docker-compose.yml中添加 monitor: image: prom/prometheus ports: - 9090:9090 volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml创建prometheus.yml配置scrape_configs: - job_name: ue5 static_configs: - targets: [ue_app:8888] - job_name: signalling static_configs: - targets: [signaling_server:80]