Portainer OPZ2

(Beaucoup) Plus de Containers avec la OPZ2

Dans un article précédent, on installait le Logitech Media Server (LMS) en tant que container dans Docker, à l'aide de Portainer. Dans un autre article on installait squeezelite, le player audio, dans Docker + Portainer. Dans les deux cas, on avait une belle interface via un navigateur pour gérer les containers et les paramètres. Voici une copie ci-dessous de l'interface, c'est bien plus confortable que la ligne de commande (CLI), n'est ce pas ?

Petite cerise sur le gâteau, on peut aussi installer une container qui permet de gérer une page statique genre homepage pour son réseau personnel. Il existe plusieurs outils disponibles, celui qui a eu le mérite de fonctionner se nomme homer (son git). Il y a de nombreuses possibilités, mais voilà ce que ça donne :

L'application File Browser permet de proposer une interface via le navigateur sur, par exemple, un disque monté sur la OPZ2.

Cette interface peut être accédée via le réseau local, via l'extérieur par exemple avec zerotier : cela signifie que l'on peut partager un disque via l'OPZ2 et y accéder du monde entier, via le navigateur.

Selon les droits accordés à tel o tel utilisateur, on peut télécharger les fichiers du disque ou les uploader, créé un fichier ou un dossier.

Les temps de réponse sont très corrects, cela dépend surtout de la qualité de la connexion internet.

Les ressources !

Il existe une petite communauté qui s'occupe de faire vivre portainer pour la Raspberry Pi. Nous n'avons pas de Raspberry dans les mains, mais la plupart des choses proposées pour la Raspberry fonctionnent pour la OPZ2 : il ne faut pas perdre de vue néanmoins que la carte de Xunlong ne dispose que d'un maigre Giga de RAM, alors qu'une Raspberry Pi 4 commence à 2 et va jusqu'à 8.

Il existe un github pour cette communauté. Un des animateurs est Novaspirit et il a consacré plusieurs vidéos youtube au projet.

Il existe aussi un Discord très actif sur le sujet !

Installer un truc ?

La petite communauté a fabriqué des listes de containers qui s'articulent bien entre eux et qui s'installent sur une Raspberry et potentiellement sur une OPZ). En passant, avec une Raspberry qui fonctionne avec un Linux Debian, c'est peut être mieux d'installer la Debian pour la OP2.

A contrario, ce n'est pas parce que quelque chose n'est pas présent dans la liste de pi.hosted que ce n'est pas possible de l'installer en tant que container. La liste permet de mettre du liant entre les différents containers pour ceux qui ont des choses en communs.

Sur le github du projet, on trouve trois liens :

  • un pour ARM32 bits,

  • un pour ARM64 bits, qui nous intéresse

  • un dernier pour l'architecture AMD64, c'est à dire les processeurs Intel et AMD "de PC" en 64 bits.

Je recopie le lien pour faciliter un copier-coller :

https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/template/portainer-v2-arm64.json

Cette liste est à passer en paramètres à Portainer pour qu'il vous propose ensuite d'installer simplement des containers. Allez dans Settings et ensuite dans la partire App Templates, coller la liste dans la zone URL :

Ensuite dans portainer, rendez-vous dans App Templates qui est visible quand vous consultez la liste de vos containers. Et là, vous avez presque 200 containers différents proposés à votre gourmandise.

Il est possible d'installer par exemple transmission pour les torrents, Samba pour le partage de dossiers, Filezilla pour récupérer des documents de la seedbox.

Pour virer toutes les publicités, on peut installer un PiHole, ça c'est vraiment le bonheur.

