Replies: 3 comments 9 replies
-
I looked into those symbolic links, those are a steamcmd issue, i can toss over a "hey this is an issue" to them. What architecture is your host? arm, x86_64, etc |
Beta Was this translation helpful? Give feedback.
-
Valheim server won't launch on arm64, but one can run this container on arm64 (with QEMU emulating x86_64) and get these ln/link errors. In fact, they appear in the logs for me on the x86_64 arch too. However, I do not get them from running the steamcmd:ubuntu image standalone. Unsure what that means for their source. These ln errors aren't what blocks the Valheim server from running on arm64. It seems like your goal is achievable. You can do it, or you can join me in loving our limitations and just paying for a cheap x86_64 VM. I started and gave up, but I hope you're smarter than I am and have already walked away from it.
tonistiigi/binfmt is an installer for emulators that can be used while building a Docker container. When you run tonistiigi/binfmt as intended, it installs available emulators or a selected sub-set of emulators, including QEMU, to your local Docker Engine. From there, we might try to Docker compose up, but QEMU won't work that way, because compose runs related images. And at this point, nowhere has emulation been added to our image, it's just been installed to Docker Engine. To run the Valheim server with QEMU in a container, you have to build a multi-platform Docker image yourself.
Makes sense. On all public clouds, arm64 compute is far cheaper than x86 -- ARM chips simply use less electricity. And emulating x86 on arm64 can be done, in fact, it has been done. But what @spannerman79 was/is getting at is: it's probably not worth it to you. OCI even provides a guide to what they call "nested KVM virtualization". With this architecture for our Valheim server within this container, we have to create many layers of virtualization between our app and the bare metal: the container, VMs, hypervisors, etc. Our cloud provider itself is running a hypervisor on its physical server to offer a virtual machine, we're running a hypervisor on their virtual machine, an emulator on our hypervisor -- and a container on top of that emulator to boot. Things are starting to sound a little recursive. Every layer will drain a little slice of the physical resources off of the stack until your Valheim server at the final layer is gasping for air. The only way we can avoid it is by exposing the virtualized resources, creating a direct channel for our app between the virtual and the real. But even that doesn't solve for all of the setup, configuration, and checklist items. From the outside, it's cheap and seems easy enough, but down the road we start to see a more serious effect of all the layers. For every abstraction between the physical compute and our app, we must add a little bit more complexity, spend a little bit more time, and feel a little bit more confused when things break. Here I found the following applies: "You spent so much time wondering if you could, you never stopped to think if you should" If you only have 24 hours in your day like I do, then my suggestion is to do yourself a favor and stop while you're ahead: just run the mbround18/valheim using docker compose on a cheap x86 VM. Better yet, self-host it at home. Use OCI/GCP Preemptible or AWS/Azure Spot instances, and don't worry about getting stopped too often, I've had them up for weeks at a time. If this all sounds like nonsense, take it for a spin, try it out. It's definitely possible. But then see how much time you spend. And you might come back and join me in accepting, even loving, the limits as they are. Thank God for the limitations; I, for one, will choose more sleep over more simulation. |
Beta Was this translation helpful? Give feedback.
-
I am having the same messages. The only difference is I am running it on an amd64 node:
My logs:
That being said my logs does not explicitly say exiting with 1. But my server is not running. |
Beta Was this translation helpful? Give feedback.
-
Hi!
Great work!
I am having small trouble with running this on Oracle Ampere Free server.
My setup is based on docker compose and QEMU with emulators from: https://hub.docker.com/r/tonistiigi/binfmt
When I start server I receive error:
My docker-compose.yaml
Full log:
Beta Was this translation helpful? Give feedback.
All reactions