MitchTalmadge / AMP-dockerized

CubeCoders AMP in a Docker Image. Easily create game servers for games like Minecraft, GMod, TF2, Factorio, and StarBound!
https://hub.docker.com/r/mitchtalmadge/amp-dockerized
Other
89 stars 21 forks source link

I am swamped #162

Closed MitchTalmadge closed 8 months ago

MitchTalmadge commented 1 year ago

Update: I am still maintaining this project! Thanks so much to everyone who jumped in here to help ❤️

--

Sorry that I have not been replying to support requests. I started this as a hobby and it has quickly turned into a much larger commitment than I anticipated. I work very long days in my current job and rarely have free time to spend on anything, let alone my open source projects. I'm usually exhausted after work and just want to go to bed, which is sometimes at 4AM or later.

I feel really bad not replying to the support requests. I just find it very hard to get the time and motivation to work on this when I have so many other problems in my life, like a house & car that are in constant need of repairs (much of which I do myself -- e.g. replacing old corroded polybutylene piping with PEX or copper), or family members who need me to shuttle them around or help them with tasks.

CubeCoders does not make it any easier to work on this project. They direct all users of this container to this issues page for any issue at all -- regardless of whether the container is actually involved -- and refuse to help them. I understand why they do this, but it is stressful for me. CubeCoders is often passive-aggressive about the existence of this container and I am sure that they wish it did not exist. This is pretty de-motivating for me and makes it hard to be excited to work on this project. I mean no disrespect to them, since they have allowed this project to even exist at all. I love their software. I just wanted to express why it's hard for me though.

I hope you understand.

I am happy to accept help from people who would like to maintain this project. Just let me know!

Thanks everyone.

theblobinc commented 11 months ago

I think this is an extremely interesting project, and containerizing AMP game server for enterprise environments has a giant potential to spread their software to an even wider user base.

What can I personally do to help you man?

Have you tried any of the new AI coding tools that are out now?

PhonicUK commented 11 months ago

We're going to start looking at building an official replacement for this if the author is deprecating it. I'm not sure entirely how it'll work since you have to pull a docker container down to add new ports to expose (how are you guys currently handling this?)

Basically if someone could give me a brief primer about how you guys are actually using this image and creating instances inside of it, I'll see what can be done. The other question being whether UnRAID specifically would behave if the docker socket from the host was exposed to ADS to let AMP create containers itself.

MitchTalmadge commented 11 months ago

I think this is an extremely interesting project, and containerizing AMP game server for enterprise environments has a giant potential to spread their software to an even wider user base.

What can I personally do to help you man?

Have you tried any of the new AI coding tools that are out now?

The biggest priority right now would be getting the release process back up to date so that we aren’t stuck on 2.4.4.0. To do this we need to:

There’s an issue currently pinned which has more details on the latest version changes and has that new URL. I’m on my phone or I’d link it.

Once we have all that working, there’s a whole backlog of issues from people who need help with various game servers and such. I’m sure by now most of them have given up on this container, but the problems they reported would likely be encountered by others in the future so we still need to address them.

P.S. yeah!— GitHub Copilot has actually been very helpful. I managed to use it to help me add multi architecture support to GitHub Actions.

Thank you for any help you can provide! No pressure if you can’t — I totally understand :)

MitchTalmadge commented 11 months ago

We're going to start looking at building an official replacement for this if the author is deprecating it. I'm not sure entirely how it'll work since you have to pull a docker container down to add new ports to expose (how are you guys currently handling this?)

Basically if someone could give me a brief primer about how you guys are actually using this image and creating instances inside of it, I'll see what can be done. The other question being whether UnRAID specifically would behave if the docker socket from the host was exposed to ADS to let AMP create containers itself.

Hi! I hope I’m understanding your question. We don’t use AMP’s own docker functionality in building this image. That would require docker-in-docker support, which is worth exploring but I’ve never had the chance. Right now by default the docker container creates an ADS instance and then to add instances you just log in and use the regular method of creating it through the web UI. Of course this means that dependencies for each game server have to be baked into the image and many of them will go unused. For example the people who would only run a Minecraft server will never make use of the Valve/Source dependencies, but we have to include them in the image we publish so that people who do want that option can use them. It also means every time a new game comes out we usually have to add more dependencies. Luckily there haven’t been many conflicts so far but they do happen.

An issue that arises is when people want to install custom games or custom mods which require more dependencies. To address this I added support for startup scripting, where you can have the container download the dependencies you need (among other things… it’s just a bash script, you could do anything) before spinning up AMP. The downside is that this has to be run every time the container restarts, so it slows down the boot process.

To expose ports you just change the settings wherever you’re running the docker container, whether that’s with a docker run command or docker compose or Unraid’s configuration tool (which is just a GUI to build a docker run command).

