fixes for standard configs
This commit is contained in:
@@ -1,84 +0,0 @@
|
|||||||
# Installing Mare Server on Ubuntu 20.04 Server LTS
|
|
||||||
|
|
||||||
## Important
|
|
||||||
- **You _will_ need a valid Certificate for the server.**
|
|
||||||
- Set one up using LetsEncrypt or use the one provided by your hoster
|
|
||||||
- The server provided is only guaranteed to run under Ubuntu 20.04 Server LTS. For anything else, you are on your own. The server is provided as a standalone .NET application which does not require .NET Core to be installed.
|
|
||||||
|
|
||||||
## Copy files over
|
|
||||||
- Connect via SCP and copy over all files to some directory
|
|
||||||
- The directory will need to be writeable by the user
|
|
||||||
|
|
||||||
## Install MSSQL Server 2019 CU
|
|
||||||
- Import GPG keys
|
|
||||||
```sh
|
|
||||||
sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
|
|
||||||
```
|
|
||||||
- Add repository
|
|
||||||
```sh
|
|
||||||
sudo add-apt-repository "$(curl https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"
|
|
||||||
```
|
|
||||||
- Install SQL Server 2019
|
|
||||||
```
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y mssql-server
|
|
||||||
```
|
|
||||||
- Run configuration
|
|
||||||
```
|
|
||||||
sudo /opt/mssql/bin/mssql-conf setup
|
|
||||||
```
|
|
||||||
- Install "3) Express"
|
|
||||||
- Set a password
|
|
||||||
- Verify server is running
|
|
||||||
```
|
|
||||||
systemctl status mssql-server --no-pager
|
|
||||||
```
|
|
||||||
- Optional: set up a separate user for Mare Synchronos
|
|
||||||
- I'll let you figure that out yourself
|
|
||||||
- The user will need database creation rights
|
|
||||||
|
|
||||||
## Configure Mare Server
|
|
||||||
- open provided appsettings.json
|
|
||||||
- edit `DefaultConnection` to `"Server=localhost;User=sa;Password=<sa password>;Database=mare;MultipleActiveResultSets=true"`
|
|
||||||
- if you created a separate user for mare on the SQL Server, specify the username and password here
|
|
||||||
- edit `CacheDirectory` and set it to a path where the file cache is supposed to be located. i.e. `/home/<user>/servercache`
|
|
||||||
- you will also need to create that folder
|
|
||||||
- optional: set Port under edit `Url` and change the `+:5000` to `+:<your port>`
|
|
||||||
|
|
||||||
- Set up `Certificate`
|
|
||||||
- Set `Path` to the certificate file path
|
|
||||||
- Set `Password` to the password of the certificate
|
|
||||||
- If the certificate file is split in private key and public, set `KeyPath` to the private key file
|
|
||||||
- Delete all unused keys from `Certificate`
|
|
||||||
|
|
||||||
## Set up Mare Synchonos Server as a Service
|
|
||||||
- create new file `/etc/systemd/system/MareSynchronosServer.service` with following contents
|
|
||||||
```
|
|
||||||
[Unit]
|
|
||||||
Description=Mare Synchronos Service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
WorkingDirectory=<path to server files>
|
|
||||||
ExecStart=<path to server files>/MareSynchronosServer
|
|
||||||
SysLogIdentifier=MareSynchronosServer
|
|
||||||
User=<the user to run the service with>
|
|
||||||
Restart=always
|
|
||||||
RestartSec=5
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
```
|
|
||||||
- Reload SystemD daemon
|
|
||||||
```
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
```
|
|
||||||
- Enable the service with
|
|
||||||
```
|
|
||||||
sudo systemctl enable MareSynchronosServer
|
|
||||||
```
|
|
||||||
- Start the service with
|
|
||||||
```
|
|
||||||
sudo systemctl start MareSynchronosServer
|
|
||||||
```
|
|
||||||
- Log in ingame and add a custom server within the Mare Synchronos Plugin configuration under the address `wss://<your server ip>:<your server port>`
|
|
||||||
- That should be it and your server ready to go and running
|
|
||||||
@@ -199,6 +199,8 @@ namespace MareSynchronosServer.Hubs
|
|||||||
UploadFileRequest req = new();
|
UploadFileRequest req = new();
|
||||||
req.FileData = ByteString.CopyFrom(await File.ReadAllBytesAsync(tempFileName).ConfigureAwait(false));
|
req.FileData = ByteString.CopyFrom(await File.ReadAllBytesAsync(tempFileName).ConfigureAwait(false));
|
||||||
File.Delete(tempFileName);
|
File.Delete(tempFileName);
|
||||||
|
req.Hash = computedHashString;
|
||||||
|
req.Uploader = AuthenticatedUserId;
|
||||||
_ = await _fileServiceClient.UploadFileAsync(req).ConfigureAwait(false);
|
_ = await _fileServiceClient.UploadFileAsync(req).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
"DbContextPoolSize": 2000,
|
"DbContextPoolSize": 2000,
|
||||||
"CdnFullUrl": "https://<url or ip to your server>/cache/",
|
"CdnFullUrl": "https://<url or ip to your server>/cache/",
|
||||||
"ServiceAddress": "http://localhost:5002",
|
"ServiceAddress": "http://localhost:5002",
|
||||||
"StaticFileServiceAddress": "http://localhost:5001"
|
"StaticFileServiceAddress": "http://localhost:5003"
|
||||||
},
|
},
|
||||||
"AllowedHosts": "*",
|
"AllowedHosts": "*",
|
||||||
"Kestrel": {
|
"Kestrel": {
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ public class FileService : MareSynchronosShared.Protos.FileService.FileServiceBa
|
|||||||
|
|
||||||
public override async Task<Empty> UploadFile(UploadFileRequest request, ServerCallContext context)
|
public override async Task<Empty> UploadFile(UploadFileRequest request, ServerCallContext context)
|
||||||
{
|
{
|
||||||
|
|
||||||
var filePath = Path.Combine(_basePath, request.Hash);
|
var filePath = Path.Combine(_basePath, request.Hash);
|
||||||
var file = await _mareDbContext.Files.SingleOrDefaultAsync(f => f.Hash == request.Hash && f.UploaderUID == request.Uploader);
|
var file = await _mareDbContext.Files.SingleOrDefaultAsync(f => f.Hash == request.Hash && f.UploaderUID == request.Uploader);
|
||||||
if (file != null)
|
if (file != null)
|
||||||
@@ -83,7 +82,7 @@ public class FileService : MareSynchronosShared.Protos.FileService.FileServiceBa
|
|||||||
public override Task<FileSizeResponse> GetFileSizes(FileSizeRequest request, ServerCallContext context)
|
public override Task<FileSizeResponse> GetFileSizes(FileSizeRequest request, ServerCallContext context)
|
||||||
{
|
{
|
||||||
FileSizeResponse response = new();
|
FileSizeResponse response = new();
|
||||||
foreach (var hash in request.Hash)
|
foreach (var hash in request.Hash.Distinct())
|
||||||
{
|
{
|
||||||
FileInfo fi = new(Path.Combine(_basePath, hash));
|
FileInfo fi = new(Path.Combine(_basePath, hash));
|
||||||
if (fi.Exists)
|
if (fi.Exists)
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ public class Startup
|
|||||||
|
|
||||||
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
||||||
{
|
{
|
||||||
app.UseStaticFiles();
|
|
||||||
app.UseHttpLogging();
|
app.UseHttpLogging();
|
||||||
|
|
||||||
app.UseRouting();
|
app.UseRouting();
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
"Endpoints": {
|
"Endpoints": {
|
||||||
"Http": {
|
"Http": {
|
||||||
"Url": "http://+:5001"
|
"Url": "http://+:5001"
|
||||||
|
},
|
||||||
|
"Gprc": {
|
||||||
|
"Protocols": "Http2",
|
||||||
|
"Url": "http://+:5003"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user