# Perso 3 - votre propre serveur

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


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

   ```bash
   ssh ARISEID@perso3.iiens.net
   ```

   en remplaçant `ARISEID` par votre AriseID (`nom2042` par exemple).

   
:::tip
   Si vous n’avez pas de terminal à votre disposition, vous pouvez vous y connecter via [stages.iiens.net](https://stages.iiens.net) ou [perso.iiens.net/shell](https://perso.iiens.net/shell)

   :::
2. ```
   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.
3. ```
   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.

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

   :::

Vous voilà connecté :tada:, avec un petit rappel sur votre quota de stockage. Plus d'informations dans la partie [quotas](https://wiki.iiens.net/#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 ? Eh bien il est possible d'utiliser une clé SSH pour s'authentifier. Il existe un [/tutos/ssh/cles_ssh](/doc/9ea359ca-79be-4c66-8f4a-1017514a8323) à ce sujet, mais pour résumer :

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

```bash
ssh-keygen
```


:::info
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`)

```bash
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

#### Pour te simplifier la vie

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).

```bash
nano ~/.ssh/config # ou vim
```

Puis de rajouter ces quelques lignes :

```sshconfig
Host perso
    HostName perso3.iiens.net
    User ARISEID
```

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

#### Pour l’authentification

Le fichier de configuration SSH sert aussi pour l’authentification en SSH à d’autres services (autres que par la commande SSH).

Cette configuration vous sera indispensable dans votre perso, pour vous connecter à un git par exemple.

Vous pouvez ainsi y configurer la clé utilisée pour un service spécifique :

```sshconfig
Host <adresse_du_service> # (Exemple : git.iiens.net)
    IdentityFile ~/.ssh/<fichier_clé_privée>
```


:::info
Vous pouvez écrire `*` à la place du **Host** pour une configuration par défaut et ajouter plusieurs **IdentityFile**.

:::

# Transférer des fichiers


:::tip
Il existe deux manières de transférer des fichiers entre son perso et son ordinateur personnel 

:::

## SCP

La commande `scp` fonctionne de la même manière que `cp`, sauf que l’on peut spécifier des chemins sur un ordi distant aussi avec la syntaxe `<ariseid>@perso.iiens.net:<chemin-vers-fichier>`. Voici des exemples :

```bash
#
scp mon-fichier.truc nom2042@perso.iiens.net:destination.mach
```

## FTP (File transfer protocol)

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 [/services_arise/ftp](/doc/02430c4d-53ca-4dbd-8cb8-92d844dcd73a).

## 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/`.


:::info
Assurez-vous que les permissions sur ce dossier sont bonnes ! Pour le vérifier :\`\`\`bash 

```
ls ~/html -ld
drwx------ 5 nom2042 eleves 9 Feb  6  2026 /home/users/2042/nom2042/html
```

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

```
chmod a=,u=rwx,g=x ~/html
```

:::

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


:::info
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.


:::success
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.


:::tip
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 :

```bash
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


:::tip
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 :

```bash
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 :

```bash
#!/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`.


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

:::

Pour y accéder :

```bash
cd $VAR_HOME
```


:::success
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.

---

**Documents**

- [Déployer via Git](https://notes.iiens.net/s/publique/doc/deployer-via-git-HhluSZmM7q)
- [trucs_et_astuces](https://notes.iiens.net/s/publique/doc/trucs_et_astuces-ZH3kKzYp8D)
- [Web](https://notes.iiens.net/s/publique/doc/web-61ggR8IcX9)
- [perso_mysql](https://notes.iiens.net/s/publique/doc/perso_mysql-fQqrHejH3d)
- [stages - perso3 web](https://notes.iiens.net/s/publique/doc/stages-perso3-web-XLGREwsHaG)
- [Legacy Perso2](https://notes.iiens.net/s/publique/doc/legacy-perso2-tYJxeHXnin)