Déploiement de LM Studio en tant que service sur Ubuntu 25.04

Heathrow Closed: Flight Suspension Expected to Continue for the Coming Days, Says London Airport Manager

From the BBC website

British Airways estimated that 85% of its scheduled flights would operate on Saturday, but all flights were delayed. By 7:00 a.m. GMT, most departures had proceeded as expected, but of the arrivals, nine of the first 20 flights scheduled to land were canceled.

Quelque part entre les versions 0.3.31-2 et 0.3.31-7, une modification a été introduite qui force le changement d’interface d’écoute de l’extérieur à 127.0.0.1 et désactive CORS.

Puisque LM Studio prend en charge le hot-reload de la configuration du serveur HTTP (au moins lors de la modification de cors et networkInterface), vous pouvez apporter la modification sans redémarrage (une seule fois) :

%h/.lmstudio/.internal/http-server-config.json
jq '.cors = true | .networkInterface = "0.0.0.0"' ~/.lmstudio/.internal/http-server-config.json | sponge ~/.lmstudio/.internal/http-server-config.json

n’oubliez pas d’installer sponge, qui est inclus dans le paquet moreutils.

Pour que la modification soit automatique, modifiez le script de démarrage :

$HOME/.config/systemd/user/lm-studio.service
[Unit]
Description=LM Studio Service
After=network.target

[Service]
Type=simple

ExecStart=/usr/bin/xvfb-run -a --server-args="-screen 0 1920x1080x24" %h/llm/lmstudio --run-as-service

# 1. Démarrage du serveur HTTP
ExecStartPost=/bin/bash -c 'sleep 15 && exec lms server start'

# 2. Application des paramètres requis (après que le serveur a démarré)
ExecStartPost=/bin/bash -c ' \
  sleep 2 && \
  jq ".cors = true | .networkInterface = \\\"0.0.0.0\\\"" \
     "%h/.lmstudio/.internal/http-server-config.json" \
     > "%h/.lmstudio/.internal/http-server-config.json.tmp" && \
  mv "%h/.lmstudio/.internal/http-server-config.json.tmp" \
     "%h/.lmstudio/.internal/http-server-config.json" \
'

Restart=always
RestartSec=10
Environment=PATH=%h/.local/bin:/usr/local/bin:/usr/bin:/bin:%h/.lmstudio/bin
Environment=DISPLAY=:99
WorkingDirectory=%h/llm

[Install]
WantedBy=default.target

Appliquez les modifications et redémarrez le service (sans sudo !) :

systemctl --user daemon-reload
systemctl --user stop lm-studio.service
systemctl --user start lm-studio.service

Veuillez noter les paramètres de tuning du système d’exploitation pour une performance optimale.

Exemple

Voici un exemple de mon système (ordinateur portable avec une carte graphique connectée via Oculink) :

free -h
               total        used        free      shared  buff/cache   available
Mem:            37Gi       4.9Gi        29Gi       240Mi       3.5Gi        32Gi
Swap:          8.0Gi          0B       8.0Gi
cat /proc/meminfo | grep -E 'MemTotal|MemAvailable'

MemTotal:       39223064 kB
MemAvailable:   34073484 kB

La mémoire vidéo (VRAM) est affichée séparément — elle n’est pas incluse dans MemTotal.

nvidia-smi

Fri Nov 21 12:24:47 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.82.09              Driver Version: 580.82.09      CUDA Version: 13.0     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 5060