Utilisation Avancée

Sauvegarder les onglets

Lorsque les onglets OnionShare que vous hébergez sont fermés, ils sont détruits. Les sites web hébergés de façon persistante restent disponibles à la même adresse, même lorsque l’ordinateur qui les hébergent est redémarré.

Rendez tout onglet persistant en cochant la case « Toujours ouvrir cet onglet au démarrage d’OnionShare » avant de démarrer votre serveur.

_images/advanced-save-tabs.png

En démarrant OnionShare, vos onglets sauvegardés lors de votre dernière session seront affichés. Chaque service peut alors être démarré manuellement, et sera disponible avec la même adresse OnionShare et protégé par la même clé privée.

Si vous enregistrez un onglet, une copie de sa clé secrète de service en oignon est stockée sur votre ordinateur.

Désactiver la Clé Privée

Par défaut, tous les services OnionShare sont protégés par une clé privée, que Tor appelle « authentification du client ».

Le Navigateur Tor vous demandera de saisir votre clé privée lorsque vous chargez un service OnionShare. Si vous voulez permettre au public d’utiliser votre service, il vaut mieux désactiver complètement la clé privée.

Pour désactiver la clé privée pour chaque onglet, cochez la case « Ceci est un service public OnionShare (désactive la clé privée) » avant de démarrer le serveur. Le serveur sera alors public et une clé privée ne sera pas chargée dans le Navigateur Tor.

Titres personnalisés

Lors du chargement des services d’OnionShare dans le Navigateur Tor, les utilisateurs voient le titre par défaut de chaque type de service. Par exemple, le titre par défaut pour les services de dialogue en ligne est « Dialogue OnionShare ».

Si vous modifiez le paramètre « Titre personnalisé » avant de démarrer un serveur, vous pouvez le modifier.

Programmation horaire

OnionShare permet de programmer le démarrage et l’arrêt d’un service. Avant de démarrer un serveur, cliquez sur « Afficher les paramètres avancés » dans son onglet et cochez soit « Démarrer un service oignon à une heure prédéterminée » soit « Arrêter un service oignon à une heure prédéterminée » ou les deux, et définissez les dates et heures.

Les services programmés pour démarrer ultérieurement affichent un compte à rebours lorsque vous cliquez sur le bouton « Commencer le partage ». Les services programmés pour s’arrêter ultérieurement affichent un compte à rebours une fois démarrés.

Programmer le démarrage automatique d’un service OnionShare peut être utilisé pour vérifier l’activité d’un utilisateur. Cela signifie que votre service est rendu public à un moment donné dans le futur si vous n’êtes pas là pour l’empêcher. Si rien ne vous arrive, vous pouvez annuler le service avant qu’il ne soit programmé pour être mis en route.

_images/advanced-schedule-start-timer.png

La programmation de l’arrêt automatique d’un service OnionShare limite son exposition. Si vous souhaitez partager des informations secrètes ou quelque chose qui sera périmé, vous pouvez le faire pour une durée limitée sélectionnée.

_images/advanced-schedule-stop-timer.png

Interface en ligne de commande

En plus de son interface graphique, OnionShare dispose d’une interface en ligne de commande.

Installer la version en ligne de commande

Si vous avez installé le paquet Snap, macOS ou Windows, la version en ligne de commande est déjà installée.

Vous pouvez aussi installer uniquement la version en ligne de commande d’OnionShare avec pip3 :

pip3 install --user onionshare-cli

Notez que vous aurez aussi besoin d’installer le paquet tor. Sur macOS, installez le avec : brew install tor

Puis lancez-le avec

onionshare-cli --help

Des informations sur son installation sur différents systèmes d’exploitation peuvent être trouvées dans le fichier CLI README dans le dépôt Git.

Lancer la ligne de commande avec Snap

Si vous avez installé OnionShare avec le paquet Snap, vous pouvez lancer onionshare.cli pour accéder à la version en ligne de commande.

Lancer la ligne de commande sous macOS

Dans un terminal, vous pouvez exécuter /Applications/OnionShare.app/Contents/MacOS/onionshare-cli --help

Lancer la ligne de commande sous Windows

