updated readme

This commit is contained in:
ACoolName 2025-05-19 16:03:00 +03:00
parent 1f64806538
commit a702d4b776

114
README.md
View File

@ -1,59 +1,111 @@
# Server Manager Kubernetes Operator
Implements Server Manager capabilities (including web-ui/auth) in kubernetes
This is the code for the back-end used in [ServerManager](https://games.acooldomain.co).
## Config Example
The server-manager is designed with modularity in mind and is built from a few major parts.
1. Users
2. Servers Metadata
3. Servers Authorization Data
4. Instance Manager
The backend interfaces with these parts separately however it will share connections where possible to reduce duplicate connections.
# Modules
## User Management
The User management module has several responsibilities and should be split into modules in the future.
* Fetch and save data about existing users
* Global Permissions
* Nickname
* Contact Email
* Authenticate a user
Currently the User Management is only implemented with MongoDB as the underlying database
## Servers Metadata
The Servers Metadata holds data about existing servers such as:
* Default command to run when ran without arguments
* Default ports to open in case no ports are opened
* Server nickname
* Data on the image the server uses
Currently only implemented with MongoDB
## Servers Authorization
The Servers Authorization Module is responsible for server-specific permissions.
Currently only implemented with MongoDB
## Instance Manager
The Instance Manager is responsible for running the servers, and supplying interactive shell to the console of the server.
Currently implemented in Docker, and Kubernetes (using the [ServerManager Operator](https://git.acooldomain.co/server-manager/kubernetes-operator))
## Configuration Example
### Yaml Config format
```yaml
email:
from_email: ""
username: ""
password: ""
server: ""
domain: ""
domain: "games.acooldomain.co"
signing:
key: ""
algorithm: "HS512"
email:
from_email: "no-reply@acooldomain.co"
username: "no-reply@acooldomain.co"
password: ""
server: "mail.acooldomain.co"
authentication:
type: "OIDC" # OIDC or UserPass
oidc:
type: "UserPass"
oidc: # can be omitted
issuer_url: ""
client_id: ""
client_secret: ""
user_pass:
type: "mongo"
initial_user:
email: "acoolname@acooldomain.co"
mongo:
url: ""
url: "mongodb://server-manager-mongo:27017"
username: ""
password: ""
database: ""
collection: ""
database: "users_db"
collection: "user_data"
invite_token_database:
type: "mongo"
mongo:
url: ""
url: "mongodb://server-manager-mongo:27017"
username: ""
password: ""
database: ""
collection: ""
database: "users_db"
collection: "invite_tokens"
instancemanager:
type: "docker" # or kubernetes
docker:
games_domain: ""
browsers_domain: ""
certificate_resolver: ""
type: "kubernetes"
kubernetes:
namespace: server-manager
docker: # can be omitted
file_browser:
image:
registry: ""
tag: ""
registry: "filebrowser/filebrowser"
tag: "latest"
command: ""
network: ""
network: "exposed"
reverse_proxy:
middlewares:
- backend-auth@docker
entrypoint: "web"
users:
default_max_owned_servers: 10
@ -61,18 +113,18 @@ users:
servers_database:
type: "mongo"
mongo:
url: ""
url: "mongodb://server-manager-mongo:27017"
username: ""
password: ""
database: ""
collection: ""
database: "server_db"
collection: "servers"
servers_authorization_database:
type: "mongo"
mongo:
url: ""
url: "mongodb://server-manager-mongo:27017"
username: ""
password: ""
database: ""
collection: ""
database: "server_db"
collection: "auth_data"
```