ViewTube / viewtube

▶️ ViewTube: The open source, privacy-conscious way to enjoy your favorite YouTube content. Docs: https://viewtube.wiki, Status: https://uptime.viewtube.io

Home Page:https://viewtube.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Does viewtube support ipv6?

iamtherobin opened this issue · comments

I want to deploy a youtube frontend and possibly make it open to the public. Does viewtube support connecting to youtube exclusive by ipv6 with a ipv6 rotator solution like invidious? If it doesn't, this makes it a no go for me. With google cracking down on privacy harder ever, running a public youtube frontend will only get many ipv4 addresses banned.

This function should now be considered essential for all frontend developers.

commented

I think using an ipv6 proxy or similar should be possible. ViewTube uses undici internally for requests.
Putting the system behind a proxy would work or using the environment variable VIEWTUBE_PROXY_URL, you can specify a proxy for it to use: https://viewtube.wiki/configuration/advanced#proxy.

I haven't tested any of this with ipv6 tho, so please let me know if it doesn't work.

I'll have look into doing a forward proxy later. A quick peek a squid docs shows it supports ipv6 but didn't immediately see a documented way to ensure it only operated in ipv6.

If someone knows how to setup a simple forwarding proxy that only use ipv6, it would be helpful to point to an online guide.

So I still have not got around to setting up a proxy. But I wanted to ask about the ipv6 support within the container itself. Is there any support for IPv6 in viewtube directly?

Viewtube server itself is appearently only listening on IPv4, even though I setup a IPv6 network for it. Furthermore, the admin panel lists IPv6 and IPv4 ips. But for me, it shows me my WAN IPv4 for both IPv6 and IPv4.

My network setup in my compose file is as follows:

networks:
  viewtube:
    name: viewtube
    enable_ipv6: true
    ipam:
      config:
        - subnet: fd12:3456:7890:4::/64
          gateway: fd12:3456:7890:4::1

This is the configuration I use for my other containers and those work with IPv6. I cannot get viewtube to recognize that there is an IPv6 network available to it.

EDIT: I also tried deployment on host network mode to access the IPv6 global addresses directly. But then viewtube was throwing an error about redis.

viewtube        | [ViewTube] 1      - 6/13/2024, 11:23:03 PM   ERROR [ExceptionHandler] getaddrinfo ENOTFOUND viewtube-redis - {"stack":["Error: getaddrinfo ENOTFOUND viewtube-redis\n    at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:120:26)"]}
viewtube exited with code 1
commented

I have very little experience with this topic unfortunately.

The thing I noticed is that ViewTube binds to 0.0.0.0 by default, which only targets ipv4 (I think).
image
I changed it to ::, which should (theoretically) bind to all interfaces.
You can test the change on the mauriceo/viewtube:dev image.

I just tested the dev version. I can confirm the web interface is reachable on IPv6 and IPv4 now. Which I find interesting, since [::] is the IPv6 equivalent of IPv4's 0.0.0.0. I would have expected it would only be reachable on IPv6 if it was set to listen on only [::]. Maybe it is has something to due with docker's IPv6 implementation?

But the main issue is still in viewtube's real connectivity. Here is what I see in admin panel, even for the dev:
viewtube-ipv6

If you can look into this, I would love to test getting out going IPv6 to work.

commented

I just tested the dev version. I can confirm the web interface is reachable on IPv6 and IPv4 now. Which I find interesting, since [::] is the IPv6 equivalent of IPv4's 0.0.0.0. I would have expected it would only be reachable on IPv6 if it was set to listen on only [::]. Maybe it is has something to due with docker's IPv6 implementation?

This is expected, it's because of node.js.

If you can look into this, I would love to test getting out going IPv6 to work.

I'll try :)