I hope that all makes sense. Thank you for your support. Today I’m going to try to do some updates on this container. If your team does create a replacement for this container I’ll be happy to help migrate everyone over, but of course you do not have to do that - it’s your product and you have the right to define how it should be used. I didn’t want to create more work for you with this container, though sometimes it feels like I have, and I feel bad about it.

Let me know if you have more questions or if I can clarify anything better. :)

MitchTalmadge commented 11 months ago

I put aside everything today to focus on AMP. The upgrade to Decadeus is going well. I hope to have something on staging that can be tested tonight.

theblobinc commented 11 months ago

They have a lot of really great stuff coming down the pipeline for AMP, but I can see how the update process changes could mess things up a bit on your end, and slow development down. Their past update actually broke alot of people's installations, that's how I found myself here, looking for an alternative.

Recently, I have had a pretty giant push toward trying to containerize my entire setup to make it more portable. AMP is basically the last major piece of software I have sitting on bare metal.

I generally run my entire setup off of a home lab and a business internet connection, and my reasoning behind containerizing everything is because it makes it a lot easier to later maintain and wind up services web services, if those services are basically just a docker-compose file and a few other config odds and ends.

Which brings me to AMP... Their inbuilt update scheme is ASS and you never know what you're going to get for an update. It would be pretty advantageous if one were able to simply choose another amp version if the latest image breaks things or is going to break things. Or even if there was any extra added level of quality and assurance added to the process to ensure their bunk updates never reach a server. (and if it does, you can go back pretty easily by manually choosing another image)

As it stands right now if they push a bad update and you install it without first waiting a few days and later going to their discord to check and see if it's bad... You are basically at Mikes's mercy to fix it. It's all fixed now and running, but I was down for 12+ hrs and probably lost players.

And this has left me looking for another alternative because availability is key with a lot of the game servers and web applications I would like to run. Portability is also a pretty big concern for me too for when I need to wind services up for an individual instance of AMP Game Server, it would be nice if winding those services up in a cloud environment was as simple as downloading a 22.8kb GitHub repo to the VM and running a .sh script that installs everything. Docker containers make both of those things happen.

MitchTalmadge commented 11 months ago

@theblobinc Thank you for that insight, it gives me a lot to think about in terms of handling updates for this container. I'm constantly striving for a better update process.

Here is my PR for fixing the build process for 2.4.5.0 Decadeus: #165

I'm playing with a new update strategy in that PR, but reading your comment makes me want to reconsider it a little bit. You are right that it would be advantageous to be able to choose a specific AMP version, and "pin" your server to that version. I'll keep thinking about this.

In the meantime, the update may be tested by pulling mitchtalmadge/amp-dockerized:staging-decadeus.

Also, I have removed the deprecation notice. I really don't want this project to die and I've decided to re-arrange some priorities in my life to keep it alive. Coding is my passion and letting a project like this die goes against why I ever started down this road.

Thanks for the support everyone

theblobinc commented 11 months ago

I will try mess with that this weekend, I need to setup a proper test environment. I have a dell r710 with a bare metal linux install of amp that could go.

I will just need to back the minecraft servers up that are on the machine first.

IceOfWraith commented 11 months ago

Hi swamped, I'm dad.

MitchTalmadge commented 11 months ago

Dad, you're back??

...did you get the milk?

Trembler34 commented 10 months ago

Hello, im curious if this is still being worked on? I downloaded this docker on unraid, setup a minecraft java server, everything appears to be working fine but i cannot connect to it no matter what. all my other servers work just fine with the exact configuration on the same client/server using mine-os node and the binhex minecraft server container.. so i believe the issue is related to AMP and by the sound of things its mostly due to it not being maintained for awhile... Sounds like I just need to stop spending so much time trying to get this to work. Appreciate the effort on this project. I know how these things can go..

theblobinc commented 10 months ago

Yes it is still being worked on, just not as quickly as you would hope. Really there is only 1 dev working on it, as a side project,

Regarding connecting to it, that may just be a matter of you binding the correct interface and ports in your docker yml file. You also have to realize that connecting directly to its CLI, would only ever be indirectly via exec commands.

Trembler34 commented 10 months ago

I understand, I just wanted to know when I need to stop wasting my time trying to get this working if its a known issue due to this not being maintained in awhile.

The bind to the IP is correct and so is the port.. This is running on Docker inside unRAID.. Everything appears to be working just fine. No errors, everything is up and available, says servers available, i just get a "connection refused" everytime trying to connect to it. If i setup another server, using something like mineos or binhex minecraft server, using the same exact bindings IP/Port it connects right away..

Trembler34 commented 10 months ago

Whats even more bizzare, doing a port scan, you can see all those ports available are ones on mineos node.. Those all work. I have two test servers running on AMP using port 25570 and 25571 that don't show as availble..

image

theblobinc commented 10 months ago

