Small web project to manage Assetto Corsa Competizione servers, build on Django. Allows to manage multiple configs and multiple server instances. Works in Linux and in Windows, dunno about OSX. Currently, the web-app consists of two sub-apps * cfgs: Basically creates an autogenerated view from ACCs event.json, navigating through the object. Allows to create and edit multiple configurations, they are stored in the folder 'local_settings.CONFIGS'. * instances: Start a new ACC server instance or stop/delete running instances. Each instance uses a copy of the ACC 'server' directory, which is placed in the folder 'local_settings.INSTANCES'. ## Development ```bash git clone https://github.com/gotzl/accservermanager.git cd accservermanager/ # Configure the things in accservermanager/local_settings.py, ie the path to your ACC server files python manage.py migrate python manage.py createsuperuser python manage.py runserver ``` Now you should be able to access the service at localhost:8000. ## Dependencies ```bash pip3 install -r requirements.txt # --user ``` Windows users might want to follow the official Django install instructions. ## Deployment Follow the development instructions to deploy the app, should be good enough for our purposes... Alternatively, I've created a docker image which uses wine to run the ACC server. No modifications to the local_settings.py are necessary in this case. ```bash # Create a volume (if you didn't already create one) docker volume create accservermanager-data # fire up a container docker run -d --name accservermanager \ -e SECRET_KEY=RANDOM_SEQUENCE \ -v accservermanager-data:/data \ -v PATH_TO_ACC/server:/server \ -p 8000:8000 -p 9231:9231/udp -p 9232:9232/tcp \ gotzl/accservermanager # initiate the app and create a manager user (only neccessary at the very first start) docker exec -i -t accservermanager python3 manage.py migrate docker exec -i -t accservermanager python3 manage.py createsuperuser ``` After login, you can add more users with djangos admin pages (...:8000/admin). If you want to allow connections to the server from anywhere, use `-e ALLOWED_HOSTS='["*"]'`. This should only be used behind a proxy! Note: The build-in django webserver only serves static files in debug mode. Therefore, either set `DEBUG=True`, or use `python manage.py runserver --insecure` (this is what's done in the docker image) or collect static files with `python3 manage.py collectstatic` and let s.t. else serve these files. To make docker work with the last release of accServer.exe `ignorePrematureDisconnects` must be setted to `0` Car skins: The folder `PATH_TO_ACC/server/cars` will be symlinked into the instance environment (if it exists). ## Persistence All relevant data will be placed insided the 'local_settings.DATA_DIR' folder. In case of docker the folder is persisted outside of the container using a docker volume. This means you can delete and rebuild your container without needing to restore your settings manually. ## Compose example ```bash version: '2' services: acc: image: gotzl/accservermanager volumes: - /acc/server:/server - accservermanager-data:/data environment: # - ALLOWED_HOSTS=["*"] - SECRET_KEY= ports: - 9232:9232/tcp - 9231:9231/udp - 8000:8000 volumes: accservermanager-data: ```