Perso 3

Perso (version 3) est un espace personnel proposé par ARISE pour vous permettre d'héberger un site internet, compiler des projets ou encore d'exécuter du code dans un environnement linux.

Se connecter

Pour vous connecter en SSH à perso, exécutez cette commande dans n'importe quel terminal :

ssh ARISEID@perso3.iiens.net

En remplaçant ARISEID par votre AriseID (nom2042 par exemple)

The authenticity of host 'perso3.iiens.net (193.54.225.88)' can't be established.
ECDSA key fingerprint is SHA256:UJ+9C9yaSHrPqUgY9igPSSq05Lc3aCVdjtkem989xzQ.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Ici, tapez yes pour valider l'empreinte du serveur.

Warning: Permanently added 'perso3.iiens.net,193.54.225.88' (ECDSA) to the list of known hosts.
nom2042@perso3.iiens.net's password:

Tapez votre mot de passe.

C'est tout à fait normal si rien ne s'affiche lorsque vous tapez, c'est une sécurité de Linux.

Vous voilà connecté, avec un petit rappel sur votre quota de stockage. Plus d'informations dans la partie quotas.

* Utilisation disque : 7.29G / 50.00G
* Espace libre : 42.71G
nom2042@perso:~$

Clé SSH

Si vous en avez marre de taper votre mot de passe à rallonge, il est possible d'utiliser une clé SSH pour s'authentifier. Il existe un très bon guide à ce sujet, mais pour résumer :

Tapez la commande suivante depuis votre ordinateur, en gardant les options par défaut :

ssh-keygen
En laissant le champ passphrase vide (touche entrée), vous n'aurez plus à taper de mot de passe. Cela reste sécurisé, car vous êtes le seul possesseur de la clé privée sur votre ordinateur.

Cependant, garder un mot de passe possède un certain intérêt : l'authentification à deux facteurs.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa2
Your public key has been saved in /home/user/.ssh/id_rsa2.pub
The key fingerprint is:
SHA256:U5Kr55fkF/Zd4G83qxyu2jJ4GJ9dWU0e5TD6Is+nWqg user@laptop
The key's randomart image is:
+---[RSA 3072]----+
|              o o|
|         .   . =.|
|        o . .  o+|
|         +   ...o|
|        S . ..+. |
|       o ..=o+. .|
|      . *o+o=+.o.|
|       = B=o+oo.=|
|        Eo==o+.o+|
+----[SHA256]-----+

Pour ajouter la clé fraichement générée sur perso : (en supposant que la clé soit ici : ~/.ssh/id_rsa.pub)

ssh-copy-id -i ~/.ssh/id_rsa.pub ARISEID@perso3.iiens.net

Félicitation, vous pouvez maintenant vous connecter sans mot de passe.

Config SSH

On peut encore se simplifier la vie en ne tapant que ssh perso. Comment réaliser ce tour de passe-passe ? Il suffit de modifier le fichier ~/.ssh/config (le créer s'il n'existe pas).

nano ~/.ssh/config # ou vim

Puis de rajouter ces quelques lignes :

Host perso
    HostName perso3.iiens.net
    User ARISEID

Voilà, vous êtes opérationnel pour vous connecter simplement à perso.

FTP

Vous pouvez également vous connecter à perso en FTP (plus précisément SFTP) pour transférer des fichiers plus facilement depuis votre PC.

Pour plus de détails, lire le guide sur FTP.

Héberger un site web

Une des fonctionnalités principales de perso est l'hébergement de sites web. Il y a plusieurs façons de faire, en fonction de la technologie que vous souhaitez utiliser. Si vous débutez, référez-vous à la section HTML statique.

PHP / HTML statique

Que ce soit pour du php ou du web classique, tous les fichiers devront se trouver dans le dossier ~/html/.

Assurez-vous que les permissions sur ce dossier sont bonnes ! Pour le vérifier :
ls ~/html -ld
drwx--s--- 13 nom2042 eleves 31 Feb  7 17:37 /home/users/2042/nom2042/html

Si les permissions ne sont pas drwx--s---, alors exécutez la commande suivante :

chmod 710 ~/html

Vous pouvez ensuite créer index.html ou index.php et commencer à développer votre site.

Vous pouvez demander à Arise de changer votre dossier racine web (le ~/html/), pour par exemple héberger une appli PHP sans exposer les fichiers PHP directement dans le web (type Laravel par exemple)

Reverse proxy (Node, Java, Python, ...)

Dès l'instant où vous développez dans d'autres langages, votre serveur web fonctionnera en autonomie et il faut pouvoir le relier au serveur web de perso.

