# tuna-cli

## Installation

**Windows**

### Installation using winget

Open PowerShell and run the command:

```shell
winget install --id yuccastream.tuna ; powershell

```

### Installing the MSI package

Download the latest version of tuna using this [link](https://releases.tuna.am/tuna/latest/tuna_x64.msi) and run the installation by double-clicking the file.

[![Installer for Windows x64 (requires administrator privileges)](/docs/img/getting-started/badge-msi-installer.svg "Installer for Windows x64 (requires administrator privileges)")](https://releases.tuna.am/tuna/latest/tuna_x64.msi)

🖌 Authenticity verification

Starting from version **0.27.4**, all artifacts are signed using [cosign](https://docs.sigstore.dev/). To verify the originality of the archive, [install the cosign client](https://docs.sigstore.dev/cosign/system_config/installation/), download the public key, and perform the verification.

```shell
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**

```powershell
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

```

**ARM64**

```powershell
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:

```bash
tuna help

```

**macOS**

### Installation using brew

To install brew, follow the [instructions](https://brew.sh/), then run the command in the terminal:

```bash
brew install yuccastream/tap/tuna

```

If you previously installed **tuna** *manually* or using the *script*, remove the previous version:

```bash
sudo rm -f /usr/local/bin/tuna

```

### Installation using script

Run the command in the terminal:

**curl**

```shell
sh -c "$(curl -sSLf https://releases.tuna.am/tuna/get.sh)"

```

**wget**

```shell
sh -c "$(wget -qO- https://releases.tuna.am/tuna/get.sh)"

```

### Manual installation

Open the terminal and run the following commands:

**ARM64**

```shell
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

```

**AMD64**

```shell
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

```

***

info

The binary file is [signed and notarized](https://developer.apple.com/documentation/security/notarizing-macos-software-before-distribution) with Apple under the name: `Developer ID Application: Lev Aminov (FW65BD237L)` You can verify locally using the command:

```sh
codesign -dv --verbose=4 $(which tuna)

```

### Verify the installation

To make sure the installation was successful, run the command:

```bash
tuna help

```

**Linux**

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](https://tuna.am/en/docs/tunnels/examples/nanokvm.md)) |

### Installation using script

Run the command in the terminal:

**curl**

```shell
sh -c "$(curl -sSLf https://releases.tuna.am/tuna/get.sh)"

```

**wget**

```shell
sh -c "$(wget -qO- https://releases.tuna.am/tuna/get.sh)"

```

tip

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**

For Debian and based distributions (Ubuntu, Mint, and others), run the following commands in the terminal:

```shell
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

```

**SUSE/OpenSUSE**

For SUSE and OpenSUSE, run the following commands in the terminal:

```shell
sudo zypper addrepo --repo https://releases.tuna.am/tuna-rpm.repo
sudo zypper install -y tuna.am

```

**RHEL/Fedora**

For RHEL and based distributions (CentOS, Rocky Linux, AlmaLinux, as well as Fedora), run the following commands in the terminal:

**RHEL based**

```shell
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://releases.tuna.am/tuna-rpm.repo

```

**Fedora**

```shell
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager addrepo --from-repofile https://releases.tuna.am/tuna-rpm.repo

```

```shell
sudo dnf -y install tuna.am

```

**ALT Linux**

For [ALT Linux](https://www.basealt.ru/alt-workstation-k?utm_source=tuna.am\&utm_medium=organic\&utm_campaign=docs), run the following commands in the terminal:

```shell
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

```

**Arch Linux**

For Arch Linux, run the following commands in the terminal:

```shell
yay -Syu --noconfirm tuna.am-bin

```

**Linux**

To install on any Linux system (NixOS, Alpine Linux, and others), run the following commands in the terminal:

**AMD64**

```shell
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

```

**ARM64**

```shell
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

```

**ARMv7**

```shell
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

```

**ARMv6**

```shell
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

```

**ARMv5**

```shell
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

```

**MIPS**

```shell
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

```

**MIPS LE**

```shell
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

```

**RISC-V 64**

```shell
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:

```bash
tuna help

```

**FreeBSD**

### Installation using script

Run the command in the terminal:

**curl**

```shell
sh -c "$(curl -sSLf https://releases.tuna.am/tuna/get.sh)"

```

**wget**

```shell
sh -c "$(wget -qO- https://releases.tuna.am/tuna/get.sh)"

```

### Manual installation

**AMD64**

```shell
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

```

**ARM64**

```shell
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

```

**ARMv7**

```shell
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:

```bash
tuna help

```

**Docker**

To get the latest version of the Docker image, run the command:

```shell
docker pull yuccastream/tuna:latest

```

🖌 Authenticity verification

Starting from version **0.27.4**, all images are signed using [cosign](https://docs.sigstore.dev/). To verify the originality of the image, [install the cosign client](https://docs.sigstore.dev/cosign/system_config/installation/), download the public key, and perform the verification.

```shell
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

```yaml
---
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](https://tuna.am/en/docs/tunnels/examples/kubernetes.md).

***

## Authorization

To use the client, you need a Token. Register [via this link](https://my.tuna.am/) and authorize the application. The token will be saved in the [config file](https://tuna.am/en/docs/guides/config-file.md), or you can copy it from a [separate page](https://my.tuna.am/token) and specify it manually.

```bash
tuna login

```

Specify the token manually

```bash
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:

```bash
tuna http 8080

```

### What's next?

* Explore [HTTP tunnel](https://tuna.am/en/docs/tunnels/http.md) configuration examples
* Need access to a non-HTTP service? Learn more in the [TCP tunnel](https://tuna.am/en/docs/tunnels/tcp.md) section
