production

package
v0.69.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 14, 2025 License: AGPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ReadBranchPreference

func ReadBranchPreference(debrosDir string) string

ReadBranchPreference reads the stored branch preference from disk

func SaveBranchPreference

func SaveBranchPreference(debrosDir, branch string) error

SaveBranchPreference saves the branch preference to disk

func ValidateClusterSecret

func ValidateClusterSecret(secret string) error

ValidateClusterSecret ensures a cluster secret is 32 bytes of hex

Types

type ArchitectureDetector

type ArchitectureDetector struct{}

ArchitectureDetector detects the system architecture

func (*ArchitectureDetector) Detect

func (ad *ArchitectureDetector) Detect() (string, error)

Detect returns the detected architecture as a string usable for downloads

type BinaryInstaller

type BinaryInstaller struct {
	// contains filtered or unexported fields
}

BinaryInstaller handles downloading and installing external binaries

func NewBinaryInstaller

func NewBinaryInstaller(arch string, logWriter interface{}) *BinaryInstaller

NewBinaryInstaller creates a new binary installer

func (*BinaryInstaller) GetClusterPeerMultiaddr

func (bi *BinaryInstaller) GetClusterPeerMultiaddr(clusterPath string, nodeIP string) (string, error)

GetClusterPeerMultiaddr reads the IPFS Cluster peer ID and returns its multiaddress Returns format: /ip4/<ip>/tcp/9098/p2p/<cluster-peer-id>

func (*BinaryInstaller) InitializeIPFSClusterConfig

func (bi *BinaryInstaller) InitializeIPFSClusterConfig(nodeType, clusterPath, clusterSecret string, ipfsAPIPort int, bootstrapClusterPeers []string) error

InitializeIPFSClusterConfig initializes IPFS Cluster configuration This runs `ipfs-cluster-service init` to create the service.json configuration file. For existing installations, it ensures the cluster secret is up to date. bootstrapClusterPeers should be in format: ["/ip4/<ip>/tcp/9098/p2p/<cluster-peer-id>"]

func (*BinaryInstaller) InitializeIPFSRepo

func (bi *BinaryInstaller) InitializeIPFSRepo(nodeType, ipfsRepoPath string, swarmKeyPath string, apiPort, gatewayPort, swarmPort int) error

InitializeIPFSRepo initializes an IPFS repository for a node

func (*BinaryInstaller) InitializeRQLiteDataDir

func (bi *BinaryInstaller) InitializeRQLiteDataDir(nodeType, dataDir string) error

InitializeRQLiteDataDir initializes RQLite data directory

func (*BinaryInstaller) InstallDeBrosBinaries

func (bi *BinaryInstaller) InstallDeBrosBinaries(branch string, debrosHome string, skipRepoUpdate bool) error

InstallDeBrosBinaries clones and builds DeBros binaries

func (*BinaryInstaller) InstallGo

func (bi *BinaryInstaller) InstallGo() error

InstallGo downloads and installs Go toolchain

func (*BinaryInstaller) InstallIPFS

func (bi *BinaryInstaller) InstallIPFS() error

InstallIPFS downloads and installs IPFS (Kubo) Follows official steps from https://docs.ipfs.tech/install/command-line/

func (*BinaryInstaller) InstallIPFSCluster

func (bi *BinaryInstaller) InstallIPFSCluster() error

InstallIPFSCluster downloads and installs IPFS Cluster Service

func (*BinaryInstaller) InstallOlric

func (bi *BinaryInstaller) InstallOlric() error

InstallOlric downloads and installs Olric server

func (*BinaryInstaller) InstallRQLite

func (bi *BinaryInstaller) InstallRQLite() error

InstallRQLite downloads and installs RQLite

func (*BinaryInstaller) InstallSystemDependencies

func (bi *BinaryInstaller) InstallSystemDependencies() error

InstallSystemDependencies installs system-level dependencies via apt

func (*BinaryInstaller) ResolveBinaryPath

func (bi *BinaryInstaller) ResolveBinaryPath(binary string, extraPaths ...string) (string, error)

ResolveBinaryPath finds the fully-qualified path to a required executable

type ConfigGenerator

type ConfigGenerator struct {
	// contains filtered or unexported fields
}

ConfigGenerator manages generation of node, gateway, and service configs

func NewConfigGenerator

func NewConfigGenerator(debrosDir string) *ConfigGenerator

NewConfigGenerator creates a new config generator

func (*ConfigGenerator) GenerateGatewayConfig