Dans l’installation de Windows, l’exécutable onionshare-cli.exe est proposé.

Utilisation

Vous pouvez consulter la documentation de l’interface en ligne de commande en lançant onionshare --help : :

$ onionshare-cli --help
╭───────────────────────────────────────────╮
│    *            ▄▄█████▄▄            *    │
│               ▄████▀▀▀████▄     *         │
│              ▀▀█▀       ▀██▄              │
│      *      ▄█▄          ▀██▄             │
│           ▄█████▄         ███        -+-  │
│             ███         ▀█████▀           │
│             ▀██▄          ▀█▀             │
│         *    ▀██▄       ▄█▄▄     *        │
│ *             ▀████▄▄▄████▀               │
│                 ▀▀█████▀▀                 │
│             -+-                     *     │
│   ▄▀▄               ▄▀▀ █                 │
│   █ █     ▀         ▀▄  █                 │
│   █ █ █▀▄ █ ▄▀▄ █▀▄  ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄   │
│   ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █   ▀▄▄   │
│                                           │
│                  v2.4.1                   │
│                                           │
│          https://onionshare.org/          │
╰───────────────────────────────────────────╯

usage: onionshare-cli [-h] [--receive] [--website] [--chat] [--local-only] [--connect-timeout SECONDS] [--config FILENAME] [--persistent FILENAME] [--title TITLE] [--public]
                      [--auto-start-timer SECONDS] [--auto-stop-timer SECONDS] [--no-autostop-sharing] [--log-filenames] [--qr] [--data-dir data_dir] [--webhook-url webhook_url] [--disable-text]
                      [--disable-files] [--disable_csp] [--custom_csp custom_csp] [-v]
                      [filename ...]

positional arguments:
  filename                  List of files or folders to share

optional arguments:
  -h, --help                Show this help message and exit
  --receive                 Receive files
  --website                 Publish website
  --chat                    Start chat server
  --local-only              Don't use Tor (only for development)
  --connect-timeout SECONDS
                            Give up connecting to Tor after a given amount of seconds (default: 120)
  --config FILENAME         Filename of custom global settings
  --persistent FILENAME     Filename of persistent session
  --title TITLE             Set a title
  --public                  Don't use a private key
  --auto-start-timer SECONDS
                            Start onion service at scheduled time (N seconds from now)
  --auto-stop-timer SECONDS
                            Stop onion service at scheduled time (N seconds from now)
  --no-autostop-sharing     Share files: Continue sharing after files have been sent (the default is to stop sharing)
  --log-filenames           Log file download activity to stdout
  --qr                      Display a QR code in the terminal for share links
  --data-dir data_dir       Receive files: Save files received to this directory
  --webhook-url webhook_url
                            Receive files: URL to receive webhook notifications
  --disable-text            Receive files: Disable receiving text messages
  --disable-files           Receive files: Disable receiving files
  --max-upload-size size    Receive files: Maximum size of an upload, e.g. 100mb (0 means no limit)
  --max-upload-size-total   Receive files: Apply the maximum upload size to the entire service lifespan
  --disable_csp             Publish website: Disable the default Content Security Policy header (allows your website to use third-party resources)
  --custom_csp custom_csp   Publish website: Set a custom Content Security Policy header
  -v, --verbose             Log OnionShare errors to stdout, and web errors to disk

Exécuter l’interface en ligne de commande comme unité systemd

Il est possible de démarrer automatiquement OnionShare à partir de la CLI à l’aide d’un fichier d’unité systemd.

Cela peut être particulièrement utile si vous travaillez en mode “persistant” et que vous souhaitez démarrer le même service oignon à chaque démarrage de votre machine.

Pour ce faire, vous devez d’abord préparer une configuration JSON OnionShare.

Voici la configuration principale d’OnionShare. Dans cet exemple, elle est stockée dans /home/user/.config/onionshare/onionshare.json. Vous devrez peut-être ajuster certains réglages, mais si OnionShare est déjà installé, elle ressemble probablement déjà beaucoup à ceci :

