Forums » Linux
Vendetta Online on Docker
Use case: Easy to install on systems that do not follow FHS (Filesystem Hierarchy Standard). Tested on NixOS. Guix users tell your experience.
Steps:
1. Download client installer
2. Create this Dockerfile:
<code>
FROM debian:latest
RUN apt-get update && apt-get install -y wget libgl-dev alsa-utils dbus* pulseaudio sox
RUN dbus-uuidgen --ensure
WORKDIR /root/.vendetta
RUN bash
</code>
3. Move the installer in ~/.vendetta
4. Build the container:
<code>
docker build -t vo .
</code>
5. Run <code>xhost +local:</code> to allow the container to use GUI.
6. Run the container:
<code>
docker run -it --rm -e DISPLAY=$DISPLAY -e ALSA_CARD=sofhdadsp --device /dev/snd --device /dev/dri/card0 -v /tmp/.X11-unix/:/tmp/.X11-unix/ -v /home/user/.vendetta:/root/.vendetta vo
</code>
First time only: Install the client
7. Play as usual.
Next time onwards you just need to follow steps 6 and 7 (and 5 if you shut down your computer).
Known issues:
1. You cannot write into ~/.vendetta as unprivileged user on host machine. This is by design. You can always place plugins as root or use the container to do the same.
Possible issues:
1. You might not get sound. To fix it, run <code>aplay -l</code> in the container and use whatever card it displays next time you run the container. Put the value in ALSA_CARD.
2. If you have a dedicated GPU, you might consider passing <code>--gpus all</code> to the docker run command. It should use dGPU. I have not tested it.
Steps:
1. Download client installer
2. Create this Dockerfile:
<code>
FROM debian:latest
RUN apt-get update && apt-get install -y wget libgl-dev alsa-utils dbus* pulseaudio sox
RUN dbus-uuidgen --ensure
WORKDIR /root/.vendetta
RUN bash
</code>
3. Move the installer in ~/.vendetta
4. Build the container:
<code>
docker build -t vo .
</code>
5. Run <code>xhost +local:</code> to allow the container to use GUI.
6. Run the container:
<code>
docker run -it --rm -e DISPLAY=$DISPLAY -e ALSA_CARD=sofhdadsp --device /dev/snd --device /dev/dri/card0 -v /tmp/.X11-unix/:/tmp/.X11-unix/ -v /home/user/.vendetta:/root/.vendetta vo
</code>
First time only: Install the client
7. Play as usual.
Next time onwards you just need to follow steps 6 and 7 (and 5 if you shut down your computer).
Known issues:
1. You cannot write into ~/.vendetta as unprivileged user on host machine. This is by design. You can always place plugins as root or use the container to do the same.
Possible issues:
1. You might not get sound. To fix it, run <code>aplay -l</code> in the container and use whatever card it displays next time you run the container. Put the value in ALSA_CARD.
2. If you have a dedicated GPU, you might consider passing <code>--gpus all</code> to the docker run command. It should use dGPU. I have not tested it.
Git repo for future updates: https://gitea.adityakumar.xyz/aditya/vo-docker
This is probably better suited to the Linux forum. I'll leave it here for a little while, and then eventually move it over there.
If you pipe the selections for the installer into stdin, you can automate the install too. A simple newline echo should suffice.
Add a user (uid 1000 preferably) and run the install that way. Then your mounted dir has the correct permissions too. Running stuff as root is nasty...
Add a user (uid 1000 preferably) and run the install that way. Then your mounted dir has the correct permissions too. Running stuff as root is nasty...