docs(n8n-sandbox): clarify post-install setup (#4)
Test / test (push) Canceled after 0s

Document the actual n8n override and optional SearXNG JSON configuration.
This commit was merged in pull request #4.
This commit is contained in:
2026-09-03 08:06:39 +00:00
3 changed files with 73 additions and 14 deletions
+13
View File
@@ -78,6 +78,19 @@ describe("n8n-sandbox installation secrets", () => {
})
})
describe("n8n-sandbox post-install documentation", () => {
test("documents the actual n8n override and optional SearXNG JSON setup", async () => {
const description = await getFile('n8n-sandbox', 'metadata/description.md')
expect(description).toContain('services:\n n8n-2:\n environment:')
expect(description).toContain('N8N_SANDBOX_SERVICE_URL=http://sandbox-api:8080')
expect(description).not.toContain('sandbox-api:<PORT')
expect(description).toContain('N8N_SANDBOX_SERVICE_API_KEY=<clé choisie lors de linstallation>')
expect(description).toContain('/opt/runtipi/app-data/migrated/searxng/data/settings.yml')
expect(description).toContain('- json')
})
})
describe("modern compose files preserve runtime semantics", () => {
test("n8n-sandbox keeps its one-shot certificate service", async () => {
const fileContent = await getFile('n8n-sandbox', 'docker-compose.yml')
+1 -1
View File
@@ -6,7 +6,7 @@
"no_gui": true,
"dynamic_config": true,
"port": 8080,
"tipi_version": 2,
"tipi_version": 3,
"min_tipi_version": "4.7.0",
"version": "1.3.0",
"author": "n8n",
+59 -13
View File
@@ -1,33 +1,79 @@
# n8n Sandbox Service
Sandbox auto-hébergé pour l'**AI Assistant** de n8n (setup « Self-host the sandbox manually » de la doc n8n). L'app déploie les trois services de la stack officielle :
Sandbox auto-hébergé pour l'**AI Assistant** de n8n (configuration « Self-host the sandbox manually » de la documentation n8n). L'app déploie les trois services de la stack officielle :
| Service | Rôle |
|---|---|
| `sandbox-certs` | Job one-shot : génère la CA privée et les certificats mTLS, puis s'arrête. |
| `sandbox-api` | Point d'entrée HTTP (`:8080`) que n8n appelle pour exécuter du code. |
| `sandbox-api` | Point d'entrée HTTP interne (`:8080`) que n8n appelle pour exécuter du code. |
| `sandbox-runner-1` | Docker-in-Docker **privileged** : crée et exécute les conteneurs sandbox. |
## Après l'installation
Lors de l'installation, choisir une clé forte dans le champ **Clé API partagée avec n8n**. Dans l'app officielle **n8n** (paramètres ou `app.env`), ajouter le bloc suivant en recopiant cette même clé :
Pendant l'installation, choisir une clé forte dans le champ **Clé API partagée avec n8n** et la conserver dans un gestionnaire de mots de passe.
```
N8N_ENABLED_MODULES=instance-ai
N8N_INSTANCE_AI_SANDBOX_ENABLED=true
N8N_INSTANCE_AI_SANDBOX_PROVIDER=n8n-sandbox
N8N_INSTANCE_AI_SANDBOX_IMAGE=n8nio/n8n-sandbox-service-sandbox:1.3.0
N8N_SANDBOX_SERVICE_URL=http://sandbox-api:8080
N8N_SANDBOX_SERVICE_API_KEY=<même valeur que « Clé API partagée avec n8n »>
N8N_PROXY_HOPS=1
Dans l'application officielle **n8n**, activer la **configuration utilisateur Docker Compose**, puis ajouter :
```yaml
# Add your docker-compose overrides here.
# The overrides will be merged with the generated docker-compose.yml file.
# Heure de Paris
services:
n8n-2:
environment:
- GENERIC_TIMEZONE=Europe/Paris
# AI Assistant et Sandbox externe
- N8N_ENABLED_MODULES=instance-ai
- N8N_INSTANCE_AI_SANDBOX_ENABLED=true
- N8N_INSTANCE_AI_SANDBOX_PROVIDER=n8n-sandbox
- N8N_INSTANCE_AI_SANDBOX_IMAGE=n8nio/n8n-sandbox-service-sandbox:1.3.0
- N8N_SANDBOX_SERVICE_URL=http://sandbox-api:8080
- N8N_SANDBOX_SERVICE_API_KEY=<clé choisie lors de linstallation>
```
Puis redémarrer n8n et vérifier depuis son conteneur :
Remplacer entièrement `<clé choisie lors de linstallation>` par la vraie clé, sans conserver les caractères `<` et `>`. Ne jamais publier cette valeur.
Le port de `N8N_SANDBOX_SERVICE_URL` reste `8080` : il s'agit du port interne du service Docker, pas du port éventuellement choisi dans l'interface Runtipi.
Enregistrer la configuration, puis redémarrer l'application **n8n**. Pour vérifier la communication depuis son conteneur :
```sh
wget -qO- http://sandbox-api:8080/healthz
```
wget -qO- http://sandbox-api:8080/healthz # {"status":"ok"}
La réponse attendue est `{"status":"ok"}`.
## Recherche web avec SearXNG (facultatif)
SearXNG est une application séparée et n'est pas nécessaire au fonctionnement du sandbox. L'installer seulement si les workflows ou outils IA de n8n doivent effectuer des recherches web.
Pour autoriser les réponses JSON de SearXNG, modifier :
```sh
sudo nano /opt/runtipi/app-data/migrated/searxng/data/settings.yml
```
Conserver les autres réglages existants et vérifier que le fichier contient :
```yaml
use_default_settings: true
search:
formats:
- html
- json
```
Contrôle facultatif du contenu et des fins de ligne :
```sh
sudo cat -A /opt/runtipi/app-data/migrated/searxng/data/settings.yml
```
Redémarrer ensuite l'application **SearXNG**, puis redémarrer **n8n** si sa configuration a également été modifiée.
## Données persistantes
Tout est sous `app-data/<store>/n8n-sandbox/data/` :