Tutos en vrac

De tout et de rien...

Outils pour utilisateurs

Outils du site


mon_projet_de_serveur_personnel

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
mon_projet_de_serveur_personnel [2022/03/01 13:32] – début tuto raspi 3 serveur ncmon_projet_de_serveur_personnel [2023/02/21 18:41] (Version actuelle) – modification externe 127.0.0.1
Ligne 127: Ligne 127:
 ===== Setup complet Raspberry 3 ===== ===== Setup complet Raspberry 3 =====
  
-Récupération de [[Raspberry Pi Imager|https://www.raspberrypi.com/software/]] (v 1.7.1 lors de la rédaction de ce tuto). c'est l'outil officiel pour créer la carte sd  d'un raspi+  * Récupération de [[https://www.raspberrypi.com/software/|Raspberry Pi Imager]] (v 1.7.1 lors de la rédaction de ce tuto). C'est l'outil officiel pour créer la carte sd d'un raspi. 
 +  * Utilisation de Raspberry Pi Imager pour installer la carte sd avec Rasperry OS 32bits (anciennement Raspian) en dernière version. Ne pas hésiter à aller d'abord dans les paramètres, pour cocher l'activation automatique du ssh, définir le mot de passe web si Wifi, et mettre un mot de passe admin ! 
 +  * Création d'un fichier vide nommé "ssh" à la racine de la carte sd. 
 +  * Carte sd dans le RPI, boot. 
 +  * Récupération de l'adresse IP du RPI sur le réseau local (par exemple dans la config de la box, ou sur le raspi avec "sudo ifconfig"), de la forme 192.168.*.*, et éventuellement mise en place d'une ip statique sur le réseau local pour lui. 
 +  * Redirection des ports 80 et 443 sur le routeur pour diriger vers le raspi. 
 +  * Normalement le rpi est maintenant accessible à distance, mais il n'a pas encore de serveur web opérationnel. 
 +  * Connexion en ssh avec le RPI à partir de maintenant, pour effectuer des opérations. 
 +  * Mise à jour : 
 + 
 +  sudo apt update 
 +  sudo apt upgrade 
 +  sudo apt update 
 + 
 +  * Installation de Apache, le serveur web : 
 + 
 +  sudo apt install apache2 
 + 
 +  * Config des bons droits sur le dossier des sites web : 
 + 
 +  sudo chown -R pi:www-data /var/www/html/ 
 +  sudo chmod -R 770 /var/www/html/ 
 + 
 +  * Vérifier que le serveur Apache est opérationnel : 
 + 
 +  wget -O verif_apache.html http://127.0.0.1 & cat ./verif_apache.html 
 + 
 +  * Si vous voyez marqué à un endroit dans le code « It works! », c’est qu’Apache fonctionne. 
 +  * Le répertoire /var/www/html est le répertoire des fichiers du serveurs web, c'est là qu'il faudra mettre les fichiers qui doivent aller être online ! On peut donc déjà mettre un site en html, css et javascript, mais il manque encore PHP et MySQL. 
 +  * Installation de PHP et création d'un fichier index de test : 
 + 
 +  sudo apt install php php-mbstring 
 +  echo "<?php phpinfo(); ?>" > /var/www/html/index.php 
 + 
 +  * Allez ensuite voir le site, soit avec un navigateur sur http://127.0.0.1, soit en y faisant un wget comme précédemment (cherchez alors "PHP Version"). Si tout fonctionne, c'est bon ! 
 +  * Installation de MySQL, pour que les sites web hébergés puissent stocker des informations 
 + 
 +  sudo apt install mariadb-server php-mysql 
 + 
 +  * Connexion à la base de donnée (bdd): 
 + 
 +  sudo mysql --user=root 
 + 
 +  * Il faut maintenant supprimer puis recréer l’utilisateur root, car celui par défaut n’est utilisable que par le compte administrateur du système, et pas par les script PHP du serveur. Pour cela, une fois connecté à MySQL, lancez les commandes suivantes (remplacez password par le mot de passe de votre choix) : 
 + 
 +  DROP USER 'root'@'localhost'; 
 +  CREATE USER 'root'@'localhost' IDENTIFIED BY 'votremotdepasse'; 
 +  GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; 
 + 
 +  * C'est fini, tout est en place ! Pour une prochaine connexion, on pourra faire : 
 + 
 +  mysql --user=root --password=votremotdepasse 
 +  ou 
 +  mysql --user=root --password  (pour plus de confidentialité) 
 + 
 +  * Pour plus de praticité, on va installer phpmyadmin, une interface plus simple pour administrer les bases de données que du SQL dans la console. 
 + 
 +  sudo apt install phpmyadmin 
 + 
 +  * Choisir "no" pour l’utilisation de dbconfig-common, car on a déja configuré la bdd. Choisir PHPMyAdmin pour un serveur Apache. Pour le mot de passe root, il s’agit de celui que vous aviez utilisé pour MySQL. 
 +  * Activation du service mysqli : 
 + 
 +  sudo phpenmod mysqli 
 +  sudo /etc/init.d/apache2 restart 
 + 
 +  * Vérification du bon fonctionnement de phpmyadmin : Aller dans le navigateur à http://127.0.0.1/phpmyadmin 
 +  * Possibilité d'accéder au raspi depuis le net à l'adresse IP externe, ou de mettre en place une URL chez noip. 
 + 
 +  * Installation de NextCloud 
 +  * Quelques prérequis: 
 + 
 +  sudo apt install apache2 mariadb-server libapache2-mod-php 
 +  sudo apt install php-gd php-json php-mysql php-curl php-mbstring php-intl php-imagick php-xml php-zip 
 + 
 +  * Puis l'installation en elle-même : 
 + 
 +  cd /var/www/html 
 +  sudo wget https://download.nextcloud.com/server/releases/latest.zip 
 +  sudo unzip latest.zip 
 + 
 +  * Et les bons droits pour que le serveurs puissent accéder aux fichiers et les gérer : 
 + 
 +  sudo chmod 750 nextcloud -R 
 +  sudo chown www-data:www-data nextcloud -R 
 + 
 +  * NextCloud est pratiquement prêt à être utilisé, mais il lui faut la base de donnée MySQL. Par sécurité, on crée un couple "utilisateur + base de donnée associée" spécialement. 
 + 
 +  sudo mysql 
 +  CREATE USER nextcloud IDENTIFIED BY 'un_gros_mot_de_passe'; 
 +  CREATE DATABASE nextcloud; 
 +  GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@localhost IDENTIFIED BY 'un_gros_mot_de_passe'; 
 +  FLUSH PRIVILEGES; 
 +  quit 
 + 
 +  * Ouvrir /nextcloud dans le navigateur pour terminer l'installation : définir un compte admin, donner les infos de la base de donnée créee à l'instant, et, à partir du tableau de bord, activation des applications nécessaires (Calendrier, Contact, Group folders,  Talk, Galerie d'image, édition collaborative, etc...) 
 +  * Installation d'un serveur FTP 
 + 
 +  sudo apt install proftpd 
 + 
 +  * Config du serveur à prévoir : 
 + 
 +  sudo nano /etc/proftpd/proftpd.conf 
 +FIXME https://raspberry-pi.fr/installer-serveur-ftp-raspberry-pi/ 
 + 
 +  * Shell in a box 
 + 
 +FIXME https://www.tecmint.com/shell-in-a-box-a-web-based-ssh-terminal-to-access-remote-linux-servers/ 
 +FIXME https://github.com/shellinabox/shellinabox 
 + 
 +  
 + 
 +Nouveaux ajout : 
 + 
 +charpenel.hd.free.fr sur votre IP fixe 78.229.96.117 
 + 
 +ssh -p 222 -l pi 78.229.96.117 
 + 
 + 
 +SHELL IN A BOX : 
 + 
 +sudo apt install shellinabox 
 + 
 +sudo apt install locate 
 + 
 +voi les services qui tournent : 
 +service --status-all 
 + 
 +détail d'un service :  
 +service shellinabox statut 
 + 
 +Voir QUI ecoute sur quel port (sécurité!) : 
 +netstat -plunt 
 +Les ip ouvertes en 0.0.0.0:XXXX sont accessibles depuis toutes les IP de notre propre machine  
 +Les ip en 127.0.0.1:XXXX sont accessibles que depuis l'ip de la machine dans le sous-reseau actuel 
 + 
 +Les ip ouvertes en :::XXXX  sont accessibles depuis l'extérieur (danger, mais parfois nécessaire) 
 + 
 +Mettre une appli (shell in a box) derrière un reverse proxy : 
 + 
 +éditez etc/apache2/sites-available/000-default.conf  
 + 
 +Pour chaque service, ajouter un "ProxyPass" et un "ProxyPassReverse"
 + 
 + 
 +Ajouter les modules Apache de proxy : 
 + 
 +sudo a2enmod proxy 
 +sudo a2enmod proxy-http 
 +sudo a2enmod proxy_balancer 
 +sudo a2enmod lbmethod_byrequests 
 + 
 +sudo systemctl restart apache2.service 
 + 
 +vérif que le fichier de config d'apache est activé: 
 +sudo a2ensite 000-default.conf 
 + 
 + 
 +Il y a 2 Fichiers de config pour shell in  box : 
 + 
 +* Dans /etc/sheelinabox/options-available/   (peu utile, css du shell) 
 +* Dans /etc/default/shellinabox/ : ajout du --disable-ssl dans les arguments, puis relance du service. 
 + 
 +Activer les themes css dans shell in a box : compliqué... :x 
 + 
 + 
 +Installation du firewall 
 +sudo apt install ufw 
 +sudo ufw allow 22 comment 'ssh et sftp'   #autoriser le port 22 
 +sudo ufw status numbered # voir l'état des régles (et leur numéro, pour les numéroter) 
 + 
 +sudo ufw allow from 192.168.0.1/24 port 4200 comment 'shellinabox'  # pour autoriser tous les accès depuis le réseau local 
 + 
 + 
 + 
 + 
 +sudo ufw allow 80 comment 'http'   #http 
 + 
 + 
 +Début d'année : 
 + 
 +Ajout d'un groupe nsi global 
 +sudo addgroup nsi 
 +adduser pi nsi  #s'ajouter soi même 
 + 
 +groups #affiche tous les groupes existants (attention, se relogger pour rendre les ajouts dans les groupes effectifs !) 
 + 
 +sudo apt install members 
 +members nsi    #voir les membres d'un groupe 
 + 
 +sudo adduser jstern --ingroup nsi  #ajout d'un eleve en precisant le groupe principal (nsi) 
 +--> puis son mot de passe 
 + 
 +test : creer un fichier en tant que cet eleve, vérif les perm 
 + 
 + 
 +Jupyther Hub : 
 +basé sur https://towardsdatascience.com/setup-your-home-jupyterhub-on-a-raspberry-pi-7ad32e20eed 
 + 
 +Mise à jour de python 3, et pip 
 +  sudo pip3 install --upgrade pip 
 + 
 +Installation npm : 
 +  sudo apt-get install npm  
 +  sudo npm install -g configurable-http-proxy 
 + 
 +Installation en elle-même : 
 +  sudo -H pip3 install notebook jupyterhub 
 + 
 +Génération du fichier de config: 
 +  jupyterhub --generate-config  
 +  sudo mv jupyterhub_config.py /root 
 + 
 +Editer en sudo le fichier pour décommenter cette ligne et enregistrer : 
 +c.JupyterHub.bind_url = 'http://:8000' 
 + 
 +Editer le fichier de /etc/apache2/sites-vaailable/000-default.conf, et ajouter les 2 lignes de "ProxyPass" et "ProxyPassReverse".  
 + 
 +Editer root/jupyterhub_config.py pour décommenter la "base url" et la mettre à '/jupyter/' 
 + 
 +   
 +  sudo ufw allow from 192.168.0.1/24 port 8000 comment 'jupyter'  # pour autoriser tous les accès depuis le réseau local 
 + 
 +Enregistrer jupyter comme un service, pour éviter d'(avoir à le relancer à chaque redémarrage du rpi : 
 + 
 +Créer le fichier /lib/systemd/system/jupyterhub.service et le remplir : 
 + 
 +  [Unit]  
 +  Description=JupyterHub Service 
 +  After=multi-user.target 
 +   
 +  [Service]  
 +  User=root  
 +  ExecStart=/usr/local/bin/jupyterhub --config=/root/jupyterhub_config.py  
 +  Restart=on-failure 
 +   
 +  [Install]  
 +  WantedBy=multi-user.target 
 + 
 + 
 + 
 + 
 +A suivre :  
 +* faire les groupes de travail et le -u 0002 dans /etc/ssh/sshd_config 
 +* Docker 
 + 
 + 
 +"Emprisonner les users" 
 + 
 +Installation de la librairie: 
 +  sudo apt-get install libpam-chroot 
 +  Editez /etc/pam.d/sshd en sudo, ajouter à la fin : 
 +    #ajout 
 +    session required pam_chroot.so                                                                           
 +  Editez sudo nano /etc/security/chroot.conf 
 +  Editez sudo nano /etc/ssh/sshd_config 
 +   
 +  copier le module : 
 +  sudo cp /usr/lib/arm-linux-gnueabihf/pam_chroot.so /usr/lib/security/pam_chroot.so 
 +  (créer le dossier lib/security si besoin) 
 +  
 + 
 +  
  
mon_projet_de_serveur_personnel.1646137934.txt.gz · Dernière modification : 2022/03/01 13:32 de nc