On peut aussi installer des "choses sérieuses", par exemple une base de données PostgreSQL ou MySQL, un Grafana, on peut même installer un Windows 2000 (à l'époque ou Microsoft vendait des OS, pas des caisses enregistreuses numériques).

Concernant Samba, l'installation "normale" quand on découvre peut déboucher sur un carnage.

Avec Portainer, on peut essayer mais si on veut reprendre à zéro, on supprime le container et on le recrée, pas de soucis. De toutes façons c'est en faisant des erreurs que l'on apprend !

Bien entendu la liste disponible n'est pas exhaustive, par exemple LMS ou Squeezelite, le serveur et le client audio, n'y figurent pas, alors que cela fonctionne. Pour les voir dans la liste, il faut le proposer sur le Discord du projet (ou faire partie de l'équipe du github).

Quelques commandes

Ci dessous, la liste des commandes passées et quelques commentaires, en partant du système vierge. Il n'y a pas tout mais l'essentiel est là.


# Première connexion avec ssh -> il faut trouver l'ip de la carte, le password c'est orange pi

# mise à jour de l'OS

# installation de deux bricoles


ssh orangepi@orangepiIP password = orangepi


sudo apt update

sudo apt upgrade

sudo apt install bpytop

sudo apt install neofetch


# dans la session SSH lancer l'appli de configuration

# configurer la timezone et le keyboard

sudo orangepi-config

timezone

keyboard


# quand c'est ok, on reboote :

sudo reboot


---------------------- Création nouvel utilisateur

# ouvrir la session SSH avec l'utlisateur root

# on crée l'utilisateur "renaud" ou "julien" ou "bob"

# on change le passwd pour l'utilisateur root !

# on reboot

ssh root@orangepiIP password = orangepi

adduser renaud

usermod -aG sudo renaud

passwd

sudo reboot


----------------------- Monter un disque USB

# ce coup-ci on se connecte avec le nouvel utilisateur "renaud" par exemple

# on va connecter un disque USB et configurer pour qu'il soit monté à chaque démarrage


ssh renaud@orangepiIP password = orangepi

# ajout du disque usb disk, on fait la liste de ce que voit la machine

sudo fdisk -l


Disk /dev/sda: 4.55 TiB, 5000947302400 bytes, 9767475200 sectors ...

Disk model: My Passport

/dev/sda1 2048 9767473151 9767471104 4.5T Microsoft basic data


# on édite crontab pour ajouter le montage du disque au start de la machine

sudo crontab -e


# ajouter à la fin du fichier la ligne suivante :

@reboot mount /dev/sda1 /media


# ensuite ctrl+s et ctrl+x (save and exit)


# on reboot

sudo reboot


--------------------------- DOCKER


# install Docker

sudo su


apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -

add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

apt-get install docker-ce docker-ce-cli containerd.io

sudo usermod -aG docker $USER


## run docker and test (si TLS error, relancer la ligne ci-dessous jusqu'à ce que ça fonctionne )

docker run hello-world


--------------------------- PORTAINER


# installer portainer (récupère l'image et la lance sur le port 9051)

sudo docker pull portainer/portainer-ce:latest

sudo docker run -d -p 9051:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest



-------------------------- LMS

# installation du LMS pour ceux qui veulent le serveur audio dans Docker

sudo docker pull lmscommunity/logitechmediaserver:latest


-------------------------- Ajouter la liste des applications compatibles pi.hosted


# EN CHINE SANS VPN : - get a local copy of pi hosted

sudo git clone https://github.com/novaspirit/pi-hosted.git

python3 -m http.server

web browser = http://192.168.1.120:8000/pi-hosted/template/portainer-v2-arm64.json


# Dans portainer


1 - ajouter l'adresse dans Settings App Templates :

http://192.168.1.120:8000/pi-hosted/template/portainer-v2-arm64.json


2 - App Templates Menu => toutes les applications préparées pour l'installation


# Dans le reste du monde ou avec un VPN


1 - ajouter l'adresse dans Settings App Templates :

https://github.com/novaspirit/pi-hosted/blob/master/template/portainer-v2-arm64.json

2 - App Templates Menu => toutes les applications préparées pour l'installation



# installer File browser

# sur la ligne de commande (ou via portainer templates)

docker pull filebrowser/filebrowser:latest


On accède à file browser via port :8082, admin/admin

=> configurer les users pour créer un nouveau compte user admin et désactiver le compte admin


Dans Portainer, dans "Volumes" du container :

/srv bind to /media


Ce qui permet de voir le disque USB via File Browser


--------------------------------- SAMBA ?

# Installer samba => un enfer dans portainer et ça marche pas super, plus simple de faire une installation classique




--------------------------------- ZEROTIER

# Installer Zerotier sur la ligne de commande


curl -s https://install.zerotier.com | sudo bash


## then use idZerotier from zerotier website


zerotier-cli join idZerotier



-------------------------------- HOMER

# Install homer


Avant de l'installer dans portainer, il faut passer ce script sur la ligne de commande


1 - wget -qO- https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/tools/install_homer.sh | bash

2 - se connecter à Homer sur le port 8902 (pas certain par défaut)

3 - modifier le dossier /portainer/Files/Homer pour fabriquer une belle page d'accueil

4 - le mieux est d'utiliser Visual Studio Code avec une connexion SSH sur la OPZ2 via le plugin ssh FS

5 - la configuration est dans le fichier config.yml


C'est pas mieux Dashy ? Err... Dashy plante complètement la OPZ2 ! testé d'autres, Homer à la mérite de fonctionner, même si la configuration demande 5 minutes d'apprentissage



-------------------------------- SAMBA NO DOCKER + PORTAINER


# 1 - installer samba (pas dans Docker) sur la ligne de commande


sudo apt-get install samba samba-common-bin


# 2 - On va partager le dossier /media

# en éditant le conf file


sudo nano /etc/samba/smb.conf


# ajouter à la fin du fichier


[opz2share]

path = /home/pi/shared

writeable=Yes

create mask=0777

directory mask=0777

public=no


# et apprès on ajoute un utilisateur pour samba

sudo smbpasswd -a renaud


# et on redémarre le service

sudo systemctl restart smbd


------------------------------------- Filezilla

# permet de télécharger les fichiers d'une seedbox en local par exemple

# FileZilla est visible par défaut sur le port 3000 (web browser :

1 - installation via portainer

2 - dans la configuration, dans Volumes

container /media Bind

host /media

Ce qui permet de voir avec FileZilla le disque USB