{
  "version": "2.6.2",
  "connection_type": "bundled",
  "control_port_address": "127.0.0.1",
  "control_port_port": 9051,
  "socks_address": "127.0.0.1",
  "socks_port": 9050,
  "socket_file_path": "/var/run/tor/control",
  "auth_type": "no_auth",
  "auth_password": "",
  "auto_connect": true,
  "use_autoupdate": true,
  "autoupdate_timestamp": null,
  "bridges_enabled": false,
  "bridges_type": "built-in",
  "bridges_builtin_pt": "obfs4",
  "bridges_moat": "",
  "bridges_custom": "",
  "bridges_builtin": {},
  "persistent_tabs": [
      "my-persistent-onion"
  ],
  "locale": "en",
  "theme": 0
}

Remarquez la section « persistent_tabs ». Nous allons maintenant créer un fichier /home/user/.config/onionshare/persistent/my-persistent-onion.json qui ressemble à ceci :

{
  "onion": {
      "private_key": "UDIaZD8QgoXRP8JnAJ+pnlogQazfZ0wrfWJk5zPBGUBqg6+lozzjUJKTYWxwrxR33pDgJdTFtCUN1CX1FE22UQ==",
      "client_auth_priv_key": "RHJSN4VI3NKGDSIWK45CCWTLYOJHA6DQQRQXUID3FXMAILYXWVUQ",
      "client_auth_pub_key": "J4YLYAHS25UU3TZTE27H32RN3MCRGLR345U52XS2JNQ76CCHCRSQ"
  },
  "persistent": {
      "mode": "share",
      "enabled": true
  },
  "general": {
      "title": null,
      "public": false,
      "autostart_timer": 0,
      "autostop_timer": 0,
      "service_id": "niktadkcp6z7rym3r5o3j2hnmis53mno5ughvur357xo7jkjvmqrchid",
      "qr": false
  },
  "share": {
     "autostop_sharing": true,
     "filenames": [
       "/home/user/my-shared-file.txt"
     ]
  },
  "receive": {
     "data_dir": "/home/user/OnionShare",
     "webhook_url": null,
     "disable_text": false,
     "disable_files": false
  },
  "website": {
     "disable_csp": false,
     "custom_csp": null,
     "filenames": []
  },
  "chat": {}
}

N’utilisez pas réellement cette clé privée, ce service_id ni ces clés client_auth ! Ils ne sont montrés qu’à titre d’exemple. Ne partagez jamais la private_key avec qui que ce soit.

Le plus simple pour générer l’adresse onion et la clé privée est de créer d’abord un onglet « épinglé » dans l’application de bureau OnionShare et de démarrer le partage une première fois. Les réglages persistants sont alors enregistrés dans votre dossier .config/onionshare/persistent/ sous un nom aléatoire. Vous pouvez désépingler cet onglet une fois la génération faite. Vous pouvez aussi le laisser tel quel et utiliser ce fichier persistant dans votre unité systemd ci-dessous.

Vous pouvez maintenant créer une unité systemd dans /etc/systemd/system/onionshare-cli.service. Veillez à remplacer User et Group par votre propre utilisateur et votre propre groupe, et à adapter les chemins vers le binaire onionshare-cli ainsi que vers vos configurations JSON et vos partages.

L’unité systemd doit ressembler à ceci :

[Unit]
Description=OnionShare CLI
After=network.target

[Service]
ExecStart=/home/user/.local/bin/onionshare-cli --persistent /home/user/.config/onionshare/persistent/my-persistent-onion.json /home/user/my-shared-file.txt
Restart=on-failure
User=user
Group=user

[Install]
WantedBy=multi-user.target

Notez que, bien que /home/user/my-shared-file.txt soit défini dans la section filenames du fichier my-persistent-onion.json, il reste nécessaire de le passer en argument à la commande onionshare-cli.

Veillez à exécuter sudo systemctl daemon-reload après avoir créé le fichier d’unité.

Vous pouvez maintenant exécuter sudo systemctl start onionshare-cli.service. Si journalctl est installé, vous pouvez exécuter sudo journalctl -f -t onionshare-cli et vous devriez voir votre service démarrer :