func (cg *ConfigGenerator) GenerateGatewayConfig(bootstrapPeers []string, enableHTTPS bool, domain string, olricServers []string) (string, error)

GenerateGatewayConfig generates gateway.yaml configuration

func (*ConfigGenerator) GenerateNodeConfig

func (cg *ConfigGenerator) GenerateNodeConfig(isBootstrap bool, bootstrapPeers []string, vpsIP string, bootstrapJoin string) (string, error)

GenerateNodeConfig generates node.yaml configuration

func (*ConfigGenerator) GenerateOlricConfig

func (cg *ConfigGenerator) GenerateOlricConfig(bindAddr string, httpPort, memberlistPort int) (string, error)

GenerateOlricConfig generates Olric configuration

type Dependency

type Dependency struct {
	Name        string
	Command     string
	Optional    bool
	InstallHint string
}

Dependency represents an external binary dependency

type DependencyChecker

type DependencyChecker struct {
	// contains filtered or unexported fields
}

DependencyChecker validates external tool availability

func NewDependencyChecker

func NewDependencyChecker(skipOptional bool) *DependencyChecker

NewDependencyChecker creates a new checker

func (*DependencyChecker) CheckAll

func (dc *DependencyChecker) CheckAll() ([]Dependency, error)

CheckAll validates all required dependencies

type ExternalToolChecker

type ExternalToolChecker struct{}

ExternalToolChecker validates external tool versions and availability

func (*ExternalToolChecker) CheckAnonAvailable

func (etc *ExternalToolChecker) CheckAnonAvailable() bool

CheckAnonAvailable checks if Anon is available (optional)

func (*ExternalToolChecker) CheckGoAvailable

func (etc *ExternalToolChecker) CheckGoAvailable() bool

CheckGoAvailable checks if Go is installed

func (*ExternalToolChecker) CheckIPFSAvailable

func (etc *ExternalToolChecker) CheckIPFSAvailable() bool

CheckIPFSAvailable checks if IPFS is available in PATH

func (*ExternalToolChecker) CheckIPFSClusterAvailable

func (etc *ExternalToolChecker) CheckIPFSClusterAvailable() bool

CheckIPFSClusterAvailable checks if IPFS Cluster Service is available

func (*ExternalToolChecker) CheckOlricAvailable

func (etc *ExternalToolChecker) CheckOlricAvailable() bool

CheckOlricAvailable checks if Olric Server is available

func (*ExternalToolChecker) CheckRQLiteAvailable

func (etc *ExternalToolChecker) CheckRQLiteAvailable() bool

CheckRQLiteAvailable checks if RQLite is available

type FilesystemProvisioner

type FilesystemProvisioner struct {
	// contains filtered or unexported fields
}

FilesystemProvisioner manages directory creation and permissions

func NewFilesystemProvisioner

func NewFilesystemProvisioner(debrosHome string) *FilesystemProvisioner

NewFilesystemProvisioner creates a new provisioner

func (*FilesystemProvisioner) EnsureDirectoryStructure

func (fp *FilesystemProvisioner) EnsureDirectoryStructure(nodeType string) error

EnsureDirectoryStructure creates all required directories nodeType can be "bootstrap", "node", or "" (empty string means create base directories only)

func (*FilesystemProvisioner) FixOwnership

func (fp *FilesystemProvisioner) FixOwnership() error

FixOwnership changes ownership of .debros directory to debros user

type OSDetector

type OSDetector struct{}

OSDetector detects the Linux distribution

func (*OSDetector) Detect

func (od *OSDetector) Detect() (*OSInfo, error)

Detect returns information about the detected OS

func (*OSDetector) IsSupportedOS

func (od *OSDetector) IsSupportedOS(info *OSInfo) bool

IsSupportedOS checks if the OS is supported for production deployment

type OSInfo

type OSInfo struct {
	ID      string // ubuntu, debian, etc.
	Version string // 22.04, 24.04, 12, etc.
	Name    string // Full name: "ubuntu 24.04"
}

OSInfo contains detected operating system information

type PrivilegeChecker

type PrivilegeChecker struct{}

PrivilegeChecker validates root access and user context

func (*PrivilegeChecker) CheckLinuxOS

func (pc *PrivilegeChecker) CheckLinuxOS() error

CheckLinuxOS verifies the process is running on Linux

func (*PrivilegeChecker) CheckRoot

func (pc *PrivilegeChecker) CheckRoot() error

