123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- <!doctype html><!-- This is a valid HTML5 document. -->
- <!-- Screen readers, SEO, extensions and so on. -->
- <html lang="fr">
- <!-- Has to be within the first 1024 bytes, hence before the `title` element
- See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
- <meta charset="utf-8">
- <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
- <!-- The viewport meta is quite crowded and we are responsible for that.
- See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
- <meta name="viewport" content="width=device-width,initial-scale=1">
- <!-- Required to make a valid HTML5 document. -->
- <title>Tools for Communicating Offline and in Difficult Circumstances (archive) — David Larlet</title>
- <meta name="description" content="Publication mise en cache pour en conserver une trace.">
- <!-- That good ol' feed, subscribe :). -->
- <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
- <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
- <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
- <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
- <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
- <link rel="manifest" href="/static/david/icons2/site.webmanifest">
- <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
- <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
- <meta name="msapplication-TileColor" content="#f7f7f7">
- <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
- <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
- <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
- <!-- Documented, feel free to shoot an email. -->
- <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
- <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
- <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <script>
- function toggleTheme(themeName) {
- document.documentElement.classList.toggle(
- 'forced-dark',
- themeName === 'dark'
- )
- document.documentElement.classList.toggle(
- 'forced-light',
- themeName === 'light'
- )
- }
- const selectedTheme = localStorage.getItem('theme')
- if (selectedTheme !== 'undefined') {
- toggleTheme(selectedTheme)
- }
- </script>
-
- <meta name="robots" content="noindex, nofollow">
- <meta content="origin-when-cross-origin" name="referrer">
- <!-- Canonical URL for SEO purposes -->
- <link rel="canonical" href="https://www.complete.org/tools-for-communicating-offline-and-in-difficult-circumstances/">
-
- <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
-
-
- <article>
- <header>
- <h1>Tools for Communicating Offline and in Difficult Circumstances</h1>
- </header>
- <nav>
- <p class="center">
- <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
- <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
- </svg> Accueil</a> •
- <a href="https://www.complete.org/tools-for-communicating-offline-and-in-difficult-circumstances/" title="Lien vers le contenu original">Source originale</a>
- </p>
- </nav>
- <hr>
- <p>When things are difficult – maybe there’s been a disaster, or an invasion (this page is being written in 2022 just after Russia invaded Ukraine), or maybe you’re just backpacking off the grid – there are tools that can help you keep in touch, or move your data around. This page aims to survey some of them, roughly in order from easiest to more complex.</p>
- <h2 id="simple-radios">Simple radios</h2>
- <p>Handheld radios shouldn’t be forgotten. They are cheap, small, and easy to operate. Their range isn’t huge – maybe a couple of miles in rural areas, much less in cities – but they can be a useful place to start. They tend to have no actual encryption features (the “privacy” features really aren’t.) In the USA, options are FRS/GMRS and CB.</p>
- <h2 id="syncthing">Syncthing</h2>
- <p>With <a href="/syncthing/">Syncthing</a>, you can share files among your devices or with your friends. Syncthing essentially builds a private mesh for file sharing. Devices will auto-discover each other when on the same LAN or Wifi network, and opportunistically sync.</p>
- <p>I wrote more about offline uses of Syncthing, and its use with <a href="/nncp/">NNCP</a>, in my blog post <a href="https://changelog.complete.org/archives/10219-a-simple-delay-tolerant-offline-capable-mesh-network-with-syncthing-optional-nncp">A simple, delay-tolerant, offline-capable mesh network with Syncthing (+ optional NNCP)</a>. Yes, it is a form of a <a href="/mesh-network/">Mesh Network</a>!</p>
- <p>Homepage: <a href="https://syncthing.net/">https://syncthing.net/</a></p>
- <h2 id="briar">Briar</h2>
- <p>Briar is an instant messaging service based around Android. It’s IM with a twist: it can use a mesh of Bluetooh devices. Or, if Internet is available, Tor. It has even been extended to support the use of SD cards and USB sticks to carry your messages.</p>
- <p>Like some others here, it can relay messages for third parties as well.</p>
- <p>Homepage: <a href="https://briarproject.org/">https://briarproject.org/</a></p>
- <h2 id="manyverse-and-scuttlebutt">Manyverse and Scuttlebutt</h2>
- <p>Manyverse is a client for Scuttlebutt, which is a sort of asynchronous, offline-friendly social network. You can use it to keep in touch with your family and friends, and it supports syncing over Bluetooth and Wifi even in the absence of Internet.</p>
- <p>Homepages: <a href="https://www.manyver.se/">https://www.manyver.se/</a> and <a href="https://scuttlebutt.nz/">https://scuttlebutt.nz/</a></p>
- <h2 id="yggdrasil">Yggdrasil</h2>
- <p><a href="/yggdrasil/">Yggdrasil</a> is a self-healing, fully end-to-end <a href="/encrypted/">Encrypted</a> <a href="/mesh-network/">Mesh Network</a>. It can work among local devices or on the global Internet. It has network services that can egress onto things like Tor, I2P, and the public Internet. Yggdrasil makes a perfect companion to ad-hoc wifi as it has auto peer discovery on the local network.</p>
- <p>I talked about it in more detail in my blog post <a href="https://changelog.complete.org/archives/10319-make-the-internet-yours-again-with-an-instant-mesh-network">Make the Internet Yours Again With an Instant Mesh Network</a>.</p>
- <p>Homepage: <a href="https://yggdrasil-network.github.io/">https://yggdrasil-network.github.io/</a></p>
- <h2 id="ad-hoc-wifi">Ad-Hoc Wifi</h2>
- <p>Few people know about the ad-hoc wifi mode. Ad-hoc wifi lets devices in range talk to each other without an access point. You just all set your devices to the same network name and password and there you go. However, there often isn’t DHCP, so IP configuration can be a bit of a challenge. Yggdrasil helps here.</p>
- <h2 id="nncp">NNCP</h2>
- <p>Moving now to more advanced tools, <a href="/nncp/">NNCP</a> lets you assemble a network of peers that can use <a href="/asynchronous-communication/">Asynchronous Communication</a> over sneakernet, USB drives, radios, CD-Rs, Internet, tor, <a href="/nncp-over-yggdrasil/">NNCP over Yggdrasil</a>, <a href="/syncthing/">Syncthing</a>, Dropbox, S3, you name it . NNCP supports multi-hop file transfer and remote execution. It is fully end-to-end encrypted. Think of it as the offline version of ssh.</p>
- <p>Homepage: <a href="https://nncp.mirrors.quux.org/">https://nncp.mirrors.quux.org/</a></p>
- <h2 id="meshtastic">Meshtastic</h2>
- <p><a href="/meshtastic/">Meshtastic</a> uses long-range, low-power <a href="/lora/">LoRa</a> radios to build a long-distance, encrypted, instant messaging system that is a <a href="/mesh-network/">Mesh Network</a>. It requires specialized hardware, about $30, but will tend to get much better range than simple radios, and with very little power.</p>
- <p>Homepages: <a href="https://meshtastic.org/">https://meshtastic.org/</a> and <a href="https://meshtastic.letstalkthis.com/">https://meshtastic.letstalkthis.com/</a></p>
- <h2 id="portable-satellite-communicators">Portable Satellite Communicators</h2>
- <p>You can get portable satellite communicators that can send SMS from anywhere on earth with a clear view of the sky. The Garmin InReach mini and Zoleo are two credible options. Subscriptions range from about $10 to $40 per month depending on usage. They also have global SOS features.</p>
- <h2 id="telephone-lines">Telephone Lines</h2>
- <p>If you have a phone line and a modem, <a href="/uucp/">UUCP</a> can get through just about anything. It’s an older protocol that lacks modern security, but will deal with slow and noisy serial lines well. <a href="/xbee-sx/">XBee SX</a> radios also have a serial mode that can work well with UUCP.</p>
- <h2 id="amateur-radio">Amateur Radio</h2>
- <p><a href="/amateur-radio/">Amateur Radio</a>, of course, has the advantage of being able to communicate globally without the need to use anybody else’s infrastructure. It is absolutely unique in that capability. However, it does require a license and some technical ability to get going. Nonetheless, it is both a lot of fun and a great tool to have in your toolbox. Low-power (“QRP”) communications are also an area of interest within amateur radio, and the annual Field Day contest explores and encourages practice operating from remote locations without regular power.</p>
- <h2 id="additional-suggestions">Additional Suggestions</h2>
- <p>It is probably useful to have a Linux live USB stick with whatever software you want to use handy. <a href="/debian/">Debian</a> can be installed from the live environment, or you could use a security-focused distribution such as Tails or Qubes.</p>
- <p>Android users might want to use F-Droid; it lets you easily <a href="https://f-droid.org/en/tutorials/swap/">share apps between phones</a>.</p>
- <h2 id="references">References</h2>
- <p>This page originated in my <a href="https://floss.social/web/@jgoerzen/107884945439834995">Mastodon thread</a> and incorporates some suggestions I received there.</p>
- <p>It also formed a <a href="https://changelog.complete.org/archives/10356-tools-for-communicating-offline-and-in-difficult-circumstances">post on my blog</a>.</p>
- </article>
-
-
- <hr>
-
- <footer>
- <p>
- <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
- <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
- </svg> Accueil</a> •
- <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
- <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
- </svg> Suivre</a> •
- <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
- <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
- </svg> Pro</a> •
- <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
- <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
- </svg> Email</a> •
- <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
- <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
- </svg> Légal</abbr>
- </p>
- <template id="theme-selector">
- <form>
- <fieldset>
- <legend><svg class="icon icon-brightness-contrast">
- <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
- </svg> Thème</legend>
- <label>
- <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
- </label>
- <label>
- <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
- </label>
- <label>
- <input type="radio" value="light" name="chosen-color-scheme"> Clair
- </label>
- </fieldset>
- </form>
- </template>
- </footer>
- <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
- <script>
- function loadThemeForm(templateName) {
- const themeSelectorTemplate = document.querySelector(templateName)
- const form = themeSelectorTemplate.content.firstElementChild
- themeSelectorTemplate.replaceWith(form)
-
- form.addEventListener('change', (e) => {
- const chosenColorScheme = e.target.value
- localStorage.setItem('theme', chosenColorScheme)
- toggleTheme(chosenColorScheme)
- })
-
- const selectedTheme = localStorage.getItem('theme')
- if (selectedTheme && selectedTheme !== 'undefined') {
- form.querySelector(`[value="${selectedTheme}"]`).checked = true
- }
- }
-
- const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
- window.addEventListener('load', () => {
- let hasDarkRules = false
- for (const styleSheet of Array.from(document.styleSheets)) {
- let mediaRules = []
- for (const cssRule of styleSheet.cssRules) {
- if (cssRule.type !== CSSRule.MEDIA_RULE) {
- continue
- }
- // WARNING: Safari does not have/supports `conditionText`.
- if (cssRule.conditionText) {
- if (cssRule.conditionText !== prefersColorSchemeDark) {
- continue
- }
- } else {
- if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
- continue
- }
- }
- mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
- }
-
- // WARNING: do not try to insert a Rule to a styleSheet you are
- // currently iterating on, otherwise the browser will be stuck
- // in a infinite loop…
- for (const mediaRule of mediaRules) {
- styleSheet.insertRule(mediaRule.cssText)
- hasDarkRules = true
- }
- }
- if (hasDarkRules) {
- loadThemeForm('#theme-selector')
- }
- })
- </script>
- </body>
- </html>
|