Si votre site écoute sur un port pour pouvoir fonctionner, c'est que vous avez besoin d'un reverse proxy.

Pour cela, il faut l'intervention manuelle d'un ariser. Demandez donc au bureau ou sur arise@iiens.net.

Une fois l'intervention réalisée, configurez votre serveur pour qu'il écoute sur le port 1443. Ce port n'est pas modifiable.

Vous ne pouvez pas avoir à la fois un site statique (php, html) et un site en reverse proxy. Cependant, il existe un compromis : le préfixe statique.

Fichiers statiques

Si vous souhaitez mettre à disposition sur votre perso des fichiers (photos, code, etc.) malgré le reverse proxy, cela peut s'avérer être une tâche compliquée.

Vous pouvez demander un préfixe statique pour cela. Par défaut, ce préfixe est static. Si vous choisissez foo, alors vos fichiers ~/foo seront accessibles à l'adresse https://nom.iiens.net/foo.

Logs

Les logs de votre site web sont disponibles dans le dossier $WEBLOG_DIR. Pour y accéder :

cd $WEBLOG_DIR

Vous pourrez y retrouver 4 fichiers :

apache_access.log  apache_error.log  php_access.log  php_error.log

apache_access.log recense tous les logs d'accès à votre site, et apache_error.log toutes les erreurs rencontrées.

PHP

Si votre site utilise la configuration PHP par défaut (sans reverse proxy), vous bénéficierez en plus des logs PHP. (php_access.log et php_error.log)

Reverse proxy

Si le reverse proxy a été configuré sur votre compte, alors vous devrez gérer vous-même les logs en fonction du framework et du langage utilisé.

Exécuter des commandes au redémarrage du serveur

ARISE peut être amené à redémarrer le serveur de perso, arrêtant tous les processus qui tournaient sur votre compte (site internet en reverse proxy, bot, tmux, etc.)

Pour y remédier et relancer toutes vos tâches au plus vite, vous pouvez utiliser le script startup.sh, présent à la racine de votre home. Si le fichier n'existe pas, il suffit de le créer :

echo -e '#!/bin/bash\n\n# Scripts à lancer au redémarrage de la machine' > ~/startup.sh
chmod +x ~/startup.sh

Vous pouvez ensuite y mettre toutes les commandes à lancer :

#!/bin/bash
 
echo "Le serveur a redémarré !" >> logs.txt

Quotas

Disque

Le quota par défaut est de 50 Go. Il peut être augmenté par simple demande au bureau d'ARISE si vous utilisez activement votre perso.

RAM

à définir.

CPU

Limite de 500 processus par utilisateur, non modifiable.

Problèmes fréquents

Sockets

Les sockets ne marcheront pas dans votre home, car les fichiers sont sur NFS. Pour résoudre le problème, vous avez accès à un second home dans le dossier /var.

Attention, le quota de ce dossier est de 120Mo.

Pour y accéder :

cd $VAR_HOME
Par exemple, pour PM2 la ligne suivante est présente dans le .bashrc global pour que les sockets et donc que le daemon fonctionnent.
export PM2_HOME="$VAR_HOME/.pm2"

Disk quota exceeded (PHP)

Si vous rencontrez une de ces erreurs, c'est sûrement que votre dossier $VAR_HOME est plein.

PHP Warning:  Unknown: write failed: Disk quota exceeded (122) in Unknown on line 0
PHP Warning:  Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/sessions) in Unknown on line 0

Il faudra alors supprimer quelques fichiers.

Migration depuis perso 2

DNS et création de compte

Afin de créer un nouveau compte sur perso3 et de pointer votre site monsite.iiens.net sur perso3, il faut exécuter la commande:

switch_to_perso3 enable

Copie des fichiers

Pour copier vos fichiers (html, scripts, etc.), ARISE fournit une commande pour copier facilement vos fichiers. Vous pouvez aussi manuellement utiliser scp ou rsync.

# Copie tous les fichiers (sauf les dotfiles)
transfer_dir *
 
# Copie le dossier html
transfer_dir html

Mot de passe incorrect, erreur de connexion SSH

Si jamais vous n'arrivez pas à vous connecter en ssh sur perso2, c'est surement que votre client est trop à jour par rapport à la version du serveur. Ajoutez cette ligne à votre fichier de config ssh (~/.ssh/config) :

Host perso2
    HostName perso2.iiens.net
    PubkeyAcceptedKeyTypes ssh-rsa

Puis :

ssh pouet2042@perso2