first commit
This commit is contained in:
commit
8efe43c15e
12 changed files with 468 additions and 0 deletions
9
.env.example
Normal file
9
.env.example
Normal file
|
@ -0,0 +1,9 @@
|
|||
# Directory where "lgsm" and "serverfiles" are located.
|
||||
LGSM_ROOT="$HOME"
|
||||
|
||||
# ARK server passwords.
|
||||
SERVER_ADMIN_PASSWORD=
|
||||
SERVER_PASSWORD=
|
||||
|
||||
# Paths of borg repositories for backing up maps.
|
||||
BORG_REPOS=("$HOME/arkbackup")
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
.env
|
34
Game.ini
Normal file
34
Game.ini
Normal file
|
@ -0,0 +1,34 @@
|
|||
[ModInstaller]
|
||||
# Primal Fear
|
||||
ModIDS=839162288
|
||||
# Auto Engrams!
|
||||
ModIDS=1428596566
|
||||
# Awesome SpyGlass!
|
||||
ModIDS=1404697612
|
||||
# Dino Storage v2
|
||||
ModIDS=1609138312
|
||||
# Structure Plus
|
||||
ModIDS=731604991
|
||||
# Ultra Stacks
|
||||
ModIDS=761535755
|
||||
# AlphaEverything
|
||||
#ModIDS=2205699189
|
||||
# Ascended 2 Evolved loot drops
|
||||
#ModIDS=3108122319
|
||||
|
||||
[/script/shootergame.shootergamemode]
|
||||
BabyCuddleGracePeriodMultiplier=2.0
|
||||
BabyCuddleIntervalMultiplier=0.0625
|
||||
BabyCuddleLoseImprintQualitySpeedMultiplier=0.5
|
||||
BabyImprintAmountMultiplier=15
|
||||
BabyMatureSpeedMultiplier=5.0
|
||||
bAllowFlyerSpeedLeveling=True
|
||||
bDisableFriendlyFire=True
|
||||
bDisableStructurePlacementCollision=True
|
||||
bIncreasePvPRespawnInterval=False
|
||||
bPvEDisableFriendlyFire=True
|
||||
EggHatchSpeedMultiplier=5.0
|
||||
MatingIntervalMultiplier=0.5
|
||||
ConfigOverrideNPCSpawnEntriesContainer=(NPCSpawnEntriesContainerClassString="DinoSpawnEntries_CW_WhiteShoals_C",NPCSpawnEntries=((AnEntryName="ChaosWyvernWhiteShoals",EntryWeight=0.00875,NPCsToSpawnStrings=("WyvernGuardian_Character_BP_Base_Child_Chaos_Tamed_C")),(AnEntryName="SpiritWyvernWhiteShoals",EntryWeight=0.00875,NPCsToSpawnStrings=("WyvernGuardian_Character_BP_Base_Child_Spirit_Tamed_C")),(AnEntryName="CelestialFireWyvernWhiteShoals",EntryWeight=0.01125,NPCsToSpawnStrings=("CelestialWyvern_Character_BP_Fire_C")),(AnEntryName="CelestialIceWyvernWhiteShoals",EntryWeight=0.01125,NPCsToSpawnStrings=("CelestialWyvern_Character_BP_Ice_C")),(AnEntryName="OmegaFireWyvernWhiteShoals",EntryWeight=0.00625,NPCsToSpawnStrings=("OmegaWyvern_Character_BP_Fire_C")),(AnEntryName="OmegaIceWyvernWhiteShoals",EntryWeight=0.00625,NPCsToSpawnStrings=("OmegaWyvern_Character_BP_Ice_C")),(AnEntryName="OmegaLightingWyvernWhiteShoals",EntryWeight=0.00625,NPCsToSpawnStrings=("OmegaWyvern_Character_BP_Lighting_C")),(AnEntryName="OmegaPoisonWyvernWhiteShoals",EntryWeight=0.00625,NPCsToSpawnStrings=("OmegaWyvern_Character_BP_Poison_C")),(AnEntryName="NecroticFireWyvernWhiteShoals",EntryWeight=0.0075,NPCsToSpawnStrings=("NecroticWyvern_Character_BP_ZombieFire_C")),(AnEntryName="NecroticIceWyvernWhiteShoals",EntryWeight=0.0075,NPCsToSpawnStrings=("NecroticWyvern_Character_BP_ZombieIce_C")),(AnEntryName="NecroticLightingWyvernWhiteShoals",EntryWeight=0.0075,NPCsToSpawnStrings=("NecroticWyvern_Character_BP_ZombieLighting_C")),(AnEntryName="NecroticPoisonWyvernWhiteShoals",EntryWeight=0.0075,NPCsToSpawnStrings=("NecroticWyvern_Character_BP_ZombiePoison_C")),(AnEntryName="ApexFireWyvernWhiteShoals",EntryWeight=0.00833,NPCsToSpawnStrings=("ApexWyvern_Character_BP_Fire_C")),(AnEntryName="ApexLightingWyvernWhiteShoals",EntryWeight=0.00833,NPCsToSpawnStrings=("ApexWyvern_Character_BP_Lighting_C")),(AnEntryName="ApexPoisonWyvernWhiteShoals",EntryWeight=0.00833,NPCsToSpawnStrings=("ApexWyvern_Character_BP_Poison_C")),(AnEntryName="AlphaFireWyvernWhiteShoals",EntryWeight=0.0166,NPCsToSpawnStrings=("AlphaFireWyvern_Character_BP_Fire_C")),(AnEntryName="AlphaLightingWyvernWhiteShoals",EntryWeight=0.0166,NPCsToSpawnStrings=("AlphaWyvern_Character_BP_Lightning_C")),(AnEntryName="AlphaPoisonWyvernWhiteShoals",EntryWeight=0.0166,NPCsToSpawnStrings=("AlphaWyvern_Character_BP_Poison_C")),(AnEntryName="TropicalCrystalWyvernWhiteShoals",EntryWeight=0.36,NPCsToSpawnStrings=("CrystalWyvern_Character_BP_WS_C")))NPCSpawnLimits=((NPCClassString="WyvernGuardian_Character_BP_Base_Child_Chaos_Tamed_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="WyvernGuardian_Character_BP_Child_Spirit_Tamed_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="CelestialWyvern_Character_BP_Fire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="CelestialWyvern_Character_BP_Ice_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="OmegaWyvern_Character_BP_Fire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="OmegaWyvern_Character_BP_Ice_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="OmegaWyvern_Character_BP_Lightning_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="OmegaWyvern_Character_BP_Poison_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="NecroticWyvern_Character_BP_ZombieFire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="NecroticWyvern_Character_BP_ZombieIce_CC",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="NecroticWyvern_Character_BP_ZombieLighting_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="NecroticWyvern_Character_BP_ZombiePoison_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="ApexWyvern_Character_BP_Fire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="ApexWyvern_Character_BP_Lighting_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="ApexWyvern_Character_BP_Poison_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="AlphaFireWyvern_Character_BP_Fire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="AlphaWyvern_Character_BP_Lightning_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="AlphaWyvern_Character_BP_Poison_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="CrystalWyvern_Character_BP_WS_C",MaxPercentageOfDesiredNumToAllow=0.5)))
|
||||
ConfigOverrideNPCSpawnEntriesContainer=(NPCSpawnEntriesContainerClassString="DinoSpawnEntries_CW_Bloodfall_C",NPCSpawnEntries=((AnEntryName="ChaosWyvernBloodfall",EntryWeight=0.00875,NPCsToSpawnStrings=("WyvernGuardian_Character_BP_Base_Child_Chaos_Tamed_C")),(AnEntryName="SpiritWyvernBloodfall",EntryWeight=0.00875,NPCsToSpawnStrings=("WyvernGuardian_Character_BP_Base_Child_Spirit_Tamed_C")),(AnEntryName="CelestialFireWyvernBloodfall",EntryWeight=0.01125,NPCsToSpawnStrings=("CelestialWyvern_Character_BP_Fire_C")),(AnEntryName="CelestialIceWyvernBloodfall",EntryWeight=0.01125,NPCsToSpawnStrings=("CelestialWyvern_Character_BP_Ice_C")),(AnEntryName="OmegaFireWyvernBloodfall",EntryWeight=0.00625,NPCsToSpawnStrings=("OmegaWyvern_Character_BP_Fire_C")),(AnEntryName="OmegaIceWyvernBloodfall",EntryWeight=0.00625,NPCsToSpawnStrings=("OmegaWyvern_Character_BP_Ice_C")),(AnEntryName="OmegaLightingWyvernBloodfall",EntryWeight=0.00625,NPCsToSpawnStrings=("OmegaWyvern_Character_BP_Lighting_C")),(AnEntryName="OmegaPoisonWyvernBloodfall",EntryWeight=0.00625,NPCsToSpawnStrings=("OmegaWyvern_Character_BP_Poison_C")),(AnEntryName="NecroticFireWyvernBloodfall",EntryWeight=0.0075,NPCsToSpawnStrings=("NecroticWyvern_Character_BP_ZombieFire_C")),(AnEntryName="NecroticIceWyvernBloodfall",EntryWeight=0.0075,NPCsToSpawnStrings=("NecroticWyvern_Character_BP_ZombieIce_C")),(AnEntryName="NecroticLightingWyvernBloodfall",EntryWeight=0.0075,NPCsToSpawnStrings=("NecroticWyvern_Character_BP_ZombieLighting_C")),(AnEntryName="NecroticPoisonWyvernBloodfall",EntryWeight=0.0075,NPCsToSpawnStrings=("NecroticWyvern_Character_BP_ZombiePoison_C")),(AnEntryName="ApexFireWyvernBloodfall",EntryWeight=0.00833,NPCsToSpawnStrings=("ApexWyvern_Character_BP_Fire_C")),(AnEntryName="ApexLightingWyvernBloodfall",EntryWeight=0.00833,NPCsToSpawnStrings=("ApexWyvern_Character_BP_Lighting_C")),(AnEntryName="ApexPoisonWyvernBloodfall",EntryWeight=0.00833,NPCsToSpawnStrings=("ApexWyvern_Character_BP_Poison_C")),(AnEntryName="AlphaFireWyvernBloodfall",EntryWeight=0.0166,NPCsToSpawnStrings=("AlphaFireWyvern_Character_BP_Fire_C")),(AnEntryName="AlphaLightingWyvernBloodfall",EntryWeight=0.0166,NPCsToSpawnStrings=("AlphaWyvern_Character_BP_Lightning_C")),(AnEntryName="AlphaPoisonWyvernBloodfall",EntryWeight=0.0166,NPCsToSpawnStrings=("AlphaWyvern_Character_BP_Poison_C")),(AnEntryName="BloodCrystalWyvernBloodfall",EntryWeight=0.36,NPCsToSpawnStrings=("CrystalWyvern_Character_BP_Blood_C")))NPCSpawnLimits=((NPCClassString="WyvernGuardian_Character_BP_Base_Child_Chaos_Tamed_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="WyvernGuardian_Character_BP_Child_Spirit_Tamed_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="CelestialWyvern_Character_BP_Fire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="CelestialWyvern_Character_BP_Ice_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="OmegaWyvern_Character_BP_Fire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="OmegaWyvern_Character_BP_Ice_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="OmegaWyvern_Character_BP_Lightning_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="OmegaWyvern_Character_BP_Poison_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="NecroticWyvern_Character_BP_ZombieFire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="NecroticWyvern_Character_BP_ZombieIce_CC",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="NecroticWyvern_Character_BP_ZombieLighting_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="NecroticWyvern_Character_BP_ZombiePoison_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="ApexWyvern_Character_BP_Fire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="ApexWyvern_Character_BP_Lighting_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="ApexWyvern_Character_BP_Poison_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="AlphaFireWyvern_Character_BP_Fire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="AlphaWyvern_Character_BP_Lightning_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="AlphaWyvern_Character_BP_Poison_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="CrystalWyvern_Character_BP_Blood_C",MaxPercentageOfDesiredNumToAllow=0.5)))
|
||||
ConfigOverrideNPCSpawnEntriesContainer=(NPCSpawnEntriesContainerClassString="CI_DinoSpawnEntries_EmberWyverns_C",NPCSpawnEntries=((AnEntryName="ChaosWyvernVolcano",EntryWeight=0.00875,NPCsToSpawnStrings=("WyvernGuardian_Character_BP_Base_Child_Chaos_Tamed_C")),(AnEntryName="SpiritWyvernVolcano",EntryWeight=0.00875,NPCsToSpawnStrings=("WyvernGuardian_Character_BP_Base_Child_Spirit_Tamed_C")),(AnEntryName="CelestialFireWyvernVolcano",EntryWeight=0.01125,NPCsToSpawnStrings=("CelestialWyvern_Character_BP_Fire_C")),(AnEntryName="CelestialIceWyvernVolcano",EntryWeight=0.01125,NPCsToSpawnStrings=("CelestialWyvern_Character_BP_Ice_C")),(AnEntryName="OmegaFireWyvernVolcano",EntryWeight=0.00625,NPCsToSpawnStrings=("OmegaWyvern_Character_BP_Fire_C")),(AnEntryName="OmegaIceWyvernVolcano",EntryWeight=0.00625,NPCsToSpawnStrings=("OmegaWyvern_Character_BP_Ice_C")),(AnEntryName="OmegaLightingWyvernVolcano",EntryWeight=0.00625,NPCsToSpawnStrings=("OmegaWyvern_Character_BP_Lighting_C")),(AnEntryName="OmegaPoisonWyvernVolcano",EntryWeight=0.00625,NPCsToSpawnStrings=("OmegaWyvern_Character_BP_Poison_C")),(AnEntryName="NecroticFireWyvernVolcano",EntryWeight=0.0075,NPCsToSpawnStrings=("NecroticWyvern_Character_BP_ZombieFire_C")),(AnEntryName="NecroticIceWyvernVolcano",EntryWeight=0.0075,NPCsToSpawnStrings=("NecroticWyvern_Character_BP_ZombieIce_C")),(AnEntryName="NecroticLightingWyvernVolcano",EntryWeight=0.0075,NPCsToSpawnStrings=("NecroticWyvern_Character_BP_ZombieLighting_C")),(AnEntryName="NecroticPoisonWyvernVolcano",EntryWeight=0.0075,NPCsToSpawnStrings=("NecroticWyvern_Character_BP_ZombiePoison_C")),(AnEntryName="ApexFireWyvernVolcano",EntryWeight=0.00833,NPCsToSpawnStrings=("ApexWyvern_Character_BP_Fire_C")),(AnEntryName="ApexLightingWyvernVolcano",EntryWeight=0.00833,NPCsToSpawnStrings=("ApexWyvern_Character_BP_Lighting_C")),(AnEntryName="ApexPoisonWyvernVolcano",EntryWeight=0.00833,NPCsToSpawnStrings=("ApexWyvern_Character_BP_Poison_C")),(AnEntryName="AlphaFireWyvernVolcano",EntryWeight=0.0166,NPCsToSpawnStrings=("AlphaFireWyvern_Character_BP_Fire_C")),(AnEntryName="AlphaLightingWyvernVolcano",EntryWeight=0.0166,NPCsToSpawnStrings=("AlphaWyvern_Character_BP_Lightning_C")),(AnEntryName="AlphaPoisonWyvernVolcano",EntryWeight=0.0166,NPCsToSpawnStrings=("AlphaWyvern_Character_BP_Poison_C")),(AnEntryName="EmberCrystalWyvernVolcano",EntryWeight=0.36,NPCsToSpawnStrings=("CrystalWyvern_Character_BP_Ember_C")))NPCSpawnLimits=((NPCClassString="WyvernGuardian_Character_BP_Base_Child_Chaos_Tamed_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="WyvernGuardian_Character_BP_Child_Spirit_Tamed_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="CelestialWyvern_Character_BP_Fire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="CelestialWyvern_Character_BP_Ice_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="OmegaWyvern_Character_BP_Fire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="OmegaWyvern_Character_BP_Ice_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="OmegaWyvern_Character_BP_Lightning_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="OmegaWyvern_Character_BP_Poison_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="NecroticWyvern_Character_BP_ZombieFire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="NecroticWyvern_Character_BP_ZombieIce_CC",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="NecroticWyvern_Character_BP_ZombieLighting_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="NecroticWyvern_Character_BP_ZombiePoison_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="ApexWyvern_Character_BP_Fire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="ApexWyvern_Character_BP_Lighting_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="ApexWyvern_Character_BP_Poison_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="AlphaFireWyvern_Character_BP_Fire_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="AlphaWyvern_Character_BP_Lightning_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="AlphaWyvern_Character_BP_Poison_C",MaxPercentageOfDesiredNumToAllow=0.1),(NPCClassString="CrystalWyvern_Character_BP_Ember_C",MaxPercentageOfDesiredNumToAllow=0.5)))
|
230
GameUserSettings.ini
Normal file
230
GameUserSettings.ini
Normal file
File diff suppressed because one or more lines are too long
16
README.md
Normal file
16
README.md
Normal file
|
@ -0,0 +1,16 @@
|
|||
# arkserver
|
||||
|
||||
Small scripts to manage my ARK server.
|
||||
|
||||
## Backup
|
||||
Ex: Set a cronjob to backup every 2 hours:
|
||||
```
|
||||
0 */2 * * * ~/arksrv/runbackup.sh
|
||||
```
|
||||
|
||||
If backing up to a SSH host, setup SSH access,
|
||||
then restrict access given by the SSH key to a particular command
|
||||
by putting this in authorized_keys:
|
||||
```
|
||||
command="borg serve --append-only --restrict-to-repo PATH_TO_REPO",restrict KEY_TYPE PUB_KEY COMMENT
|
||||
```
|
16
arkserver.cfg
Normal file
16
arkserver.cfg
Normal file
|
@ -0,0 +1,16 @@
|
|||
##################################
|
||||
####### Instance Settings ########
|
||||
##################################
|
||||
|
||||
ip="0.0.0.0"
|
||||
|
||||
port="7777"
|
||||
queryport="27015"
|
||||
|
||||
# Default Map: TheIsland, Ragnarok, CrystalIsles, Aberration_P, ScorchedEarth_P, TheCenter, Extinction, Valguero_P, Genesis, Gen2
|
||||
defaultmap="Fjordur"
|
||||
altsavedirectoryname="${defaultmap}"
|
||||
|
||||
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
|
||||
## Game Server Docs | https://ark.wiki.gg/wiki/Server_configuration
|
||||
startparameters="${defaultmap}?AltSaveDirectoryName=${altsavedirectoryname} -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -AutoManagedMods -Crossplay -PublicIPForEpic=${publicip} -MaxNumOfSaveBackups=0"
|
16
arkserver.service
Normal file
16
arkserver.service
Normal file
|
@ -0,0 +1,16 @@
|
|||
[Unit]
|
||||
Description=LinuxGSM ARK Server
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
User=viyurz
|
||||
WorkingDirectory=/home/viyurz
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/home/viyurz/arkserver start
|
||||
ExecStop=/home/viyurz/arkserver stop
|
||||
Restart=no
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
19
copy-config-files.sh
Executable file
19
copy-config-files.sh
Executable file
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
|
||||
relative_path="$(dirname "$0")"
|
||||
|
||||
if ! source "$relative_path/.env"; then
|
||||
echo "Cannot source .env file, exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# Copy LGSM & ARK configuration files.
|
||||
cp "$relative_path/arkserver.cfg" "$LGSM_ROOT/lgsm/config-lgsm/arkserver/arkserver.cfg"
|
||||
cp "$relative_path/GameUserSettings.ini" "$LGSM_ROOT/serverfiles/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini"
|
||||
cp "$relative_path/Game.ini" "$LGSM_ROOT/serverfiles/ShooterGame/Saved/Config/LinuxServer/Game.ini"
|
||||
|
||||
|
||||
# Add passwords in config files.
|
||||
sed -i "s/^ServerAdminPassword=.*/ServerAdminPassword=$SERVER_ADMIN_PASSWORD/" "$LGSM_ROOT/serverfiles/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini"
|
||||
sed -i "s/^ServerPassword=.*/ServerPassword=$SERVER_PASSWORD/" "$LGSM_ROOT/serverfiles/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini"
|
17
install-lgsm.sh
Executable file
17
install-lgsm.sh
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/bin/bash
|
||||
|
||||
relative_path="$(dirname "$0")"
|
||||
|
||||
if ! source "$relative_path/.env"; then
|
||||
echo "Cannot source .env file, exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
(cd "$LGSM_ROOT" &&
|
||||
curl -Lo linuxgsm.sh https://linuxgsm.sh &&
|
||||
chmod +x linuxgsm.sh &&
|
||||
./linuxgsm.sh arkserver &&
|
||||
rm linuxgsm.sh &&
|
||||
./arkserver install
|
||||
)
|
19
install-nftables-service.sh
Executable file
19
install-nftables-service.sh
Executable file
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
|
||||
relative_path="$(dirname "$0")"
|
||||
|
||||
|
||||
# Install nftables if not already installed.
|
||||
sudo which nft > /dev/null || sudo apt install -y nftables
|
||||
|
||||
|
||||
# Copy nftables.conf & sytemd service files.
|
||||
sudo cp "$relative_path/nftables.conf" /etc/nftables.conf
|
||||
|
||||
sudo cp "$relative_path/arkserver.service" /etc/systemd/system/arkserver.service
|
||||
|
||||
|
||||
# Enable & start both services.
|
||||
sudo systemctl enable arkserver nftables
|
||||
|
||||
sudo systemctl restart arkserver nftables
|
66
nftables.conf
Normal file
66
nftables.conf
Normal file
|
@ -0,0 +1,66 @@
|
|||
#!/usr/sbin/nft -f
|
||||
|
||||
flush ruleset
|
||||
|
||||
table inet filter {
|
||||
set blackhole_ipv4 {
|
||||
type ipv4_addr
|
||||
timeout 1m
|
||||
flags dynamic
|
||||
}
|
||||
|
||||
set blackhole_ipv6 {
|
||||
type ipv6_addr
|
||||
timeout 1m
|
||||
flags dynamic
|
||||
}
|
||||
|
||||
chain input {
|
||||
type filter hook input priority 0; policy drop;
|
||||
|
||||
iif lo accept
|
||||
|
||||
# Block all IPs in blackhole
|
||||
ip saddr @blackhole_ipv4 set update ip saddr @blackhole_ipv4 drop
|
||||
ip6 saddr @blackhole_ipv6 set update ip6 saddr @blackhole_ipv6 drop
|
||||
|
||||
ct state invalid drop
|
||||
ct state { established, related } accept
|
||||
|
||||
# Prevent DDoS
|
||||
# Rate limiting
|
||||
meta nfproto ipv4 meter ratelimit4 \
|
||||
{ ip saddr limit rate over 50/second burst 10 packets } \
|
||||
add @blackhole_ipv4 { ip saddr }
|
||||
meta nfproto ipv6 meter ratelimit6 \
|
||||
{ ip6 saddr limit rate over 50/second burst 10 packets } \
|
||||
add @blackhole_ipv6 { ip6 saddr }
|
||||
# Max concurrent connections
|
||||
meta nfproto ipv4 meter connlimit4 \
|
||||
{ ip saddr ct count over 100 } add @blackhole_ipv4 { ip saddr }
|
||||
meta nfproto ipv6 meter connlimit6 \
|
||||
{ ip6 saddr ct count over 100 } add @blackhole_ipv6 { ip6 saddr }
|
||||
|
||||
# Allow ICMP
|
||||
meta l4proto icmp accept
|
||||
meta l4proto ipv6-icmp accept
|
||||
|
||||
# SSH
|
||||
tcp dport ssh accept
|
||||
|
||||
# ARK
|
||||
udp dport { 7777, 7778, 27015 } accept
|
||||
}
|
||||
|
||||
chain forward {
|
||||
type filter hook forward priority 0; policy drop;
|
||||
}
|
||||
|
||||
chain output {
|
||||
type filter hook output priority 0; policy accept;
|
||||
|
||||
# Don't waste resources responding to blocked IPs
|
||||
ip daddr @blackhole_ipv4 reject
|
||||
ip6 daddr @blackhole_ipv6 reject
|
||||
}
|
||||
}
|
25
run-backup.sh
Executable file
25
run-backup.sh
Executable file
|
@ -0,0 +1,25 @@
|
|||
#!/bin/bash
|
||||
|
||||
relative_path="$(dirname "$0")"
|
||||
|
||||
if ! source "$relative_path/.env"; then
|
||||
echo "Cannot source .env file, exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# Install borgbackup and/or cron if not already installed.
|
||||
which borg > /dev/null || sudo apt install -y borgbackup
|
||||
which crontab > /dev/null || sudo apt install -y cron
|
||||
|
||||
|
||||
# ARK "Saved" directory path.
|
||||
backup_target="$LGSM_ROOT/serverfiles/ShooterGame/Saved"
|
||||
|
||||
|
||||
for repo in "${BORG_REPOS[@]}"; do
|
||||
borg init -e none "$repo"
|
||||
borg create -C lzma "$repo::Saved_{now:%Y-%m-%d_%H-%M-%S}" "$backup_target"
|
||||
borg prune --keep-within=2d --keep-daily=7 --keep-weekly=4 --keep-monthly=12 --keep-yearly=10 "$repo"
|
||||
borg compact "$repo"
|
||||
done
|
Loading…
Reference in a new issue