I’m currently trying out Bazzite, and everything is smooth, except one thing: I can’t get V2Ray-based apps (V2RayN, Nekoray etc.) to tunnel the VPN traffic. As I couldn’t find much online, asking here - did anyone successfully run V2Ray on immutable distros generally and Bazzite specifically? What should be done to make it work?
(An obvious solution - installation via rpm-ostree - does not help, and I need V2Ray specifically)
What have you tried? Why doesn’t
rpm-ostree install nekoraywork for you?Nekoray in particular doesn’t have .rpm, so I used the universal executable (NOT the AppImage which doesn’t have TUN capability). With TUN mode enabled, it shows outbound and inbound connections trying to be established, and exchanges of up to 300 singular bytes per second. Needless to say, no Internet resources work. The second I close the connection, everything gets back to normal.
V2RayN does have rpm and can be installed using rpm-ostree, but enabling TUN and subsequent connection attempt lead to the following log messages appear (<fields> censored):
<date> <time> from <local IP> accepted <external IP> [proxy-relay-<protocol> -> proxy] <timezone> <date> <time> ERROR [<something> <ping>] dns: exchange failed for <URL>. IN A: EOF
Same continues for every connection attempt. No actual connection is established.
Nekoray in particular doesn’t have .rpm
Perhaps they don’t provide any themselves. But installing it from a repository is preferred anyways. To be clear, it’s found within Terra’s repository. The very same Terra repository that’s enabled by default on Bazzite. So, as I see it, there’s nothing that would prevent
rpm-ostree install nekorayfrom working. Have you even tried this?I don’t know why V2RayN doesn’t work though. Try Nekoray and let us know how it goes.
EDIT: I just noticed how Nekoray has seemingly lost its maintainer. Thankfully, someone forked it and renamed it to Throne. And, with it, we find ourselves an RPM repository to install from. Thankfully, you don’t even have to go through any hoops, as it’s also found in the Terra repository. So you’re simply one
rpm-ostree install throneremoved from installing it.I got stuck with Terra atm. Bazzite shows that terra-release is indeed installed, yet doesn’t seem to check the repo when installing packages. And, predictably, fails to install either Nekoray or Throne through
rpm-ostree install throneAssuming it is disabled (as happened in https://github.com/ublueos/bazzite/issues/2580), I wanted to reenable it, but didn’t find any command to do this in rpm-ostree help.
Attempting
dnf5 install throne --enable-repo=terrapredictably didn’t work as it’s an immutable system.Any ideas or help here? Your help is much appreciated.
Bazzite shows that terra-release is indeed installed
Assuming it is disabled (as happened in https://github.com/ublue-os/bazzite/issues/2580)
Interesting conflict; as these seem to be at odds with each other. I wonder what’s up. If it’s indeed disabled, then I would like to apologize for causing any confusion. FWIW, I may have been mislead by Terra’s own documentation. I suppose it might be outdated.
Anyhow, perhaps we can undertake the steps to uninstall
terra-release(even if it’s not there) and (re)install it.Uninstalling
terra-releaseIf
terra-releaseis layered[1], then we’d have to start withrpm-ostree uninstall terra-release. Afterwards, to delete the Terra repository, even if it’s not even there[2]:sudo rm -rf /etc/yum.repos.d/terra.repo(Re)installing
terra-releaseTo (re)install
terra-release(as per its own instructions):First evoke the following command:
curl -fsSL https://github.com/terrapkg/subatomic-repos/raw/main/terra.repo | pkexec tee /etc/yum.repos.d/terra.repoAnd then, evoke this one:
sudo rpm-ostree install terra-release. I’m unsure ifsudois required. Personally, first I’ll do is withoutsudo. Only after it fails due to permissions will I do it withsudo.A reboot is probably required for it to take effect. Hence, try evoking
rpm-ostree install throneonly after performing a reboot.
You can check this with
rpm-ostree status. If it is, you will find it afterLayeredPackages:. If it’s not, you should not evokerpm-ostree uninstall terra-release, as it wouldn’t get through anyways. ↩︎If
ls /etc/yum.repos.d/ | grep "terra"doesn’t yield anything, then you may skip this. But evoking the command to delete something that’s not there, isn’t bad or anything. ↩︎
Alrightie, this worked! I did install Throne. As per
sudobeforerpm-ostree- it’s not necessary, it just asks for su password if you run it without sudo.So, Throne came up with another error, it was unable to change file ownership in /usr directory (of course it couldn’t, it’s an immutable system)…and then it got me.
I read into the errors given by v2rayN, and checked it on a regular mutable distro…and indeed, my subscription list got blocked right when I started testing TUN on Bazzite a few days ago. Case closed, Bazzite has nothing to do with it.
But, I learned something about Bazzite repo management, which will be valuable going forward. Thanks a lot for so much effort figuring things out!
Didn’t figure out how to add subscription lists (if it’s possible at all), so didn’t research further, as this feature is crucial for my use case. Looks like I’ll have to try it again.

