Dedicated server with Steam is a joke

I think you forgot to add all needed modules “OnlineSubsystemUtils”.

PublicDependencyModuleNames.AddRange(new string] { "Core", "CoreUObject", "Engine", "InputCore", **"OnlineSubsystem","OnlineSubsystemUtils"});**

In YourProject.h

#include "Online.h"
#include "OnlineSubsystem.h"
#include "OnlineSubsystemUtils.h"

Try that first

Edit: I think your error is .

IOnlineSubsystem* const OnlineSub = IOnlineSubsystem::Get();
if (OnlineSub)
{ ......
// Belive it should be 
IOnlineSubsystem* OnlineSub = IOnlineSubsystem::Get();

// And you can check for it like so.
if (!IOnlineSubsystem::DoesInstanceExist("Steam"))
	UE_LOG(YourOnlineSessionLog, Log, TEXT("FAILED: To find steam module instance."));

Also you need to bind the delegates for CreateSession().
The task is async and will call CreateSessionCompleted Delegate when complete.
And then you must call StartSession() and bind delegates when complete the session should be available online.

Edit: Just found this on the wiki it should help you out.

Hope it helps.