Serveur personnel

Présentation du projet

Dans le cadre de ma formation, j'ai mis en place un serveur personnel appelé idk, sur lequel j'ai installé et configuré Ubuntu Server 24.10. Ce projet m'a permis de mettre en pratique plusieurs compétences techniques en systèmes et réseaux, tout en gagnant en autonomie sur la gestion d'un environnement serveur complet.

Photo du serveur physique

Objectifs

  • Installer un système d'exploitation serveur
  • Configurer les outils de développement (Java, Git, PostgreSQL...)
  • Installer Nginx, PostgreSQL et Docker
  • Mettre en place des services avec Docker
  • Comprendre le fonctionnement multitâche/multiutilisateur de Linux
  • Programmer des scripts Shell pour la maintenance du serveur

Installation et configuration

J'ai installé Ubuntu Server 24.10 sur un ancien PC que j'utilise comme serveur. J'ai configuré l'accès SSH, installé Nginx comme serveur web, PostgreSQL pour la gestion de base de données, et Docker pour l'exécution de services en conteneurs. J'ai également appris à gérer les utilisateurs et les permissions Linux pour sécuriser l'accès au serveur.

Terminal montrant l'installation

Installation des services

Voici les commandes utilisées pour installer les différents services :

  • Mettre à jour les paquets :
    sudo apt update && sudo apt upgrade
  • Installer Nginx :
    sudo apt install nginx
  • Installer Docker :
    sudo apt install docker.io
  • Démarrer et activer Docker :
    sudo systemctl start docker && sudo systemctl enable docker
  • Installer PostgreSQL avec Docker :
    docker run --name postgres-container -e POSTGRES_PASSWORD=motdepasse -d -p 5432:5432 postgres

Chaque service a ensuite été testé localement via son port ou son interface de gestion pour vérifier son bon fonctionnement.

Configuration de Nginx et nom de domaine

Après l’installation de Nginx, j’ai configuré un hôte virtuel pour héberger mon site web. J’ai modifié le fichier de configuration situé dans /etc/nginx/sites-available/ et créé un lien symbolique vers sites-enabled :


sudo nano /etc/nginx/sites-available/moonset.fr

# Exemple de configuration :
server {
    listen 80;
    server_name moonset.fr;

    root /var/www/idk;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
  

J’ai ensuite activé le site et rechargé Nginx :


sudo ln -s /etc/nginx/sites-available/moonset.fr /etc/nginx/sites-enabled/
sudo systemctl reload nginx
  

Pour le nom de domaine, j’ai configuré un enregistrement DNS de type A chez mon fournisseur de domaine, pointant vers l’adresse IP publique de mon serveur.

Configuration DNS

Voilà le site :

Exemple de fichier docker-compose

Ce fichier me permet de lancer PostgreSQL avec persistance de données en une seule commande.


version: '3.8'

services:
  postgres:
    image: postgres:17
    container_name: postgres-container
    restart: always
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: [mot de passe normalement]
      POSTGRES_DB: db_video
    ports:
      - "5432:5432"
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

      
Commande pour le lancer : docker-compose up -d
Commande pour le stopper : docker-compose down

Automatisation par script

Voici un exemple de script que j'ai rédigé pour mettre à jour les services automatiquement :


#!/bin/bash

echo "Mise à jour de la liste des paquets..."
sudo apt update

echo "Mise à niveau des paquets..."
sudo apt upgrade -y

echo "Nettoyage des paquets inutiles..."
sudo apt autoremove -y

echo "Mise à jour terminée."
      

Compétences démontrées

  • Utilisation d’un OS serveur en ligne de commande
  • Installation et sécurisation de services Linux
  • Utilisation et orchestration de conteneurs Docker
  • Configuration de Nginx et DNS avec nom de domaine
  • Utilisation de scripts Shell pour automatiser des tâches

Bilan personnel

Ce projet m'a permis de mieux comprendre le fonctionnement d'un système Linux, de me familiariser avec Docker, et de devenir plus autonome dans l'administration système. J'ai également pris conscience de l'importance de la sécurité et de la gestion des permissions.

Points forts : Autonomie, installation fonctionnelle, bonne compréhension de Docker
Difficultés : Problèmes de permissions avec PostgreSQL, réseau Wi-Fi instable
Axes d'amélioration : Approfondir les réseaux, scripting plus avancé, sécurisation du serveur