Connectez-vous, puis lancez votre build

De la commande
au premier xcodebuild

Ce guide vous accompagne dans l’utilisation de votre Mac dans le cloud. En dix minutes, vous devriez pouvoir récupérer vos informations, vous connecter en SSH et vérifier l’environnement. Le téléchargement des dépendances et la durée du build complet dépendent de votre projet.

Récupérer les informations de votre machine

Après l’activation, vérifiez ces quatre éléments

Connectez-vous au portail et ouvrez les détails de l’instance associée à votre commande. Utilisez l’adresse, le compte et le port indiqués pour cette instance. Le numéro de commande n’est pas votre nom d’utilisateur.

Exemple d’informations de connexion · identifiants fictifs

Desk M4

Mac mini M4 · 16 Go de mémoire · SSD de 256 Go

IP publique
À consulter et copier dans les détails de l’instance
Nom d’utilisateur
Utilisez celui attribué dans le portail
Mot de passe initial
Consultez-le dans un environnement privé, jamais dans les journaux
Clé publique SSH
Ajoutez-la dans la rubrique correspondante du portail

Vous disposez d’une machine physique dédiée

Desk M4 est un Mac dans le cloud non virtualisé, avec macOS et son interface graphique ainsi qu’un accès en ligne de commande. Vérifiez d’abord le nœud associé à votre commande, puis les informations de connexion pour éviter d’utiliser dans un script l’adresse d’une autre machine.

Pour commencer, privilégiez SSH. C’est le moyen le plus rapide de vérifier l’adresse, le port et l’authentification. L’interface graphique sert aux réglages système et à la configuration de Xcode qui nécessitent des clics, mais n’a pas à rester ouverte pour les builds.

  • Gardez votre clé privée sur votre propre ordinateur. La clé publique commence par un type tel que ssh-ed25519.
  • Ne transmettez jamais de mot de passe initial, de clé privée ni de mot de passe de certificat de signature dans des journaux ordinaires.
  • Si les informations de connexion ne sont pas encore disponibles, vérifiez l’état de la commande dans le portail. Ne devinez ni l’adresse ni le nom d’utilisateur.
Votre première connexion

Connectez-vous en SSH, puis lancez le build

Remplacez l’adresse IP et le nom d’utilisateur de l’exemple par les valeurs du portail. 203.0.113.24 est une adresse réservée aux exemples et ne permet pas de se connecter à votre machine.

  1. 01

    Créer une clé

    Générez une clé dédiée à ce poste sur votre ordinateur et protégez-la par une phrase secrète. Si vous disposez déjà d’une clé adaptée, téléversez la clé publique correspondante sans écraser de fichier existant.

    ssh-keygen -t ed25519 -f ~/.ssh/minivps_workstation
    cat ~/.ssh/minivps_workstation.pub
  2. 02

    Vérifier l’empreinte

    Lors de la première connexion, l’empreinte de la clé d’hôte s’affiche. Comparez-la à celle obtenue auprès d’une source fiable. Si elle n’est pas indiquée dans le portail, demandez confirmation via un ticket. N’acceptez pas la clé simplement parce que l’invite apparaît.

    ssh -i ~/.ssh/minivps_workstation dev@203.0.113.24
  3. 03

    Vérifier l’environnement

    Exécutez les commandes ci-dessous sur la machine distante pour vérifier l’architecture, le chemin des outils de développement et leurs versions. Si votre projet exige une autre version de Xcode, alignez d’abord les versions, puis installez les dépendances.

    uname -m
    xcode-select -p
    xcodebuild -version
    sw_vers

À quoi ressemble une session complète ?

L’extrait ci-dessous illustre le format et ne correspond pas à une exécution en temps réel. L’empreinte, la durée et les journaux de build varient selon l’instance et le projet. Pour publier avec succès, vous devez également disposer de vos propres éléments de signature et d’identifiants de publication valides.

dev@desk-m4-tokyo
$ ssh -i ~/.ssh/minivps_workstation dev@203.0.113.24
The authenticity of host '203.0.113.24' can't be established.
ED25519 key fingerprint is SHA256:…
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes
Warning: Permanently added '203.0.113.24' to the list of known hosts.