CheckRoot verifies the process is running as root

type ProductionSetup

type ProductionSetup struct {
	NodePeerID string // Captured during Phase3 for later display
	// contains filtered or unexported fields
}

ProductionSetup orchestrates the entire production deployment

func NewProductionSetup

func NewProductionSetup(debrosHome string, logWriter io.Writer, forceReconfigure bool, branch string, skipRepoUpdate bool, skipResourceChecks bool, clusterSecretOverride string) *ProductionSetup

NewProductionSetup creates a new production setup orchestrator

func (*ProductionSetup) IsUpdate

func (ps *ProductionSetup) IsUpdate() bool

IsUpdate detects if this is an update to an existing installation

func (*ProductionSetup) LogSetupComplete

func (ps *ProductionSetup) LogSetupComplete(peerID string)

LogSetupComplete logs completion information

func (*ProductionSetup) Phase1CheckPrerequisites

func (ps *ProductionSetup) Phase1CheckPrerequisites() error

Phase1CheckPrerequisites performs initial environment validation

func (*ProductionSetup) Phase2ProvisionEnvironment

func (ps *ProductionSetup) Phase2ProvisionEnvironment() error

Phase2ProvisionEnvironment sets up users and filesystems

func (*ProductionSetup) Phase2bInstallBinaries

func (ps *ProductionSetup) Phase2bInstallBinaries() error

Phase2bInstallBinaries installs external binaries and DeBros components

func (*ProductionSetup) Phase2cInitializeServices

func (ps *ProductionSetup) Phase2cInitializeServices(nodeType string, bootstrapPeers []string, vpsIP string) error

Phase2cInitializeServices initializes service repositories and configurations

func (*ProductionSetup) Phase3GenerateSecrets

func (ps *ProductionSetup) Phase3GenerateSecrets(isBootstrap bool) error

Phase3GenerateSecrets generates shared secrets and keys

func (*ProductionSetup) Phase4GenerateConfigs

func (ps *ProductionSetup) Phase4GenerateConfigs(isBootstrap bool, bootstrapPeers []string, vpsIP string, enableHTTPS bool, domain string, bootstrapJoin string) error

Phase4GenerateConfigs generates node, gateway, and service configs

func (*ProductionSetup) Phase5CreateSystemdServices

func (ps *ProductionSetup) Phase5CreateSystemdServices(nodeType string, vpsIP string) error

Phase5CreateSystemdServices creates and enables systemd units

type ResourceChecker

type ResourceChecker struct{}

ResourceChecker validates system resources for production deployment

func NewResourceChecker

func NewResourceChecker() *ResourceChecker

NewResourceChecker creates a new resource checker

func (*ResourceChecker) CheckCPU

func (rc *ResourceChecker) CheckCPU() error

CheckCPU validates sufficient CPU cores (minimum 2 cores)

func (*ResourceChecker) CheckDiskSpace

func (rc *ResourceChecker) CheckDiskSpace(path string) error

CheckDiskSpace validates sufficient disk space (minimum 10GB free)

func (*ResourceChecker) CheckRAM

func (rc *ResourceChecker) CheckRAM() error

CheckRAM validates sufficient RAM (minimum 2GB total)

type SecretGenerator

type SecretGenerator struct {
	// contains filtered or unexported fields
}

SecretGenerator manages generation of shared secrets and keys

func NewSecretGenerator

func NewSecretGenerator(debrosDir string, clusterSecretOverride string) *SecretGenerator

NewSecretGenerator creates a new secret generator

func (*SecretGenerator) EnsureClusterSecret

func (sg *SecretGenerator) EnsureClusterSecret() (string, error)

EnsureClusterSecret gets or generates the IPFS Cluster secret

func (*SecretGenerator) EnsureNodeIdentity

func (sg *SecretGenerator) EnsureNodeIdentity(nodeType string) (peer.ID, error)

EnsureNodeIdentity gets or generates the node's LibP2P identity

func (*SecretGenerator) EnsureSwarmKey

func (sg *SecretGenerator) EnsureSwarmKey() ([]byte, error)

EnsureSwarmKey gets or generates the IPFS private swarm key

func (*SecretGenerator) SaveConfig

func (sg *SecretGenerator) SaveConfig(filename string, content string) error

SaveConfig writes a configuration file to disk

type StateDetector

type StateDetector struct {
	// contains filtered or unexported fields
}

StateDetector checks for existing production state

func NewStateDetector

func NewStateDetector(debrosDir string) *StateDetector

