This commit is contained in:
2026-07-21 22:06:10 +00:00
parent afc64b83c1
commit 5215560ede
25 changed files with 4364 additions and 333 deletions
@@ -0,0 +1,66 @@
INSERT INTO "games" (
"slug",
"name",
"docker_image",
"default_port",
"config_files",
"automation_rules",
"startup_command",
"stop_command",
"environment_vars",
"created_at",
"updated_at"
)
VALUES (
'satisfactory',
'Satisfactory',
'wolveix/satisfactory-server:latest',
7777,
'[]'::jsonb,
'[]'::jsonb,
'',
'quit',
'[
{
"key": "MAXPLAYERS",
"default": "4",
"description": "Maximum player count",
"required": false
},
{
"key": "STEAMBETA",
"label": "Branch",
"default": "false",
"description": "Use the experimental branch instead of stable",
"required": false,
"inputType": "boolean",
"enabledLabel": "Experimental",
"disabledLabel": "Stable"
},
{
"key": "AUTOSAVENUM",
"default": "5",
"description": "Number of rotating autosaves",
"required": false
},
{
"key": "MAXTICKRATE",
"default": "30",
"description": "Maximum simulation tick rate",
"required": false
}
]'::jsonb,
now(),
now()
)
ON CONFLICT ("slug") DO UPDATE
SET
"name" = EXCLUDED."name",
"docker_image" = EXCLUDED."docker_image",
"default_port" = EXCLUDED."default_port",
"config_files" = EXCLUDED."config_files",
"automation_rules" = EXCLUDED."automation_rules",
"startup_command" = EXCLUDED."startup_command",
"stop_command" = EXCLUDED."stop_command",
"environment_vars" = EXCLUDED."environment_vars",
"updated_at" = now();
@@ -50,6 +50,13 @@
"when": 1772900000000,
"tag": "0006_cs2_servername_branding",
"breakpoints": true
},
{
"idx": 7,
"version": "7",
"when": 1773000000000,
"tag": "0007_satisfactory_game",
"breakpoints": true
}
]
}
+145 -6
View File
@@ -1,4 +1,5 @@
import { createDb } from './client';
import { eq } from 'drizzle-orm';
import { games } from './schema/games';
import { users } from './schema/users';
@@ -292,8 +293,18 @@ async function seed() {
description: 'Steam Workshop map id to launch',
required: false,
},
{ key: 'CS2_GAMETYPE', default: '0', description: 'Game type numeric value', required: false },
{ key: 'CS2_GAMEMODE', default: '1', description: 'Game mode numeric value', required: false },
{
key: 'CS2_GAMETYPE',
default: '0',
description: 'Game type numeric value',
required: false,
},
{
key: 'CS2_GAMEMODE',
default: '1',
description: 'Game mode numeric value',
required: false,
},
{
key: 'CS2_ADDITIONAL_ARGS',
default: '',
@@ -340,7 +351,12 @@ async function seed() {
],
environmentVars: [
{ key: 'EULA', default: 'TRUE', description: 'Accept Minecraft EULA', required: true },
{ key: 'VERSION', default: 'LATEST', description: 'Bedrock server version', required: true },
{
key: 'VERSION',
default: 'LATEST',
description: 'Bedrock server version',
required: true,
},
],
},
{
@@ -377,15 +393,138 @@ async function seed() {
stopCommand: 'quit',
configFiles: [],
environmentVars: [
{ key: 'RUST_SERVER_NAME', default: 'My Rust Server', description: 'Server name', required: true },
{ key: 'RUST_SERVER_MAXPLAYERS', default: '50', description: 'Max players', required: false },
{ key: 'RUST_SERVER_IDENTITY', default: 'default', description: 'Server identity', required: false },
{
key: 'RUST_SERVER_NAME',
default: 'My Rust Server',
description: 'Server name',
required: true,
},
{
key: 'RUST_SERVER_MAXPLAYERS',
default: '50',
description: 'Max players',
required: false,
},
{
key: 'RUST_SERVER_IDENTITY',
default: 'default',
description: 'Server identity',
required: false,
},
{ key: 'RUST_RCON_PASSWORD', default: '', description: 'RCON password', required: true },
],
},
{
slug: 'satisfactory',
name: 'Satisfactory',
dockerImage: 'wolveix/satisfactory-server:latest',
defaultPort: 7777,
startupCommand: '',
stopCommand: 'quit',
configFiles: [],
automationRules: [],
environmentVars: [
{
key: 'MAXPLAYERS',
default: '4',
description: 'Maximum player count',
required: false,
},
{
key: 'STEAMBETA',
label: 'Branch',
default: 'false',
description: 'Use the experimental branch instead of stable',
required: false,
inputType: 'boolean',
enabledLabel: 'Experimental',
disabledLabel: 'Stable',
},
{
key: 'AUTOSAVENUM',
default: '5',
description: 'Number of rotating autosaves',
required: false,
},
{
key: 'MAXTICKRATE',
default: '30',
description: 'Maximum simulation tick rate',
required: false,
},
],
},
{
slug: 'fivem',
name: 'FiveM',
dockerImage: 'spritsail/fivem:latest',
defaultPort: 30120,
startupCommand: '',
stopCommand: 'quit',
configFiles: [
{
path: 'server.cfg',
parser: 'keyvalue',
editableKeys: [
'endpoint_add_tcp',
'endpoint_add_udp',
'sv_hostname',
'sv_scriptHookAllowed',
'rcon_password',
'sv_endpointprivacy',
'sv_maxclients',
],
},
],
automationRules: [],
environmentVars: [
{
key: 'LICENSE_KEY',
default: '',
description: 'Cfx.re server license key required to start FXServer',
required: true,
},
],
},
])
.onConflictDoNothing();
await db
.update(games)
.set({
name: 'FiveM',
dockerImage: 'spritsail/fivem:latest',
defaultPort: 30120,
startupCommand: '',
stopCommand: 'quit',
configFiles: [
{
path: 'server.cfg',
parser: 'keyvalue',
editableKeys: [
'endpoint_add_tcp',
'endpoint_add_udp',
'sv_hostname',
'sv_scriptHookAllowed',
'rcon_password',
'sv_endpointprivacy',
'sv_maxclients',
],
},
],
automationRules: [],
environmentVars: [
{
key: 'LICENSE_KEY',
default: '',
description: 'Cfx.re server license key required to start FXServer',
required: true,
},
],
updatedAt: new Date(),
})
.where(eq(games.slug, 'fivem'));
console.log('Seed completed successfully!');
process.exit(0);
}
+6
View File
@@ -70,6 +70,11 @@ message CreateDatabaseRequest {
string password = 3;
}
message ImportDatabaseSqlRequest {
string database_name = 1;
string sql = 2;
}
message UpdateDatabasePasswordRequest {
string username = 1;
string password = 2;
@@ -252,6 +257,7 @@ service DaemonService {
rpc DeleteServer(ServerIdentifier) returns (Empty);
rpc ReinstallServer(ServerIdentifier) returns (Empty);
rpc CreateDatabase(CreateDatabaseRequest) returns (ManagedDatabaseCredentials);
rpc ImportDatabaseSql(ImportDatabaseSqlRequest) returns (Empty);
rpc UpdateDatabasePassword(UpdateDatabasePasswordRequest) returns (Empty);
rpc DeleteDatabase(DeleteDatabaseRequest) returns (Empty);