diff --git a/.env b/.env index 634c39a..aef0df7 100644 --- a/.env +++ b/.env @@ -1,5 +1,9 @@ ACEVO_APP_ID=4564210 -ACEVO_GSLT=YOUR_GSLT_TOKEN -ACEVO_SERVER_NAME="RWM Gaming Assetto Corsa Evo" +ACEVO_GSLT=DF0226007187C351C2376C6418084F23 + +STEAM_USERNAME=Saultarius +STEAM_PASSWORD=ixiwkl + +ACEVO_SERVER_NAME=RWM Gaming Assetto Corsa Evo ACEVO_SERVER_PORT=9750 ACEVO_HTTP_PORT=8089 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..04e343c --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# Node build artifacts +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Environment files +.env +.env.* + +# AC Evo dedicated server binaries (installed at runtime) +acevo-server/ +home/steam/acevo-server/ +home/steam/.local/share/Steam/ + +# SteamCMD cache +steamcmd/ +home/steam/steamcmd/ +steamapps/ +steamapps/* + +# Proton prefixes (runtime only) +proton/ +proton-prefix/ +compatdata/ + +# Logs +logs/ +*.log + +# OS junk +.DS_Store +Thumbs.db + +# Editor junk +.vscode/ +.idea/ + +# TrueNAS SCALE app metadata (if present) +ix-app.json + +ACEVO.License \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 88364aa..2deb291 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,26 +14,33 @@ RUN apt-get update && \ xz-utils && \ rm -rf /var/lib/apt/lists/* +# Create steam user RUN useradd -m -s /bin/bash steam -USER steam -WORKDIR /home/steam -# SteamCMD +# SteamCMD install (as root) RUN mkdir -p /home/steam/steamcmd && \ cd /home/steam/steamcmd && \ curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" \ - | tar zxvf - + | tar zxvf - && \ + chown -R steam:steam /home/steam/steamcmd && \ + chmod -R a+x /home/steam/steamcmd ENV STEAMCMD_DIR=/home/steam/steamcmd ENV ACEVO_INSTALL_DIR=/home/steam/acevo-server -RUN mkdir -p ${ACEVO_INSTALL_DIR} +RUN mkdir -p ${ACEVO_INSTALL_DIR} && \ + chown -R steam:steam ${ACEVO_INSTALL_DIR} -# Copy AC Evo Server Manager (your repo) +# Copy AC Evo Server Manager COPY . /app WORKDIR /app +# Copy entrypoint COPY entrypoint.sh /home/steam/entrypoint.sh -RUN chmod +x /home/steam/entrypoint.sh +RUN chown steam:steam /home/steam/entrypoint.sh && \ + chmod +x /home/steam/entrypoint.sh + +USER steam +WORKDIR /home/steam ENTRYPOINT ["/home/steam/entrypoint.sh"] diff --git a/acevo-server-manager b/acevo-server-manager new file mode 100644 index 0000000..f47cbce Binary files /dev/null and b/acevo-server-manager differ diff --git a/config.yml b/config.yml new file mode 100644 index 0000000..5940a83 --- /dev/null +++ b/config.yml @@ -0,0 +1,137 @@ +###################################################################################### +# +# Server Manager Configuration +# (c) 2026 Emperor Servers +# emperorservers.com +# +# Please note, the server manager must be restarted for changes made in this +# configuration file to apply! +# +# Support: +# Wiki: https://wiki.emperorservers.com/ +# Email: support@emperorservers.com +# Discord: https://discord.gg/MgJAqFX +# Forum: https://forum.emperorservers.com +# +###################################################################################### + +###################################################################################### +# http - configure the web interface on which you access server manager +###################################################################################### +http: + # hostname - the address that server manager listens on. If you don't know what this + # is, you can leave it as the default! Please note that values containing '0.0.0.0' + # will be accessible (firewall permitting) outside the local machine you are + # running server manager on. Change to 127.0.0.1 if you don't want this! + hostname: 0.0.0.0:8774 + + # session_key - a secret value that is used to encrypt session data. + # PLEASE CHANGE THIS TO A RANDOMLY GENERATED SECURE VALUE. + session_key: thisisasessionkey + + # base_url - the public facing base URL for the server manager. Used when server + # manager generates links to itself. If you're running server manager behind a + # reverse proxy, you must change this to reflect the correct URL of the server. + base_url: http://127.0.0.1:8774 + + # session_max_age - uncomment this to change the session max age from the default (30 days). + # session_max_age: 720h + + # session_name_prefix - uncomment this to set a unique prefix for a session. This can be useful if + # you are running multiple Server Managers on the same hostname (e.g. multiple managers on localhost). + # Must be alphanumeric, can contain underscores. + # session_name_prefix: server_manager_1 + + tls: + # TLS configuration. Server Manager supports TLS v1.2 upwards. As of 12/03/2020, + # the Server Manager configuration yields a perfect score from SSL Labs. + # Generally we recommend using a Reverse Proxy (caddy, nginx, apache2, etc) instead + # of this setting. + # If you enable this, you likely want the hostname (above) to listen on port 443. + enabled: false + # the path to the SSL certificate file. + cert_path: "" + # the path to the SSL key file. + key_path: "" + + # this option allows you to disable Cross Site Request Forgery (CSRF) protection. + # changing this setting is not recommended for most users. If you are scripting HTTP requests to Server Manager, + # you may wish to enable this setting. + disable_csrf_protection: false + +###################################################################################### +# game - configure the setup of the game server itself +###################################################################################### +game: + # install_path - this is the location that the game server is installed. By default, + # this is 'server', i.e. a folder called 'server' next to your server manager exe + # file. Change this to anything you like, but be prepared for the manager to + # complain if it cannot find the game server there! + install_path: /home/steam/acevo-server + + # executable_name - this is the name of the game server executable file. If left + # blank then the default executable name will be used (so in most cases, you can leave + # it blank). If you are running multiple servers on the same Windows machine you + # may need to rename the server executable for server #2 etc. and then update + # the executable_name to match here (for example server2.exe). + # Please note that this does NOT apply to Server Manager's own multiserver setup. + # + # It is generally recommended to leave this setting blank. + executable_name: + +###################################################################################### +# store: configure the server manager database +###################################################################################### +store: + # path - the location of the server manager JSON store. Usually the default value + # is fine here. + path: store.json + +###################################################################################### +# accounts: configure server manager accounts +###################################################################################### +accounts: + # admin_password_override - if set to a non-empty string, this will become the + # override password for the 'admin' account. Use this if you have forgotten your + # admin password. Do not run server manager permanently with this value set! + admin_password_override: "" + +###################################################################################### +# recaptcha: configure recaptcha in server manager +###################################################################################### +recaptcha: + site_key: "" + secret_key: "" + +###################################################################################### +# server: settings for server manager +###################################################################################### +server: + # disable_windows_browser_open - if set to true on Windows, this will prevent + # server manager from opening a browser window every time it runs. + disable_windows_browser_open: false + +################################################################################ +# +# monitoring - enabling monitoring allows us to find out more information +# about how you're using Server Manager, as well as seeing any issues that may +# occur, so we can collect and fix them. We understand that you may not wish +# for us to do any monitoring, so you can disable it by setting 'disabled' +# to true +# +################################################################################ +# with monitoring enabled, the following systems are in place: +# +# 1. Sentry (https://sentry.io) monitoring of both Server Manager's backend +# code and frontend javascript. This lets us see application errors when +# they occur. +# +# 2. Google Analytics (https://analytics.google.com) tracking, so we can see how +# many people use Server Manager, when they use it and where they are in +# the world. +# +# once again, if you do not wish for Server Manager to do these things, simply +# set 'disabled' to true and monitoring will not take place. +################################################################################ +monitoring: + disabled: false diff --git a/docker-compose.yml b/docker-compose.yml index e9888e3..c48f8fc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,9 +16,9 @@ services: - /mnt/POOL/apps/ac-evo-servermanager/license.json:/app/license.json ports: - - "9700:9700/tcp" - - "9700:9700/udp" - - "8080:8080/tcp" + - "9800:9700/tcp" + - "9800:9700/udp" + - "8087:8080/tcp" volumes: acevo_steam: diff --git a/entrypoint.sh b/entrypoint.sh index 2601227..74ed9b0 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -3,13 +3,26 @@ set -e : "${ACEVO_APP_ID:=4564210}" -# Install/update anonymously +if [ -z "$STEAM_USERNAME" ] || [ -z "$STEAM_PASSWORD" ]; then + echo "ERROR: STEAM_USERNAME and STEAM_PASSWORD must be set." + exit 1 +fi + +echo "[----] Fixing permissions on /app..." +# Fix ALL permissions the manager needs +chown -R steam:steam /app 2>/dev/null || true + +echo "[----] Launching SteamCMD update..." + "${STEAMCMD_DIR}/steamcmd.sh" \ - +login anonymous \ +force_install_dir "${ACEVO_INSTALL_DIR}" \ + +login "$STEAM_USERNAME" "$STEAM_PASSWORD" \ +app_update "${ACEVO_APP_ID}" validate \ +quit -# Start Emperor Servers AC Evo Server Manager +echo "[----] AC Evo server updated." + cd /app -node dist/index.js + +echo "[----] Starting AC Evo Server Manager..." +exec ./acevo-server-manager