Files
source-gamepanel/packages/database/drizzle/0008_stop_controls_and_ark.sql
T
2026-08-02 20:26:54 +03:00

158 lines
4.6 KiB
SQL

-- Per-game shutdown controls and container mount overrides.
ALTER TABLE "games"
ADD COLUMN IF NOT EXISTS "stop_timeout_seconds" integer NOT NULL DEFAULT 30;
ALTER TABLE "games"
ADD COLUMN IF NOT EXISTS "container_data_path" text;
-- Mount points the daemon previously derived from the image name. Storing them
-- makes the mapping visible and editable instead of hardcoded.
UPDATE "games" SET "container_data_path" = '/home/steam/cs2-dedicated' WHERE "slug" = 'cs2' AND "container_data_path" IS NULL;
UPDATE "games" SET "container_data_path" = '/config' WHERE "slug" IN ('fivem', 'satisfactory') AND "container_data_path" IS NULL;
UPDATE "games" SET "container_data_path" = '/data' WHERE "slug" IN ('minecraft-java', 'minecraft-bedrock', 'terraria', 'rust') AND "container_data_path" IS NULL;
-- Shutdown budgets. Source servers quit instantly once they get the command;
-- ARK and Satisfactory need to flush a world save first.
UPDATE "games" SET "stop_timeout_seconds" = 60 WHERE "slug" IN ('minecraft-java', 'minecraft-bedrock');
UPDATE "games" SET "stop_timeout_seconds" = 120 WHERE "slug" = 'satisfactory';
-- ARK: Survival Evolved
INSERT INTO "games" (
"slug",
"name",
"docker_image",
"default_port",
"config_files",
"automation_rules",
"startup_command",
"stop_command",
"stop_timeout_seconds",
"container_data_path",
"environment_vars",
"created_at",
"updated_at"
)
VALUES (
'ark-se',
'ARK: Survival Evolved',
'hermsi/ark-server:latest',
7777,
'[
{
"path": "server/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini",
"parser": "properties",
"editableKeys": [
"SessionName",
"ServerPassword",
"ServerAdminPassword",
"MaxPlayers",
"ServerPVE",
"ServerCrosshair",
"ServerHardcore",
"AllowThirdPersonPlayer",
"ShowMapPlayerLocation",
"GlobalVoiceChat",
"ProximityChat",
"NoTributeDownloads",
"AllowAnyoneBabyImprintCuddle",
"DifficultyOffset",
"XPMultiplier",
"TamingSpeedMultiplier",
"HarvestAmountMultiplier",
"DayCycleSpeedScale",
"NightTimeSpeedScale",
"PlayerCharacterWaterDrainMultiplier",
"PlayerCharacterFoodDrainMultiplier",
"StructureDamageMultiplier",
"StructureResistanceMultiplier",
"RCONEnabled",
"RCONPort"
]
},
{
"path": "server/ShooterGame/Saved/Config/LinuxServer/Game.ini",
"parser": "properties"
}
]'::jsonb,
'[]'::jsonb,
'',
'',
300,
'/app',
'[
{
"key": "SESSION_NAME",
"default": "SourceGamePanel ARK Server",
"description": "Server name shown in the ARK server browser",
"required": true
},
{
"key": "SERVER_MAP",
"default": "TheIsland",
"description": "Map to load (TheIsland, TheCenter, Ragnarok, Valguero, CrystalIsles, ...)",
"required": true
},
{
"key": "ADMIN_PASSWORD",
"default": "",
"description": "Admin/RCON password. Required — RCON console commands use it.",
"required": true
},
{
"key": "SERVER_PASSWORD",
"default": "",
"description": "Password players need to join. Leave empty for a public server.",
"required": false
},
{
"key": "MAX_PLAYERS",
"default": "20",
"description": "Maximum player count",
"required": false
},
{
"key": "UPDATE_ON_START",
"label": "Update on start",
"default": "false",
"description": "Run a SteamCMD update every time the server starts",
"required": false,
"inputType": "boolean",
"enabledLabel": "Aktif",
"disabledLabel": "Pasif"
},
{
"key": "BACKUP_ON_STOP",
"label": "Backup on stop",
"default": "false",
"description": "Create a world backup during shutdown (makes stopping slower)",
"required": false,
"inputType": "boolean",
"enabledLabel": "Aktif",
"disabledLabel": "Pasif"
},
{
"key": "WARN_ON_STOP",
"label": "Warn players on stop",
"default": "false",
"description": "Broadcast a shutdown warning to connected players before stopping",
"required": false,
"inputType": "boolean",
"enabledLabel": "Aktif",
"disabledLabel": "Pasif"
},
{
"key": "PRE_UPDATE_BACKUP",
"label": "Backup before update",
"default": "true",
"description": "Back the world up before applying a SteamCMD update",
"required": false,
"inputType": "boolean",
"enabledLabel": "Aktif",
"disabledLabel": "Pasif"
}
]'::jsonb,
NOW(),
NOW()
)
ON CONFLICT ("slug") DO NOTHING;