[docker-compose] ブラウザでレトロゲーム「Cloud Retro」2

ブラウザでレトロゲームが遊べる Cloud Retro を立てたことを書いた。

[docker-compose] ブラウザでレトロゲーム「Cloud Retro」
https://wacw.cf/post/2025/2025-01-15f_cloud-retro/

しかし問題は別端末からだと ROM の読み込みができないことだった。

そこで Docker のネットワークを使って実現させてみることにした。

結論から書くと、うまくいかなかった。

環境:
・macOS Sequoia 15.0.1(英語環境)
・Docker Desktop on Mac 4.34.2

(1)Docker で cloudgame-net という名前でネットワークを作成する。

1$ sudo docker network create --driver bridge cloudgame-net

(2)Cloud Retro の docker-compose.yaml に以下のようにネットワーク情報を追記する。

 1services:
 2
 3  cloud-game:
 4    build: .
 5    image: cloud-game-local
 6    container_name: cloud-game-local
 7    environment:
 8      - DISPLAY=:99
 9      - MESA_GL_VERSION_OVERRIDE=4.5
10      - CLOUD_GAME_WEBRTC_SINGLEPORT=8443
11      # - CLOUD_GAME_WEBRTC_ICEIPMAP=127.0.0.1
12      - CLOUD_GAME_COORDINATOR_DEBUG=true
13      - CLOUD_GAME_WORKER_DEBUG=true
14      # - PION_LOG_TRACE=all
15    ports:
16      - "8000:8000"
17      - "9000:9000"
18      - "8443:8443/udp"
19    command: >
20      bash -c "./coordinator & ./worker"
21    volumes:
22      - ./assets/cores:/usr/local/share/cloud-game/assets/cores
23      - ./assets/games:/usr/local/share/cloud-game/assets/games
24      - x11:/tmp/.X11-unix
25    networks:
26      - cloudgame-net
27  xvfb:
28    image: kcollins/xvfb:latest
29    volumes:
30      - x11:/tmp/.X11-unix
31    command: [ ":99", "-screen", "0", "320x240x16" ]
32    networks:
33      - cloudgame-net
34
35volumes:
36  x11:
37
38networks:
39  cloudgame-net:
40    driver: bridge
41    external: true

(3)Docker の Firefox コンテナを立てる。その際、cloudgame-net に追加するようにしておく。

 1$ sudo docker run -d \
 2  --name=firefox \
 3  --security-opt seccomp=unconfined `#optional` \
 4  -e PUID=1000 \
 5  -e PGID=1000 \
 6  -e TZ=Asia/Tokyo \
 7  -e FIREFOX_CLI=https://www.google.com/ `#optional` \
 8  -p 3000:3000 \
 9  -p 3001:3001 \
10  --shm-size="1gb" \
11  --restart unless-stopped \
12  --network cloudgame-net\
13  lscr.io/linuxserver/firefox:latest

(4)iPad で http://{Mac の IP アドレス}:3000 にアクセスすると Firefox が Mac のブラウザ内で使えるようになる。

(5)以下のコマンドで Firefox および Cloud Retro のコンテナが cloudgame-net のネットワークに追加されていることが分かる。

1$ sudo docker network inspect cloudgame-net

(6)Firefox で http://{Mac の IP アドレス}:8000http://localhost:8000 ではない)にアクセスすれば、Cloud Retro が使えるようになる。

すると ROM がちゃんと読み込まれている。

ただし実際に操作ができない。キーをタッチしてもほとんど機能しない(一部動く)。Firefox 上部のスピーカーアイコンを押すとゲームの音楽を再生できるんだけど。

参考:
[docker-compose] 基本をおさらいし、各種項目とnetworksについて理解を深めよう! #Docker - Qiita
https://qiita.com/sotaheavymetal21/items/3ebc4c94bc4af9f087e3

別々のdocker-compose環境同士でネットワーク間を連携する
https://zenn.dev/shimakaze_soft/articles/a91d9ec8b14a21

Dockerのブリッジ・ネットワークを利用したコンテナ間通信を行う
https://zenn.dev/yo_yamada/articles/16a883f560fb96

Amazon.co.jp: PlayStation 5(CFI-2000A01) : ゲーム
https://amzn.to/4gXs8PM