one_click_kag_server is a program which tries to fully automate the creation of a King Arthur's Gold server.

Related tags

General Utilitieskag
Overview

one_click_kag_server

one_click_kag_server is a program which tries to fully automate the creation of a King Arthur's Gold server.

It will:

  • Create a virtual machine for you on DigitalOcean
  • Configure the machine to run KAG
  • Create SSH keys
  • Upload and setup mods
  • Setup security configuration such as list of admins
  • Deploy the KAG server with automatic restarts enabled

It can also help with common maintenance tasks such as:

  • Restarting the server with different configuration, such as new mods
  • Viewing the server logs
  • Opening a TCPR console
  • Opening an SSH connection to the server

Everything can be configured from a single config file (see config.yaml).

This is a viable alternative to running a server on your local machine, without the hassle of setting up port forwarding etc. It's also an alternative to dedicated KAG hosting sites such as https://gshost.us/, with the advantage of costing less and not charging based on configuration such as max players. For example, a minimum spec server on DigitalOcean costs $0.007/hour or $5/month (see here). Since this project makes it easy to create and delete servers, you may want to run a more expensive, powerful machine for just a couple of hours and then delete it when you're done.

kagtcprlib example

An admin interface for RCON access can be deployed with the rcon command, using kagtcprlib.

Contact Eluded#1367 on Discord if you have any feedback or need help getting set up.

Instructions

Setup

Before using one_click_kag_server, there are a few things to setup.

  1. Install Python (3.7+) on your system. https://www.python.org/downloads/
  2. Clone this repository. If you don't have Git installed you can also click Code -> Download ZIP from GitHub.
  3. Install one_click_kag_server requirements. Open a terminal in this directory and run pip install -r requirements.txt
  4. Make an account on DigitalOcean. See https://cloud.digitalocean.com/registrations/new
  5. Setup a payment method on DigitalOcean
  6. Create an API token on DigitalOcean.
    • Go to API
    • Click Generate New Token
    • Choose a name for the token and give it both read and write scope

Estimated time: ~10 minutes.

Creating a server

This section describes how to create a server, assuming you have followed the setup instructions above.

  1. Edit config.yaml with a text editor to configure your server.
    • secrets
      • digitalocean_key the DigitalOcean API token you created earlier. Do not share this with anyone, since it gives full access to your account.
    • droplet configures the virtual machine
      • name is the name of the virtual machine (make sure it only contains characters URL-safe characters, so no spaces)
      • region is the short name (a.k.a. slug) for the DigitalOcean region to deploy the server in. If you want a US based server you can leave it as nyc1. For an EU server you could try ams3. For a full list of possible regions see https://slugs.do-api.dev/ (open the Regions tab).
      • image is the type of virtual machine to deploy. Don't change this unless you know what you're doing.
      • size_slug is the size of the machine to deploy. Think about this carefully because there are many options, though more powerful machines are more expensive. For a full list of possible sizes see https://slugs.do-api.dev/ (open the Droplet Sizes tab).
      • backups is whether or not to configure backups. You shouldn't need them, since it's so easy just to delete and re-create your server later.
    • kag configures the KAG server
      • autoconfig can contain any regular option from KAG's autoconfig.cfg
        • sv_name the name of the server
        • sv_info the server description
        • sv_maxplayers the max number of players
        • sv_gamemode the gamemode (e.g. TDM or CTF)
        • sv_register whether to list the server publicly
        • sv_password the password to connect to the server (can be empty for a public server)
        • sv_rconpassword the RCON password for the server
        • security_seclevs path to seclevs file. Don't change this.
      • mods is a list of mods to use. If you add a mod here, also copy it into the Mods directory in this project.
      • security
        • superadmins list of usernames of superadmins
        • admins list of usernames of admins
  2. Open a terminal in this directory and run python -m one_click_kag_server.main up to deploy the server.
    • You should see a bunch of log messages whilst the server is being configured.
    • After around 2 minutes the server should be ready, and you should see a message saying DONE. Server running at {ip_address}. Your server should be ready to play on.

If you wish to have multiple config files with different names then you can pass the --config-file option to switch between them.

Remember to destroy the droplet with one_click_kag_server down once you've finished with the server, since it will be costing you money as long as it's running.

