#Docker Help
1 messages · Page 2 of 1
thats a fair point. I'm not running everything in k8s. I only have a small k3s cluster with some webservices
never tried running a gameserver or something like that.
My kubernetes cluster doubles as my lab for work. So I decided to just run my gameservers in it too lol
you've got to be kidding me. My proton image is working just fine on docker.
I wonder how many hours I've wasted on this 😄
does podman support building arm like docker buildx does?
podman doesnt build on its own. I use Buildah
and I believe so
oh wait... I am wrong, it does.
I swear it did not used to
In either case, I still use Buildah lol
well good and bad news I guess 😄
lol yeah
the thing I am curious now is... is it podman in general that is having an issue or just podman in my WSL environment which is not a true Linux environment
I won't have the capability to run VMs in my lab yet for a while and I don't want to install podman on my servers as that's my production environment running kubernetes
well I don't have podman installed, and with mac it would probably not work
No worries, I'll ask around and if not maybe I'll just run a VM on this windows machine
I have never used podman but can get it up and running on my Nixos machine tomorrow and spin up a container/pod to give you a second point of reference.
Also, I'm the TrueNorth guy you were talking to earlier today.
podman syntax is same as docker, you just replace the word docker with podman in your commands. Couple of notes, the containers them selves don't run as root by default (on the host), and it doesn't look at docker hub by default, you have to specify full path for container image, so instead of sknnr/enshrouded:latest for example it would be docker.io/sknnr/enshrouded:latest
that's really all you need to know about podman for doing testing
Well that makes things easier.
Do either of you forsee any issues installing podman alongside docker on my server?
nah should be fine, they both use runc as their underlying (lower level) container runtime
I almost switched over when Docker pulled their shenanigans early last year but they backed off so I stayed with what was comfortable.
yeah docker is... well... they've got a good product and they'd like it to make money 😄
Yeah, I don't really fault them for trying to monetize on their hard work. They just need to be more tactful about implementing it.
Yeah I got it working last night with proton run. The only annoyance is that proton run exits and I’ve got a bunch of processes it spawns. Using & to run it in the BG is basically useless as it exits anyway. Supervisor can’t handle it either as, again, proton exits once wineserver and everything else is running so I’d basically have to tell it run it once and don’t attempt to restart so what’s the point of supervisor. I tried using wait, but again because that pid exits once it starts all the background processes that doesn’t work either.
So I settled on discovering the pid that is running enshrouded_server.exe and then doing some voodoo to just watch that pid. Not with wait though, because that doesn’t work because it’s not a child of my shell.
My proton image is available for testing sknnr/enshrouded-dedicated-server:proton-latest as a bonus the image is about half the size of my wine image coming in at 714MB compressed
Well I got podman up and running and started a container with your command and proton-latest. It appears to have started without issue. My Enshrouded is updating right now but i'll try to connect locally after that.
[I 00:00:01,470] [online] Server connected to Steam successfully
Do you have it pull ge-proton latest or did you just set it to the latest version that came out this morning or yesterday?
Well GE-Proton is pulled during image build not container start. The containerfile is set to pull 8.30
which is currently latest
ahh yeah that makes sense. So will it always pull latest on rebuild?
No, it is pinned to 8.30 in the containerfile to avoid any surprises. I like to pin things.
I think my podman setup is just mucked up
I am also doing some updates to my ark ascended container which also uses proton and the containerfile is like 99% identical to what I have for Enshrouded and it builds and runs just fine
even more interesting is that I don't have weird issues with proton pid after it starts either
I will need to give your asa proton image a try. I spun up a container a couple months ago and can't even remember who I went with. My server will appreciate any performance increase.
it's been out there almost since release
though I am currently ripping supervisor out of it and making some changes to get the image a bit more lean
Are there any tools like arkmanager at this point?
there might be. I thought I saw something like that
I haven't been playing it much as I kept crashing
how would one go about using a latter image while keeping the savegame from the an older one? I tried mounting the volume, but getting The ownership of /home/steam/enshrouded/savegame is not correct and the server will not be able to save....
Likely you were using an older version of my image, possibly from when the UID:GID of the container was 1000. I bumped those IDs up to 10000 to avoid host collisions. The directory that gets mounted into the container, do a chown -R 10000:10000 /that/directory
If it's a bind mount, it will be where ever you are mounting it from. If it's a docker volume, by default those get created in /var/lib/docker/volumes
It happens the same to me and no success changing it
What do you mean by no success changing it? I wrote that check to make sure the server can write to the save directory, if the check fails I output that error. If you fix the permissions it WILL get past this check.
I was replying to ekiken about no success changing the number of slots to something below 16 slots, it always shows 16 in my case and it looks at ekiken. Btw I am using your image @worldly hull without any issue at all in an ubuntu running rootless portainer. Thanks for all the support to make it work.
Oh lol, I should learn to read a bit better. No, worries. Glad it's working well for you.
I think I have seen others stating that it doesn't respect that setting at all in the config
I have tried to lower the number because 1) i dont need that many slots (3-4 would be ok) and 2) because I am hoping lowering the number will reduce the CPU consumption as I expect creating more slots "maybe" is creating more sockets or equivalents to listen for those connections
I am also aware this is a really early launch and things will get better with time
try my proton-latest image
whatever proton is doing on top of wine to handle the windows network stack and how its implemented in the enshrouded server seems to be more performant than just using wine alone.
Thanks I will do that
I don't see any enshrouded-persistent-data volume in /var/lib/docker/volumes/. Even though Inspecting the container shows the following
"Mounts": [
{
"Type": "volume",
"Name": "enshrouded-persistent-data",
"Source": "/var/lib/docker/volumes/enshrouded-persistent-data/_data",
"Destination": "/home/steam/enshrouded/savegame",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
}
],
can you do ls -al /var/lib/docker/volumes
total 36
drwx-----x 3 root root 4096 Feb 1 11:16 .
drwx--x--- 12 root root 4096 Feb 1 11:10 ..
brw------- 1 root root 259, 9 Feb 1 11:10 backingFsBlockDev
-rw------- 1 root root 32768 Feb 1 11:10 metadata.db
drwx-----x 3 root root 4096 Sep 19 20:04 minikube
and how about a whoami && df -h
docker natively
and has it ever worked
has the container ever stopped?
it has
ok then it seems docker may be telling us tales from the school yard
I just started it a few minutes ago to see if it was still working
lol fr
maybe you have a volume declaration in your docker compose file and use relative paths in the volume declaration of the service?
I'm not using compose
well damn 😄
can you show me the full command you are using to start the container
you know what, let's try this...
find / -type d -name "enshrouded-persistent-data"
This is the docker run from docker desktop
no result
its not getting mounted
pretty sure I pretty much copy-edit-pasted the command from the docker page to get it started
my instructions would have included it
ok
this is an issue
let me think for a second, we need to get your save off of your current container
lol ok what the hell
is that a windows does things weird issue?
maybe
that is docker for windows?
on arch linux
is that docker for windows with wsl?
with docker desktop, never used that on a linux before 🤔
can you do docker ps -a
well somewhere it should be configured, where it really stores the volumes
weird... docker ps isn't showing anything running, but docker desktop is
i'm super confused
wtf has to be
I think by default docker desktop uses an ubuntu WSL image
riddle me this
can you from your windows shell
wsl --list
I'm not in windows
it's a linux with a vm running docker
so native arch with docker desktop
arch based (endeavour) with docker desktop, yea
puh, for now you can download those two files and save it on your normal system
with docker desktop you should have a button or something for that
can you look at the volume in docker desktop
and see where it's pointing to
and yeah, I would
because we need to find that volume so we can get your save out of it
is it the 3ad85aea files?
yes
I have those saved
ok, so remove docker desktop to avoid confusion
for sure. thanks yall.
and run the container using one my examples from GH readme
and when the volume is created, drop those files into the volume
and chown them to 10000:10000
if docker creates the volume, the volume itself will have the right permissions but those files will not until they are chown'ed
also if you are upgrading to one of my latest images, consider the proton-latest tag
yea that's what I was trying when this whole thing happened
and if you want something to manage your running dockers, you can lookup portainer
there you get a website with an overview of running containers. You can also create and manage the containers there
and if you're exploring kubernetes, I recommend ArgoCD
also recommend k3s over minikube
ohh. was just thinking about trying that
k3s is nice and also k9s for nice terminal view
I've been a backend dev, a front end dev. Trying to learn a bit of devops now.
welcome to the fold
in real life, I am an enterprise devops/platform architect
once you get something like k3s going, argocd integrates nicely and is a super slick way to deploy into the cluster. That is the setup I have in my home environment.
and then I wrote a bunch of automation that watched my kubernetes services and keeps a state in S3. So whenever there is a deploy into the cluster it checks for new or removed services and automatically build firewall rules and DNAT/port-forwarding rules on my router so I don't have to lol
code lives here https://github.com/jsknnr/kubernetes-edgeos
only works with Ubiquiti EdgeOS devices
I'm thinking to build a small homelab. Maybe a small cluster with 3 zima blades. So I will definitely take a look at ArgoCD
yeah that's why all my game server projects have helm files, selfishly thats how I deploy everything. Argo just reaches out to my GH project, slurps up the helm chart and I plug my values in. Deployed.
and then my network automation picks up the service deployment and firewall rules and dnat rules get auto deployed.
what is your storage solution for the cluster? NAS as blobstorage?
Ah
one second
distributed block
each of my k3s nodes has a handful of ssds
and I use MetalLB with BGP service advertisement to my router so as the pods/services migrate around the cluster my router always knows how to route to the service. I use LoadBalancer type services, not nodeport.
added to the list - does longhorn also work directly with a nas?
I've not tried that approach. It wants to be able to have full access to individual drives
I saw some reference for that and how to setup with a virtual ip
yeah I don't use VIP at all
with MetalLB I have a service pool which is just an arbitrary subnet that gets advertised as individual /32 route entries for each service to my router
I never setup a cluster before. That will be a challenge for sure
off topic for the game server, but are there good resources to learn more devops yall would recommend?
thanks for the tips 🙂
I've been doing this kind of stuff for a long time and has been my job for 12-13 years now. What helps me is having my lab at home so I can play around with stuff outside of work.
for more structured continuous education I use Udemy some times
I just have an annual subscription. If you keep an eye one it, they do discounts on those from time to time
Yea I've used udemy a whole lot too through out my career and have always waited for their crazy sales
which seems like at least a monthly thing
This is what I was talking about with MetalLB https://metallb.universe.tf/concepts/bgp/
Hi, does this Docker container solve the issue of high CPU usage on the server?
Using Wine to run the server causes CPU issues
Use a Docker container with Proton instead
Or if you're using Pterodactyl use an egg with Proton
Same thing
Also, you haven't linked anything
Yes, I use Pterodactyl proton egg, But the problem is equally serious.
What are your server stats?
Are you hosting something else on the same server?
Yes, You can see several palworlds, and I have planned to wait for the official release of the Linux version server. Thank you for your reply.
Never saw this. 800% was highest
looks like a problem on your server
Enshrouded server uses all cores 😉 Try to limit the core for the enshrouded Server in Ptero
it's just resource contention
also 2.3ghz may be a bit slow for game servers - great for web apps
looks like your 15 minute load average was around 21, and then your 1 minute jumped up to 45, probably with the start of the enshrouded server
no iowait so thats good
their network stack does not like linux. Proton helps. Is that a VM by chance?
if it is, what network driver are you using for the VM
@worldly hull I had a question concerning your asa proton container but didn't feel like this was the right spot to ask so I just created an issue on github. No rush but if you'd be willing to look at it I would appreciate it. Having an annoying issue that I feel could be user error.
No worries. I’ll take a look at it when I get a chance. Also I get emails on tickets so I would’ve seen it.
Actually, I am going to delete it. For some reason its not happening now. I completely nuked the data folder for that container and started over for a third time and its working now. Just restarted and it didn't re-download everything again. Before it was redownloading everything every time I restarted the container.
Thank you though!
Just like enshrouded, I don’t persist game data. Just save data.
Ist there a recommended one for this Kind of workload? Im using virtio-net myself
virtio is what you want, or vmxnet if you’re using esxi. What you don’t want is e1000. You also need to be sure that you have the guest utilities installed and running on the vm if you’re using either of the paravirtualized network adaptors.
@worldly hull I'm sorry to bother you, but have a question. Is your latest 2.0.5 image proton or should we still use the proton-latest tag?
I just started it up with 2.0.5 and I don't see it pulling proton anywhere in the log.
2.0.5 is wine. Proton is proton-latest
Thanks for the reply, sorry to bother you.
no worries
Would it be ok to just swap tags or should I nuke the folder and start over when switching to proton?
Nope it will be ok. the only thing in the volume is the saves
Great, enjoy your evening.
Please don't look into this now, instead enjoy your evening. However, the proton-latest image is stuck in an error loop.
[I 00:00:00,162] [app] start creation step Init_SteamworksCAppInfoCacheReadFromDiskThread took 5 milliseconds to initialize [E 00:00:00,286] [steam] Failed to initialize Steamworks system...Generic Error [E 00:00:00,286] [steam] Message from Steam: InitGameServer failed [E 00:00:00,286] [app] Failed to create Steamworks. [I 00:00:00,291] [app] start destruction step Init [I 00:00:00,296] [enshrouded] Close Log file 2024-02-05 04:35:50,520 INFO: Waiting for enshrouded_server.exe to be running **repeats several times but deleted for a smaller comment** 2024-02-05 04:36:44,559 INFO: Waiting for enshrouded_server.exe to be running 2024-02-05 04:36:44,563 ERROR: Timed out waiting for enshrouded_server.exe to be running 2024-02-05 04:36:45,167 INFO: Updating Enshrouded Dedicated Server
I will play some Hunt Showdown instead and check back later on.
I also deleted everything in the folder and doubled checked it was owned by 10000:10000. then re-pulled the image and started it up again. Still looping
try setting SERVER_IP to 0.0.0.0 if it isn't already
problem is its failing to get connected to the steam backend
one cause of this error is when folks set an IP address for SERVER_IP argument that isn't actually on the container. It can't find the interface because the IP isn't assigned to any interface on the container so it fails to initialize
I definitely don't have my ip there instead of 0.0.0.0..... for sure I'm not one of those people.....
Ok, let me change that and I'll get back to you if that doesn't work.
Ok I now have a working proton container, thank you. Now to see if I can successfully shove it behind Caddy.
For some reason every time I restart the container it is downloading 12.8 GB of game though.
Update state (0x61) downloading, progress: 84.48 (10881860046 / 12880537546)
maybe not 12.8 gb but it seems that way if those are bytes.
Yeah that isn't a bug but by design. I don't persist the game data just the save data. This is just my philisophy when I design containers. It makes sure that we have clean data everytime and if something goes wrong with the server binaries we can just blow the container away and start a fresh one. (which I suppose you could also achieve by deleting the volume lol)
I may in the future change this for folks that may be on metered and or slower connections.
are you using caddy as a reverse proxy?
Yes I use caddy. I ended up not going that route when researching why it wasnt working. I found that games that run with basic tcp/udp can't run through caddy v2
I'd really like to use a reverse proxy but don't really want to completely change my caddy setup for all the other services just to run game servers through it.
I'm really glad you cleared that up for me because I thought I was going crazy. Trying to figure out what I screwed up to make it redownload every time.
Nice. Have a look at nginx if you haven't. https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/
I'll have to. I feel like I finally figured out caddy. I'm hesitant to dig into nginx but have felt that tinkering itch lately. Just the fact that I can reverse proxy a game server might finally be enough for me to learn it. Time to stand up another server and learn lol.
Is there any plan from official for Linux server?
i as i know, they want to add a linux server later
I'm using sknnr's container to run a dedicated server; the wine version works but has significant performance issues. However, the proton version doesn't seem to work at all. The container starts but gets stuck at the "start creation step Init_MountPackage" line. There's no error message, it just seems to freeze at this point with high CPU usage.
Running debian 11 / kernel 5.10 / rootless podman
Anyone else had this issue?
Dont forget to chmod 10000 your folder and make sure the domain is set to 0.0.0.0 in the compose file.
@sharp ermine ⬆️
I'm not using docker-compose, but I did set the SERVER_IP env variable and the permissions should be fine. Everything works if I just swap the image to the WINE one; only proton doesn't
Good to know! Would be superb if they have Linux version
Maybe kernel is too old? 5.10 is from 2020
Q on updates: I am relatively new to containers (I can get them to work but do not maintain them on a regular basis) and I have a Enshrouded Server running on Docker in Linux. When the game is patched/upgraded, what do I need to do? Based on what can deduce, I should be able to stop and start the container as the launch updates the game, is that correct?
Hi there 🙂
i run https://github.com/jsknnr/enshrouded-server on my synology nas. its working, but: i cant find the directory where its stored. Can i import my world from my localy saved game?
I run that one also, if you notice the first line that have you run:
docker volume create enshrouded-persistent-data
That creates a folder outside of the container that you should be able to access. On Linux I was able to find it on my server. On a NAS, I do not know what access to the OS that you will see. I suspect you would be able to see it via your web UI.
@agile tendon I cannot find via win explorer nor in the web Ui, file station. I also tried to look for it via SSH, but as I don’t have a clue what I’m doing, I failed here as well 😂🙈
Check out : sudo docker inspect enshrouded-server
hm that looks like this:
@agile tendon i think i have to edit the .yaml file for the correct target?
I tried /volume1/BackUp... as "BackUp" is an shared folder that i can access via fileexplorer but id looks like /volume1/.. is not the correct path...
This is what I see when I look at my volume. I don't have access to a Synology to look at where the files might be in that file system, sorry.
@agile tendon ok 🙂 Thx a lot!
So there is a new update and my linux server is small (to save costs). Does anyone have a process already detailed to clean up the old container and server files to clear space to repull the container (and updated server build)?
there's a new update?
It didn't seem like the docker container did, but the server did. I couldn't get it working right so I had to delete the existing container and struggled because the server that I'm running on has a small drive.
i've not yet cycled the container just for the server update, the mornedhels/enshrouded-server has an option (UPDATE_CRON) to check for updates and it's been working well for me
hello, yup, on docker you can use the bash docker <element> prune
command
like docker image prune for images, etc...
be carrefull tho, beceause by default it will delete all flaged unused elements
to clear build cache and all intermediates images and other stuff
use bash docker system prune