Aller au contenu
Documentation : Installer

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églagePar défautCe qu'il fait
RONNE_PORT7650Le port HTTP sur l'hôte. 80 avec un domaine.
RONNE_HTTPS_PORT7651Le port HTTPS sur l'hôte (TCP, et UDP pour HTTP/3). 443 avec un domaine.
RONNE_DOMAINemptyLe nom à servir en HTTPS. Vide : HTTP seulement, sous n'importe quel nom.
RONNE_TLSautoAvec un domaine : auto (Let's Encrypt), files (votre propre certificat) ou internal (l'autorité de certification de test propre au mandataire).
RONNE_ACME_EMAILemptyOù l'autorité de certification envoie les avis d'expiration.
RONNE_TRUSTED_PROXIESemptyLes adresses qui peuvent définir X-Forwarded-For, comme private_ranges. Seulement derrière votre propre mandataire.
PUBLIC_URLhttps://RONNE_DOMAIN, or http://localhost:RONNE_PORTL'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, avec cert.pem (la chaîne complète) et key.pem dans un dossier certs à côté de compose.yaml. Créez le dossier avant le premier docker compose up : sous Linux, s'il manque, Docker le crée avec root comme propriétaire, et il vous faut alors sudo pour y écrire. Après avoir remplacé les fichiers, lancez docker 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, et rmk a besoin de NODE_EXTRA_CA_CERTS.
  • Derrière votre propre mandataire (nginx, Apache, Traefik, un répartiteur de charge) : laissez RONNE_DOMAIN vide, dirigez le mandataire vers http://127.0.0.1:7650, et définissez RONNE_PORT=127.0.0.1:7650, PUBLIC_URL à l'adresse https du mandataire et RONNE_TRUSTED_PROXIES=private_ranges, pour que le journal d'audit et les limites de connexion voient l'adresse du client dans le X-Forwarded-For du 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_PORT et RONNE_HTTPS_PORT valent 80 et 443. docker compose logs proxy en donne la raison.
  • Conservez les certificats : ils sont dans le volume caddy-data. Ne lancez jamais docker 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 dans journalctl -u rmk-server. On le gère avec les commandes de Comme service, y compris --domain pour 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 (ou dnf remove) arrête et supprime le service, et conserve les données et les réglages; apt purge et dnf remove affichent 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 (ou HOST) le rend accessible depuis le réseau, et --port (ou PORT) 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_DIR ou, par défaut, dans ~/Library/Application Support/RonneAI Marketplace sur macOS, ~/.local/share/rmk-server sur Linux (ou sous XDG_DATA_HOME) et %LOCALAPPDATA%\RonneAI\Marketplace sur Windows.
  • Mettre à jour : npx @ronneai/marketplace@latest, ou de nouveau npm 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
CommandeCe qu'elle fait
rmk-server service statusInstallé 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 | restartArrête, démarre ou redémarre le service. Redémarrez-le après une mise à jour avec npm.
sudo rmk-server service logsSuit son journal.
sudo rmk-server service uninstallSupprime 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 setupL'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 dans journalctl -u rmk-server, exécuté par le compte rmk-server. Sous macOS : les données dans /usr/local/var/rmk-server (avec Homebrew, /opt/homebrew/var/rmk-server), les réglages dans etc/rmk-server/env du 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.0 l'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.com ajoute 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, ou brew install caddy), et il s'arrête si un autre serveur web occupe le port 80 ou 443. --tls internal utilise l'autorité propre à Caddy; --tls files lit cert.pem et key.pem dans /etc/rmk-server-proxy/certs (sous macOS, etc/rmk-server-proxy/certs du préfixe; des copies, pas des liens; copiez-les de nouveau après chaque renouvellement et redémarrez); --email reç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 »); status fonctionne 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 un rmk-server qui 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 dans C:\Program Files\RonneAI, renommez son dossier en Marketplace et exécutez son bin\rmk-server.cmd. Ou, dans le même terminal administrateur, installez avec npm dans un dossier pour toute la machine et exécutez son rmk-server.cmd par son chemin complet (ce dossier n'est pas dans le PATH) : les commandes sont ci-dessous. Les données dans C:\ProgramData\RonneAI\Marketplace\data, les réglages dans …\Marketplace\.env, les journaux dans …\Marketplace\logs\rmk-server-service.out.log (et .err.log), exécuté par NT SERVICE\rmk-server. Sans domaine, --host 0.0.0.0 ajoute aussi une règle de pare-feu pour le port, sur les réseaux privés. --domain exige 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 files lit …\Marketplace\proxy\certs. setup, migrate et reset-root-password agissent 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-open sous 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 :

  1. 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.
  2. L'adresse publique : où les gens ouvrent Ronne AI Marketplace. Quand elle vient de l'environnement (comme compose.yaml définit PUBLIC_URL), elle est affichée en lecture seule, puisque l'environnement l'emporte sur le fichier de réglages.
  3. Le compte root : courriel, nom affiché et un mot de passe de 12 à 128 caractères, tapé deux fois.
  4. 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.