Installation
Prérequis
PHP 8.0+
Extensions requises :
| Extension | Usage |
|---|---|
pdo_sqlite |
Base de données SQLite (recommandé) |
pdo_mysql |
Base de données MySQL (alternative) |
json |
Traitement des données JSON |
mbstring |
Gestion des caractères Unicode |
Vérifiez votre version de PHP et les extensions installées :
php -v
php -m | grep -E "(pdo_sqlite|pdo_mysql|json|mbstring)"
Node.js 18+
Requis uniquement pour la compilation du frontend (CSS et JavaScript).
node -v
npm -v
Serveur web
- Apache 2.4+ avec
mod_rewriteactivé - ou Nginx 1.18+
Installation rapide
# Cloner le dépôt
git clone https://inligit.fr/cap-rel/marginaliamd.git
cd marginaliamd
# Compiler le frontend
cd frontend && npm install && npm run build && cd ..
# Créer les répertoires de données
mkdir -p data/{documents,versions,ratelimit}
# Créer le fichier de configuration
cp htdocs/includes/config.example.php data/config.local.php
Éditez ensuite data/config.local.php avec vos paramètres (voir la page Configuration).
Installation détaillée
1. Téléchargement
Via Git :
git clone https://inligit.fr/cap-rel/marginaliamd.git
cd marginaliamd
Ou via archive : téléchargez l'archive depuis le dépôt et décompressez-la.
2. Compilation du frontend
Le frontend utilise Vite avec TailwindCSS et DaisyUI. Les fichiers compilés sont placés dans htdocs/assets/.
cd frontend
npm install
npm run build
cd ..
Fallback CDN : Si les assets ne sont pas compilés, l'application utilise automatiquement les CDN TailwindCSS et DaisyUI. La compilation locale est cependant recommandée pour la performance et l'autonomie.
3. Répertoires de données
Créez la structure de données en dehors du répertoire web :
mkdir -p data/{documents,versions,ratelimit}
Structure attendue :
marginaliamd/
├── data/ # Hors du document root
│ ├── documents/ # Fichiers Markdown
│ ├── versions/ # Versions archivées
│ ├── ratelimit/ # Données de limitation de débit
│ └── config.local.php
└── htdocs/ # Document root du vhost
4. Configuration
Copiez le fichier de configuration d'exemple :
cp htdocs/includes/config.example.php data/config.local.php
Éditez data/config.local.php. Les paramètres essentiels sont détaillés dans la page Configuration.
Le mécanisme de chargement cherche config.local.php automatiquement dans plusieurs emplacements. L'emplacement recommandé est data/config.local.php.
Variable d'environnement : Pour les déploiements avec symlinks, vous pouvez définir la variable d'environnement
MARGINALIA_DATApointant vers le dossierdata/. C'est la méthode la plus fiable.
5. Mot de passe administrateur
Générez le hash bcrypt de votre mot de passe :
php -r "echo password_hash('VotreMotDePasse', PASSWORD_BCRYPT) . PHP_EOL;"
Copiez le résultat dans data/config.local.php :
define('ADMIN_PASSWORD_HASH', '$2y$10$...');
6. Serveur web
Apache
Configuration du VirtualHost :
<VirtualHost *:443>
ServerName docs.exemple.fr
DocumentRoot /var/www/marginaliamd/htdocs
<Directory /var/www/marginaliamd/htdocs>
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/marginaliamd/data>
Require all denied
</Directory>
</VirtualHost>
Activez le site :
sudo a2ensite marginaliamd.conf
sudo a2enmod rewrite
sudo systemctl reload apache2
Un fichier .htaccess est fourni dans htdocs/ pour la réécriture d'URL.
Nginx
server {
listen 443 ssl;
server_name docs.exemple.fr;
root /var/www/marginaliamd/htdocs;
index view.php index.php;
location ~ /\. {
deny all;
}
location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
try_files $uri $uri/ /view.php?$query_string;
}
}
7. Permissions
sudo chown -R www-data:www-data /var/www/marginaliamd
sudo chmod -R 755 /var/www/marginaliamd
sudo chmod -R 775 /var/www/marginaliamd/data
Vérifiez que le répertoire data/ n'est pas accessible depuis le web.
8. Base de données
SQLite (recommandé)
Aucune action requise. La base de données est créée automatiquement lors de la première connexion à l'interface d'administration. Le fichier data/marginalia.db sera généré avec toutes les tables nécessaires.
MySQL
Créez la base de données au préalable :
CREATE DATABASE marginalia CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'marginalia_user'@'localhost' IDENTIFIED BY 'votre_mot_de_passe';
GRANT ALL PRIVILEGES ON marginalia.* TO 'marginalia_user'@'localhost';
FLUSH PRIVILEGES;
Les tables sont créées automatiquement à la première connexion admin.
Première connexion
- Accédez à votre instance :
https://docs.exemple.fr/ - Si des éléments manquent (base de données, répertoires), une alerte s'affiche sur la page d'accueil
- Cliquez sur Accès administration ou accédez à
https://docs.exemple.fr/admin/ - Entrez le mot de passe configuré dans
config.local.php - La base de données est initialisée automatiquement

Rendez-vous ensuite dans Vérifications pour contrôler l'état du système (version PHP, extensions, permissions, base de données).

Mise à jour
1. Sauvegarde
cp data/marginalia.db data/marginalia.db.backup
cp data/config.local.php data/config.local.php.backup
2. Mise à jour du code
git pull origin main
3. Recompilation du frontend
cd frontend && npm install && npm run build && cd ..
4. Migrations
Les migrations de base de données sont appliquées automatiquement. Consultez le CHANGELOG pour d'éventuelles instructions spécifiques.