tuna-cli
Установка
- Windows
- macOS
- Linux
- FreeBSD
- Docker
Установка с помощью winget
Откройте PowerShell и выполните команду:
winget install --id yuccastream.tuna ; powershell
Установка MSI пакета
Скачайте последнюю версию tuna по ссылке и запустите установку дважды кликнув на файл.
🖌 Проверка подлинности
Начиная с версии 0.27.4 все артефакты подписаны при помощи cosign. Для проверки оригинальности архива установите клиент cosign, скачайте публичный ключ и выполните проверку.
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
Установка вручную
Откройте PowerShell и выполните команды по очереди:
- 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
Проверка работы
Чтобы убедиться, что установка прошла корректно, выполните команду:
tuna help
Установка с помощью brew
Для установки brew, следуйте инструкции, затем выполните команду в терминале:
brew install yuccastream/tap/tuna
Если ранее вы установили tuna вручную или с помощью скрипта, удалите предыдущую версию:
sudo rm -f /usr/local/bin/tuna
Установка с помощью скрипта
Выполните команду в терминале:
- curl
- wget
sh -c "$(curl -sSLf https://releases.tuna.am/tuna/get.sh)"
sh -c "$(wget -qO- https://releases.tuna.am/tuna/get.sh)"
Установка вручную
Откройте терминал, выполните следующие команды:
- 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
Бинарный файл подписан и заверен в Apple на имя:
Developer ID Application: Lev Aminov (FW65BD237L)
Проверить локально можно с помощью команды:
codesign -dv --verbose=4 $(which tuna)
Проверка работы
Чтобы убедиться, что установка прошла корректно, выполните команду:
tuna help
Поддерживаемые архитектуры
| Архитектура | Описание |
|---|---|
| AMD64 (x86_64) | Стандартные ПК и серверы |
| ARM64 (aarch64) | Raspberry Pi 3/4/5, Apple Silicon (в Linux VM), серверы на ARM |
| ARMv7 | Raspberry Pi 2, большинство 32-битных ARM SBC |
| ARMv6 | Raspberry Pi 1, Pi Zero / Zero W |
| ARMv5 | Старые встраиваемые устройства |
| MIPS | Роутеры и встраиваемые устройства (big-endian) |
| MIPS LE | Роутеры и встраиваемые устройства (little-endian) |
| RISC-V 64 | RISC-V платы (например, NanoKVM) |
Установка с помощью скрипта
Выполните команду в терминале:
- curl
- wget
sh -c "$(curl -sSLf https://releases.tuna.am/tuna/get.sh)"
sh -c "$(wget -qO- https://releases.tuna.am/tuna/get.sh)"
Скрипт определит дистрибутив, подключит репозиторий и установит пакет, если это возможно. Иначе скачает бинарный файл и установит в исполняемый PATH.
Установка вручную
- Debian/Ubuntu
- SUSE/OpenSUSE
- RHEL/Fedora
- ALT Linux
- Arch Linux
- Linux
Debian и основанные на нём дистрибутивы (Ubuntu, Mint и другие), выполните в терминале следующие команды:
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, выполните в терминале следующие команды:
sudo zypper addrepo --repo https://releases.tuna.am/tuna-rpm.repo
sudo zypper install -y tuna.am
RHEL и основанные на нём дистрибутивы (CentOS, Rocky Linux, AlmaLinux, а также Fedora), выполните в терминале следующие команды:
- 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
ALT Linux, выполните в терминале следующие команды:
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, выполните в терминале следующие команды:
yay -Syu --noconfirm tuna.am-bin
Для установки в любых Linux-системах (NixOS, Alpine Linux и другие), выполните в терминале следующие команды:
- 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
Проверка работы
Чтобы убедиться, что установка прошла корректно, выполните команду:
tuna help
Установка с помощью скрипта
Выполните команду в терминале:
- curl
- wget
sh -c "$(curl -sSLf https://releases.tuna.am/tuna/get.sh)"
sh -c "$(wget -qO- https://releases.tuna.am/tuna/get.sh)"
Установка вручную
- 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
Проверка работы
Чтобы убедиться, что установка прошла корректно, выполните команду:
tuna help
Чтобы получить последнюю версию Docker-образа, выполните команду:
docker pull yuccastream/tuna:latest
🖌 Проверка подлинности
Начиная с версии 0.27.4 все образы подписаны при помощи cosign. Для проверки оригинальности образа установите клиент cosign, скачайте публичный ключ и выполните проверку.
curl -sSLfO https://releases.tuna.am/tuna-cosign.asc
cosign verify --key tuna-cosign.asc docker.io/yuccastream/tuna:0.27.4
Пример Docker Compose сервиса
---
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=<ваш_токен>
Пример с использованием в Kubernetes.
Авторизация
Для работы клиента необходим Токен, зарегистрируйтесь по ссылке, и авторизуйте приложение. Токен будет сохранён в конфиг файл, либо можно скопировать на отдельной странице и указать вручную.
tuna login
Указать токен вручную
tuna config save-token <ТОКЕН>
Пользуйтесь
Все готово, чтобы приступить к работе. Запустите tuna с передачей порта и делитесь ссылкой с коллегами:
tuna http 8080
Что дальше?
- Изучите примеры настроек HTTP туннеля
- Нужен доступ к сервису, не использующему HTTP? Узнайте подробнее в разделе по TCP туннелю