gaz561 / tab

Groundhog Operating System
1 stars 1 forks source link

Add build files and include Fennel #1

Closed technomancy closed 2 years ago

technomancy commented 2 years ago

Hey! A while back I mentioned I could automate the build here but when I went to look at it, the code didn't seem to have an entry point suitable for that, but I looked again and it seems this was added, so I went ahead and did this.

Not sure how you'd prefer me to submit the code; I've linked to a patch but if you prefer a pull request I guess you might need to either add me to the repo or enable forking. But I don't mind submitting patches by hand personally if it works for you.

https://p.hagelb.org/gos1.patch

lmk if there's anything else you'd like help with.

emsenn commented 2 years ago

I think I successfully added the patch! I like how now a person can just "make run" - much cleaner! thanks so much!

technomancy commented 2 years ago

Cool; glad that worked. I'll use this method for further contributions unless I'm granted write access, in which case I'll push to a branch and contribute from there. Happy to help with further contributions if you have ideas for more that I could do.

emsenn commented 2 years ago

You should be an admin for the repository! I guess I'm even worse at github than I thought! lol

So, talking it over with folk and basically, return-to-tradition mud engine is what i'm working on now; I'll commit soon, but once I have, what I'd love help with is getting it running on some server folk could connect with. (the last time i did something like that, it would've been done with like, heroku or digital ocean or something similar? But even when I knew how to do something like that, it was only with other software, not something homemade.)

So if you could... I guess explain to me what that process might look like, getting from this github repo to an ip and port folk could telnet to? (And I reckon maybe there's a couple files that should be patched to make that easier?)

It was hot here this past week so I spent some time re-writing things as a more traditional mud engine, it's about to be cool again then it'll be hot in a week or so, which is when I'll polish that up and have something worth hosting, probably (ie with chat, rooms to walk around)

technomancy commented 2 years ago

Looks like I've got access now; thanks.

For the question of where the server should run, I guess it comes down to what your uptime goals are. I think from the perspective of minimizing reliance on companies, it would be cool if we could run it on hardware owned by us. The downside of course is that the connection wouldn't be as reliable as it would be in a data center.

I've run a fediverse node off my home network and it's been pretty good; every couple months or so my IP changes and so the domain name I've set up needs to be updated to point to the new one. I haven't automated the process yet but even if I do it'd probably still result in 15m or so of downtime whenever the IP changes because the DNS changes take a while to refresh. Of course, a fedi server is naturally more downtime-tolerant than a MUD.

Anyway if that sounds good to you, then I can set up a user on the same machine I'm running my fedi node on, and install gos there. I'd get your SSH public key loaded into this user so you could access it too, and I'd set up port forwarding on my router so the port got sent to the server inside my home network. On the machine I'd start by running it inside a tmux session since that's the easiest to set up, and then once it was working satisfactorily I'd probably switch over to running it as a background service using systemd or something so that it would automatically get brought back up if the machine restarted.

For mega bonus points, we'd set up gos so it could be administered entirely within the MUD itself by admin accounts; for instance with pengbot, my irc bot, it's able to pull in new versions of Fennel and load code against them at runtime just by a few commands without having to log into the system running it to update it. If we could build gos in such a resilient way that it could live update itself from the inside, that would be pretty sweet! But maybe that's getting ahead of ourselves.

If you'd rather not run it on my hardware we could look into the free tier offerings of various commercial service providers; Heroku discontinued their free tier but there are others that have stepped up to fill the gap. I'd have to do a lil research but if you'd prefer going this route I'll see what I can come up with.

emsenn commented 2 years ago

That sorta uptime would work just fine by me; thanks! I'll try and commit what I have this evening, but if I don't I probably won't get around to it until monda.

technomancy commented 2 years ago

OK! It's up and running at code.technomancy.us on port 4242. We'll need to get it a better domain name. I can make a new subdomain on hagelb.org or technomancy.us but you probably want something different for this I'd guess? Let me know if you have an idea for a better domain.

I also have it set up so you can SSH in: ssh -p 42942 code.technomancy.us; it's currently configured to accept the keys you have uploaded to your github account; feel free to add whatever other entries to ~/.ssh/authorized_keys once you log in, or if you have trouble logging in, let me know. Password login is disabled, so it's keys only. The server is running inside a tmux session, so once you log in, run tmux a and you can see the server running.

To do an update, you can C-z n to switch to the next tmux window, git pull there, then C-z p to get back to the first window, C-c to stop the server, and make run to start it up again.

emsenn commented 2 years ago

Thank you for these super-easy-to-follow instructions!

We actually have gaz.community as a domain, so if you let me know the IP to point to I can set up mud.gaz.community!

I've also gotten in the habit of setting up the webclient Grapevine - https://grapevine.haus but that can only connect to an IP(4 or 6) not hostname, so I'm not sure if your setup would let that work.

technomancy commented 2 years ago

Oh right; totally spaced on the fact that there's already a gaz.community domain. Pointing mud.gaz.community to this IP would work, but it would mean that every time the IP changed, we'd have to change that one as well as my existing one. If you can set up mud.gaz.community to be a CNAME that points to technomancy.mooo.com (yes, three Os; that's not a typo) then my existing scripts to update the mooo one will automatically be reflected by mud.gaz.community.

It should be OK to use grapevine but it'd be up to the users to look up the IP every time they connect, and they might get confused when one IP works for like three months and then suddenly changes. It's probably fine for more technical folk, but more technical folk are more likely not to need a web client.

emsenn commented 2 years ago

With grapevine, the mud admin sets up that sort of stuff, and then clients can just go to something like https://grapevine.haus/games/MarMUD

So I'd have to update the configuration when your IP changes, but otherwise it's real simple for them - just bring their browser (even phone browser) to the right page. Figure folk can ping me on Twitter if it's down, then i can check the ip that technomancy.mooo.com points to, update it, and let folk know its back up?

Seems good enough for the vibe of needs I'm getting: make it trivial to connect, even if its not up all the time.