docs: redesign all READMEs with centered header, emojis and language links
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+30
-25
@@ -1,4 +1,12 @@
|
|||||||
# <img src="frontend/public/favicon.svg" width="22" height="22" alt="" /> Stupid Simple Network Inventory
|
<div align="center">
|
||||||
|
|
||||||
|
<img src="frontend/public/favicon.svg" width="96" height="96" alt="" />
|
||||||
|
|
||||||
|
# Stupid Simple Network Inventory
|
||||||
|
|
||||||
|
**Aplicación web autoalojada para inventario de red y visualización de topología lógica**
|
||||||
|
|
||||||
|
[English](README.md) · [Français](README.fr.md)
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
@@ -7,22 +15,26 @@
|
|||||||

|

|
||||||

|

|
||||||
|
|
||||||
Aplicación web autoalojada para inventario manual de red y visualización de topología de red lógica.
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Características
|
---
|
||||||
|
|
||||||
- **Inventario manual** — añade y gestiona dispositivos (18 tipos) con IPs, VLANs, descripciones y enlaces web opcionales
|
## ✨ Características
|
||||||
- **Vista de topología** — disposición en tarjetas por red (LAN / VLAN 802.1Q), con secciones WAN y puerta de enlace
|
|
||||||
- **Ping ICMP** — comprueba la accesibilidad de todos los hosts conocidos con un clic
|
|
||||||
- **Descubrimiento automático** — ping sweep + consulta PTR DNS en una subred para importar nuevos hosts
|
|
||||||
- **Autenticación** — inicio de sesión JWT con cambio de contraseña obligatorio en el primer uso
|
|
||||||
- **Modo oscuro** — alternancia entre tema claro y oscuro
|
|
||||||
- **Logos de fabricantes** — detección y visualización automáticas de logos de editores/fabricantes (Proxmox, Cisco, Synology, Docker, y más de 30 más)
|
|
||||||
- **i18n** — francés, inglés, español
|
|
||||||
|
|
||||||
## Stack
|
- 🗂️ **Inventario manual** — añade y gestiona dispositivos (18 tipos) con IPs, VLANs, descripciones y enlaces web opcionales
|
||||||
|
- 🗺️ **Vista de topología** — disposición en tarjetas por red (LAN / VLAN 802.1Q), con secciones WAN y puerta de enlace
|
||||||
|
- 📡 **Ping ICMP** — comprueba la accesibilidad de todos los hosts conocidos con un clic
|
||||||
|
- 🔍 **Descubrimiento automático** — ping sweep + consulta PTR DNS en una subred para importar nuevos hosts
|
||||||
|
- 🏷️ **Logos de fabricantes** — detección y visualización automáticas de logos de editores/fabricantes (Proxmox, Cisco, Synology, Docker, y más de 30 más)
|
||||||
|
- 🔐 **Autenticación** — inicio de sesión JWT con cambio de contraseña obligatorio en el primer uso
|
||||||
|
- 🌙 **Modo oscuro** — alternancia entre tema claro y oscuro
|
||||||
|
- 🌍 **i18n** — francés, inglés, español
|
||||||
|
|
||||||
|
## 🛠️ Stack
|
||||||
|
|
||||||
| Capa | Tecnología |
|
| Capa | Tecnología |
|
||||||
|------|-----------|
|
|------|-----------|
|
||||||
@@ -33,7 +45,7 @@ Aplicación web autoalojada para inventario manual de red y visualización de to
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Inicio rápido
|
## 🚀 Inicio rápido
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1. Clonar y entrar en el proyecto
|
# 1. Clonar y entrar en el proyecto
|
||||||
@@ -64,7 +76,7 @@ docker compose --env-file .env up --build -d
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Configuración
|
## ⚙️ Configuración
|
||||||
|
|
||||||
Toda la configuración se realiza mediante variables de entorno. Ver `.env.example` para la lista completa con descripciones.
|
Toda la configuración se realiza mediante variables de entorno. Ver `.env.example` para la lista completa con descripciones.
|
||||||
|
|
||||||
@@ -76,8 +88,6 @@ Toda la configuración se realiza mediante variables de entorno. Ver `.env.examp
|
|||||||
| `BIND_ADDRESS` | `0.0.0.0` | Dirección IP de escucha. Definir en la interfaz frente al reverse proxy. |
|
| `BIND_ADDRESS` | `0.0.0.0` | Dirección IP de escucha. Definir en la interfaz frente al reverse proxy. |
|
||||||
| `DOCKER_UID` / `DOCKER_GID` | `1000` | UID/GID para el proceso backend. Debe coincidir con el usuario propietario de `./db_data/`. |
|
| `DOCKER_UID` / `DOCKER_GID` | `1000` | UID/GID para el proceso backend. Debe coincidir con el usuario propietario de `./db_data/`. |
|
||||||
|
|
||||||
### Usar .env con Docker Compose
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
# Editar .env — definir como mínimo DOCKER_UID, DOCKER_GID, INITIAL_ADMIN_PASSWORD
|
# Editar .env — definir como mínimo DOCKER_UID, DOCKER_GID, INITIAL_ADMIN_PASSWORD
|
||||||
@@ -86,7 +96,7 @@ docker compose --env-file .env up --build -d
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Seguridad
|
## 🔒 Seguridad
|
||||||
|
|
||||||
### Gestión de secretos
|
### Gestión de secretos
|
||||||
|
|
||||||
@@ -120,8 +130,6 @@ Luego descomentar los bloques `secrets:` en `docker-compose.yml` (ver los coment
|
|||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Rotación de clave
|
### Rotación de clave
|
||||||
|
|
||||||
Para rotar el secreto JWT (invalida todas las sesiones activas):
|
Para rotar el secreto JWT (invalida todas las sesiones activas):
|
||||||
@@ -142,7 +150,6 @@ docker compose start backend
|
|||||||
Esta aplicación no termina TLS. Para uso en producción, colócala detrás de un reverse proxy que gestione HTTPS:
|
Esta aplicación no termina TLS. Para uso en producción, colócala detrás de un reverse proxy que gestione HTTPS:
|
||||||
|
|
||||||
```nginx
|
```nginx
|
||||||
# Ejemplo de reverse proxy nginx (externo, en el host o en un contenedor dedicado)
|
|
||||||
server {
|
server {
|
||||||
listen 443 ssl;
|
listen 443 ssl;
|
||||||
server_name inventory.example.com;
|
server_name inventory.example.com;
|
||||||
@@ -172,8 +179,6 @@ services:
|
|||||||
|
|
||||||
### Endurecimiento de contenedores
|
### Endurecimiento de contenedores
|
||||||
|
|
||||||
Los contenedores se ejecutan con privilegios reducidos:
|
|
||||||
|
|
||||||
| Medida | Backend | Frontend |
|
| Medida | Backend | Frontend |
|
||||||
|--------|---------|----------|
|
|--------|---------|----------|
|
||||||
| Usuario no-root | `DOCKER_UID:DOCKER_GID` (usuario host) | `nginx` (UID 101) |
|
| Usuario no-root | `DOCKER_UID:DOCKER_GID` (usuario host) | `nginx` (UID 101) |
|
||||||
@@ -186,7 +191,7 @@ Los contenedores se ejecutan con privilegios reducidos:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Persistencia de datos
|
## 💾 Persistencia de datos
|
||||||
|
|
||||||
Todos los datos se almacenan en `./db_data/`:
|
Todos los datos se almacenan en `./db_data/`:
|
||||||
|
|
||||||
@@ -201,7 +206,7 @@ Todos los datos se almacenan en `./db_data/`:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Desarrollo
|
## 🧑💻 Desarrollo
|
||||||
|
|
||||||
### Tests del backend
|
### Tests del backend
|
||||||
|
|
||||||
@@ -227,6 +232,6 @@ npm run dev # Servidor dev Vite en :5173, proxifica /api/ hacia :8000
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Arquitectura
|
## 🏗️ Arquitectura
|
||||||
|
|
||||||
Ver [`docs/architecture.md`](docs/architecture.md) para el flujo de solicitudes detallado, la configuración Docker y el modelo de autenticación.
|
Ver [`docs/architecture.md`](docs/architecture.md) para el flujo de solicitudes detallado, la configuración Docker y el modelo de autenticación.
|
||||||
|
|||||||
+30
-25
@@ -1,4 +1,12 @@
|
|||||||
# <img src="frontend/public/favicon.svg" width="22" height="22" alt="" /> Stupid Simple Network Inventory
|
<div align="center">
|
||||||
|
|
||||||
|
<img src="frontend/public/favicon.svg" width="96" height="96" alt="" />
|
||||||
|
|
||||||
|
# Stupid Simple Network Inventory
|
||||||
|
|
||||||
|
**Application web auto-hébergée pour l'inventaire réseau et la visualisation de topologie logique**
|
||||||
|
|
||||||
|
[English](README.md) · [Español](README.es.md)
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
@@ -7,22 +15,26 @@
|
|||||||

|

|
||||||

|

|
||||||
|
|
||||||
Application web auto-hébergée pour l'inventaire manuel de réseau et la visualisation de topologie réseau logique.
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Fonctionnalités
|
---
|
||||||
|
|
||||||
- **Inventaire manuel** — ajout et gestion d'équipements (18 types) avec IPs, VLANs, descriptions et liens web optionnels
|
## ✨ Fonctionnalités
|
||||||
- **Vue topologie** — disposition en cards par réseau (LAN / VLAN 802.1Q), avec sections WAN et passerelle
|
|
||||||
- **Ping ICMP** — vérification de l'accessibilité de tous les hôtes connus en un clic
|
|
||||||
- **Découverte automatique** — ping sweep + lookup PTR DNS sur un sous-réseau pour importer de nouveaux hôtes
|
|
||||||
- **Authentification** — connexion JWT avec changement de mot de passe forcé à la première utilisation
|
|
||||||
- **Mode sombre** — bascule thème clair / sombre
|
|
||||||
- **Logos de marques** — détection et affichage automatiques des logos éditeurs/fabricants (Proxmox, Cisco, Synology, Docker, et plus de 30 autres)
|
|
||||||
- **i18n** — français, anglais, espagnol
|
|
||||||
|
|
||||||
## Stack
|
- 🗂️ **Inventaire manuel** — ajout et gestion d'équipements (18 types) avec IPs, VLANs, descriptions et liens web optionnels
|
||||||
|
- 🗺️ **Vue topologie** — disposition en cards par réseau (LAN / VLAN 802.1Q), avec sections WAN et passerelle
|
||||||
|
- 📡 **Ping ICMP** — vérification de l'accessibilité de tous les hôtes connus en un clic
|
||||||
|
- 🔍 **Découverte automatique** — ping sweep + lookup PTR DNS sur un sous-réseau pour importer de nouveaux hôtes
|
||||||
|
- 🏷️ **Logos de marques** — détection et affichage automatiques des logos éditeurs/fabricants (Proxmox, Cisco, Synology, Docker, et plus de 30 autres)
|
||||||
|
- 🔐 **Authentification** — connexion JWT avec changement de mot de passe forcé à la première utilisation
|
||||||
|
- 🌙 **Mode sombre** — bascule thème clair / sombre
|
||||||
|
- 🌍 **i18n** — français, anglais, espagnol
|
||||||
|
|
||||||
|
## 🛠️ Stack
|
||||||
|
|
||||||
| Couche | Technologie |
|
| Couche | Technologie |
|
||||||
|--------|------------|
|
|--------|------------|
|
||||||
@@ -33,7 +45,7 @@ Application web auto-hébergée pour l'inventaire manuel de réseau et la visual
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Démarrage rapide
|
## 🚀 Démarrage rapide
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1. Cloner et entrer dans le projet
|
# 1. Cloner et entrer dans le projet
|
||||||
@@ -64,7 +76,7 @@ docker compose --env-file .env up --build -d
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Configuration
|
## ⚙️ Configuration
|
||||||
|
|
||||||
Toute la configuration se fait via des variables d'environnement. Voir `.env.example` pour la liste complète avec descriptions.
|
Toute la configuration se fait via des variables d'environnement. Voir `.env.example` pour la liste complète avec descriptions.
|
||||||
|
|
||||||
@@ -76,8 +88,6 @@ Toute la configuration se fait via des variables d'environnement. Voir `.env.exa
|
|||||||
| `BIND_ADDRESS` | `0.0.0.0` | Adresse IP d'écoute. À définir sur l'interface face au reverse proxy. |
|
| `BIND_ADDRESS` | `0.0.0.0` | Adresse IP d'écoute. À définir sur l'interface face au reverse proxy. |
|
||||||
| `DOCKER_UID` / `DOCKER_GID` | `1000` | UID/GID pour le processus backend. Doit correspondre à l'utilisateur propriétaire de `./db_data/`. |
|
| `DOCKER_UID` / `DOCKER_GID` | `1000` | UID/GID pour le processus backend. Doit correspondre à l'utilisateur propriétaire de `./db_data/`. |
|
||||||
|
|
||||||
### Utilisation de .env avec Docker Compose
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
# Éditer .env — définir au minimum DOCKER_UID, DOCKER_GID, INITIAL_ADMIN_PASSWORD
|
# Éditer .env — définir au minimum DOCKER_UID, DOCKER_GID, INITIAL_ADMIN_PASSWORD
|
||||||
@@ -86,7 +96,7 @@ docker compose --env-file .env up --build -d
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Sécurité
|
## 🔒 Sécurité
|
||||||
|
|
||||||
### Gestion des secrets
|
### Gestion des secrets
|
||||||
|
|
||||||
@@ -120,8 +130,6 @@ Décommenter ensuite les blocs `secrets:` dans `docker-compose.yml` (voir les co
|
|||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Rotation de clé
|
### Rotation de clé
|
||||||
|
|
||||||
Pour faire tourner le secret JWT (invalide toutes les sessions actives) :
|
Pour faire tourner le secret JWT (invalide toutes les sessions actives) :
|
||||||
@@ -142,7 +150,6 @@ docker compose start backend
|
|||||||
Cette application ne termine pas TLS. Pour un usage en production, placez-la derrière un reverse proxy gérant HTTPS :
|
Cette application ne termine pas TLS. Pour un usage en production, placez-la derrière un reverse proxy gérant HTTPS :
|
||||||
|
|
||||||
```nginx
|
```nginx
|
||||||
# Exemple de reverse proxy nginx (externe, sur l'hôte ou un conteneur dédié)
|
|
||||||
server {
|
server {
|
||||||
listen 443 ssl;
|
listen 443 ssl;
|
||||||
server_name inventory.example.com;
|
server_name inventory.example.com;
|
||||||
@@ -172,8 +179,6 @@ services:
|
|||||||
|
|
||||||
### Durcissement des conteneurs
|
### Durcissement des conteneurs
|
||||||
|
|
||||||
Les conteneurs s'exécutent avec des privilèges réduits :
|
|
||||||
|
|
||||||
| Mesure | Backend | Frontend |
|
| Mesure | Backend | Frontend |
|
||||||
|--------|---------|----------|
|
|--------|---------|----------|
|
||||||
| Utilisateur non-root | `DOCKER_UID:DOCKER_GID` (utilisateur hôte) | `nginx` (UID 101) |
|
| Utilisateur non-root | `DOCKER_UID:DOCKER_GID` (utilisateur hôte) | `nginx` (UID 101) |
|
||||||
@@ -186,7 +191,7 @@ Les conteneurs s'exécutent avec des privilèges réduits :
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Persistance des données
|
## 💾 Persistance des données
|
||||||
|
|
||||||
Toutes les données sont stockées dans `./db_data/` :
|
Toutes les données sont stockées dans `./db_data/` :
|
||||||
|
|
||||||
@@ -201,7 +206,7 @@ Toutes les données sont stockées dans `./db_data/` :
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Développement
|
## 🧑💻 Développement
|
||||||
|
|
||||||
### Tests backend
|
### Tests backend
|
||||||
|
|
||||||
@@ -227,6 +232,6 @@ npm run dev # Serveur dev Vite sur :5173, proxifie /api/ vers :8000
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Architecture
|
## 🏗️ Architecture
|
||||||
|
|
||||||
Voir [`docs/architecture.md`](docs/architecture.md) pour le flux de requêtes détaillé, la configuration Docker et le modèle d'authentification.
|
Voir [`docs/architecture.md`](docs/architecture.md) pour le flux de requêtes détaillé, la configuration Docker et le modèle d'authentification.
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
# <img src="frontend/public/favicon.svg" width="22" height="22" alt="" /> Stupid Simple Network Inventory
|
<div align="center">
|
||||||
|
|
||||||
|
<img src="frontend/public/favicon.svg" width="96" height="96" alt="" />
|
||||||
|
|
||||||
|
# Stupid Simple Network Inventory
|
||||||
|
|
||||||
|
**Self-hosted network inventory and logical topology visualisation**
|
||||||
|
|
||||||
|
[Français](README.fr.md) · [Español](README.es.md)
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
@@ -7,22 +15,26 @@
|
|||||||

|

|
||||||

|

|
||||||
|
|
||||||
Self-hosted web application for manual network inventory and logical network topology visualisation.
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Features
|
---
|
||||||
|
|
||||||
- **Manual inventory** — add and manage devices (18 types) with IPs, VLANs, descriptions and optional web links
|
## ✨ Features
|
||||||
- **Topology view** — card-based layout per network (LAN / VLAN 802.1Q), with WAN and gateway sections
|
|
||||||
- **ICMP ping sweep** — check reachability of all known hosts in one click
|
|
||||||
- **Auto-discovery** — ping sweep + PTR DNS lookup on a subnet to import new hosts
|
|
||||||
- **Authentication** — JWT-based login with forced password change on first use
|
|
||||||
- **Dark mode** — light / dark theme toggle
|
|
||||||
- **Brand logos** — automatic detection and display of vendor/manufacturer logos (Proxmox, Cisco, Synology, Docker, and 30+ more)
|
|
||||||
- **i18n** — French, English, Spanish
|
|
||||||
|
|
||||||
## Stack
|
- 🗂️ **Manual inventory** — add and manage devices (18 types) with IPs, VLANs, descriptions and optional web links
|
||||||
|
- 🗺️ **Topology view** — card-based layout per network (LAN / VLAN 802.1Q), with WAN and gateway sections
|
||||||
|
- 📡 **ICMP ping sweep** — check reachability of all known hosts in one click
|
||||||
|
- 🔍 **Auto-discovery** — ping sweep + PTR DNS lookup on a subnet to import new hosts
|
||||||
|
- 🏷️ **Brand logos** — automatic detection and display of vendor logos (Proxmox, Cisco, Synology, Docker, 30+ more)
|
||||||
|
- 🔐 **Authentication** — JWT-based login with forced password change on first use
|
||||||
|
- 🌙 **Dark mode** — light / dark theme toggle
|
||||||
|
- 🌍 **i18n** — French, English, Spanish
|
||||||
|
|
||||||
|
## 🛠️ Stack
|
||||||
|
|
||||||
| Layer | Technology |
|
| Layer | Technology |
|
||||||
|-------|-----------|
|
|-------|-----------|
|
||||||
@@ -33,7 +45,7 @@ Self-hosted web application for manual network inventory and logical network top
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Quick start
|
## 🚀 Quick start
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1. Clone and enter the project
|
# 1. Clone and enter the project
|
||||||
@@ -64,7 +76,7 @@ docker compose --env-file .env up --build -d
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Configuration
|
## ⚙️ Configuration
|
||||||
|
|
||||||
All configuration is via environment variables. See `.env.example` for the full list with descriptions.
|
All configuration is via environment variables. See `.env.example` for the full list with descriptions.
|
||||||
|
|
||||||
@@ -76,8 +88,6 @@ All configuration is via environment variables. See `.env.example` for the full
|
|||||||
| `BIND_ADDRESS` | `0.0.0.0` | IP address to listen on. Set to the interface facing the reverse proxy. |
|
| `BIND_ADDRESS` | `0.0.0.0` | IP address to listen on. Set to the interface facing the reverse proxy. |
|
||||||
| `DOCKER_UID` / `DOCKER_GID` | `1000` | UID/GID for the backend process. Must match the host user owning `./db_data/`. |
|
| `DOCKER_UID` / `DOCKER_GID` | `1000` | UID/GID for the backend process. Must match the host user owning `./db_data/`. |
|
||||||
|
|
||||||
### Using .env with Docker Compose
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
# Edit .env — at minimum set DOCKER_UID, DOCKER_GID, INITIAL_ADMIN_PASSWORD
|
# Edit .env — at minimum set DOCKER_UID, DOCKER_GID, INITIAL_ADMIN_PASSWORD
|
||||||
@@ -86,7 +96,7 @@ docker compose --env-file .env up --build -d
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Security
|
## 🔒 Security
|
||||||
|
|
||||||
### Secret management
|
### Secret management
|
||||||
|
|
||||||
@@ -120,8 +130,6 @@ Then uncomment the `secrets:` blocks in `docker-compose.yml` (see comments in th
|
|||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Key rotation
|
### Key rotation
|
||||||
|
|
||||||
To rotate the JWT secret (invalidates all active sessions):
|
To rotate the JWT secret (invalidates all active sessions):
|
||||||
@@ -142,7 +150,6 @@ docker compose start backend
|
|||||||
This application does not terminate TLS. For production use, place it behind a reverse proxy that handles HTTPS:
|
This application does not terminate TLS. For production use, place it behind a reverse proxy that handles HTTPS:
|
||||||
|
|
||||||
```nginx
|
```nginx
|
||||||
# Example nginx reverse-proxy (external, on the host or a dedicated container)
|
|
||||||
server {
|
server {
|
||||||
listen 443 ssl;
|
listen 443 ssl;
|
||||||
server_name inventory.example.com;
|
server_name inventory.example.com;
|
||||||
@@ -172,8 +179,6 @@ services:
|
|||||||
|
|
||||||
### Container hardening
|
### Container hardening
|
||||||
|
|
||||||
The containers run with reduced privileges:
|
|
||||||
|
|
||||||
| Measure | Backend | Frontend |
|
| Measure | Backend | Frontend |
|
||||||
|---------|---------|----------|
|
|---------|---------|----------|
|
||||||
| Non-root user | `DOCKER_UID:DOCKER_GID` (host user) | `nginx` (UID 101) |
|
| Non-root user | `DOCKER_UID:DOCKER_GID` (host user) | `nginx` (UID 101) |
|
||||||
@@ -186,7 +191,7 @@ The containers run with reduced privileges:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Data persistence
|
## 💾 Data persistence
|
||||||
|
|
||||||
All data is stored in `./db_data/`:
|
All data is stored in `./db_data/`:
|
||||||
|
|
||||||
@@ -201,7 +206,7 @@ All data is stored in `./db_data/`:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Development
|
## 🧑💻 Development
|
||||||
|
|
||||||
### Backend tests
|
### Backend tests
|
||||||
|
|
||||||
@@ -227,6 +232,6 @@ npm run dev # Vite dev server on :5173, proxies /api/ to :8000
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Architecture
|
## 🏗️ Architecture
|
||||||
|
|
||||||
See [`docs/architecture.md`](docs/architecture.md) for the detailed request flow, Docker setup, and authentication model.
|
See [`docs/architecture.md`](docs/architecture.md) for the detailed request flow, Docker setup, and authentication model.
|
||||||
|
|||||||
Reference in New Issue
Block a user