Installer Ronne AI Marketplace
Lancer une instance avec Docker ou Node, comme service, un domaine avec HTTPS, l'installation au premier lancement, root et la mise à jour.
La documentation fournie avec Ronne AI Marketplace 0.3.0, traduite de l'anglais.
Avec Docker
Il vous faut Docker avec Compose 2.23.1 ou plus récent. Sur macOS ou Linux, le script d'installation fait le reste, dans un terminal.
curl -fsSL https://www.ronne.ai/marketplace/install.sh | sh
L'adresse redirige vers le script de la dernière version sur GitHub, qui fonctionne aussi directement :
https://github.com/ronneai/ronne-marketplace/releases/latest/download/install.sh
Il vérifie que Docker est en marche, demande si Ronne s'exécute sur cet ordinateur ou sur un serveur avec un domaine (puis le domaine, et un courriel facultatif pour les avis liés au certificat), et vérifie les ports : sur cet ordinateur, si 7650 et 7651 sont occupés, il prend la prochaine paire libre après eux. Il écrit compose.yaml et .env dans un dossier ronne-marketplace de votre dossier personnel, démarre Ronne et l'ouvre dans le navigateur. Sur cet ordinateur, Ronne ne répond que sur cet ordinateur (127.0.0.1), pas sur votre réseau : pour y accéder depuis d'autres appareils, après l'installation, mettez RONNE_PORT=0.0.0.0:7650 et PUBLIC_URL avec l'adresse de cet ordinateur (http://192.168.1.20:7650, par exemple) dans ce .env (le script conserve les deux), puis lancez docker compose up -d dans ce dossier. Il installe la version dont il provient et n'utilise jamais sudo. Relancez-le pour mettre à jour : il garde vos réponses et demande avant de passer à une version plus récente.
Pour le faire à la main, il vous faut un seul fichier : compose.yaml, tiré du dépôt. Il télécharge l'image ronneai/marketplace depuis Docker Hub, donc aucun clone n'est nécessaire. SQLite n'a pas besoin de serveur; pour PostgreSQL ou MySQL, un profil en démarre un à côté de Ronne.
mkdir ronne && cd ronne curl -fsSLO https://raw.githubusercontent.com/ronneai/ronne-marketplace/main/compose.yaml docker compose up -d # then open http://localhost:7650 docker compose --profile postgres up -d # or --profile mysql, with RONNE_DB_PASSWORD set
Ouvrez ensuite l'adresse et suivez l'installation. Vos données (le fichier SQLite, les éléments stockés et les réglages) vivent dans le volume ronne-data, monté sur /app/data; sauvegardez ce volume.
Un petit mandataire, Caddy, s'exécute à côté de Ronne et en est le seul point d'entrée : il sert HTTP sur le port 7650 et HTTPS sur le 7651, des ports qu'aucun logiciel courant n'utilise. Ronne lui-même écoute à l'interne sur le port 3000, qui n'est pas publié. Les réglages vont dans un fichier .env à côté de compose.yaml; après l'avoir modifié, relancez docker compose up -d. RONNE_PORT=3000 garde l'adresse d'une installation antérieure au mandataire.
Un domaine et HTTPS
Donnez un domaine à Ronne, et le mandataire obtient et renouvelle son certificat HTTPS auprès de Let's Encrypt, et redirige http:// vers https://. Pointez d'abord le DNS du domaine (A, et AAAA pour IPv6) vers le serveur, et ouvrez les ports 80 et 443 dans son pare-feu. Puis, dans .env :
RONNE_DOMAIN=ronne.example.com RONNE_PORT=80 RONNE_HTTPS_PORT=443 [email protected] # optional: expiry notices
La première visite à https://ronne.example.com prend quelques secondes, le temps que le certificat soit émis. PUBLIC_URL suit le domaine, sauf si vous le définissez.
| Réglage | Par défaut | Ce qu'il fait |
|---|---|---|
RONNE_PORT | 7650 | Le port HTTP sur l'hôte. 80 avec un domaine. |
RONNE_HTTPS_PORT | 7651 | Le port HTTPS sur l'hôte (TCP, et UDP pour HTTP/3). 443 avec un domaine. |
RONNE_DOMAIN | empty | Le nom à servir en HTTPS. Vide : HTTP seulement, sous n'importe quel nom. |
RONNE_TLS | auto | Avec un domaine : auto (Let's Encrypt), files (votre propre certificat) ou internal (l'autorité de certification de test propre au mandataire). |
RONNE_ACME_EMAIL | empty | Où l'autorité de certification envoie les avis d'expiration. |
RONNE_TRUSTED_PROXIES | empty | Les adresses qui peuvent définir X-Forwarded-For, comme private_ranges. Seulement derrière votre propre mandataire. |
PUBLIC_URL | https://RONNE_DOMAIN, or http://localhost:RONNE_PORT | L'adresse que les gens ouvrent. Définissez-la quand les valeurs par défaut sont mauvaises. |
- Votre propre certificat (un réseau privé, ou un certificat de votre équipe informatique) :
RONNE_TLS=files, aveccert.pem(la chaîne complète) etkey.pemdans un dossiercertsà côté decompose.yaml. Créez le dossier avant le premierdocker compose up: sous Linux, s'il manque, Docker le crée avec root comme propriétaire, et il vous faut alorssudopour y écrire. Après avoir remplacé les fichiers, lancezdocker compose up -d --force-recreate proxy.RONNE_TLS=internalémet plutôt un certificat de test; les navigateurs affichent un avertissement tant que son autorité de certification n'est pas approuvée, etrmka besoin deNODE_EXTRA_CA_CERTS. - Derrière votre propre mandataire (nginx, Apache, Traefik, un répartiteur de charge) : laissez
RONNE_DOMAINvide, dirigez le mandataire vershttp://127.0.0.1:7650, et définissezRONNE_PORT=127.0.0.1:7650,PUBLIC_URLà l'adresse https du mandataire etRONNE_TRUSTED_PROXIES=private_ranges, pour que le journal d'audit et les limites de connexion voient l'adresse du client dans leX-Forwarded-Fordu mandataire (qui doit ajouter l'adresse à cet en-tête). Sa limite de taille du corps des requêtes doit être d'au moins 28 Mo, pour les brouillons envoyés avec un jeton; la valeur par défaut de nginx est de 1 Mo (client_max_body_size 28m;). - Ports 80 ou 443 déjà utilisés (« port is already allocated ») : un autre serveur web tourne sur l'hôte. Utilisez-le comme votre propre mandataire, comme ci-dessus.
- Aucun certificat : vérifiez que le DNS pointe vers le serveur, que les ports 80 et 443 sont ouverts, et que
RONNE_PORTetRONNE_HTTPS_PORTvalent 80 et 443.docker compose logs proxyen donne la raison. - Conservez les certificats : ils sont dans le volume
caddy-data. Ne lancez jamaisdocker compose down -v, qui le supprime avec vos données; Let's Encrypt limite la fréquence à laquelle un domaine peut en demander de nouveaux.
Avec apt ou dnf
Sur Debian 12, Ubuntu 22.04, Fedora, RHEL 9 et plus récents (glibc 2.34 ou plus récent), Ronne s'installe comme paquet avec Node.js intégré, sans Docker et sans Node.js à installer. L'installer fait de Ronne un service, lancé au démarrage du système et redémarré s'il s'arrête. Téléchargez le .deb ou le .rpm pour votre processeur (amd64 ou arm64) depuis la dernière version sur GitHub, puis :
sudo apt install ./rmk-server_X.Y.Z-1_amd64.deb # or _arm64.deb sudo dnf install ./rmk-server-X.Y.Z-1.x86_64.rpm # or .aarch64.rpm
Ouvrez ensuite http://localhost:7650 et suivez l'installation. Sans Docker, le script d'installation le fait pour vous : il propose le paquet, le vérifie avec le checksums.txt de la version, et demande avant de lancer sudo.
- Où sont les choses : le programme dans
/opt/rmk-server(et/usr/bin/rmk-server), les données dans/var/lib/rmk-server, les réglages dans/etc/rmk-server/env, le journal dansjournalctl -u rmk-server. On le gère avec les commandes de Comme service, y compris--domainpour HTTPS. - Mettre à jour : installez le nouveau paquet de la même façon. Le service redémarre avec celui-ci, avec les options qu'il avait, et les migrations s'exécutent au démarrage.
- Supprimer :
sudo apt remove rmk-server(oudnf remove) arrête et supprime le service, et conserve les données et les réglages;apt purgeetdnf removeaffichent la commande qui les supprime. - Sans systemd (un conteneur) : le paquet s'installe et indique comment démarrer Ronne à la main.
Avec Node.js
Avec Node.js 22.12 ou plus récent, une seule commande télécharge et démarre Ronne, sans clone, sans Docker et sans compilation. Sa commande est rmk-server.
npx @ronneai/marketplace # then open http://localhost:7650 npm install --global @ronneai/marketplace # or keep it installed, then: rmk-server
Suivez ensuite l'installation; dans un terminal, le premier démarrage ouvre le navigateur. rmk-server setup fait plutôt l'installation dans le terminal (--yes pour les scripts), rmk-server migrate applique les migrations et rmk-server reset-root-password réinitialise le mot de passe de root.
- Réseau : il écoute sur
127.0.0.1:7650, cette machine seulement.--host 0.0.0.0(ouHOST) le rend accessible depuis le réseau, et--port(ouPORT) change le port. Si le port est occupé, il s'arrête plutôt que d'en choisir un autre, puisque l'adresse est enregistrée dans les réglages. - Les données (réglages, base de données SQLite, éléments stockés) vivent dans
RONNE_DATA_DIRou, par défaut, dans~/Library/Application Support/RonneAI Marketplacesur macOS,~/.local/share/rmk-serversur Linux (ou sousXDG_DATA_HOME) et%LOCALAPPDATA%\RonneAI\Marketplacesur Windows. - Mettre à jour :
npx @ronneai/marketplace@latest, ou de nouveaunpm install --global @ronneai/marketplace. Les migrations s'exécutent au démarrage.
Vous travaillez sur Ronne lui-même? À partir d'un clone, avec pnpm : pnpm install, puis pnpm build && pnpm start (ou pnpm dev) sur http://localhost:3000. Par défaut, les réglages vont dans apps/web/.env et une base de données SQLite dans apps/web/data/.
Comme service
Sur macOS, Linux et Windows, rmk-server peut s'exécuter comme service : en arrière-plan, lancé au démarrage du système et redémarré s'il s'arrête (systemd sous Linux, launchd sous macOS, WinSW sous Windows). Installez d'abord Node.js pour toute la machine : le service s'exécute sous son propre compte, qui ne peut pas lire un Node.js installé dans votre dossier personnel (nvm). Si sudo rmk-server est introuvable, conservez votre PATH : sudo env "PATH=$PATH" rmk-server service install.
npm install --global @ronneai/marketplace sudo rmk-server service install # then open http://localhost:7650 and finish the setup
| Commande | Ce qu'elle fait |
|---|---|
rmk-server service status | Installé ou non, en marche ou non, la version, l'adresse, le compte, les dossiers et le mandataire. La seule sans sudo. |
sudo rmk-server service stop | start | restart | Arrête, démarre ou redémarre le service. Redémarrez-le après une mise à jour avec npm. |
sudo rmk-server service logs | Suit son journal. |
sudo rmk-server service uninstall | Supprime le service et les comptes qu'il a créés. Les données et les réglages restent, et une nouvelle installation les réutilise; --delete-data les supprime aussi, après que vous avez tapé le nom du dossier de données. |
sudo rmk-server setup | L'installation dans le terminal, pour les données du service (migrate et reset-root-password aussi). |
- Où sont les choses sous Linux : les données dans
/var/lib/rmk-server, les réglages dans/etc/rmk-server/env, le journal dansjournalctl -u rmk-server, exécuté par le comptermk-server. Sous macOS : les données dans/usr/local/var/rmk-server(avec Homebrew,/opt/homebrew/var/rmk-server), les réglages dansetc/rmk-server/envdu même préfixe, le journal dans/Library/Logs/rmk-server/server.log, exécuté par_rmkserver, ou par vous avec--user. macOS peut afficher une notification au sujet d'un nouvel élément en arrière-plan : c'est le service. - Options :
--port(7650) et--host(127.0.0.1, cette machine seulement;0.0.0.0l'ouvre au réseau en HTTP simple, alors placez-le derrière HTTPS). Relancer install avec d'autres options met à jour le service et conserve les données. - Un domaine avec HTTPS :
sudo rmk-server service install --domain ronne.example.comajoute un deuxième service,rmk-server-proxy, qui exécute Caddy sur les ports 80 et 443 avec les mêmes réglages que le mandataire de Docker. Il lui faut Caddy 2.7 ou plus récent dans le PATH (le paquet propre à Debian et à Ubuntu est trop ancien : utilisez le dépôt de Caddy, oubrew install caddy), et il s'arrête si un autre serveur web occupe le port 80 ou 443.--tls internalutilise l'autorité propre à Caddy;--tls fileslitcert.pemetkey.pemdans/etc/rmk-server-proxy/certs(sous macOS,etc/rmk-server-proxy/certsdu préfixe; des copies, pas des liens; copiez-les de nouveau après chaque renouvellement et redémarrez);--emailreçoit les avis d'expiration. - Sous Windows, exécutez les mêmes commandes sans
sudo, dans un terminal ouvert en tant qu'administrateur (clic droit sur PowerShell ou Terminal, Run as administrator, « Exécuter en tant qu'administrateur »);statusfonctionne dans n'importe quel terminal, avec les détails pour les administrateurs. Le compte du service ne peut pas lire votre profil, où se trouve le dossier global de npm (%APPDATA%\npm), donc install refuse unrmk-serverqui s'y trouve. Utilisez l'archive Windows (rmk-server-X.Y.Z-win32-x64.zip, ou-arm64, avec Node.js intégré; jointe aux versions à partir de celle qui suit la 0.2.0) : décompressez-la dansC:\Program Files\RonneAI, renommez son dossier enMarketplaceet exécutez sonbin\rmk-server.cmd. Ou, dans le même terminal administrateur, installez avec npm dans un dossier pour toute la machine et exécutez sonrmk-server.cmdpar son chemin complet (ce dossier n'est pas dans le PATH) : les commandes sont ci-dessous. Les données dansC:\ProgramData\, les réglages dansRonneAI\ Marketplace\ data …\Marketplace\.env, les journaux dans…\Marketplace\logs\rmk-server-service.out.log(et.err.log), exécuté parNT SERVICE\rmk-server. Sans domaine,--host 0.0.0.0ajoute aussi une règle de pare-feu pour le port, sur les réseaux privés.--domainexige Caddy pour toute la machine (winget install --id CaddyServer.Caddy --scope machine; un Caddy installé dans votre profil est refusé), ajoute une règle de pare-feu pour 80 et 443 sur tous les réseaux, et--tls fileslit…\Marketplace\proxy\certs.setup,migrateetreset-root-passwordagissent sur les données du service, en votre nom. - Sans systemd (un conteneur, WSL 1, un autre système d'init) : il n'y a pas de service à installer. Lancez
rmk-server start --no-opensous votre propre superviseur, ou utilisez Docker.
Sous Windows, dans un terminal ouvert en tant qu'administrateur :
# The Windows bundle, unzipped and renamed: & "C:\Program Files\RonneAI\Marketplace\bin\rmk-server.cmd" service install # Or npm, into a folder for the whole machine: npm install --global --prefix "C:\Program Files\RonneAI\npm" @ronneai/marketplace & "C:\Program Files\RonneAI\npm\rmk-server.cmd" service install
L'installation
Tant que l'installation de l'instance n'est pas faite, chaque page ouvre l'installation, et l'API répond 503 setup_required. L'installation demande :
- La base de données. SQLite (par défaut : un fichier, rien d'autre à installer), MySQL ou MariaDB, ou PostgreSQL, avec l'hôte, le port, le nom, l'utilisateur et le mot de passe d'une base de données existante et vide. Test connection se connecte, vérifie la version du serveur et, avec MySQL, le jeu de caractères
utf8mb4, puis vérifie que l'utilisateur peut créer, écrire, lire et supprimer des tables (au moyen d'une table d'essai qu'il retire ensuite). Un problème est expliqué en termes simples, avec le message du pilote. - L'adresse publique : où les gens ouvrent Ronne AI Marketplace. Quand elle vient de l'environnement (comme
compose.yamldéfinitPUBLIC_URL), elle est affichée en lecture seule, puisque l'environnement l'emporte sur le fichier de réglages. - Le compte root : courriel, nom affiché et un mot de passe de 12 à 128 caractères, tapé deux fois.
- Install : les réglages sont écrits, les migrations appliquées et le compte root créé, chaque étape étant affichée au fur et à mesure. Un échec ramène à la question qu'il concerne; Retry reprend à l'étape qui a échoué. Ensuite, Sign in ouvre la page de connexion avec le courriel de root déjà rempli. Rien n'a besoin d'être redémarré.
Une installation interrompue après l'écriture des réglages reprend à Install à la visite suivante, en conservant la base de données. Toute personne qui ouvre l'adresse avant vous peut faire l'installation de l'instance, alors ouvrez-la dès que vous l'avez démarrée. Relancer l'installation ne crée jamais de root s'il en existe déjà un : les autres roots s'ajoutent depuis Users.
Comptes root
L'installation crée le premier compte root. Un root peut faire tout ce que peut faire un modérateur, et aussi créer et gérer les utilisateurs, créer des portées, modifier les réglages de l'instance et lire le journal d'audit. Personne ne s'inscrit : un root crée tous les autres comptes.
Il peut y avoir plusieurs roots. Dans Admin › Users, n'importe quel root peut faire d'un autre compte un root (en le créant, ou avec Change role) et changer le rôle de n'importe qui, roots compris. Les roots se gèrent entre eux : l'un peut désactiver un autre ou réinitialiser son mot de passe. Personne ne modifie son propre compte à cet endroit; vous changez votre mot de passe dans Account, et un autre root fait le reste. L'instance garde toujours au moins un root actif : un changement qui n'en laisserait aucun est refusé.
Un autre root peut réinitialiser un mot de passe root oublié dans Users. S'il n'y a pas d'autre root, réinitialisez-le là où l'instance est installée : pnpm run reset-root-password (avec Docker, docker compose exec web pnpm run reset-root-password). S'il y a plusieurs roots, la commande demande lequel, ou accepte --email avec --yes. Elle définit un nouveau mot de passe, déconnecte ce root partout, révoque ses jetons d'accès et réactive le compte s'il était désactivé.
Mettre à jour
docker compose pull && docker compose up -d # Docker npm install --global @ronneai/marketplace@latest # npm sudo rmk-server service restart # npm, as a service: then this sudo apt install ./rmk-server_X.Y.Z-1_amd64.deb # a package: the new one (or dnf install) git pull && pnpm install && pnpm build && pnpm start # a clone
Les migrations de base de données en attente s'exécutent au démarrage du serveur. Si l'une échoue, le serveur s'arrête au lieu de servir une base de données à moitié migrée. Chaque version porte les étiquettes X.Y.Z, X.Y et latest sur Docker Hub; pour en fixer une, définissez RONNE_IMAGE=ronneai/marketplace:X.Y.Z à côté de compose.yaml. L'image et les paquets npm partagent un même numéro de version.