[...]
Feb 09 10:14:09 onionshare onionshare-cli[18852]: [6.5K blob data]
Feb 09 10:14:18 onionshare onionshare-cli[18852]: Compressing files.
Feb 09 10:14:18 onionshare onionshare-cli[18852]: Give this address and private key to the recipient:
Feb 09 10:14:18 onionshare onionshare-cli[18852]: http://niktadkcp6z7rym3r5o3j2hnmis53mno5ughvur357xo7jkjvmqrchid.onion
Feb 09 10:14:18 onionshare onionshare-cli[18852]: Private key: RHJSN4VI3NKGDSIWK45CCWTLYOJHA6DQQRQXUID3FXMAILYXWVUQ
Feb 09 10:14:18 onionshare onionshare-cli[18852]: Press Ctrl+C to stop the server

Si vous ne voulez pas que vos utilisateurs aient à utiliser une clé privée, mettez public à true dans les réglages general du fichier my-persistent-onion.json.

Raccourcis Clavier

L’application de bureau OnionShare contient quelques raccourcis clavier, pour des raisons de commodité et d’accessibilité : :

Ctrl T - New Tab
Ctrl X - Closes current tab

Et à partir de l’écran principal du sélecteur de mode :

Ctrl S - Share mode
Ctrl R - Receive mode
Ctrl W - Website mode
Ctrl C - Chat mode
Ctrl H - Settings tab

Migrer vos données OnionShare vers un autre ordinateur

Vous pouvez vouloir migrer vos données OnionShare lorsque vous changez d’ordinateur. C’est particulièrement vrai si vous aviez une adresse onion « persistante » et que vous souhaitez la conserver.

OnionShare stocke toutes ces données dans un dossier précis. Copiez sur votre nouvel ordinateur le dossier correspondant à votre système d’exploitation :

  • Linux : ~/.config/onionshare

  • macOS : ~/Library/Application Support/OnionShare

  • Windows : %APPDATA%\OnionShare

Paramètres du fichier de configuration

OnionShare stocke ses réglages dans un fichier JSON. La version en ligne de commande et la version de bureau utilisent toutes deux ce fichier de configuration. La version en ligne de commande permet aussi d’indiquer le chemin d’un fichier de configuration personnalisé avec --config.

Voici les paramètres du fichier de configuration et leur signification. Si votre fichier de configuration contient d’autres paramètres non listés ici, ils sont peut-être obsolètes et hérités d’anciennes versions d’OnionShare.

Paramètre

Type

Explication

version

string

La version d’OnionShare. Vous ne devriez jamais avoir à modifier cette valeur.

connection_type

string

La façon dont OnionShare se connecte à Tor. Les valeurs possibles sont « bundled », « automatic » (utiliser la connexion Tor du Navigateur Tor), « control_port » ou « socket_file ». Valeur par défaut : « bundled »

control_port_address

string

L’adresse IP du port de contrôle de Tor, si connection_type vaut « control_port ». Valeur par défaut : « 127.0.0.1 »

control_port_port

integer

Le numéro du port de contrôle de Tor, si connection_type vaut « control_port ». Valeur par défaut : « 9051 »

socks_address

string

L’adresse IP du mandataire SOCKS de Tor, si connection_type vaut « control_port » ou « socket_file ». Valeur par défaut : « 127.0.0.1 »

socks_port

integer

Le numéro de port du mandataire SOCKS de Tor, si connection_type vaut « control_port » ou « socket_file ». Valeur par défaut : « 9050 »

socket_file_path

string

Le chemin du fichier de socket de Tor, si connection_type vaut « socket_file ». Valeur par défaut : « /var/run/tor/control »

auth_type

string

Si l’accès au port de contrôle de Tor exige un mot de passe, mettez « password », sinon « no_auth ». Valeur par défaut : « no_auth »

auth_password

string

Si l’accès au port de contrôle de Tor exige un mot de passe et que auth_type vaut « password », indiquez le mot de passe ici. Valeur par défaut : « » (vide)

auto_connect

boolean

Indique si OnionShare doit se connecter automatiquement à Tor à son démarrage. Valeur par défaut : False

use_autoupdate

boolean

Indique si OnionShare doit vérifier automatiquement les mises à jour (via Tor). Ce réglage ne vaut que pour les installations macOS ou Windows. Valeur par défaut : True.