If you have any issues with the above then please report them to me on Discord (Eluded#1367).

Commands

one_click_kag_server offers a few different commands for maintenance of the server.

up

Run python -m one_click_kag_server.main up to deploy the virtual machine and start KAG.

down

Run python -m one_click_kag_server.main down to destroy the virtual machine.

restart-kag

Run python -m one_click_kag_server.main restart-kag to restart the KAG server. This will also upload any new mods or configuration, for example if you've changed autoconfig in config.yaml.

kag-logs

Run python -m one_click_kag_server.main kag-logs to view the KAG logs in real-time.

ssh

Run python -m one_click_kag_server.main ssh to open an SSH connection to the server. This requires SSH to be installed on your system.

rcon

Run python -m one_click_kag_server.main rcon to open a web based RCON client for remote administration of the KAG server.

Important notes

State

Information about the server is stored in a state file (by default state.pkl in this directory). Every time one_click_kag_server runs, this file is updated. If you delete or move the file then information about the server will be lost, and one_click_kag_server will create a brand new server if you run it again. If you lose your state file, you may need to manually login to DigitalOcean and delete your droplet(s). Also, if you want to deploy multiple servers then you may need multiple state files (use the --state-file argument to change this.)

SSH Keys

one_click_kag_server creates a new SSH key pair for virtual machines access, and uploads this to your DigitalOcean account. These keys can be found under ssh_keys/. If you want to access the server with some other SSH client then you need to use this key pair. For example $ ssh -i ssh_keys/one_click_kag_server_aa0ff419 root@$SERVER_HOST.

Owner
Benjamin Gorman
Benjamin Gorman
produces PCA on genotypes from fasta files (popPhyl's ID format)

popPhyl_PCA Performs PCA of genotypes. Works in two steps. 1. Input file A single fasta file containing different loci, in different populations/speci

camille roux 2 Oct 08, 2021
✨ Un juste prix totalement fait en Python par moi, et en français.

Juste Prix ❗ Un juste prix totalement fait en Python par moi, et en français. 🔮 Avec l'utilisation du module "random", j'ai pu faire un choix aléatoi

MrGabin 3 Jun 06, 2021
Raganarok X: Next Generation Data Dump

Raganarok X Data Dump Raganarok X: Next Generation Data Dump More interesting Files File Name Contains en_langs All the variables you need in English

14 Jul 15, 2022
Automatic generator of readmes for git repositories (Includes file' listing)

Readme Generator We are bored of write the same things once and once again. We trust in the comments made inside of our files, and we decided to autom

Natalia Vera Duran 6 Jul 20, 2021
Generate random german words

Generate random german words / Generiere zufällige deutsche Wörter Getting Started Pip install with pip install zufallsworte Install the library with

Maximilian Freitag 5 Mar 24, 2022
A small utility that sorts your files.

FileSorter A small utility that sorts your files. TODO: Scan directory to find files(thanks @corruptmemry for this!) Split extensions to determine fil

2 Jun 16, 2022
convert a dict-list object from / to a typed object(class instance with type annotation)

objtyping 带类型定义的对象转换器 由来 Python不是强类型语言,开发人员没有给数据定义类型的习惯。这样虽然灵活,但处理复杂业务逻辑的时候却不够方便——缺乏类型检查可能导致很难发现错误,在IDE里编码时也没

Song Hui 15 Dec 22, 2022
A simple tool to move and rename Nvidia Share recordings to a more sensible format.

A simple tool to move and rename Nvidia Share recordings to a more sensible format.

Jasper Rebane 8 Dec 23, 2022
Python based tool to extract forensic info from EventTranscript.db (Windows Diagnostic Data)

EventTranscriptParser EventTranscriptParser is python based tool to extract forensically useful details from EventTranscript.db (Windows Diagnostic Da

P. Abhiram Kumar 24 Nov 18, 2022
A python package for your Kali Linux distro that find the fastest mirror and configure your apt to use that mirror

Kali Mirror Finder Using Single Python File A python package for your Kali Linux distro that find the fastest mirror and configure your apt to use tha

MrSingh 6 Dec 12, 2022
Create password - Generate Random Password with Passphrase

Generate Random Password with Passphrase This is a python code to generate stron

1 Jan 18, 2022
Aurin - A quick AUR installer for Arch Linux. Install packages from AUR website in a click.

Aurin - A quick AUR installer for Arch Linux. Install packages from AUR website in a click.

Suleman 51 Nov 04, 2022
Python code to generate and store certificates automatically , using names from a csv file

WOC-certificate-generator Python code to generate and store certificates automatically , using names from a csv file IMPORTANT In order to make the co

Google Developer Student Club - IIIT Kalyani 10 May 26, 2022
Finger is a function symbol recognition engine for binary programs

Finger is a function symbol recognition engine for binary programs

332 Jan 01, 2023
A python lib for generate random string and digits and special characters or A combination of them

A python lib for generate random string and digits and special characters or A combination of them

Torham 4 Nov 15, 2022
An OData v4 query parser and transpiler for Python

odata-query is a library that parses OData v4 filter strings, and can convert them to other forms such as Django Queries, SQLAlchemy Queries, or just plain SQL.

Gorilla 39 Jan 05, 2023
✨ Un code pour voir les disponibilités des vaccins contre le covid totalement fait en Python par moi, et en français.

Vaccine Notifier ❗ Un chois aléatoire d'un article sur Wikipedia totalement fait en Python par moi, et en français. 🔮 Grâce a une requète API, on peu

MrGabin 3 Jun 06, 2021
New time-based UUID formats which are suited for use as a database key

uuid6 New time-based UUID formats which are suited for use as a database key. This module extends immutable UUID objects (the UUID class) with the fun

26 Dec 30, 2022
一款不需要买代理来减少扫网站目录被封概率的扫描器,适用于中小规格字典。

PoorScanner使用说明书 -工具在不同环境下可能不怎么稳定,如果有什么问题恳请大家反馈。说明书有什么错误的地方也大家欢迎指正。 更新记录 2021.8.23 修复了云函数主程序 gitee上传文件接口写错了的BUG(之前把自己的上传地址写死进去了,没从配置文件里读) 更新了说明书 PoorS

14 Aug 02, 2022
Python Random Number Genrator

This Genrates Random Numbers. This Random Number Generator was made using python. This software uses Time and Random extension. Download the EXE file and run it to get your answer.

Krish Sethi 2 Feb 03, 2022