Update installation documentation to include bare metal installs (#89)
* Updated documentation * Fixed typo in documentation * Updated incorrect git submodule update command * Added request for issues if new DAT support is requested
This commit is contained in:
97
README.MD
97
README.MD
@@ -1,6 +1,6 @@
|
||||
# Gaseous Server
|
||||
|
||||
This is the server for the Gaseous system. All your games and metadata are stored within.
|
||||
This is the server for the Gaseous system. It offers ROM and title management, as well as some basic in browser emulation of those ROM's.
|
||||
|
||||
## Screenshots
|
||||

|
||||
@@ -22,6 +22,8 @@ The following projects are used by Gaseous
|
||||
## Discord Server
|
||||
[](https://discord.gg/Nhu7wpT3k4)
|
||||
|
||||
# Setup
|
||||
|
||||
## Configuration File
|
||||
When Gaseous-Server is started for the first time, it creates a configuration file at ~/.gaseous-server/config.json if it doesn't exist. Some values can be filled in using environment variables (such as in the case of using docker).
|
||||
|
||||
@@ -60,45 +62,103 @@ When Gaseous-Server is started for the first time, it creates a configuration fi
|
||||
|
||||
```
|
||||
|
||||
## Deploy with Docker
|
||||
## Docker
|
||||
### Deploy with the prebuilt Docker image
|
||||
Dockerfile and docker-compose.yml files have been provided to make deployment of the server as easy as possible.
|
||||
1. Download the docker-compose.yml file
|
||||
2. Open the docker-compose.yml file and edit the igdbclientid and igdbclientsecret to the values retrieved from your IGDB account
|
||||
3. Run the command "docker-compose up -d"
|
||||
3. Run the command ```docker-compose up -d```
|
||||
4. Connect to the host on port 5198
|
||||
|
||||
## Build and Deploy with Docker
|
||||
### Build and deploy a Docker image from source
|
||||
Dockerfile and docker-compose-build.yml files have been provided to make deployment of the server as easy as possible.
|
||||
1. Clone the repo with "git clone https://github.com/gaseous-project/gaseous-server.git"
|
||||
1. Clone the repo with ```git clone https://github.com/gaseous-project/gaseous-server.git```
|
||||
2. Change into the gaseous-server directory
|
||||
3. Open the docker-compose-build.yml file and edit the igdbclientid and igdbclientsecret to the values retrieved from your IGDB account
|
||||
4. Run the command "docker-compose up --file docker-compose-build.yml -d"
|
||||
5. Connect to the host on port 5198
|
||||
3. Clone the submodules with the command ```git submodule update --init```
|
||||
4. Open the docker-compose-build.yml file and edit the igdbclientid and igdbclientsecret to the values retrieved from your IGDB account
|
||||
5. Run the command "docker-compose up --file docker-compose-build.yml -d"
|
||||
6. Connect to the host on port 5198
|
||||
|
||||
## Adding Content
|
||||
While games can be added to the server without them, it is recommended adding some signature DAT files beforehand to allow for better matching of ROM to game.
|
||||
## Source
|
||||
### Build and deploy
|
||||
1. Install and configure a MySQL or MariaDB instance
|
||||
2. Install the dotnet 7.0 packages appropriate for your operating system
|
||||
* See: https://learn.microsoft.com/en-us/dotnet/core/install/linux
|
||||
3. Create a database user with permission to create a databse. Gaseous will create the new database and apply the database schema on it's first startup.
|
||||
4. Clone the repo with ```git clone https://github.com/gaseous-project/gaseous-server.git```
|
||||
5. Change into the gaseous-server directory
|
||||
6. As the main branch is the development branch, you might want to change to a stable version - these are tagged with a version number. For example to change to the 1.5.0 release, use the command ```git checkout v1.5.0```
|
||||
* Check the releases page for the version you would like to run: https://github.com/gaseous-project/gaseous-server/releases
|
||||
7. Clone the submodules with the command ```git submodule update --init --recursive```
|
||||
* This command will clone the code that the server uses from other projects (currently only EmulatorJS)
|
||||
8. Create a directory in the home directory of the user that will run the server. For example, if running as the user ```gaseous```, create the directory ```/home/gaseous/.gaseous-server```
|
||||
9. Change into the ```.gaseous-server``` directory created in the previous step
|
||||
10. Copy the JSON from the config file above into a new file named ```config.json```
|
||||
11. Update the database section with the database server hostname, username, password, and port
|
||||
12. Compile the server by changing back to the repo cloned earlier and executing:
|
||||
* ```dotnet restore "gaseous-server/gaseous-server.csproj"```
|
||||
* ```dotnet publish "gaseous-server/gaseous-server.csproj" --use-current-runtime --self-contained false -c Release -o <output directory>```
|
||||
* replace ```<output directory>``` with the directory of your choosing. The compiled application will be copied there. For this example we'll use ```/opt/gaseous-server```
|
||||
13. The server can then be started by executing ```dotnet /opt/gaseous-server/gaseous-server.dll```
|
||||
* If you would like the server to run on a different ip address and port (for example 0.0.0.0:8080), add the --urls argument: ```dotnet /opt/gaseous-server/gaseous-server.dll --urls http://0.0.0.0:8080```
|
||||
|
||||
### Updating from source
|
||||
1. Stop the server
|
||||
2. Switch to the source directory
|
||||
3. Update your repo:
|
||||
* If running from the main branch, run ```git pull``` to update the repo
|
||||
* If running from another branch or tag, run:
|
||||
* ```git fetch```
|
||||
* ```git checkout <branch or tag name>```
|
||||
4. Update the submodules with ```git submodule update --recursive```
|
||||
5. Run steps 12 and 13 from the above Build guide
|
||||
|
||||
# Adding Content
|
||||
While games can be added to the server without them, it is recommended adding some signature DAT files beforehand to allow for better matching of ROMs to games.
|
||||
|
||||
These signature DAT files contain a list of titles with hashes for many of the ROM images that have been found by the community.
|
||||
|
||||
Currently only TOSEC is supported, though more will be added.
|
||||
Currently supported DAT's:
|
||||
* TOSEC: https://www.tosecdev.org/downloads/category/56-2023-01-23
|
||||
* MAME Arcade and MAME Mess: https://www.progettosnaps.net/dats/MAME
|
||||
|
||||
### Adding signature DAT files
|
||||
If there are other DAT's you'd like to see support for, please raise an issue with a link to the DAT's.
|
||||
|
||||
## Adding signature DAT files
|
||||
### TOSEC
|
||||
1. Download the DAT files from the source website. For example; from https://www.tosecdev.org/downloads/category/56-2023-01-23
|
||||
2. Extract the archive
|
||||
3. Copy the DAT files to ~/.gaseous-server/Data/Signatures/TOSEC/
|
||||
|
||||
### Adding game image files
|
||||
1. Ensure your game image file is unzipped, and clearly named. Attempting a search for the game name on https://www.igdb.com can help with file naming. If a hash search is unsuccessful, Gaseous will fall back to attempting to search by the file name.
|
||||
2. Copy the file to ~/.gaseous-server/Data/Import
|
||||
### MAME Arcade
|
||||
1. Download the DAT files from the source website. For example; from https://www.progettosnaps.net/dats/MAME
|
||||
2. Extract the archive
|
||||
3. Copy the file name "MAME 0.257 (arcade).dat" files to ~/.gaseous-server/Data/Signatures/MAME Arcade/
|
||||
|
||||
### MAME MESS
|
||||
1. Download the DAT files from the source website. For example; from https://www.progettosnaps.net/dats/MAME
|
||||
2. Extract the archive
|
||||
3. Copy the file name "MAME 0.257 (mess).dat" files to ~/.gaseous-server/Data/Signatures/MAME MESS/
|
||||
|
||||
# Adding Game Images
|
||||
1. Files can be presented as either stand alone files, or as zip files - currently 7z is unsupported.
|
||||
2. Name the file appropriately.
|
||||
* Attempting a search for the game name on https://www.igdb.com can help with file naming. If a hash search is unsuccessful, Gaseous will fall back to attempting to search by the file name.
|
||||
3. Add the file to the server:
|
||||
* Click the Upload button in the top right of the main Gaseous web page, and drag the files into the modal. The files will be uploaded and analyzed.
|
||||
* Copy the file to ~/.gaseous-server/Data/Import
|
||||
|
||||
# Game Image Title Matching
|
||||
Image to game matching follows the following order of operations, stopping the process at the first match:
|
||||
### Get the file signature
|
||||
1. Attempt a hash search
|
||||
2. Attempt to search the signature database for a rom matching the file name - sometimes the hash can not be matched as a highscore table for example was saved to the image
|
||||
3. Attempt to parse the file name - clues such as the extension being used to define which platform the file belongs to are used to create a search criteria
|
||||
|
||||
**Note**: If the file being scanned is a zip, the file will be extracted and searched. The first file whose signature can be found will be used to match the entire zip archive - be sure that the zip only contains files related to one game.
|
||||
|
||||
### Create a list of search candidates
|
||||
Before beginning, remove any version numbers.
|
||||
Before beginning, remove any version numbers, and anything in the search string that is between ()
|
||||
1. Add the full name of the image
|
||||
2. Add the name of the image with any " - " replaced by ": "
|
||||
3. Add the name of the image with text after a " - " removed
|
||||
@@ -109,5 +169,8 @@ Loop through each of the search candidates searching using:
|
||||
1. "where" - exact match as the search candidate
|
||||
2. "wherefuzzy" - partial match using wildcards
|
||||
3. "search" - uses a more flexible search method
|
||||
4. "searchNoPlatform" - uses the "search" method, but does not constrain the search to the determined platform
|
||||
|
||||
Note: that if more than one result is found, the image will be set as "Unknown" as there is no way for Gaseous to know which title is the correct one.
|
||||
**Note**: If more than one result is found, the seach will loop through the returned results:
|
||||
* If an exact (case-insensitive) match is found, that result is used for the match
|
||||
* If still no match, the image will be set as "Unknown" as there is no way for Gaseous to know which title is the correct one.
|
||||
|
Reference in New Issue
Block a user