autoupdate_timestamp

integer

La dernière fois qu’OnionShare a vérifié les mises à jour. Valeur par défaut : None

bridges_enabled

boolean

Indique s’il faut se connecter à Tor avec des ponts. Valeur par défaut : False

bridges_type

string

Quand bridges_enabled vaut True, indique d’où charger les ponts. Les valeurs possibles sont « built-in » (ponts fournis avec OnionShare, qui peuvent être mis à jour depuis Tor), « moat » (demander des ponts à l’API Moat de Tor) ou « custom » (ponts fournis par l’utilisateur). Valeur par défaut : « built-in »

bridges_builtin_pt

string

Quand bridges_type vaut « built-in », indique le type de protocole de pont à utiliser. Les valeurs possibles sont « obfs4 », « meek » ou « snowflake ». Valeur par défaut : « obfs4 »

bridges_moat

string

Quand bridges_type vaut « moat », les ponts renvoyés par l’API Moat de Tor sont stockés ici. Valeur par défaut : « » (vide)

bridges_custom

string

Quand bridges_type vaut « custom », les ponts indiqués par l’utilisateur sont stockés ici. Séparez chaque ligne de pont dans la chaîne par « n ». Valeur par défaut : « » (vide)

bridges_builtin

dict

Quand bridges_type vaut « built-in », OnionShare récupère les derniers ponts intégrés recommandés par Tor et les stocke ici. Valeur par défaut : {}

persistent_tabs

list

Si l’utilisateur a défini des onglets comme « enregistrés » (c’est-à-dire persistants à chaque démarrage d’OnionShare, avec une adresse onion qui ne change pas), ceux-ci reçoivent un identifiant aléatoire qui est listé ici. L’onion persistant est stocké dans un fichier JSON portant le même nom que cet identifiant, dans un sous-dossier « persistent » du dossier de configuration d’OnionShare. Valeur par défaut : []

locale

string

La locale utilisée dans OnionShare. Valeur par défaut : None (ce qui équivaut à « en »). Pour les codes de locale valides, voir « available_locales » dans https://github.com/onionshare/onionshare/blob/main/cli/onionshare_cli/settings.py

theme

boolean

Le thème de l’application de bureau OnionShare. Les valeurs possibles sont 0 (détecter automatiquement le thème clair ou sombre de l’ordinateur de l’utilisateur), 1 (clair) ou 2 (sombre).

Paramètres du fichier de configuration des onions persistants

Comme décrit plus haut, chaque onion « persistant » a ses propres paramètres, stockés dans son propre fichier JSON. Le chemin de ce fichier peut être indiqué à l’outil en ligne de commande avec --persistent.

Voici un exemple de configuration JSON persistante :

{
  "onion": {
      "private_key": "0HGxILDDwYhxAB2Zq8mM3Wu3MirBgK7Fw2/tVrTw1XraElH7MWbVn3lzKbcJEapVWz2TFjaoCAVN48hGqraiRg==",
      "client_auth_priv_key": "UT55HDBA5VSRWOUERMGOHEIBKZCMOOGZAFFNI54GDQFZ6CMCUGIQ",
      "client_auth_pub_key": "TPQCMCV26UEDMCWGZCWAWM4FOJSQKZZTVPC5TC3CAGMDWKV255OA"
  },
  "persistent": {
      "mode": "share",
      "enabled": true,
      "autostart_on_launch": false
  },
  "general": {
      "title": null,
      "public": false,
      "autostart_timer": false,
      "autostop_timer": false,
      "service_id": "hvsufvk2anyadehahfqiacy4wbrjt2atpnagk4itlkh4mdfsg6vhd5ad"
  },
  "share": {
      "autostop_sharing": true,
      "filenames": [
          "/home/user/git/onionshare/desktop/org.onionshare.OnionShare.svg"
      ],
      "log_filenames": false
  },
  "receive": {
      "data_dir": "/home/user/OnionShare",
      "webhook_url": null,
      "disable_text": false,
      "disable_files": false
  },
  "website": {
      "disable_csp": false,
      "custom_csp": null,
      "log_filenames": false,
      "filenames": []
  },
  "chat": {}
}

