terminal

LinuxScripts

menu

Asseto Corsa Server

Install Script (Debian/Ubuntu / clean)

download content_copy expand_more
#!/bin/bash
set -e

# ========== COLORS ==========
NC='\033[0m'
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[1;34m'
BOLD='\033[1m'

# ========== SPINNER ==========
spinner_pid=""
start_spinner() {
  local msg="$1"
  echo -ne "${BLUE}[INFO] ℹ️${NC} ${msg}... "

  trap stop_spinner INT

  (
    local spin='-\|/'
    while true; do
      for i in $(seq 0 $(( ${#spin} - 1 )) ); do
        echo -ne "\b${spin:$i:1}"
        sleep 0.1
      done
    done
  ) &

  spinner_pid=$!
  disown
}

stop_spinner() {
  if [[ -n "$spinner_pid" ]]; then
    kill "$spinner_pid" &>/dev/null || true
    wait "$spinner_pid" 2>/dev/null || true
    spinner_pid=""
  fi
  echo -e "\b${GREEN}[OK] ✓${NC}"
  trap - INT
}

run_step() {
  start_spinner "$1"
  shift
  "$@" &>/dev/null
  stop_spinner
}

run_multistep() {
  start_spinner "$1"
  shift
  {
    "$@"
  } &>/dev/null
  stop_spinner
}

echo -e "\n${BOLD}${YELLOW}=== Assetto Corsa Server (2014) Installation Script ===${NC}\n"

# ========== CONFIGURATION ==========
SERVER_DIR="/opt/assetto_server"
STEAM_USER="anonymous"
ASSETTO_APP_ID=302550
PORTS=(9600 8081)
SCREEN_SESSION="assetto_server"

check_root() {
  if [[ $EUID -ne 0 ]]; then
    echo -e "${RED}[ERROR] Ten skrypt musi być uruchomiony jako root (sudo)${NC}"
    exit 1
  fi
}

check_root

run_step "Updating system packages" apt-get update -y
run_step "Upgrading packages" apt-get upgrade -y
run_step "Installing required packages (curl, wget, screen, firewalld, steamcmd)" apt-get install -y curl wget screen firewalld steamcmd

run_step "Starting firewalld" systemctl start firewalld
run_step "Enabling firewalld to start on boot" systemctl enable firewalld

echo -e "${BLUE}[INFO] ℹ️ Tworzenie katalogu instalacyjnego serwera...${NC}"
mkdir -p "$SERVER_DIR"
chown -R $SUDO_USER:$SUDO_USER "$SERVER_DIR"

run_step "Pobieranie Assetto Corsa Dedicated Server przez SteamCMD" \
  steamcmd +login $STEAM_USER +force_install_dir "$SERVER_DIR" +app_update $ASSETTO_APP_ID validate +quit

echo -e "${BLUE}[INFO] ℹ️ Konfiguracja firewalld - otwieranie portów...${NC}"
for port in "${PORTS[@]}"; do
  run_step "Otwieranie portu UDP $port" firewall-cmd --permanent --add-port=${port}/udp
  run_step "Otwieranie portu TCP $port" firewall-cmd --permanent --add-port=${port}/tcp
done
run_step "Reload firewalld to apply rules" firewall-cmd --reload

echo -e "${BLUE}[INFO] ℹ️ Uruchamianie serwera Assetto Corsa w sesji screen...${NC}"
cd "$SERVER_DIR"

if screen -list | grep -q "$SCREEN_SESSION"; then
  echo -e "${YELLOW}[WARN] Sesja screen '$SCREEN_SESSION' już istnieje. Możesz połączyć się poleceniem:\n  screen -r $SCREEN_SESSION${NC}"
else
  run_step "Starting Assetto Corsa Dedicated Server in screen session '$SCREEN_SESSION'" \
    screen -dmS "$SCREEN_SESSION" bash -c "./acServer"
fi

echo -e "\n${BOLD}${GREEN}✓ Instalacja i konfiguracja serwera Assetto Corsa zakończona!${NC}"
echo -e "${BOLD}Aby dołączyć do serwera w sesji screen, użyj:${NC} screen -r $SCREEN_SESSION\n"

Use the following command to auto-download and run: content_copy

wget "https://krotek.serveminecraft.net/how-to-install/GAME-SERVERS/Asseto-Corsa/generate.php?system=debian&type=install&variant=clean" -O install.sh && chmod +x install.sh && sudo ./install.sh

Uninstall Script (Debian/Ubuntu / clean)

download content_copy expand_more
#!/bin/bash
set -e

# ========== COLORS ==========
NC='\033[0m'
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[1;34m'
BOLD='\033[1m'

spinner_pid=""
start_spinner() {
  local msg="$1"
  echo -ne "${BLUE}[INFO] ℹ️${NC} ${msg}... "

  trap stop_spinner INT

  (
    local spin='-\|/'
    while true; do
      for i in $(seq 0 $(( ${#spin} - 1 )) ); do
        echo -ne "\b${spin:$i:1}"
        sleep 0.1
      done
    done
  ) &

  spinner_pid=$!
  disown
}

stop_spinner() {
  if [[ -n "$spinner_pid" ]]; then
    kill "$spinner_pid" &>/dev/null || true
    wait "$spinner_pid" 2>/dev/null || true
    spinner_pid=""
  fi
  echo -e "\b${GREEN}[OK] ✓${NC}"
  trap - INT
}

run_step() {
  start_spinner "$1"
  shift
  "$@" &>/dev/null
  stop_spinner
}

echo -e "\n${BOLD}${YELLOW}=== BeamMP Server Uninstall Script ===${NC}\n"

# Stop and disable systemd service
run_step "Stopping BeamMP service" sudo systemctl stop beammp-server || true
run_step "Disabling BeamMP service" sudo systemctl disable beammp-server || true

# Remove systemd service file
run_step "Removing systemd service file" sudo rm -f /etc/systemd/system/beammp-server.service

# Reload systemd daemon
run_step "Reloading systemd daemon" sudo systemctl daemon-reexec

# Remove BeamMP server directory
run_step "Removing BeamMP server files" rm -rf ~/beammp-server

# Remove firewall rules
run_step "Removing TCP port 30814 from firewall" sudo firewall-cmd --permanent --remove-port=30814/tcp || true
run_step "Removing UDP port 30814 from firewall" sudo firewall-cmd --permanent --remove-port=30814/udp || true

# Reload firewall
run_step "Reloading firewalld" sudo firewall-cmd --reload

echo -e "\n${BOLD}${GREEN}✓ BeamMP Server successfully uninstalled!${NC}"

Use the following command to auto-download and run: content_copy

wget "https://krotek.serveminecraft.net/how-to-install/GAME-SERVERS/Asseto-Corsa/generate.php?system=debian&type=uninstall&variant=clean" -O uninstall.sh && chmod +x uninstall.sh && sudo ./uninstall.sh

OVPN Script for connection (Debian/Ubuntu / clean)

download content_copy expand_more
# Script not found: scripts/debian/ovpn.sh

Use the following command to auto-download and run: content_copy

wget "https://krotek.serveminecraft.net/how-to-install/GAME-SERVERS/Asseto-Corsa/generate.php?system=debian&type=ovpn&variant=clean" -O ovpn.sh && chmod +x ovpn.sh && sudo ./ovpn.sh

Just commands (Debian/Ubuntu / clean)

expand_more
sudo apt update && sudo apt upgrade -y
sudo apt install -y openvpn easy-rsa firewalld

sudo systemctl start firewalld
sudo systemctl enable firewalld

make-cadir ~/openvpn-ca
cd ~/openvpn-ca

./easyrsa init-pki
./easyrsa build-ca nopass

./easyrsa gen-req server nopass
./easyrsa sign-req server server

./easyrsa gen-dh
openvpn --genkey --secret ta.key

sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem ta.key /etc/openvpn/

sudo nano /etc/openvpn/server.conf

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA256
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sudo sysctl -p

sudo firewall-cmd --permanent --add-port=1194/udp
sudo firewall-cmd --permanent --zone=public --add-masquerade
sudo firewall-cmd --reload

sudo systemctl enable openvpn@server
sudo systemctl start openvpn@server