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 :
- Réattacher la session pour vérifier renterd :
tmux attach -t renterd
Pour arrêter renterd proprement :
- Attachez-vous à la session tmux (voir ci-dessus), puis pressez :
Ctrl + c
puis tapez :
exit
- Lister toutes les sessions tmux :
tmux ls
- Supprimer totalement la session tmux si nécessaire :
tmux kill-session -t renterd
↑ Haut de page