Compiler Sia renterd sur OpenIndiana/OmniOSce

Nous allons builder l'application "renterd" de Sia pour le stockage de données sur le réseau décentralisé.
Il y a plusieurs façons de le faire.

On pourrait également créer un service, mais nous allons rester simple ici et lancer renterd dans un tmux à chaque besoin :


1. Installation des prérequis

En tant que root, installez les dépendances nécessaires :

- Sur OpenIndiana

pkg install pkg:/developer/golang \
 pkg:/developer/versioning/git \
 pkg:/developer/gcc-14 \
 pkg:/terminal/tmux

- Sur OmniOSce

pkg install pkg:/ooce/developer/go-124 \
 pkg:/developer/versioning/git \
 pkg:/developer/gcc14 \
 pkg:/terminal/tmux

2. Compilation du logiciel renterd

Toujours en root, exécutez :

cd /tmp
git clone https://github.com/SiaFoundation/renterd.git
cd renterd
go install github.com/mattn/go-sqlite3
go mod tidy

-------------------------------------------------------------------------

Comment résoudre le problème spécifique à bbolt version 1.4.1 (inutile aujourd'hui, nous sommes à la 1.4.2.. Je laisse cet encart pour archive)

Lorsque l'on compile BoltDB (bbolt) sur Solaris (ou sur une architecture non supportée directement, comme OpenIndiana ou OmniOSce), une constante nommée maxMapSize est parfois absente dans le fichier spécifique à cette plateforme (bolt_solaris.go).
Cette constante définit la taille maximale permise par le système pour les fichiers mappés en mémoire (via mmap).

L'absence de cette constante entraîne une erreur de compilation du type :

undefined array length maxMapSize

Pour résoudre ce problème, il suffit simplement d'ouvrir le fichier :

/root/go/pkg/mod/go.etcd.io/bbolt@v1.4.1/bolt_solaris.go

et d'insérer la constante suivante après les import

const maxMapSize = 0xFFFFFFFFFFFF // 256TB

Voici ce que donne le début du fichier après l'ajout de la constante :

package bbolt

import (
 "fmt"
 "syscall"
 "time"
 "unsafe"
 "golang.org/x/sys/unix"
)

const maxMapSize = 0xFFFFFFFFFFFF

// flock acquires an advisory lock on a file descriptor.
func flock(db *DB, exclusive bool, timeout time.Duration) error {

-------------------------------------------------------------------------

Compiler :

cd /tmp/renterd
go build -v ./...
cd cmd/renterd
go build

La compilation est maintenant complète.


3. Installation des fichiers binaires

Toujours en root, exécutez ces commandes :

mkdir -p /opt/renterd/bin
mv /tmp/renterd/* /opt/renterd/
cp /opt/renterd/cmd/renterd/renterd /opt/renterd/bin/

4. Création d'un utilisateur sécurisé dédié

En root, créez un utilisateur système sécurisé renterd avec groupe dédié :

groupadd renterd
useradd -g renterd -d /var/empty -s /bin/bash -c "renterd Daemon" renterd

Appliquez strictement les permissions suivantes pour assurer la sécurité :

chown -R renterd:renterd /opt/renterd
chmod -R 750 /opt/renterd

5. Lancement manuel sécurisé via tmux

Toujours en root, exécutez ces commandes précisément :

a) Lancez une nouvelle session tmux :

tmux new -s renterd

b) Dans la session tmux, démarrez explicitement le daemon renterd :

usermod -s /bin/bash renterd
su renterd -c 'cd /opt/renterd && /opt/renterd/bin/renterd'

Lors de ce premier démarrage, renterd vous demandera interactivement de définir un mot de passe administrateur pour accéder à l'interface web ainsi que votre seed si vous en possédez déjà un.


6. Détachement et exécution en arrière-plan

Après le démarrage réussi de renterd dans votre session tmux, détachez cette session pour laisser renterd actif :

Ctrl + b puis d

Votre programme continuera à tourner en arrière-plan.


7. Sécurisation finale de l'utilisateur dédié (recommandé)

Une fois renterd lancé et configuré, sécurisez davantage l'utilisateur dédié en supprimant son shell interactif :

usermod -s /bin/false renterd

Commandes utiles pour gérer renterd avec tmux :

tmux attach -t renterd

Pour arrêter renterd proprement :

Ctrl + c

puis tapez :

exit
tmux ls
tmux kill-session -t renterd


↑ Haut de page