installer: orginize bootstrapper, improve service IP handling
diff --git a/core/installer/repoio.go b/core/installer/repoio.go
index ec7981c..41c479f 100644
--- a/core/installer/repoio.go
+++ b/core/installer/repoio.go
@@ -7,6 +7,7 @@
 	"io/fs"
 	"io/ioutil"
 	"net"
+	"net/netip"
 	"path"
 	"path/filepath"
 	"time"
@@ -17,9 +18,12 @@
 	gitssh "github.com/go-git/go-git/v5/plumbing/transport/ssh"
 	"golang.org/x/crypto/ssh"
 	"sigs.k8s.io/yaml"
+
+	"github.com/giolekva/pcloud/core/installer/soft"
 )
 
 type RepoIO interface {
+	Addr() netip.AddrPort
 	Fetch() error
 	ReadConfig() (Config, error)
 	ReadAppConfig(path string) (AppConfig, error)
@@ -39,17 +43,21 @@
 }
 
 type repoIO struct {
-	repo   *git.Repository
+	repo   *soft.Repository
 	signer ssh.Signer
 }
 
-func NewRepoIO(repo *git.Repository, signer ssh.Signer) RepoIO {
+func NewRepoIO(repo *soft.Repository, signer ssh.Signer) RepoIO {
 	return &repoIO{
 		repo,
 		signer,
 	}
 }
 
+func (r *repoIO) Addr() netip.AddrPort {
+	return r.repo.Addr.Addr
+}
+
 func (r *repoIO) Fetch() error {
 	err := r.repo.Fetch(&git.FetchOptions{
 		RemoteName: "origin",