En résumé
Pour joindre une base distante, le serveur Linkr s’appuie sur des extensions DuckDB, et pour Apache Doris sur un pilote Python optionnel. L’image Docker contient tout. En installation manuelle, les extensions se téléchargent à la première connexion : sur un serveur sans accès à internet, il faut les installer avant, avec une commande.
Ce que demande chaque connecteur
DuckDB est le moteur de requêtes de Linkr. Il se connecte aux autres bases par des extensions — de petits modules qu’il télécharge la première fois qu’il en a besoin, puis garde dans le dossier de données.
| Moteur | Ce qu’il faut sur le serveur | Image Docker | Ports à ouvrir vers la base |
|---|---|---|---|
| DuckDB, dossier de Parquet | rien | ✓ | — |
| SQLite | extension sqlite | ✓ | — |
| PostgreSQL | extension postgres | ✓ | 5432 par défaut |
| MySQL | extension mysql | ✓ | 3306 par défaut |
| Apache Doris | extension mysql, et l’extra Python doris pour les gros résultats | ✓ | 9030 (port de requête du FE) ; 8070 (Arrow Flight SQL) et les BE pour les gros résultats |
Les fichiers Excel (.xlsx) importés en mode serveur passent aussi par une extension, excel.
L'extra « postgres » ne sert pas à se connecter à PostgreSQL
L’installation manuelle propose apps/api[dev,postgres]. Cet extra sert à ranger la base applicative de Linkr dans PostgreSQL (voir Configuration). Pour interroger un entrepôt PostgreSQL, il ne faut que l’extension DuckDB postgres.
Avec Docker
Rien à faire : l’image embarque les extensions et le pilote Doris, précisément pour fonctionner sans accès à internet. Il reste à ouvrir, depuis le conteneur de l’API, les ports de la base à joindre.
En installation manuelle
Les extensions DuckDB, sans accès à internet
Sur une machine connectée, la première connexion à une base télécharge l’extension depuis extensions.duckdb.org et personne ne s’en aperçoit. Sur un serveur coupé d’internet — un espace projet d’entrepôt de santé, par exemple — cette première connexion échoue sur une erreur de téléchargement.
Installez-les donc une fois, depuis la racine du dépôt, après avoir installé le backend :
npm run duckdb:extensions
Elles sont rangées dans le dossier de données (LINKR_DATA_DIR, sous _duckdb_ext), là où Linkr les cherche. Si le serveur n’a aucun accès à extensions.duckdb.org, deux solutions :
-
Un miroir : si votre établissement dispose d’un dépôt de type Nexus ou Artifactory, il peut relayer
http://extensions.duckdb.org. Indiquez son adresse :npm run duckdb:extensions -- --repository https://nexus.exemple.fr/repository/duckdb-extensions -
Une copie : lancez la commande sur une machine connectée, avec le même système et la même version de DuckDB que le serveur, puis copiez son dossier
_duckdb_extdans le dossier de données du serveur.
Le pilote Arrow Flight SQL pour Apache Doris
Linkr se connecte à Doris par le protocole MySQL, qui suffit pour les comptages et les statistiques. Les résultats volumineux — une extraction de plusieurs millions de lignes — sont en revanche beaucoup plus rapides par Arrow Flight SQL, un protocole conçu pour transférer des données en masse. Il demande un pilote Python, l’extra doris :
pip install -e "apps/api[dev,doris]"
Sans lui, tout fonctionne, mais lentement pour les gros résultats, et la page de la base l’indique : « Le serveur Linkr ne peut pas utiliser Arrow Flight SQL (son extra « doris » n’est pas installé)… ». Arrow Flight SQL demande aussi que le port arrow_flight_sql_port du FE (8070 par défaut) et chaque BE soient joignables depuis le serveur Linkr.
Les extras se combinent : apps/api[dev,postgres,doris].
Pour aller plus loin
- Bases de données — ajouter une base et configurer sa connexion.
- Installation manuelle — installer le backend avant les connecteurs.
- Configuration — les autres réglages d’un serveur en réseau fermé, dont les dépôts de packages.