tuna-cli
Installation
- Windows
- macOS
- Linux
- FreeBSD
- Docker
Installation using winget
Open PowerShell and run the command:
winget install --id yuccastream.tuna ; powershell
Installing the MSI package
Download the latest version of tuna using this link and run the installation by double-clicking the file.
🖌 Authenticity verification
Starting from version 0.27.4, all artifacts are signed using cosign. To verify the originality of the archive, install the cosign client, download the public key, and perform the verification.
winget install GnuPG.Gpg4win
Invoke-WebRequest -Uri "https://releases.tuna.am/tuna/latest/tuna_x64.msi" -OutFile "tuna_x64.msi"
Invoke-WebRequest -Uri "https://releases.tuna.am/tuna/latest/tuna_x64.msi.sig" -OutFile "tuna_x64.msi.sig"
Invoke-WebRequest -Uri "https://releases.tuna.am/tuna.asc" -OutFile "tuna.asc"
gpg --import tuna.asc
gpg --verify tuna_x64.msi.sig tuna_x64.msi
Manual installation
Open PowerShell and run the commands one by one:
- AMD64
- ARM64
winget install GnuPG.Gpg4win
cd $env:TEMP
Invoke-WebRequest -Uri "https://releases.tuna.am/tuna/latest/tuna_windows_amd64.zip" -OutFile "$env:TEMP\tuna_windows_amd64.zip"
Invoke-WebRequest -Uri "https://releases.tuna.am/tuna/latest/tuna_windows_amd64.zip.sig" -OutFile "$env:TEMP\tuna_windows_amd64.zip.sig"
Invoke-WebRequest -Uri "https://releases.tuna.am/tuna.asc" -OutFile "$env:TEMP\tuna.asc"
gpg --import tuna.asc
gpg --verify tuna_windows_amd64.zip.sig tuna_windows_amd64.zip
Expand-Archive -Path "$env:TEMP\tuna_windows_amd64.zip" -DestinationPath "$env:TEMP\tuna" -Force
Copy-Item -Path "$env:TEMP\tuna\tuna.exe" -Destination "$env:USERPROFILE\AppData\Local\Microsoft\WindowsApps" -Force
winget install GnuPG.Gpg4win
cd $env:TEMP
Invoke-WebRequest -Uri "https://releases.tuna.am/tuna/latest/tuna_windows_arm64.zip" -OutFile "$env:TEMP\tuna_windows_arm64.zip"
Invoke-WebRequest -Uri "https://releases.tuna.am/tuna/latest/tuna_windows_arm64.zip.sig" -OutFile "$env:TEMP\tuna_windows_arm64.zip.sig"
Invoke-WebRequest -Uri "https://releases.tuna.am/tuna.asc" -OutFile "$env:TEMP\tuna.asc"
gpg --import tuna.asc
gpg --verify tuna_windows_arm64.zip.sig tuna_windows_arm64.zip
Expand-Archive -Path "$env:TEMP\tuna_windows_arm64.zip" -DestinationPath "$env:TEMP\tuna" -Force
Copy-Item -Path "$env:TEMP\tuna\tuna.exe" -Destination "$env:USERPROFILE\AppData\Local\Microsoft\WindowsApps" -Force
Verify the installation
To make sure the installation was successful, run the command:
tuna help
Installation using brew
To install brew, follow the instructions, then run the command in the terminal:
brew install yuccastream/tap/tuna
If you previously installed tuna manually or using the script, remove the previous version:
sudo rm -f /usr/local/bin/tuna
Installation using script
Run the command in the terminal:
- curl
- wget
sh -c "$(curl -sSLf https://releases.tuna.am/tuna/get.sh)"
sh -c "$(wget -qO- https://releases.tuna.am/tuna/get.sh)"
Manual installation
Open the terminal and run the following commands:
- ARM64
- AMD64
cd $(mktemp -d)
curl -sfSL "https://releases.tuna.am/tuna/latest/tuna_darwin_arm64.tar.gz" | tar -f - -xz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
cd $(mktemp -d)
curl -sfSL "https://releases.tuna.am/tuna/latest/tuna_darwin_amd64.tar.gz" | tar -f - -xz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
The binary file is signed and notarized with Apple under the name:
Developer ID Application: Lev Aminov (FW65BD237L)
You can verify locally using the command:
codesign -dv --verbose=4 $(which tuna)
Verify the installation
To make sure the installation was successful, run the command:
tuna help
Supported architectures
| Architecture | Description |
|---|---|
| AMD64 (x86_64) | Standard PCs and servers |
| ARM64 (aarch64) | Raspberry Pi 3/4/5, Apple Silicon (in Linux VM), ARM servers |
| ARMv7 | Raspberry Pi 2, most 32-bit ARM SBCs |
| ARMv6 | Raspberry Pi 1, Pi Zero / Zero W |
| ARMv5 | Older embedded devices |
| MIPS | Routers and embedded devices (big-endian) |
| MIPS LE | Routers and embedded devices (little-endian) |
| RISC-V 64 | RISC-V boards (e.g., NanoKVM) |
Installation using script
Run the command in the terminal:
- curl
- wget
sh -c "$(curl -sSLf https://releases.tuna.am/tuna/get.sh)"
sh -c "$(wget -qO- https://releases.tuna.am/tuna/get.sh)"
The script will detect your distribution, add the repository, and install the package if possible. Otherwise, it will download the binary file and install it to a PATH executable directory.
Manual installation
- Debian/Ubuntu
- SUSE/OpenSUSE
- RHEL/Fedora
- ALT Linux
- Arch Linux
- Linux
For Debian and based distributions (Ubuntu, Mint, and others), run the following commands in the terminal:
sudo apt update
sudo apt install -y ca-certificates curl gnupg
curl -fsSL https://repo.tuna.am/apt/gpg.key | sudo gpg --dearmor --batch --yes -o /etc/apt/trusted.gpg.d/tuna.gpg
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/tuna.gpg] https://repo.tuna.am/apt/ /' | sudo tee /etc/apt/sources.list.d/tuna.list
sudo apt update
sudo apt install -y tuna.am
For SUSE and OpenSUSE, run the following commands in the terminal:
sudo zypper addrepo --repo https://releases.tuna.am/tuna-rpm.repo
sudo zypper install -y tuna.am
For RHEL and based distributions (CentOS, Rocky Linux, AlmaLinux, as well as Fedora), run the following commands in the terminal:
- RHEL based
- Fedora
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://releases.tuna.am/tuna-rpm.repo
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager addrepo --from-repofile https://releases.tuna.am/tuna-rpm.repo
sudo dnf -y install tuna.am
For ALT Linux, run the following commands in the terminal:
sudo apt-get update
sudo apt-get install -y curl apt-repo
sudo rpm --import https://releases.tuna.am/tuna.asc
sudo apt-repo add rpm https://altlinux.space/api/packages/tuna/alt/current.repo $(arch) classic
sudo apt-get update
sudo apt-get install tuna.am
For Arch Linux, run the following commands in the terminal:
yay -Syu --noconfirm tuna.am-bin
To install on any Linux system (NixOS, Alpine Linux, and others), run the following commands in the terminal:
- AMD64
- ARM64
- ARMv7
- ARMv6
- ARMv5
- MIPS
- MIPS LE
- RISC-V 64
cd $(mktemp -d)
curl -sfSL -O "https://releases.tuna.am/tuna/latest/tuna_linux_amd64.tar.gz" -O "https://releases.tuna.am/tuna/latest/tuna_linux_amd64.tar.gz.sig"
curl -sfSL -O https://releases.tuna.am/tuna.asc
gpg --import tuna.asc
gpg --verify tuna_linux_amd64.tar.gz.sig tuna_linux_amd64.tar.gz
tar -xzf tuna_linux_amd64.tar.gz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
cd $(mktemp -d)
curl -sfSL -O "https://releases.tuna.am/tuna/latest/tuna_linux_arm64.tar.gz" -O "https://releases.tuna.am/tuna/latest/tuna_linux_arm64.tar.gz.sig"
curl -sfSL -O https://releases.tuna.am/tuna.asc
gpg --import tuna.asc
gpg --verify tuna_linux_arm64.tar.gz.sig tuna_linux_arm64.tar.gz
tar -xzf tuna_linux_arm64.tar.gz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
cd $(mktemp -d)
curl -sfSL -O "https://releases.tuna.am/tuna/latest/tuna_linux_armv7.tar.gz" -O "https://releases.tuna.am/tuna/latest/tuna_linux_armv7.tar.gz.sig"
curl -sfSL -O https://releases.tuna.am/tuna.asc
gpg --import tuna.asc
gpg --verify tuna_linux_armv7.tar.gz.sig tuna_linux_armv7.tar.gz
tar -xzf tuna_linux_armv7.tar.gz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
cd $(mktemp -d)
curl -sfSL -O "https://releases.tuna.am/tuna/latest/tuna_linux_armv6.tar.gz" -O "https://releases.tuna.am/tuna/latest/tuna_linux_armv6.tar.gz.sig"
curl -sfSL -O https://releases.tuna.am/tuna.asc
gpg --import tuna.asc
gpg --verify tuna_linux_armv6.tar.gz.sig tuna_linux_armv6.tar.gz
tar -xzf tuna_linux_armv6.tar.gz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
cd $(mktemp -d)
curl -sfSL -O "https://releases.tuna.am/tuna/latest/tuna_linux_armv5.tar.gz" -O "https://releases.tuna.am/tuna/latest/tuna_linux_armv5.tar.gz.sig"
curl -sfSL -O https://releases.tuna.am/tuna.asc
gpg --import tuna.asc
gpg --verify tuna_linux_armv5.tar.gz.sig tuna_linux_armv5.tar.gz
tar -xzf tuna_linux_armv5.tar.gz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
cd $(mktemp -d)
curl -sfSL -O "https://releases.tuna.am/tuna/latest/tuna_linux_mips.tar.gz" -O "https://releases.tuna.am/tuna/latest/tuna_linux_mips.tar.gz.sig"
curl -sfSL -O https://releases.tuna.am/tuna.asc
gpg --import tuna.asc
gpg --verify tuna_linux_mips.tar.gz.sig tuna_linux_mips.tar.gz
tar -xzf tuna_linux_mips.tar.gz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
cd $(mktemp -d)
curl -sfSL -O "https://releases.tuna.am/tuna/latest/tuna_linux_mipsle.tar.gz" -O "https://releases.tuna.am/tuna/latest/tuna_linux_mipsle.tar.gz.sig"
curl -sfSL -O https://releases.tuna.am/tuna.asc
gpg --import tuna.asc
gpg --verify tuna_linux_mipsle.tar.gz.sig tuna_linux_mipsle.tar.gz
tar -xzf tuna_linux_mipsle.tar.gz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
cd $(mktemp -d)
curl -sfSL -O "https://releases.tuna.am/tuna/latest/tuna_linux_riscv64.tar.gz" -O "https://releases.tuna.am/tuna/latest/tuna_linux_riscv64.tar.gz.sig"
curl -sfSL -O https://releases.tuna.am/tuna.asc
gpg --import tuna.asc
gpg --verify tuna_linux_riscv64.tar.gz.sig tuna_linux_riscv64.tar.gz
tar -xzf tuna_linux_riscv64.tar.gz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
Verify the installation
To make sure the installation was successful, run the command:
tuna help
Installation using script
Run the command in the terminal:
- curl
- wget
sh -c "$(curl -sSLf https://releases.tuna.am/tuna/get.sh)"
sh -c "$(wget -qO- https://releases.tuna.am/tuna/get.sh)"
Manual installation
- AMD64
- ARM64
- ARMv7
cd $(mktemp -d)
curl -sfSL -O "https://releases.tuna.am/tuna/latest/tuna_freebsd_amd64.tar.gz" -O "https://releases.tuna.am/tuna/latest/tuna_freebsd_amd64.tar.gz.sig"
curl -sfSL -O https://releases.tuna.am/tuna.asc
gpg --import tuna.asc
gpg --verify tuna_freebsd_amd64.tar.gz.sig tuna_freebsd_amd64.tar.gz
tar -xzf tuna_freebsd_amd64.tar.gz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
cd $(mktemp -d)
curl -sfSL -O "https://releases.tuna.am/tuna/latest/tuna_freebsd_arm64.tar.gz" -O "https://releases.tuna.am/tuna/latest/tuna_freebsd_arm64.tar.gz.sig"
curl -sfSL -O https://releases.tuna.am/tuna.asc
gpg --import tuna.asc
gpg --verify tuna_freebsd_arm64.tar.gz.sig tuna_freebsd_arm64.tar.gz
tar -xzf tuna_freebsd_arm64.tar.gz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
cd $(mktemp -d)
curl -sfSL -O "https://releases.tuna.am/tuna/latest/tuna_freebsd_armv7.tar.gz" -O "https://releases.tuna.am/tuna/latest/tuna_freebsd_armv7.tar.gz.sig"
curl -sfSL -O https://releases.tuna.am/tuna.asc
gpg --import tuna.asc
gpg --verify tuna_freebsd_armv7.tar.gz.sig tuna_freebsd_armv7.tar.gz
tar -xzf tuna_freebsd_armv7.tar.gz
chmod +x tuna
sudo mv -f tuna /usr/local/bin/tuna
Verify the installation
To make sure the installation was successful, run the command:
tuna help
To get the latest version of the Docker image, run the command:
docker pull yuccastream/tuna:latest
🖌 Authenticity verification
Starting from version 0.27.4, all images are signed using cosign. To verify the originality of the image, install the cosign client, download the public key, and perform the verification.
curl -sSLfO https://releases.tuna.am/tuna-cosign.asc
cosign verify --key tuna-cosign.asc docker.io/yuccastream/tuna:0.27.4
Docker Compose service example
---
services:
whoami:
image: traefik/whoami
restart: always
tuna:
image: yuccastream/tuna:latest
command: http whoami:80 --inspect=false
restart: always
depends_on:
- whoami
environment:
- TUNA_TOKEN=<your_token>
Example of usage in Kubernetes.
Authorization
To use the client, you need a Token. Register via this link and authorize the application. The token will be saved in the config file, or you can copy it from a separate page and specify it manually.
tuna login
Specify the token manually
tuna config save-token <TOKEN>
Get started
Everything is ready to start working. Run tuna with a port and share the link with your colleagues:
tuna http 8080
What's next?
- Explore HTTP tunnel configuration examples
- Need access to a non-HTTP service? Learn more in the TCP tunnel section