Sign inSign up

marcusholtz/i2p-party-line-box

By marcusholtz

•Updated 2 days ago

Encrypted push-to-talk voice and group party line over I2P for Distrobox.

Image
Networking
Security
0

274

marcusholtz/i2p-party-line-box repository overview

I2P Party Line

Built for I2PDistroboxLicense: MITSource: GitLabSource: GitHub

⁠marcusholtz/i2p-party-line-box

Distrobox-ready image for encrypted push-to-talk voice and group party line over I2P⁠. No accounts, no phone numbers, no servers, no open ports.

Built for Distrobox⁠, not Docker Compose. Your mic, speakers, and network are shared with the container automatically. Ideal for immutable or atomic Linux distros (Bazzite, Silverblue, SteamOS, etc.).

For Docker Compose or standalone Docker usage, see marcusholtz/i2p-party-line⁠.

⁠Supported Architectures

ArchitectureTag
x86-64amd64

⁠Quick Start

⁠Create and enter
distrobox create --image marcusholtz/i2p-party-line-box:latest --name partyline-i2p
distrobox enter partyline-i2p
⁠Run the party line

Once inside the container:

i2p-party-line.sh
⁠Add to the application menu

Optional. Once inside the container, run:

distrobox-export --app /usr/share/applications/i2p-party-line.desktop

Use the full path (/usr/share/applications/tor-party-line.desktop).

"I2P Party Line (on partyline-i2p)" appears in your host application menu with its own icon and opens in a terminal. Remove it with the same command plus --delete.

To also run it from your host shell:

distrobox-export --bin /usr/local/bin/i2p-party-line.sh --export-path ~/.local/bin
⁠Alternative registries
# GitHub Container Registry
distrobox create --image ghcr.io/marcusholtz/i2p-party-line-box:latest --name partyline-i2p

# GitLab Container Registry
distrobox create --image registry.gitlab.com/marcusholtz/i2p-party-line/box:latest --name partyline-i2p
⁠One-command setup with distrobox.ini

A distrobox.ini manifest is included in the source repo⁠. It creates the container, exports i2p-party-line.sh to ~/.local/bin, and adds no menu entries:

distrobox assemble create --file distrobox.ini

After assembly, run i2p-party-line.sh directly from your host shell.

For an application menu (.desktop) entry, uncomment the exported_apps line in distrobox.ini before assembling, or use the distrobox-export command above.

⁠First Run

  1. i2pd reseeds and builds tunnels (~23 s for relay, ~86 s for calls from cold start)
  2. Your .b32.i2p address appears (no ports needed; I2P routes through tunnel gateways)
  3. Press 1 to set a shared secret (both sides need the same one)
  4. Share your address + secret, one side listens, the other calls

Your destination key persists inside the distrobox home directory across restarts.

⁠What's Inside

Everything pre-installed, no first-run dependency installation needed:

  • i2pd
  • Opus codec, OpenSSL, socat
  • PulseAudio utilities, ALSA utilities
  • QR code generation (qrencode)
  • pcm_rms (compiled C audio level meter)
  • i2p-party-line.sh at /usr/local/bin/

⁠How It Differs from the Docker Image

Docker imageDistrobox image
Imagei2p-party-linei2p-party-line-box
Run withdocker compose / docker rundistrobox create + distrobox enter
AudioPulseAudio socket bind-mount + /dev/sndAutomatic host audio passthrough
NetworkContainer networkingHost network (shared)
User mappingContainer rootMapped to your host user
EntrypointCustom entrypointNone (distrobox manages init)

⁠Security

PropertyDetail
EncryptionAES-256-CBC + PBKDF2 + HMAC-SHA256
RelayZero-knowledge: forwards blobs, never has the secret
Authentication.b32.i2p address + pre-shared secret
Forward secrecyNone; rotate secrets between conversations
SourceSingle bash script, no binaries, no telemetry

⁠The Party Line Trifecta (Distrobox)

Three networks, same app, same encryption:

⁠License

MIT

Tag summary

Content type

Image

Digest

sha256:b4ac7cb24…

Size

65.9 MB

Last updated

2 days ago

docker pull marcusholtz/i2p-party-line-box