$ cd ~/work/App
$ xcodebuild -scheme App -destination 'generic/platform=iOS' archive
…
** ARCHIVE SUCCEEDED **

$ bundle exec fastlane beta
…
Successfully uploaded the new binary to App Store Connect
Successfully finished processing the build

Saisissez yes uniquement après avoir vérifié l’empreinte. Si la clé d’hôte a changé, vérifiez d’abord si le système a été réinstallé ou si l’instance a été remplacée. Ne supprimez pas toutes les entrées de known_hosts pour contourner la vérification.

Repérez d’abord l’étape en échec, puis ajustez la configuration
Message affichéÀ vérifier en premierÉtape suivante
Connection timed outAdresse IP, port SSH, réseau local et pare-feuEssayez depuis un autre réseau local. Si le problème persiste, ouvrez un ticket en indiquant l’heure de connexion et le nœud.
Permission deniedNom d’utilisateur, clé publique téléversée et clé privée sélectionnéeUtilisez ssh -v pour examiner l’authentification. Supprimez les informations sensibles avant de partager les journaux.
Scheme not foundRépertoire du projet, workspace et Scheme partagéLancez d’abord xcodebuild -list. Les projets CocoaPods nécessitent généralement de préciser le workspace.
Signing failedCertificat et clé privée associée, profil de provisionnement, accès au trousseauEffectuez une vérification de signature dans une session interactive avant de passer à une CI sans supervision.
Besoin de l’interface graphique ?

Faites passer le bureau à distance par un tunnel SSH

Utilisez SSH pour les commandes et l’automatisation, et VNC pour les réglages et les interactions graphiques. Commencez par vérifier SSH, puis transférez le port du partage d’écran. N’exposez pas directement le service VNC à Internet.

Vérifier le partage à distance

Dans les réglages système, vérifiez que le partage d’écran est activé et quels utilisateurs peuvent y accéder. N’autorisez que les comptes nécessaires. L’emplacement de ces réglages varie selon la version de macOS.

Si le service n’est pas activé ou si votre compte n’est pas autorisé, le tunnel ne donnera pas accès au bureau.

Créer le transfert local

Laissez la session SSH ci-dessous ouverte. L’exemple redirige le port local 15900 vers le port distant 5900 et n’écoute que sur l’adresse de bouclage locale.

Si votre instance utilise un autre port SSH, ajoutez -p et le port indiqué dans le portail.

Se connecter en local

Sur un Mac, utilisez Partage d’écran. Sur les autres systèmes, choisissez un client VNC compatible. Saisissez l’adresse locale et le port transféré, pas l’adresse IP publique de la machine distante.

Vous devrez toujours vous authentifier avec un compte distant autorisé.

ssh -N -L 127.0.0.1:15900:127.0.0.1:5900 \
  -o ExitOnForwardFailure=yes \
  -i ~/.ssh/minivps_workstation dev@203.0.113.24

Adresse de connexion du client : vnc://127.0.0.1:15900. La fermeture de la session de transfert coupe cet accès. N’utilisez pas ce tunnel comme service exposé en permanence à Internet.

Réduisez la charge d’affichage avant de diagnostiquer le réseau

Commencez par une résolution de 1440 × 900 sur un seul écran. C’est une recommandation pour le dépannage du client, pas une limite de l’offre. Désactivez le fond d’écran dynamique et les aperçus inutiles, et transférez les fichiers via SSH. Une bande passante plus élevée ne garantit pas une latence moindre : le temps aller-retour, la perte de paquets et la qualité du Wi-Fi local comptent aussi.

Si les commandes répondent normalement mais que l’affichage est lent, réduisez d’abord la qualité ou la résolution dans le client. Si SSH et l’affichage se coupent en même temps, notez l’heure, le type de réseau local et le message du client avant d’ouvrir un ticket de connexion.

Confiez les tâches répétitives à votre machine

Testez une tâche avant de l’intégrer au pipeline principal

Enregistrez la machine dans votre propre projet CI. Récupérez les paramètres d’enregistrement depuis le projet ou la console d’administration de la plateforme. Ne réutilisez pas le jeton d’une autre personne et ne le publiez pas dans votre dépôt.

