Yt session generator is not connecting
problem description
Default settings, can send requests to yt-session-generator and it is working, but cobalt has connection refused error:
cobalt |
cobalt | cobalt API ^ω^
cobalt | ~~~~~~
cobalt | version: 11.0.2
cobalt | commit: a7bf5c525dee5f6c6b273d4834823c792c37ff4d
cobalt | branch: main
cobalt | remote: imputnet/cobalt
cobalt | start time: Sun, 01 Jun 2025 22:59:07 GMT
cobalt | ~~~~~~
cobalt | url: https://api.url.example/
cobalt | port: 9000
cobalt |
cobalt | [✓] internal tunnel handler running on 127.0.0.1:41267
cobalt | [!] Failed loading poToken & visitor_data at 2025-06-01T22:59:08.017Z.
cobalt | Error: TypeError: fetch failed
cobalt | at node:internal/deps/undici/undici:13510:13
cobalt | at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
cobalt | at async loadSession (file:///app/src/processing/helpers/youtube-session.js:38:24) {
cobalt | [cause]: Error: connect ECONNREFUSED 172.19.0.3:8080
cobalt | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1636:16) {
cobalt | errno: -111,
cobalt | code: 'ECONNREFUSED',
cobalt | syscall: 'connect',
cobalt | address: '172.19.0.3',
cobalt | port: 8080
cobalt | }
cobalt | }
There's also a problem with session generator, where if you start it again (not dry run) it wil crash with an error:
yt-session-generator | [INFO] launching chromium instance
yt-session-generator | 2025/06/01 23:05:18.308 [extractor] [INFO] update started
yt-session-generator | Traceback (most recent call last):
yt-session-generator | File "/app/potoken-generator.py", line 4, in <module>
yt-session-generator | potoken_generator.main.main()
yt-session-generator | File "/app/potoken_generator/main.py", line 98, in main
yt-session-generator | loop.run_until_complete(main_task)
yt-session-generator | File "/usr/local/lib/python3.12/asyncio/base_events.py", line 686, in run_until_complete
yt-session-generator | return future.result()
yt-session-generator | ^^^^^^^^^^^^^^^
yt-session-generator | File "/app/potoken_generator/main.py", line 35, in run
yt-session-generator | token = await potoken_extractor.run_once()
yt-session-generator | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
yt-session-generator | File "/app/potoken_generator/extractor.py", line 46, in run_once
yt-session-generator | await self._update()
yt-session-generator | File "/app/potoken_generator/extractor.py", line 91, in _update
yt-session-generator | await asyncio.wait_for(self._perform_update(), timeout=600)
yt-session-generator | File "/usr/local/lib/python3.12/asyncio/tasks.py", line 520, in wait_for
yt-session-generator | return await fut
yt-session-generator | ^^^^^^^^^
yt-session-generator | File "/app/potoken_generator/extractor.py", line 104, in _perform_update
yt-session-generator | browser = await nodriver.start(headless=False,
yt-session-generator | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
yt-session-generator | File "/usr/local/lib/python3.12/site-packages/nodriver/core/util.py", line 74, in start
yt-session-generator | return await Browser.create(config)
yt-session-generator | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
yt-session-generator | File "/usr/local/lib/python3.12/site-packages/nodriver/core/browser.py", line 87, in create
yt-session-generator | await instance.start()
yt-session-generator | File "/usr/local/lib/python3.12/site-packages/nodriver/core/browser.py", line 343, in start
yt-session-generator | raise Exception(
yt-session-generator | Exception:
yt-session-generator | ---------------------
yt-session-generator | Failed to connect to browser
yt-session-generator | ---------------------
yt-session-generator | One of the causes could be when you are running as root.
yt-session-generator | In that case you need to pass no_sandbox=True
yt-session-generator |
yt-session-generator | successfully removed temp profile /tmp/tmpro75r_2f
yt-session-generator exited with code 1
your instance configuration
compose:
services:
cobalt:
image: ghcr.io/imputnet/cobalt:11
init: true
read_only: true
restart: unless-stopped
container_name: cobalt
ports:
- 127.0.0.1:9000:9000
environment:
API_URL: "https://api.url.example/"
YOUTUBE_SESSION_SERVER: "http://yt-session-generator:8080/"
labels:
- com.centurylinklabs.watchtower.scope=cobalt
watchtower:
image: ghcr.io/containrrr/watchtower
restart: unless-stopped
command: --cleanup --scope cobalt --interval 900 --include-restarting
volumes:
- /var/run/docker.sock:/var/run/docker.sock
yt-session-generator:
image: ghcr.io/imputnet/yt-session-generator:webserver
ports:
- 127.0.0.1:8080:8080
init: true
restart: unless-stopped
container_name: yt-session-generator
labels:
- com.centurylinklabs.watchtower.scope=cobalt
@linuxfight did you manage to fix it?
Haven't managed to fix it
https://github.com/imputnet/yt-session-generator/issues/1
The problem with the session generator is this exact issue, but the issue with cobalt instance is different
I am facing same issue too
services:
cobalt-api:
image: ghcr.io/imputnet/cobalt:11
init: true
read_only: true
restart: unless-stopped
container_name: cobalt
ports:
- 8088:9000/tcp
environment:
API_URL: "https://cobalt.website.com/"
API_AUTH_REQUIRED: 1
API_KEY_URL: "file:///keys.json"
TURNSTILE_SITEKEY: "0xxxxxxxxxxxxxxxxxxxxxxP" # use your key
TURNSTILE_SECRET: "0xxxxxxxxxxxxxxxxxxxxxx4" # use your key
JWT_SECRET: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
YOUTUBE_SESSION_SERVER: "http://host.docker.internal:8089/token"
COOKIE_PATH: "/cookies.json"
labels:
- com.centurylinklabs.watchtower.scope=cobalt
volumes:
- ./cookies.json:/cookies.json
- ./keys.json:/keys.json:ro
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
yt-session-generator:
condition: service_started
watchtower:
image: ghcr.io/containrrr/watchtower
restart: unless-stopped
command: --cleanup --scope cobalt --interval 900 --include-restarting
volumes:
- /var/run/docker.sock:/var/run/docker.sock
yt-session-generator:
image: ghcr.io/imputnet/yt-session-generator:webserver
init: true
restart: unless-stopped
container_name: yt-session-generator
ports:
- 8089:8080/tcp
With the above setup i keep getting this error
yt-session-generator | 2025/05/29 21:48:30.487 [extractor] [INFO] update was succeessful
yt-session-generator | 2025/05/29 21:53:30.543 [extractor] [INFO] update started
yt-session-generator | 2025/05/29 21:53:34.606 [extractor] [INFO] new token: {"updated": 1748555614, "potoken": "MnSgFL75bMJwSqAsz5vDWEk6ePgSajdHGZguip0H1kHbhFoYsq9aoG0oDTdzQE_7A-Ib23nMKhX7x_3zfqzVeo6kN2Og76TI2cqx2qhqR15W4rHwpBmx4o9EsHYdnD7z_sEfazrQRSUjtcnHrBxrV2myHPrkYA==", "visitor_data": "CgtjeVcyTERsYmRTUSjcruPBBjIKCgJHQhIEGgAgMQ%3D%3D"}
yt-session-generator | 2025/05/29 21:53:34.607 [extractor] [INFO] update was succeessful
cobalt |
cobalt | cobalt API ^ω^
cobalt | ~~~~~~
cobalt | version: 11.0.1
cobalt | commit: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
cobalt | branch: main
cobalt | remote: imputnet/cobalt
cobalt | start time: Thu, 29 May 2025 21:33:08 GMT
cobalt | ~~~~~~
cobalt | url: https://website.com/
cobalt | port: 9000
cobalt |
cobalt | [✓] internal tunnel handler running on 127.0.0.1:46297
cobalt | [✓] api keys loaded successfully!
cobalt | [✓] cookies loaded successfully!
cobalt | [!] Failed loading poToken & visitor_data at 2025-05-29T21:33:18.557Z.
cobalt | Error: TypeError: fetch failed
cobalt | at node:internal/deps/undici/undici:13510:13
cobalt | at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
cobalt | at async loadSession (file:///app/src/processing/helpers/youtube-session.js:38:24) {
cobalt | [cause]: ConnectTimeoutError: Connect Timeout Error
cobalt | at onConnectTimeout (/app/node_modules/.pnpm/[email protected]/node_modules/undici/lib/core/connect.js:186:24)
cobalt | at /app/node_modules/.pnpm/[email protected]/node_modules/undici/lib/core/connect.js:133:46
cobalt | at Immediate._onImmediate (/app/node_modules/.pnpm/[email protected]/node_modules/undici/lib/core/connect.js:174:9)
cobalt | at process.processImmediate (node:internal/timers:505:21) {
cobalt | code: 'UND_ERR_CONNECT_TIMEOUT'
cobalt | }
cobalt | }
cobalt | [!] Failed loading poToken & visitor_data at 2025-05-29T21:38:18.596Z.
c
I've kinda fixed error with connecting to poToken extractor, but now remains the error with poToken extractor crashing if it is running not for the 1st time:
yt-session-generator | [INFO] launching chromium instance
yt-session-generator | 2025/06/02 12:52:11.722 [extractor] [INFO] update started
yt-session-generator | Traceback (most recent call last):
yt-session-generator | File "/app/potoken-generator.py", line 4, in <module>
yt-session-generator | potoken_generator.main.main()
yt-session-generator | File "/app/potoken_generator/main.py", line 98, in main
yt-session-generator | loop.run_until_complete(main_task)
yt-session-generator | File "/usr/local/lib/python3.12/asyncio/base_events.py", line 686, in run_until_complete
yt-session-generator | return future.result()
yt-session-generator | ^^^^^^^^^^^^^^^
yt-session-generator | File "/app/potoken_generator/main.py", line 35, in run
yt-session-generator | token = await potoken_extractor.run_once()
yt-session-generator | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
yt-session-generator | File "/app/potoken_generator/extractor.py", line 46, in run_once
yt-session-generator | await self._update()
yt-session-generator | File "/app/potoken_generator/extractor.py", line 91, in _update
yt-session-generator | await asyncio.wait_for(self._perform_update(), timeout=600)
yt-session-generator | File "/usr/local/lib/python3.12/asyncio/tasks.py", line 520, in wait_for
yt-session-generator | return await fut
yt-session-generator | ^^^^^^^^^
yt-session-generator | File "/app/potoken_generator/extractor.py", line 104, in _perform_update
yt-session-generator | browser = await nodriver.start(headless=False,
yt-session-generator | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
yt-session-generator | File "/usr/local/lib/python3.12/site-packages/nodriver/core/util.py", line 74, in start
yt-session-generator | return await Browser.create(config)
yt-session-generator | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
yt-session-generator | File "/usr/local/lib/python3.12/site-packages/nodriver/core/browser.py", line 87, in create
yt-session-generator | await instance.start()
yt-session-generator | File "/usr/local/lib/python3.12/site-packages/nodriver/core/browser.py", line 343, in start
yt-session-generator | raise Exception(
yt-session-generator | Exception:
yt-session-generator | ---------------------
yt-session-generator | Failed to connect to browser
yt-session-generator | ---------------------
yt-session-generator | One of the causes could be when you are running as root.
yt-session-generator | In that case you need to pass no_sandbox=True
yt-session-generator |
yt-session-generator | successfully removed temp profile /tmp/tmp2w0kbl5d
Here's the updated compose file, that has a fix:
services:
cobalt:
image: ghcr.io/imputnet/cobalt:11
init: true
# read_only: true
restart: unless-stopped
container_name: cobalt
ports:
- 127.0.0.1:9000:9000
environment:
API_URL: "https://api.url.example/"
YOUTUBE_SESSION_SERVER: "http://yt-session-generator:8080"
depends_on:
yt-session-generator:
condition: service_healthy
labels:
- com.centurylinklabs.watchtower.scope=cobalt
watchtower:
image: ghcr.io/containrrr/watchtower
restart: unless-stopped
command: --cleanup --scope cobalt --interval 900 --include-restarting
volumes:
- /var/run/docker.sock:/var/run/docker.sock
yt-session-generator:
image: ghcr.io/imputnet/yt-session-generator:webserver
command: sh -c "./startup-webserver.sh 2>&1 | tee /app.log"
ports:
- 127.0.0.1:8080:8080
init: true
restart: unless-stopped
container_name: yt-session-generator
healthcheck:
test: ["CMD-SHELL", "grep -Fq '[server] [INFO] Starting web-server at 0.0.0.0:8080' /app.log"]
interval: 2s
timeout: 3s
retries: 15
start_period: 10s
labels:
- com.centurylinklabs.watchtower.scope=cobalt
I've kinda fixed error with connecting to poToken extractor, but now remains the error with poToken extractor crashing if it is running not for the 1st time:
yt-session-generator | [INFO] launching chromium instance yt-session-generator | 2025/06/02 12:52:11.722 [extractor] [INFO] update started yt-session-generator | Traceback (most recent call last): yt-session-generator | File "/app/potoken-generator.py", line 4, in <module> yt-session-generator | potoken_generator.main.main() yt-session-generator | File "/app/potoken_generator/main.py", line 98, in main yt-session-generator | loop.run_until_complete(main_task) yt-session-generator | File "/usr/local/lib/python3.12/asyncio/base_events.py", line 686, in run_until_complete yt-session-generator | return future.result() yt-session-generator | ^^^^^^^^^^^^^^^ yt-session-generator | File "/app/potoken_generator/main.py", line 35, in run yt-session-generator | token = await potoken_extractor.run_once() yt-session-generator | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yt-session-generator | File "/app/potoken_generator/extractor.py", line 46, in run_once yt-session-generator | await self._update() yt-session-generator | File "/app/potoken_generator/extractor.py", line 91, in _update yt-session-generator | await asyncio.wait_for(self._perform_update(), timeout=600) yt-session-generator | File "/usr/local/lib/python3.12/asyncio/tasks.py", line 520, in wait_for yt-session-generator | return await fut yt-session-generator | ^^^^^^^^^ yt-session-generator | File "/app/potoken_generator/extractor.py", line 104, in _perform_update yt-session-generator | browser = await nodriver.start(headless=False, yt-session-generator | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yt-session-generator | File "/usr/local/lib/python3.12/site-packages/nodriver/core/util.py", line 74, in start yt-session-generator | return await Browser.create(config) yt-session-generator | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yt-session-generator | File "/usr/local/lib/python3.12/site-packages/nodriver/core/browser.py", line 87, in create yt-session-generator | await instance.start() yt-session-generator | File "/usr/local/lib/python3.12/site-packages/nodriver/core/browser.py", line 343, in start yt-session-generator | raise Exception( yt-session-generator | Exception: yt-session-generator | --------------------- yt-session-generator | Failed to connect to browser yt-session-generator | --------------------- yt-session-generator | One of the causes could be when you are running as root. yt-session-generator | In that case you need to pass no_sandbox=True yt-session-generator | yt-session-generator | successfully removed temp profile /tmp/tmp2w0kbl5dHere's the updated compose file, that has a fix:
services: cobalt: image: ghcr.io/imputnet/cobalt:11 init: true # read_only: true restart: unless-stopped container_name: cobalt ports: - 127.0.0.1:9000:9000 environment: API_URL: "https://api.url.example/" YOUTUBE_SESSION_SERVER: "http://yt-session-generator:8080" depends_on: yt-session-generator: condition: service_healthy labels: - com.centurylinklabs.watchtower.scope=cobalt watchtower: image: ghcr.io/containrrr/watchtower restart: unless-stopped command: --cleanup --scope cobalt --interval 900 --include-restarting volumes: - /var/run/docker.sock:/var/run/docker.sock yt-session-generator: image: ghcr.io/imputnet/yt-session-generator:webserver command: sh -c "./startup-webserver.sh 2>&1 | tee /app.log" ports: - 127.0.0.1:8080:8080 init: true restart: unless-stopped container_name: yt-session-generator healthcheck: test: ["CMD-SHELL", "grep -Fq '[server] [INFO] Starting web-server at 0.0.0.0:8080' /app.log"] interval: 2s timeout: 3s retries: 15 start_period: 10s labels: - com.centurylinklabs.watchtower.scope=cobalt
I am still getting this error even after using your yt-session-generator
cobalt | cobalt API ^ω^
cobalt | ~~~~~~
cobalt | version: 11.0.2
cobalt | commit: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
cobalt | branch: main
cobalt | remote: imputnet/cobalt
cobalt | start time: Wed, 04 Jun 2025 15:04:46 GMT
cobalt | ~~~~~~
cobalt | url: https://cobalt.website.com/
cobalt | port: 9000
cobalt |
cobalt | [✓] internal tunnel handler running on 127.0.0.1:37035
cobalt | [✓] api keys loaded successfully!
cobalt | [✓] cookies loaded successfully!
cobalt | [!] Failed loading poToken & visitor_data at 2025-06-04T16:04:56.503Z.
cobalt | Error: TypeError: fetch failed
cobalt | at node:internal/deps/undici/undici:13510:13
cobalt | at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
cobalt | at async loadSession (file:///app/src/processing/helpers/youtube-session.js:38:24) {
cobalt | [cause]: ConnectTimeoutError: Connect Timeout Error
cobalt | at onConnectTimeout (/app/node_modules/.pnpm/[email protected]/node_modules/undici/lib/core/connect.js:186:24)
cobalt | at /app/node_modules/.pnpm/[email protected]/node_modules/undici/lib/core/connect.js:133:46
cobalt | at Immediate._onImmediate (/app/node_modules/.pnpm/[email protected]/node_modules/undici/lib/core/connect.js:174:9)
cobalt | at process.processImmediate (node:internal/timers:505:21) {
cobalt | code: 'UND_ERR_CONNECT_TIMEOUT'
cobalt | }
cobalt | }
yt-session-generator | 2025/06/04 16:04:59.082 [extractor] [INFO] new token: {"updated": 1749053099, "potoken": "MnSdMNkFKeufmZ0IFJvFet4vbUuWfX6RHNfK5_t6BJ8Cb6bryvcazjeNbw1d3hOsR2qQz1-FT3qXTyUGmhGw4AdOOY0P9vzmRC-fHJrBgtneFIEsxVNAV3-eGjnJdig6Lgww_hI5-r_7CWsIHZO-AockBo8Pjw==", "visitor_data": "CgtLaG1EUWl2M05zVSin3YHCBjIKCgJHQhIEGgAgGg%3D%3D"}
yt-session-generator | 2025/06/04 16:04:59.112 [extractor] [INFO] update was succeessful
yt-session-generator | 2025/06/04 16:09:59.234 [extractor] [INFO] update started
yt-session-generator | 2025/06/04 16:10:10.081 [extractor] [INFO] new token: {"updated": 1749053410, "potoken": "MnQa-Ydh29f-WRrBo3vIvupHPHAGLvXfTYScB8mmJEWDoCMkiQRu3teFiIcr9b1ZW-7_2EFsIPKPVXSyw0_
i've kinda fixed yt session generator for me, but fix is just a rewrite of session generator to a different chrome driver.
@Gareryer, sorry I can't help with your issue, on my side everything works fine. can you provide more information?
here's my compose, that uses custom session generator:
services:
cobalt:
image: ghcr.io/imputnet/cobalt:11
init: true
# read_only: true
restart: unless-stopped
container_name: cobalt
ports:
- 127.0.0.1:9000:9000
environment:
API_URL: "https://api.url.example/"
YOUTUBE_SESSION_SERVER: "http://yt-session-generator:8080"
depends_on:
yt-session-generator:
condition: service_healthy
labels:
- com.centurylinklabs.watchtower.scope=cobalt
watchtower:
image: ghcr.io/containrrr/watchtower
restart: unless-stopped
command: --cleanup --scope cobalt --interval 900 --include-restarting
volumes:
- /var/run/docker.sock:/var/run/docker.sock
yt-session-generator:
image: linuxfight/yt-session-generator:main
ports:
- 127.0.0.1:8080:8080
volumes:
- swayvnc-wayvnc-certs:/certs
environment:
- SWAY_UNSUPPORTED_GPU=true
- SWAY_RESOLUTION=1280x720
- WAYVNC_PORT=5910
- WAYVNC_ENABLE_AUTH=true
- WAYVNC_USERNAME=wayvnc
- WAYVNC_PASSWORD=wayvnc
- VIRTUAL_GPU=true
devices:
- /dev/dri
security_opt:
- seccomp:unconfined
init: true
restart: unless-stopped
container_name: yt-session-generator
healthcheck:
test: ["CMD", "curl", "--fail", "http://localhost:8080/token"]
interval: 2s
timeout: 3s
retries: 15
start_period: 10s
labels:
- com.centurylinklabs.watchtower.scope=cobalt
volumes:
swayvnc-wayvnc-certs:
https://github.com/linuxfight/yt-session-generator
can you try it and respond if it works for you? @acrossoffwest @Gareryer
here's my compose, that uses custom session generator:
services: cobalt: image: ghcr.io/imputnet/cobalt:11 init: true # read_only: true restart: unless-stopped container_name: cobalt ports: - 127.0.0.1:9000:9000 environment: API_URL: "https://api.url.example/" YOUTUBE_SESSION_SERVER: "http://yt-session-generator:8080" depends_on: yt-session-generator: condition: service_healthy labels: - com.centurylinklabs.watchtower.scope=cobalt
watchtower: image: ghcr.io/containrrr/watchtower restart: unless-stopped command: --cleanup --scope cobalt --interval 900 --include-restarting volumes: - /var/run/docker.sock:/var/run/docker.sock yt-session-generator: image: linuxfight/yt-session-generator:main ports: - 127.0.0.1:8080:8080 volumes: - swayvnc-wayvnc-certs:/certs environment: - SWAY_UNSUPPORTED_GPU=true - SWAY_RESOLUTION=1280x720 - WAYVNC_PORT=5910 - WAYVNC_ENABLE_AUTH=true - WAYVNC_USERNAME=wayvnc - WAYVNC_PASSWORD=wayvnc - VIRTUAL_GPU=true devices: - /dev/dri security_opt: - seccomp:unconfined init: true restart: unless-stopped container_name: yt-session-generator healthcheck: test: ["CMD", "curl", "--fail", "http://localhost:8080/token"] interval: 2s timeout: 3s retries: 15 start_period: 10s labels: - com.centurylinklabs.watchtower.scope=cobaltvolumes: swayvnc-wayvnc-certs: https://github.com/linuxfight/yt-session-generator
can you try it and respond if it works for you? @acrossoffwest @Gareryer
Hi, I've recently ran into the same issue with your fork