func NewServer(conf *Config) (*Server, error) {
	return NewServerWithLogger(conf, log.Default())
}
NewServer creates a new Server based on the parameters it receives.
package server
import (
	"context"
	"crypto/tls"
	"net/http"
	"os"
	"time"
	"github.com/bbva/qed/api/apihttp"
	"github.com/bbva/qed/api/mgmthttp"
	"github.com/bbva/qed/consensus"
	"github.com/bbva/qed/crypto/sign"
	"github.com/bbva/qed/crypto/tlsutil"
	"github.com/bbva/qed/gossip"
	"github.com/bbva/qed/log"
	"github.com/bbva/qed/metrics"
	"github.com/bbva/qed/protocol"
	"github.com/bbva/qed/storage/rocks"
	"github.com/prometheus/client_golang/prometheus"
)
type Server struct {
	conf               *Config
	bootstrap          bool  
	httpServer         *http.Server
	mgmtServer         *http.Server
	raftNode           *consensus.RaftNode
	metrics            *serverMetrics
	metricsServer      *metrics.Server
	prometheusRegistry *prometheus.Registry
	signer             sign.Signer
	sender             *Sender
	agent              *gossip.Agent
	snapshotsCh        chan *protocol.Snapshot
	log                log.Logger
}