Could this be your issue: https://github.com/MitchTalmadge/AMP-dockerized/tree/master#mac-address-important-please-read Let's get the basics you may have missed when installing out of the way first...

Depending on your system setup, your configuration needs may vary.

Trembler34 commented 10 months ago

ohh maybe, but my instances never deactive.. Let me give this a try later on and see if it will make a difference. I feel like its something super simple but can't figure out what. I've spent so much time on this already and figured it was time to ask around.. Appreciate you taking the time to give some insight.

Trembler34 commented 10 months ago

That didnt help sadly, I was hopeful.. I put the permanent mac address as an extra parameter in the container. I had to re-activate my test instances and everything came back up.. Still no errors or any indication of a problem.. Still getting "Connection refused" bindins IP/Port look good.

PhonicUK commented 10 months ago

I will remind the thread that officially the only supported route for running AMP on unRAID is to use a proper VM. If you do so you'll get proper 1st party support and assistance.

Trembler34 commented 10 months ago

I did end up doing that and it works perfectly. Thanks

Joly0 commented 10 months ago

Hey @MitchTalmadge great to see you back. If you need any help, you can ask me whenever you want. Although i dont actively use this container anymore (although i would like to), i would still help you troubleshoot, improve and support you wherever i can. If you want, you could also add me as a project collaborator, otherwise i'll make my pr's as usual if there is anything i can contribute :)

MitchTalmadge commented 10 months ago

Thank you @Joly0! You have always been such a huge help. The primary thing stopping a release right now is my testing of the image mitchtalmadge:staging-debian-12. It runs fine in general, and runs Minecraft, but I'm having trouble getting steam games to start (TF2, GMod...). The server downloads fine, but upon start it fails and the debug scripts reveal that it is erroring "out of memory or address space." The server I am using, an Unraid server, has ~30GB free memory so I find that odd. I've read it could be related to 32 bit addressing somehow. I downgraded to the currently live image and wiped it all and tried again, but even that image has the same issue.

In short: if you can try that new image and see if source games work for you, that would help me a lot to determine if it's my system somehow.

Thanks for any time you can offer, I appreciate everything you and all other contributors have done ❤️

IceOfWraith commented 10 months ago

Let me take a look on my end as well. I'll let you know if I find something.

MitchTalmadge commented 10 months ago

Let me take a look on my end as well. I'll let you know if I find something.

Thank you so much!

IceOfWraith commented 10 months ago

I've run into a wall that's a pain to get past. AMP is currently built using Debian 8 which is causing issues on newer kernels. Mike is releasing using a Debian 11 build server Wednesday to fix this. Until that happens it segfaults on me. As soon as he releases I'll build the image and play around some more.

Joly0 commented 10 months ago

Hm, so far i dont have an issue starting TF2 for example, though i cant connect to the server (i have never played tf2 so idk what i might be doing wrong here). Any other games i could/should test?

IceOfWraith commented 10 months ago

I'm doing more digging into a latest build of AMP. It seems the container is just crashing now due to trying to create multiple instances for ADS01. I'll dig more this weekend and hopefully have an answer. It's not crashing due to the kernel issue anymore though, so progress! Lol

IceOfWraith commented 10 months ago

@MitchTalmadge if you want to rebuild the staging image to get the latest AMP build, I'll give it a test run. I've apparently botched my test image up completely. xD

MitchTalmadge commented 10 months ago

Hm, so far i dont have an issue starting TF2 for example, though i cant connect to the server (i have never played tf2 so idk what i might be doing wrong here). Any other games i could/should test?

Thanks for testing! Interesting how your TF2 seems to be working, maybe it's because I am using Unraid. I will try on another server not using Unraid.

@MitchTalmadge if you want to rebuild the staging image to get the latest AMP build, I'll give it a test run. I've apparently botched my test image up completely. xD

I have triggered a rebuild here for you :) https://github.com/MitchTalmadge/AMP-dockerized/actions/runs/6062677369

It should be published as mitchtalmadge/amp-dockerized:staging-debian-12 like before, just run docker pull or docker compose pull depending on how you're using the image after the build is done.

MitchTalmadge commented 8 months ago

I was able to get TF2 running on a Windows Hyper-V Linux VM (not Unraid). I think the issues I was having were just Unraid related somehow. I am not really concerned about it. I think we can move forward with Debian 12.

One last thing before I release it, I am going to try adding support for ampinstmgr ProcessPendingTasks which should fix issues with the UI causing shutdowns of AMP or reboots that the container is not aware of... for example, when clicking "Upgrade this AMP Instance" in the UI, or "Restart this AMP Instance".

Joly0 commented 8 months ago

Hey @MitchTalmadge just a small note regarding the latest changes: If you want to stay close to AMP suggestions regarding java, you should install 8, 17 and 20. Thats the java editions that are currently installed by the GetAMP.sh script

