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
|
# 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
|
## Screenshots
|
||||||

|

|
||||||
@@ -22,6 +22,8 @@ The following projects are used by Gaseous
|
|||||||
## Discord Server
|
## Discord Server
|
||||||
[](https://discord.gg/Nhu7wpT3k4)
|
[](https://discord.gg/Nhu7wpT3k4)
|
||||||
|
|
||||||
|
# Setup
|
||||||
|
|
||||||
## Configuration File
|
## 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).
|
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.
|
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
|
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
|
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
|
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.
|
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
|
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
|
3. Clone the submodules with the command ```git submodule update --init```
|
||||||
4. Run the command "docker-compose up --file docker-compose-build.yml -d"
|
4. Open the docker-compose-build.yml file and edit the igdbclientid and igdbclientsecret to the values retrieved from your IGDB account
|
||||||
5. Connect to the host on port 5198
|
5. Run the command "docker-compose up --file docker-compose-build.yml -d"
|
||||||
|
6. Connect to the host on port 5198
|
||||||
|
|
||||||
## Adding Content
|
## Source
|
||||||
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.
|
### 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.
|
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
|
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
|
2. Extract the archive
|
||||||
3. Copy the DAT files to ~/.gaseous-server/Data/Signatures/TOSEC/
|
3. Copy the DAT files to ~/.gaseous-server/Data/Signatures/TOSEC/
|
||||||
|
|
||||||
### Adding game image files
|
### MAME Arcade
|
||||||
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.
|
1. Download the DAT files from the source website. For example; from https://www.progettosnaps.net/dats/MAME
|
||||||
2. Copy the file to ~/.gaseous-server/Data/Import
|
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:
|
Image to game matching follows the following order of operations, stopping the process at the first match:
|
||||||
### Get the file signature
|
### Get the file signature
|
||||||
1. Attempt a hash search
|
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
|
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
|
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
|
### 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
|
1. Add the full name of the image
|
||||||
2. Add the name of the image with any " - " replaced by ": "
|
2. Add the name of the image with any " - " replaced by ": "
|
||||||
3. Add the name of the image with text after a " - " removed
|
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
|
1. "where" - exact match as the search candidate
|
||||||
2. "wherefuzzy" - partial match using wildcards
|
2. "wherefuzzy" - partial match using wildcards
|
||||||
3. "search" - uses a more flexible search method
|
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