Central server companion #11
Labels
No Label
Idea
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No Milestone
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Chewing_Bever/alex#11
Loading…
Reference in New Issue
There is no content yet.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?
Considering I usually play on servers with some friends, I'd like to be able to give them access to the server backups as well.
To accomplish this, I'd like to introduce a central server component where my running Alex instances can publish certain layers to. This would aggregate the backup files into a single server that can then host them as a very basic web page.
For authentication, a server's backups could either be public or protected by HTTP Basic Authentication, as this should be supported by all major browsers. The server would have a basic user management system where each user is given access to a defined list of servers (or they're an admin, in which case they can see everything and add/remove users from servers). For user management, a simple API would need to be included, as well as a CLI tool. This information would probably be stored in an SQLite database. I would probably also expose access to the backup files through the API as well.
Besides backups, the Alex instances could perhaps also stream the server's logs to the server, so users can see these as well.
The main server instance could also be responsible for managing the server backups in an S3 store to store backups "in the cloud".
It might be best to rebuild the application as an Async-first implementation using Tokio.
We could then start by implementing an Axum-based HTTP server that serves its routes over a unix socket, which could then be used by the client to communicate with the server. We could for example use the broadcast channel to implement a system to stream logs to multiple readers. This API could then also allow for requesting generated backups from the server, or any other useful feature that we might need.