GitHub Actions

Dans les réglages Runner de votre dépôt ou organisation, sélectionnez macOS et ARM64, puis téléchargez et configurez le runner auto-hébergé à l’aide des commandes indiquées sur la page.

Ajoutez des labels d’usage tels que desk-m4. Lancez d’abord une tâche de diagnostic en mode interactif, puis enregistrez le service en arrière-plan pour l’utilisateur actuel conformément aux instructions du paquet.

Combinez self-hosted, macOS, ARM64 et un label personnalisé adapté à l’usage.

GitLab Runner

Après l’installation du Runner, créez-en un pour votre projet ou groupe et récupérez son jeton d’authentification. Choisissez un exécuteur adapté à la machine. Pour compiler nativement sous macOS, vous pouvez commencer par l’exécuteur shell.

N’acceptez que les tâches de projets de confiance et définissez les labels macos-arm64 et ceux correspondant à l’usage. Précisez explicitement si les tâches sans label sont acceptées.

Vérifiez l’enregistrement avec gitlab-runner verify, puis examinez le journal de la première tâche.

Agent Jenkins

Dans votre contrôleur Jenkins, créez un nœud permanent et définissez le répertoire de travail distant, le nombre d’exécuteurs et les labels. Suivez les instructions de la page du nœud pour le connecter via SSH ou avec la commande de lancement de l’agent.

Vérifiez que l’utilisateur d’exécution, la version de Java et l’environnement en ligne de commande sont cohérents. Pour la première tâche, affichez uniquement les versions des outils plutôt que d’utiliser le processus de publication comme test de connexion.

Commencez avec un seul exécuteur, puis ajustez le parallélisme après avoir vérifié les pics de mémoire et de stockage.

Utilisez les labels pour décrire les capacités, pas l’état temporaire

Utilisez par exemple le label d’architecture macos-arm64, celui d’usage ios-build, puis desk-m4 pour identifier ce type de machine. N’ajoutez des labels de nœud ou de version que si vous devez cibler un environnement précis. Des labels trop spécifiques risquent de ne correspondre à aucune machine.

name: workstation-check
on: workflow_dispatch
jobs:
  check:
    runs-on: [self-hosted, macOS, ARM64, desk-m4]
    steps:
      - name: Check toolchain
        run: |
          uname -m
          xcodebuild -version
          df -h

Un runner auto-hébergé exécute le code du dépôt. Ne permettez pas à des contributions externes non fiables d’accéder à une machine qui détient des éléments de signature. Séparez les droits de build et de publication, injectez les secrets via les variables confidentielles de la CI et limitez les branches autorisées.

Retrouvez vos habitudes de travail

Migrez données, outils et planification en trois étapes

Ne copiez pas tout votre dossier utilisateur. Commencez par un projet, documentez les dépendances reproductibles, puis modifiez les labels CI. Chaque étape peut être vérifiée et annulée indépendamment.

01 · Données

Synchronisez le projet, puis importez les éléments de signature

Synchronisez votre répertoire de travail depuis votre ordinateur avec rsync, en excluant les fichiers de build. Exportez les certificats avec leur clé privée dans un fichier protégé par mot de passe et migrez séparément les profils de provisionnement. Une fois l’importation vérifiée, supprimez les copies temporaires.

rsync -av \
  --exclude DerivedData \
  --exclude build \
  -e "ssh -i ~/.ssh/minivps_workstation" \
  ./App/ dev@203.0.113.24:~/work/App/

Validation : les fichiers du projet sont présents et le certificat comme la clé privée nécessaires à la signature sont disponibles.

02 · Outils

Alignez les dépendances à partir d’un inventaire

Exportez un Brewfile en local, vérifiez-le sur la machine distante, puis installez les outils. Préparez la version de Xcode requise par le projet et sélectionnez une version installée avec xcodes. Vérifiez ensuite Ruby, Bundler et le fichier de verrouillage du projet.

brew bundle dump --file=Brewfile
brew bundle --file=Brewfile
xcodes installed
xcodes select
xcodebuild -version

Validation : les versions des outils correspondent aux exigences du projet et l’installation des dépendances peut être relancée.

03 · Intégration CI

Ne changez les labels de planification qu’à la fin

Conservez d’abord votre pipeline existant et ajoutez une tâche de vérification déclenchée manuellement. Vérifiez qu’elle peut lire le projet, signer et téléverser les artefacts, puis dirigez les tâches de production vers la nouvelle machine en modifiant runs-on ou les labels du nœud.

cd ~/work/App
bundle install
xcodebuild -list
bundle exec fastlane beta

Validation : une tâche complète aboutit, les artefacts sont récupérables et les échecs peuvent être diagnostiqués.

Cet ordre de migration ne garantit pas une durée précise. La première installation des dépendances, le téléchargement des SDK et la taille du projet prennent généralement plus de temps qu’une connexion SSH. Commencez par vérifier un build sans publication.

Expérimentez au-delà des builds

Isolez l’environnement avant de télécharger les poids du modèle

Desk M4 dispose de 16 Go de mémoire unifiée, partagée entre le système, l’interface graphique et le modèle. La quantification, la longueur du contexte et le parallélisme déterminent ce qui peut fonctionner. Un SSD supplémentaire augmente le stockage, pas la mémoire.

MLX : environnement Python isolé

Installez MLX et les outils d’inférence dans un environnement virtuel pour ne pas modifier Python système. Vérifiez d’abord que les modules s’importent, puis choisissez un modèle et une quantification adaptés.

python3 -m venv ~/venvs/mlx
source ~/venvs/mlx/bin/activate
python -m pip install -U pip
python -m pip install mlx mlx-lm
python -c "import mlx.core as mx; print(mx.default_device())"

Commencez par un petit modèle, un contexte court et une seule requête. Surveillez la pression mémoire avant d’augmenter la charge.

llama.cpp : indiquez les poids explicitement

Installez l’outil avec Homebrew et lancez-le avec un fichier GGUF local. Créez d’abord le chemin d’exemple et placez-y le fichier du modèle. Vérifiez les paramètres à l’aide de l’aide de la version installée.

brew install llama.cpp
llama-cli --help
llama-cli \
  -m /Volumes/WorkSSD/models/model.gguf \
  -p "Hello" -n 64

Le fichier GGUF doit être compatible avec l’architecture du modèle et le format de quantification choisis.

Ollama : limitez d’abord l’accès à la machine

Après l’installation, liez le service à l’adresse locale, puis récupérez les poids selon les instructions de leur source. Pour y accéder depuis votre ordinateur, privilégiez un transfert de port SSH plutôt que d’exposer directement l’API d’inférence.

brew install ollama
OLLAMA_HOST=127.0.0.1:11434 \
OLLAMA_MODELS=/Volumes/WorkSSD/models/ollama \
ollama serve

L’utilisation et le téléchargement des modèles doivent respecter leurs licences. Le lancement du service ne signifie pas que les poids sont disponibles.

Regroupez les modèles dans un même répertoire

Dans les exemples ci-dessous, /Volumes/WorkSSD désigne un SSD supplémentaire correctement monté. Le répertoire models contient les poids et cache les caches régénérables. Il s’agit uniquement d’un exemple de chemin : le système n’utilisera pas automatiquement ce nom de volume. Avant de créer les répertoires, vérifiez que le disque est monté et accessible en écriture. Évitez d’enregistrer de gros fichiers sur le disque système si le volume n’est pas monté.

diskutil info /Volumes/WorkSSD
test -d /Volumes/WorkSSD && test -w /Volumes/WorkSSD
mkdir -p /Volumes/WorkSSD/models /Volumes/WorkSSD/cache
export HF_HOME=/Volumes/WorkSSD/cache/huggingface
Identifiez le disque avant d’y écrire

Augmentez le stockage ; plusieurs machines ne partagent pas leur mémoire

Les options supplémentaires comprennent un SSD de +1 To, un SSD de +2 To et une connexion de plusieurs machines via Thunderbolt 5. Le nom du disque, son identifiant et les informations de liaison dépendent de votre instance. Ne reprenez pas les identifiants de disque d’une autre personne.

Identifier le SSD supplémentaire

Affichez les disques physiques externes, puis vérifiez le nom du volume, sa capacité et l’espace disponible. Les commandes suivantes ne font que lire des informations et ne formatent pas le disque.

diskutil list external physical
ls /Volumes
df -h
diskutil info /Volumes/WorkSSD

Une fois le disque monté, vous pouvez y déplacer des modèles, des caches de build ou des projets. Avant le transfert, arrêtez les builds qui écrivent dans les répertoires concernés et conservez une sauvegarde indépendante.

N’exécutez pas à l’aveugle eraseDisk ni d’autre commande d’effacement. Si le disque n’apparaît pas, joignez les résultats des vérifications en lecture seule à votre ticket.

Comprendre les limites du fonctionnement en parallèle

La connexion de plusieurs machines via Thunderbolt 5 convient aux workflows qui nécessitent des échanges entre machines ou des transferts de données. Chaque machine reste indépendante, avec son propre système, ses tâches et sa mémoire.

system_profiler SPThunderboltDataType
networksetup -listallhardwareports
ifconfig

La détection des interfaces ne signifie pas que votre application peut déjà fonctionner de manière distribuée. Vous devez configurer le réseau, le protocole de transfert et la répartition des tâches. Contactez-nous avant la commande pour confirmer les connexions et configurations possibles.

Plusieurs machines ne forment pas automatiquement un Mac doté d’une mémoire plus importante et n’accélèrent pas nécessairement les builds.

Lors du déplacement des caches, distinguez le recréable de l’irremplaçable

DerivedData et les caches de téléchargement des dépendances peuvent être régénérés. En revanche, les modifications non validées du code source, les clés privées de signature et les résultats expérimentaux ne peuvent pas être récupérés à partir d’un cache. Gérez ces données séparément et sauvegardez d’abord tout ce qui ne peut pas être remplacé. Avant un renouvellement ou une expiration, exportez les projets, artefacts et configurations à conserver. Ne faites pas du disque de votre machine votre unique sauvegarde.

Transmettez-nous les bons éléments

Un problème ? Envoyez-nous ces quatre informations

Pour un problème lié à l’instance, connectez-vous au portail et ouvrez un ticket afin qu’il soit associé à votre commande. Si vous ne pouvez pas vous connecter, avez une question avant l’achat ou souhaitez apporter des précisions, écrivez à support@macminivps.com.

  • Numéro de commande et nœud : précisez la machine concernée. N’envoyez ni mot de passe ni clé privée.
  • Heure et fuseau horaire : indiquez quand le problème est apparu et s’il peut être reproduit de façon fiable.
  • Extrait exact de l’erreur : conservez la commande, le code de sortie et les lignes de journal utiles. Supprimez les jetons, le contenu des certificats et les données personnelles.
  • Vérifications déjà effectuées : par exemple, essayer un autre réseau local, vérifier le port SSH ou lancer un build séparément.

Délais de réponse

Nous n’indiquons pas de délai moyen ni de plage horaire fixe sans confirmation. Les modalités de réponse sont précisées sur la page de contact et dans les réponses à votre ticket. Après l’avoir envoyé, ajoutez les informations complémentaires au même ticket plutôt que d’en créer plusieurs pour le même problème.

Si la connexion est en cause, précisez si SSH et VNC échouent tous les deux. Si seul le build est affecté, indiquez si la même commande fonctionne dans une session interactive. Ces informations permettent de distinguer les problèmes de réseau, d’authentification, d’environnement et de projet.

Vous connaissez les étapes ?
Choisissez une machine pour votre projet

Desk M4 est un Mac mini physique dédié, non virtualisé. Vérifiez d’abord la version de Xcode exigée par votre projet, la durée de location et le stockage, puis configurez votre commande. La disponibilité affichée par le portail fait foi.

Paiement par USDT-TRC20 ou Visa / Mastercard / Amex (via Stripe) uniquement. Tous les prix sont en dollars américains ; les moyens de paiement disponibles dépendent de la réponse du prestataire de paiement.