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.
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.
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.
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
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 |
|
La version d’OnionShare. Vous ne devriez jamais avoir à modifier cette valeur. |
connection_type |
|
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 |
|
L’adresse IP du port de contrôle de Tor, si |
control_port_port |
|
Le numéro du port de contrôle de Tor, si |
socks_address |
|
L’adresse IP du mandataire SOCKS de Tor, si |
socks_port |
|
Le numéro de port du mandataire SOCKS de Tor, si |
socket_file_path |
|
Le chemin du fichier de socket de Tor, si |
auth_type |
|
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 |
|
Si l’accès au port de contrôle de Tor exige un mot de passe et que |
auto_connect |
|
Indique si OnionShare doit se connecter automatiquement à Tor à son démarrage. Valeur par défaut : False |
use_autoupdate |
|
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 |
|
La dernière fois qu’OnionShare a vérifié les mises à jour. Valeur par défaut : None |
bridges_enabled |
|
Indique s’il faut se connecter à Tor avec des ponts. Valeur par défaut : False |
bridges_type |
|
Quand |
bridges_builtin_pt |
|
Quand |
bridges_moat |
|
Quand |
bridges_custom |
|
Quand |
bridges_builtin |
|
Quand |
persistent_tabs |
|
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 |
|
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 |
|
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 |
|
Clé privée du service onion, encodée en Base64 |
client_auth_priv_key |
|
La clé privée en cas d’authentification client. À envoyer à l’utilisateur. |
client_auth_pub_key |
|
La clé publique en cas d’authentification client. Utilisée du côté d’OnionShare. |
persistent
Paramètre |
Type |
Explication |
|---|---|---|
mode |
|
Le mode utilisé par cet onion persistant. Les valeurs possibles sont « share », « receive », « website » ou « chat ». |
enabled |
|
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 |
|
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 |
|
Un titre personnalisé facultatif à afficher sur le service onion. Valeur par défaut : null (« OnionShare » est alors affiché) |
public |
|
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 |
|
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 |
autostop_timer |
|
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 |
service_id |
|
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.
receive
Paramètre |
Type |
Explication |
|---|---|---|
data_dir |
|
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 |
|
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 |
|
Indique s’il faut désactiver la réception de messages texte. Valeur par défaut : false |
disable_files |
|
Indique s’il faut désactiver la réception de fichiers. Valeur par défaut : false |
max_upload_size |
|
Maximum size in bytes of a single upload request (including multipart overhead). 0 means no limit. Default: 0 |
max_upload_size_total |
|
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 |
|
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 |
|
Si |
custom_csp |
|
Un en-tête Content Security Policy personnalisé à envoyer à la place de celui par défaut. |
log_filenames |
|
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 |
|
La liste des fichiers à partager. Valeur par défaut : [] |
chat
Il n’y a actuellement aucun réglage configurable pour le mode discussion.