Voici les paramètres du fichier de configuration d’un onion persistant et leur signification, pour chaque section du JSON

onion

Paramètre

Type

Explication

private_key

string

Clé privée du service onion, encodée en Base64

client_auth_priv_key

string

La clé privée en cas d’authentification client. À envoyer à l’utilisateur.

client_auth_pub_key

string

La clé publique en cas d’authentification client. Utilisée du côté d’OnionShare.

persistent

Paramètre

Type

Explication

mode

string

Le mode utilisé par cet onion persistant. Les valeurs possibles sont « share », « receive », « website » ou « chat ».

enabled

boolean

Indique si la persistance est activée pour cet onion. Quand l’option de persistance est décochée dans l’application de bureau, ce fichier JSON est entièrement supprimé. Valeur par défaut : true

autostart_on_launch

boolean

Indique s’il faut démarrer automatiquement cet onion persistant au lancement d’OnionShare, une fois Tor connecté. Valeur par défaut : false

general

Paramètre

Type

Explication

title

string

Un titre personnalisé facultatif à afficher sur le service onion. Valeur par défaut : null (« OnionShare » est alors affiché)

public

boolean

Indique si le service onion est accessible avec ou sans clé privée (authentification client). Si true, aucune clé privée n’est requise.

autostart_timer

boolean

Indique si le service onion est configuré pour démarrer à une heure précise. L’heure peut être définie dans l’application de bureau ou indiquée en secondes avec --auto-start-timer dans l’outil en ligne de commande. Valeur par défaut : false

autostop_timer

boolean

Indique si le service onion est configuré pour s’arrêter à une heure précise. L’heure peut être définie dans l’application de bureau ou indiquée en secondes avec --auto-stop-timer dans l’outil en ligne de commande. Valeur par défaut : false

service_id

string

L’URL du service onion sur 32 caractères, sans le schéma et sans le suffixe « .onion ».

Les réglages ci-dessous sont propres au « mode » indiqué dans la section persistent ci-dessus.

share

Paramètre

Type

Explication

autostop_sharing

boolean

Indique s’il faut arrêter automatiquement le partage une fois les fichiers téléchargés une première fois. Valeur par défaut : true

filenames

list

La liste des fichiers à partager. Valeur par défaut : []

log_filenames

boolean

Indique s’il faut journaliser les requêtes d’URL sur la sortie standard avec l’outil en ligne de commande. Valeur par défaut : false

receive

Paramètre

Type

Explication

data_dir

string

Le chemin où sont stockés les fichiers ou messages texte reçus. Valeur par défaut : le dossier « OnionShare » du répertoire personnel de l’utilisateur.

webhook_url

string

Une URL de webhook vers laquelle OnionShare envoie une requête POST lorsqu’il reçoit des fichiers ou des messages texte. Valeur par défaut : null

disable_text

boolean

Indique s’il faut désactiver la réception de messages texte. Valeur par défaut : false

disable_files

boolean

Indique s’il faut désactiver la réception de fichiers. Valeur par défaut : false

max_upload_size

integer

Maximum size in bytes of a single upload request (including multipart overhead). 0 means no limit. Default: 0

max_upload_size_total

boolean

Whether max_upload_size applies to the service’s entire lifespan, refusing all further uploads once the total is reached. Default: false

total_upload_size

integer

Running total of bytes received by the service, persisted so the lifespan limit survives restarts. Managed automatically; set it to 0 to reset the count. Default: 0

website

Paramètre

Type

Explication

disable_csp

boolean

Si true, OnionShare n’envoie pas son en-tête Content Security Policy par défaut pour le site web. Valeur par défaut : false

custom_csp

string

Un en-tête Content Security Policy personnalisé à envoyer à la place de celui par défaut.

log_filenames

boolean

Indique s’il faut journaliser les requêtes d’URL sur la sortie standard avec l’outil en ligne de commande. Valeur par défaut : false

filenames

list

La liste des fichiers à partager. Valeur par défaut : []

chat

Il n’y a actuellement aucun réglage configurable pour le mode discussion.