NewStateDetector creates a state detector

func (*StateDetector) CheckBinaryInstallation

func (sd *StateDetector) CheckBinaryInstallation() error

CheckBinaryInstallation checks if required binaries are in PATH

func (*StateDetector) HasIPFSData

func (sd *StateDetector) HasIPFSData() bool

HasIPFSData checks if IPFS repo is initialized

func (*StateDetector) HasRQLiteData

func (sd *StateDetector) HasRQLiteData() bool

HasRQLiteData checks if RQLite data exists

func (*StateDetector) HasSecrets

func (sd *StateDetector) HasSecrets() bool

HasSecrets checks if cluster secret and swarm key exist

func (*StateDetector) IsConfigured

func (sd *StateDetector) IsConfigured() bool

IsConfigured checks if basic configs exist

type SystemdController

type SystemdController struct {
	// contains filtered or unexported fields
}

SystemdController manages systemd service operations

func NewSystemdController

func NewSystemdController() *SystemdController

NewSystemdController creates a new controller

func (*SystemdController) DaemonReload

func (sc *SystemdController) DaemonReload() error

DaemonReload reloads the systemd daemon

func (*SystemdController) EnableService

func (sc *SystemdController) EnableService(name string) error

EnableService enables a service to start on boot

func (*SystemdController) RestartService

func (sc *SystemdController) RestartService(name string) error

RestartService restarts a service

func (*SystemdController) StartService

func (sc *SystemdController) StartService(name string) error

StartService starts a service immediately

func (*SystemdController) StatusService

func (sc *SystemdController) StatusService(name string) (bool, error)

StatusService gets the status of a service

func (*SystemdController) StopService

func (sc *SystemdController) StopService(name string) error

StopService stops a service

func (*SystemdController) WriteServiceUnit

func (sc *SystemdController) WriteServiceUnit(name string, content string) error

WriteServiceUnit writes a systemd unit file

type SystemdServiceGenerator

type SystemdServiceGenerator struct {
	// contains filtered or unexported fields
}

SystemdServiceGenerator generates systemd unit files

func NewSystemdServiceGenerator

func NewSystemdServiceGenerator(debrosHome, debrosDir string) *SystemdServiceGenerator

NewSystemdServiceGenerator creates a new service generator

func (*SystemdServiceGenerator) GenerateGatewayService

func (ssg *SystemdServiceGenerator) GenerateGatewayService(nodeType string) string

GenerateGatewayService generates the DeBros Gateway systemd unit

func (*SystemdServiceGenerator) GenerateIPFSClusterService

func (ssg *SystemdServiceGenerator) GenerateIPFSClusterService(nodeType string, clusterBinary string) string

GenerateIPFSClusterService generates the IPFS Cluster systemd unit

func (*SystemdServiceGenerator) GenerateIPFSService

func (ssg *SystemdServiceGenerator) GenerateIPFSService(nodeType string, ipfsBinary string) string

GenerateIPFSService generates the IPFS daemon systemd unit

func (*SystemdServiceGenerator) GenerateNodeService

func (ssg *SystemdServiceGenerator) GenerateNodeService(nodeType string) string

GenerateNodeService generates the DeBros Node systemd unit

func (*SystemdServiceGenerator) GenerateOlricService

func (ssg *SystemdServiceGenerator) GenerateOlricService(olricBinary string) string

GenerateOlricService generates the Olric systemd unit

func (*SystemdServiceGenerator) GenerateRQLiteService

func (ssg *SystemdServiceGenerator) GenerateRQLiteService(nodeType string, rqliteBinary string, httpPort, raftPort int, joinAddr string, advertiseIP string) string

GenerateRQLiteService generates the RQLite systemd unit

type UserProvisioner

type UserProvisioner struct {
	// contains filtered or unexported fields
}

UserProvisioner manages system user creation and sudoers setup

func NewUserProvisioner

func NewUserProvisioner(username, home, shell string) *UserProvisioner

NewUserProvisioner creates a new user provisioner

func (*UserProvisioner) CreateUser

func (up *UserProvisioner) CreateUser() error

CreateUser creates the system user

func (*UserProvisioner) SetupSudoersAccess

func (up *UserProvisioner) SetupSudoersAccess(invokerUser string) error

SetupSudoersAccess creates sudoers rule for the invoking user

func (*UserProvisioner) UserExists

func (up *UserProvisioner) UserExists() bool

UserExists checks if the system user exists

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL