Contexte : gestionnaire de favoris auto-hébergé pour la veille (classement, listes, archivage de liens), installé depuis ses sources avec Nginx, PHP-FPM et MariaDB · Testé sur : Linux (Debian ou Ubuntu), PHP 8.0-FPM, LinkAce depuis son dépôt Git (2023) · Dernière vérification : contenu de 2023 non revérifié
Cette page décrit l'installation depuis le code source telle qu'elle a été faite en 2023. Le projet LinkAce propose aussi une installation avec Docker et des archives de version prêtes à l'emploi : vérifiez dans la documentation officielle la procédure correspondant à la version que vous installez.
Installer LinkAce sur un serveur Linux, sous un utilisateur dédié veille, avec une base MariaDB et une publication par Nginx et PHP-FPM.
Paquets à installer au préalable :
Il faut aussi un accès root ou sudo, et un nom de domaine, noté <DOMAINE>, si LinkAce doit être publié derrière un reverse proxy.
LinkAce est géré par un utilisateur dédié, veille :
sudo adduser veille
Sécurisez MariaDB, puis ouvrez une session d'administration :
sudo mysql_secure_installation
sudo mysql -u root -p
Créez la base, l'utilisateur et ses droits :
CREATE DATABASE linkace_db;
CREATE USER 'linkace_user'@'localhost' IDENTIFIED BY '<MOT_DE_PASSE_DB>';
GRANT ALL PRIVILEGES ON linkace_db.* TO 'linkace_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Le dossier /opt appartient à root : créez d'abord le dossier de LinkAce et confiez-le à veille, puis passez sous cet utilisateur pour cloner le dépôt.
sudo mkdir /opt/LinkAce
sudo chown veille:veille /opt/LinkAce
sudo su - veille
git clone https://github.com/Kovah/LinkAce.git /opt/LinkAce
Les étapes 4 à 6 se font sous l'utilisateur veille.
cd /opt/LinkAce
composer install --no-dev --optimize-autoloader
Créez le fichier .env à partir de l'exemple fourni :
cp .env.example .env
nano .env
Renseignez au minimum la connexion à la base de données, ainsi que les autres valeurs utiles à votre installation :
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=linkace_db
DB_USERNAME=linkace_user
DB_PASSWORD=<MOT_DE_PASSE_DB>
php artisan key:generate
php artisan migrate
php artisan setup:app
npm install && npm run production
exit
La commande
php artisan setup:appest celle utilisée en 2023. Si votre version ne la connaît pas, terminez la configuration dans l'assistant web qui s'affiche au premier accès à LinkAce.
PHP-FPM (utilisateur www-data) doit pouvoir écrire dans les dossiers de stockage et de cache. De retour sous votre compte d'administration :
sudo chown -R veille:www-data /opt/LinkAce/storage
sudo chown -R veille:www-data /opt/LinkAce/bootstrap/cache
sudo chmod -R 775 /opt/LinkAce/storage
sudo chmod -R 775 /opt/LinkAce/bootstrap/cache
Repérez le socket PHP-FPM installé (le nom dépend de la version de PHP) :
ls /run/php/
Créez le fichier /etc/nginx/sites-available/linkace en adaptant server_name et le socket :
server {
listen 80;
listen [::]:80;
server_name <DOMAINE>;
root /opt/LinkAce/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Activez le site, testez la configuration puis redémarrez Nginx :
sudo ln -s /etc/nginx/sites-available/linkace /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
LinkAce est servi par Nginx et PHP-FPM, qui démarrent déjà seuls avec le système. L'installation d'origine ajoutait un service systemd qui relance la compilation des ressources front-end (npm run production) à chaque démarrage du serveur.
Créez le script /opt/LinkAce/linkace_start.sh :
#!/bin/bash
# Recompile les ressources front-end de LinkAce
LINKACE_PATH=/opt/LinkAce
cd "$LINKACE_PATH" || exit 1
npm run production
Rendez-le exécutable et confiez-le à veille :
sudo chmod +x /opt/LinkAce/linkace_start.sh
sudo chown veille:veille /opt/LinkAce/linkace_start.sh
Créez l'unité /etc/systemd/system/linkace.service :
[Unit]
Description=Start LinkAce
After=network.target mariadb.service nginx.service php8.0-fpm.service
[Service]
Type=oneshot
ExecStart=/opt/LinkAce/linkace_start.sh
User=veille
Group=www-data
[Install]
WantedBy=multi-user.target
Activez le service pour qu'il s'exécute à chaque démarrage, puis lancez-le une première fois :
sudo systemctl daemon-reload
sudo systemctl enable linkace
sudo systemctl start linkace
Corrections par rapport à la version d'origine : le script et l'unité portent désormais le même nom de fichier (
linkace_start.sh) ; le script n'appelle plussudo -u veille, puisque l'unité s'exécute déjà sousveille; l'unité est de typeoneshot, car la compilation se termine d'elle-même.
sudo nginx -t ne signale aucune erreur.http://<DOMAINE>/ (ou l'adresse publiée par votre reverse proxy) affiche LinkAce ou son assistant de configuration.systemctl status linkace indique une dernière exécution terminée avec le statut 0/SUCCESS.npm run production, ou page d'erreur de Laravel) : réappliquez les commandes de l'étape 7 sur storage et bootstrap/cache.bcmath (remplacez par le nom de l'extension demandée et par votre version de PHP) :sudo apt install php-bcmath
sudo systemctl restart php8.0-fpm
sudo systemctl restart nginx
fastcgi_pass ne correspond pas à la version de PHP-FPM installée (ls /run/php/), ou PHP-FPM est arrêté.