IceOfWraith commented 8 months ago

The AMP Docker has 8, 11, 17 and 18 right now. That's what it was matched up with.

MitchTalmadge commented 8 months ago

Ok, I'll change the script. I was going with LTS versions (8, 11, 17, 21).

In other news the reboot and update tasks work from the UI now :)

IceOfWraith commented 8 months ago

LTS is the way to go. 18 was included before there was a new LTS and is likely leftover from being behind on the AMP side.

IceOfWraith commented 8 months ago

That's awesome you got the restarts working! Is there anywhere you want me to look into?

MitchTalmadge commented 8 months ago

LTS is the way to go. 18 was included before there was a new LTS and is likely leftover from being behind on the AMP side.

That's what it seems like to me, 21 is fairly new.. September I believe. And the Minecraft Paper server suggests using 21 now so I think that's what people will expect. If we're ok with LTS I will leave them there

That's awesome you got the restarts working! Is there anywhere you want me to look into?

Thank you! I am excited that it works. I learned how to do it a while ago from the Discord and finally took time to try it :) I feel like we have a pretty good release on our hands, would you mind just sorta testing it out a bit with a few popular games and see if there are any obvious issues? I'm doing the same and if it's all good I'll put out the release :)

IceOfWraith commented 8 months ago

Definitely! I'll try it this week!

Joly0 commented 8 months ago

I am going to try it out aswell this week :D

IceOfWraith commented 8 months ago

I only tested the main image, not ARM. But it seems to work well! The one game that didn't work is Space Engineers but it is a special case that will need more focus (winetools and dev Wine version). I do have some suggestions for the documentation I'll do a PR for as well! There was one thing that stood out. AMP typically creates ADS as ADS01 instead of Main. Not a major issue since most people won't interact directly with it. But it would make it congruent with documentation.

MitchTalmadge commented 8 months ago

AMP typically creates ADS as ADS01 instead of Main. Not a major issue since most people won't interact directly with it. But it would make it congruent with documentation.

Oh I didn't realize that, we can probably fix that. I think I named it Main because you can pick which instance you want it to start with, not necessarily ADS. e.g. if you set MODULE=Factorio then a Factorio instance is created but no ADS instance is ever created. I don't know if anyone uses that feature though. Should we require ADS to be created (and grandfather in the people who use the MODULE var)?

IceOfWraith commented 8 months ago

That was going to be my suggestion as part of the documentation changes. :)

Obviously, these will be just that. Suggestions. So if you have a different view on anything I submit for PR feel free to push back!

theblobinc commented 8 months ago

It's nice to see this man getting some of the help he needs, let me know if you require more promotions to find additional volunteers.

MitchTalmadge commented 8 months ago

Whaddya say we release this?

AMP typically creates ADS as ADS01 instead of Main. Not a major issue since most people won't interact directly with it. But it would make it congruent with documentation.

We can tackle this for the next release, I think? :)

IceOfWraith commented 8 months ago

Green light by me! Definitely just a "Nice to have" on that note.

MitchTalmadge commented 8 months ago

https://github.com/MitchTalmadge/AMP-dockerized/pull/179/

IceOfWraith commented 8 months ago

That's an impressive list, if I do say so myself!

Joly0 commented 8 months ago

Really nice. Btw, something from my end: Wouldnt it be possible to let the user configure the name of the "Main" instance? I like the name "Main" for my ADS instance, so it would be cool, if i could keep that in the future. Maybe make it configurable through env variables and if not set, default it to ADS01?

MitchTalmadge commented 8 months ago

Released! https://github.com/MitchTalmadge/AMP-dockerized/releases/tag/v22 I am working on getting GitHub Actions to publish it to Docker Hub right now. Ironically, GitHub is having a service degradation issue at the exact time I released this version ;-;

Wouldnt it be possible to let the user configure the name of the "Main" instance?

Yes :) We can add a var


Thank you everyone SO much for all your help. I could not do it without you. It means the world to me

Joly0 commented 8 months ago

Released! https://github.com/MitchTalmadge/AMP-dockerized/releases/tag/v22 I am working on getting GitHub Actions to publish it to Docker Hub right now. Ironically, GitHub is having a service degradation issue at the exact time I released this version

Btw, what about adding GHCR (Github Container Registry) as an alterantive to dockerhub btw? Would this maybe be interesting?

MitchTalmadge commented 8 months ago

Released! https://github.com/MitchTalmadge/AMP-dockerized/releases/tag/v22 I am working on getting GitHub Actions to publish it to Docker Hub right now. Ironically, GitHub is having a service degradation issue at the exact time I released this version

Btw, what about adding GHCR (Github Container Registry) as an alterantive to dockerhub btw? Would this maybe be interesting?

Yes! Let's do it! #182