The Role of a Server


I just installed PHP on the Park City server. This increases the number of
options we have for things we can do to... let's just say an astronomical
level. PHP in particular is nice because I can script things without having
to drag out an entire web framework. I can just type a little command and loop
through a file or whatever. It's nice. Too nice.

There's features I want to add, but I want to be absolutely certain that things
are lightweight and integrated. This is a $5/mo DigitalOcean droplet, and I'd
like to keep it that way. I personally am also growing pretty fond of the
fediverse and distributed stuff, so if possible I'd like to see whatever we set
up here be ActivityPub or at least RSS compatible. (The very first version of
this, before it was even called "park city", was going to be an experiment in
Plan 9-esque highly distributed services, storage sharing, etc.) Also, I hate
passwords, so I want to use SSH keys or HTTPS client certs wherever possible.

So, let's start with a list of things our community needs:

- A way to login and edit stuff from a browser
- A more edit-friendly Park City Library (raw HTML *works*, but it's a drag)
- A group blog, ala somnolescent.net (my biggest inspiration for this)
- Git hosting (something lighter than GitTea or GitLab, preferably)

And other things that might be nice to have:

- A wiki (this might *be* the Library)
- A much friendlier user setup process
- Something to replace Discord? Maybe? (hah hah good luck)
- Something Mastodon-compatible, but much lighter-weight
- Gemini hosting (as an alternative to Gopher)
- Some sort of place to make server announcements and have others receive them
- Automate the server setup process in case I need to migrate
- Also, backups. Those would be nice.
- An OpenRCT2 server (something I tried, but couldn't get running because I
didn't have the libraries I needed on this CentOS 7 machine)
- For teh lulz, CDE via X11 forwarding.
- Some version of external email
- A maybe-public forum ala https://jul.rustedlogic.net/

So that's fairly interesting. Lots of features, but only so much server budget
for unique pieces of software to run. In general, we have a few categories:

- Content authoring (Wiki, Library, group blog, my own site)
- Social media (Mastodon, forum, email, chat)
- Git hosting
- "Create account" page?

What I *want* to do is share as much infrastructure as possible between
everything. The group blog should be something you can follow on Mastodon.
The library should be a wiki, along with anything else we want to add.
The server announcements should be on the forum, which might be done via
Usenet, or a friendly interface to that. The Usenet or whatever should be tied
into the ActivityPub/Mastodon stuff. Somehow. The wiki too.

...okay, I really should drop the ActivityPub goal. Too lofty. The point is, I
don't want to install a bunch of dedicated services. I want something more
like PHP, where I can just dump a bunch of files in a folder and AUTOMATICALLY
have a bunch of these features. I don't want to make the entire site a wiki,
but I like that sort of train of thought. Being able to go to *any* page,
click the "edit" button, and do whatever *in the browser*. With restrictions.
Permissions, the forum or whatever, etc. And then automatically generate
Gopher and Gemini versions of everything. The "iup_server" that runs my own
site, invisibleup.com, is *somewhat* close to what I want, but it's incredibly
rudimentary and doesn't scale super well.

I really need to sit down and thing about how I want to architect this moving
forwards. I can (and I'm really close to) throwing up a MediaWiki server and
calling it a day. And that *would* work, for now. Once I figure out how to
deal with logins. I might script something up tonight to generate SSL client
certs for everyone. As much as those are a pain to deal with.. they are what I
want. Well, I'd prefer to just reuse the SSH keys, but that's beside the point.

Anything's possible, but not everything. I need to do this in a way that's not
going to screw me over in a year.